Sfoglia il codice sorgente

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

QuKatie 3 anni fa
parent
commit
2a08b3ab3a

+ 37 - 0
src/api/logs.js

@@ -61,4 +61,41 @@ export const getErrorLogs = (id) => {
     }
   })
 }
+//消息列表
+export const getMsgLogs = () => {
+  return request({
+    url: '/api/blade-client/message/list',
+    method: 'get',
+  })
+}
+
+//socket 辅助接口
+export const getMessage = () => {
+  return request({
+    url: '/api/blade-client/message/getUserMessage',
+    method: 'get',
+  })
+}
+
+//推送消息
+export const saveMessage = (data) => {
+  return request({
+    url: '/api/blade-client/message/save',
+    method: 'post',
+    data:data
+  })
+}
+
+//消息列表
+export const getMsgDetail = (id) => {
+  return request({
+    url: '/api/blade-client/message/detail',
+    method: 'get',
+    params : {
+      id:id
+    }
+  })
+}
+
+
 

+ 10 - 0
src/api/maintenance/overpayment.js

@@ -1,5 +1,6 @@
 import request from '@/router/axios';
 
+// 溢付款查询
 export const getList = (current, size, params) => {
   return request({
     url: '/api/blade-mocha-item/businessoverpayment/list',
@@ -11,3 +12,12 @@ export const getList = (current, size, params) => {
     }
   })
 }
+
+//溢付款主表查询
+export function getCorpDetail(data) {
+  return request({
+    url: '/api//blade-mocha-item/businessoverpayment/detail',
+    method: 'get',
+    params: data
+  })
+}

+ 1 - 1
src/components/check/check.vue

@@ -2,7 +2,7 @@
   <div>
     <avue-form class="trading-form" :option="option" ref="form" v-model="form">
     </avue-form>
-    <div style="margin-left: 69%;padding: 10px">
+    <div style="margin-left: 60%;padding: 10px">
       <el-button size="small" @click="$emit('choceCheckFun')">关闭</el-button>
       <el-button type="warning" size="small" @click="submit(2)">审批驳回</el-button>
       <el-button type="primary" size="small" @click="submit(1)">审批通过</el-button>

+ 1 - 0
src/components/fee-info/main.vue

@@ -605,6 +605,7 @@ export default {
             item.itemType = '采购'
             item.optionType = this.optionType
             item.srcType = 2   //费用明细申请
+            item.tradeType = this.optionType
           })
           let data = {
             billType: type,

+ 0 - 2
src/components/function/corpAddrSelect.js

@@ -3,7 +3,6 @@ import {detail} from "@/api/basicData/customerInformation";
 export async function corpAddr(id) {
   let addrList = [];
   await detail(id).then(data => {
-    console.log(data.data.data)
     if (data.data.data.storageAddr) {
       addrList.push({
         label: data.data.data.storageAddr
@@ -16,7 +15,6 @@ export async function corpAddr(id) {
         })
       })
     }
-    console.log(addrList)
   })
   return addrList
 }

+ 62 - 23
src/page/index/top/top-notice.vue

@@ -3,7 +3,7 @@
               width="350"
               trigger="click">
 
-    <el-tabs v-model="activeName">
+    <el-tabs v-model="activeName" style="align-items: center">
       <el-tab-pane label="消息"
                    name="first">
       </el-tab-pane>
@@ -11,17 +11,20 @@
     <el-scrollbar style="height:300px">
       <avue-notice :data="data"
                    :option="option"
-                   @page-change="pageChange"></avue-notice>
+                   @click="goUrl"
+                   @page-change="pageChange">
+      </avue-notice>
     </el-scrollbar>
     <div slot="reference">
       <el-badge  :value="badge">
-        <i class="el-icon-bell"></i>
+        <i class="el-icon-bell" @click="init"></i>
       </el-badge>
     </div>
   </el-popover>
 </template>
 
 <script>
+  import { getMsgLogs , getMsgDetail,getMessage } from "@/api/logs";
 export default {
   name: "top-notice",
   data () {
@@ -30,14 +33,14 @@ export default {
       option: {
         props: {
           img: 'img',
-          title: 'title',
-          subtitle: 'subtitle',
+          title: 'messageBody',
+          subtitle: 'createTime',
           tag: 'tag',
-          status: 'status'
+          status: 'messageType'
         },
       },
       data: [],
-      path:"ws://192.168.1.151:8104/websocket?user=1",
+      path:"",
       socket:"",
       badge:''
     }
@@ -46,11 +49,21 @@ export default {
     // this.webSocket();
   },
   mounted() {
+    //60秒轮训消息
+    window.setInterval(() => {
+      setTimeout(() => {
+        this.assistMessage()
+      },0)
+    },60000)
+    this.path = "wss://trade.tubaosoft.com/api/blade-client/websocket?user=" + this.$store.getters.userInfo.user_id
      this.init();
   },
   methods: {
     //初始化
     init(){
+      getMsgLogs().then(res=>{
+        this.afterData(res.data.data.records)
+      })
       if(typeof(WebSocket) === "undefined"){
         alert("您的浏览器不支持socket")
       }else{
@@ -62,25 +75,23 @@ export default {
         this.socket.onerror = this.error
         // 监听socket消息
         this.socket.onmessage = this.getMessage
+        this.assistMessage()
       }
     },
     open() {
       console.log("socket连接成功")
-      console.log()
     },
     error() {
       console.log("连接错误")
     },
     getMessage(msg){
-      console.log(msg.data)
-
-      // let msgData =  JSON.stringify(msg.data);
-      // console.log(msgData)
-      // if(msg.data.unRead){
-      //   this.badge = msg.data.unReadNum
-      // }else{
-      //   this.badge = ''
-      // }
+      let msgData = JSON.parse(msg);
+      console.log(msgData.data.unRead)
+      if(msgData.data.unRead){
+        this.badge = msgData.data.unReadNum
+      }else{
+        this.badge = ''
+      }
     },
     send() {
       // this.socket.send(params)
@@ -88,13 +99,38 @@ export default {
     close() {
       console.log("socket已经关闭")
     },
-
+    assistMessage(){
+      //辅助消息接口
+      getMessage().then(res=>{
+        this.getMessage(JSON.stringify(res))
+      })
+    },
+    goUrl(row){
+      if(row.url){
+        this.$router.push({
+          path: row.url,
+          query: {params:row.parameter},
+        });
+      }
+      getMsgDetail(row.id).then(res=>{
+        this.$set(row,"isRead",res.data.data.isRead)
+        this.afterData(this.data)
+        this.assistMessage()
+      })
+    },
+    afterData(data){
+      this.data = data.map(item =>{
+        if(item.isRead == 0){
+          item.tag = "未读"
+          item.messageType = 1//状态  0 灰色  1 蓝色 2 橙色 3 红色 4 绿色
+        }else{
+          item.tag = "已读"
+          item.messageType = 0
+        }
+        return item
+      })
+    },
     pageChange (page, done) {
-      setTimeout(() => {
-        this.$message.success('页码' + page)
-        this.data = this.data.concat(list);
-        done();
-      }, 1000)
 
     },
   }
@@ -102,4 +138,7 @@ export default {
 </script>
 
 <style lang="scss" scoped>
+  ::v-deep .avue-notice__more {
+    display: none;
+  }
 </style>

+ 5 - 0
src/views/basicData/productInformation/detailsPageEdit.vue

@@ -342,6 +342,9 @@ export default {
               this.form.corpName = e.cname;
             }
           });
+          if (typeof this.form.goodsTypeId !== 'string') {
+            this.form.goodsTypeId = this.form.goodsTypeId.join(',')
+          }
           const params = {
             ...this.form,
             type: 0
@@ -353,6 +356,8 @@ export default {
             }
             this.form = res.data.data
             this.queryData(res.data.data.id)
+          }).catch(() => {
+            this.openFullScreen(true);
           });
         } else {
           return false;

+ 1 - 0
src/views/businessManagement/deliveryNotice/configuration/commodity.json

@@ -36,6 +36,7 @@
       "slot": true,
       "width": 100,
       "overHidden": true,
+      "search": true,
       "rules": [
         {
           "required": true,

+ 43 - 21
src/views/businessManagement/deliveryNotice/detailsPageEdit.vue

@@ -18,7 +18,7 @@
           class="el-button--small-yh"
           type="primary"
           size="small"
-          :disabled="detailData.seeDisabled || arrivalDisabled"
+          :disabled="detailData.seeDisabled"
           v-if="form.deliveryStatus == '已到货'"
           @click="cancelArrival"
         >撤销到货</el-button>
@@ -74,31 +74,31 @@
                 <!--                <avue-input-tree v-if="item.prop === 'corpsTypeId'"  leaf-only multiple :props="{label:'title'}" v-model="form[item.prop]" placeholder="请选择内容" type="tree" :dic="dic"-->
                 <!--                ></avue-input-tree>-->
                 <el-date-picker v-if="item.type === 'datetime'" style="width: 100%;" v-model="form[item.prop]"
-                                size="small" type="datetime" placeholder="选择日期" value-format="yyyy-MM-dd HH:mm:ss" :disabled="item.disabled || detailData.seeDisabled || arrivalDisabled"/>
+                                size="small" type="datetime" placeholder="选择日期" value-format="yyyy-MM-dd HH:mm:ss" :disabled="item.disabled || detailData.seeDisabled || arrivalDisabled || deliverDisabled"/>
                 <el-date-picker v-else-if="item.type === 'date'" style="width: 100%;" v-model="form[item.prop]"
                                 size="small" type="date" placeholder="选择日期"
-                                :disabled="detailData.seeDisabled || arrivalDisabled"/>
+                                :disabled="detailData.seeDisabled || arrivalDisabled || deliverDisabled"/>
                 <crop-select
                   v-else-if="item.prop === 'corpId'"
                   v-model="form[item.prop]"
                   corpType="KH"
-                  :disabled="detailData.seeDisabled || arrivalDisabled"
+                  :disabled="detailData.seeDisabled || arrivalDisabled || deliverDisabled"
                   style="width: 100%"
                 ></crop-select>
                 <crop-select
                   v-else-if="item.prop === 'salesCompany'"
                   v-model="form[item.prop]"
                   corpType="GS"
-                  :disabled="detailData.seeDisabled || arrivalDisabled"
+                  :disabled="detailData.seeDisabled || arrivalDisabled || deliverDisabled"
                 ></crop-select>
 <!--                <selectComponent v-else-if="item.prop === 'corpId'" v-model="form[item.prop]"-->
 <!--                                 :configuration="configuration" style="width: 100%" :disabled="detailData.seeDisabled"/>-->
 <!--                <selectComponent v-else-if="item.prop === 'salesCompany'" v-model="form[item.prop]" typeData="GS"-->
 <!--                                 :configuration="companyConfiguration" style="width: 100%" :disabled="detailData.seeDisabled"/>-->
-                <el-select v-else-if="item.prop === 'deliveryStatus'" v-model="form[item.prop]" placeholder="请选择" clearable filterable style="width: 100%" size="small" :disabled="item.disabled || detailData.seeDisabled || arrivalDisabled">
+                <el-select v-else-if="item.prop === 'deliveryStatus'" v-model="form[item.prop]" placeholder="请选择" clearable filterable style="width: 100%" size="small" :disabled="item.disabled || detailData.seeDisabled || arrivalDisabled || deliverDisabled">
                   <el-option v-for="(item,index) in statusOption" :key="index" :label="item.dictValue" :value="item.dictValue" size="small"></el-option>
                 </el-select>
-                <el-select v-else-if="item.prop === 'warehouseType'" v-model="form[item.prop]" placeholder="请选择" clearable filterable style="width: 100%" size="small" :disabled="detailData.seeDisabled || arrivalDisabled">
+                <el-select v-else-if="item.prop === 'warehouseType'" v-model="form[item.prop]" placeholder="请选择" clearable filterable style="width: 100%" size="small" :disabled="detailData.seeDisabled || arrivalDisabled || deliverDisabled">
                   <el-option v-for="(item,index) in warehouseTypeOption" :key="index" :label="item.dictValue" :value="item.dictValue"></el-option>
                 </el-select>
 <!--                <avue-input-tree-->
@@ -114,17 +114,17 @@
 <!--                >-->
 <!--                </avue-input-tree>-->
                 <warehouse-select v-else-if="item.prop === 'storageId'" v-model="form[item.prop]"
-                                 :configuration="configurationWarehouse" style="width: 100%" :disabled="detailData.seeDisabled || arrivalDisabled"/>
+                                 :configuration="configurationWarehouse" style="width: 100%" :disabled="detailData.seeDisabled || arrivalDisabled || deliverDisabled"/>
                 <el-input
                   v-else-if="item.type == 'number'"
                   placeholder="请输入"
                   v-input-limit="2"
                   size="small"
-                  :disabled="item.disabled || detailData.seeDisabled || arrivalDisabled"
+                  :disabled="item.disabled || detailData.seeDisabled || arrivalDisabled || deliverDisabled"
                   v-model.trim="form[item.prop]"
                 />
                 <el-input type="textarea" v-else-if="item.type === 'textarea'" v-model.trim="form[item.prop]" size="small" autocomplete="off" :disabled="item.disabled || detailData.seeDisabled || arrivalDisabled"></el-input>
-                <el-input type="age" v-else v-model.trim="form[item.prop]" size="small" autocomplete="off" :disabled="item.disabled || detailData.seeDisabled || arrivalDisabled"></el-input>
+                <el-input type="age" v-else v-model.trim="form[item.prop]" size="small" autocomplete="off" :disabled="item.disabled || detailData.seeDisabled || arrivalDisabled || deliverDisabled"></el-input>
               </el-form-item>
             </el-col>
           </el-row>
@@ -144,7 +144,7 @@
               :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 || arrivalDisabled">选择</el-button>
+              <el-button type="text" size="mini" style="padding:4px 10px;float:left" @click="commodityChoice(row)" :disabled="detailData.seeDisabled || !row.$cellEdit || arrivalDisabled || deliverDisabled">选择</el-button>
               <span>{{ row.code }}</span>
             </template>
             <template slot-scope="{row,index}" slot="menu">
@@ -160,7 +160,7 @@
                 icon="el-icon-delete"
                 type="text"
                 @click="rowDel(row, index)"
-                :disabled="detailData.seeDisabled || arrivalDisabled"
+                :disabled="detailData.seeDisabled || arrivalDisabled || deliverDisabled"
                 v-if="!row.$cellEdit"
               >删 除</el-button>
             </template>
@@ -183,7 +183,7 @@
                          icon="el-icon-plus"
                          size="small"
                          @click="commoditySelection"
-                         :disabled="detailData.seeDisabled || arrivalDisabled"
+                         :disabled="detailData.seeDisabled || arrivalDisabled || deliverDisabled"
                          v-if="goodsActives == 'gift'"
               >录入明细
               </el-button>
@@ -192,7 +192,7 @@
                 type="warning"
                 icon="el-icon-refresh"
                 size="small"
-                :disabled="detailData.seeDisabled || arrivalDisabled"
+                :disabled="detailData.seeDisabled || arrivalDisabled || deliverDisabled"
                 @click="resetStock"
               >库存刷新</el-button>
             </template>
@@ -202,6 +202,7 @@
                 v-model.trim="row.actualQuantity"
                 v-input-limit="0"
                 @change="actualQuantityChange(row)"
+                :disabled="detailData.seeDisabled || arrivalDisabled || deliverDisabled"
               ></el-input>
               <span v-else>{{ row.actualQuantity }}</span>
             </template>
@@ -211,7 +212,7 @@
                 v-if="row.$cellEdit"
                 v-model.trim="row.arrivalQuantity"
                 v-input-limit="0"
-                @change="arrivalQuantityChange(row)"
+                @input="arrivalQuantityChange(row)"
               ></el-input>
               <span v-else>{{ row.arrivalQuantity }}</span>
             </template>
@@ -222,7 +223,7 @@
                 :cropIndex="index"
                 corpType="GYS"
                 @getCorpData="getcorpId"
-                :disabled="detailData.seeDisabled || arrivalDisabled"
+                :disabled="detailData.seeDisabled || arrivalDisabled || deliverDisabled"
               ></crop-select>
               <span v-else>{{ row.corpName }}</span>
             </template>
@@ -231,7 +232,7 @@
         <fee-info
           ref="feeInfo"
           :orderFeesList="advantageProjectData"
-          :disabled="detailData.seeDisabled || arrivalDisabled"
+          :disabled="detailData.seeDisabled || arrivalDisabled || deliverDisabled"
           feeUrl="/blade-deliver-goods/deliveryfees/update"
         />
 <!--        <containerTitle title="费用明细"></containerTitle>-->
@@ -315,7 +316,7 @@
                 icon="el-icon-plus"
                 size="small"
                 @click.stop="$refs.uploadCrud.rowAdd()"
-                :disabled="detailData.seeDisabled || arrivalDisabled"
+                :disabled="detailData.seeDisabled || arrivalDisabled || deliverDisabled"
               >上传</el-button
               >
             </template>
@@ -325,7 +326,7 @@
                 icon="el-icon-edit"
                 type="text"
                 @click="$refs.uploadCrud.rowEdit(row, index)"
-                :disabled="detailData.seeDisabled || arrivalDisabled"
+                :disabled="detailData.seeDisabled || arrivalDisabled || deliverDisabled"
               >编 辑</el-button
               >
               <el-button
@@ -333,7 +334,7 @@
                 icon="el-icon-delete"
                 type="text"
                 @click="rowDelBankOfDeposit(row, index)"
-                :disabled="detailData.seeDisabled || arrivalDisabled"
+                :disabled="detailData.seeDisabled || arrivalDisabled || deliverDisabled"
               >删 除</el-button
               >
             </template>
@@ -952,9 +953,10 @@ export default {
         this.$set(item, 'srcOrderNo', this.form.srcOrderNo)
         this.$set(item, "srcId", item.id)
         this.$set(item, "actualQuantity", (Number(item.orderQuantity) - Number(item.actualQuantity)))
+        this.$set(item, "arrivalQuantity", item.actualQuantity)
+        this.$set(item, "deliveryAmount", item.amount)
         this.$set(item, "deliveryAmount", item.amount)
         this.$set(item, "inventoryNumber", item.storageQuantity)
-        this.$set(item, "inventoryAmount", 0)
         this.form.deliveryAmount += Number(item.deliveryAmount)
         this.form.totalQuantity += Number(item.actualQuantity)
         this.form.totalCost += Number(item.deliveryAmount)
@@ -990,6 +992,20 @@ export default {
           this.arrivalDisabled = false;
           this.deliverDisabled = false;
         }
+        if (this.deliverDisabled) {
+          this.customerContact.column.forEach(item => {
+            if (item.prop == 'arrivalQuantity') {
+              item.disabled = false
+            } else {
+              item.disabled = true
+            }
+          })
+        } else {
+          this.customerContact.column.forEach(item => {
+            item.disabled = false
+          })
+        }
+
         // this.contactsData = this.form.deliveryItemsList
         this.contactsData = this.form.deliveryItemsList.filter(item => {
           return item.goodType == 0
@@ -1115,6 +1131,7 @@ export default {
         }
       }).finally(() => {
         this.saveLoading = false
+        this.pageLoading = false
       });
     },
     getcorpId(row) {
@@ -1145,6 +1162,10 @@ export default {
     // 到货数量变化计算
     arrivalQuantityChange(row) {
       if (this.goodsActives == 'goods') {
+        if (Number(row.arrivalQuantity) > Number(row.actualQuantity)) {
+          this.$message.error('到货数量不能超过出库数量')
+          row.arrivalQuantity = 0
+        }
         row.integral = Number(row.integralMultiples) * Number(row.arrivalQuantity)
         this.$set(this.form, 'presenterIntegral' , 0)
         this.goodsShowData.forEach(item => {
@@ -1280,6 +1301,7 @@ export default {
             this.$set(this.tableData[item], 'actualQuantity', 0)
             this.$set(this.tableData[item], 'inventoryAmount', 0)
             this.$set(this.tableData[item], 'deliveryAmount', 0)
+            this.$set(this.tableData[item], 'integral', '0')
             this.tableData[item].price = 0
             this.tableData[item].amount = 0
             if (this.goodsActives == "goods") {

+ 6 - 4
src/views/businessManagement/purchaseOrder/detailsPageEdit.vue

@@ -129,7 +129,7 @@
           <avue-crud
               :option="customerContact"
               v-model="contactsForm"
-              :data="goodsShowData"
+              :data="contactsData"
               ref="crudContact"
               @row-save="rowSave"
               @row-click="handleRowClick"
@@ -142,7 +142,8 @@
               <goods-select v-if="row.$cellEdit" v-model="row.cname" @getRow="getGoodsRow($event, row)"
                             :configuration="goodsConfiguration" @receiveList="receiveGoodList" @returnRow="getRow($event, row)"/>
               <span v-else>
-                <span v-for="item in goodsConfiguration.dicData" v-if="item.cname == row.cname">{{ item.cname }}</span>
+                {{ row.cname }}
+<!--                <span v-for="item in goodsConfiguration.dicData" v-if="item.cname == row.cname">{{ item.cname }}</span>-->
               </span>
             </template>
             <template slot="orderQuantity" slot-scope="{ row }">
@@ -845,6 +846,7 @@ export default {
         // 去重
         this.removeRepeat()
         let goodsData = []
+        this.form.orderItemsList = this.form.orderItemsList? this.form.orderItemsList: []
         this.form.orderItemsList.forEach(item => {
           let a = {
             cname: item.cname,
@@ -1210,14 +1212,14 @@ export default {
               type: "success",
               message: "操作成功!"
             });
-            this.goodsShowData.splice(index, 1);
+            this.contactsData.splice(index, 1);
           })
         } else {
           this.$message({
             type: "success",
             message: "操作成功!"
           });
-          this.goodsShowData.splice(index, 1);
+          this.contactsData.splice(index, 1);
         }
       })
     },

+ 1 - 1
src/views/businessManagement/receipt/detailsPageEdit.vue

@@ -65,7 +65,7 @@
                 <crop-select
                   v-else-if="item.prop === 'corpId'"
                   v-model="form[item.prop]"
-                  corpType="KH"
+                  corpType="GYS"
                   :disabled="detailData.seeDisabled"
                 ></crop-select>
                 <crop-select

+ 29 - 16
src/views/businessManagement/salesOrder/detailsPageEdit.vue

@@ -186,20 +186,22 @@
                   :disabled="detailData.seeDisabled"
                   v-input-limit="2"
                 ></el-input>
-                <span v-else-if="item.prop === 'overPayment'">
+                <span v-else-if="item.prop === 'caseOverPayment'">
                   <el-input
-                    v-model="form['overPayment']"
+                    v-model="form['caseOverPayment']"
                     size="small"
                     autocomplete="off"
                     @change="computedCost"
                     :disabled="detailData.seeDisabled"
                     style="width: 50%"
                     v-input-limit="2"></el-input>
+<!--                  总溢付款-->
                    <el-input
-                     v-model="form['abc']"
+                     v-model="form['overPayment']"
                      size="small"
                      autocomplete="off"
                      disabled
+                     placeholder="总溢付款"
                      style="width: 50%"></el-input>
                 </span>
                 <el-select v-else-if="item.prop === 'orderStatus'" v-model="form[item.prop]" placeholder="请选择" clearable filterable style="width: 100%" size="small" :disabled="detailData.seeDisabled">
@@ -312,7 +314,7 @@
               <goods-select v-if="row.$cellEdit" v-model="row.cname" @getRow="getGoodsRow($event, row)"
                                :configuration="goodsConfiguration" @receiveList="receiveGoodList" @returnRow="getRow($event, row)"/>
               <span v-else>
-                <span v-for="item in goodsConfiguration.dicData" v-if="item.cname == row.cname">{{ item.cname }}</span>
+                {{row.cname}}
               </span>
             </template>
             <template slot-scope="{row,index}" slot="menu">
@@ -729,6 +731,7 @@ import {
   saveSell,
   getlistBankBy,
 } from "@/api/basicData/configuration"
+import {getCorpDetail} from "@/api/maintenance/overpayment"
 import {selectGoodsNum} from "@/api/basicData/inventoryAccount"
 import customerContact from "./configuration/customerContact.json"
 import advantageProject from "./configuration/advantageProject.json"
@@ -967,8 +970,8 @@ export default {
               }
             ]
           },  {
-            label: '溢付款',
-            prop: 'overPayment',
+            label: '本次溢付款',
+            prop: 'caseOverPayment',
             rules: [
               {
                 required: false,
@@ -1447,6 +1450,7 @@ export default {
       this.statusOption = res.data.data
     })
     this.$set(this.form, 'orderStatus', '录入')
+    this.$set(this.form, 'caseOverPayment', 0)
     this.$set(this.form, 'overPayment', 0)
     this.$set(this.form, 'orderAmount', 0)
     this.$set(this.form, 'predictOceanFreight', 0)
@@ -1598,8 +1602,8 @@ export default {
       this.queryData(this.form.id, true)
     },
     getcorpId(row) {
-      this.contactsData[row.index].corpId = row.id;
-      this.contactsData[row.index].corpName = row.cname;
+      this.goodsShowData[row.index].corpId = row.id;
+      this.goodsShowData[row.index].corpName = row.cname;
     },
     // 采购金额获取
     getPurchasePrice(row) {
@@ -1893,6 +1897,9 @@ export default {
       this.removeGoodsRepeat()
     },
     async getCorpRow(data) {
+      getCorpDetail({corpId:data.id}).then(res => {
+        this.form.overPayment = res.data.data.balanceOverpaymen
+      })
       this.arrivalOptions = [];
       this.arrivalOptions = await this.corpAddr(data.id)
       this.$set(this.form, 'paymentType', data.paymentType)
@@ -2033,7 +2040,7 @@ export default {
           // this.goodsListSave[item].priceCategory = this.goodsListSave[item].goodsTypeName
           delete this.goodsListSave[item].goodsTypeName
           this.goodsListSave[item].itemId = this.goodsListSave[item].id
-          this.$set(this.goodsListSave[item], 'corpName', this.goodsListSave[item].cname)
+          // this.$set(this.goodsListSave[item], 'corpName', this.goodsListSave[item].cname)
           this.$set(this.goodsListSave[item], 'itemType', this.goodsListSave[item].typeno)
           this.$set(this.goodsListSave[item], 'orderQuantity', 1)
           this.$set(this.goodsListSave[item], 'actualQuantity', 0)
@@ -2059,6 +2066,7 @@ export default {
           delete this.goodsListSave[item].updateUserName
           this.maxGoodsNum++
           this.quantityChange(this.goodsListSave[item])
+          console.log(this.goodsListSave[item])
           this.$nextTick(() => {
             this.$refs.crudContact.rowCellAdd(this.goodsListSave[item]);
           })
@@ -2092,7 +2100,7 @@ export default {
           this.tableData[item].storageQuantity =  res.data.data
           delete this.tableData[item].goodsTypeName
           this.tableData[item].itemId = this.tableData[item].id
-          this.$set(this.tableData[item], 'corpName', this.tableData[item].cname)
+          // this.$set(this.tableData[item], 'corpName', this.tableData[item].cname)
           this.$set(this.tableData[item], 'itemType', this.tableData[item].typeno)
           this.$set(this.tableData[item], 'orderQuantity', 1)
           this.$set(this.tableData[item], 'actualQuantity', 0)
@@ -2118,6 +2126,7 @@ export default {
           delete this.tableData[item].updateUserName
           this.maxGoodsNum++
           this.quantityChange(this.tableData[item])
+          console.log(this.tableData[item])
           this.$nextTick(() => {
             this.$refs.crudContact.rowCellAdd(this.tableData[item]);
           })
@@ -2566,23 +2575,27 @@ export default {
     },
     // 计算应收未收款
     computedCost() {
+      if (Number(this.form.caseOverPayment) > Number(this.form.overPayment)) {
+        this.$message.error('本次使用的溢付款不能超过总溢付款')
+        this.form.caseOverPayment = 0;
+      }
       // 销售金额
       let orderAmount = 0;
       // 已收款
       let settlmentAmount = 0;
-      // 溢付款
-      let overPayment = 0
+      // 本次溢付款
+      let caseOverPayment = 0
       if (this.form.orderAmount) {
         orderAmount = this.form.orderAmount
       }
       if (this.form.settlmentAmount) {
         settlmentAmount = this.form.settlmentAmount
       }
-      if (this.form.overPayment) {
-        overPayment = this.form.overPayment
+      if (this.form.caseOverPayment) {
+        caseOverPayment = this.form.caseOverPayment
       }
-      this.$set(this.form, "balanceAmount", (Number(orderAmount) - Number(overPayment) - Number(settlmentAmount)).toFixed(2));
-      this.$set(this.form, 'debitAmount', ((Number(orderAmount) - Number(overPayment)).toFixed(2)))
+      this.$set(this.form, "balanceAmount", (Number(orderAmount) - Number(caseOverPayment) - Number(settlmentAmount)).toFixed(2));
+      this.$set(this.form, 'debitAmount', ((Number(orderAmount) - Number(caseOverPayment)).toFixed(2)))
     },
     quantityChange(row) {
       if (!row.orderQuantity) {

+ 1 - 0
src/views/purchase/contract/detailsPage.vue

@@ -291,6 +291,7 @@
           ref="feeInfo"
           :orderFeesList="orderFeesList"
           :disabled="viewDisabled"
+          :optionType="'JK'"
           @beforeFinance="beforeFinance"
           feeUrl=""
         />

+ 5 - 5
src/views/report/reportlist.vue

@@ -119,11 +119,11 @@ export default {
       return ids.join(",");
     }
   },
-  filters: {
-    nameFormat(name) {
-      return nameReportFormat(name);
-    }
-  },
+  // filters: {
+  //   nameFormat(name) {
+  //     return nameReportFormat(name);
+  //   }
+  // },
   methods: {
     handlePreview(name) {
       this.$router.push({

+ 6 - 4
src/views/workManagement/main-items/list.vue

@@ -49,8 +49,9 @@
         <el-button size="small"
                    icon="el-icon-printer"
                    type="info"
+                   :loading="exportLoading"
                    @click.stop="openReport()"
-          >报表
+          >导 出
         </el-button>
       </template>
       <template slot-scope="scope" slot="menu">
@@ -94,6 +95,7 @@ export default {
   data() {
     return {
       loading: false,
+      exportLoading:false,
       data: [],
       options:[],
       show: true,
@@ -123,7 +125,6 @@ export default {
         itemId:this.$route.query.itemId
       }
       this.show = false;
-      this.$store.commit("MAIN_IN_DETAIL");
     }
     getUserList().then(res=>{
       res.data.data.map((item,index)=>{
@@ -152,6 +153,7 @@ export default {
     },
     //报表
     openReport() {
+      this.exportLoading = true
       let  searchParams = Object.assign({},this.search);
       let param = this.paramsAdjustment(searchParams)
       getList(1, 10000,param).then(res =>{
@@ -164,6 +166,8 @@ export default {
           columns: option.column,
           data: fileData,
         });
+      }).finally(()=>{
+        this.exportLoading = false
       })
     },
 
@@ -198,7 +202,6 @@ export default {
         id: '',
       };
       this.show = false;
-      this.$store.commit("MAIN_IN_DETAIL");
     },
     //编辑打开
     editOpen(row, index){
@@ -206,7 +209,6 @@ export default {
         id: row.id
       };
       this.show = false;
-      this.$store.commit("MAIN_IN_DETAIL");
     },
     searchChange(params, done) {
       this.getList(this.page, params);

+ 9 - 1
src/views/workManagement/receipt/settleAccounts.vue

@@ -45,8 +45,9 @@
           icon="el-icon-printer"
           size="small"
           type="primary"
+          :loading="exportLoading"
           @click.stop="downFile"
-        >报 表
+        >导 出
         </el-button>
       </template>
       <template slot-scope="scope" slot="menu">
@@ -80,6 +81,7 @@
       return {
         loading: false,
         show:true,
+        exportLoading:false,
         detailData:{},
         data: [],
         options:[],
@@ -106,6 +108,7 @@
       detailPage
     },
     created() {
+
       if(this.$route.query.itemId){
         this.detailData={
           itemId:this.$route.query.itemId
@@ -113,6 +116,8 @@
         this.show = false;
         this.$store.commit("MAIN_IN_DETAIL");
       }
+
+      //模糊提前查20条数据
       getUserList().then(res=>{
         res.data.data.map((item,index)=>{
           if(index <= 20){
@@ -126,6 +131,7 @@
     },
     methods: {
       downFile(){
+        this.exportLoading = true
         let  searchParams = Object.assign({},this.search);
         let param = this.paramsAdjustment(searchParams)
 
@@ -139,6 +145,8 @@
             columns: option.column,
             data: fileData,
           });
+        }).finally(()=>{
+          this.exportLoading = false
         })
       },
       //远程模糊

+ 9 - 5
src/views/workManagement/receipt/settleAccountsDetailsPage.vue

@@ -465,12 +465,16 @@
       }
     },
     created() {
-      this.id = this.detailData.id;
-      this.getProjectDetail();
-      const params = {
-        code : "affair_payment_term"
+      if(this.detailData.id){
+        this.id = this.detailData.id;
+      }
+      if(this.detailData.itemId){
+        this.id = this.detailData.itemId;
       }
-      getDictionary(params).then(res =>{
+      this.getProjectDetail();
+
+      //收款方式
+      getDictionary({code : "affair_payment_term"}).then(res =>{
         this.paymentTerm = res.data.data;
       })
     },

+ 27 - 6
src/views/workManagement/receipt/statisticalList.vue

@@ -19,8 +19,9 @@
           icon="el-icon-printer"
           size="small"
           type="primary"
+          :loading="exportLoading"
           @click.stop="downFile"
-        >报 表
+        >导 出
         </el-button>
       </template>
       <template slot="cornIdSearch">
@@ -59,24 +60,36 @@
         </el-button>
       </template>
     </avue-crud>
+    <report-dialog
+      :switchDialog="switchDialog"
+      :reportId="form.id"
+      reportName="统计列表"
+      @onClose="onClose()"
+    ></report-dialog>
   </basic-container>
 </template>
 
 <script>
   import option from "./configuration/statisticalList.json";
+  import reportDialog from "@/components/report-dialog/main";
   import { getFlowList,getUserList } from "@/api/workManagement/mainProject";
 
   export default {
     name: "statisticalList",
+    components:{
+      reportDialog
+    },
     data() {
       return {
         loading:false,
         form: {},
         search:{},
+        exportLoading:false,
         option: option,
         parentId:0,
         dataList: [],
         options:[],
+        switchDialog:false,
         page: {
           currentPage: 1,
           total: 0,
@@ -108,10 +121,16 @@
       // option.height = window.innerHeight - 320 ;
     },
     methods: {
+
+      onClose(val) {
+        this.switchDialog = val;
+      },
+
       downFile(){
+        this.exportLoading = true
         let  searchParams = Object.assign({},this.search);
         let param = this.paramsAdjustment(searchParams)
-        getFlowList(1, 10000,param).then(res =>{
+        getFlowList(1, -1,param).then(res =>{
           const fileData = this.deepClone(res.data.data.records)
           fileData.map(item =>{
             item.cornId = item.cornName
@@ -131,6 +150,8 @@
             columns: option.column,
             data: fileData,
           });
+        }).finally(()=>{
+          this.exportLoading = false
         })
       },
       rowDel() {
@@ -154,7 +175,7 @@
       },
       check(row,index){
         if(this.$store.getters.mainItemStatus){
-          this.$alert("主营项目页面已存在,请关闭主营项目再进行操作", "温馨提示", {
+          this.$alert("结算页面已存在,请关闭结算页面再进行操作", "温馨提示", {
             confirmButtonText: "确定",
             type: 'warning',
             callback: action => {
@@ -163,10 +184,10 @@
         }else{
           //关闭一下存在的列表页
           ///workManagement/receipt/settleAccounts
-          this.$router.$avueRouter.closeTag('/workManagement/main-items/list');
+          this.$router.$avueRouter.closeTag('/workManagement/receipt/settleAccounts');
           this.$router.push({
-            path: "/workManagement/main-items/list",
-            query: {itemId: row.id},
+            path: "/workManagement/receipt/settleAccounts",
+            query: {itemId: row.pid},
           });
         }
       },

+ 137 - 3
src/views/workManagement/task/index.vue

@@ -28,8 +28,9 @@
           icon="el-icon-printer"
           size="small"
           type="primary"
+          :loading="exportLoading"
           @click.stop="downFile"
-        >报 表
+        >导 出
         </el-button>
       </template>
       <template slot-scope="scope" slot="menu">
@@ -37,7 +38,7 @@
           type="text"
           icon="el-icon-view"
           size="small"
-          @click.stop=""
+          @click.stop="copyTo"
         >发送
         </el-button>
         <el-button
@@ -50,6 +51,40 @@
         </el-button>
       </template>
     </avue-crud>
+    <el-dialog
+      append-to-body
+      title="消息"
+      class="el-dialogDeep"
+      :visible.sync="copyToDialog"
+      width="60%"
+      :close-on-click-modal="false"
+      :destroy-on-close="true"
+      :close-on-press-escape="false"
+      v-dialog-drag
+    >
+      <avue-form class="trading-form" :option="optionMeg" ref="formMeg" v-model="formMeg">
+        <template slot="toUserId">
+          <el-select v-model="formMeg.toUserId"
+                     remote
+                     filterable
+                     clearable
+                     @change="toUserChange"
+                     :remote-method="remoteMethod"
+          >
+            <el-option
+              v-for="item in userOption"
+              :key="item.value"
+              :label="item.realName"
+              :value="item.id">
+            </el-option>
+          </el-select>
+        </template>
+      </avue-form>
+      <div style="margin-left: 80%;padding: 10px">
+        <el-button size="small" @click="copyToDialog = false">取消</el-button>
+        <el-button type="primary" size="small" @click="submitCopy()">确定</el-button>
+      </div>
+    </el-dialog>
   </basic-container>
 </template>
 
@@ -57,11 +92,15 @@
   import option from "./configuration/mainList.json";
   import { getFlowList } from "@/api/workManagement/mainProject";
   import { updateItemStatus } from "@/api/workManagement/mainProject";
+  import { getUserList } from "@/api/workManagement/mainProject";
+  import { saveMessage } from "@/api/logs";
   export default {
     name: "customerInformation",
     data() {
       return {
         loading : false,
+        exportLoading:false,
+        copyToDialog:false,
         form: {},
         search:{},
         configuration:{
@@ -82,17 +121,110 @@
           total: 0,
           pageSize: 10
         },
-        query:{}
+        query:{},
+        userOption:[],
+        optionMeg:{
+          emptyBtn: false,
+          submitBtn: false,
+          labelWidth: 120,
+          menuSpan: 8,
+          column: [
+            {
+              label: '抄送人',
+              prop: 'toUserId',
+              span: 12,
+              type:'select',
+              rules: [
+                {
+                  required: true,
+                  message: ' ',
+                  trigger: 'blur'
+                }
+              ]
+            },
+            {
+              label: '抄送日期',
+              prop: 'createTime',
+              type: "datetime",
+              span: 12,
+              disabled:true,
+              rules: [
+                {
+                  required: false,
+                  message: ' ',
+                  trigger: 'blur'
+                }
+              ]
+            },
+            {
+              label: '内容',
+              prop: 'messageBody',
+              span: 24,
+              rules: [
+                {
+                  required: true,
+                  message: ' ',
+                  trigger: 'blur'
+                }
+              ]
+            }
+          ]
+        },
+        formMeg:{}
       }
     },
     created() {
 
     },
     mounted() {
+      getUserList().then(res=>{
+        res.data.data.map((item,index)=>{
+          if(index <= 20){
+            this.userOption.push(item)
+          }
+        })
+      })
       // option.height = window.innerHeight - 350 ;
     },
     methods: {
+      //抄送
+      copyTo(){
+        this.formMeg = {}
+        this.copyToDialog = true;
+        let date = new Date();
+        let strDate = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();
+        this.$set(this.formMeg,"createTime",strDate)
+      },
+      //用户远程模糊
+      remoteMethod(query){
+        let params = {
+          realName : query
+        }
+        getUserList(params).then(res=>{
+          this.userOption = res.data.data
+        })
+      },
+      toUserChange(value){
+        this.userOption.forEach(item =>{
+          if(item.id == value){
+            this.formMeg.toUserName = item.realName
+          }
+        })
+      },
+      submitCopy(){
+        this.$refs["formMeg"].validate((valid) => {
+          if(valid){
+            saveMessage(this.formMeg).then(res=>{
+              if(res.data.success){
+                this.$message.success("抄送成功!")
+                this.copyToDialog = false
+              }
+            })
+          }
+        })
+      },
       downFile(){
+        this.exportLoading = true
         let searchParams = Object.assign({},this.search);
         let param = this.paramsAdjustment(searchParams)
         getFlowList(1, 10000,param).then(res =>{
@@ -107,6 +239,8 @@
             columns: fileColumn,
             data: fileData,
           });
+        }).finally(()=>{
+          this.exportLoading = false
         })
       },
       //完工