From d387848d15a40fb16c8a6eefb007d5f7411c5dbc Mon Sep 17 00:00:00 2001
From: ZhangXianQiang <1135831638@qq.com>
Date: 星期日, 28 四月 2024 13:32:27 +0800
Subject: [PATCH] fix:修改图片浏览组件

---
 src/views/system/score/default/index.vue |  295 +++++++++++++++++++++++++++--------------------------------
 1 files changed, 135 insertions(+), 160 deletions(-)

diff --git a/src/views/system/score/default/index.vue b/src/views/system/score/default/index.vue
index 7edbf72..538e637 100644
--- a/src/views/system/score/default/index.vue
+++ b/src/views/system/score/default/index.vue
@@ -3,36 +3,18 @@
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
       <el-form-item label="杩愮淮鑰冩牳鍗曚綅" prop="belongUnit">
         <el-select v-model="queryParams.unitId" @change="handleQuery" clearable placeholder="杩愮淮鑰冩牳鍗曚綅">
-          <el-option
-            v-for="item in unitList"
-            :key="item.id"
-            :label="item.value"
-            :value="item.id">
+          <el-option v-for="item in unitList" :key="item.id" :label="item.value" :value="item.id">
           </el-option>
         </el-select>
       </el-form-item>
       <el-form-item label="瀹℃牳鏃堕棿">
-        <el-date-picker
-          v-model="daterangeAuditingTime"
-          style="width: 240px"
-          value-format="yyyy-MM-dd HH:mm:ss"
-          type="daterange"
-          range-separator="-"
-          start-placeholder="寮�濮嬫棩鏈�"
-          end-placeholder="缁撴潫鏃ユ湡"
-        ></el-date-picker>
+        <el-date-picker v-model="daterangeAuditingTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss"
+          type="daterange" range-separator="-" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡"></el-date-picker>
       </el-form-item>
 
       <el-form-item label="鍒涘缓鏃堕棿">
-        <el-date-picker
-          v-model="daterangeCreateTime"
-          style="width: 240px"
-          value-format="yyyy-MM-dd HH:mm:ss"
-          type="daterange"
-          range-separator="-"
-          start-placeholder="寮�濮嬫棩鏈�"
-          end-placeholder="缁撴潫鏃ユ湡"
-        ></el-date-picker>
+        <el-date-picker v-model="daterangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss"
+          type="daterange" range-separator="-" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡"></el-date-picker>
       </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button>
@@ -42,119 +24,76 @@
 
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-           v-hasPermi="['system:template:add']"
-        >鏂板</el-button>
+        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
+          v-hasPermi="['platform:score:add']">鏂板</el-button>
       </el-col>
       <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-           v-hasPermi="['system:template:edit']"
-        >淇敼</el-button>
+        <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
+          v-hasPermi="['platform:score:edit']">淇敼</el-button>
       </el-col>
       <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-           v-hasPermi="['system:template:remove']"
-        >鍒犻櫎</el-button>
+        <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
+          v-hasPermi="['platform:score:remove']">鍒犻櫎</el-button>
       </el-col>
       <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['system:template:export']"
-        >瀵煎嚭</el-button>
+        <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
+          v-hasPermi="['platform:score:export']">瀵煎嚭</el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="auditingList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="杩愮淮鑰冩牳鍗曚綅" align="center" prop="unitName" width="180"/>
-      <el-table-column label="鑰冩牳鍚�" align="center" prop="checkPublishId" width="180">
+      <el-table-column label="鑰冩牳鍗曚綅" align="center" prop="unitName" width="180" />
+      <el-table-column label="鑰冩牳鍚堝悓" align="center" prop="contractName" width="180" />
+      <el-table-column label="鑰冩牳瑙勫垯" align="center" prop="ruleName" width="120" :show-overflow-tooltip="true" />
+      <el-table-column label="鑰冩牳鎸囨爣" align="center" prop="num" width="120" />
+      <el-table-column label="鑰冩牳鎵e垎" align="center" prop="score" width="120" />
+      <el-table-column label="鍒涘缓浜�" align="center" prop="createUser" />
+      <el-table-column label="瀹℃牳鐘舵��" align="center" prop="auditingStatus">
         <template slot-scope="scope">
-          <div v-if="scope.row.checkPublishId === 5">瑙嗛鑰冩牳</div>
+          <el-tag
+            :type="scope.row.auditingStatus === '閫氳繃' ? 'success' : scope.row.auditingStatus === '鏈�氳繃' ? 'danger' : 'primary'"
+            disable-transitions>{{ scope.row.auditingStatus }}</el-tag>
         </template>
       </el-table-column>
-      <el-table-column label="杩愮淮鑰冩牳瑙勫垯" align="center" prop="defaultRuleName" width="180" />
-      <el-table-column label="杩愮淮鑰冩牳鎵e垎" align="center" prop="score" width="120" />
-      <el-table-column label="鍒涘缓浜�" align="center" prop="createBy" />
-      <el-table-column label="瀹℃牳浜�" align="center" prop="auditingUserName" />
-      <el-table-column label="瀹℃牳鐘舵��" align="center" prop="auditingStatus" />
-      <el-table-column label="瀹℃牳璇存槑" align="center" prop="remark" width="180"/>
-      <el-table-column label="瀹℃牳鏃堕棿" align="center" prop="auditingTime" width="180"/>
-      <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime" width="180"/>
+      <el-table-column label="瀹℃牳浜�" align="center" prop="auditingUser" />
       <el-table-column label="鎿嶄綔" align="center" fixed="right" class-name="small-padding fixed-width">
         <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-s-check"
-            @click="handleAuditing(scope.row)"
-            v-hasPermi="['default:audit']"
-          >瀹℃牳</el-button>
-<!--          <el-button-->
-<!--            size="mini"-->
-<!--            type="text"-->
-<!--            icon="el-icon-edit"-->
-<!--            @click="handleUpdate(scope.row)"-->
-<!--            v-hasPermi="['system:auditing:edit']"-->
-<!--          >淇敼</el-button>-->
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-          >鍒犻櫎</el-button>
+          <el-button size="mini" type="text" icon="el-icon-s-check" @click="handleAuditing(scope.row)"
+            v-hasPermi="['default:audit']" v-if="scope.row.auditingStatus === '寰呭鏍�'">瀹℃牳</el-button>
+          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
+            v-if="scope.row.auditingStatus === '寰呭鏍�'" v-hasPermi="['system:auditing:edit']">淇敼</el-button>
+          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)">鍒犻櫎</el-button>
         </template>
       </el-table-column>
     </el-table>
 
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-    />
+    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
+      @pagination="getList" />
 
     <!-- 瀹℃牳 -->
     <el-dialog title="杩愮淮鑰冩牳瀹℃牳" :visible.sync="auditingOpen" width="500px" append-to-body>
       <el-form ref="auditingForm" :model="auditingForm" :rules="auditingRules" label-width="120px">
         <el-form-item label="杩愮淮鑰冩牳鍗曚綅">
-          <el-input v-model="auditingForm.unitName" disabled/>
+          <el-input v-model="auditingForm.unitName" disabled />
         </el-form-item>
 
         <el-form-item label="杩愮淮鑰冩牳瑙勫垯">
-          <el-input v-model="auditingForm.defaultRuleName" disabled/>
+          <el-input v-model="auditingForm.ruleName" type="textarea" autosize disabled />
+        </el-form-item>
+        <el-form-item label="杩愮淮鑰冩牳鎸囨爣">
+          <el-input v-model="auditingForm.num" disabled />
         </el-form-item>
         <el-form-item label="杩愮淮鑰冩牳鎵e垎">
-          <el-input v-model="auditingForm.score" disabled/>
+          <el-input v-model="auditingForm.score" disabled />
         </el-form-item>
         <el-form-item label="瀹℃牳缁撴灉" prop="auditingStatus">
-          <el-radio v-model="auditingForm.auditingResult" label="pass">閫氳繃</el-radio>
-          <el-radio v-model="auditingForm.auditingResult" label="return">椹冲洖</el-radio>
+          <el-radio v-model="auditingForm.auditingStatus" label="閫氳繃">閫氳繃</el-radio>
+          <el-radio v-model="auditingForm.auditingStatus" label="鏈�氳繃">椹冲洖</el-radio>
         </el-form-item>
         <el-form-item label="瀹℃牳璇存槑" prop="remark">
-          <el-input v-model="auditingForm.remark" type="textarea" show-word-limit maxlength="100"/>
+          <el-input v-model="auditingForm.remark" type="textarea" show-word-limit maxlength="100" />
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -164,37 +103,25 @@
     </el-dialog>
 
     <!-- 鏂板鎴栦慨鏀� -->
-    <el-dialog title="杩愮淮绉垎瀹℃牳" :visible.sync="open" width="700px" append-to-body>
-      <el-form ref="auditingForm" :model="auditingForm" :rules="auditingRules" label-width="120px">
+    <el-dialog :title="title" :visible.sync="open" width="700px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
         <el-form-item label="杩愮淮鑰冩牳鍗曚綅" prop="unitId">
           <el-select v-model="form.unitId" placeholder="杩愮淮鑰冩牳鍗曚綅" @change="handleChangeUnit">
-            <el-option
-            v-for="item in unitList"
-            :key="item.id"
-            :label="item.value"
-            :value="item.id">
-          </el-option>
+            <el-option v-for="item in unitList" :key="item.id" :label="item.value" :value="item.id">
+            </el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="杩愮淮鑰冩牳瑙勫垯" prop="tempRuleFormList">
+        <el-form-item label="杩愮淮鑰冩牳瑙勫垯" prop="ruleIdsArray">
           <div class="row-warp">
             <div class="row">
               <div class="row-left">
                 <div class="block">
                   <span class="demonstration"></span>
-                  <el-cascader
-                    ref="cascader"
-                    v-model="value"
-                    :options="options"
-                    @change="handleChange">
+                  <el-cascader ref="cascader" v-model="form.ruleIdsArray" :options="options" @change="handleChange">
                     <template slot-scope="{ data }">
-                      <el-tooltip
-                        class="item"
-                        :disabled="data.label.length < 16 && !data.deductCategory"
-                        effect="dark"
+                      <el-tooltip class="item" :disabled="data.label.length < 16 && !data.deductCategory" effect="dark"
                         :content="data.label.length < 16 ? data.deductCategory ? data.deductCategory + ' ' + data.calcFraction + (data.calcUnit ? '/' + data.calcUnit : '') : '' : (data.deductCategory ? data.label + ' ' + data.deductCategory + ' ' + data.calcFraction + (data.calcUnit ? '/' + data.calcUnit : '') : data.label)"
-                        placement="left"
-                      >
+                        placement="left">
                         <span>{{ data.label }}</span>
                       </el-tooltip>
                     </template>
@@ -204,18 +131,18 @@
               <div class="row-right" v-if="needNum">
                 <div>鎸囨爣</div>
                 <div class="margin-5">
-                  <el-input type="number" placeholder="璇疯緭鍏�" v-model="form.num" @change="handleChangeNum"/>
+                  <el-input placeholder="璇疯緭鍏�" v-model="form.num" @input="handleChangeNum" />
                 </div>
               </div>
             </div>
           </div>
         </el-form-item>
-        <el-form-item label="杩愮淮鑰冩牳鎵e垎"  style="width: 51%">
-          <el-input type="number" v-model="form.score"></el-input>
+        <el-form-item label="杩愮淮鑰冩牳鎵e垎" style="width: 51%" prop="score">
+          <el-input v-model="form.score"></el-input>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="submitAuditing">纭� 瀹�</el-button>
+        <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
         <el-button @click="cancel">鍙� 娑�</el-button>
       </div>
     </el-dialog>
@@ -223,9 +150,9 @@
 </template>
 
 <script>
-import { listAuditing, getAuditing, delAuditing, addAuditing, updateAuditing,auditing } from "@/api/platform/contract-score";
+import { listAuditing, getAuditing, delAuditing, addAuditing, updateAuditing, auditing } from "@/api/platform/contract-score";
 import { unitSelect } from "@/api/platform/unit";
-import { getRuleListByUnitId } from "@/api/platform/calculate-rule";
+import { getRuleListByUnitId, getRule } from "@/api/platform/calculate-rule";
 
 export default {
   name: "Auditing",
@@ -238,13 +165,9 @@
       unitList: [],
       // 鑰冩牳妯℃澘
       examineList: [
-        {id:1 , value:"杞﹁締鑰冩牳"},
-        {id:2 , value:"瑙嗛鑰冩牳"}
+        { id: 1, value: "杞﹁締鑰冩牳" },
+        { id: 2, value: "瑙嗛鑰冩牳" }
       ],
-      // 涓存椂瑙勫垯琛ㄥ崟
-      tempRuleForm: {},
-      // 涓存椂瑙勫垯琛ㄥ崟鍒楄〃
-      tempRuleFormList: [{"ruleId": null, "adjustCoefficient": null}],
       // 閬僵灞�
       loading: true,
       // 閫変腑鏁扮粍
@@ -272,20 +195,45 @@
       queryParams: {
         pageNum: 1,
         pageSize: 10,
-        defaultId: null,
+        unitId: null,
         auditingStatus: null,
         auditingTime: null,
         auditingUser: null,
         createTime: null,
       },
       // 琛ㄥ崟鍙傛暟
-      form: {},
+      form: {
+        score: '',
+        temp: ''
+      },
       // 琛ㄥ崟鏍¢獙
       auditingRules: {
         auditingStatus: [
-          { required: true, message: "璇峰厛瀹屾垚瀹℃牳缁撴灉", trigger: "blur" }
+          { required: true, message: "璇峰厛瀹屾垚瀹℃牳缁撴灉", trigger: "blur", },
+          {
+            validator: (rule, value, callback) => {
+              if (value === '寰呭鏍�') {
+                callback(new Error("璇峰厛瀹屾垚瀹℃牳缁撴灉"));
+              } else {
+                callback();
+              }
+            },
+            trigger: 'blur'
+          }
         ],
-      }
+      },
+      rules: {
+        unitId: [
+          { required: true, message: "璇烽�夋嫨杩愮淮鑰冩牳鍗曚綅", trigger: "blur" }
+        ],
+        ruleIdsArray: [
+          { required: true, message: "璇烽�夋嫨杩愮淮鑰冩牳瑙勫垯", trigger: "blur" }
+        ],
+        score: [
+          { required: true, message: "鍒嗘暟涓嶈兘涓虹┖", trigger: "blur" }
+        ]
+      },
+      calcObj: {}
     };
   },
   created() {
@@ -293,31 +241,46 @@
     this.getUnitSelect();
   },
   methods: {
+    /**
+     * 閫夋嫨瑙勫垯
+     */
     handleChange() {
       let item = this.$refs['cascader'].getCheckedNodes()[0].data;
-      console.log("item", item);
+      this.calcObj = item;
+      this.form.contractId = item.contractId;
       if (item.deductCategory == "鎵f寚瀹氬垎鏁�") {
         this.needNum = false;
         this.form.score = item.calcFraction;
       } else {
         this.needNum = true;
-        this.form.score = null;
+        this.form.score = '';
+      }
+      if (this.form.num != null && this.needNum) {
+        this.handleChangeNum();
       }
     },
+    /**
+     * 杈撳叆鎸囨爣
+     */
     handleChangeNum() {
-      // 绠楀垎
+      if (this.calcObj.deductCategory == "鍒嗘暟涔樹互鏁伴噺") {
+        this.form.score = Math.floor(this.calcObj.calcFraction * this.form.num * 100) / 100;
+      } else if (this.calcObj.deductCategory == "闄や互鏁伴噺鍚庝箻浠ュ垎鏁�") {
+        this.form.score = Math.floor(Math.ceil(this.form.num / this.calcObj.calcUnit) * this.calcObj.calcFraction * 100) / 100;
+      }
     },
+
     handleChangeUnit(value) {
       getRuleListByUnitId(value).then((res) => {
         this.options = this.getTreeData(res.data);
       })
     },
-    getTreeData(data){
-      for(var i=0;i<data.length;i++){
-        if(data[i].children.length<1){
+    getTreeData(data) {
+      for (var i = 0; i < data.length; i++) {
+        if (data[i].children.length < 1) {
           // children鑻ヤ负绌烘暟缁勶紝鍒欏皢children璁句负undefined
-          data[i].children=undefined;
-        }else {
+          data[i].children = undefined;
+        } else {
           // children鑻ヤ笉涓虹┖鏁扮粍锛屽垯缁х画 閫掑綊璋冪敤 鏈柟娉�
           this.getTreeData(data[i].children);
         }
@@ -343,8 +306,7 @@
     // 鎵撳紑瀹℃牳
     handleAuditing(row) {
       this.auditingOpen = true;
-      this.auditingForm = row;
-      this.auditingForm.auditingStatus = this.auditingForm.auditingStatus ? this.auditingForm.auditingStatus : null
+      this.auditingForm = { ...row };
     },
     // 鍏抽棴瀹℃牳
     closeAuditing() {
@@ -370,8 +332,9 @@
         this.queryParams["createStartTime"] = this.daterangeCreateTime[0];
         this.queryParams["createEndTime"] = this.daterangeCreateTime[1];
       }
+      console.log("this.queryParams", this.queryParams)
       listAuditing(this.queryParams).then(response => {
-        this.auditingList = response.data;
+        this.auditingList = response.rows;
         this.total = response.total;
         this.loading = false;
       });
@@ -386,20 +349,16 @@
     reset() {
       this.form = {
         id: null,
-        defaultId: null,
         auditingStatus: null,
         remark: null,
         auditingTime: null,
         auditingUser: null,
-        createTime: null,
-        updateTime: null,
-        deleted: null
+        score: ''
       };
       this.resetForm("form");
     },
     /** 鎼滅储鎸夐挳鎿嶄綔 */
     handleQuery() {
-      this.queryParams.pageNum = 1;
       this.getList();
     },
     /** 閲嶇疆鎸夐挳鎿嶄綔 */
@@ -412,7 +371,7 @@
     // 澶氶�夋閫変腑鏁版嵁
     handleSelectionChange(selection) {
       this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
+      this.single = selection.length !== 1
       this.multiple = !selection.length
     },
     /** 鏂板鎸夐挳鎿嶄綔 */
@@ -425,14 +384,26 @@
     handleUpdate(row) {
       this.reset();
       const id = row.id || this.ids
+      if (row.auditingStatus != '寰呭鏍�') {
+        this.$message.warning("璇ヨ褰曞凡瀹℃牳锛屼笉鑳戒慨鏀�");
+        return;
+      }
       getAuditing(id).then(response => {
-        this.form = response.data;
+        this.form = { ...response.data };
         this.open = true;
-        this.title = "淇敼杩愮淮鑰冩牳瀹℃牳";
+        this.title = "淇敼杩愮淮鑰冩牳绉垎";
+        this.handleChangeUnit(this.form.unitId);
+        getRule(this.form.ruleId).then(res => {
+          this.calcObj = res.data;
+          if (this.calcObj.deductCategory != "鎵f寚瀹氬垎鏁�") {
+            this.needNum = true;
+          }
+        })
       });
     },
     /** 鎻愪氦鎸夐挳 */
     submitForm() {
+      this.form.ruleId = this.calcObj.id;
       this.$refs["form"].validate(valid => {
         if (valid) {
           if (this.form.id != null) {
@@ -454,18 +425,18 @@
     /** 鍒犻櫎鎸夐挳鎿嶄綔 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.$modal.confirm('鏄惁纭鍒犻櫎杩愮淮鑰冩牳瀹℃牳缂栧彿涓�"' + ids + '"鐨勬暟鎹」锛�').then(function() {
+      this.$modal.confirm('鏄惁纭鍒犻櫎杩愮淮鑰冩牳瀹℃牳缂栧彿涓�"' + ids + '"鐨勬暟鎹」锛�').then(function () {
         return delAuditing(ids);
       }).then(() => {
         this.getList();
         this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
-      }).catch(() => {});
+      }).catch(() => { });
     },
     /** 瀵煎嚭鎸夐挳鎿嶄綔 */
     handleExport() {
-      this.download('/default-auditing/export', {
+      this.download('/contract/score/export', {
         ...this.queryParams
-      }, `auditing_${new Date().getTime()}.xlsx`)
+      }, `鍚堝悓鑰冩牳绉垎_${new Date().getTime()}.xlsx`)
     }
   }
 };
@@ -474,10 +445,12 @@
 .margin-5 {
   margin-left: 5px;
 }
+
 .row-warp {
   display: flex;
   flex-direction: column;
 }
+
 .row {
   display: flex;
   flex-direction: row;
@@ -485,11 +458,13 @@
   justify-content: center;
   margin: 5px 0;
 }
+
 .row-left {
   flex: 1;
   display: flex;
   flex-direction: row;
 }
+
 .row-right {
   flex: 1;
   display: flex;

--
Gitblit v1.8.0