瀏覽代碼

add 权限

tangning 2 年之前
父節點
當前提交
1672f0d37e

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

@@ -5,6 +5,7 @@ import { encodeStr } from '/@/utils/encodeUtil';
 
 enum Api {
   pageList = '/service/sale/sysUser/list',
+  userList = '/service/sale/user/allList',
   sysUserAdd = '/service/sale/sysUser/add',
   updatePassword = '/service/sale/sysUser/rePassword',
   preDel = '/service/sale/sysUser/delete',
@@ -117,6 +118,17 @@ export const checkUserApi = (params) =>
     },
   });
 
+  export const UserListApi = (params) =>
+  defHttp.get<boolean>({
+    url: Api.userList,
+    params,
+    data: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+
 export const saveApi = (params) =>
 defHttp.post<Result>({
   url: Api.staffSave,

+ 26 - 17
src/locales/lang/zh-CN/code.ts

@@ -5,27 +5,36 @@ export default {
     '500': '抱歉,服务器报告错误。',
     '3014': '账号或密码错误,请重新登录!',
     '4001': '必填项不能为空',
+    '4002': '无此权限',
     '4003': '用户不存在',
     '4004': '用户已添加',
-    '4005': '经销商不存在',
+    '4005': '账号密码错误,请重新登录!',
+    '4006': '该账号已停止使用',
+    '4007': '必填项不能为空',
     '4008': '用户未登录',
-    '4009': '账号或密码错误,请重新登录!',
-    '4011': '场景不存在',
-    '4012': '相机不存在',
-    '4013': '相机容量不足,不能迁移',
-    '4014': '必须迁移至相同的类型的相机下面!',
-    '4015': '权益类型不存在!',
-    '4016': '"权益不存在!',
-    '4017': '权益数量不足!',
-    '4018': '下载数量不足!',
-    '4019': 'sn码不存在!',
-    '4020': '频繁登录失败,请五分钟后再次尝试登录!',
+    '4009': '长度超出限制!',
     '5005': '场景为空',
-    '50018': '相机不存在!',
-    '50031': '相机容量不足,不能迁移',
+    '50035': '该角色已关联用户,不可删除。请先修改相关用户的角色!',
+    '50039': '只能修改自己的密码!',
+    '50037': '原密码错误!',
     '50032': '必须迁移至相同的类型的相机下面!',
-    '50044': '场景在该相机中,无需迁移!',
-    '50034': 'sn码不存在!',
-    '5037': '场景正在计算中,请待计算完成后再操作。',
+    '60001': '备件不存在!',
+    '60002': 'SN码不存在!',
+    '60003': 'SN码不存在!',
+    '60004': '工单不存在!',
+    '60005': '工单状态错误!',
+    '60006': '文件不存在!',
+    '60007': '文件大小超过限制!',
+    '60008': '已存在检测登记记录,缺少配件登记id!',
+    '60009': '该订单已支付!',
+    '60010': '该订单不存在!',
+    '60011': '该订单已评论!',
+    '60012': '该订单已申请开票!',
+    '60013': '订单未支付!',
+    '60014': '该订单已开票!',
+    '60015': '报价类型为空!',
+    '60016': '备件id为空!',
+    '60017': '人工id为空!',
+    '60018': '备件库存不足!',
   }
 };

+ 0 - 1
src/utils/http/axios/index.ts

@@ -150,7 +150,6 @@ const transform: AxiosTransform = {
         }
         return "";
     };
-    console.log('getToken',token)
     if (token && (config as Recordable)?.requestOptions?.withToken !== false) {
       // jwt token
       (config as Recordable).headers.Authorization = options.authenticationScheme

+ 29 - 4
src/views/staff/adddetailsModal.vue

@@ -5,7 +5,7 @@
     @register="register"
     :title="title"
     :min-height="350"
-    height="500"
+    :height="500"
     @ok="handleOk"
   >
     <BasicForm @register="registerForm" />
@@ -13,12 +13,13 @@
 </template>
 <script lang="ts">
   import { defineComponent, ref, computed } from 'vue';
-  import { checkUserApi, saveApi, updateApi, getRoleListByParam } from '/@/api/staff/list'; //roleLIstApi
+  import { UserListApi, 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';
+  import { debounce } from 'lodash-es';
   const { t } = useI18n();
   export default defineComponent({
     components: { BasicModal, BasicForm },
@@ -28,6 +29,7 @@
     emits: ['ok'],
     setup(_, context) {
       const modelRef = ref({});
+      const optionData = ref([])
       const userStore = useUserStore();
       const userinfo = computed(() => userStore.getUserInfo);
       const preventAutoFill = ref(true);
@@ -86,17 +88,40 @@
         },
         {
           field: 'userName',
-          component: 'Input',
+          component: 'Select',
           label: '账号',
           required: true,
           colProps: {
             span: 20,
           },
           componentProps:{
+            showSearch:true,
+            listHeight:200,
+            labelField: 'userName',
+            valueField: 'userName',
+            options:optionData.value,
+            onSearch:debounce(async value => {
+              optionData.value = []
+              const data = await UserListApi({userName:value})
+              optionData.value = data.map(ele =>{
+                return {
+                  label: ele.userName,
+                  value: ele.userName,
+                  key: ele.userName,
+                }
+              }) || []
+              updateSchema({
+              field: 'userName',
+              componentProps:{
+                options: optionData.value,
+              },
+            })
+
+            }),
             placeholder:"请输入字母或数字组合",
             autoComplete:'off',
             maxLength: 15,
-            readonly:preventAutoFill.value
+            readonly:preventAutoFill.value,
           },
           rules: [
             {

+ 3 - 0
src/views/work/addAccessoryModel.vue

@@ -274,6 +274,9 @@ export default defineComponent({
             closeModal();
             emit('update');
           },
+          onCancel: () => {
+            loading.value = false
+          }
         });
       } catch (error) {
         loading.value = false;

+ 2 - 3
src/views/work/checkModel.vue

@@ -124,10 +124,9 @@ export default defineComponent({
       {
         field: '0',
         component: 'Input',
-        label: '',
-        labelWidth: 0,
+        label: '所需备件',
         colProps: {
-          span: 4,
+          span: 18,
         },
         slot: 'add',
       },

+ 9 - 6
src/views/work/detail.vue

@@ -34,7 +34,7 @@
               {{
                 detailData.customerAddress.sendType
                   ? '前台送修'
-                  : `快递寄送:${detailData.customerAddress?.getTrackingNum}`
+                  : `快递寄送:${detailData.customerAddress?.getTrackingNum || '暂无单号'}`
               }}
             </DescriptionsItem>
             <DescriptionsItem label="保修类型">
@@ -151,7 +151,7 @@
               {{
                 detailData.customerAddress.getType == 0
                   ? '前台取回'
-                  : `快递寄回 ${detailData.customerAddress?.getTrackingNum || ''}`
+                  : `快递寄回 ${detailData.customerAddress?.getTrackingNum || '暂无单号'}`
               }}</DescriptionsItem
             >
             <DescriptionsItem label="收件信息" :span="2" v-if="detailData.customerAddress">
@@ -375,10 +375,10 @@ export default defineComponent({
         9: ['付款登记'],
         10: ['发货登记'],
       };
-      butList.value = stepRes[0] ? butTypeList[stepRes[0].repairStatus || 0] : ['接单'];
       stepList.value = stepRes;
       let res = await detail({ repairId: repairId.value });
       detailData.value = res;
+      butList.value = (stepRes[0] && res.repairerVo.status ) ? butTypeList[res.repairerVo.status] : [];
       let countItem = {
         id: 3,
         price: null,
@@ -414,12 +414,13 @@ export default defineComponent({
         repairId: detailData.value.orderReceivingVo?.repairId,
       };
       let openList = {
-        1: openTakingOrders, //检测登记
+        0: openTakingOrders, //检测登记
+        1: openCheckModal, //检测登记
         2: openQuoteModal, //报价
         3: openTakingOrders, //修改报价
         4: openPayLogModal, //付款登记
-        5: registerParts, //备件出库
-        7: registerParts, //备件回收
+        5: openPartsModal, //备件出库
+        7: openPartsModal, //备件回收
         8: openReviewModal, //测试登记
         9: openPayLogModal, //付款登记
         10: openDeliveryModal, //发货登记
@@ -440,6 +441,7 @@ export default defineComponent({
     const [registerParts, { openModal: openPartsModal }] = useModal();
     const [registerReview, { openModal: openReviewModal }] = useModal();
     const [registerRecovery, { openModal }] = useModal();
+    const [registerCheck, { openModal:openCheckModal }] = useModal();
     const [registerQuote, { openModal: openQuoteModal }] = useModal();
     const [registerPayLog, { openModal: openPayLogModal }] = useModal();
     const [registerDelivery, { openModal: openDeliveryModal }] = useModal();
@@ -468,6 +470,7 @@ export default defineComponent({
       registerTakingOrders,
       registerRemarks,
       registerOut,
+      registerCheck,
       registerAdd,
       registerTable,
       handleSubmit,

+ 1 - 1
src/views/work/maintenance.vue

@@ -2,7 +2,7 @@
   <PageWrapper contentBackground>
     <template #footer>
       <a-tabs v-model:activeKey="tableType" @change="changeTable">
-        <a-tab-pane :key="0" :tab="t('routes.spares.tableType.0')" />
+        <a-tab-pane :key="0" :tab="t('routes.spares.tableType.1')" />
         <a-tab-pane :key="1" :tab="t('routes.spares.tableType.21')" />
         <a-tab-pane :key="2" :tab="t('routes.spares.tableType.22')" />
       </a-tabs></template

+ 3 - 0
src/views/work/outModal.vue

@@ -273,6 +273,9 @@ export default defineComponent({
             closeModal();
             emit('update');
           },
+          onCancel: () => {
+            loading.value = false
+          }
         });
       } catch (error) {
         loading.value = false;

+ 3 - 0
src/views/work/payLogModal.vue

@@ -141,6 +141,9 @@
               console.log('not passing', error);
             }
           },
+          onCancel: () => {
+            loading.value = false
+          }
         });
       };
       return {

+ 8 - 12
src/views/work/quoteModel.vue

@@ -95,7 +95,7 @@
           },{
             field: '0',
             component: 'Input',
-            label: '第一次报价',
+            label: '报价明细',
             labelWidth:0,
             colProps: {
               span: 24,
@@ -129,10 +129,6 @@
         let { repairId } = getFieldsValue()
         console.log('20230228171427939',repairId)
         const { priceLists, count } = await getPriceList({repairId})//
-        updateSchema({
-          field:'0',
-          label:`第${count || 1}次报价`,
-        })
         addPriceItem(priceLists)
         clearInfo(true)
         setTimeout(() => {
@@ -142,10 +138,6 @@
       async function onDataReceive(data) {
 
         const { priceLists, count } = await getPriceList({repairId:data.repairId})//
-        updateSchema({
-          field:'0',
-          label:`第${count || 1}次报价`,
-        })
         addPriceItem(priceLists)
         resetFields();
         fileFlow.type = data.type
@@ -169,7 +161,7 @@
         fileFlow.priceLists = list.reverse()
         let priceSchema = [],valueObj = {},count=0
         list.map(ele => {
-          valueObj[`priceList${ele.priceListId}`] = ele.count || 1
+          valueObj[`priceList${ele.priceListId}`] = ele.count || 0
           valueObj[`priceListText${ele.priceListId}`] = `${ele.name} ${ele.price} 元/次`
           count = count + ele.count*ele.price
           priceSchema.unshift({
@@ -187,7 +179,7 @@
             label: '数量',//`${ele.type == 0?'备件':'人工'}:  ${ele.name} ${ele.price} 元/次`,
             // suffix:'数量',
             component: 'InputNumber',
-            defaultValue:ele.count || 1,
+            defaultValue:ele.count || 0,
             // labelWidth:300,
             // subLabel:"数量",
             colProps: {
@@ -294,16 +286,20 @@
                 })
               }
             }
-            await addOrUpdatePriceList({
+            let res = await addOrUpdatePriceList({
               repairId:params.repairId,
               priceLists:priceListsparams,
             })
+            console.log('res',res)
             createMessage.success(t('common.optSuccess'));
             closeModal();
             emit('update');
             loading.value = false
             clearInfo()
           },
+          onCancel: () => {
+            loading.value = false
+          }
         });
         } catch (error) {
           loading.value = false

+ 5 - 5
src/views/work/recoveryModal.vue

@@ -174,7 +174,7 @@ export default defineComponent({
         field: 'getType',
         component: 'RadioGroup',
         required: true,
-        label: '送修方式',
+        label: '取回方式',
         defaultValue:1,
         componentProps: {
           placeholder: '请填写姓名',
@@ -275,8 +275,8 @@ export default defineComponent({
       },
       {
         field: 'warrantyExpirationDate',
-        component: 'Input',
-        label: '保修界日期',
+        component: 'DatePicker',
+        label: '保修界日期',
         required: true,
         colProps: {
           span: 18,
@@ -286,7 +286,7 @@ export default defineComponent({
         },  
       },{
           field: 'testerId',
-          label: '测试工程师',
+          label: '维修工程师',
           component: 'ApiSelect',
           required: true,
           componentProps: {
@@ -296,7 +296,7 @@ export default defineComponent({
             valueField: 'id',
             immediate: true,
             params: {
-              roleType: 5,
+              roleType: 3,
             },
           },
           colProps: {

+ 3 - 3
src/views/work/takingOrdersModel.vue

@@ -98,14 +98,14 @@ export default defineComponent({
       },
       {
         field: 'warrantyExpirationDate',
-        component: 'Input',
-        label: '保修界日期',
+        component: 'DatePicker',
+        label: '保修界日期',
         required: true,
         colProps: {
           span: 18,
         },   
         componentProps: {
-          maxLength: 100,
+          // maxLength: 100,
         },  
       },{
           field: 'repairManId',