Pārlūkot izejas kodu

feat(api): new saving 4

gemercheung 3 gadi atpakaļ
vecāks
revīzija
fc0389cf9d

+ 9 - 0
src/api/corporation/list.ts

@@ -81,6 +81,15 @@ export const updateCompnayApi = (params: UpdateCompanyParam) =>
       ignoreCancelToken: true,
     },
   });
+export const insertCompnayApi = (params: UpdateCompanyParam) =>
+  defHttp.post<Result>({
+    url: Api.updateCompany,
+    params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
 
 export const ListCompanyDeviceApi = (params: DeviceListItem) =>
   defHttp.post<DeviceGetResultModel>({

+ 2 - 0
src/locales/lang/ja/routes/corporation.ts

@@ -39,4 +39,6 @@ export default {
   introduce: '会社概要',
   companyLogo: '会社LOGO',
   qualification: '資格',
+  addCorporation: '新增企业',
+  managerName: '联系人',
 };

+ 2 - 0
src/locales/lang/zh-CN/routes/corporation.ts

@@ -39,4 +39,6 @@ export default {
   introduce: '企业简介',
   companyLogo: '企业LOGO',
   qualification: '企业资质',
+  addCorporation: '新增企业',
+  managerName: '联系人',
 };

+ 190 - 0
src/views/corporation/AddCorporationModal.vue

@@ -0,0 +1,190 @@
+<template>
+  <BasicModal
+    v-bind="$attrs"
+    @register="register"
+    :title="t('routes.corporation.addCorporation')"
+    @visible-change="handleVisibleChange"
+    @ok="handleSubmit"
+    @close="resetFields"
+  >
+    <div class="pt-2px pr-3px">
+      <BasicForm @register="registerForm" :model="model" />
+    </div>
+  </BasicModal>
+</template>
+<script lang="ts">
+  import { defineComponent, ref, nextTick } from 'vue';
+  import { BasicModal, useModalInner } from '/@/components/Modal';
+  import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  // import { checkUserAddAble } from '/@/api/corporation/modal';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  import { uploadLogoApi, insertCompnayApi } from '/@/api/corporation/list';
+  const { t } = useI18n();
+  const schemas: FormSchema[] = [
+    {
+      field: 'companyName',
+      component: 'Input',
+      required: true,
+      label: t('sys.login.corporationName'),
+      componentProps: {
+        maxLength: 20,
+      },
+      colProps: {
+        span: 22,
+      },
+    },
+    {
+      field: 'managerPhone',
+      component: 'Input',
+      label: t('sys.login.corporationMail'),
+      rules: [
+        {
+          required: true,
+          // @ts-ignore
+          validator: async (rule, value) => {
+            // var reg_tel =
+            //   /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
+            var reg = /\S+@\S+\.\S+/;
+            if (!value) {
+              /* eslint-disable-next-line */
+
+              return Promise.reject(t('sys.login.fillMail'));
+            }
+            if (!reg.test(value)) {
+              /* eslint-disable-next-line */
+              return Promise.reject(t('sys.login.fillMailCorrect'));
+            }
+            return Promise.resolve();
+          },
+          trigger: 'change',
+        },
+      ],
+      colProps: {
+        span: 22,
+      },
+    },
+    {
+      field: 'managerName',
+      component: 'Input',
+      label: t('routes.corporation.managerName'),
+      required: true,
+      colProps: {
+        span: 22,
+      },
+    },
+    {
+      field: 'address',
+      component: 'Input',
+      label: t('routes.corporation.address'),
+      required: true,
+      colProps: {
+        span: 22,
+      },
+      componentProps: {
+        maxLength: 50,
+      },
+    },
+    {
+      field: 'logo',
+      component: 'Upload',
+      label: t('routes.corporation.companyLogo'),
+      required: true,
+      rules: [{ required: true, message: '请选择上传文件' }],
+      componentProps: {
+        api: uploadLogoApi,
+        maxNumber: 1,
+        afterFetch: function (data) {
+          console.log('data', data);
+          Reflect.set(data, 'url', data.data);
+          return data;
+        },
+      },
+
+      colProps: {
+        span: 22,
+      },
+    },
+    {
+      field: 'introduce',
+      component: 'InputTextArea',
+      label: t('routes.corporation.introduce'),
+      required: true,
+      colProps: {
+        span: 22,
+      },
+      componentProps: {
+        maxLength: 200,
+      },
+    },
+  ];
+  export default defineComponent({
+    components: { BasicModal, BasicForm },
+    props: {
+      userData: { type: Object },
+    },
+    emits: ['register', 'submit'],
+    setup(props, { emit }) {
+      const modelRef = ref({});
+      const { createMessage } = useMessage();
+      const [
+        registerForm,
+        {
+          // getFieldsValue,
+          // setFieldsValue,
+          // setProps
+          resetFields,
+          validate,
+        },
+      ] = useForm({
+        labelWidth: 120,
+        schemas,
+        showActionButtonGroup: false,
+        actionColOptions: {
+          span: 24,
+        },
+      });
+      let addListFunc = () => {};
+      const [register, { closeModal }] = useModalInner((data) => {
+        data && onDataReceive(data);
+      });
+
+      function onDataReceive(data) {
+        console.log('Data Received', data);
+      }
+      const handleSubmit = async () => {
+        const values = await validate();
+
+        const insertData = {
+          ...values,
+          logo: values.logo[0],
+        };
+        console.log('insertData', insertData);
+        //TODO hack parameter
+        const res = await insertCompnayApi(insertData);
+        // let res = await checkUserAddAble({ phoneNum: values.managerPhone });
+        console.log('res', res);
+        emit('submit');
+        closeModal();
+        createMessage.success(t('common.optSuccess'));
+      };
+      function handleVisibleChange(v) {
+        v && props.userData && nextTick(() => onDataReceive(props.userData));
+      }
+
+      return {
+        t,
+        register,
+        schemas,
+        registerForm,
+        model: modelRef,
+        handleVisibleChange,
+        handleSubmit,
+        addListFunc,
+        closeModal,
+        resetFields,
+        // nextTick,
+      };
+    },
+  });
+</script>

+ 1 - 1
src/views/corporation/AddModal.vue

@@ -5,7 +5,7 @@
     :title="t('routes.corporation.addSubId')"
     @visible-change="handleVisibleChange"
     @ok="handleSubmit"
-    @close="nextTick(resetFields)"
+    @close="resetFields"
   >
     <div class="pt-2px pr-3px">
       <BasicForm @register="registerForm" :model="model" />

+ 1 - 1
src/views/corporation/detailsModal.vue

@@ -170,7 +170,7 @@
         setFieldsValue({
           ...res,
         });
-        isShowFooter.value = state === 0;
+        isShowFooter.value = Number(state) === 0;
         modelRef.value = { ...data.record };
       }
       function numOnChange(event) {

+ 17 - 3
src/views/corporation/verify.vue

@@ -1,7 +1,11 @@
 <template>
   <div class="p-4">
     <BasicTable @register="registerTable">
-      <template #toolbar> </template>
+      <template #toolbar>
+        <a-button type="primary" @click="openAddModal">{{
+          t('routes.corporation.addCorporation')
+        }}</a-button>
+      </template>
       <template #no="{ record }">
         <Tag :color="renderTag(record.state, 'color')">
           {{ renderTag(record.state, 'text') || '审核中' }}
@@ -26,6 +30,7 @@
       </template>
     </BasicTable>
     <detailsModal @register="registerDeviceModal" />
+    <AddCorporationModal @register="registerAddCorporationModal" @submit="reload" />
   </div>
 </template>
 <script lang="ts">
@@ -38,12 +43,14 @@
   import detailsModal from './detailsModal.vue';
   import { useModal } from '/@/components/Modal';
   import { useI18n } from '/@/hooks/web/useI18n';
+  import AddCorporationModal from './AddCorporationModal.vue';
 
   export default defineComponent({
-    components: { BasicTable, Tag, TableAction, detailsModal, Time },
+    components: { BasicTable, Tag, TableAction, detailsModal, Time, AddCorporationModal },
     setup() {
       const { t } = useI18n();
       const [registerDeviceModal, { openModal: openDeviceModal }] = useModal();
+      const [registerAddCorporationModal, { openModal: openAddCorporationModal }] = useModal();
       const columns: BasicColumn[] = [
         {
           title: t('routes.corporation.submitTime'),
@@ -116,7 +123,7 @@
         ],
       };
       // { getForm }
-      const [registerTable] = useTable({
+      const [registerTable, { reload }] = useTable({
         title: t('routes.corporation.businessAuth'),
         api: ListVerifyApi,
         columns: columns,
@@ -162,6 +169,10 @@
         }
       }
       // pagination.value = { pageSize: 20 };
+
+      function openAddModal() {
+        openAddCorporationModal(true);
+      }
       return {
         registerTable,
         uploadApi: uploadApi as any,
@@ -169,6 +180,9 @@
         infoText,
         renderTag,
         t,
+        openAddModal,
+        registerAddCorporationModal,
+        reload,
       };
     },
   });