Procházet zdrojové kódy

修改中电 华翰

Qukatie před 7 měsíci
rodič
revize
e01a1d97e5

+ 1 - 0
public/MP_verify_19GakY59B3nI8vep.txt

@@ -0,0 +1 @@
+19GakY59B3nI8vep

+ 70 - 0
src/api/iosBasicData/revenueInvoicing.js

@@ -0,0 +1,70 @@
+import request from '@/router/axios';
+//进账开票列表
+export const getList = (current, size, params) => {
+    return request({
+        url: '/api/blade-los/invoicing/list',
+        method: 'get',
+        params: {
+            ...params,
+            current,
+            size
+        }
+    })
+}
+//进账开票明细
+export const getDetail = (data) => {
+    return request({
+        url: '/api/blade-los/invoicing/detail',
+        method: 'get',
+        params: data
+    })
+}
+
+//进账开票保存
+export const submit = (data) => {
+    return request({
+        url: '/api/blade-los/invoicing/submit',
+        method: 'post',
+        data: data
+    })
+}
+//进账开票删除
+export const remove = (data) => {
+  return request({
+      url: '/api/blade-los/invoicing/remove',
+      method: 'post',
+      params: data
+  })
+}
+//进账开票明细删除
+export const itemRemove = (data) => {
+    return request({
+        url: '/api/blade-los/invoicingitem/remove',
+        method: 'post',
+        params: data
+    })
+  }
+//进账开票确认开票
+export const confirmInvoicing = (data) => {
+    return request({
+        url: '/api/blade-los/invoicing/confirmInvoicing',
+        method: 'post',
+        data: data
+    })
+}
+//进账开票撤销开票
+export const revokeInvoicing = (data) => {
+    return request({
+        url: '/api/blade-los/invoicing/revokeInvoicing',
+        method: 'post',
+        data: data
+    })
+}
+//进账开票导入明细
+export const getImport = (data) => {
+    return request({
+        url: '/api/blade-los/agent/listAll',
+        method: 'get',
+        params: data
+    })
+}

+ 6 - 4
src/components/dicSelect/main.vue

@@ -360,7 +360,7 @@ export default {
                 }, 200);
             }
         },
-        getDicData() {
+        getDicData(mockData) {
             if (this.url) {
                 this.loading = true
                 getDicinit(this.method, this.url, this.data).then(res => {
@@ -384,7 +384,7 @@ export default {
                     this.loading = false;
                 })
             } else {
-                this.options = this.mockData
+                this.options = mockData
             }
 
         },
@@ -441,8 +441,10 @@ export default {
 
         },
         clear() {
-            this.data = this.$options.data().data
-            this.getDicData()
+            if(this.url){
+                this.data = this.$options.data().data
+                this.getDicData()
+            }
             this.$emit('selectChange', null)
         },
         importData() {

+ 35 - 37
src/components/trackPlayback.vue

@@ -1,15 +1,14 @@
 <template>
-  <el-dialog title="车辆轨迹" append-to-body custom-class="dialog_two" :visible.sync="dialogVisible" lock-scroll
-    :before-close="handleClose" width="40%">
-    <div v-if="dialogVisible">
-      <el-timeline :reverse="reverse">
-        <el-timeline-item v-for="(item, index) in parkingPoint" :key="index" :timestamp="item.time"  :color="item.color">
-          {{ item.address }}
-        </el-timeline-item>
-      </el-timeline>
-    </div>
-    <!-- <div id="container" v-if="dialogVisible"></div> -->
-    <!-- <div class="input-card" style="right: 10.3%;bottom: 10.3%" v-if="this.lineArr.length>0">
+  <el-dialog
+      title="车辆轨迹"
+      append-to-body
+      custom-class="dialog_two"
+      :visible.sync="dialogVisible"
+      lock-scroll
+      :before-close="handleClose"
+      width="80%">
+    <div id="container" v-if="dialogVisible"></div>
+    <div class="input-card" style="right: 10.3%;bottom: 10.3%" v-if="this.lineArr.length>0">
       <h4>轨迹回放控制</h4>
       <div class="input-item">
         <input type="button" class="btn" value="开始动画" id="start" @click="startAnimation()"/>
@@ -19,7 +18,7 @@
         <input type="button" class="btn" value="继续动画" id="resume" @click="resumeAnimation()"/>
         <input type="button" class="btn" value="停止动画" id="stop" @click="stopAnimation()"/>
       </div>
-    </div> -->
+    </div>
     <div class="input-card" style="right: 10.3%;bottom: 10.3%" v-else>
       <span style="color: red">暂无该车辆轨迹信息</span>
     </div>
@@ -36,20 +35,19 @@ export default {
     parkingPoint: {
       type: Boolean
     },
-    lineArr: Object,
+    lineArr:Object,
   },
-  data() {
-    return {
+  data(){
+    return{
       map: null,
       marker: null,
-      infoWindow: null,
-      reverse: true,
+      infoWindow: null
     }
   },
   beforeDestroy() {
     this.map && this.map.destroy();
   },
-  methods: {
+  methods:{
     handleClose(done) {
       this.dialogVisible = false
       this.$emit('closeDialog')
@@ -57,7 +55,7 @@ export default {
     initMap() {
       this.map = new AMap.Map("container", {
         resizeEnable: true,
-        center: this.lineArr.length > 0 ? this.lineArr[this.lineArr.length - 1] : [120.382891, 36.066460],
+        center: this.lineArr.length >0 ?this.lineArr[this.lineArr.length - 1]:[120.382891,36.066460],
         zoom: 17
       });
       let icon = new AMap.Icon({
@@ -83,7 +81,7 @@ export default {
         strokeWeight: 6 //线宽
         // strokeStyle: "solid"  //线样式
       });
-      if (this.parkingPoint.length > 0) {
+      if (this.parkingPoint.length>0){
         this.infoWindow = new AMap.InfoWindow({
           offset: new AMap.Pixel(0, -30)
         });
@@ -92,19 +90,19 @@ export default {
             position: this.parkingPoint[i].location,
             map: this.map
           });
-          let fun = this.fun(this.parkingPoint[i].bte, this.parkingPoint[i].ete) === '获取失败' ? '' : this.fun(this.parkingPoint[i].bte, this.parkingPoint[i].ete)
+          let fun = this.fun(this.parkingPoint[i].bte, this.parkingPoint[i].ete)==='获取失败'?'':this.fun(this.parkingPoint[i].bte, this.parkingPoint[i].ete)
           this.marker.content = '<div style="width: 300px;">'
-            + '<p style="font-size: 22px;font-weight: bold;background-color: #2d8cf0;color: #fff;">' + fun + '</p>'
-            + '<p style="padding: 5px 0"><span style="color: #a0a0a0">停车时间:</span>' + (new Date(Number(this.parkingPoint[i].bte) + 8 * 60 * 60 * 1000).toJSON().split('T').join(' ').substr(0, 19)).slice(5, 19) + '至' + (new Date(Number(this.parkingPoint[i].ete) + 8 * 60 * 60 * 1000).toJSON().split('T').join(' ').substr(0, 19)).slice(5, 19) + '</p>'
-            + '<p><span style="color: #a0a0a0">当前位置:</span>' + this.parkingPoint[i].address + '</p>'
-            + '</div>'
+              + '<p style="font-size: 22px;font-weight: bold;background-color: #2d8cf0;color: #fff;">' + fun + '</p>'
+              + '<p style="padding: 5px 0"><span style="color: #a0a0a0">停车时间:</span>' + (new Date(Number(this.parkingPoint[i].bte) + 8 * 60 * 60 * 1000).toJSON().split('T').join(' ').substr(0, 19)).slice(5,19)+'至'+ (new Date(Number(this.parkingPoint[i].ete) + 8 * 60 * 60 * 1000).toJSON().split('T').join(' ').substr(0, 19)).slice(5,19)+ '</p>'
+              + '<p><span style="color: #a0a0a0">当前位置:</span>' +this.parkingPoint[i].address + '</p>'
+              + '</div>'
           this.marker.on('click', this.markerClick);
-          this.marker.emit('click', { target: this.marker });
+          this.marker.emit('click', {target: this.marker});
         }
       }
       this.marker = new AMap.Marker({
         map: this.map,
-        position: this.lineArr.length > 0 ? this.lineArr[this.lineArr.length - 1] : [120.382891, 36.066460],
+        position: this.lineArr.length >0 ?this.lineArr[this.lineArr.length - 1]:[120.382891,36.066460],
         // icon: "https://webapi.amap.com/images/car.png",
         icon: icon,
         markerMeta: new AMap.Size(28, 28),
@@ -114,16 +112,16 @@ export default {
       });
       this.map.setFitView();
     },
-    fun(startTime, endTime) {
+    fun(startTime,endTime) {
       let usedTime = endTime - startTime; // 相差的毫秒数
       let days = Math.floor(usedTime / (24 * 3600 * 1000)); // 计算出天数
       let leavel = usedTime % (24 * 3600 * 1000); // 计算天数后剩余的时间
       let hours = Math.floor(leavel / (3600 * 1000)); // 计算剩余的小时数
       let leavel2 = leavel % (3600 * 1000); // 计算剩余小时后剩余的毫秒数
       let minutes = Math.floor(leavel2 / (60 * 1000)); // 计算剩余的分钟数
-      if (startTime && endTime) {
-        return days + '天' + hours + '时' + minutes + '分'
-      } else {
+      if (startTime && endTime){
+        return  days + '天' + hours + '时' + minutes + '分'
+      }else {
         return '获取失败'
       }
     },
@@ -185,10 +183,11 @@ export default {
   }
 }
 
-.content {}
+.content {
+}
 
 ::v-deep .el-dialog {
-  margin-top: 10vh !important;
+  margin-top: 5vh !important;
   margin-bottom: 0 !important;
 }
 
@@ -196,12 +195,11 @@ export default {
   padding: 0 20px 10px 20px !important;
 }
 
-::v-deep .amap-info-close {
-  right: 10px !important;
+::v-deep .amap-info-close{
+  right: 10px!important;
   top: 12px !important;
 }
-
-::v-deep .amap-info-content {
+::v-deep .amap-info-content{
   padding: 5px 5px 5px 5px !important;
 }
 </style>

+ 6 - 0
src/enums/column-name.js

@@ -2009,6 +2009,12 @@ const columnName = [{
 }, {
   code: 452,
   name: '君海-决策分析-库存账统计(F)'
+}, {
+  code: 453,
+  name: '君海-财务管理-进账开票(F)列表页'
+}, {
+  code: 454,
+  name: '君海-财务管理-进账开票(F)详情明细表'
 },
 ]
 export const getColumnName = (key) => {

+ 14 - 0
src/router/views/index.js

@@ -4060,4 +4060,18 @@ export default [{
     component: () => import( /* webpackChunkName: "views" */ '@/views/iosBasicData/storageFeeF/index')
   }]
 },
+{
+  path: '/iosBasicData/revenueInvoicing/index',
+  component: Layout,
+  hidden: true,
+  children: [{
+    path: '/iosBasicData/revenueInvoicing/index',
+    name: '进账开票(F)',
+    meta: {
+      i18n: '/iosBasicData/revenueInvoicing/index', 
+      keepAlive: true,
+    },
+    component: () => import( /* webpackChunkName: "views" */ '@/views/iosBasicData/revenueInvoicing/index')
+  }]
+},
 ]

+ 1 - 1
src/views/iosBasicData/OceanFreightImport/bills/assembly/DocumentCenter.vue

@@ -480,7 +480,7 @@ export default {
                     department: this.documentForm.corpAttnName,
                     operate: this.documentForm.operatorName,
                     mobilePhone: this.documentForm.mobilePhone,
-                    remarks: this.documentForm.cyRemarks,
+                    remarks: this.documentForm.remarks,
                     contacts: this.documentForm.cyContacts,
                     deliverylocation: this.documentForm.cyCnName,
                     shippingAgency: this.documentForm.bookingAgentCnName,

+ 38 - 1
src/views/iosBasicData/OceanFreightImport/bills/assembly/feecenter.vue

@@ -305,7 +305,7 @@
         <avue-crud v-show="assemblyForm.feeCenterAmendList.length > 0" id="out-table" class="box-card"
             :header-cell-class-name="headerClassName" ref="crud" :row-style="{ height: '16px' }"
             :cell-style="{ padding: '0px' }" :data="assemblyForm.feeCenterAmendList" :option="amendOption"></avue-crud>
-        <div v-if="roleName.indexOf('admin') != -1 || roleName.indexOf('利润查看') != -1 || ((roleName.indexOf('应收修改') != -1 || roleName.indexOf('应收查看') != -1) && (roleName.indexOf('应付修改') != -1 || roleName.indexOf('应付查看') != -1))"
+        <div v-if="(roleName.indexOf('admin') != -1 || roleName.indexOf('利润查看') != -1 || ((roleName.indexOf('应收修改') != -1 || roleName.indexOf('应收查看') != -1) && (roleName.indexOf('应付修改') != -1 || roleName.indexOf('应付查看') != -1)))&&amendsStatus"
             style="display: flex;align-items: center;justify-content: space-around">
             <div style="width: 30%">
                 <div class="bottomFlex" style="justify-content: space-around">
@@ -549,6 +549,7 @@
 
 <script>
 import SearchQuery from "@/components/iosbasic-data/searchquery.vue";
+import { amendsList } from "@/api/iosBasicData/amends";
 import { getBcorpsDetail, getBcorpsList } from "@/api/iosBasicData/bcorps";
 import { bfeesList } from "@/api/iosBasicData/bfees";
 import { getBunitsPage } from "@/api/iosBasicData/bunits";
@@ -571,6 +572,7 @@ import { getBaccelementsList } from "@/api/iosBasicData/baccelements";
 import reportContainer from "@/views/iosBasicData/report-container/report-container.vue";
 import { reportsGetReportData } from "@/api/iosBasicData/reports";
 import reportformsList from "@/views/iosBasicData/OceanFreightImport/bills/assembly/reportformsList.vue";
+import { isProcurement } from "@/api/basicData/configuration";
 import { getList as reportsList } from "@/api/iosBasicData/reports";
 import { dateFormat } from "@/util/date";
 import { getToken } from "@/util/auth";
@@ -602,6 +604,7 @@ export default {
     },
     data() {
         return {
+            amendsStatus:false,
             amendOption: {
                 border: true,
                 align: 'center',
@@ -1351,6 +1354,15 @@ export default {
         }
     },
     async created() {
+        isProcurement({ "param": "if.station" }).then(res => {
+            console.log(res)
+            if (res.data.data == 1) {
+                this.messageData.push({
+                    name: '场站',
+                    value: 'cyCnName',
+                })
+            }
+        })
         this.roleName = localStorage.getItem('roleName').split(',') // 获取角色数据
         this.optionD = await this.getColumnData(this.getColumnName(309.2), this.optionDBack);
         this.optionC = await this.getColumnData(this.getColumnName(309.3), this.optionCBack);
@@ -1933,6 +1945,16 @@ export default {
         },
         // 生成账单
         GenerateBillsfun(dc) {
+            if (popupReminder(this.assemblyForm, this.messageData)) {
+                this.$confirm(popupReminder(this.assemblyForm, this.messageData), {
+                    confirmButtonText: "确定",
+                    cancelButtonText: "取消",
+                    type: "warning"
+                })
+            }
+            if (popupReminder(this.assemblyForm, this.messageData)) {
+                return;
+            }
             let selectionArr = []
             if (dc == 'D') {
                 selectionArr = this.selectionDList
@@ -2936,6 +2958,21 @@ export default {
             },
             deep: true, // 深度监听
             immediate: true  // 第一次改变就执行,
+        },
+        'assemblyForm.mblno': {
+            // 执行方法
+            handler(oldValue, newValue) {
+                console.log(oldValue, newValue)
+                if (oldValue) {
+                    amendsList(1, 10, { status: 3, mblno: this.assemblyForm.mblno, businessType: 'SIA' }).then(res => {
+                        if (res.data.data.records.length > 0) {
+                            this.amendsStatus = true
+                        }
+                    })
+                }
+            },
+            deep: true, // 深度监听
+            immediate: true  // 第一次改变就执行,
         }
     },
 }

+ 1 - 1
src/views/iosBasicData/SeafreightExportF/bills/assembly/DocumentCenter.vue

@@ -509,7 +509,7 @@ export default {
                     department: this.documentForm.corpAttnName,
                     operate: this.documentForm.operatorName,
                     mobilePhone: this.documentForm.mobilePhone,
-                    remarks: this.documentForm.cyRemarks,
+                    remarks: this.documentForm.remarks,
                     contacts: this.documentForm.cyContacts,
                     deliverylocation: this.documentForm.cyCnName,
                     shippingAgency: this.documentForm.bookingAgentCnName,

+ 39 - 1
src/views/iosBasicData/SeafreightExportF/bills/assembly/feecenter.vue

@@ -313,7 +313,7 @@
         <avue-crud v-show="assemblyForm.feeCenterAmendList.length > 0" id="out-table" class="box-card"
             :header-cell-class-name="headerClassName" ref="crud" :row-style="{ height: '16px' }"
             :cell-style="{ padding: '0px' }" :data="assemblyForm.feeCenterAmendList" :option="amendOption"></avue-crud>
-        <div v-if="roleName.indexOf('admin') != -1 || roleName.indexOf('利润查看') != -1 || ((roleName.indexOf('应收修改') != -1 || roleName.indexOf('应收查看') != -1) && (roleName.indexOf('应付修改') != -1 || roleName.indexOf('应付查看') != -1))"
+        <div v-if="(roleName.indexOf('admin') != -1 || roleName.indexOf('利润查看') != -1 || ((roleName.indexOf('应收修改') != -1 || roleName.indexOf('应收查看') != -1) && (roleName.indexOf('应付修改') != -1 || roleName.indexOf('应付查看') != -1))) && amendsStatus"
             style="display: flex;align-items: center;justify-content: space-around">
             <div style="width: 30%">
                 <div class="bottomFlex" style="justify-content: space-around">
@@ -557,6 +557,7 @@
 
 <script>
 import SearchQuery from "@/components/iosbasic-data/searchquery.vue";
+import { amendsList } from "@/api/iosBasicData/amends";
 import { getBcorpsDetail, getBcorpsList } from "@/api/iosBasicData/bcorps";
 import { bfeesList } from "@/api/iosBasicData/bfees";
 import { getBunitsPage } from "@/api/iosBasicData/bunits";
@@ -582,6 +583,7 @@ import reportformsList from "@/views/iosBasicData/SeafreightExportF/bills/assemb
 import { getList as reportsList } from "@/api/iosBasicData/reports";
 import { dateFormat } from "@/util/date";
 import { regularBurdenfloating } from "@/util/regularJudgment";
+import { isProcurement } from "@/api/basicData/configuration";
 import { getToken } from "@/util/auth";
 import _ from "lodash";
 export default {
@@ -612,6 +614,7 @@ export default {
     },
     data() {
         return {
+            amendsStatus: false,
             amendOption: {
                 border: true,
                 align: 'center',
@@ -1379,6 +1382,15 @@ export default {
         }
     },
     async created() {
+        isProcurement({ "param": "if.station" }).then(res => {
+            console.log(res)
+            if (res.data.data == 1) {
+                this.messageData.push({
+                    name: '场站',
+                    value: 'cyCnName',
+                })
+            }
+        })
         this.roleName = localStorage.getItem('roleName').split(',') // 获取角色数据
         this.optionD = await this.getColumnData(this.getColumnName(309.2), this.optionDBack);
         this.optionC = await this.getColumnData(this.getColumnName(309.3), this.optionCBack);
@@ -1944,6 +1956,16 @@ export default {
         },
         // 生成账单
         GenerateBillsfun(dc) {
+            if (popupReminder(this.assemblyForm, this.messageData)) {
+                this.$confirm(popupReminder(this.assemblyForm, this.messageData), {
+                    confirmButtonText: "确定",
+                    cancelButtonText: "取消",
+                    type: "warning"
+                })
+            }
+            if (popupReminder(this.assemblyForm, this.messageData)) {
+                return;
+            }
             let selectionArr = []
             if (dc == 'D') {
                 selectionArr = this.selectionDList
@@ -3049,7 +3071,23 @@ export default {
             },
             deep: true, // 深度监听
             immediate: true  // 第一次改变就执行,
+        },
+        'assemblyForm.mblno': {
+            // 执行方法
+            handler(oldValue, newValue) {
+                console.log(oldValue, newValue)
+                if (oldValue) {
+                    amendsList(1, 10, { status: 3, mblno: this.assemblyForm.mblno, businessType: 'SEA' }).then(res => {
+                        if (res.data.data.records.length > 0) {
+                            this.amendsStatus = true
+                        }
+                    })
+                }
+            },
+            deep: true, // 深度监听
+            immediate: true  // 第一次改变就执行,
         }
+
     },
 }
 </script>

+ 8 - 3
src/views/iosBasicData/SeafreightExportF/bills/billsDetails.vue

@@ -19,7 +19,7 @@
                 </el-button>
                 <el-button type="success" size="small" style="margin-right: 8px" @click="CopyDocumentsfun">复制单据
                 </el-button>
-                <el-dropdown style="line-height: 0" v-if="saberTenantId == '409341'">
+                <el-dropdown style="line-height: 0" v-if="saberTenantId == '409341' || saberTenantId == '607913'">
                     <el-button size="small" type="warning" style="margin-right: 8px"
                         :disabled="form.status > 0 || showLock || !form.id">
                         导入模板<i class="el-icon-arrow-down el-icon--right"></i>
@@ -400,7 +400,7 @@ export default {
                 issueType: "ORI", // 签单方式 默认 正本提单
                 mpaymode: 'PP', // 主单付费方式 默认PP
                 hpaymode: 'PP', // 分单付费方式 默认 PP
-                loadType: JSON.parse(localStorage.getItem('saber-tenantId')).content=='409341'?'FCL':'整箱', // 装箱方式默认整箱
+                loadType: JSON.parse(localStorage.getItem('saber-tenantId')).content == '409341' ? 'FCL' : '整箱', // 装箱方式默认整箱
                 srcType: 'OWN', // 业务来源默认公司   来源 内容 默认登录人所属公司
                 numberOfObl: 'THREE', // 正本份数 默认 THREE
                 numberOfCopy: 'THREE', // 副本份数 默认 THREE
@@ -440,7 +440,7 @@ export default {
                 issueType: "ORI", // 签单方式 默认 正本提单
                 mpaymode: 'PP', // 主单付费方式 默认PP
                 hpaymode: 'PP', // 分单付费方式 默认 PP
-                loadType:JSON.parse(localStorage.getItem('saber-tenantId')).content=='409341'?'FCL':'整箱', // 装箱方式默认整箱
+                loadType: JSON.parse(localStorage.getItem('saber-tenantId')).content == '409341' ? 'FCL' : '整箱', // 装箱方式默认整箱
                 srcType: 'OWN', // 业务来源默认公司   来源 内容 默认登录人所属公司
                 numberOfObl: 'THREE', // 正本份数 默认 THREE
                 numberOfCopy: 'THREE', // 副本份数 默认 THREE
@@ -2355,6 +2355,7 @@ export default {
             //     this.detailData.seeDisabled = false
             // }
             this.columnforfun('teamName').disabled = true
+
             this.columnforfun('operatorName').disabled = true
             this.columnforfun('accDeptName').disabled = true
             if (this.form.status == 1 || this.form.status == 2 || this.form.status == 3) {
@@ -2373,6 +2374,10 @@ export default {
                 this.columnforfun('mblno').disabled = false
                 this.columnforfun('bookingNo').disabled = false
                 this.columnforfun('refno').disabled = false
+                if (this.saberTenantId == '607913') {
+                    this.columnforfun('operatorName').disabled = false
+                    this.columnforfun('accDeptName').disabled = false
+                }
                 // this.columnforfun('teamId').disabled = false
                 this.generateBillsfalse = false
                 this.pleasereviewType = false

+ 343 - 162
src/views/iosBasicData/revenueInvoicing/detailsPage.vue

@@ -3,123 +3,199 @@
         <div class="customer-head">
             <div class="customer-back">
                 <el-button type="danger" style="border: none;background: none;color: red" icon="el-icon-arrow-left"
-                    @click="goBack(0)">返回列表
+                    @click="goBack()">返回列表
                 </el-button>
             </div>
             <div class="add-customer-btn">
+                <el-button size="small" style="margin-right: 8px" :disabled="!form.id"
+                    @click="$refs.print.openDialog()">打印账单
+                </el-button>
+                <el-button size="small" style="margin-right: 8px" :disabled="!form.id"
+                    @click="$refs.report.openDialog()">报表设计
+                </el-button>
                 <el-button class="el-button--small-yh" style="margin-left: 6px;" type="primary" size="small"
-                    @click="submit">保 存
+                    v-if="editButton" @click="inEdit">编 辑
+                </el-button>
+                <el-button v-if="!editButton" class="el-button--small-yh" style="margin-left: 6px;" type="primary"
+                    size="small" :disabled="form.status == '已开票'" @click="submit">保 存
+                </el-button>
+                <el-button v-if="form.id && form.status == '录入'" class="el-button--small-yh" style="margin-left: 6px;"
+                    type="success" size="small" @click="confirm">确认开票
+                </el-button>
+                <el-button v-if="form.id && form.status == '已开票'" class="el-button--small-yh" style="margin-left: 6px;"
+                    type="danger" size="small" @click="revoke">撤销开票
                 </el-button>
             </div>
         </div>
         <div style="margin-top: 50px">
             <trade-card title="基础信息">
                 <avue-form :option="optionForm" v-model="form" ref="form">
-                    <tempalte slot="corpName" slot-scope="{ row }">
-                        <dic-select v-model="form.corpName" placeholder="客户" key="id" label="cnName" res="records"
-                            url="/blade-los/bcorps/listByType?corpTypeName=客户" :filterable="true" :remote="true"
-                            dataName="cnName" @selectChange="dicChange('corpName', $event)"
-                            :disabled="form.advanceChargeItemList.length > 0"></dic-select>
+                    <tempalte slot="corporateName" slot-scope="{ row }">
+                        <dic-select v-model="form.corporateName" placeholder="销售公司" key="id" label="cnName"
+                            res="records" url="/blade-los/bcorps/listByType" :filterable="true" :remote="true"
+                            dataName="cnName" @selectChange="dicChange('corporateName', $event)"
+                            :disabled="form.invoicingItemList.length > 0 || editButton || form.status == '已开票'"
+                            :searchShow="true" :treeShow="true"></dic-select>
+                    </tempalte>
+                    <tempalte slot="contractNumber" slot-scope="{ row }">
+                        <el-input v-model="form.contractNumber" placeholder="请输入 合同号"
+                            :disabled="form.invoicingItemList.length > 0 || editButton || form.status == '已开票'"
+                            size="small"></el-input>
                     </tempalte>
-                    <tempalte slot="advancePaymentBalance">
-                        <el-input-number v-model="form.advancePaymentBalance"
-                            @change="dicChange('advancePaymentBalance', form)" :controls="false" placeholder="请输入 预付款余额"
-                            size="small" style="width: 100%;"
-                            :disabled="form.advanceChargeItemList.length > 0"></el-input-number>
+                    <tempalte slot="businessOrganizerName" slot-scope="{ row }">
+                        <dic-select v-model="form.businessOrganizerName" placeholder="销售公司" key="id" label="realName"
+                            res="records" url="/blade-user/page" :filterable="true" :remote="true" dataName="realName"
+                            :disabled="editButton || form.status == '已开票'">
+                        </dic-select>
                     </tempalte>
-                    <tempalte slot="inOverpayment">
-                        <el-input-number v-model="form.inOverpayment" @change="dicChange('inOverpayment', form)"
-                            :controls="false" placeholder="请输入 增加金额" size="small" style="width: 100%;"
-                            :disabled="form.advanceChargeItemList.length > 0"></el-input-number>
+                    <!-- <tempalte slot="openingBank" slot-scope="{ row }">
+                        <dic-select ref="bank" v-model="form.openingBank" placeholder="开户行" key="id" label="accountBank"
+                            :filterable="true" :disabled="editDisabled"></dic-select>
                     </tempalte>
-                    <tempalte slot="outOverpaymen">
-                        <el-input-number v-model="form.outOverpaymen" @change="dicChange('outOverpaymen', form)"
-                            :controls="false" placeholder="请输入 消费金额" size="small" style="width: 100%;"
-                            :disabled="form.advanceChargeItemList.length > 0"></el-input-number>
+                    <tempalte slot="accountNumber" slot-scope="{ row }">
+                        <dic-select ref="bank2" v-model="form.accountNumber" placeholder="账号" key="id" label="accountNo"
+                            :filterable="true" :disabled="editDisabled"></dic-select>
                     </tempalte>
+                    <tempalte slot="addressTel" slot-scope="{ row }">
+                        <dic-select ref="user" v-model="form.addressTel" placeholder="地址、电话" key="id" label="addr"
+                            :filterable="true" :disabled="editDisabled" :slotRight="true" rightLabel="tel" @selectChange="dicChange('addressTel', $event)"></dic-select>
+                    </tempalte> -->
                 </avue-form>
             </trade-card>
-            <trade-card title="预付款明细">
-                <avue-crud :option="option" :data="form.advanceChargeItemList" id="out-table" ref="crud"
-                    @selection-change="selectionChange" @resetColumn="resetColumn('crud', 'option', 'optionBack', 400)"
-                    @saveColumn="saveColumn('crud', 'option', 'optionBack', 400)">
+            <trade-card title="基础明细">
+                <avue-crud :option="option" :data="form.invoicingItemList" id="out-table" ref="crud"
+                    @selection-change="selectionChange" @resetColumn="resetColumn('crud', 'option', 'optionBack', 454)"
+                    @saveColumn="saveColumn('crud', 'option', 'optionBack', 454)">
                     <template slot="menuLeft">
-                        <el-button type="primary" size="small" icon="el-icon-plus" @click="addRow">新 增
+                        <el-button type="primary" size="small" icon="el-icon-plus" @click="addRow"
+                            :disabled="form.invoicingItemList.length || editButton || form.status == '已开票'">导 入
                         </el-button>
                     </template>
-                    <template slot="orderNo" slot-scope="{ row }">
-                        <span style="color: #1e9fff" @click="rowEdit(row)">{{ row.orderNo }}</span>
-                    </template>
-                    <template slot="billNo" slot-scope="{ row }">
-                        <span style="color: #1e9fff" @click="rowEdit(row)">{{ row.billNo }}</span>
-                    </template>
+                    <tempalte slot="quantityForm" slot-scope="{ row }">
+                        <el-input-number v-if="row.$cellEdit" v-model="row.quantity" @change="countChange(row)"
+                            :controls="false" placeholder="请输入 数量" size="small" style="width: 100%;"></el-input-number>
+                        <span v-else>{{ row.quantity }}</span>
+                    </tempalte>
                     <template slot="menu" slot-scope="{ row, index }">
-                        <el-button v-if="row.identifier == 1" size="small" icon="el-icon-edit" type="text"
-                            @click="inEdit(row)">{{ row.$cellEdit ?
-                                "保存" :
-                                "编辑" }}</el-button>
+                        <el-button size="small" icon="el-icon-edit" type="text" @click="rowEdit(row)"
+                            :disabled="editButton || form.status == '已开票'">{{ row.$cellEdit ?
+                                "保存" : "编辑" }}</el-button>
+                        <el-button size="small" icon="el-icon-delete" type="text" @click="rowDel(row)"
+                            :disabled="editButton || form.status == '已开票'">删 除</el-button>
                     </template>
                 </avue-crud>
             </trade-card>
+            <business-reports :id="form.id" ref="print" businessValue="MYDL_KPSQ" :type="true"></business-reports>
+            <reports :id="form.id" ref="report" :assemblyForm="form" businessValue="MYDL_KPSQ"></reports>
         </div>
     </div>
 </template>
 
 <script>
-import { submit, getDetail } from "@/api/iosBasicData/advanceCharge";
+import { submit, getDetail, confirmInvoicing, revokeInvoicing, getImport, itemRemove } from "@/api/iosBasicData/revenueInvoicing";
 import dicSelect from "@/components/dicSelect/main";
-
-import { bfeesList } from "@/api/iosBasicData/bfees";
+import { getBcorpsDetail } from "@/api/iosBasicData/bcorps";
+import businessReports from "@/components/tradeAgency/businessReports.vue";
+import reports from "@/components/tradeAgency/reports.vue";
 import _ from "lodash";
 export default {
     name: "detailsPage",
 
     data() {
         return {
+            editButton: false,
+            userList: [],
             form: {
-                status: '0',
-                advanceChargeItemList: []
+                billNoFormat: 'MYDL_KPSQ',
+                businessTypeCode: 'MYDL_KPSQ',
+                invoicingItemList: []
             },
             optionForm: {
                 menuBtn: false,
                 span: 8,
+                disabled: false,
                 column: [
                     {
-                        label: '客户',
-                        prop: "corpName",
+                        label: "销售公司",
+                        prop: "corporateName",
+                        rules: [{
+                            required: true,
+                            message: " ",
+                            trigger: "blur"
+                        }],
+                        disabled: false
+                    },
+                    {
+                        label: "公司名称",
+                        prop: "buyCorporateName",
                         rules: [{
                             required: true,
                             message: " ",
                             trigger: "blur"
-                        }]
+                        }],
+                        disabled: false
                     },
                     {
-                        label: "预付款余额",
-                        prop: "advancePaymentBalance",
+                        label: "合同号",
+                        prop: "contractNumber",
+                        rules: [{
+                            required: true,
+                            message: " ",
+                            trigger: "blur"
+                        }],
+                        disabled: false,
                     },
                     {
-                        label: "增加金额",
-                        prop: "inOverpayment",
+                        label: "业务主办",
+                        prop: "businessOrganizerName",
+                        // type: 'select',
+                        // filterable: true,
+                        // remote: true,
+                        // dicUrl: "/api/blade-user/page?current=1&size=20&realName={{key}}",
+                        // props: {
+                        //     label: 'realName',
+                        //     value: 'realName',
+                        //     res: 'data.records'
+                        // },
+                        disabled: false
                     },
                     {
-                        label: "消费金额",
-                        prop: "outOverpaymen",
+                        label: "开具发票号码",
+                        prop: "invoiceNo",
+                        disabled: false
                     },
                     {
-                        label: '备注',
-                        prop: "remarks",
-                        type: 'textarea',
-                        disabled: false,
-                        span: 24,
-                        minRows: 2,
+                        label: "纳税人识别号",
+                        prop: "taxpayerIdentification",
+                        disabled: false
                     },
+                    {
+                        label: "开户行",
+                        prop: "openingBank",
+                        disabled: false
+                    },
+                    {
+                        label: "账号",
+                        prop: "accountNumber",
+                        disabled: false
+                    },
+                    {
+                        label: "地址、电话",
+                        prop: "addressTel",
+                        disabled: false
+                    },
+                    {
+                        label: "备注",
+                        prop: "remarks",
+                        disabled: false
+                    }
                 ]
             },
             option: {},
             optionBack: {
                 height: 'auto',
                 calcHeight: 30,
-                menuWidth: 60,
+                menuWidth: 140,
                 border: true,
                 index: true,
                 addBtn: false,
@@ -129,25 +205,44 @@ export default {
                 menu: true,
                 refreshBtn: false,
                 align: 'center',
+                summaryText: "合计",
+                showSummary: true,
+                sumColumnList: [
+                    {
+                        name: "quantity",
+                        type: "sum",
+                        decimals: 0
+                    }, {
+                        name: "amount",
+                        type: "sum",
+                        decimals: 2
+                    }, {
+                        name: "thisAmount",
+                        type: "sum",
+                        decimals: 2
+                    }, {
+                        name: "invoicedAmount",
+                        type: "sum",
+                        decimals: 2
+                    }
+                ],
                 column: [
                     {
-                        label: "订单号",
-                        prop: "orderNo",
-                        cell: true,
+                        label: "货物名称",
+                        prop: "labelProductName",
                         overHidden: true
                     },
                     {
-                        label: "提单号",
-                        prop: "billNo",
-                        cell: true,
+                        label: "规格",
+                        prop: "specifications",
                         overHidden: true
                     },
                     {
-                        label: "金额",
-                        prop: "overpayment",
-                        type: 'number',
-                        controls: false,
+                        label: "数量",
+                        prop: "quantity",
                         cell: true,
+                        slot: true,
+                        formslot: true,
                         rules: [{
                             required: true,
                             message: " ",
@@ -156,64 +251,44 @@ export default {
                         overHidden: true
                     },
                     {
-                        label: "收款金额",
-                        prop: "amountD",
-                        overHidden: true
+                        label: "计量单位",
+                        prop: "units",
+                        overHidden: true,
+                        cell: true,
+                        type: 'select',
+                        filterable: true,
+                        remote: true,
+                        dicUrl: "/api/blade-los/bunits/list?current=1&size=20&cnName={{key}}",
+                        props: {
+                            label: 'cnName',
+                            value: 'cnName',
+                            res: 'data.records'
+                        },
                     },
                     {
-                        label: "付款金额",
-                        prop: "amountC",
+                        label: "销售单价(含税)",
+                        prop: "price",
                         overHidden: true
                     },
                     {
-                        label: "消费类型",
-                        prop: "overpaymentType",
-                        type: 'select',
-                        cell: true,
-                        dicData: [{
-                            label: '增加',
-                            value: 0
-                        }, {
-                            label: '消费',
-                            value: 1
-                        }],
-                        rules: [{
-                            required: true,
-                            message: " ",
-                            trigger: "blur"
-                        }],
+                        label: "销售金额(含税)",
+                        prop: "amount",
                         overHidden: true
                     },
                     {
-                        label: "来源单号",
-                        prop: "srcOrderNo",
+                        label: "本次发票金额",
+                        prop: "thisAmount",
                         overHidden: true
                     },
                     {
-                        label: "生成标识",
-                        prop: "identifier",
-                        type: 'select',
-                        dicData: [{
-                            label: '系统生成',
-                            value: 0
-                        }, {
-                            label: '手动添加',
-                            value: 1
-                        }],
-                        overHidden: true
-                    },
-                    {
-                        label: "生成时间",
-                        prop: "createTime",
-                        type: "datetime",
-                        format: "yyyy-MM-dd HH:mm:ss",
-                        valueFormat: "yyyy-MM-dd HH:mm:ss",
-                        cell: true,
+                        label: "已开发票金额",
+                        prop: "invoicedAmount",
                         overHidden: true
                     },
                     {
                         label: "备注",
                         prop: "remarks",
+                        cell: true,
                         overHidden: true
                     }
                 ]
@@ -222,87 +297,137 @@ export default {
     },
     components: {
         dicSelect,
+        businessReports,
+        reports
     },
     props: {
         detailData: Object
     },
     async created() {
-        this.option = await this.getColumnData(this.getColumnName(400), this.optionBack);
+        this.option = await this.getColumnData(this.getColumnName(454), this.optionBack);
         if (this.detailData.id) {
+            this.editButton = true
+            this.optionForm.disabled = true
             this.getDetails(this.detailData.id)
         }
     },
     methods: {
+        inEdit() {
+            this.editButton = false
+            if (this.form.status == '录入') {
+                this.optionForm.disabled = false
+            }
+        },
         addRow() {
-            this.form.advanceChargeItemList.push({
-                $cellEdit: true,
-                identifier: 1
+            if (!this.form.corporateId) {
+                return this.$message.error("请选择销售公司");
+            }
+            if (!this.form.contractNumber) {
+                return this.$message.error("请输入合同号");
+            }
+            let obj = {
+                corpId: this.form.corporateId,
+                contractNo: this.form.contractNumber
+            }
+            getImport(obj).then(res => {
+                res.data.data.forEach(item => {
+                    this.form.invoicingItemList.push({
+                        srcId: item.id,
+                        labelProductName: item.labelProductName,
+                        specifications: item.specifications,
+                        quantity: _.divide(_.subtract(item.amount, item.invoiceAmount), item.price),
+                        units: '千克',
+                        price: item.price,
+                        amount: item.amount,
+                        thisAmount: item.amount,
+                        invoicedAmount: item.invoiceAmount,
+                        $cellEdit: true,
+                    })
+                })
             })
+
+        },
+        countChange(row) {
+            row.thisAmount = _.multiply(Number(row.quantity ? row.quantity : 0), Number(row.price ? row.price : 0))
+            if (row.thisAmount > Number(row.amount - row.invoicedAmount)) {
+                row.quantity = 0
+                row.thisAmount = 0
+                return this.$message.error("本次金额不能大于金额减去已开票");
+            }
         },
         // 编辑
-        inEdit(row) {
+        rowEdit(row) {
             if (row.$cellEdit == true) {
-                if (!row.overpayment || row.overpaymentType == null) return this.$message.error("请完善明细信息");
+                if (!row.quantity) return this.$message.error("请输入数量");
                 this.$set(row, '$cellEdit', false)
             } else {
                 this.$set(row, '$cellEdit', true)
             }
-
         },
         dicChange(name, row) {
-            if (name == 'corpName') {
+            if (name == 'corporateName') {
                 if (row) {
-                    this.form.corpId = row.id
+                    this.form.corporateId = row.id
+                    this.form.corporateName = row.cnName
+                    this.form.buyCorporateName = row.cnName
+                    this.form.openingBank = null
+                    this.form.accountNumber = null
+                    this.form.addressTel = null
+                    getBcorpsDetail(row.id).then(res => {
+                        // this.$refs.bank.getDicData(res.data.data.corpsBankList)
+                        // this.$refs.bank2.getDicData(res.data.data.corpsBankList)
+                        res.data.data.corpsBankList.forEach((item, index) => {
+                            if (index == 0) {
+                                this.form.openingBank = item.accountBank
+                                this.form.accountNumber = item.accountNo
+                            }
+                        })
+                        // this.$refs.user.getDicData(res.data.data.corpsAttnList)
+                        res.data.data.corpsAttnList.forEach((item, index) => {
+                            if (index == 0) {
+                                this.form.addressTel = item.addr + item.tel
+                            }
+                        })
+                    })
                 } else {
-                    this.form.corpId = null
+                    this.form.corporateId = null
+                    this.form.corporateName = null
+                    this.form.buyCorporateName = null
+                    this.form.openingBank = null
+                    this.form.accountNumber = null
+                    this.form.addressTel = null
+                    // this.$refs.bank.getDicData([])
+                    // this.$refs.bank2.getDicData([])
+                    // this.$refs.user.getDicData([])
                 }
             }
-            if (name == 'advancePaymentBalance') {
-                row.inOverpayment = _.add(Number(row.advancePaymentBalance ? row.advancePaymentBalance : 0), Number(row.outOverpaymen ? row.outOverpaymen : 0))
-            }
-            if (name == 'inOverpayment') {
-                row.advancePaymentBalance = _.subtract(Number(row.inOverpayment ? row.inOverpayment : 0), Number(row.outOverpaymen ? row.outOverpaymen : 0))
-            }
-            if (name == 'outOverpaymen') {
-                row.inOverpayment = _.add(Number(row.advancePaymentBalance ? row.advancePaymentBalance : 0), Number(row.outOverpaymen ? row.outOverpaymen : 0))
-            }
-        },
-        rowEdit(row) {
-            if (row.overpaymentType == 1) {
-                if (this.$store.getters.firstSetStatus) {
-                    this.$alert("货款收费(T)页面已存在,请关闭货款收费(T)再进行操作", "温馨提示", {
-                        confirmButtonText: "确定",
-                        type: 'warning',
-                        callback: action => {
-                        }
-                    });
+            if (name == 'addressTel') {
+                if (row) {
+                    this.form.addressTel = row.addr + row.tel
+
                 } else {
-                    this.$router.push({
-                        path: '/tradeAgency/firstSettlement/index',
-                        query: {
-                            billNo: row.srcPid
-                        },
-                    })
+                    this.form.addressTel = null
                 }
-
             }
-            if (row.overpaymentType == 0) {
-                if (this.$store.getters.exchangePurStatus) {
-                    this.$alert("货款付费(T)页面已存在,请关闭货款付费(T)再进行操作", "温馨提示", {
-                        confirmButtonText: "确定",
-                        type: 'warning',
-                        callback: action => {
-                        }
+
+        },
+        rowDel(row, index) {
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            }).then(() => {
+                if (row.id) {
+                    itemRemove({ ids: row.id }).then(res => {
+                        this.form.invoicingItemList.splice(index, 1);
+                        this.$message.success("操作成功!");
                     });
                 } else {
-                    this.$router.push({
-                        path: '/tradeAgency/exchangePurchasing/index',
-                        query: {
-                            billNo: row.srcPid
-                        },
-                    })
+                    this.form.invoicingItemList.splice(index, 1);
+                    this.$message.success("操作成功!");
                 }
             }
+            );
         },
         getDetails(id) {
             const loading = this.$loading({
@@ -319,11 +444,9 @@ export default {
             })
         },
         submit() {
-            for (let row of this.form.advanceChargeItemList) {
-                if (row.identifier == 1) {
-                    if (!row.overpayment || row.overpaymentType == null) {
-                        return this.$message.error("请完善明细信息");
-                    }
+            for (let row of this.form.invoicingItemList) {
+                if (!row.quantity) {
+                    return this.$message.error("请输入数量");
                 }
             }
             this.$refs["form"].validate((valid, done) => {
@@ -347,6 +470,64 @@ export default {
                 }
             });
         },
+        confirm() {
+            for (let row of this.form.invoicingItemList) {
+                if (!row.quantity) {
+                    return this.$message.error("请输入数量");
+                }
+            }
+            this.$refs["form"].validate((valid, done) => {
+                done();
+                if (valid) {
+                    this.$confirm("是否确认开票?", {
+                        confirmButtonText: "确定",
+                        cancelButtonText: "取消",
+                        type: "warning"
+                    }).then(() => {
+                        const loading = this.$loading({
+                            lock: true,
+                            text: '加载中',
+                            spinner: 'el-icon-loading',
+                            background: 'rgba(255,255,255,0.7)'
+                        });
+                        confirmInvoicing(this.form).then(res => {
+                            this.$message.success("操作成功");
+                            this.getDetails(res.data.data.id)
+                            this.editButton = true
+                            this.optionForm.disabled = true
+                        }).finally(() => {
+                            loading.close();
+                        })
+                    }
+                    );
+                } else {
+                    return false;
+                }
+            });
+        },
+        revoke() {
+            this.$confirm("是否撤销开票?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            }).then(() => {
+                const loading = this.$loading({
+                    lock: true,
+                    text: '加载中',
+                    spinner: 'el-icon-loading',
+                    background: 'rgba(255,255,255,0.7)'
+                });
+                revokeInvoicing(this.form).then(res => {
+                    this.$message.success("操作成功");
+                    this.getDetails(res.data.data.id)
+                    this.editButton = true
+                    this.optionForm.disabled = true
+                }).finally(() => {
+                    loading.close();
+                })
+            }
+            );
+        },
         //自定义列保存
         async saveColumn(ref, option, optionBack, code) {
             const inSave = await this.saveColumnData(this.getColumnName(code), this[option]);

+ 54 - 61
src/views/iosBasicData/revenueInvoicing/index.vue

@@ -5,8 +5,8 @@
                 v-model="form" id="out-table" :header-cell-class-name="headerClassName" ref="crud" @row-del="rowDel"
                 @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
                 @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange"
-                @resetColumn="resetColumn('crud', 'option', 'optionBack', 399)"
-                @saveColumn="saveColumn('crud', 'option', 'optionBack', 399)" @on-load="onLoad">
+                @resetColumn="resetColumn('crud', 'option', 'optionBack', 453)"
+                @saveColumn="saveColumn('crud', 'option', 'optionBack', 453)" @on-load="onLoad">
                 <template slot="menuLeft">
                     <el-button type="primary" size="small" icon="el-icon-plus" @click="addButton">新 增
                     </el-button>
@@ -17,20 +17,20 @@
                     <span v-else>{{ row.advancePaymentBalance }}</span>
                 </tempalte>
                 <template slot="menu" slot-scope="{ row, index }">
-                    <el-button size="small" icon="el-icon-edit" type="text" @click="inEdit(row)">{{ row.$cellEdit ? "保存" :
-                        "编辑" }}</el-button>
+                    <el-button size="small" icon="el-icon-delete" type="text" @click="rowDel(row)"
+                        :disabled="row.status != '录入'">删 除</el-button>
                 </template>
-                <template slot="corpName" slot-scope="{ row }">
-                    <span style="color: #1e9fff" @click="rowEdit(row)">{{ row.corpName }}</span>
+                <template slot="corporateName" slot-scope="{ row }">
+                    <span style="color: #1e9fff" @click="rowEdit(row)">{{ row.corporateName }}</span>
                 </template>
             </avue-crud>
         </basic-container>
         <detailsPage v-if="!isShow" :detailData="detailData" @goBack="goBack"></detailsPage>
     </div>
 </template>
-  
+
 <script>
-import { getList, remove, submit } from "@/api/iosBasicData/advanceCharge";
+import { getList, remove, submit } from "@/api/iosBasicData/revenueInvoicing";
 import detailsPage from "./detailsPage";
 import _ from "lodash";
 
@@ -52,7 +52,7 @@ export default {
             optionBack: {
                 height: 'auto',
                 calcHeight: 30,
-                menuWidth: 120,
+                menuWidth: 80,
                 searchShow: true,
                 searchMenuSpan: 18,
                 border: true,
@@ -65,48 +65,49 @@ export default {
                 searchIndex: 3,
                 column: [
                     {
-                        label: "客户名称",
-                        prop: "corpId",
-                        width: "200",
-                        overHidden: true,
+                        label: "销售公司",
+                        prop: "corporateName",
                         search: true,
-                        type: 'select',
-                        filterable: true,
-                        remote: true,
-                        dicUrl: "/api/blade-los/bcorps/listByType?cnName={{key}}",
-                        props: {
-                            label: 'cnName',
-                            value: 'id',
-                            res: 'data.records'
-                        },
-                        hide: true,
-                        showColumn: false,
-                        searchOrder: 1,
+                        overHidden: true,
                     },
                     {
-                        label: "客户名称",
-                        prop: "corpName",
-                        width: "200",
+                        label: "公司名称",
+                        prop: "buyCorporateName",
                         overHidden: true,
                     },
                     {
-                        label: "预付款余额",
-                        prop: "advancePaymentBalance",
+                        label: "合同号",
+                        prop: "contractNumber",
+                        overHidden: true
+                    },
+                    {
+                        label: "业务主办",
+                        prop: "businessOrganizerName",
+                        overHidden: true
+                    },
+                    {
+                        label: "开具发票号码",
+                        prop: "invoiceNo",
+                        overHidden: true
+                    },
+                    {
+                        label: "纳税人识别号",
+                        prop: "taxpayerIdentification",
                         overHidden: true,
                     },
                     {
-                        label: "增加金额",
-                        prop: "inOverpayment",
+                        label: "开户行",
+                        prop: "openingBank",
                         overHidden: true
                     },
                     {
-                        label: "消费金额",
-                        prop: "outOverpaymen",
+                        label: "账号",
+                        prop: "accountNumber",
                         overHidden: true
                     },
                     {
-                        label: "备注",
-                        prop: "remarks",
+                        label: "地址、电话",
+                        prop: "addressTel",
                         overHidden: true
                     }
                 ]
@@ -118,7 +119,7 @@ export default {
         detailsPage,
     },
     async created() {
-        this.option = await this.getColumnData(this.getColumnName(399), this.optionBack);
+        this.option = await this.getColumnData(this.getColumnName(453), this.optionBack);
     },
     activated() {
         this.$nextTick(() => {
@@ -137,28 +138,21 @@ export default {
             this.isShow = false
         },
         rowDel(row) {
-            if (row.status == 1) {
-                this.$confirm("确定将选择数据删除?", {
-                    confirmButtonText: "确定",
-                    cancelButtonText: "取消",
-                    type: "warning"
-                })
-                    .then(() => {
-                        return remove({ ids: row.id }).then(() => {
-                            this.onLoad(this.page);
-                            this.$message({
-                                type: "success",
-                                message: "删除成功!"
-                            });
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            })
+                .then(() => {
+                    return remove({ ids: row.id }).then(() => {
+                        this.onLoad(this.page);
+                        this.$message({
+                            type: "success",
+                            message: "删除成功!"
                         });
-                    })
+                    });
+                })
 
-            } else {
-                this.$message({
-                    message: '非禁用状态无法删除',
-                    type: 'warning'
-                });
-            }
         },
         // 编辑
         inEdit(row) {
@@ -218,7 +212,7 @@ export default {
                     this.$refs.crud.doLayout();
                     this.$refs.crud.dicInit();
                     this.$refs.crud.refreshTable();
-                    
+
                 });
             }).finally(() => {
                 this.loading = false;
@@ -281,7 +275,7 @@ export default {
 }
 
 </script>
-  
+
 <style scoped>
 ::v-deep#out-table .back-one {
     background: #ecf5ff !important;
@@ -301,5 +295,4 @@ export default {
 ::v-deep .el-col-md-8 {
     width: 24.33333%;
 }
-</style>
-  
+</style>

+ 1 - 1
src/views/landTransportation/bulkReportAnalysis/index.vue

@@ -1024,7 +1024,7 @@ export default {
         this.loadingDialog = true
         let this_ = this
         setTimeout(function () {
-          // this_.$refs.playback.initMap();
+          this_.$refs.playback.initMap();
           this_.loadingDialog = false
         }, 1500)
       })

+ 1 - 1
src/views/landTransportation/reportAnalysis/index.vue

@@ -859,7 +859,7 @@ export default {
         this.loadingDialog = true
         let this_ = this
         setTimeout(function () {
-          // this_.$refs.playback.initMap();
+          this_.$refs.playback.initMap();
           this_.loadingDialog = false
         }, 1500)
       })

+ 18 - 11
src/views/tradeAgency/oceanFreightImport/detailsPage.vue

@@ -215,19 +215,19 @@
                     </template>
                     <template slot="cntrTypeCodeHeader" slot-scope="{column}">
                         <span style="color: #1e9fff;cursor: pointer;" @click="inJump('箱型')">{{ (column || {}).label
-                        }}</span>
+                            }}</span>
                     </template>
                     <template slot="goodsNameHeader" slot-scope="{column}">
                         <span style="color: #1e9fff;cursor: pointer;" @click="inJump('HSCODE')">{{ (column || {}).label
-                        }}</span>
+                            }}</span>
                     </template>
                     <template slot="hsCodeHeader" slot-scope="{column}">
                         <span style="color: #1e9fff;cursor: pointer;" @click="inJump('HSCODE')">{{ (column || {}).label
-                        }}</span>
+                            }}</span>
                     </template>
                     <template slot="goodsTypeHeader" slot-scope="{column}">
                         <span style="color: #1e9fff;cursor: pointer;" @click="inJump('类型')">{{ (column || {}).label
-                        }}</span>
+                            }}</span>
                     </template>
                     <template slot="index" slot-scope="{row,index}">
                         <span>{{ index + 1 }}</span>
@@ -365,7 +365,7 @@
                     @saveColumn="saveColumn('crud3', 'option3', 'optionBack3', 390)">
                     <template slot="storageUnitHeader" slot-scope="{column}">
                         <span style="color: #1e9fff;cursor: pointer;" @click="inJump('入库单位')">{{ (column || {}).label
-                        }}</span>
+                            }}</span>
                     </template>
                     <template slot="warehouseName" slot-scope="{ row }">
                         <dic-select v-if="row.$cellEdit" v-model="row.warehouseName" placeholder="入库" key="id"
@@ -2258,8 +2258,13 @@ export default {
                 }
             }
             if (name == '派车') {
-                if (!row.id) {
-                    return this.$message.error('请保存数据');
+                // if (!row.id) {
+                //     return this.$message.error('请保存数据');
+                // }
+                for (let item of this.form.preContainersList) {
+                    if (!item.id) {
+                        return this.$message.error('请保存数据');
+                    }
                 }
                 if (row.whetherMachineInspection == 1) {
                     if (!row.inspectionType || !row.inspectionDate) {
@@ -2300,8 +2305,10 @@ export default {
 
             }
             if (name == '自提') {
-                if (!row.id) {
-                    return this.$message.error('请保存数据');
+                for (let item of this.form.preContainersList) {
+                    if (!item.id) {
+                        return this.$message.error('请保存数据');
+                    }
                 }
                 let obj = {
                     ...row,
@@ -2502,7 +2509,7 @@ export default {
             }
             if (name == '生成出库') {
                 if (!row.warehouseName || !row.warehouseUnitPrice) {
-                    return this.$message.error((!row.warehouseName ? "仓库," : '') + (!row.warehouseUnitPrice ? "仓储单价" : '') + "不能为空");
+                    return this.$message.error((!row.warehouseName ? "仓库," : '') + (!row.warehouseUnitPrice ? "货值单价" : '') + "不能为空");
                 }
                 const loading = this.$loading({
                     lock: true,
@@ -2520,7 +2527,7 @@ export default {
             }
             if (name == '撤销出库') {
                 if (!row.warehouseName || !row.warehouseUnitPrice) {
-                    return this.$message.error((!row.warehouseName ? "仓库," : '') + (!row.warehouseUnitPrice ? "仓储单价" : '') + "不能为空");
+                    return this.$message.error((!row.warehouseName ? "仓库," : '') + (!row.warehouseUnitPrice ? "货值单价" : '') + "不能为空");
                 }
                 const loading = this.$loading({
                     lock: true,

+ 13 - 0
src/views/tradeAgency/tradeAgency/detailsPage.vue

@@ -947,6 +947,19 @@ export default {
                         overHidden: true
                     },
                     {
+                        label: "规格",
+                        prop: "specifications",
+                        width: "100",
+                        cell: true,
+                        overHidden: true
+                    },
+                    {
+                        label: "已开发票金额",
+                        prop: "invoiceAmount",
+                        width: "120",
+                        overHidden: true
+                    },
+                    {
                         label: "订单号",
                         prop: "orderNo",
                         width: "100",