Browse Source

1、应收表增加孤儿单状态查询
2、增加当页数据合计

@dongkboy 2 years ago
parent
commit
6f985f5e31

+ 5 - 0
package-lock.json

@@ -1595,6 +1595,11 @@
       "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
       "dev": true
     },
+    "bignumber.js": {
+      "version": "9.1.2",
+      "resolved": "https://registry.npmmirror.com/bignumber.js/-/bignumber.js-9.1.2.tgz",
+      "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug=="
+    },
     "binary-extensions": {
       "version": "1.11.0",
       "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz",

+ 1 - 0
package.json

@@ -18,6 +18,7 @@
     "@ztree/ztree_v3": "^3.5.46",
     "axios": "^0.18.1",
     "base-64": "^1.0.0",
+    "bignumber.js": "^9.1.2",
     "cross-env": "^7.0.3",
     "echarts": "^4.9.0",
     "element-china-area-data": "^6.1.0",

+ 17 - 0
src/http/moudules/insCompany.js

@@ -309,4 +309,21 @@ export const getPtlInsAttributionTemplate = (data) => {
     })
 }
 /** 归属模版模块 */
+//协议产品费用查询
+export const productCostQuery = (agreementId) => {
+  return axios({
+      url: '/plt/agreement/getProduct?agreementId='+agreementId,
+      method: "get",
+  })
+}
+//协议产品费用添加
+export const productCostSave = (data) => {
+  return axios({
+      url: '/plt/agreement/productSave',
+      method: "post",
+      data
+  })
+}
+
+
 

+ 179 - 9
src/views/AgreementManage/CarInsurance/AgreementEntry.vue

@@ -48,7 +48,6 @@
           </el-form>
           <el-table :size="overSize" :data="pageResult" height="690" border v-loading="loading" highlight-current-row
             stripe :header-cell-style="{ background: '#F2F7FC', fontWeight: '700', color: '#606266' }">
-
             <el-table-column prop="id" label="编号" width="130" align="center"></el-table-column>
             <el-table-column prop="agreementCode" label="协议代码" width="110" align="center"></el-table-column>
             <el-table-column prop="agreementName" label="协议名称" align="center" width="200"></el-table-column>
@@ -70,8 +69,11 @@
               </template>
             </el-table-column>
             <el-table-column prop="modifiedBy" label="修改人" align="center" width="130"></el-table-column>
-            <el-table-column label="操作" align="center" width="200" fixed="right">
+            <el-table-column label="操作" align="center" width="500" fixed="right">
               <template slot-scope="scope">
+                <el-button :size="overSize" type="warning" @click="productCost(scope.$index, scope.row)">产品费用</el-button>
+                <el-button :size="overSize" type="warning" @click="nonAutoProductCost(scope.$index, scope.row)">非车产品费用</el-button>
+                <el-button :size="overSize" type="warning" @click="underwritingRulesButton(scope.$index, scope.row)">承保规则</el-button>
                 <el-button :size="overSize" type="primary" @click="uplatequery(scope.$index, scope.row)">编辑</el-button>
                 <el-button :size="overSize" type="danger" @click="deletequery(scope.$index, scope.row)">删除</el-button>
               </template>
@@ -247,7 +249,7 @@
                 <div><span>{{ schemeitem.name }}费用</span></div>
               </div>
               <div>
-                <el-button type="warning " style="background-color: #52C578;border:#52C578 " :size="overSize"
+                <el-button type="warning " style="background-color: #52C578;border:#52C578;" :size="overSize"
                   @click="addproductCosts(schemeindex)">增加方案</el-button>
               </div>
               <div class="productCosts" v-for="(productCostsitem, productCostsindex) in schemeitem.productCosts"
@@ -815,6 +817,170 @@
       </el-checkbox-group>
       <div style="text-align: right"> <el-button type="primary" @click="cancelSyncAgreement('sync')">取消</el-button> <el-button type="primary" @click="selectSyncAgreement('sync')">确定</el-button></div>
     </el-dialog>
+    <el-dialog
+  title="产品录入"
+  :visible.sync="productCostVehicleFactorVisible"
+  width="30%"
+  :fullscreen="true"
+  :before-close="productCosthandleClose">
+  <div label="产品费用" name="scheme" style="padding: 20px;">
+          <div class="flex a-c">
+            <el-checkbox-group v-model="roductList1">
+              <el-checkbox v-for="item in productsTypeoptions" :label="item.dictValue" :key="item.dictValue"
+                @change="event => pruductChange(event, item)">{{ item.dictTag }}</el-checkbox>
+            </el-checkbox-group>
+          </div>
+          <div>
+            <el-collapse  accordion>
+            <div class="flex   f-c products" v-for="(schemeitem, schemeindex) in costform.scheme" :key="schemeindex">
+              <div class="productstitle flex j-s">
+                <div><span>{{ schemeitem.name }}费用</span></div>
+              </div>
+              <div>
+                <el-button type="warning " style="background-color: #52C578;border:#52C578 " :size="overSize"
+                  @click="addproductCosts(schemeindex)">增加方案</el-button>
+              </div>
+              <div class="productCosts" v-for="(productCostsitem, productCostsindex) in schemeitem.productCosts"
+                :key="productCostsindex">
+                <div class="flex j-s a-c">
+                  <span>方案{{ productCostsindex + 1 }}:</span>
+                  <div>
+                    <el-button type="warning" :size="overSize"
+                      @click="VehicleFactor(schemeindex, productCostsindex)">费用因子</el-button>
+
+                    <el-button v-if="productCostsindex != 0" type="danger" :size="overSize"
+                      @click="deleteproductCosts(schemeindex,productCostsindex)">删除方案</el-button>
+                  </div>
+                </div>
+                <el-form ref="costform" :model="productCostsitem" label-width="130px" :size="overSize"
+                  :rules="costformRules">
+                  <el-collapse-item   style="padding-top: 50px;">
+                    <template slot="title">
+                      <el-col :span="20" :offset="2" >
+                        <el-form-item label="费用描述">
+                          <el-input type="textarea" v-model="productCostsitem.costsDescription"
+                                    placeholder="输入费用描述内容"></el-input>
+                        </el-form-item>
+                      </el-col>
+                    </template>
+                  <el-row>
+                    <h4/>
+                    <el-col :span="10" :offset="2">
+                      <el-form-item label="费用起期" prop="costsStartDate">
+                        <el-date-picker style="width: 100%;" v-model="productCostsitem.costsStartDate" type="datetime"
+                                        placeholder="选择费用开始日期" value-format="yyyy-MM-dd HH:mm:ss" :picker-options="pickerOptions" @change="cleanEndDate(schemeindex,productCostsindex)">
+                        </el-date-picker>
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="10">
+                      <el-form-item label="费用止期" prop="costsEndDate">
+                        <el-date-picker style="width: 100%;" v-model="productCostsitem.costsEndDate" type="datetime"
+                                        placeholder="选择费用结束日期" value-format="yyyy-MM-dd HH:mm:ss" :picker-options="pickerOptions1" @focus="vm => timefocus(vm, schemeindex, productCostsindex)"  @change="checkStartDate(schemeindex,productCostsindex)">
+                        </el-date-picker>
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="10" :offset="2">
+                      <el-form-item label="优先级(值小优先)" prop="priorityLevel"  >
+                        <el-input style="width: 100%" v-model="productCostsitem.priorityLevel"   @change="vm=> changePriorityLevel(vm,schemeindex,productCostsindex)"   label="方案匹配优先级"></el-input>
+                      </el-form-item>
+                    </el-col>
+
+                  </el-row>
+                  <el-row v-if="['单交', '交三', '交商','兜底配置'].includes(schemeitem.name)">
+                    <h4 style="color: tomato;">交强险费用</h4>
+                    <el-col :span="10" :offset="2">
+                      <el-form-item label="溢出保费" prop="jqSpilloverPremiums">
+                        <el-input v-model="productCostsitem.jqSpilloverPremiums" placeholder="请输入溢出保费"></el-input>
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="10">
+                      <el-form-item label="溢出比例" prop="jqSpilloverProportion">
+                        <el-input v-model="productCostsitem.jqSpilloverProportion" placeholder="请输入溢出比例"></el-input>
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="10" :offset="2">
+                      <el-form-item label="新车费用比例" prop="jqNewCarCostsProportion">
+                        <el-input v-model="productCostsitem.jqNewCarCostsProportion" @blur="val => jqNewCarCostsProportioninput(val, schemeindex, productCostsindex)" placeholder="请输入新车费用比例"></el-input>
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="10">
+                      <el-form-item label="旧车费用比例" prop="jqOldCarCostsProportion">
+                        <el-input v-model="productCostsitem.jqOldCarCostsProportion" @blur="val => jqOldCarCostsProportioninput(val, schemeindex, productCostsindex)" placeholder="请输入旧车费用比例"></el-input>
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="10" :offset="2" v-if="permissions">
+                      <el-form-item label="新车其他费用比例">
+                        <el-input disabled v-model="productCostsitem.jqNewCarOtherCostsProportion"
+                                  placeholder="请输入新车其他费用比例"></el-input>
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="10" v-if="permissions">
+                      <el-form-item label="旧车其他费用比例">
+                        <el-input disabled v-model="productCostsitem.jqOldCarOtherCostsProportion"
+                                  placeholder="请输入旧车其他费用比例"></el-input>
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="10" :offset="2">
+                      <el-form-item label="总费用比例" prop="jqCostsProportion">
+                        <el-input v-model="productCostsitem.jqCostsProportion"
+                                  @blur="val => jqCostsProportioninput(val, schemeindex, productCostsindex)"
+                                  placeholder="请输入总费用比例"></el-input>
+                      </el-form-item>
+                    </el-col>
+                  </el-row>
+                  <el-row v-if="['单商', '单三', '交商', '交三','兜底配置'].includes(schemeitem.name)">
+                    <h4 style="color: tomato;">商业险费用</h4>
+                    <el-col :span="10" :offset="2">
+                      <el-form-item label="溢出保费" prop="sySpilloverPremiums">
+                        <el-input v-model="productCostsitem.sySpilloverPremiums" placeholder="请输入溢出保费"></el-input>
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="10">
+                      <el-form-item label="溢出比例" prop="sySpilloverProportion">
+                        <el-input v-model="productCostsitem.sySpilloverProportion" placeholder="请输入溢出比例"></el-input>
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="10" :offset="2">
+                      <el-form-item label="新车费用比例" prop="syNewCarCostsProportion">
+                        <el-input v-model="productCostsitem.syNewCarCostsProportion" @blur="val => syNewCarCostsProportioninput(val, schemeindex, productCostsindex)" placeholder="请输入新车费用比例"></el-input>
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="10">
+                      <el-form-item label="旧车费用比例" prop="syOldCarCostsProportion">
+                        <el-input v-model="productCostsitem.syOldCarCostsProportion" @blur="val => syOldCarCostsProportioninput(val, schemeindex, productCostsindex)" placeholder="请输入旧车费用比例"></el-input>
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="10" :offset="2" v-if="permissions">
+                      <el-form-item label="新车其他费用比例">
+                        <el-input v-model="productCostsitem.syNewCarOtherCostsProportion" placeholder="请输入新车其他费用比例"
+                          disabled></el-input>
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="10" v-if="permissions">
+                      <el-form-item label="旧车其他费用比例">
+                        <el-input v-model="productCostsitem.syOldCarOtherCostsProportion" placeholder="请输入旧车其他费用比例"
+                          disabled></el-input>
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="10" :offset="2">
+                      <el-form-item label="总费用比例" prop="syCostsProportion">
+                        <el-input v-model="productCostsitem.syCostsProportion" placeholder="请输入总费用比例"
+                                  @blur="val => syCostsProportioninput(val, schemeindex, productCostsindex)"></el-input>
+                      </el-form-item>
+                    </el-col>
+                  </el-row>
+                  </el-collapse-item>
+                </el-form>
+              </div>
+            </div>
+            </el-collapse>
+          </div>
+        </div>
+  <span slot="footer" class="dialog-footer">
+    <el-button size="small" @click="productCostVehicleFactorVisible = false">取 消</el-button>
+    <el-button size="small" type="primary" @click="productCostVehicleFactorVisible = false">确 定</el-button>
+  </span>
+</el-dialog>
   </div>
 </template>
 <script>
@@ -859,6 +1025,9 @@ export default {
       totalSize: null,
       agreementdialogVisible: false, //控制协议对话框显示
       VehicleFactorVisible: false,//费用车辆因子    显示/隐藏
+      productCostVehicleFactorVisible: false,//产品费用    显示/隐藏
+      nonAutoProductCostVehicleFactorVisible: false,//非车产品费用    显示/隐藏
+      underwritingRulesVehicleFactorVisible: false,//承保规则    显示/隐藏
       //产品list获取
       roductList1: ['车险'],//产品绑定list
       treedata: [],//授权结构树
@@ -1290,6 +1459,9 @@ export default {
     this.changeTreeWidth(250); // 初始化树的宽度
   },
   methods: {
+    productCost(index,row){
+      this.productCostVehicleFactorVisible=true;
+    },
     convertFactorForm(item){
       this.CostfactorForm.transfer=item.transfer;
       this.CostfactorForm.newEnergy=item.newEnergy;
@@ -1417,8 +1589,6 @@ export default {
         rulesType:"0",//默认拒保规则
       })
     },
-
-
     //改变方案优先级时,校验
     changePriorityLevel(val,schemeindex, productCostsindex){
       for(let tempScheme in this.costform.scheme[schemeindex].productCosts){
@@ -1752,7 +1922,7 @@ export default {
           this.$message({
             type: 'info',
             message: '已取消删除'
-          });          
+          });
         });
     },
     //删除产品方案
@@ -2430,9 +2600,9 @@ export default {
 
             let params = {
               agreement: this.agreement,
-              scheme: this.costform.scheme,
-              nonCarProductCosts: this.nonCarProductCosts,
-              underwritingRules: this.UnderwritingRules,
+              // scheme: this.costform.scheme,
+              // nonCarProductCosts: this.nonCarProductCosts,
+              // underwritingRules: this.UnderwritingRules,
               attribution: this.attributionform,
               dept: this.dept
             }

+ 39 - 3
src/views/Core/KtCommonTable.vue

@@ -12,6 +12,8 @@
       :element-loading-text="$t('action.loading')"
       :border="border"
       :stripe="stripe"
+      :show-summary="showSummary"
+      :summary-method="getSummaries"
       :show-overflow-tooltip="showOverflowTooltip"
       :height="tableHeight"
       :size="size"
@@ -26,8 +28,9 @@
     >
       <el-table-column
         type="selection"
-        width="40"
+        width="50"
         fixed
+        align="center"
         v-if="showBatchDelete || showBatchSettled || showBatchPrint"
       ></el-table-column>
       <el-table-column
@@ -250,6 +253,7 @@
 </template>
 <script>
 import KtButton from "@/views/Core/KtButton";
+import BigNumber from "bignumber.js";
 export default {
   name: "KtCommonTable",
   components: {
@@ -278,6 +282,11 @@ export default {
       type: Boolean,
       default: false,
     },
+    //显示合计
+    showSummary: {
+      type: Boolean,
+      default: false,
+    },
     button1Name: {
       type: String,
     },
@@ -345,6 +354,7 @@ export default {
       type: Boolean,
       default: true,
     },
+    showSummaryFieldList: Array,//自定义合计列配置
     keyName: String, //主键字段名
     columns: Array, // 表格列配置
     data: {}, // 表格分页数据
@@ -420,7 +430,33 @@ export default {
       }
       // return '';
     },
-
+    getSummaries(param) {
+      const { columns, data } = param;
+      const sums = [];
+      columns.forEach((column, index) => {
+        if (index === 0) {
+          sums[index] = "合计"; // 假设第一列显示文本'合计'
+          return;
+        }
+        if (this.showSummaryFieldList) {
+          // 如果当前列名不在需要计算的列名数组中,直接返回空值或其他标记
+          if (!this.showSummaryFieldList.includes(column.property)) {
+            sums[index] = "-";
+            return;
+          }
+        }
+        let sum = new BigNumber(0);
+        data.forEach((item) => {
+          let value = item[column.property];
+          let number = new BigNumber(value);
+          if (!number.isNaN()) {
+            sum = sum.plus(number);
+          }
+        });
+        sums[index] = sum.toFixed(); // 转换成字符串避免精度问题
+      });
+      return sums;
+    },
     // 分页查询
     findPage: function () {
       this.loading = true;
@@ -429,7 +465,7 @@ export default {
         //解决操作栏位置偏移问题
         this.$nextTick(() => {
           this.$refs.doLayout.doLayout();
-        },200);
+        }, 200);
       };
       this.$emit("findPage", {
         pageRequest: this.pageRequest,

+ 1 - 0
src/views/FinancialManagement/ReconciliationSystem/ReceivablePayableCollection/ReceivablePayableCollection.vue

@@ -119,6 +119,7 @@
               >
                 <el-option label="未结算" value="0"></el-option>
                 <el-option label="已结算" value="1"></el-option>
+                <el-option label="孤儿单" value="2"></el-option>
               </el-select>
             </el-form-item>
           </el-col>

+ 35 - 9
src/views/FinancialManagement/ReconciliationSystem/ReceivablePayableCollection/Source.vue

@@ -96,6 +96,19 @@
               </el-date-picker>
             </el-form-item>
           </el-col>
+          <el-col :span="6">
+            <el-form-item label="结算状态">
+              <el-select
+                v-model="pageRequest.clearingState"
+                placeholder="请选择状态"
+                class="widths"
+              >
+                <el-option label="未结算" value="0"></el-option>
+                <el-option label="已结算" value="1"></el-option>
+                <el-option label="孤儿单" value="2"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
           <el-col :span="6">
             <el-form-item label="保司结算状态">
               <el-select
@@ -171,6 +184,8 @@
         :SerialShow="false"
         :operationWidth="180"
         :showOperation="true"
+        :showSummary="true"
+        :showSummaryFieldList="['premium', 'nonCopying', 'receivable']"
         permsDelete="sys:user:delete"
         :showBatchDelete="true"
         :showBatchSettled="true"
@@ -197,7 +212,13 @@
       >
       </kt-common-table>
     </el-main>
-    <el-dialog title="信息修改" :visible.sync="dialogFormVisible" v-dialogDrag :close-on-click-modal="false" width="80%">
+    <el-dialog
+      title="信息修改"
+      :visible.sync="dialogFormVisible"
+      v-dialogDrag
+      :close-on-click-modal="false"
+      width="80%"
+    >
       <el-form
         :model="updateform"
         :inline="true"
@@ -273,7 +294,11 @@
             placeholder="请选择状态"
             class="widths"
           >
-            <el-option :disabled="insuranceClearingStatedisableStatus" label="未结算" value="0"></el-option>
+            <el-option
+              :disabled="insuranceClearingStatedisableStatus"
+              label="未结算"
+              value="0"
+            ></el-option>
             <el-option label="已结算" value="1"></el-option>
           </el-select>
         </el-form-item>
@@ -309,7 +334,8 @@
     <el-dialog
       title="新增数据"
       :visible.sync="createOrUpdateVisible"
-      v-dialogDrag :close-on-click-modal="false"
+      v-dialogDrag
+      :close-on-click-modal="false"
       width="90%"
     >
       <el-form
@@ -743,7 +769,7 @@ export default {
           minWidth: 140,
         },
       ],
-      insuranceClearingStatedisableStatus:false,
+      insuranceClearingStatedisableStatus: false,
     };
   },
   created() {
@@ -884,14 +910,14 @@ export default {
       this.findPage();
     },
     sourceUpdate({ row, column }) {
-      if(row.insuranceClearingState=='已结算'){
-        this.insuranceClearingStatedisableStatus=true;
-      }else{
-        this.insuranceClearingStatedisableStatus=false;
+      if (row.insuranceClearingState == "已结算") {
+        this.insuranceClearingStatedisableStatus = true;
+      } else {
+        this.insuranceClearingStatedisableStatus = false;
       }
       this.dialogFormVisible = true;
       const shallowCopy = Object.assign({}, row);
-      this.updateform =shallowCopy;
+      this.updateform = shallowCopy;
     },
     sourceDelete({ row, column }) {
       this.$confirm("是否确认删除?", "提示", {