瀏覽代碼

fix(#24855): 增加密码

gemercheung 3 年之前
父節點
當前提交
f66634421a
共有 4 個文件被更改,包括 170 次插入46 次删除
  1. 1 0
      src/locales/lang/ja/routes/staff.ts
  2. 1 0
      src/locales/lang/zh-CN/routes/staff.ts
  3. 18 46
      src/views/staff/list.vue
  4. 150 0
      src/views/staff/passwordModal.vue

+ 1 - 0
src/locales/lang/ja/routes/staff.ts

@@ -9,4 +9,5 @@ export default {
     0: '会社の管理者',
     1: '労働者',
   },
+  resetPassword: 'パスワードを変更する',
 };

+ 1 - 0
src/locales/lang/zh-CN/routes/staff.ts

@@ -9,4 +9,5 @@ export default {
     0: '公司管理员',
     1: '公司员工',
   },
+  resetPassword: '修改密码',
 };

+ 18 - 46
src/views/staff/list.vue

@@ -15,19 +15,8 @@
         <TableAction
           :actions="[
             {
-              icon: 'mdi:information-outline',
-              label: t('common.details'),
-              onClick: () => {
-                go(`/order/list/detail/${record.orderNo}`);
-              },
-            },
-            {
-              icon: 'mdi:printer-outline',
-              label: t('common.print'),
-              color: 'error',
-              onClick: () => {
-                createMessage.info(t('common.notConnect'));
-              },
+              label: t('routes.staff.resetPassword'),
+              onClick: handleResetPassword.bind(null, record),
             },
           ]"
         />
@@ -36,7 +25,7 @@
   </div>
 </template>
 <script lang="ts">
-  import { defineComponent } from 'vue';
+  import { defineComponent, computed } from 'vue';
   import { BasicTable, useTable, BasicColumn, FormProps, TableAction } from '/@/components/Table';
   import { useMessage } from '/@/hooks/web/useMessage';
   import { uploadApi } from '/@/api/sys/upload';
@@ -46,32 +35,11 @@
   import { useI18n } from '/@/hooks/web/useI18n';
   // import { useCopyToClipboard } from '/@/hooks/web/useCopyToClipboard';
   import { useGo } from '/@/hooks/web/usePage';
-  // import { Time } from '/@/components/Time';
-
-  //   appid: null
-  // companyId: 1107
-  // companyName: "南山居"
-  // createTime: 1644801035000
-  // createUser: "11111111111"
-  // fdkkPassword: null
-  // fdkkUser: null
-  // head: null
-  // id: 20356
-  // memoName: "顶顶顶顶"
-  // message: null
-  // nickName: "用户13822221234"
-  // phone: "13822221234"
-  // roleIdList: null
-  // roleList: null
-  // roleName: "公司员工"
-  // state: null
-  // token: null
-  // type: 1
-  // updateTime: 1644801035000
-  // updateUser: "11111111111"
-  // userName: "13822221234"
-  // userPassword: "2a22bac40f44af4d3b5fdc20ea706fc5"
+  import { useLocaleStore } from '/@/store/modules/locale';
+  const localeStore = useLocaleStore();
 
+  // import { Time } from '/@/components/Time';
+  const isJA = computed(() => localeStore.getLocale === 'ja');
   export default defineComponent({
     components: { BasicTable, TableAction },
     setup() {
@@ -121,13 +89,13 @@
           // slots: { customRender: 'createTime' },
           width: 130,
         },
-        // {
-        //   title: '操作',
-        //   dataIndex: '',
-        //   slots: { customRender: 'action' },
-        //   fixed: 'right',
-        //   width: 140,
-        // },
+        {
+          title: t('common.operating'),
+          dataIndex: '',
+          slots: { customRender: 'action' },
+          fixed: 'right',
+          width: isJA.value ? 150 : 100,
+        },
       ];
 
       const searchForm: Partial<FormProps> = {
@@ -180,6 +148,9 @@
             return '';
         }
       }
+      function handleResetPassword(record: Recordable) {
+        console.log('record', record);
+      }
 
       return {
         registerTable,
@@ -189,6 +160,7 @@
         renderRoleType,
         renderStatus,
         uploadApi: uploadApi as any,
+        handleResetPassword,
       };
     },
   });

+ 150 - 0
src/views/staff/passwordModal.vue

@@ -0,0 +1,150 @@
+<template>
+  <BasicModal
+    v-bind="$attrs"
+    @register="register"
+    :title="t('routes.corporation.addSubId')"
+    @visible-change="handleVisibleChange"
+    @ok="handleSubmit"
+    @cancel="handleClose"
+  >
+    <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';
+
+  const { t } = useI18n();
+  const schemas: FormSchema[] = [
+    {
+      field: 'companyName',
+      component: 'Input',
+      label: t('common.fullName'),
+      colProps: {
+        span: 24,
+      },
+    },
+    {
+      field: 'managerPhone',
+      component: 'Input',
+      label: t('sys.login.email'),
+      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: 24,
+      },
+    },
+  ];
+  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 () => {
+        // console.log('getFieldsValue()', getFieldsValue());
+        // 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}$/;
+        // let { phone, memoName } = getFieldsValue();
+        // if (phone == '') {
+        //   createMessage.error('请填写您的手机号码!');
+        //   return false;
+        // } else if (!reg_tel.test(phone)) {
+        //   createMessage.error('请正确填写您的手机号码!');
+        //   return false;
+        // }
+
+        const values = await validate();
+
+        //TODO hack parameter
+        let res = await checkUserAddAble({ phoneNum: values.managerPhone });
+
+        if (!res.data) {
+          // addListFunc({ phone: values.phone, companyName: values.companyName });
+          emit('submit', {
+            managerPhone: values.managerPhone,
+            companyName: values.companyName,
+          });
+          resetFields();
+          closeModal();
+        } else {
+          createMessage.error('子账号已被该企业绑定');
+        }
+      };
+      function handleVisibleChange(v) {
+        v && props.userData && nextTick(() => onDataReceive(props.userData));
+      }
+      function handleClose() {
+        resetFields();
+      }
+      return {
+        t,
+        register,
+        schemas,
+        registerForm,
+        model: modelRef,
+        handleVisibleChange,
+        handleSubmit,
+        addListFunc,
+        closeModal,
+        handleClose,
+
+        // nextTick,
+      };
+    },
+  });
+</script>