From 4fa44f71fbb58abf9256f8bd872b8e0890f49f9c Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期三, 24 四月 2024 18:08:59 +0800
Subject: [PATCH] 合同规则分三层、合同积分新增

---
 src/views/system/contract/index.vue      |    5 +
 src/api/platform/calculate-rule.js       |    8 ++
 src/views/system/score/default/index.vue |  119 +++++++++++++++++++++------------------
 3 files changed, 76 insertions(+), 56 deletions(-)

diff --git a/src/api/platform/calculate-rule.js b/src/api/platform/calculate-rule.js
index fd72c18..0979320 100644
--- a/src/api/platform/calculate-rule.js
+++ b/src/api/platform/calculate-rule.js
@@ -17,6 +17,14 @@
   })
 }
 
+// 鏍规嵁杩愮淮鍗曚綅鏌ヨ杩濈害瑙勫垯鍒楄〃
+export function getRuleListByUnitId(data) {
+  return request({
+    url: '/calculate/rule/getRuleListByUnitId?unitId=' + data,
+    method: 'get'
+  })
+}
+
 // 鏌ヨ杩濈害瑙勫垯璇︾粏
 export function getRule(id) {
   return request({
diff --git a/src/views/system/contract/index.vue b/src/views/system/contract/index.vue
index f04da84..0521346 100644
--- a/src/views/system/contract/index.vue
+++ b/src/views/system/contract/index.vue
@@ -34,8 +34,8 @@
           <el-collapse-item  v-for="(item, index) in ruleData" :key="index" :title="item.ruleName" :name="index">
             <div class="inline-input-container" v-for="(item, index) in item.children" :key="index">
               <b>{{ item.ruleDesc }}</b> <br v-if="item.ruleDesc"/>
-              <el-tooltip class="item" effect="dark" :content="item.deductCategory + ' ' + item.calcFraction + (item.calcUnit ? '/' + item.calcUnit : '')" placement="top">
-                <span>{{ item.ruleCondition }}</span>
+              <el-tooltip class="item" v-for="(item, index) in item.children" :key="index" effect="dark" :content="item.deductCategory + ' ' + item.calcFraction + (item.calcUnit ? '/' + item.calcUnit : '')" placement="top">
+                <span>{{ item.ruleCondition }}<br/></span>
                 <!-- {{ item.deductCategory }} {{ item.calcFraction }}{{ item.calcUnit ? "/" + item.calcUnit : ''  }} -->
             </el-tooltip>
             </div>
@@ -179,6 +179,7 @@
   methods: {
     submitForm() {
       updateContract(this.form).then(response => {
+        this.detail = false;
         if (response.code != 200) {
           this.$message.error("鎿嶄綔澶辫触");
         } else {
diff --git a/src/views/system/score/default/index.vue b/src/views/system/score/default/index.vue
index 126fd5e..7edbf72 100644
--- a/src/views/system/score/default/index.vue
+++ b/src/views/system/score/default/index.vue
@@ -164,59 +164,54 @@
     </el-dialog>
 
     <!-- 鏂板鎴栦慨鏀� -->
-    <el-dialog title="杩愮淮绉垎瀹℃牳" :visible.sync="open" width="700px"append-to-body>
+    <el-dialog title="杩愮淮绉垎瀹℃牳" :visible.sync="open" width="700px" append-to-body>
       <el-form ref="auditingForm" :model="auditingForm" :rules="auditingRules" label-width="120px">
-        <el-form-item label="杩愮淮鑰冩牳鍗曚綅" prop="unitName">
-          <el-select v-model="form.unitNameList" placeholder="杩愮淮鑰冩牳鍗曚綅">
+        <el-form-item label="杩愮淮鑰冩牳鍗曚綅" prop="unitId">
+          <el-select v-model="form.unitId" placeholder="杩愮淮鑰冩牳鍗曚綅" @change="handleChangeUnit">
             <el-option
-              v-for="item in unitNameList"
-              :key="item.id"
-              :label="item.value"
-              :value="item.id">
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="鑰冩牳鍚�" prop="examineId">
-          <el-select v-model="form.examineId" placeholder="鑰冩牳鍚�" >
-            <el-option
-              v-for="item in examineList"
-              :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="杩愮淮鑰冩牳瑙勫垯" prop="tempRuleFormList">
           <div class="row-warp">
-            <div class="row" v-for="(form) in tempRuleFormList">
+            <div class="row">
               <div class="row-left">
-                <div>瑙勫垯</div>
                 <div class="block">
                   <span class="demonstration"></span>
                   <el-cascader
+                    ref="cascader"
                     v-model="value"
                     :options="options"
-                    :props = "props"
-                    @change="handleChange"></el-cascader>
+                    @change="handleChange">
+                    <template slot-scope="{ data }">
+                      <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"
+                      >
+                        <span>{{ data.label }}</span>
+                      </el-tooltip>
+                    </template>
+                  </el-cascader>
                 </div>
               </div>
-              <div class="row-right">
+              <div class="row-right" v-if="needNum">
                 <div>鎸囨爣</div>
                 <div class="margin-5">
-                  <el-input type="number" v-model="form.weight"/>
+                  <el-input type="number" placeholder="璇疯緭鍏�" v-model="form.num" @change="handleChangeNum"/>
                 </div>
               </div>
-              <div class="item-op">
-                <el-button @click="removeRule(form)" type="danger" icon="el-icon-delete" circle></el-button>
-              </div>
-            </div>
-            <div style="margin-top: 25px">
-              <el-button type="success" @click="nextAdd" size="mini" plain>娣诲姞</el-button>
             </div>
           </div>
         </el-form-item>
-        <el-form-item label="杩愮淮鑰冩牳鎵e垎"  style="width: 20%">
-          <el-input v-model="auditingForm.score"></el-input>
+        <el-form-item label="杩愮淮鑰冩牳鎵e垎"  style="width: 51%">
+          <el-input type="number" v-model="form.score"></el-input>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -230,33 +225,17 @@
 <script>
 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";
 
 export default {
   name: "Auditing",
   data() {
     return {
-      options: [{
-        value: 'city',
-        label: '鍓嶇鎰熺煡婧愭不鐞嗗伐浣�',
-        children: [{
-          value: 'fushun',
-          label: '鏃堕挓鍚屾',
-        }, {
-          value: 'rong',
-          label: 'OSD鏍囪瘑鏈慨澶�',
-        }, {
-          value: 'rong',
-          label: '涓�鏈轰竴妗d笉鍚堟牸',
-        }
-        ]
-      },
-      ],
+      needNum: false,
+      options: [],
       auditingOpen: false,
       auditingForm: {},
       unitList: [],
-      unitNameList: [
-        {id:2 , value:"鎴愰兘x杩愮淮"}
-        ],
       // 鑰冩牳妯℃澘
       examineList: [
         {id:1 , value:"杞﹁締鑰冩牳"},
@@ -314,8 +293,36 @@
     this.getUnitSelect();
   },
   methods: {
-    handleChange(value) {
-      console.log(value);
+    handleChange() {
+      let item = this.$refs['cascader'].getCheckedNodes()[0].data;
+      console.log("item", item);
+      if (item.deductCategory == "鎵f寚瀹氬垎鏁�") {
+        this.needNum = false;
+        this.form.score = item.calcFraction;
+      } else {
+        this.needNum = true;
+        this.form.score = null;
+      }
+    },
+    handleChangeNum() {
+      // 绠楀垎
+    },
+    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){
+          // children鑻ヤ负绌烘暟缁勶紝鍒欏皢children璁句负undefined
+          data[i].children=undefined;
+        }else {
+          // children鑻ヤ笉涓虹┖鏁扮粍锛屽垯缁х画 閫掑綊璋冪敤 鏈柟娉�
+          this.getTreeData(data[i].children);
+        }
+      }
+      return data;
     },
     // 鎻愪氦瀹℃牳
     submitAuditing() {
@@ -489,4 +496,8 @@
   flex-direction: row;
 }
 </style>
-
+<style>
+.el-cascader-node {
+  max-width: 300px;
+}
+</style>
\ No newline at end of file

--
Gitblit v1.8.0