Browse Source

feat(组件): 修改bug

tangning 2 years ago
parent
commit
1adefc3a22

+ 8 - 0
src/api/staff/list.ts

@@ -7,6 +7,7 @@ enum Api {
   pageList = '/service/manage/sysUser/list',
   pageList = '/service/manage/sysUser/list',
   sysUserAdd = '/service/manage/sysUser/add',
   sysUserAdd = '/service/manage/sysUser/add',
   updatePassword = '/service/manage/sysUser/rePassword',
   updatePassword = '/service/manage/sysUser/rePassword',
+  reMyselfPassword = '/service/manage/sysUser/reMyselfPassword',
   preDel = '/service/manage/sysUser/delete',
   preDel = '/service/manage/sysUser/delete',
   roleList = '/zfb-api/zfb/shop/sys/user/roleList',
   roleList = '/zfb-api/zfb/shop/sys/user/roleList',
   getRoleListByParam = '/service/manage/sysRole/allList',
   getRoleListByParam = '/service/manage/sysRole/allList',
@@ -39,6 +40,13 @@ export function updatePasswordApi(params) {
       // { errorMessageMode: 'none' },
       // { errorMessageMode: 'none' },
     );
     );
 } 
 } 
+
+export function reMyselfPassword(params) {
+  return defHttp.post<Result>(
+    { url: Api.updatePassword, params },
+    // { errorMessageMode: 'none' },
+  );
+} 
 export const staffListApi = (params: PageParams) =>
 export const staffListApi = (params: PageParams) =>
   defHttp.post<ListGetResultModel>({
   defHttp.post<ListGetResultModel>({
     url: Api.pageList,
     url: Api.pageList,

+ 5 - 0
src/components/Tinymce/src/Editor.vue

@@ -81,6 +81,10 @@
     value: {
     value: {
       type: String,
       type: String,
     },
     },
+    maxlength: {
+      type: Number,
+      default: 100000,
+    },
 
 
     toolbar: {
     toolbar: {
       type: Array as PropType<string[]>,
       type: Array as PropType<string[]>,
@@ -146,6 +150,7 @@
 
 
       const initOptions = computed((): RawEditorSettings => {
       const initOptions = computed((): RawEditorSettings => {
         const { height, options, toolbar, plugins } = props;
         const { height, options, toolbar, plugins } = props;
+        console.log('maxlength',props)
         const publicPath = import.meta.env.VITE_PUBLIC_PATH || '/';
         const publicPath = import.meta.env.VITE_PUBLIC_PATH || '/';
         return {
         return {
           selector: `#${unref(tinymceId)}`,
           selector: `#${unref(tinymceId)}`,

+ 2 - 2
src/layouts/default/header/components/user-dropdown/setpaswordModal.vue

@@ -18,7 +18,7 @@
   import { defineComponent, nextTick, ref } from 'vue';
   import { defineComponent, nextTick, ref } from 'vue';
   import { BasicModal, useModalInner } from '/@/components/Modal';
   import { BasicModal, useModalInner } from '/@/components/Modal';
   import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
   import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
-  import { updatePasswordApi } from '/@/api/staff/list';
+  import { reMyselfPassword } from '/@/api/staff/list';
   import { useMessage } from '/@/hooks/web/useMessage';
   import { useMessage } from '/@/hooks/web/useMessage';
   import { useUserStore } from '/@/store/modules/user';
   import { useUserStore } from '/@/store/modules/user';
 
 
@@ -132,7 +132,7 @@
         console.log('getUserInfo',getUserInfo)
         console.log('getUserInfo',getUserInfo)
         const { id } = getUserInfo
         const { id } = getUserInfo
         const { password,oldPassword } = await validate();
         const { password,oldPassword } = await validate();
-        await updatePasswordApi({ 
+        await reMyselfPassword({ 
           id, 
           id, 
           newPassword: encodeStr(window.btoa(password)),
           newPassword: encodeStr(window.btoa(password)),
           oldPassword: encodeStr(window.btoa(oldPassword)),
           oldPassword: encodeStr(window.btoa(oldPassword)),

+ 18 - 0
src/views/operate/components/new/addModal.vue

@@ -138,6 +138,24 @@
           colProps: {
           colProps: {
             span: 22,
             span: 22,
           },
           },
+          rules: [
+            {
+              required: true,
+              // @ts-ignore
+              validator: async (rule, value) => {
+                console.log('validator',value)
+                if (!value) {
+                  return Promise.reject('请输入新闻内容');
+                }
+                if (value.length > 10000) {
+                  /* eslint-disable-next-line */
+                  return Promise.reject('新闻内容不能超过10000');
+                }
+                return Promise.resolve();
+              },
+              trigger: 'change',
+            },
+          ],
           render: ({ model, field }) => {
           render: ({ model, field }) => {
             return h(Tinymce, {
             return h(Tinymce, {
               value: model[field],
               value: model[field],

+ 228 - 0
src/views/staff/adddetailsModal.vue

@@ -0,0 +1,228 @@
+<template>
+  <BasicModal
+    v-bind="$attrs"
+    @cancel="resetFields"
+    @register="register"
+    :title="title"
+    :min-height="350"
+    height="500"
+    @ok="handleOk"
+  >
+    <BasicForm @register="registerForm" />
+  </BasicModal>
+</template>
+<script lang="ts">
+  import { defineComponent, ref, computed } from 'vue';
+  import { checkUserApi, saveApi, updateApi, getRoleListByParam } from '/@/api/staff/list'; //roleLIstApi
+  import { BasicModal, useModalInner } from '/@/components/Modal';
+  import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { useUserStore } from '/@/store/modules/user';
+  const { t } = useI18n();
+  export default defineComponent({
+    components: { BasicModal, BasicForm },
+    props: {
+      userData: { type: Object },
+    },
+    emits: ['ok'],
+    setup(_, context) {
+      const modelRef = ref({});
+      const userStore = useUserStore();
+      const userinfo = computed(() => userStore.getUserInfo);
+      const preventAutoFill = ref(true);
+      const { companyId } = userinfo.value;
+      const schemas: FormSchema[] = [
+        {
+          field: 'nickName',
+          component: 'Input',
+          label: '姓名',
+          colProps: {
+            span: 20,
+          },
+          componentProps: {
+            maxLength: 15,
+          },
+          rules: [
+            {
+              required: true,
+              // @ts-ignore
+              validator: async (rule, value) => {
+                var reg_tel = /^[a-zA-Z\u4e00-\u9fa5]+$/;
+                // var reg = /\S+@\S+\.\S+/;
+                if (!value) {
+                  return Promise.reject('请输入姓名');
+                }
+                if (!reg_tel.test(value)) {
+                  /* eslint-disable-next-line */
+                  return Promise.reject('请输入正确的姓名');
+                }
+                return Promise.resolve();
+              },
+              trigger: 'change',
+            },
+          ],
+        },
+        {
+          field: 'roleId',
+          component: 'ApiSelect',
+          label: '角色',
+          required: true,
+          itemProps: {
+            validateTrigger: 'blur',
+          },
+          colProps: {
+            span: 20,
+          },
+          defaultValue: '',
+          componentProps: {
+            api: getRoleListByParam,
+            labelField: 'roleName',
+            valueField: 'id',
+            params: {
+              type: 1,
+            },
+          },
+        },
+        {
+          field: 'userName',
+          component: 'Input',
+          label: '账号',
+          required: true,
+          colProps: {
+            span: 20,
+          },
+          componentProps:{
+            placeholder:"请输入字母或数字组合",
+            autoComplete:'off',
+            maxLength: 15,
+            readonly:preventAutoFill.value
+          },
+          rules: [
+            {
+              required: true,
+              // @ts-ignore
+              validator: async (rule, value) => {
+                console.log('value',value)
+                const regPos = /^[\da-z]+$/i; // 非中文
+                if (!value) {
+                  return Promise.reject('请输入字母或数字组合');
+                }
+                if (!regPos.test(value)) {
+                  /* eslint-disable-next-line */
+                  return Promise.reject('请输入字母或数字组合');
+                }
+                return Promise.resolve();
+              },
+              trigger: 'change',
+            },
+          ],
+        },
+        {
+          field: 'password',
+          component: 'StrengthMeter',
+          label: '密码',
+          required: true,
+          colProps: {
+            span: 20,
+          },
+          rules: [
+            {
+              required: true,
+              // @ts-ignore
+              validator: async (rule, value) => {
+                console.log('value',value)
+                const regPos = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/; // 非中文
+                if (!value) {
+                  return Promise.reject('请输入8-16位数字、字母大小写组合');
+                }
+                if (!regPos.test(value)) {
+                  /* eslint-disable-next-line */
+                  return Promise.reject('请输入8-16位数字、字母大小写组合');
+                }
+                return Promise.resolve();
+              },
+              trigger: 'change',
+            },
+          ],
+          componentProps:{
+            placeholder:"请输入8-16位数字、字母大小写组合",
+            maxLength: 16,
+            readonly:preventAutoFill.value,
+            minLength: 8,
+            autoComplete:'off',
+          }
+        },
+        {
+          field: 'id',
+          component: 'Input',
+          label: 'id',
+          show: false,
+        },
+      ];
+      const title = ref('编辑账号');
+      const { createMessage } = useMessage();
+      const [registerForm, { setFieldsValue, validate, updateSchema, resetFields }] = useForm({
+        labelWidth: 120,
+        schemas,
+        showActionButtonGroup: false,
+        actionColOptions: {
+          span: 24,
+        },
+      });
+
+      const [register, { closeModal }] = useModalInner((data) => {
+        data && onDataReceive(data);
+      });
+      function onDataReceive(data) {
+        // 方式1;
+        setTimeout(()=>{
+          // updateSchema(setSchema);
+        },500)
+      }
+      function companyIdChange(companyId) {
+        // resetFields(['permList'])
+        updateSchema([
+          {
+            field: 'permList',
+            componentProps: {
+              params: {
+                companyId: companyId,
+              },
+            },
+          },
+        ]);
+        setFieldsValue({
+          permList: [],
+        });
+      }
+      async function handleOk() {
+        let data = await validate();
+        const requestApi = data.id ? updateApi : saveApi;
+        let res = await requestApi({
+          ...data,
+          // userName: data.phone,
+          phone: data.phone,
+          nickName: data.nickName,
+          roleId: data.roleId,
+          id: data.id,
+        });
+        context && context.emit('ok', res);
+        createMessage.success(t('common.optSuccess'));
+        closeModal();
+        resetFields();
+      }
+
+      return {
+        register,
+        title,
+        preventAutoFill,
+        schemas,
+        registerForm,
+        modelRef,
+        handleOk,
+        resetFields,
+      };
+    },
+  });
+</script>

+ 7 - 141
src/views/staff/detailsModal.vue

@@ -4,7 +4,7 @@
     @cancel="resetFields"
     @cancel="resetFields"
     @register="register"
     @register="register"
     :title="title"
     :title="title"
-    :min-height="300"
+    :min-height="200"
     height="500"
     height="500"
     @ok="handleOk"
     @ok="handleOk"
   >
   >
@@ -87,85 +87,14 @@
           colProps: {
           colProps: {
             span: 20,
             span: 20,
           },
           },
-          defaultValue: 8,
           componentProps: {
           componentProps: {
-            options: [
-              {
-                label: '公司员工',
-                value: 8,
-                key: 8,
-              },
-            ],
-          },
-        },
-        {
-          field: 'userName',
-          component: 'Input',
-          label: '账号',
-          required: true,
-          colProps: {
-            span: 20,
-          },
-          componentProps:{
-            placeholder:"请输入字母或数字组合",
-            autoComplete:'off',
-            maxLength: 15,
-            readonly:preventAutoFill.value
-          },
-          rules: [
-            {
-              required: true,
-              // @ts-ignore
-              validator: async (rule, value) => {
-                console.log('value',value)
-                const regPos = /^[\da-z]+$/i; // 非中文
-                if (!value) {
-                  return Promise.reject('请输入字母或数字组合');
-                }
-                if (!regPos.test(value)) {
-                  /* eslint-disable-next-line */
-                  return Promise.reject('请输入字母或数字组合');
-                }
-                return Promise.resolve();
-              },
-              trigger: 'change',
-            },
-          ],
-        },
-        {
-          field: 'password',
-          component: 'StrengthMeter',
-          label: '密码',
-          required: true,
-          colProps: {
-            span: 20,
-          },
-          rules: [
-            {
-              required: true,
-              // @ts-ignore
-              validator: async (rule, value) => {
-                console.log('value',value)
-                const regPos = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/; // 非中文
-                if (!value) {
-                  return Promise.reject('请输入8-16位数字、字母大小写组合');
-                }
-                if (!regPos.test(value)) {
-                  /* eslint-disable-next-line */
-                  return Promise.reject('请输入8-16位数字、字母大小写组合');
-                }
-                return Promise.resolve();
+            api: getRoleListByParam,
+              labelField: 'roleName',
+              valueField: 'id',
+              params: {
+                type: 1,
               },
               },
-              trigger: 'change',
-            },
-          ],
-          componentProps:{
-            placeholder:"请输入8-16位数字、字母大小写组合",
-            maxLength: 16,
-            readonly:preventAutoFill.value,
-            minLength: 8,
-            autoComplete:'off',
-          }
+            }
         },
         },
         {
         {
           field: 'id',
           field: 'id',
@@ -201,69 +130,6 @@
             roleId: data.roleId != 2 ? data.roleId : '',
             roleId: data.roleId != 2 ? data.roleId : '',
           });
           });
         },200)
         },200)
-        let setSchema = [
-          {
-            field: 'roleId',
-            component: 'ApiSelect',
-            componentProps: {
-              // disabled: data.roleId == 2 ? false : data.id ? true : false,
-              api: getRoleListByParam,
-              labelField: 'roleName',
-              valueField: 'id',
-              params: {
-                type: data.roleId ? 1 : 0,
-                roleId: data.roleId,
-              },
-            },
-          },
-          {
-            field: 'phone',
-            componentProps: {
-              // disabled: getCheckRole('plat_admin') ? false : data.id ? true : false,
-            },
-          },
-          {
-            field: 'userName',
-            ifShow:data.id ? false:true,
-            componentProps: {
-              placeholder:"请输入字母或数字组合",
-              autoComplete:'off',
-              readonly:false,
-              maxLength: 15,
-            },
-          },
-          {
-            field: 'password',
-            ifShow:data.id ? false:true,
-            componentProps:{
-              disabled: data.id ? (data.roleId != 2 ? true : false) : false,
-              placeholder:"请输入8-16位数字、字母大小写组合",
-              maxLength: 16,
-              minLength: 8,
-              readonly:false,
-              autoComplete:'off',
-            }
-          },
-          {
-            field: 'companyId',
-            componentProps: {
-              disabled: data.id ? (data.roleId != 2 ? true : false) : false,
-            },
-          },
-          {
-            field: 'permList',
-            componentProps: {
-              disabled: data.roleId == 2 ? false : data.id ? true : false,
-              params: {
-                companyId: data.companyId || companyId,
-              },
-            },
-          },
-        ];
-        title.value = data.id ? '编辑账号' : '新增账号';
-        setTimeout(()=>{
-          updateSchema(setSchema);
-        },500)
       }
       }
       function companyIdChange(companyId) {
       function companyIdChange(companyId) {
         // resetFields(['permList'])
         // resetFields(['permList'])

+ 7 - 11
src/views/staff/list.vue

@@ -47,7 +47,7 @@
     </BasicTable>
     </BasicTable>
     <DetailsModal @register="registerDetail" @ok="reload" />
     <DetailsModal @register="registerDetail" @ok="reload" />
     <SetpaswordModal @register="register" @reload="reload" />
     <SetpaswordModal @register="register" @reload="reload" />
-    <!--<DelListModal @register="registerDelList" @reload="reload" /> -->
+    <addDetailsModal @register="registerAddDetail" @ok="reload" />
   </div>
   </div>
 </template>
 </template>
 <script lang="ts">
 <script lang="ts">
@@ -58,7 +58,8 @@
   import { uploadApi } from '/@/api/sys/upload';
   import { uploadApi } from '/@/api/sys/upload';
   import SetpaswordModal from './setpaswordModal.vue';
   import SetpaswordModal from './setpaswordModal.vue';
   import DetailsModal from './detailsModal.vue';
   import DetailsModal from './detailsModal.vue';
-import { Switch } from 'ant-design-vue';
+  import addDetailsModal from './adddetailsModal.vue';
+  import { Switch } from 'ant-design-vue';
   // import DelListModal from './delListModal.vue';
   // import DelListModal from './delListModal.vue';
   import { Alert } from 'ant-design-vue';
   import { Alert } from 'ant-design-vue';
   // import { h } from 'vue';
   // import { h } from 'vue';
@@ -78,7 +79,7 @@ import { Switch } from 'ant-design-vue';
       Time,
       Time,
       SetpaswordModal,
       SetpaswordModal,
       DetailsModal,
       DetailsModal,
-      // DelListModal,
+      addDetailsModal,
       Alert,
       Alert,
     },
     },
     setup() {
     setup() {
@@ -88,6 +89,7 @@ import { Switch } from 'ant-design-vue';
         shotNum: 0,
         shotNum: 0,
       });
       });
       const [registerDetail, { openModal: openDetaileModal }] = useModal();
       const [registerDetail, { openModal: openDetaileModal }] = useModal();
+      const [registerAddDetail, { openModal: openAddDetaileModal }] = useModal();
       const [registerDelList, { openModal: openDelListeModal }] = useModal();
       const [registerDelList, { openModal: openDelListeModal }] = useModal();
       const { createConfirm, createMessage } = useMessage();
       const { createConfirm, createMessage } = useMessage();
       const userStore = useUserStore();
       const userStore = useUserStore();
@@ -280,14 +282,7 @@ import { Switch } from 'ant-design-vue';
         openModal(true, record);
         openModal(true, record);
       }
       }
       function handleCreate() {
       function handleCreate() {
-        // if (
-        //   getCheckRole([RoleEnum.COMPANY_ADMIN]) &&
-        //   surplusSubNum.value.lookNum == 0 &&
-        //   surplusSubNum.value.shotNum == 0
-        // ) {
-        //   return createMessage.error('新增失败,可添加员工数量为0个');
-        // }
-        openDetaileModal(true, {});
+        openAddDetaileModal(true,{});
       }
       }
       function handleEdit(record: Recordable) {
       function handleEdit(record: Recordable) {
         openDetaileModal(true, {
         openDetaileModal(true, {
@@ -328,6 +323,7 @@ import { Switch } from 'ant-design-vue';
         registerTable,
         registerTable,
         registerDetail,
         registerDetail,
         registerDelList,
         registerDelList,
+        registerAddDetail,
         openDelListeModal,
         openDelListeModal,
         createMessage,
         createMessage,
         handDelconfirm,
         handDelconfirm,

+ 3 - 1
src/views/staff/setpaswordModal.vue

@@ -4,11 +4,13 @@
     @register="register"
     @register="register"
     @ok="handSubmit"
     @ok="handSubmit"
     :title="t('routes.staff.updateBtn')"
     :title="t('routes.staff.updateBtn')"
+    :min-height="100"
     @visible-change="handleVisibleChange"
     @visible-change="handleVisibleChange"
     @cancel="resetFields"
     @cancel="resetFields"
   >
   >
     <div class="pt-3px pr-3px">
     <div class="pt-3px pr-3px">
       <BasicForm @register="registerForm" />
       <BasicForm @register="registerForm" />
+      <span style="margin-left:100px;color:#9f9c9c">请设置新密码,设置后,管理员可使用新密码登录。</span>
     </div>
     </div>
   </BasicModal>
   </BasicModal>
 </template>
 </template>
@@ -42,7 +44,7 @@
           field: 'password',
           field: 'password',
           component: 'StrengthMeter',
           component: 'StrengthMeter',
           label: t('routes.staff.password'),
           label: t('routes.staff.password'),
-          labelWidth: 120,
+          labelWidth: 100,
           required: true,
           required: true,
           rules: [
           rules: [
             {
             {