浏览代码

修改问题

tangning 5 月之前
父节点
当前提交
ece61a9a82
共有 4 个文件被更改,包括 55 次插入14 次删除
  1. 4 0
      src/utils/is.ts
  2. 18 9
      src/views/work/detail.vue
  3. 24 5
      src/views/work/recoveryModal.vue
  4. 9 0
      src/views/work/takingOrdersModel.vue

+ 4 - 0
src/utils/is.ts

@@ -97,3 +97,7 @@ export function isUrl(path: string): boolean {
     /(((^https?:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(?::\d+)?|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)$/;
   return reg.test(path);
 }
+export function isImg(path: string): boolean {
+  const regex = /\.(jpg|jpeg|png|gif|bmp|svg)(\?.*)?$/i;
+  return regex.test(path);
+}

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

@@ -72,15 +72,14 @@
                   <p class="htmlText" :title="detailData.repairerVo.faultMsg">{{
                     detailData.repairerVo.faultMsg
                   }}</p>
-                  <PreviewGroup>
-                    <Image
-                      :width="80"
-                      :height="80"
-                      v-for="item in detailData.repairerVo.faultImg"
-                      :key="item"
-                      :src="item"
-                    />
-                  </PreviewGroup>
+                  <div class="flex justify-center items-center cursor-pointer">
+                    <PreviewGroup>
+                      <div class="inline-block" v-for="item in detailData.repairerVo.faultImg" :key="item">
+                        <Image v-if="isImg(item)" :src="item" :width="80" :height="80" />
+                        <FileZipOutlined @click="handleItemDowm(item)" :style="{fontSize: '22px', color: '#08c'}" v-else />
+                      </div>
+                    </PreviewGroup>
+                  </div>
                 </div>
               </DescriptionsItem>
               <DescriptionsItem label="机器外观">
@@ -367,10 +366,14 @@
   import { usePermissionStore } from '/@/store/modules/permission';
   import { BasicTable, useTable, BasicColumn } from '/@/components/Table';
   import { Timeline, TimelineItem, Descriptions, Image } from 'ant-design-vue';
+  import { FileZipOutlined } from '@ant-design/icons-vue';
+  import { isImg } from '/@/utils/is';
+
   export default defineComponent({
     name: 'Detail',
     components: {
       Image,
+      FileZipOutlined,
       BasicTable,
       quoteModel,
       deliveryModal,
@@ -629,6 +632,10 @@
       function reload() {
         getData();
       }
+      function handleItemDowm(item) {
+        window.open(item);
+      }
+
       function dowmFile(type) {
         let name = type == 0 ? '报价单' : '维修工单';
         createConfirm({
@@ -703,6 +710,8 @@
         print,
         printInfo,
         registerMaintenanceRemarks,
+        isImg,
+        handleItemDowm,
       };
     },
   });

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

@@ -105,6 +105,9 @@
           component: 'ApiSelect',
           required: true,
           label: '维修类型',
+          itemProps: {
+            autoLink: false,
+          },
           componentProps: {
             maxLength: 50,
             width: '100%',
@@ -125,14 +128,18 @@
           component: 'ApiCascader',
           required: true,
           label: '维修物品',
+          itemProps: {
+            autoLink: false,
+          },
           componentProps: ({ formModel }) => {
             return {
               placeholder: '请选择维修物品',
               api: async function () {
-                return await faultTree('V2');
+                // return await faultTree('V2');
+                return await treeItem('repair-item');
               },
-              labelField: 'faultMsg',
-              valueField: 'faultId',
+              labelField: 'name',
+              valueField: 'id',
               immediate: true,
               multiple: true,
               isLeaf: (val) => {
@@ -184,8 +191,20 @@
             api: uploadApi,
             // fileFlow:true,
             maxNumber: 6,
-            maxSize: 5,
-            accept: ['jpeg', 'jpg', 'png'],
+            maxSize: 50,
+            accept: [
+              'jpeg',
+              'jpg',
+              'png',
+              'mp4',
+              'rar',
+              'zip',
+              'pdf',
+              'doc',
+              'xls',
+              'xlsx',
+              'docx',
+            ],
           },
           colProps: {
             span: 12,

+ 9 - 0
src/views/work/takingOrdersModel.vue

@@ -147,6 +147,9 @@
           label: '维修工程师',
           component: 'ApiSelect',
           required: true,
+          itemProps: {
+            autoLink: false,
+          },
           componentProps: {
             api: getByRoleType,
             numberToString: true,
@@ -166,6 +169,9 @@
           label: '供应链管理员',
           component: 'ApiSelect',
           required: true,
+          itemProps: {
+            autoLink: false,
+          },
           componentProps: {
             api: getByRoleType,
             numberToString: true,
@@ -185,6 +191,9 @@
           label: '测试工程师',
           component: 'ApiSelect',
           required: true,
+          itemProps: {
+            autoLink: false,
+          },
           componentProps: {
             api: getByRoleType,
             numberToString: true,