Kaynağa Gözat

fix(bugs): 修改问题

tangning 3 yıl önce
ebeveyn
işleme
62b58c505e

+ 7 - 1
src/components/Upload/src/UploadModal.vue

@@ -124,7 +124,13 @@
       // 上传前校验
       function beforeUpload(file: File) {
         const { size, name } = file;
-        const { maxSize } = props;
+        const { maxSize, accept } = props;
+        const type = name.split('.').pop() || '';
+        if (accept && !accept.includes(type.toLowerCase())) {
+          createMessage.error(t('component.upload.accept', [accept.join(',')]));
+          return false;
+        }
+        console.log('file', type, props);
         // 设置最大值,则判断
         if (maxSize && file.size / 1024 / 1024 >= maxSize) {
           createMessage.error(t('component.upload.maxSizeMultiple', [maxSize]));

+ 4 - 4
src/enums/roleEnum.ts

@@ -1,8 +1,8 @@
 export enum RoleEnum {
   // super admin
   SUPER = 'super',
-
-  // tester
-  PLAT_ADMIN = 'admin',
-  TEST = 'test',
+  PLAT_ADMIN = 'plat_admin',
+  COMPANY_ADMIN = 'company_admin',
+  STAFF = 'staff',
+  HOST = 'host',
 }

+ 1 - 1
src/layouts/default/header/index.vue

@@ -37,7 +37,7 @@
 
       <!-- <ErrorAction v-if="getUseErrorHandle" :class="`${prefixCls}-action__item error-action`" /> -->
 
-      <!-- <Notify v-if="getShowNotice" :class="`${prefixCls}-action__item notify-item`" /> -->
+      <Notify v-if="getShowNotice" :class="`${prefixCls}-action__item notify-item`" />
 
       <FullScreen v-if="getShowFullScreen" :class="`${prefixCls}-action__item fullscreen-item`" />
 

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

@@ -11,6 +11,7 @@ export default {
   anchorRoom: '直播间名称',
   appListPicUrl: '直播间封面',
   sortOrder: '排序',
+  isShow: '是否显示',
   livestream: '开播',
   bindShowerNameList: '已绑定主播',
   livestreamStatus: '是否开播',

+ 18 - 4
src/store/modules/user.ts

@@ -67,6 +67,7 @@ export const useUserStore = defineStore({
     },
     setRoleList(roleList: RoleEnum[]) {
       this.roleList = roleList;
+      console.log('roleList', roleList);
       setAuthCache(ROLES_KEY, roleList);
     },
     setUserInfo(info: UserInfo | null) {
@@ -134,12 +135,25 @@ export const useUserStore = defineStore({
       const userId: number = id || Number(this.getUserInfoCache.id);
       // debugger;
       const userInfo = await getUserInfo(userId);
-      const { roles = [] } = userInfo;
-      if (isArray(roles)) {
-        const roleList = roles.map((item) => item.value) as RoleEnum[];
+      const { roleIdList = [] } = userInfo;
+      if (isArray(roleIdList)) {
+        const roleList = roleIdList.map((item) => {
+          switch (item) {
+            case 1:
+              return RoleEnum.SUPER;
+            case 5:
+              return RoleEnum.PLAT_ADMIN;
+            case 6:
+              return RoleEnum.COMPANY_ADMIN;
+            case 8:
+              return RoleEnum.STAFF;
+            case 9:
+              return RoleEnum.HOST;
+          }
+        }) as RoleEnum[];
         this.setRoleList(roleList);
       } else {
-        userInfo.roles = [];
+        userInfo.roleIdList = [];
         this.setRoleList([]);
       }
       this.setUserInfo(userInfo);

+ 3 - 0
src/views/devices/AddModal.vue

@@ -126,6 +126,9 @@
           component: 'ApiSelect',
           label: t('routes.devices.companyId'),
           required: true,
+          itemProps: {
+            validateTrigger: 'blur',
+          },
           componentProps: {
             api: allCompanyApi,
             numberToString: true,

+ 1 - 1
src/views/devices/list.vue

@@ -48,7 +48,7 @@
         />
       </template>
     </BasicTable>
-    <AddModal @submit="reload" @register="registerAddModal" />
+    <AddModal @update="reload" @register="registerAddModal" />
     <EditModal @register="registerEditModal" @update="reload" />
   </div>
 </template>

+ 2 - 2
src/views/scenes/editorModal.vue

@@ -56,7 +56,7 @@
         },
         {
           field: 'picList',
-          label: '直播间图片',
+          label: '场景封面',
           component: 'Upload',
           required: true,
           itemProps: {
@@ -67,7 +67,7 @@
             maxSize: 5,
             emptyHidePreview: true,
             maxNumber: 1,
-            accept: ['image/*'],
+            accept: ['jpg', 'jpeg', 'gif', 'png'],
             afterFetch: function (data) {
               Reflect.set(data, 'url', data.message.url);
               return data;

+ 12 - 4
src/views/scenes/list.vue

@@ -118,7 +118,7 @@
           width: 180,
         },
         {
-          title: t('routes.scenes.appListPicUrl'),
+          title: '封面',
           dataIndex: 'appListPicUrl',
           slots: { customRender: 'cover' },
           width: 150,
@@ -138,7 +138,16 @@
           dataIndex: 'createTime',
           width: 180,
         },
-
+        {
+          title: t('routes.scenes.isShow'),
+          dataIndex: 'isShow',
+          width: 180,
+          customRender: ({ record }) => {
+            const enable = record.isShow == 1;
+            const text = enable ? t('common.yes') : t('common.no');
+            return text;
+          },
+        },
         {
           title: t('routes.scenes.num'),
           dataIndex: 'num',
@@ -232,9 +241,8 @@
           const userStore = useUserStore();
           const data = await generateSceneEditTokenApi({
             sceneNum: record.num,
-            userName: userStore.getUserInfo?.phone,
+            userName: userStore.getUserInfo?.userName,
           });
-          console.log('generateSceneEditTokenApi', data);
           window.open(url + data);
         } catch (error) {
           console.log('error', error);

+ 5 - 2
src/views/scenes/liveDrawer.vue

@@ -163,6 +163,7 @@
             span: 10,
           },
           componentProps: {
+            accept: ['jpg', 'jpeg', 'gif', 'png'],
             api: uploadLiveApi,
             onChange: async () => {
               await validateFields(['appListPicUrl']);
@@ -184,15 +185,17 @@
           field: 'sceneNum',
           label: t('routes.scenes.sceneUrl'),
           component: 'ApiSelect',
-          // required: true,
           colProps: {
             span: 10,
           },
           itemProps: {
             validateTrigger: 'blur',
           },
+          required: true,
+          helpMessage: '直播间绑定后,将无法修改',
           componentProps: {
             api: getAllSceneApi,
+            disabled: !isUpdate.value,
             immediate: true,
             resultField: 'list',
             labelField: 'sceneName',
@@ -312,7 +315,7 @@
           field: 'sortOrder',
           component: 'InputNumber',
           label: t('routes.scenes.sortOrder'),
-          required: true,
+          // required: true,
           defaultValue: 1,
           componentProps: {
             min: 0,

+ 10 - 2
src/views/staff/list.vue

@@ -2,7 +2,12 @@
   <div class="p-4">
     <BasicTable @register="registerTable">
       <template #toolbar>
-        <a-button type="primary" @click="handleCreate">新增</a-button>
+        <a-button
+          v-auth="[RoleEnum.SUPER, RoleEnum.PLAT_ADMIN]"
+          type="primary"
+          @click="handleCreate"
+          >新增</a-button
+        >
       </template>
       <template #role="{ record }">
         {{ renderRoleType(record.role) }}
@@ -57,6 +62,7 @@
   import { ListApi, delApi, preDelApi } from '/@/api/staff/list';
   import { useI18n } from '/@/hooks/web/useI18n';
   // import { useCopyToClipboard } from '/@/hooks/web/useCopyToClipboard';
+  import { RoleEnum } from '/@/enums/roleEnum';
   import { useGo } from '/@/hooks/web/usePage';
   import { Time } from '/@/components/Time';
   export default defineComponent({
@@ -161,7 +167,8 @@
         },
         bordered: true,
         sortFn: (sortInfo) => {
-          return { ...sortInfo, sidx: sortInfo.field, order: sortInfo.order.replace('end', '') };
+          let order = sortInfo.order && sortInfo.order.replace('end', '');
+          return { ...sortInfo, sidx: sortInfo.field, order: order };
         },
       });
 
@@ -235,6 +242,7 @@
         handleEdit,
         handleDelete,
         uploadApi: uploadApi as any,
+        RoleEnum,
       };
     },
   });

+ 24 - 14
src/views/system/account/account.data.ts

@@ -15,11 +15,11 @@ export const columns: BasicColumn[] = [
     dataIndex: 'userName',
     width: 120,
   },
-  {
-    title: '昵称',
-    dataIndex: 'nickName',
-    width: 120,
-  },
+  // {
+  //   title: '昵称',
+  //   dataIndex: 'nickName',
+  //   width: 120,
+  // },
   {
     title: '手机',
     dataIndex: 'phone',
@@ -37,14 +37,22 @@ export const columns: BasicColumn[] = [
     },
   },
   {
+    title: '状态',
+    dataIndex: 'recStatus',
+    width: 120,
+    customRender: ({ record }) => {
+      return record.recStatus == 'I' ? '禁用' : '正常';
+    },
+  },
+  {
     title: '角色',
     dataIndex: 'roleName',
     width: 200,
   },
-  {
-    title: '备注',
-    dataIndex: 'remark',
-  },
+  // {
+  //   title: '备注',
+  //   dataIndex: 'remark',
+  // },
 ];
 
 export const searchFormSchema: FormSchema[] = [
@@ -114,7 +122,9 @@ export const accountFormSchema: FormSchema[] = [
     itemProps: {
       validateTrigger: 'blur',
     },
+    defaultValue: 9,
     componentProps: {
+      disabled: true,
       api: roleSelectListApi,
       labelField: 'roleName',
       valueField: 'roleId',
@@ -147,7 +157,7 @@ export const accountFormSchema: FormSchema[] = [
     label: '手机号',
     component: 'Input',
     required: true,
-    helpMessage: ['验证提示', '手机号需在指房宝APP注册后才可新增'],
+    // helpMessage: ['验证提示', '手机号需在指房宝APP注册后才可新增'],
     rules: [
       // {
       //   required: true,
@@ -191,19 +201,19 @@ export const accountFormSchema: FormSchema[] = [
     ],
   },
   {
-    field: 'rec_status',
+    field: 'recStatus',
     label: '状态',
     component: 'RadioGroup',
     required: true,
-    defaultValue: 1,
+    defaultValue: 'A',
     componentProps: {
       options: [
         {
-          value: 1,
+          value: 'A',
           label: '正常',
         },
         {
-          value: 0,
+          value: 'I',
           label: '禁用',
         },
       ],