Browse Source

Merge remote-tracking branch 'origin/ecp' into ecp

纪新园 2 weeks ago
parent
commit
217fa50d24

+ 82 - 28
src/components/uploadFile/index.vue

@@ -2,8 +2,14 @@
   <div>
     <avue-crud :option="option" :data="data" id="out-table" ref="crud" @selection-change="selectionChange">
       <template slot="menuLeft">
-        <div style="display: flex;">
-          <el-upload :headers="headers" action="/api/blade-resource/oss/endpoint/put-file" :on-success="onSuccess" :on-error="onError">
+        <div style="display: flex">
+          <el-upload
+            :headers="headers"
+            action="/api/blade-resource/oss/endpoint/put-file"
+            :on-success="onSuccess"
+            :on-error="onError"
+            :before-upload="beforeUpload"
+          >
             <el-button icon="el-icon-upload" type="primary" size="mini" :disabled="disabled">点击上传</el-button>
           </el-upload>
           <!-- <el-button type="success" size="mini" :disabled="disabled" @click.stop="submit">一键保存</el-button> -->
@@ -11,30 +17,46 @@
       </template>
       <template slot="fileUrl" slot-scope="{ row, index }">
         <span v-if="row.$cellEdit" @click.stop="rowPick(row, index)">
-          <el-upload :headers="headers" action="/api/blade-resource/oss/endpoint/put-file" :on-success="rowonSuccess" :on-error="onError">
+          <el-upload
+            :headers="headers"
+            action="/api/blade-resource/oss/endpoint/put-file"
+            :on-success="rowonSuccess"
+            :on-error="onError"
+            :before-upload="beforeUpload"
+          >
             <el-input placeholder="请选择上传文件" v-model="row.fileUrl" readonly size="small"></el-input>
           </el-upload>
         </span>
-        <span v-else>
+        <span v-else style="color: #1e9fff; cursor: pointer" @click="download(row, index)">
           {{ row.fileUrl }}
         </span>
       </template>
       <template slot="menu" slot-scope="{ row, index }">
-        <el-button size="small" type="text" icon="el-icon-edit" :disabled="disabled" @click="rowEdit(row)">{{ row.$cellEdit ? "保存" : "编辑" }}</el-button>
-        <el-button size="small" type="text" icon="el-icon-delete" @click="rowDel(row, index)" :disabled="disabled">删 除 </el-button>
+        <el-button size="small" type="text" icon="el-icon-edit" :disabled="disabled" @click="rowEdit(row)">{{
+          row.$cellEdit ? "保存" : "编辑"
+        }}</el-button>
+        <el-button size="small" type="text" icon="el-icon-delete" @click="rowDel(row, index)" :disabled="disabled"
+          >删 除
+        </el-button>
       </template>
     </avue-crud>
+    <PreviewImage :visible.sync="innerVisible" :currentIndex="0" :previewImgList="[imgUrl]" />
   </div>
 </template>
 
 <script>
+// @ts-nocheck
 import { getToken } from "@/util/auth";
 import { updateListRemove, submitList } from "@/api/uploadFile/upload-file";
+import PreviewImage from "@/components/PreviewImage/index.vue";
 export default {
   name: "detailsPage",
+  components: { PreviewImage },
   data() {
     return {
-      rowIndex:null,
+      innerVisible: false,
+      imgUrl: "",
+      rowIndex: null,
       headers: { "Blade-Auth": "Bearer " + getToken() },
       option: {
         maxHeight: 340,
@@ -58,51 +80,54 @@ export default {
             label: "原始文件名",
             prop: "fileName",
             cell: true,
-            overHidden: true
+            overHidden: true,
           },
           {
             label: "文件地址",
             prop: "fileUrl",
             // cell: true,
-            overHidden: true
+            overHidden: true,
           },
           {
             label: "文件类型",
             prop: "fileType",
             // cell: true,
-            overHidden: true
+            overHidden: true,
           },
           {
             label: "备注",
             prop: "remarks",
             cell: true,
             width: 150,
-            overHidden: true
-          }
-        ]
-      }
+            overHidden: true,
+          },
+        ],
+      },
     };
   },
-  components: {},
   props: {
     data: {
       type: Array,
-      default: function() {
+      default: function () {
         return [];
-      }
+      },
     },
     linkKey: {
       type: String,
-      default: "link"
+      default: "link",
     },
     delUrl: {
       type: String,
-      default: "/gubersail-admin/bladeclaimattachment/remove"
+      default: "/gubersail-admin/bladeclaimattachment/remove",
     },
     disabled: {
       type: Boolean,
-      default: false
-    }
+      default: false,
+    },
+    isImage: {
+      type: Boolean,
+      default: false,
+    },
   },
   created() {},
   methods: {
@@ -120,10 +145,10 @@ export default {
         lock: true,
         text: "加载中",
         spinner: "el-icon-loading",
-        background: "rgba(255,255,255,0.7)"
+        background: "rgba(255,255,255,0.7)",
       });
       submitList(this.data)
-        .then(res => {
+        .then((res) => {
           this.$emit("upDate", res.data.data);
         })
         .finally(() => {
@@ -142,6 +167,24 @@ export default {
         this.$set(row, "$cellEdit", true);
       }
     },
+    // /**
+    //  * @param {{ id: any; }} row
+    //  * @param {any} index
+    //  */
+    download(row) {
+      if (row.fileUrl) {
+        const imageExtensions = [".jpg", ".jpeg", ".png", ".gif", ".bmp", ".webp"];
+        const fileExt = row.fileUrl.substring(row.fileUrl.lastIndexOf(".")).toLowerCase();
+        if (imageExtensions.includes(fileExt)) {
+          this.innerVisible = true;
+          this.imgUrl = row.fileUrl;
+        } else {
+          window.open(row.fileUrl);
+        }
+      } else {
+        this.$message.error("请上传附件");
+      }
+    },
     /**
      * @param {{ id: any; }} row
      * @param {any} index
@@ -150,10 +193,10 @@ export default {
       this.$confirm("确定将选择数据删除?", {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
-        type: "warning"
+        type: "warning",
       }).then(() => {
         if (row.id) {
-          updateListRemove(row.id, this.delUrl).then(res => {
+          updateListRemove(row.id, this.delUrl).then((res) => {
             if (res.data.success) {
               this.$message.success("操作成功!");
               this.data.splice(index, 1);
@@ -181,7 +224,7 @@ export default {
         fileName: res.data.originalName,
         fileUrl: res.data[this.linkKey],
         fileType: this.getFileExtension(res.data.originalName),
-        $cellEdit: true
+        $cellEdit: true,
       });
     },
     rowonSuccess(res, file, fileList) {
@@ -201,8 +244,19 @@ export default {
     onError(err, file, fileList) {
       console.log(err);
       this.$message.error(err);
-    }
-  }
+    },
+    beforeUpload(file) {
+      if (this.isImage) {
+        const isImage = file.type.includes("image/");
+
+        if (!isImage) {
+          this.$message.error("只能上传图片文件!");
+          return false;
+        }
+        return isImage;
+      }
+    },
+  },
 };
 </script>
 

+ 33 - 25
src/views/claimSettlement/detailsPage.vue

@@ -57,16 +57,15 @@
         <avue-form :option="optionForm" v-model="form" ref="form"> </avue-form>
       </trade-card>
       <trade-card title="文件中心">
-        <upload-file :data="form.claimAttachmentList" :disabled="editDis" @upDate="upDate"></upload-file>
+        <upload-file
+          :data="form.claimAttachmentList"
+          :disabled="editDis"
+          @upDate="upDate"
+          :isImage="true"
+        ></upload-file>
       </trade-card>
       <trade-card title="反馈表">
-        <avue-crud
-          :option="option"
-          :data="form.bladeClaimAuditList"
-          id="out-table"
-          ref="crud"
-        >
-        </avue-crud>
+        <avue-crud :option="option" :data="form.bladeClaimAuditList" id="out-table" ref="crud"> </avue-crud>
       </trade-card>
       <trade-card title="操作记录">
         <avue-form :option="optionForm2" v-model="form" ref="form2"> </avue-form>
@@ -161,16 +160,16 @@ export default {
               },
             ],
           },
-           {
+          {
             label: "规格型号",
             prop: "tyreSpecs",
           },
-           {
+          {
             label: "轮胎数量",
             prop: "tireQuantity",
-            type:'number',
-            controls:false,
-            precision:0,
+            type: "number",
+            controls: false,
+            precision: 0,
             rules: [
               {
                 required: true,
@@ -436,18 +435,26 @@ export default {
     },
     allClick(name) {
       if (name == "提交审批") {
-        this.$confirm("是否提交审批?", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        }).then(() => {
-          let obj = {
-            id: this.form.id,
-          };
-          submitApprova(obj).then((res) => {
-            this.$message.success("操作成功");
-            this.getDetail(this.form.id);
-          });
+        this.$refs.form.validate((valid, done) => {
+          done();
+          if (valid) {
+            if (this.form.claimAttachmentList.length != 4) return this.$message.error("请上传4张图片");
+            this.$confirm("是否提交审批?", "提示", {
+              confirmButtonText: "确定",
+              cancelButtonText: "取消",
+              type: "warning",
+            }).then(() => {
+              let obj = {
+                id: this.form.id,
+              };
+              submitApprova(obj).then((res) => {
+                this.$message.success("操作成功");
+                this.getDetail(this.form.id);
+              });
+            });
+          } else {
+            return false;
+          }
         });
       }
       if (name == "撤销审批") {
@@ -474,6 +481,7 @@ export default {
       this.$refs.form.validate((valid, done) => {
         done();
         if (valid) {
+          if (this.form.claimAttachmentList.length != 4) return this.$message.error("请上传4张图片");
           const loading = this.$loading({
             lock: true,
             text: "加载中",

+ 2 - 2
src/views/claimSettlement/index.vue

@@ -23,9 +23,9 @@
           <el-button size="small" icon="el-icon-edit" type="text" @click="rowEdit(row)">编辑 </el-button>
           <el-button size="small" icon="el-icon-delete" type="text" @click="rowDel(row, index)" :disabled="row.auditStatus > 0">删 除 </el-button>
         </template>
-        <template slot="contractNo" slot-scope="{ row }">
+        <template slot="claimNo" slot-scope="{ row }">
           <span style="color: #1e9fff;cursor: pointer;" @click="rowEdit(row)">
-            {{ row.contractNo }}
+            {{ row.claimNo }}
           </span>
         </template>
       </avue-crud>

+ 48 - 16
src/views/store/detailsPage.vue

@@ -43,7 +43,7 @@
         </div>
       </div>
       <trade-card title="基础资料" style="margin-top: 60px" v-loading="loadingBtn">
-        <avue-form ref="form" class="trading-form" v-model="form" :option="option">
+        <avue-form ref="form" class="trading-form" v-model="form" :option="option" :upload-after="uploadAfter">
           <template slot="corpsTypeIdLabel">
             <span style="color: #409eff; cursor: pointer" @click="corpTypeVisible = true"> 店面分类 </span>
           </template>
@@ -604,7 +604,7 @@ export default {
             dicData: [],
             dataType: "string",
             type: "cascader",
-            emitPath:false,
+            emitPath: false,
             props: {
               label: "name",
               value: "code",
@@ -761,20 +761,48 @@ export default {
     }, 100);
   },
   methods: {
+    uploadAfter(res, done, loading, column) {
+      let obj = {
+        url: res.link,
+        name: res.originalName,
+        extname: this.getFileExtension(res.originalName),
+      };
+      this.form.businessLicense = JSON.stringify(obj);
+      done();
+      this.$message.success("上传后的方法");
+    },
+    getFileExtension(filename) {
+      return filename.slice(((filename.lastIndexOf(".") - 1) >>> 0) + 2);
+    },
     allClick(name) {
       if (name == "提交审批") {
-        this.$confirm("是否提交审批?", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        }).then(() => {
-          let obj = {
-            id: this.form.id,
-          };
-          submitApply(obj).then((res) => {
-            this.$message.success("操作成功");
-            this.getDetail(this.form.id);
-          });
+        this.$refs.form.validate((valid, done) => {
+          done();
+          if (valid) {
+            if (this.contactsData.length == 0) return this.$message.error("请添加客户联系人");
+            if (this.data.length == 0) return this.$message.error("请添加地址信息");
+            if (this.corpsFiles.length == 0) return this.$message.error("请添加门店照片");
+            if (this.corpsFiles.filter((item) => item.mainImage == 1).length > 1)
+              return this.$message.error("门店照片主图只允许选一个");
+            if (this.corpsFiles.filter((item) => item.mainImage == 1).length == 0) {
+              this.corpsFiles[0].mainImage = 1;
+            }
+            this.$confirm("是否提交审批?", "提示", {
+              confirmButtonText: "确定",
+              cancelButtonText: "取消",
+              type: "warning",
+            }).then(() => {
+              let obj = {
+                id: this.form.id,
+              };
+              submitApply(obj).then((res) => {
+                this.$message.success("操作成功");
+                this.getDetail(this.form.id);
+              });
+            });
+          } else {
+            return false;
+          }
         });
       }
       if (name == "审批") {
@@ -834,8 +862,8 @@ export default {
           this.form.deliveryWarehouseName = null;
         }
       }
-      if(name=='label'){
-        this.form.label=row.names
+      if (name == "label") {
+        this.form.label = row.names;
       }
     },
     // 启用或禁用
@@ -1011,8 +1039,12 @@ export default {
         if (valid) {
           if (this.contactsData.length == 0) return this.$message.error("请添加客户联系人");
           if (this.data.length == 0) return this.$message.error("请添加地址信息");
+          if (this.corpsFiles.length == 0) return this.$message.error("请添加门店照片");
           if (this.corpsFiles.filter((item) => item.mainImage == 1).length > 1)
             return this.$message.error("附件主图只允许选一个");
+          if (this.corpsFiles.filter((item) => item.mainImage == 1).length == 0) {
+            this.corpsFiles[0].mainImage = 1;
+          }
           this.loadingBtn = true;
           submit({
             ...this.form,