Selaa lähdekoodia

feat(角色): 添加新角色

tangning 3 vuotta sitten
vanhempi
commit
92cec079c2

+ 3 - 1
src/api/corporation/model.ts

@@ -50,7 +50,9 @@ export interface checkUserParam {
 
 export interface SubAccountUsers {
   id: number | null;
-  subNum: string | number;
+  subNum?: string | number;
+  shotNum: string | number;
+  lookNum: string | number;
   subUsers: Recordable<any>[]; //SubAccountUser[];
 }
 

+ 2 - 0
src/enums/roleEnum.ts

@@ -3,6 +3,8 @@ export enum RoleEnum {
   SUPER = 'super', //超级管理员
   PLAT_ADMIN = 'plat_admin', //平台管理员
   COMPANY_ADMIN = 'company_admin', //公司管理员
+  COMPANY_VIEWER = 'company_viewer', //公司管理员
+  COMPANY_SHOOTER = 'company_shooter', //公司管理员
   STAFF = 'staff', //员工
   HOST = 'host', //主持人
   TOURIST = 'tourist', //游客

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

@@ -153,6 +153,10 @@ export const useUserStore = defineStore({
               return RoleEnum.STAFF;
             case 9:
               return RoleEnum.HOST;
+            case 81:
+              return RoleEnum.COMPANY_VIEWER;
+            case 82:
+              return RoleEnum.COMPANY_SHOOTER;
           }
         }) as RoleEnum[];
         console.log('roleIdList', roleList);

+ 16 - 0
src/views/corporation/AddModal.vue

@@ -19,6 +19,7 @@
   import { useMessage } from '/@/hooks/web/useMessage';
   import { checkUserAddAble } from '/@/api/corporation/modal';
   import { useI18n } from '/@/hooks/web/useI18n';
+  import { roleLIstApi } from '/@/api/staff/list';
 
   const { t } = useI18n();
   const schemas: FormSchema[] = [
@@ -63,6 +64,21 @@
         span: 24,
       },
     },
+    {
+      field: 'roleId',
+      component: 'ApiRadioGroup',
+      label: '角色',
+      required: true,
+      itemProps: {
+        validateTrigger: 'blur',
+      },
+      // defaultValue: 8,
+      componentProps: {
+        api: roleLIstApi,
+        labelField: 'roleName',
+        valueField: 'roleId',
+      },
+    },
   ];
   export default defineComponent({
     components: { BasicModal, BasicForm },

+ 109 - 18
src/views/corporation/SubaccountModal.vue

@@ -26,6 +26,46 @@
             {{ t('routes.devices.add') }}{{ t('routes.devices.title') }}
           </a-button>
         </template>
+        <template #subNum="{ model, field }">
+          <!-- {{ model[field] }}  
+            
+            @press-enter="deviceMapping"-->
+          <input-number
+            v-model:value="model[field]"
+            style="width: 260px; text-align: center"
+            class="justify-center suNum"
+            :min="0"
+            @blur="numOnChange.bind(null, field)"
+            :max="999"
+          >
+            <template #addonBefore>
+              <a-button
+                size="small"
+                type="link"
+                @click="
+                  () => {
+                    numsOnChange(false, field);
+                  }
+                "
+              >
+                <Icon icon="ic:baseline-minus" :size="20" />
+              </a-button>
+            </template>
+            <template #addonAfter>
+              <a-button
+                size="small"
+                type="link"
+                @click="
+                  () => {
+                    numsOnChange(true, field);
+                  }
+                "
+              >
+                <Icon icon="ic:round-plus" :size="20" />
+              </a-button>
+            </template>
+          </input-number>
+        </template>
       </BasicForm>
       <div class="table_list">
         <BasicTable
@@ -64,11 +104,22 @@
   import { selectUserList, saveSubUsers } from '/@/api/corporation/modal';
   import { useMessage } from '/@/hooks/web/useMessage';
   import EditModal from './EditModal.vue';
+  import { Icon } from '/@/components/Icon/index';
   // import { tableState } from './types/hooks';
+  import { InputNumber } from 'ant-design-vue';
   import AddModal from './AddModal.vue';
   import { useI18n } from '/@/hooks/web/useI18n';
   export default defineComponent({
-    components: { BasicModal, BasicForm, BasicTable, AddModal, TableAction, EditModal },
+    components: {
+      BasicModal,
+      BasicForm,
+      BasicTable,
+      AddModal,
+      TableAction,
+      EditModal,
+      InputNumber,
+      Icon,
+    },
     props: {
       userData: { type: Object },
     },
@@ -131,18 +182,18 @@
           labelWidth: 200,
         },
         {
-          field: 'subNum',
+          field: 'shotNum',
           component: 'InputNumber',
-          label: `${t('routes.devices.subNum')} :`,
+          slot: 'subNum',
+          label: `可拍摄员工数 :`,
           labelWidth: 200,
           rules: [
             {
               required: false,
               // @ts-ignore
               validator: async (rule, value) => {
-                let { addeduser } = getFieldsValue();
-                console.log('validator', value, addeduser);
-                if (value < addeduser) {
+                let { addeduser, lookNum } = getFieldsValue();
+                if (value < addeduser - lookNum) {
                   return Promise.reject('可添加员工总数应大于已添加员工数');
                 }
                 return Promise.resolve();
@@ -154,11 +205,42 @@
             return {
               // xxxx props schema, tableAction, formModel  checkDevice
               min: 0,
+              max: 999,
               onChange: numOnChange,
             };
           },
         },
         {
+          field: 'lookNum',
+          component: 'InputNumber',
+          slot: 'subNum',
+          label: `可带看员工数 :`,
+          labelWidth: 200,
+          rules: [
+            {
+              required: false,
+              // @ts-ignore
+              validator: async (rule, value) => {
+                let { addeduser, shotNum } = getFieldsValue();
+                console.log('validator', value, addeduser);
+                if (value < addeduser - shotNum) {
+                  return Promise.reject('可添加员工总数应大于已添加员工数');
+                }
+                return Promise.resolve();
+              },
+              trigger: 'change',
+            },
+          ],
+          componentProps: () => {
+            return {
+              // xxxx props schema, tableAction, formModel  checkDevice
+              max: 999,
+              min: 0,
+              onChange: numsOnChange,
+            };
+          },
+        },
+        {
           field: 'addeduser',
           label: `${t('routes.devices.addeduser')}`,
           labelWidth: 200,
@@ -168,13 +250,7 @@
       ];
       const [
         registerForm,
-        {
-          setFieldsValue,
-          resetFields,
-          getFieldsValue,
-          validate,
-          // setProps,
-        },
+        { setFieldsValue, resetFields, getFieldsValue, validate, validateFields },
       ] = useForm({
         labelWidth: 120,
         schemas,
@@ -230,10 +306,23 @@
         });
       }
       function numOnChange(data) {
-        console.log('data', data);
-        modelRef.subNum = data;
-        // myData.subNum = event;
-        // console.log('numOnChange', event);
+        let { lookNum } = getFieldsValue();
+        modelRef.subNum = lookNum + data;
+      }
+      async function numsOnChange(data, type) {
+        let formdata = getFieldsValue();
+        let value = formdata[type];
+        if (data) {
+          value++;
+        } else {
+          value--;
+        }
+        await setFieldsValue({
+          [type]: value,
+        });
+        let { shotNum, lookNum } = getFieldsValue();
+        modelRef.subNum = lookNum + shotNum;
+        validateFields(['lookNum', 'shotNum']);
       }
       async function handleDelete(item, type) {
         console.log('handleDelete', item, type);
@@ -274,7 +363,8 @@
         let tableData = getDataSource();
         let res = await saveSubUsers({
           id: modelRef.id,
-          subNum: modelRef.subNum,
+          shotNum: fromData.shotNum,
+          lookNum: fromData.lookNum,
           subUsers: tableData,
         });
         console.log('saveTable', res, fromData);
@@ -311,6 +401,7 @@
         handleDelete,
         registerEdit,
         numOnChange,
+        numsOnChange,
         modelRef,
         schemas,
         columns,

+ 11 - 28
src/views/staff/detailsModal.vue

@@ -13,7 +13,7 @@
 </template>
 <script lang="ts">
   import { defineComponent, ref } from 'vue';
-  import { checkUserApi, saveApi, updateApi } from '/@/api/staff/list';
+  import { checkUserApi, saveApi, updateApi, roleLIstApi } from '/@/api/staff/list';
   import { BasicModal, useModalInner } from '/@/components/Modal';
   import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
   import { ListAllCompanyApi } from '/@/api/corporation/list';
@@ -136,6 +136,9 @@
           itemProps: {
             validateTrigger: 'blur',
           },
+          colProps: {
+            span: 22,
+          },
           defaultValue: 8,
           componentProps: {
             options: [
@@ -193,33 +196,13 @@
         let setSchema = [
           {
             field: 'roleId',
-            componentProps:
-              data.roleId === 2
-                ? {
-                    disabled: false,
-                    options: [
-                      {
-                        label: '公司员工',
-                        value: 8,
-                        key: 8,
-                      },
-                    ],
-                  }
-                : {
-                    disabled: data.id ? true : false,
-                    options: [
-                      {
-                        label: '公司员工',
-                        value: 8,
-                        key: 8,
-                      },
-                      {
-                        label: '公司管理员',
-                        value: 6,
-                        key: 6,
-                      },
-                    ],
-                  },
+            component: 'ApiSelect',
+            componentProps: {
+              disabled: data.id && data.roleId != 2 ? true : false,
+              api: roleLIstApi,
+              labelField: 'roleName',
+              valueField: 'roleId',
+            },
           },
           {
             field: 'phone',