Browse Source

Merge branch 'dev' of http://git.echepei.com/caojunjie/Smart_platform_ui into dev

QuKatie 3 years ago
parent
commit
c8754742ca
34 changed files with 1174 additions and 343 deletions
  1. 9 0
      src/api/workManagement/mainProject.js
  2. 0 16
      src/components/bill/billApplication.vue
  3. 19 15
      src/components/finance/applyPayment.vue
  4. 123 0
      src/components/mainProject/index.vue
  5. 1 1
      src/components/selectComponent/userSelect.vue
  6. 1 1
      src/router/views/index.js
  7. 1 1
      src/views/basicData/customerInformation/detailsPageEdit.vue
  8. 1 1
      src/views/basicData/customerManagement/companyMaterial/detailsPageEdit.vue
  9. 1 1
      src/views/basicData/customerManagement/supplierMaterial/detailsPageEdit.vue
  10. 11 0
      src/views/businessManagement/deliveryNotice/detailsPageEdit.vue
  11. 22 21
      src/views/businessManagement/purchaseOrder/detailsPageEdit.vue
  12. 12 0
      src/views/businessManagement/salesOrder/detailsPageEdit.vue
  13. 9 16
      src/views/financialManagement/billDetails/billDetails.vue
  14. 1 0
      src/views/financialManagement/billDetails/configuration/mainList.json
  15. 1 1
      src/views/financialManagement/paymentSettle/paymentSettleDetailsPage.vue
  16. 1 1
      src/views/financialManagement/receiptSettle/receiptSettleDetailsPage.vue
  17. 38 12
      src/views/importTrade/invoice/detailsPageEdit.vue
  18. 2 0
      src/views/importTrade/receipt/config/customerContact.json
  19. 49 48
      src/views/importTrade/receipt/detailsPageEdit.vue
  20. 1 1
      src/views/purchase/contract/config/customerContact.json
  21. 24 11
      src/views/purchase/contract/detailsPage.vue
  22. 0 33
      src/views/purchase/stockBill/config/mainList.json
  23. 32 13
      src/views/salesManagement/salesContract/detailsPage.vue
  24. 0 23
      src/views/salesManagement/salesContract/index.vue
  25. 13 25
      src/views/workManagement/main-items/detailsPage.vue
  26. 43 23
      src/views/workManagement/main-items/list.vue
  27. 181 0
      src/views/workManagement/receipt/configuration/settleAccountsDetailsADD.json
  28. 1 2
      src/views/workManagement/receipt/configuration/settleAccountsDetailsPage.json
  29. 173 0
      src/views/workManagement/receipt/configuration/settleAccountsDetailsReturn.json
  30. 36 9
      src/views/workManagement/receipt/configuration/statisticalList.json
  31. 42 5
      src/views/workManagement/receipt/settleAccounts.vue
  32. 294 54
      src/views/workManagement/receipt/settleAccountsDetailsPage.vue
  33. 26 2
      src/views/workManagement/receipt/statisticalList.vue
  34. 6 7
      src/views/workManagement/service-items/project.vue

+ 9 - 0
src/api/workManagement/mainProject.js

@@ -84,3 +84,12 @@ export function getPidByItemId(itemId) {
     }
   })
 }
+
+//远程模糊查询username
+export function getUserList(params) {
+  return request({
+    url: '/api/blade-user/userList',
+    method: 'get',
+    params:params
+  })
+}

+ 0 - 16
src/components/bill/billApplication.vue

@@ -110,22 +110,6 @@
         };
         this.show = false;
       },
-      rowDel(row, index, done) {
-        if(row.id){
-          this.$confirm("确定将选择数据删除?", {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning"
-          }).then(() => {
-            remove(row.id).then(res =>{
-              if(res.data.success){
-                this.$message.success("操作成功!");
-                this.onLoad(this.page);
-              }
-            })
-          });
-        }
-      },
       //点击搜索按钮触发
       searchChange(params, done) {
         this.query = params;

+ 19 - 15
src/components/finance/applyPayment.vue

@@ -11,7 +11,10 @@
             <selectComponent v-model="corpId" :configuration="configuration"/>
           </template>
           <template slot-scope="scope" slot="billNo">
-            <el-select placeholder="请选择" v-model="item.form.billNo" clearable>
+            <el-select placeholder="请选择" v-model="item.form.billNo"   filterable
+                       allow-create
+                       default-first-option
+                       clearable>
               <el-option
                 v-for="item in item.form.billNoList"
                 :key="item"
@@ -26,22 +29,23 @@
                :configuration="breakConfiguration">
             </breakdown-select>
           </template>
-         <!-- <template slot-scope="scope" slot="price">
+<!--          <template slot-scope="scope" slot="price">-->
+<!--            <el-input-->
+<!--              v-model="item.form.price"-->
+<!--              autocomplete="off"-->
+<!--              placeholder="请输入 单价"-->
+<!--              @input="calculate(item.form)"-->
+<!--            ></el-input>-->
+<!--          </template>-->
+          <template slot-scope="scope" slot="taxRate">
             <el-input
-              v-model="item.form.price"
+              v-model="item.form.taxRate"
+              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d\d\d\d\d).*$/, "$1.$2")'
               autocomplete="off"
-              placeholder="请输入 单价"
-              @input="calculate(item.form)"
-            ></el-input>
+            >
+              <i slot="suffix" style="margin-right: 10px;">%</i>
+            </el-input>
           </template>
-          <template slot-scope="scope" slot="quantity">
-            <el-input
-              v-model="item.form.quantity"
-              autocomplete="off"
-              placeholder="请输入 数量"
-              @input="calculate(item.form)"
-            ></el-input>
-          </template>-->
           <template slot-scope="scope" slot="currency">
             <el-select v-model="item.form.currency" size="small" placeholder="请选择 币别" @change="currencyChange(item.form)" clearable filterable>
               <el-option v-for="(item,index) in currencyDic" :key="index" :label="item.dictValue"  :value="item.dictValue"></el-option>
@@ -146,7 +150,7 @@ export default {
               span: 8,
               rules: [
                 {
-                  required: true,
+                  required: false,
                   message: ' ',
                   trigger: 'blur'
                 }

+ 123 - 0
src/components/mainProject/index.vue

@@ -0,0 +1,123 @@
+<template>
+  <div>
+    <el-row>
+      <el-col :span="5" >
+        <div>
+          <el-scrollbar>
+            <basic-container>
+              <avue-tree :option="serviceTreeOption"  @node-click="serviceNodeClick"/>
+            </basic-container>
+          </el-scrollbar>
+        </div>
+      </el-col>
+      <el-col :span="19">
+        <basic-container>
+          <avue-crud ref="serviceCrud"
+                     :page.sync="servicePage"
+                     :search.sync="serviceSearch"
+                     :option="serviceOption"
+                     :table-loading="serviceLoading"
+                     :data="serviceData"
+                     @refresh-change="serviceRefreshChange"
+                     @selection-change="serviceSelectionChange"
+                     @search-change="serviceSearchChange"
+                     @on-load="serviceOnLoad">
+          </avue-crud>
+        </basic-container>
+        <div style="float: right;margin: 8px">
+          <el-button type="primary" size="small" @click="serviceConfirm()" :disabled="this.serviceSelectList.length == 0">导 入</el-button>
+          <el-button size="small" @click="$emit('chose')">取 消</el-button>
+        </div>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import serviceOption from "../../views/workManagement/main-items/configuration/serviceDialogList.json";
+import {getServiceProjectList,getServiceTypeTree,} from "@/api/workManagement/serviceProject";
+
+export default {
+  data() {
+    return {
+      serviceTreeOption: {
+        nodeKey: 'id',
+        lazy: true,
+        treeLoad: function(node, resolve) {
+          const parentId = node.level === 0 ? 0 : node.data.id;
+          getServiceTypeTree(parentId).then(res => {
+            resolve(
+              res.data.data.map(item => {
+                return {
+                  ...item,
+                  leaf: !item.hasChildren
+                };
+              })
+            );
+          });
+        },
+        addBtn: false,
+        menu: false,
+        size: 'small',
+        props: {
+          labelText: '标题',
+          label: 'title',
+          value: 'value',
+          children: 'children'
+        }
+      },
+      serviceOption:serviceOption,
+      serviceLoading:false,
+      serviceData:[],
+      servicePage:{
+        currentPage: 1,
+        total: 0,
+        pageSize: 10
+      },
+      serviceSearch:{},
+      serviceTreeDeptId:"",
+      serviceSelectList:[],
+    };
+  },
+  props: {
+    chose:{
+      type: Function
+    }
+  },
+  methods: {
+    //服务窗口事件
+    serviceNodeClick(data) {
+      this.serviceTreeDeptId = data.id;
+      this.serviceOnLoad(this.servicePage);
+    },
+    serviceRefreshChange(){
+      this.serviceOnLoad(this.servicePage, this.serviceSearch)
+    },
+    serviceSearchChange(params, done){
+      this.serviceOnLoad(this.servicePage, params)
+      done();
+    },
+    serviceSelectionChange(row){
+      this.serviceSelectList = row;
+    },
+    serviceOnLoad(page, params = {}) {
+      this.serviceLoading = true;
+      getServiceProjectList(page.currentPage, page.pageSize, params, this.serviceTreeDeptId).then(res => {
+        this.serviceData = res.data.data.records
+        this.servicePage.total = res.data.data.total
+        this.serviceLoading = false
+      })
+    },
+    serviceConfirm(){
+      if(this.serviceSelectList.length != 0){
+        this.$emit("serviceConfirm",this.serviceSelectList)
+      }
+      this.serviceSelectList = []
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+
+</style>

+ 1 - 1
src/components/selectComponent/userSelect.vue

@@ -103,7 +103,7 @@
         form: {},
         dicData: [],
         dialogVisible: false,
-        value: '',
+        value: null,
         option: option,
         parentId: 0,
         dataList: [],

+ 1 - 1
src/router/views/index.js

@@ -187,7 +187,7 @@ export default [{
         children: [
             {
                 path: '/businessManagement/deliveryNotice/index',
-                name: '发货单(N)',
+                name: '客户确认(N)',
                 meta: {
                     i18n: 'businessManagement/deliveryNotice/index',
                   keepAlive: true,

+ 1 - 1
src/views/basicData/customerInformation/detailsPageEdit.vue

@@ -271,7 +271,7 @@ export default {
           },
           {
             label: "职位",
-            prop: "positoin",
+            prop: "position",
             rules: [
               {
                 required: false,

+ 1 - 1
src/views/basicData/customerManagement/companyMaterial/detailsPageEdit.vue

@@ -270,7 +270,7 @@ export default {
           },
           {
             label: "职位",
-            prop: "positoin",
+            prop: "position",
             rules: [
               {
                 required: false,

+ 1 - 1
src/views/basicData/customerManagement/supplierMaterial/detailsPageEdit.vue

@@ -270,7 +270,7 @@ export default {
           },
           {
             label: "职位",
-            prop: "positoin",
+            prop: "position",
             rules: [
               {
                 required: false,

+ 11 - 0
src/views/businessManagement/deliveryNotice/detailsPageEdit.vue

@@ -125,6 +125,7 @@
               @row-update="rowUpdate"
               @row-del="rowDel"
               @saveColumn="saveColumn('goods')"
+              :cell-style="goodsRowClassName"
           >
             <template slot="code" slot-scope="{row,index}">
               <el-button type="text" size="mini" style="padding:4px 10px;float:left" @click="commodityChoice(row)" :disabled="detailData.seeDisabled || !row.$cellEdit">选择</el-button>
@@ -1425,6 +1426,9 @@ export default {
       list.forEach(item => {
         item.cname = item.cname
         this.$set(item, 'specificationAndModel', item.itemType)
+        this.$set(item, 'deliveryAmount', item.amount)
+        this.$set(item, 'actualQuantity', item.orderQuantity)
+        this.$set(item, 'inventoryNumber', item.storageQuantity)
         delete item.id
         delete item.createTime
         delete item.createUser
@@ -1467,6 +1471,13 @@ export default {
         }
       }
     },
+    // 商品表格加色
+    goodsRowClassName({row, column, rowIndex, columnIndex}) {
+      if (Number(row.actualQuantity) > Number(row.inventoryNumber) && column.property == 'inventoryNumber') {
+        return "color: #fff;background:#a4cf57"
+      }
+      return '';
+    },
   }
 }
 </script>

+ 22 - 21
src/views/businessManagement/purchaseOrder/detailsPageEdit.vue

@@ -574,27 +574,27 @@ export default {
       basicData: {
         column: [
           {
-            label: '系统编号',
-            prop: 'sysNo',
-            disabled: true,
+            label: '供应商',
+            prop: 'corpId',
+            span: 16,
             rules: [
               {
-                required: false,
+                required: true,
                 message: ' ',
                 trigger: 'blur'
               }
             ]
-          }, {
-            label: '来源单号',
-            prop: 'orgOrderNo',
+          },{
+            label: '付款方式',
+            prop: 'paymentType',
             rules: [
               {
-                required: false,
+                required: true,
                 message: ' ',
                 trigger: 'blur'
               }
             ]
-          }, {
+          },{
             label: ' 银行账号',
             prop: 'banks',
             rules: [
@@ -605,19 +605,18 @@ export default {
               }
             ]
           }, {
-            label: '供应商',
-            prop: 'corpId',
-            span: 16,
+            label: '公司户头',
+            prop: 'banksAccountName',
             rules: [
               {
-                required: true,
+                required: false,
                 message: ' ',
                 trigger: 'blur'
               }
             ]
           }, {
-            label: '付款方式',
-            prop: 'paymentType',
+            label: '包装要求',
+            prop: 'packageRemarks',
             rules: [
               {
                 required: true,
@@ -625,9 +624,11 @@ export default {
                 trigger: 'blur'
               }
             ]
-          }, {
-            label: '公司户头',
-            prop: 'banksAccountName',
+          },
+          {
+            label: '系统编号',
+            prop: 'sysNo',
+            disabled: true,
             rules: [
               {
                 required: false,
@@ -636,11 +637,11 @@ export default {
               }
             ]
           }, {
-            label: '包装要求',
-            prop: 'packageRemarks',
+            label: '来源单号',
+            prop: 'orgOrderNo',
             rules: [
               {
-                required: true,
+                required: false,
                 message: ' ',
                 trigger: 'blur'
               }

+ 12 - 0
src/views/businessManagement/salesOrder/detailsPageEdit.vue

@@ -1297,6 +1297,18 @@ export default {
     this.$set(this.form, 'overPayment', 0)
     this.$set(this.form, 'orderAmount', 0)
     this.$set(this.form, 'predictOceanFreight', 0)
+    let date = new Date();
+    let year = date.getFullYear();
+    let month = date.getMonth() + 1;
+    let day = date.getDate();
+    if (month < 10) {
+      month = "0" + month;
+    }
+    if (day < 10) {
+      day = "0" + day;
+    }
+    let nowDate = year + "-" + month + "-" + day + ' 00:00:00';
+    this.$set(this.form, 'businesDate', nowDate)
     if (this.detailData.id) {
       this.queryData(this.detailData.id)
     }

+ 9 - 16
src/views/financialManagement/billDetails/billDetails.vue

@@ -13,6 +13,7 @@
                @current-change="currentChange"
                @size-change="sizeChange"
                @refresh-change="refreshChange"
+               :row-style="rowStyle"
                @on-load="onLoad">
       <template slot="corpIdSearch">
         <select-component
@@ -33,6 +34,7 @@
 <script>
   import option from "./configuration/mainList.json";
   import { getBillList } from "@/api/financialManagement/paymentRequest";
+  import _ from "lodash";
 
   export default {
     data() {
@@ -96,22 +98,6 @@
         };
         this.show = false;
       },
-      rowDel(row, index, done) {
-        if(row.id){
-          this.$confirm("确定将选择数据删除?", {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning"
-          }).then(() => {
-            remove(row.id).then(res =>{
-              if(res.data.success){
-                this.$message.success("操作成功!");
-                this.onLoad(this.page);
-              }
-            })
-          });
-        }
-      },
       //点击搜索按钮触发
       searchChange(params, done) {
         this.query = params;
@@ -134,6 +120,13 @@
       refreshChange() {
         this.onLoad(this.page);
       },
+      rowStyle(data){
+        if(_.subtract(data.row.settlementAmount, data.row.amount) < 0){
+            return  {
+              background: "rgba(248,203,203,0.56)"
+            }
+        }
+      },
       onLoad(page, params = {}) {
         this.loading = true;
         if (params.createTime != undefined) {  //合同

+ 1 - 0
src/views/financialManagement/billDetails/configuration/mainList.json

@@ -20,6 +20,7 @@
   "searchIcon": true,
   "searchIndex": 2,
   "addBtn":false,
+  "menu": false,
   "headerAlign": "center",
   "showSummary": true,
   "summaryText": "合计",

+ 1 - 1
src/views/financialManagement/paymentSettle/paymentSettleDetailsPage.vue

@@ -336,7 +336,7 @@
       })
 
       if (this.detailData.id) {
-        this.id = BigInt(this.detailData.id);//字符串转数字  超长用BigInt
+        this.id = this.detailData.id;//字符串转数字  超长用BigInt
         getDetail(this.id).then(res => {
           this.afterEcho(res.data.data)
         })

+ 1 - 1
src/views/financialManagement/receiptSettle/receiptSettleDetailsPage.vue

@@ -334,7 +334,7 @@
         this.currencyDic = res.data.data
       })
       if (this.detailData.id) {
-        this.id = BigInt(this.detailData.id);//字符串转数字  超长用BigInt
+        this.id = this.detailData.id;//字符串转数字  超长用BigInt
         getDetail(this.id).then(res => {
           this.afterEcho(res.data.data)
         })

+ 38 - 12
src/views/importTrade/invoice/detailsPageEdit.vue

@@ -100,8 +100,10 @@
               <span v-else>{{ row.contractNumber }}</span>
             </template>
             <template slot="priceCategory" slot-scope="{row,index}">
+              <span v-if="row.$cellEdit" class="required_fields">*</span>
               <goods-select
                 v-if="row.$cellEdit"
+                style="width:90%"
                 v-model="row.priceCategoryNames"
                 @valueName="(value) => valueName(value,row)"
                 :configuration="itemConfiguration"
@@ -144,6 +146,7 @@
               <span v-else>{{ row.price }}</span>
             </template>
             <template slot="actualQuantity" slot-scope="{ row }">
+              <span v-if="row.$cellEdit" class="required_fields">*</span>
               <el-input
                 v-if="row.$cellEdit"
                 v-model="row.actualQuantity"
@@ -176,8 +179,10 @@
               <span v-else>{{ row.currency }}</span>
             </template>
             <template slot="cntrNo" slot-scope="{ row }">
+              <span v-if="row.$cellEdit" class="required_fields">*</span>
               <el-select v-if="row.$cellEdit"
                          v-model="row.cntrNo"
+                         style="width:90% !important;"
                          size="small"
                          placeholder="请选择"
                          @change="selectCntrNoList(row)"
@@ -192,6 +197,18 @@
               </el-select>
               <span v-else>{{ row.cntrNo }}</span>
             </template>
+            <template slot="taxRate" slot-scope="{ row }">
+              <el-input
+                v-if="row.$cellEdit"
+                v-model="row.taxRate"
+                size="small"
+                oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d\d\d\d\d).*$/, "$1.$2")'
+                autocomplete="off"
+              >
+                <i slot="suffix" style="margin-top:3px;margin-right: 10px;display:inline-block">%</i>
+              </el-input>
+              <span v-else>{{ row.taxRate }}</span>
+            </template>
             <template slot-scope="{row,index}" slot="menu">
               <el-button
                 type="text"
@@ -697,18 +714,12 @@ export default {
     // },
     //单价
     priceChange(row) {
-      if (!row.price) {
-        row.price = "";
-        row.contractAmount = 0
-      } else {
+      if (row.price && row.billWeight) {
         row.contractAmount = _.multiply(row.billWeight, row.price).toFixed(2);
       }
     },
     billWeightChange(row) {
-      if (!row.invoiceWeight) {
-        row.billWeight = "";
-        row.contractAmount = 0
-      } else {
+      if (row.billWeight &&  row.price) {
         row.contractAmount = _.multiply(row.billWeight, row.price).toFixed(2);
       }
     },
@@ -718,10 +729,6 @@ export default {
         item.contractNumber = item.orgOrderNo;
         item.contractAmount = item.amount;
         item.actualQuantity = item.orderQuantity;
-        // item.singleton = {
-        //   BQ :  item.billWeight && item.orderQuantity?_.divide(item.billWeight, item.orderQuantity):0,
-        //   IQ : item.invoiceWeight && item.orderQuantity?_.divide(item.invoiceWeight, item.orderQuantity):0
-        // }
         this.selectInventory(item);
         delete item.id
         this.$refs.crudContact.rowCellAdd(item);
@@ -869,6 +876,25 @@ export default {
             return this.$message.error(`请输入第${i + 1}行的件数`);
           }
         }
+
+        for (let i = 0; i < this.contactsData.length; i++) {
+          if (this.contactsData[i].billNo === (null || "" )) {
+            return this.$message.error(`请输入第${i + 1}行的提单号`);
+          }
+          if (this.contactsData[i].contractNumber === (null || "" )) {
+            return this.$message.error(`请输入第${i + 1}行的合同号`);
+          }
+          if (this.contactsData[i].priceCategory === (null || "" )) {
+            return this.$message.error(`请输入第${i + 1}行的货物品种`);
+          }
+          if (this.contactsData[i].cntrNo === (null || "" )) {
+            return this.$message.error(`请输入第${i + 1}行的箱号`);
+          }
+          if (this.contactsData[i].actualQuantity === (null || "" )) {
+            return this.$message.error(`请输入第${i + 1}行的件数`);
+          }
+        }
+
         this.form.billNo = this.contactsData.map(item => {
           return item.billNo
         }).join(",")

+ 2 - 0
src/views/importTrade/receipt/config/customerContact.json

@@ -86,12 +86,14 @@
     {
       "label": "库存件数",
       "prop": "inventoryNumber",
+      "hide": true,
       "index": 5,
       "width":120
     },
     {
       "label": "库存重量(吨)",
       "prop": "inWeight",
+      "hide": true,
       "index": 5,
       "width":120
     },

+ 49 - 48
src/views/importTrade/receipt/detailsPageEdit.vue

@@ -42,7 +42,7 @@
               <el-form-item :label="item.label" :prop="item.prop" :rules="item.rules">
                 <el-date-picker v-if="item.type === 'datetime'" style="width: 100%;" v-model="form[item.prop]" :disabled="receiptDisable" size="small" type="date" placeholder="请选择日期" value-format="yyyy-MM-dd HH:mm:ss"/>
                 <selectComponent v-else-if="item.prop === 'corpId'" :disabled="receiptDisable" v-model="form[item.prop]" :configuration="configuration"/>
-                <el-select v-else-if="item.prop === 'storageId'" style="width: 100%" :disabled="receiptDisable" @change="warehouseChange" v-model="form[item.prop]" size="small" placeholder="请选择" clearable filterable>
+                <el-select v-else-if="item.prop === 'storageId'" style="width: 100%" :disabled="receiptDisable" v-model="form[item.prop]" size="small" placeholder="请选择" clearable filterable>
                   <el-option v-for="(item,index) in storageIdDic" :key="index" :label="item.cname" :value="item.id"></el-option>
                 </el-select>
 <!--                <warehouse-select v-else-if="item.prop === 'storageId'" v-model="form[item.prop]" @change="warehouseChange" :configuration="configuration" />-->
@@ -120,12 +120,10 @@
                 v-model="row.cntrNo"
                 placeholder="请输入"
                 size="small"
-                @change="selectInventory(row)"
               ></el-input>
               <span v-else>{{ row.cntrNo }}</span>
             </template>
             <template slot="billWeight" slot-scope="{ row }">
-              <span v-if="row.$cellEdit" class="required_fields">*</span>
               <el-input
                 style="width:90%"
                 v-if="row.$cellEdit"
@@ -193,6 +191,18 @@
               </el-select>
               <span v-else>{{ row.currency }}</span>
             </template>
+            <template slot="taxRate" slot-scope="{ row }">
+              <el-input
+                v-if="row.$cellEdit"
+                v-model="row.taxRate"
+                size="small"
+                oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d\d\d\d\d).*$/, "$1.$2")'
+                autocomplete="off"
+              >
+                <i slot="suffix" style="margin-top:3px;margin-right: 10px;display:inline-block">%</i>
+              </el-input>
+              <span v-else>{{ row.taxRate }}</span>
+            </template>
             <template slot-scope="{row,index}" slot="menu">
               <el-button
                 type="text"
@@ -554,43 +564,43 @@ export default {
     //货物名称 回显
     valueName(value,row){
       this.$set(row,"priceCategory",value)
-      this.selectInventory(row)
+      // this.selectInventory(row)
     },
     //选择仓库  带出库存
-    warehouseChange(){
-      this.contactsData.forEach(item =>{
-        this.selectInventory(item);
-      })
-    },
-    //查询库存
-    selectInventory(row){
-      if(row.billNo && row.contractNumber && row.cntrNo && row.priceCategory && this.form.storageId){
-        const params = {
-          billNo:row.billNo,
-          contractNumber:row.contractNumber,
-          goodsId:row.priceCategory,
-          storageId:this.form.storageId,
-          cntrNo:row.cntrNo
-        }
-        selectJKGoodsNum(params).then(res =>{
-          if(res.data.data){
-            this.$set(this.contactsData[row.$index],"inventoryNumber",res.data.data.inQuantity)
-            this.$set(this.contactsData[row.$index],"inWeight",res.data.data.inWeight)
-          }else {
-            this.$set(this.contactsData[row.$index],"inventoryNumber",0.00)
-            this.$set(this.contactsData[row.$index],"inWeight",0.00)
-          }
-        })
-      }
-    },
+    // warehouseChange(){
+    //   this.contactsData.forEach(item =>{
+    //     this.selectInventory(item);
+    //   })
+    // },
+    // //查询库存
+    // selectInventory(row){
+    //   if(row.billNo && row.contractNumber && row.cntrNo && row.priceCategory && this.form.storageId){
+    //     const params = {
+    //       billNo:row.billNo,
+    //       contractNumber:row.contractNumber,
+    //       goodsId:row.priceCategory,
+    //       storageId:this.form.storageId,
+    //       cntrNo:row.cntrNo
+    //     }
+    //     selectJKGoodsNum(params).then(res =>{
+    //       if(res.data.data){
+    //         this.$set(this.contactsData[row.$index],"inventoryNumber",res.data.data.inQuantity)
+    //         this.$set(this.contactsData[row.$index],"inWeight",res.data.data.inWeight)
+    //       }else {
+    //         this.$set(this.contactsData[row.$index],"inventoryNumber",0.00)
+    //         this.$set(this.contactsData[row.$index],"inWeight",0.00)
+    //       }
+    //     })
+    //   }
+    // },
 
     //拿到所有明细合同号 去重加逗号放到主表合同号
     sumOrderNo(row){
       const contractNumberList =  this.contactsData.map(item =>{return  item.contractNumber})
       this.$set(this.form,'orderNo', Array.from(new Set(contractNumberList)).join(","))
-      if(row){
-        this.selectInventory(row);
-      }
+      // if(row){
+      //   this.selectInventory(row);
+      // }
     },
     //计算
     // actualQuantityChange(row){
@@ -632,24 +642,18 @@ export default {
       }).catch(()=>{
         row.contractNumber = ''
       })
-      this.selectInventory(row);
+      // this.selectInventory(row);
     },
     //单价
     priceChange(row) {
-      if (!row.price) {
-        row.price = "";
-        row.contractAmount = 0
-      } else {
-        row.contractAmount = _.multiply(row.billWeight,row.price).toFixed(2);
+      if (row.price && row.billWeight) {
+        row.contractAmount = _.multiply(row.billWeight, row.price).toFixed(2);
       }
     },
     //码单重量
     billWeightChange(row) {
-      if (!row.billWeight) {
-        row.billWeight = "";
-        row.contractAmount = 0
-      } else {
-        row.contractAmount = _.multiply(row.billWeight,row.price).toFixed(2);
+      if (row.billWeight &&  row.price) {
+        row.contractAmount = _.multiply(row.billWeight, row.price).toFixed(2);
       }
     },
     //新增商品信息保存触发
@@ -714,9 +718,6 @@ export default {
           if (this.contactsData[i].actualQuantity === (null || "" )) {
             return this.$message.error(`请输入第${i + 1}行的件数`);
           }
-          if (this.contactsData[i].billWeight === (null || "" )) {
-            return this.$message.error(`请输入第${i + 1}行的码单重量`);
-          }
         }
         this.form.billNo = this.contactsData.map(item =>{return item.billNo}).join(",")
         if (valid) {
@@ -841,7 +842,7 @@ export default {
         // }
         delete item.id
         this.$refs.crudContact.rowCellAdd(item);
-        this.selectInventory(item)
+        // this.selectInventory(item)
       })
 
       this.totalChange()

+ 1 - 1
src/views/purchase/contract/config/customerContact.json

@@ -145,7 +145,7 @@
       "label": "税率",
       "prop": "taxRate",
       "index": 10,
-      "width":180,
+      "width":120,
       "rules": [
         {
           "required": false,

+ 24 - 11
src/views/purchase/contract/detailsPage.vue

@@ -17,6 +17,7 @@
                    size="small"
                    class="el-button--small-yh "
                    :loading="buttonLoading"
+                   :disabled="!form.id"
                    @click.stop="applyPayment('申请')">申请货款
         </el-button>
 <!--        <el-button type="warning"
@@ -28,6 +29,7 @@
         <el-button type="info"
                    size="small"
                    :loading="buttonLoading"
+                   :disabled="!form.id"
                    @click="openApplicationDialog"
         >查看申请记录
         </el-button>
@@ -35,6 +37,7 @@
                    size="small"
                    class="el-button--small-yh "
                    :loading="buttonLoading"
+                   :disabled="!form.id"
                    @click.stop="applyPayment('收费')">退款
         </el-button>
         <el-button type="success"
@@ -187,7 +190,6 @@
               <span v-else>{{ row.invoiceWeight }}</span>
             </template>
             <template slot="billWeight" slot-scope="{ row }">
-              <span v-if="row.$cellEdit" class="required_fields">*</span>
               <el-input
                 style="width:90% !important;"
                 v-if="row.$cellEdit"
@@ -213,13 +215,14 @@
               <span v-else>{{ row.amount }}</span>
             </template>
             <template slot="taxRate" slot-scope="{ row }">
-              <el-input v-if="row.$cellEdit"
-                        v-model="row.taxRate"
-                        size="small"
-                        autocomplete="off"
-                        placeholder="请输入">
-<!--                <template slot="append"
-                >%</template>-->
+              <el-input
+                v-if="row.$cellEdit"
+                v-model="row.taxRate"
+                size="small"
+                oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d\d\d\d\d).*$/, "$1.$2")'
+                autocomplete="off"
+              >
+                <i slot="suffix" style="margin-top:3px;margin-right: 10px;display:inline-block">%</i>
               </el-input>
               <span v-else>{{ row.taxRate }}</span>
             </template>
@@ -655,6 +658,18 @@ export default {
             ]
           },
           {
+            label: '最迟付款日期',
+            prop: 'LatestDate',
+            type:'date',
+            rules: [
+              {
+                required: false,
+                message: ' ',
+                trigger: 'blur'
+              }
+            ]
+          },
+          {
             label: '预付(保证)金额',
             prop: 'advancePayment',
             rules: [
@@ -849,9 +864,6 @@ export default {
             if (this.contactsData[j].invoiceWeight === (null || "")) {
               return this.$message.error(`请输入采购明细第${j + 1}行的发票重量`);
             }
-            if (this.contactsData[j].billWeight === (null || "")) {
-              return this.$message.error(`请输入采购明细第${j + 1}行的码单重量`);
-            }
             if (this.contactsData[j].price === (null || "")) {
               return this.$message.error(`请输入采购明细第${j + 1}行的单价`);
             }
@@ -990,6 +1002,7 @@ export default {
         itemType:"采购",
         optionType:'JK',
         billNoList: this.contactsData.map(item =>{return item.billNo}),
+        price:this.form.salesPrice,
         corpsName:this.form.corpsName,
         corpId:this.form.corpId,
         accDate:this.form.businesDate,

+ 0 - 33
src/views/purchase/stockBill/config/mainList.json

@@ -44,18 +44,6 @@
       "type": "sum"
     },
     {
-      "name": "outAmount",
-      "type": "sum"
-    },
-    {
-      "name": "balanceAmount",
-      "type": "sum"
-    },
-    {
-      "name": "inAmount",
-      "type": "sum"
-    },
-    {
       "name": "balanceQuantity",
       "type": "sum"
     },
@@ -138,13 +126,6 @@
       "width": 120
     },
     {
-      "label": "入库金额",
-      "prop": "inAmount",
-      "overHidden": true,
-      "index": 8,
-      "width": 120
-    },
-    {
       "label": "出库件数",
       "prop": "outQuantity",
       "overHidden": true,
@@ -159,13 +140,6 @@
       "width": 120
     },
     {
-      "label": "出库金额",
-      "prop": "outAmount",
-      "overHidden": true,
-      "index": 11,
-      "width": 120
-    },
-    {
       "label": "结余件数",
       "prop": "balanceQuantity",
       "overHidden": true,
@@ -178,13 +152,6 @@
       "overHidden": true,
       "index": 13,
       "width": 120
-    },
-    {
-      "label": "结余金额",
-      "prop": "balanceAmount",
-      "overHidden": true,
-      "index": 14,
-      "width": 120
     }
   ]
 }

+ 32 - 13
src/views/salesManagement/salesContract/detailsPage.vue

@@ -173,7 +173,6 @@
               <span v-else>{{ row.invoiceWeight }}</span>
             </template>
             <template slot="billWeight" slot-scope="{ row }">
-              <span v-if="row.$cellEdit" class="required_fields">*</span>
               <el-input
                 v-if="row.$cellEdit"
                 v-model="row.billWeight"
@@ -198,6 +197,18 @@
               ></el-input>
               <span v-else>{{ row.amount }}</span>
             </template>
+            <template slot="taxRate" slot-scope="{ row }">
+              <el-input
+                v-if="row.$cellEdit"
+                v-model="row.taxRate"
+                size="small"
+                oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d\d\d\d\d).*$/, "$1.$2")'
+                autocomplete="off"
+              >
+                <i slot="suffix" style="margin-top:3px;margin-right: 10px;display:inline-block">%</i>
+              </el-input>
+              <span v-else>{{ row.taxRate }}</span>
+            </template>
             <template slot="menuLeft" slot-scope="{ row }">
               <el-button type="primary"
                          icon="el-icon-plus"
@@ -549,6 +560,23 @@ export default {
             ]
           },
           {
+            label: '结余金额',
+            prop: '',
+            disabled: true,
+            rules: [
+              {
+                pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
+                message: ' ',
+                trigger: 'blur'
+              },
+              {
+                required: false,
+                message: ' ',
+                trigger: 'blur'
+              }
+            ]
+          },
+          {
             label: '计划交期',
             prop: 'plannedDeliveryDate',
             type: 'datetime',
@@ -753,20 +781,14 @@ export default {
     },
     //单价
     priceChange(row) {
-      if (!row.price) {
-        row.price = "";
-        row.amount = 0
-      } else {
+      if (row.price && row.billWeight) {
         row.amount = _.multiply(row.billWeight, row.price).toFixed(2);
       }
     },
     //数量
     billWeightChange(row) {
-      if (!row.billWeight) {
-        row.billWeight = "";
-        row.amount = 0
-      } else {
-        row.amount =_.multiply(row.billWeight,row.price).toFixed(2);
+      if (row.price && row.billWeight) {
+        row.amount = _.multiply(row.billWeight, row.price).toFixed(2);
       }
     },
     beforeBillData(bool,type){
@@ -858,9 +880,6 @@ export default {
             if (this.importInventoryData[j].invoiceWeight === (null || "")) {
               return this.$message.error(`请输入销售明细第${j + 1}行的发票重量`);
             }
-            if (this.importInventoryData[j].billWeight === (null || "")) {
-              return this.$message.error(`请输入销售明细第${j + 1}行的码单重量`);
-            }
             if (this.importInventoryData[j].price === (null || "")) {
               return this.$message.error(`请输入销售明细第${j + 1}行的单价`);
             }

+ 0 - 23
src/views/salesManagement/salesContract/index.vue

@@ -7,7 +7,6 @@
                :page.sync="page"
                :search.sync="search"
                @row-del="rowDel"
-               @row-update="rowUpdate"
                :before-open="beforeOpen"
                :before-close="beforeClose"
                @row-save="rowSave"
@@ -139,20 +138,6 @@ export default {
         this.onLoad(this.page);
       });
     },
-    //修改时的修改按钮点击触发
-    rowUpdate(row, index, done, loading) {
-      typeSave(row).then(() => {
-        this.$message({
-          type: "success",
-          message: "操作成功!"
-        });
-        // 数据回调进行刷新
-        done(row);
-      }, error => {
-        window.console.log(error);
-        loading();
-      });
-    },
     //新增修改时保存触发
     rowSave(row, done, loading) {
       typeSave(row).then(res => {
@@ -160,14 +145,6 @@ export default {
         done()
       })
     },
-    //查询全部
-    initData() {
-      customerList().then(res => {
-        console.log(this.form);
-        const column = this.findObject(this.option.column, "parentId");
-        column.dicData = res.data.data.records;
-      });
-    },
     //新增子项触发
     handleAdd(row) {
       this.parentId = row.id;

+ 13 - 25
src/views/workManagement/main-items/detailsPage.vue

@@ -35,7 +35,10 @@
                 </el-select>
                 <selectComponent v-else-if="item.prop === 'corpId'" v-model="form[item.prop]" :configuration="configuration"/>
                 <el-input type="textarea" v-else-if="(item.prop === 'remark')" v-model="form[item.prop]"   size="small" autocomplete="off" placeholder="请输入"></el-input>
-                <el-input type="age" v-else-if="item.type === 'unit'" v-model="form[item.prop]"  @change="debitChange"  :disabled="item.disabled?true:false" size="small" autocomplete="off" placeholder="请输入">
+                <el-input type="age" v-else-if="item.prop === 'debitAmount'" v-model="form[item.prop]"  @change="debitChange"  :disabled="item.disabled?true:false" size="small" autocomplete="off" placeholder="请输入">
+                  <template   slot="append">元</template>
+                </el-input>
+                <el-input type="age" v-else-if="item.type === 'unit'" v-model="form[item.prop]"   :disabled="item.disabled?true:false" size="small" autocomplete="off" placeholder="请输入">
                   <template   slot="append">元</template>
                 </el-input>
                 <el-input type="age" v-else v-model="form[item.prop]"  :disabled="item.disabled?true:false" size="small" value="0" autocomplete="off" placeholder="请输入">
@@ -351,7 +354,6 @@
             },{
               label: '合同金额',
               prop: 'debitAmount',
-              type:'unit',
               rules: [
                 {
                   required: true,
@@ -382,26 +384,12 @@
               prop: 'settlmentAmount',
               disabled: true,
               type:'unit',
-              rules: [
-                {
-                  pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
-                  message: ' ',
-                  trigger: 'blur'
-                }
-              ]
             },
             {
               label: '未收金额',
               type:'unit',
               prop: 'balanceAmount',
               disabled: true,
-              rules: [
-                {
-                  pattern:/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
-                  message: ' ',
-                  trigger: 'blur'
-                }
-              ]
             },
             {
               label: '总服务费',
@@ -681,9 +669,7 @@
           projectDetail(this.id,"0,1,2,3,4,5").then(res =>{
             this.form = res.data.data;
             this.oldForm = Object.assign({},res.data.data);
-            console.log(res.data.data.corpName)
             this.configuration.dicData = this.form.corpName;
-            // this.configuration.dicData = res.data.data.corpName; //给客户名称赋值
             if(res.data.data.itemList){
               this.operationDetailList(res.data.data.itemList);
             }
@@ -825,7 +811,7 @@
       },
       //新增 修改
       editMainProject(pleaseCheck){
-        this.$refs["form"].validate((valid) => {
+        this.$refs["form"].validate((valid)  => {
           //校验明细列表
           let valids = true;
           if(this.data.length !=0){
@@ -839,6 +825,8 @@
               }
             })
           }
+          console.log(valids)
+          console.log(valid)
           if(valid && valids){
             const params = {
               ...this.form,
@@ -878,13 +866,12 @@
       pleaseCheck(){
         this.crudSelection.forEach(item =>{
           updateItemStatus(this.data[item.$index].id,1).then(res =>{
-            if(res.data.success){
-            }
+
           })
-            this.$message({
-              type: "success",
-              message: "请核成功!"
-            });
+          this.$message({
+            type: "success",
+            message: "请核成功!"
+          });
           //刷新列表
           this.getProjectDetail();
         })
@@ -1005,6 +992,7 @@
               price:item.price,
               unit:item.unit,
               frequency:item.rate,
+              projectType:0
             }
             this.$refs.crud.rowCellAdd(params);
             this.$refs.crud.rowCell(item, this.optionFrom.length-1)

+ 43 - 23
src/views/workManagement/main-items/list.vue

@@ -1,5 +1,6 @@
 <template>
-  <basic-container v-if="show">
+  <div>
+  <basic-container v-show="show">
     <avue-crud
       ref="crud"
       :data="data"
@@ -9,8 +10,6 @@
       :table-loading="loading"
       :summary-method="summaryMethod"
       @row-del="rowDel"
-      @row-update="rowUpdate"
-      @row-save="rowSave"
       @search-change="searchChange"
       @refresh-change="refreshChange"
       @on-load="getList"
@@ -22,11 +21,26 @@
           :configuration="configuration"
         ></select-component>
       </template>
-      <template slot="menuLeft" scope="{ row,index }">
+      <template slot="corpAttnSearch">
+        <el-select v-model="search.corpAttn"
+                   remote
+                   filterable
+                   clearable
+                   :remote-method="remoteMethod"
+        >
+          <el-option
+            v-for="item in options"
+            :key="item.value"
+            :label="item.realName"
+            :value="item.realName">
+          </el-option>
+        </el-select>
+      </template>
+      <template slot="menuLeft" >
         <el-button type="primary"
                    size="small"
                    icon="el-icon-plus"
-                   @click="addMainItems(row)">新 单
+                   @click="addMainItems">新 单
         </el-button>
         <el-button size="small"
                    type="info"
@@ -58,11 +72,12 @@
     </avue-crud>
   </basic-container>
   <detail-page
+    v-if="!show"
     ref="detail"
     @goBack="goBack"
     :detailData="detailData"
-    v-else
   ></detail-page>
+  </div>
 </template>
 
 <script>
@@ -71,6 +86,7 @@
   import { getList,deleteMain } from "@/api/workManagement/mainProject";
   import reportDialog from "@/components/report-dialog/main";
   import { micrometerFormat } from "@/util/validate";
+  import { getUserList } from "@/api/workManagement/mainProject";
   import _ from "lodash";
 
 export default {
@@ -79,6 +95,7 @@ export default {
       switchDialog:false,
       loading: false,
       data: [],
+      options:[],
       show: true,
       detailData:{},
       search:{},
@@ -117,6 +134,15 @@ export default {
     detailPage
   },
   methods: {
+    //远程模糊
+    remoteMethod(query){
+      let params = {
+        realName : query
+      }
+      getUserList(params).then(res=>{
+        this.options = res.data.data
+      })
+    },
     //打印
     openReport() {
       this.switchDialog =! this.switchDialog;
@@ -130,7 +156,7 @@ export default {
       params.flag = 0;
       this.loading = true;
       if(params){
-        if (params.createTime != undefined) {  //发货
+        if (params.createTime &&  params.createTime.length !=0) {  //发货
           params.createStartDate = params.createTime[0]+ " " + "00:00:00";
           params.createEndDate = params.createTime[1] + " " + "23:59:59";
           this.$delete(params,'createTime')
@@ -189,22 +215,6 @@ export default {
         });
       }
     },
-    //修改时的修改按钮点击触发
-    rowUpdate(row, index, done, loading) {
-      setTimeout(() => {
-        this.$message.success("修改成功");
-        loading();
-        done();
-      }, 1000);
-    },
-    //新增修改时保存触发
-    rowSave(row, done, loading) {
-      setTimeout(() => {
-        this.$message.success("保存成功");
-        loading();
-        done();
-      }, 1000);
-    },
     saveColumn(row, column) {
       console.log(row, column);
     },
@@ -244,6 +254,16 @@ export default {
     goBack() {
       this.detailData=this.$options.data().detailData
       this.show = true;
+
+      let params = Object.assign({}, this.search)
+
+      if (params.createTime &&  params.createTime.length !=0) {  //发货
+        params.createStartDate = params.createTime[0]+ " " + "00:00:00";
+        params.createEndDate = params.createTime[1] + " " + "23:59:59";
+        this.$delete(params,'createTime')
+      }
+
+      this.getList(this.page,params)
     },
   }
 };

+ 181 - 0
src/views/workManagement/receipt/configuration/settleAccountsDetailsADD.json

@@ -0,0 +1,181 @@
+{
+  "headerAlign": "center",
+  "align": "center",
+  "border": true,
+  "index": true,
+  "lazy": true,
+  "tip": false,
+  "searchShow": true,
+  "searchMenuSpan": 6,
+  "tree": true,
+  "selection": true,
+  "addBtn": false,
+  "viewBtn": false,
+  "editBtn": false,
+  "delBtn": false,
+  "menuWidth": 220,
+  "showSummary": true,
+  "summaryText": "合计",
+  "sumColumnList": [
+    {
+      "name": "amount",
+      "type": "sum"
+    },
+    {
+      "name": "serviceCharge",
+      "type": "sum"
+    },
+    {
+      "name": "matMoney",
+      "type": "sum"
+    }
+  ],
+  "column": [
+    {
+      "label": "状态",
+      "prop": "strStatus",
+      "type": "select",
+      "dicData": [{
+        "label": "录入",
+        "value": "追加"
+      }, {
+        "label": "录入",
+        "value": "退费"
+      }]
+    },
+    {
+      "label": "服务项目",
+      "prop": "pname",
+      "width": 120
+    },
+    {
+      "label": "收费建议",
+      "prop": "remarks",
+      "width": 150
+    },
+    {
+      "label": "服务费",
+      "prop": "serviceCharge",
+      "width": 120
+    },
+    {
+      "label": "代垫费",
+      "prop": "matMoney",
+      "width": 120
+    },
+    {
+      "label": "追加费",
+      "prop": "superaddition",
+      "hide": true,
+      "width": 120
+    },
+    {
+      "label": "合计金额",
+      "prop": "amount",
+      "overHidden": true,
+      "width": 120
+    },
+    {
+      "label": "承做人",
+      "prop": "userid",
+      "slot": true,
+      "width": 180
+    },
+    {
+      "label": "任务部门",
+      "prop": "deptid",
+      "type":"tree",
+      "dicUrl": "/api/blade-system/dept/tree?tenantId=096359",
+      "props": {
+        "label": "title",
+        "value": "value"
+      },
+      "slot": true,
+      "cell": true,
+      "width": 150,
+      "rules": [
+        {
+          "required": true,
+          "message": " ",
+          "trigger": "blur"
+        }
+      ]
+    },
+    {
+      "label": "账户名称",
+      "prop": "accountName",
+      "overHidden": true,
+      "width": 120
+    },
+    {
+      "label": "结算日期",
+      "prop": "payTime",
+      "width": 120,
+      "overHidden": true,
+      "valueFormat": "yyyy-MM-dd",
+      "format": "yyyy-MM-dd",
+      "type": "date"
+    },
+    {
+      "label": "频率",
+      "prop": "frequency",
+      "type": "select",
+      "dicUrl": "/api/blade-system/dict-biz/dictionary?code=frequency",
+      "props": {
+        "label": "dictValue",
+        "value": "dictKey"
+      },
+      "width": 120,
+      "cell": true
+    },
+    {
+      "label": "提醒日",
+      "prop": "reminderDay",
+      "valueFormat": "yyyy-MM-dd HH:mm:ss",
+      "format": "yyyy-MM-dd",
+      "type": "date",
+      "width": 150,
+      "cell": true
+    },
+    {
+      "label": "需求开始日期",
+      "prop": "beginTime",
+      "valueFormat": "yyyy-MM-dd HH:mm:ss",
+      "format": "yyyy-MM-dd",
+      "type": "date",
+      "width": 150,
+      "cell": true
+    },
+    {
+      "label": "需求完成日期",
+      "prop": "actualDate",
+      "valueFormat": "yyyy-MM-dd HH:mm:ss",
+      "format": "yyyy-MM-dd",
+      "type": "date",
+      "width": 150,
+      "cell": true
+    },
+    {
+      "label": "制单人",
+      "prop": "createUserName",
+      "disabled": true,
+      "width": 120
+    },
+    {
+      "label": "制单日期",
+      "prop": "createTime",
+      "disabled": true,
+      "width": 150
+    },
+    {
+      "label": "最新修改人",
+      "prop": "updateUserName",
+      "width": 120
+    },
+    {
+      "label": "最新修改时间",
+      "prop": "updateTime",
+      "width": 150
+    }
+  ]
+}

+ 1 - 2
src/views/workManagement/receipt/configuration/settleAccountsDetailsPage.json

@@ -13,7 +13,7 @@
   "viewBtn": false,
   "editBtn": false,
   "delBtn": false,
-  "menuWidth": 220,
+  "menuWidth": 160,
   "showSummary": true,
   "summaryText": "合计",
   "sumColumnList": [
@@ -90,7 +90,6 @@
         "label": "title",
         "value": "value"
       },
-      "slot": true,
       "width": 150,
       "rules": [
         {

+ 173 - 0
src/views/workManagement/receipt/configuration/settleAccountsDetailsReturn.json

@@ -0,0 +1,173 @@
+{
+  "headerAlign": "center",
+  "align": "center",
+  "border": true,
+  "index": true,
+  "lazy": true,
+  "tip": false,
+  "searchShow": true,
+  "searchMenuSpan": 6,
+  "tree": true,
+  "selection": true,
+  "addBtn": false,
+  "viewBtn": false,
+  "editBtn": false,
+  "delBtn": false,
+  "menuWidth": 220,
+  "showSummary": true,
+  "summaryText": "合计",
+  "sumColumnList": [
+    {
+      "name": "amount",
+      "type": "sum"
+    },
+    {
+      "name": "serviceCharge",
+      "type": "sum"
+    },
+    {
+      "name": "matMoney",
+      "type": "sum"
+    }
+  ],
+  "column": [
+    {
+      "label": "状态",
+      "prop": "strStatus"
+    },
+    {
+      "label": "服务项目",
+      "prop": "pname",
+      "width": 120
+    },
+    {
+      "label": "收费建议",
+      "prop": "remarks",
+      "width": 150
+    },
+    {
+      "label": "服务费",
+      "prop": "serviceCharge",
+      "width": 120
+    },
+    {
+      "label": "代垫费",
+      "prop": "matMoney",
+      "width": 120
+    },
+    {
+      "label": "退费",
+      "prop": "costReturn",
+      "hide": true,
+      "width": 120
+    },
+    {
+      "label": "合计金额",
+      "prop": "amount",
+      "overHidden": true,
+      "width": 120
+    },
+    {
+      "label": "承做人",
+      "prop": "userid",
+      "slot": true,
+      "width": 180
+    },
+    {
+      "label": "任务部门",
+      "prop": "deptid",
+      "type":"tree",
+      "dicUrl": "/api/blade-system/dept/tree?tenantId=096359",
+      "props": {
+        "label": "title",
+        "value": "value"
+      },
+      "slot": true,
+      "cell": true,
+      "width": 150,
+      "rules": [
+        {
+          "required": true,
+          "message": " ",
+          "trigger": "blur"
+        }
+      ]
+    },
+    {
+      "label": "账户名称",
+      "prop": "accountName",
+      "overHidden": true,
+      "width": 120
+    },
+    {
+      "label": "结算日期",
+      "prop": "payTime",
+      "width": 120,
+      "overHidden": true,
+      "valueFormat": "yyyy-MM-dd",
+      "format": "yyyy-MM-dd",
+      "type": "date"
+    },
+    {
+      "label": "频率",
+      "prop": "frequency",
+      "type": "select",
+      "dicUrl": "/api/blade-system/dict-biz/dictionary?code=frequency",
+      "props": {
+        "label": "dictValue",
+        "value": "dictKey"
+      },
+      "width": 120,
+      "cell": true
+    },
+    {
+      "label": "提醒日",
+      "prop": "reminderDay",
+      "valueFormat": "yyyy-MM-dd HH:mm:ss",
+      "format": "yyyy-MM-dd",
+      "type": "date",
+      "width": 150,
+      "cell": true
+    },
+    {
+      "label": "需求开始日期",
+      "prop": "beginTime",
+      "valueFormat": "yyyy-MM-dd HH:mm:ss",
+      "format": "yyyy-MM-dd",
+      "type": "date",
+      "width": 150,
+      "cell": true
+    },
+    {
+      "label": "需求完成日期",
+      "prop": "actualDate",
+      "valueFormat": "yyyy-MM-dd HH:mm:ss",
+      "format": "yyyy-MM-dd",
+      "type": "date",
+      "width": 150,
+      "cell": true
+    },
+    {
+      "label": "制单人",
+      "prop": "createUserName",
+      "disabled": true,
+      "width": 120
+    },
+    {
+      "label": "制单日期",
+      "prop": "createTime",
+      "disabled": true,
+      "width": 150
+    },
+    {
+      "label": "最新修改人",
+      "prop": "updateUserName",
+      "width": 120
+    },
+    {
+      "label": "最新修改时间",
+      "prop": "updateTime",
+      "width": 150
+    }
+  ]
+}

+ 36 - 9
src/views/workManagement/receipt/configuration/statisticalList.json

@@ -9,7 +9,7 @@
   "searchShow": true,
   "searchMenuPosition": "right",
   "tree": true,
-  "searchMenuSpan": 24,
+  "searchMenuSpan": 16,
   "searchSpan": 8,
   "searchIcon": true,
   "searchIndex": 2,
@@ -32,6 +32,10 @@
     {
       "name": "matMoney",
       "type": "sum"
+    },
+    {
+      "name": "grossIncome",
+      "type": "sum"
     }
   ],
   "column": [
@@ -100,6 +104,29 @@
       ]
     },
     {
+      "label": "费用类型",
+      "prop": "projectType",
+      "overHidden": true,
+      "search": true,
+      "type": "select",
+      "dicData": [
+        {
+        "label": "正常",
+        "value": 0
+        },
+        {
+          "label": "追加",
+          "value": 1
+        },
+        {
+          "label": "退款",
+          "value": 2
+        }
+      ],
+      "index": 2,
+      "width": 80
+    },
+    {
       "label": "客户名称",
       "prop": "cornName",
       "overHidden": true,
@@ -135,14 +162,6 @@
       "width": 120
     },
     {
-      "label": "承做人",
-      "prop": "userName",
-      "index": 8,
-      "search": true,
-      "overHidden": true,
-      "width": 120
-    },
-    {
       "label": "任务部门",
       "prop": "deptName",
       "index": 9,
@@ -170,6 +189,14 @@
       "width":150
     },
     {
+      "label": "承做人",
+      "prop": "userName",
+      "index": 8,
+      "search": true,
+      "overHidden": true,
+      "width": 120
+    },
+    {
       "label": "频率",
       "prop": "frequency",
       "index": 12,

+ 42 - 5
src/views/workManagement/receipt/settleAccounts.vue

@@ -1,5 +1,6 @@
 <template>
-  <basic-container  v-if="show">
+  <div>
+  <basic-container  v-show="show">
     <avue-crud
       ref="crud"
       :data="data"
@@ -21,6 +22,21 @@
           :configuration="configuration"
         ></select-component>
       </template>
+      <template slot="corpAttnSearch">
+        <el-select v-model="search.corpAttn"
+                   remote
+                   filterable
+                   clearable
+                   :remote-method="remoteMethod"
+        >
+          <el-option
+            v-for="item in options"
+            :key="item.value"
+            :label="item.realName"
+            :value="item.realName">
+          </el-option>
+        </el-select>
+      </template>
       <template slot-scope="{row,index}" slot="menuLeft">
         <el-button
           icon="el-icon-printer"
@@ -42,17 +58,19 @@
     </avue-crud>
   </basic-container>
   <detail-page
+    v-if="!show"
     ref="detail"
     @goBack="goBack"
     :detailData="detailData"
-    v-else
   ></detail-page>
+  </div>
 </template>
 
 <script>
   import option from "./configuration/settleAccounts.json";
   import { getList } from "@/api/workManagement/mainProject";
   import detailPage from "./settleAccountsDetailsPage.vue";
+  import { getUserList } from "@/api/workManagement/mainProject";
 
   export default {
     data() {
@@ -61,6 +79,7 @@
         show:true,
         detailData:{},
         data: [],
+        options:[],
         option: option,
         search:{},
         configuration:{
@@ -87,11 +106,20 @@
       // option.height = window.innerHeight - 340 ;
     },
     methods: {
+      //远程模糊
+      remoteMethod(query){
+        let params = {
+          realName : query
+        }
+        getUserList(params).then(res=>{
+          this.options = res.data.data
+        })
+      },
       getList(page,params={}) {
         this.loading = true;
         params.flag = 1;
         if(params){
-          if (params.createTime != undefined) {  //发货
+          if (params.createTime &&  params.createTime.length !=0) {  //发货
             params.createStartDate = params.createTime[0]+ " " + "00:00:00";
             params.createEndDate = params.createTime[1] + " " + "23:59:59";
             this.$delete(params,'createTime')
@@ -123,8 +151,7 @@
         this.getList();
       },
       refreshChange() {
-        this.page.currentPage = 1;
-        this.getList();
+        this.getList(this.page);
       },
       //删除列表后面的删除按钮触发触发(row, index, done)
       rowDel(row, index, done) {
@@ -147,6 +174,16 @@
       goBack() {
         this.detailData=this.$options.data().detailData
         this.show = true;
+
+        let params = Object.assign({}, this.search)
+
+        if (params.createTime &&  params.createTime.length !=0) {  //发货
+          params.createStartDate = params.createTime[0]+ " " + "00:00:00";
+          params.createEndDate = params.createTime[1] + " " + "23:59:59";
+          this.$delete(params,'createTime')
+        }
+
+        this.getList(this.page,params)
       },
     }
   };

+ 294 - 54
src/views/workManagement/receipt/settleAccountsDetailsPage.vue

@@ -28,7 +28,7 @@
                   <template   slot="append">元</template>
                 </el-input>
                 <selectComponent v-else-if="item.prop === 'corpId'" :disabled="item.disabled?true:false"  v-model="form[item.prop]" :configuration="configuration"/>
-                <el-input type="textarea" v-else-if="(item.prop === 'remark'||item.prop === 'settlementRemark')"v-model="form[item.prop]" :disabled="item.disabled && item.prop === 'remark'?true:false"  size="small" autocomplete="off" placeholder="请输入"></el-input>
+                <el-input type="textarea" v-else-if="(item.prop === 'remark'||item.prop === 'settlementRemark')" v-model="form[item.prop]" :disabled="item.disabled && item.prop === 'remark'?true:false"  size="small" autocomplete="off" placeholder="请输入"></el-input>
                 <el-input type="age" v-else v-model="form[item.prop]" :disabled="item.disabled?true:false" size="small" autocomplete="off" placeholder="请输入"></el-input>
               </el-form-item>
             </el-col>
@@ -47,38 +47,50 @@
                    @selection-change="selectionChange"
                    @current-change="currentChange"
                    @size-change="sizeChange"
+                   @row-update="rowUpdate"
                    @refresh-change="refreshChange">
           <template slot="menuLeft">
+            <el-tabs v-model="activeName" @tab-click="handleClick">
+              <el-tab-pane label="原始数据" name="first" :key="'first'">
+              </el-tab-pane>
+              <el-tab-pane label="追加" name="second" :key="'second'">
+              </el-tab-pane>
+              <el-tab-pane label="退款" name="three" :key="'three'">
+              </el-tab-pane>
+            </el-tabs>
+          </template>
+          <template slot="menuRight">
             <el-button
-              icon="el-icon-printer"
-              size="small"
               type="primary"
-              @click.stop="openReport()"
-            >报表
+              size="small"
+              v-if="secondDisable == 1  || secondDisable == 2 "
+              @click.stop="serviceDialog = true"
+            >录入明细
             </el-button>
+          </template>
+          <template slot-scope="scope" slot="menu">
             <el-button
-              icon="el-icon-printer"
+              type="text"
               size="small"
-              type="primary"
-              :disabled="selectList.length == 0"
-              @click.stop="costAdd()"
-            >追加代垫费
+              :disabled="scope.row.status == 5"
+              v-if="secondDisable == 1  || secondDisable == 2 "
+              @click="rowCell(scope.row,scope.index)"
+            >{{ scope.row.$cellEdit ? '修改完成' : '修改' }}
             </el-button>
             <el-button
-              icon="el-icon-printer"
+              type="text"
               size="small"
-              type="primary"
-              :disabled="selectList.length == 0"
-              @click.stop="costReturn()"
-            >退费
+              :disabled="scope.row.status == 5"
+              v-if="secondDisable == 1  || secondDisable == 2 "
+              @click="rowDel(scope.row,scope.index)"
+            >删除
             </el-button>
-          </template>
-          <template slot-scope="scope" slot="menu">
             <el-button
               type="text"
               icon="el-icon-check"
               size="small"
-              v-if="scope.row.status == 4"
+              :disabled="!scope.row.id"
+              v-if="scope.row.status != 5 && (scope.row.status == 4 || secondDisable == 1  || secondDisable == 2)"
               @click.stop="beforeCloseAccount(scope.row,scope.index)"
             >结 算
             </el-button>
@@ -91,6 +103,78 @@
             >取消结算
             </el-button>
           </template>
+          <template slot="userid" slot-scope="{row,index}">
+            <span v-if="row.$cellEdit" class="required_fields">*</span>
+            <user-select
+              style="width:90% !important;"
+              v-if="row.$cellEdit"
+              v-model="row.userName"
+              @value="(values) => value(values,row)"
+              :configuration="UConfiguration"
+            >
+            </user-select>
+            <span v-else>{{ row.userName }}</span>
+          </template>
+          <template slot="amount" slot-scope="{ row }">
+            <el-input
+              v-if="row.$cellEdit"
+              v-model="row.amount"
+              placeholder="请输入"
+              size="small"
+              oninput='this.value=this.value.replace(/[^(\-?\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+            ></el-input>
+            <span v-else>{{ row.amount }}</span>
+          </template>
+          <template slot="serviceCharge" slot-scope="{ row }">
+            <span v-if="row.$cellEdit" class="required_fields">*</span>
+            <el-input
+              v-if="row.$cellEdit"
+              v-model="row.serviceCharge"
+              style="width:90% !important;"
+              placeholder="请输入"
+              size="small"
+              oninput='this.value=this.value.replace(/[^(\-?\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+              @input="costCount(row)"
+            ></el-input>
+            <span v-else>{{ row.serviceCharge }}</span>
+          </template>
+          <template slot="matMoney" slot-scope="{ row }">
+            <span v-if="row.$cellEdit" class="required_fields">*</span>
+            <el-input
+              v-if="row.$cellEdit"
+              v-model="row.matMoney"
+              style="width:90% !important;"
+              placeholder="请输入"
+              size="small"
+              oninput='this.value=this.value.replace(/[^(\-?\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+              @input="costCount(row)"
+            ></el-input>
+            <span v-else>{{ row.matMoney }}</span>
+          </template>
+          <template slot="costReturn" slot-scope="{ row }">
+            <span v-if="row.$cellEdit" class="required_fields">*</span>
+            <el-input
+              v-if="row.$cellEdit"
+              style="width:90% !important;"
+              v-model="row.costReturn"
+              placeholder="请输入"
+              size="small"
+              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+            ></el-input>
+            <span v-else>{{ row.costReturn }}</span>
+          </template>
+          <template slot="superaddition" slot-scope="{ row }">
+            <span v-if="row.$cellEdit" class="required_fields">*</span>
+            <el-input
+              v-if="row.$cellEdit"
+              style="width: 90%"
+              v-model="row.superaddition"
+              placeholder="请输入"
+              size="small"
+              oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'
+            ></el-input>
+            <span v-else>{{ row.superaddition }}</span>
+          </template>
         </avue-crud>
       </basic-container>
       <containerTitle title="附件上传"></containerTitle>
@@ -106,6 +190,24 @@
       </basic-container>
     </div>
     <el-dialog
+      title="导入服务项目"
+      append-to-body
+      class="el-dialogDeep"
+      :visible.sync="serviceDialog"
+      width="70%"
+      :close-on-click-modal="false"
+      :destroy-on-close="true"
+      :modal-append-to-body='false'
+      :close-on-press-escape="false"
+      v-dialog-drag
+    >
+      <service-component
+        @serviceConfirm="serviceConfirm"
+        @choce="choce"
+      >
+      </service-component>
+    </el-dialog>
+    <el-dialog
       title="结算"
       append-to-body
       class="el-dialogDeep"
@@ -114,7 +216,6 @@
       :close-on-click-modal="false"
       :destroy-on-close="true"
       :close-on-press-escape="false">
-
       <el-form  :model="accountFormData" ref="accountFormData">
         <el-form-item label="账户名称"  class="landConFrom-input" prop="accountName" :rules="rules">
           <el-input v-model="accountFormData.accountName" style="width: 220px;" size="small" clearable  placeholder="请输入" ></el-input>
@@ -133,12 +234,16 @@
 
 <script>
   import option from "./configuration/settleAccountsDetailsPage.json";
+  import optionAdd from "./configuration/settleAccountsDetailsADD.json";
+  import optionReturn from "./configuration/settleAccountsDetailsReturn.json";
   import upLoadOption from "../../exportTrade/purchaseContract/config/uploadList.json";
   import { projectDetail,editMianProject,updateItemStatus } from "@/api/workManagement/mainProject";
   //业务字典
   import { getDictionary } from "@/api/system/dictbiz";
   //上传附件删除
   import { corpsbank } from "@/api/basicData/configuration"
+  import serviceComponent from "@/components/mainProject/index"
+  import _ from "lodash";
 
 
   export default {
@@ -148,10 +253,19 @@
         type: Object
       }
     },
+    components:{
+      serviceComponent
+    },
     data() {
       return {
         loading:false,
         accountDialog:false,
+        serviceDialog:false,
+        activeName: "first",
+        tab1:true,
+        tab2:false,
+        tab3:false,
+        secondDisable:0,
         aaccount:{},
         form: {},
         accountFormData:{
@@ -162,11 +276,21 @@
           trigger: 'blur'
         }
         ],
+        UConfiguration:{
+          multipleChoices:false,
+          multiple:false,
+          disabled:false,
+          searchShow:true,
+          collapseTags:false,
+          placeholder:'请点击右边按钮选择',
+          dicData:[]
+        },
         option: option,
         parentId:0,
         account:{},
         paymentTerm:[],
         selectList:[],
+
         page: {
           pageSize: 10,
           pagerCount: 5,
@@ -233,26 +357,12 @@
               prop: 'balanceAmount',
               type:'unit',
               disabled: true,
-              rules: [
-                {
-                  pattern: /^(([1-9][0-9]*)|(([0]\.\d{1,2}|[1-9][0-9]*\.\d{1,2})))$/,
-                  message: ' ',
-                  trigger: 'blur'
-                }
-              ]
             },
             {
               label: '已收金额',
               prop: 'settlmentAmount',
               type:'unit',
               disabled: true,
-              rules: [
-                {
-                  pattern: /^(([1-9][0-9]*)|(([0]\.\d{1,2}|[1-9][0-9]*\.\d{1,2})))$/,
-                  message: ' ',
-                  trigger: 'blur'
-                }
-              ]
             },
             {
               label: '服务费',
@@ -330,14 +440,6 @@
               type:'datetime',
             },
             {
-              label: '追加代垫费',
-              prop: 'superaddition',
-            },
-            {
-              label: '退费',
-              prop: 'costReturn',
-            },
-            {
               label: '备注',
               span: 24,
               prop: 'remark',
@@ -351,8 +453,11 @@
             },
           ],
         },
-        //列表假数据
-        dataList : [],
+        dataList: [],
+        allDataList:[],
+        data_one:[],
+        data_two:[],
+        data_three:[],
         //上传文件
         upLoadOption: upLoadOption,
         upLoadData:[],
@@ -360,7 +465,7 @@
       }
     },
     created() {
-      this.id = BigInt(this.detailData.id);
+      this.id = this.detailData.id;
       this.getProjectDetail();
       const params = {
         code : "affair_payment_term"
@@ -373,24 +478,85 @@
 
     },
     methods: {
-      //追加代垫费
-      costAdd(){
-        this.selectList.forEach(item =>{
-
-        })
+      value(value,row){
+        row.userid = value.id
+        row.deptid = value.deptId
+      },
+      costCount(row){
+        if(row.serviceCharge && row.matMoney){
+          row.amount = _.add(parseFloat(row.serviceCharge),parseFloat(row.matMoney));
+        }
       },
-      //退费
-      costReturn(){
+      handleClick(tab) {
+        if(tab.name == "first") {
+          this.tab1 = true;
+          this.tab2 = false;
+          this.tab3 = false;
+
+          if(this.secondDisable == 1){
+            this.data_two = this.dataList
+          }
+          if(this.secondDisable == 2){
+            this.data_three = this.dataList
+          }
+
+          this.secondDisable = 0
+          this.option = option  //换option
+          this.dataList = this.data_one  //切换数据
+        } else if(tab.name == "second") {
+          this.tab1 = false;
+          this.tab2 = true;
+          this.tab3 = false;
+
+          if(this.secondDisable == 0){
+            this.data_one = this.dataList
+          }
+          if(this.secondDisable == 2){
+            this.data_three = this.dataList
+          }
+
+          this.secondDisable = 1
+          this.option = optionAdd
+          this.dataList = this.data_two
+        }else if(tab.name == "three") {
+          this.tab1 = false;
+          this.tab2 = false;
+          this.tab3 = true;
 
+          if(this.secondDisable == 0){
+            this.data_one = this.dataList
+          }
+          if(this.secondDisable == 1){
+            this.data_two = this.dataList
+          }
+
+          this.secondDisable = 2
+          this.option = optionReturn
+          this.dataList = this.data_three
+        }
       },
       getProjectDetail(){
         if(this.id){
-          projectDetail(this.id,"4,5").then(res =>{
+          projectDetail(this.id,"4,5,7,8").then(res =>{
             this.form = res.data.data;
             this.configuration.dicData   = res.data.data.corpName
             if(res.data.data.itemList){
               this.loading = true;
-              this.dataList = res.data.data.itemList;
+              this.allDataList = res.data.data.itemList;
+
+              this.data_one=this.allDataList.filter(item=>item.projectType === 0)
+              this.data_two=this.allDataList.filter(item=>item.projectType === 1)
+              this.data_three=this.allDataList.filter(item=>item.projectType === 2)
+
+              this.dataList = this.data_one
+
+              this.activeName =  "first"
+              this.tab1 = true;
+              this.tab2 = false;
+              this.tab3 = false;
+              this.option = option
+              this.secondDisable = 0
+
               this.loading = false;
             }
             if(res.data.data.filesList){
@@ -451,13 +617,68 @@
       backToList(){
         this.$emit("goBack");
       },
+
+      serviceConfirm(list){
+        list.forEach((item)=>{
+          const params = {
+            strStatus:"录入",
+            pname:item.cname,
+            remarks:item.remarks,
+            price:item.price,
+            unit:item.unit,
+            frequency:item.rate,
+            projectType:this.secondDisable,
+            status:this.secondDisable === 1?7:8
+          }
+          this.$refs.crud.rowCellAdd(params);
+        })
+        this.serviceDialog = false
+      },
+      choce(){
+        this.serviceDialog = false
+      },
       //新增 修改
       editMainProject(){
+        if(this.secondDisable == 0){
+          this.dataList = this.data_one
+        }
+        if(this.secondDisable == 1){
+          this.dataList = this.data_two
+        }
+        if(this.secondDisable == 2){
+          this.dataList = this.data_three
+        }
+        this.allDataList = []
+        this.allDataList.push(...this.data_one,...this.data_two,...this.data_three)
+
+        for (let i = 0; i < this.allDataList.length; i++) {
+          if(this.allDataList[i].serviceCharge === (null || "")){
+            return this.$message.error(`请输入明细列表服务费必填项`);
+          }
+          if(this.allDataList[i].matMoney === (null || "")){
+            return this.$message.error(`请输入明细列表代垫费必填项`);
+          }
+
+          if(this.allDataList[i].userid === (null || "")){
+            return this.$message.error(`请输入明细列表承做人必填项`);
+          }
+          if(this.allDataList[i].deptid === (null || "")){
+            return this.$message.error(`请输入明细列表任务部门必填项`);
+          }
+
+          // if(this.allDataList[i].projectType === 2){
+          //   this.allDataList[i].serviceCharge = -this.allDataList[i].serviceCharge
+          //   this.allDataList[i].matMoney = -this.allDataList[i].matMoney
+          // }
+
+        }
+
         const params = {
           ...this.form,
-          itemList:this.dataList,
+          itemList:this.allDataList,
           filesList:this.upLoadData
         }
+
         editMianProject(params).then(res =>{
           if(res.data.success){
             this.$message({
@@ -483,6 +704,25 @@
       refreshChange() {
         console.log('1')
       },
+      rowCell(row, index) {
+        if(row.$cellEdit){
+          row.$cellEdit = !row.$cellEdit
+        }else{
+          this.$refs.crud.rowCell(row, index);
+        }
+      },
+      rowUpdate(row, index, done, loading) {
+        done(row);
+      },
+      rowDel(row,index){
+        this.$confirm("确定将此明细删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(() => {
+          this.dataList.splice(index,1)
+        });
+      },
       //上传文件保存
       upLoadSave(row, done, loading){
         this.upLoadData.push(row)

+ 26 - 2
src/views/workManagement/receipt/statisticalList.vue

@@ -29,6 +29,21 @@
           :configuration="configuration"
         ></select-component>
       </template>
+      <template slot="userNameSearch">
+        <el-select v-model="search.userName"
+                   remote
+                   filterable
+                   clearable
+                   :remote-method="remoteMethod"
+                  >
+          <el-option
+            v-for="item in options"
+            :key="item.value"
+            :label="item.realName"
+            :value="item.realName">
+          </el-option>
+        </el-select>
+      </template>
       <template slot-scope="scope" slot="menu">
         <el-button
           type="text"
@@ -43,7 +58,7 @@
 
 <script>
   import option from "./configuration/statisticalList.json";
-  import { getFlowList } from "@/api/workManagement/mainProject";
+  import { getFlowList,getUserList } from "@/api/workManagement/mainProject";
 
   export default {
     name: "statisticalList",
@@ -55,6 +70,7 @@
         option: option,
         parentId:0,
         dataList: [],
+        options:[],
         page: {
           currentPage: 1,
           total: 0,
@@ -91,6 +107,14 @@
       rowSave() {
 
       },
+      remoteMethod(query){
+        let params = {
+          realName : query
+        }
+        getUserList(params).then(res=>{
+          this.options = res.data.data
+        })
+      },
       check(row,index){
         if(this.$store.getters.mainItemStatus){
           this.$alert("主营项目页面已存在,请关闭主营项目再进行操作", "温馨提示", {
@@ -134,7 +158,7 @@
           params.payEndTime = params.payTime[1] + " " + "23:59:59";
           this.$delete(params,'payTime')
         }
-        if(!params.status){
+        if(!params.status && params.status!==0){
             params.status = "0,1,2,3,4,5,6";
         }
         this.loading = true

+ 6 - 7
src/views/workManagement/service-items/project.vue

@@ -34,7 +34,6 @@
           @cell-dblclick="cellDblclick"
           @on-load="getList"
           @saveColumn="saveColumn"
-          @tree-load="treeLoad"
         >
           <template slot="menuLeft">
             <el-button
@@ -227,12 +226,12 @@ export default {
       this.getList(this.page);
     },
     //列表内展开树节点
-    treeLoad(tree, treeNode, resolve) {
-      const parentId = tree.id;
-      getList({parentId:parentId}).then(res => {
-        resolve(res.data.data.records);
-      });
-    },
+    // treeLoad(tree, treeNode, resolve) {
+    //   const parentId = tree.id;
+    //   getServiceProjectList({parentId:parentId}).then(res => {
+    //     resolve(res.data.data.records);
+    //   });
+    // },
   }
 };
 </script>