فهرست منبع

新增复制功能 箱管新加撤销请核 提取价格新加参数 优化对账中心明细

Qukatie 5 ماه پیش
والد
کامیت
a4a4622fd9

+ 8 - 0
src/api/iosBasicData/overdueFee.js

@@ -42,4 +42,12 @@ export function submit(data) {
     method: 'post',
     data
   })
+}
+//单据复制
+export const copyAgent = (data) => {
+  return request({
+    url: '/api/blade-los/storagefees/copy',
+    method: 'get',
+    params: data
+  })
 }

+ 45 - 1
src/views/boxManagement/boxAdjustment/detailsPage.vue

@@ -211,6 +211,9 @@
                   @click="allClick('费用批量删除')">批量删除</el-button>
                 <el-button type="primary" plain size="small" :disabled="selectionfeecList.length == 0"
                   @click="allClick('费用申请')">请核费用</el-button>
+                <el-button type="danger" plain size="small"
+                  :disabled="selectionfeecList.length == 0 || form.buxStaus == '已确认'"
+                  @click="allClick('C撤销请核')">撤销请核</el-button>
                 <el-button type="primary" plain size="small" :disabled="selectionfeecList.length != 1"
                   @click="allClick('C申请修改')">申请修改</el-button>
                 <el-button type="success" plain size="small" :disabled="selectionfeecList.length != 1"
@@ -353,7 +356,8 @@ import {
   confirm,
   revoke,
   pleaseVerifyCost,
-  getAccurate
+  getAccurate,
+  revokeCheckPleaseVerifyCost
 } from "@/api/boxManagement/buyContainer/index.js";
 import dicSelect from "@/components/dicSelect/main";
 import checkSchedule from "@/components/checkH/checkSchedule.vue";
@@ -1958,6 +1962,46 @@ export default {
           })
         });
       }
+       if (name == 'C撤销请核') {
+        for (let row of this.selectionfeecList) {
+          if (!row.id) {
+            return this.$message.error("请保存费用明细");
+          }
+          if (row.auditStatus == 0) {
+            return this.$message.error("未申请费用,不允许撤销");
+          }
+          if (row.auditStatus > 2) {
+            return this.$message.error("费用已经审核通过,请使用申请修改和删除功能!");
+          }
+        }
+        this.$confirm("确定撤销请核?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(() => {
+          let obj = {}
+          obj = {
+            srcId: this.form.id,
+            srcType: this.form.type,
+            feeCenterList: this.selectionfeecList,
+            url: '/boxManagement/boxAdjustment/index',
+            pageStatus: '',
+            pageLabel: '箱管调箱',
+          }
+          const loading = this.$loading({
+            lock: true,
+            text: '加载中',
+            spinner: 'el-icon-loading',
+            background: 'rgba(255,255,255,0.7)'
+          });
+          revokeCheckPleaseVerifyCost(obj).then(res => {
+            this.$message.success("操作成功");
+            this.getDetail(this.form.id)
+          }).finally(() => {
+            loading.close();
+          })
+        });
+      }
       if (name == 'C申请修改') {
         for (let row of this.selectionfeecList) {
           if (!row.id) {

+ 19 - 6
src/views/boxManagement/boxAdjustment/index.vue

@@ -64,7 +64,7 @@ export default {
         searchLabelWidth: 90,
         tip: false,
         searchShow: true,
-        searchMenuSpan:12 ,
+        searchMenuSpan: 12,
         border: true,
         index: true,
         addBtn: false,
@@ -160,7 +160,7 @@ export default {
           {
             label: '起运港提/送箱场站',
             prop: 'polStationCname',
-            overHidden: true,            
+            overHidden: true,
             search: true,
             searchOrder: 5,
             searchLabelWidth: 120,
@@ -197,7 +197,7 @@ export default {
           {
             label: '目的港提/送箱场站',
             prop: 'podStationCname',
-            overHidden: true,           
+            overHidden: true,
             search: true,
             searchOrder: 7,
             searchLabelWidth: 120,
@@ -254,6 +254,19 @@ export default {
               }
             ]
           },
+          // {
+          //   label: "财务状态",
+          //   prop: "accountStatus",
+          //   type: "select",
+          //   dicUrl:
+          //     "/api/blade-system/dict-biz/dictionary?code=account_status",
+          //   props: {
+          //     label: "dictValue",
+          //     value: "dictKey"
+          //   },
+          //   width: "120",
+          //   overHidden: true
+          // },
           {
             label: "制单人",
             prop: "createUserName",
@@ -294,7 +307,7 @@ export default {
   },
   activated() {
     setTimeout(() => {
-          if (this.$route.query.home) {
+      if (this.$route.query.home) {
         this.addButton();
       }
     }, 100);
@@ -421,7 +434,7 @@ export default {
         this.$message.success("保存成功");
         //关闭窗口
         this.$refs[ref].$refs.dialogColumn.columnBox = false;
-        this.selectionList=[]
+        this.selectionList = []
         this.searchReset()
       }
     },
@@ -432,7 +445,7 @@ export default {
       if (inSave) {
         this.$message.success("重置成功");
         this.$refs[ref].$refs.dialogColumn.columnBox = false;
-        this.selectionList=[]
+        this.selectionList = []
         this.searchReset()
       }
     },

+ 13 - 0
src/views/boxManagement/boxCost/index.vue

@@ -149,6 +149,19 @@ export default {
               }
             ]
           },
+          // {
+          //   label: "财务状态",
+          //   prop: "accountStatus",
+          //   type: "select",
+          //   dicUrl:
+          //     "/api/blade-system/dict-biz/dictionary?code=account_status",
+          //   props: {
+          //     label: "dictValue",
+          //     value: "dictKey"
+          //   },
+          //   width: "120",
+          //   overHidden: true
+          // },
           {
             label: "制单人",
             prop: "createUserName",

+ 4 - 2
src/views/boxManagement/containerNumber/index.vue

@@ -62,7 +62,7 @@ export default {
                 menuWidth: 140,
                 tip: false,
                 searchShow: true,
-                searchMenuSpan: 12,
+                searchMenuSpan: 6,
                 border: true,
                 index: true,
                 addBtn: false,
@@ -80,7 +80,7 @@ export default {
                         width: 150,
                         overHidden: true,
                         search: true,
-                        searchOrder: 7,
+                        searchOrder: 2.2,
                         type: "select",
                         filterable: true,
                         remote: true,
@@ -119,6 +119,8 @@ export default {
                         prop: 'internalContainerNumber',
                         width: 100,
                         overHidden: true,
+                        search: true,
+                        searchOrder: 2.4,
                     },
                     {
                         label: '放箱号类型',

+ 11 - 2
src/views/boxManagement/podComeback/index.vue

@@ -97,7 +97,8 @@ export default {
       query: {
         whether: '0',
         businessType: "SI",
-        actualEtaList: defaultDate2()
+        actualEtaList: defaultDate2(),
+        boxBelongsTo:'SOC',
       },
       loading: false,
       page: {
@@ -114,7 +115,7 @@ export default {
         menu: false,
         tip: false,
         searchShow: true,
-        searchMenuSpan: 18,
+        searchMenuSpan: 6,
         border: true,
         index: true,
         addBtn: false,
@@ -168,6 +169,7 @@ export default {
             label: 'MB/L NO',
             prop: 'mblno',
             overHidden: true,
+            search: true,
           },
           {
             label: 'ETA',
@@ -262,6 +264,13 @@ export default {
             label: '箱属',
             prop: 'boxBelongsTo',
             overHidden: true,
+            search: true,
+            type: 'select',
+            dicUrl: "/api/blade-system/dict-biz/dictionary?code=boxBelongsTo",
+            props: {
+              label: "dictValue",
+              value: "dictValue"
+            },
           },
           {
             label: '箱型',

+ 13 - 4
src/views/iosBasicData/SeafreightExportF/bills/index.vue

@@ -175,7 +175,7 @@
                 <template slot="eta" slot-scope="scope">
                     <span>{{
                         scope.row.eta ? scope.row.eta.slice(0, 10) : ""
-                    }}</span>
+                        }}</span>
                 </template>
                 <template slot="updateTime" slot-scope="scope">
                     <span>{{
@@ -1508,6 +1508,8 @@ export default {
             let airlineId = []
             let shipNameId = []
             let shippingCompanyId = []
+            let boxBelongsTo = []
+            let etd = []
             let voyag = []
             let obj = {}
             let billsIds = []
@@ -1521,6 +1523,8 @@ export default {
                 if (item.vesselId) shipNameId.push(item.vesselId)
                 if (item.carrierId) shippingCompanyId.push(item.carrierId)
                 if (item.voyageNo) voyag.push(item.voyageNo)
+                if (item.boxBelongsTo) boxBelongsTo.push(item.boxBelongsTo)
+                if (item.etd) etd.push(item.etd)
                 billsIds.push(item.id)
             }
             if ([...new Set(podId)].length > 1) {
@@ -1540,13 +1544,18 @@ export default {
             if ([...new Set(shippingCompanyId)].length > 1) {
                 return this.$message.error("请选择相同的船公司");
             }
-            // if ([...new Set(voyag)].length > 1) {
-            //     return this.$message.error("请选择相同的航次");
-            // }
+            if ([...new Set(boxBelongsTo)].length > 1) {
+                return this.$message.error("请选择相同的箱属");
+            }
+            if ([...new Set(etd)].length > 1) {
+                return this.$message.error("请选择相同的ETD");
+            }
             obj = {
                 podId: podId[0],
                 destinationId: destinationId[0],
                 shippingCompanyId: shippingCompanyId[0],
+                businessType: boxBelongsTo[0],
+                etd: etd[0]
             }
             this.$refs.extractionCost.inTemplate(obj, billsIds.join(','))
         },

+ 19 - 4
src/views/iosBasicData/fininvoicesApplyfor/index.vue

@@ -9,6 +9,14 @@
         @resetColumn="resetColumnTwo('crud', 'option', 'optionBack', 320)"
         @saveColumn="saveColumnTwo('crud', 'option', 'optionBack', 320)" @on-load="onLoad">
         <template slot="menuLeft">
+          <div style="margin-top: 10px">
+            <el-tabs type="card" v-model="query.billStatus" @tab-click="handleClick">
+              <el-tab-pane label="未开" name="0">
+              </el-tab-pane>
+              <el-tab-pane label="已开" name="1">
+              </el-tab-pane>
+            </el-tabs>
+          </div>
           <el-button type="success" size="small" icon="el-icon-plus" plain @click="newbillFun">新建发票申请
           </el-button>
           <el-button type="danger" size="small" icon="el-icon-delete" plain @click="handleDelete">一键删除
@@ -64,7 +72,9 @@ export default {
       isShow: true,
       editSave: false, // 编辑还是保存
       form: {},
-      query: {},
+      query: {
+        billStatus: '0'
+      },
       loading: true,
       page: {
         pageSize: 10,
@@ -113,7 +123,7 @@ export default {
             hide: true,
             showColumn: false,
           },
-           {
+          {
             label: "客户名称",
             prop: "corpCnName",
             width: "120",
@@ -121,7 +131,7 @@ export default {
             searchOrder: 1.1,
             overHidden: true,
           },
-                    {
+          {
             label: "MB/L NO",
             prop: "mblno",
             search: true,
@@ -649,6 +659,10 @@ export default {
     }
   },
   methods: {
+    handleClick() {
+      this.page.currentPage = 1;
+      this.onLoad(this.page, this.query);
+    },
     // 新建发票
     newbillFun() {
       this.isShow = false;
@@ -919,7 +933,8 @@ export default {
   cursor: pointer;
   color: #1e9fff;
 }
+
 /deep/ .el-col-md-8 {
-    width: 24.33333%;
+  width: 24.33333%;
 }
 </style>

+ 102 - 28
src/views/iosBasicData/finstlbills/assembly/finstlbillsitems.vue

@@ -1,11 +1,9 @@
 <template>
     <div>
         <!--:row-style="{height:'20px',padding:'0px',fontSize:'12px'}"-->
-        <avue-crud :option="option" :data="tableData" id="out-table" ref="crud"
+        <avue-crud :option="optionBack" :data="filteredData" v-loadmore="handelLoadmore" id="out-table" ref="crud"
             @selection-change="handleSelectionChange" :header-cell-style="tableHeaderCellStyle"
-            :row-class-name="rowClassName" :cell-style="cellStyle"
-            @resetColumn="resetColumn('crud', 'option', 'optionBack', 492)"
-            @saveColumn="saveColumn('crud', 'option', 'optionBack', 492)">
+            :row-class-name="rowClassName" :cell-style="cellStyle" :data-size="tableData.length">
             <template slot="menuLeft">
                 <slot name="menuLeft"></slot>
             </template>
@@ -77,7 +75,8 @@ export default {
             curCodeData: [], // 币种
             option: {},
             optionBack: {
-                height: 'auto',
+                height: '300px',
+                // maxHeight: '300px',
                 calcHeight: 30,
                 menuWidth: 60,
                 tip: false,
@@ -88,9 +87,12 @@ export default {
                 editBtn: false,
                 delBtn: false,
                 refreshBtn: false,
-                index: true,
+                // index: true,
                 selection: true,
                 align: 'center',
+                selectionFixed: false,
+                // // expandFixed: false,
+                // menuFixed: false,
                 column: [
                     {
                         label: "所属公司",
@@ -126,14 +128,14 @@ export default {
                         }],
                         overHidden: true,
                     },
-/*
-                    {
-                        label: "发票号",
-                        prop: "invoiceNo",
-                        width: 80,
-                        overHidden: true
-                    },
-*/
+                    /*
+                                        {
+                                            label: "发票号",
+                                            prop: "invoiceNo",
+                                            width: 80,
+                                            overHidden: true
+                                        },
+                    */
                     {
                         label: "费用名称",
                         prop: "feeCnName",
@@ -252,20 +254,20 @@ export default {
                         width: 100,
                         overHidden: true
                     },
-/*
-                    {
-                        label: "签收人",
-                        prop: "signforName",
-                        width: 80,
-                        overHidden: true
-                    },
-                    {
-                        label: "签收日期",
-                        prop: "signforDate",
-                        width: 100,
-                        overHidden: true
-                    },
-*/
+                    /*
+                                        {
+                                            label: "签收人",
+                                            prop: "signforName",
+                                            width: 80,
+                                            overHidden: true
+                                        },
+                                        {
+                                            label: "签收日期",
+                                            prop: "signforDate",
+                                            width: 100,
+                                            overHidden: true
+                                        },
+                    */
                     {
                         label: "BOOKINGNO",
                         prop: "bookingNo",
@@ -334,6 +336,62 @@ export default {
                     }
                 ]
             },
+            currentStartIndex: 0,
+            currentEndIndex: 20
+        }
+    },
+    directives: {
+        loadmore: {
+            componentUpdated: function (el, binding, vnode, oldVnode) {
+                // 设置默认溢出显示数量
+                var spillDataNum = 20;
+
+                // 设置隐藏函数
+                var timeout = false;
+                let setRowDisableNone = function (topNum, showRowNum, binding) {
+                    if (timeout) {
+                        clearTimeout(timeout);
+                    }
+                    timeout = setTimeout(() => {
+                        binding.value.call(null, topNum, topNum + showRowNum + spillDataNum);
+                    });
+                };
+                setTimeout(() => {
+                    const dataSize = vnode.data.attrs['data-size'];
+                    const oldDataSize = oldVnode.data.attrs['data-size'];
+                    if (dataSize === oldDataSize) return;
+                    const selectWrap = el.querySelector('.el-table__body-wrapper');
+                    const selectTbody = selectWrap.querySelector('table tbody');
+                    const selectRow = selectWrap.querySelector('table tr');
+                    if (!selectRow) {
+                        return;
+                    }
+                    const rowHeight = selectRow.clientHeight;
+                    let showRowNum = Math.round(selectWrap.clientHeight / rowHeight);
+
+                    const createElementTR = document.createElement('tr');
+                    let createElementTRHeight = (dataSize - showRowNum - spillDataNum) * rowHeight;
+                    createElementTR.setAttribute('style', `height: ${createElementTRHeight}px;`);
+                    selectTbody.append(createElementTR);
+
+                    // 监听滚动后事件
+                    selectWrap.addEventListener('scroll', function () {
+                        let topPx = this.scrollTop - spillDataNum * rowHeight;
+                        let topNum = Math.round(topPx / rowHeight);
+                        let minTopNum = dataSize - spillDataNum - showRowNum;
+                        if (topNum > minTopNum) {
+                            topNum = minTopNum;
+                        }
+                        if (topNum < 0) {
+                            topNum = 0;
+                            topPx = 0;
+                        }
+                        selectTbody.setAttribute('style', `transform: translateY(${topPx}px)`);
+                        createElementTR.setAttribute('style', `height: ${createElementTRHeight - topPx > 0 ? createElementTRHeight - topPx : 0}px;`);
+                        setRowDisableNone(topNum, showRowNum, binding);
+                    })
+                });
+            }
         }
     },
     async created() {
@@ -342,6 +400,10 @@ export default {
         this.invoicelosWorkDictsfun()
     },
     methods: {
+        handelLoadmore(currentStartIndex, currentEndIndex) {
+            this.currentStartIndex = currentStartIndex;
+            this.currentEndIndex = currentEndIndex;
+        },
         armbChange(row) {
             if (Number(row.amount - row.reconciliationAmount) > 0) {
                 if (Number(row.currentStlAmountRMB) < 0) {
@@ -614,6 +676,18 @@ export default {
             return this.handleSelectionData.reduce((start, end) => {
                 return start.rowIndex < end.rowIndex ? start : end;
             });
+        },
+        filteredData() {
+            let list = this.tableData.filter((item, index) => {
+                if (index < this.currentStartIndex) {
+                    return false;
+                } else if (index > this.currentEndIndex) {
+                    return false;
+                } else {
+                    return true;
+                }
+            });
+            return list
         }
     },
 

+ 18 - 1
src/views/iosBasicData/overdueFee/detailsPage.vue

@@ -67,6 +67,7 @@ import {
   detail,
   submit,
   itemRemove,
+  copyAgent
 } from "@/api/iosBasicData/overdueFee.js";
 import dicSelect from "@/components/dicSelect/main";
 export default {
@@ -309,12 +310,15 @@ export default {
   async created() {
     this.roleName = localStorage.getItem('roleName').split(',')
     this.option = await this.getColumnData(this.getColumnName(491), this.optionBack);
-    if (this.detailData.id) {
+    if (this.detailData && this.detailData.id) {
       this.editButton = true
       this.editDisabled = true
       this.optionForm.disabled = true
       this.getDetail(this.detailData.id)
     }
+    if (this.detailData && this.detailData.copyId) {
+      this.getCopydate(this.detailData.copyId)
+    }
   },
   methods: {
     rowCell(row, index) {
@@ -404,6 +408,19 @@ export default {
         loading.close()
       })
     },
+    getCopydate(id) {
+      const loading = this.$loading({
+        lock: true,
+        text: '加载中',
+        spinner: 'el-icon-loading',
+        background: 'rgba(255,255,255,0.7)'
+      });
+      copyAgent({ id: id }).then(res => {
+        this.form = res.data.data
+      }).finally(() => {
+        loading.close()
+      })
+    },
     inEdit() {
       this.editButton = false
       this.editDisabled = false

+ 8 - 0
src/views/iosBasicData/overdueFee/index.vue

@@ -10,6 +10,8 @@
         <template slot="menuLeft">
           <el-button type="primary" size="small" icon="el-icon-plus" @click="addButton">创建单据
           </el-button>
+          <el-button type="success" size="small" :disabled="selectionList.length != 1" @click="copyButton">复制单据
+          </el-button>
         </template>
         <template slot="menu" slot-scope="{ row, index }">
           <el-button size="small" icon="el-icon-edit" type="text" @click="rowEdit(row)">编辑</el-button>
@@ -146,6 +148,12 @@ export default {
     addButton() {
       this.isShow = false
     },
+    copyButton() {
+      this.isShow = false
+      this.detailData = {
+        copyId: this.selectionList[0].id
+      };
+    },
     rowEdit(row) {
       this.detailData = {
         id: row.id

+ 10 - 1
src/views/iosBasicData/podStation/index.vue

@@ -66,6 +66,7 @@ export default {
       query: {
         whether: '0',
         businessType: "SE",
+        boxBelongsTo:'SOC',
         actualEtdList: defaultDate2()
       },
       loading: false,
@@ -83,7 +84,7 @@ export default {
         menu: false,
         tip: false,
         searchShow: true,
-        searchMenuSpan: 18,
+        searchMenuSpan: 6,
         border: true,
         index: true,
         addBtn: false,
@@ -137,6 +138,7 @@ export default {
             label: 'MB/L NO',
             prop: 'mblno',
             overHidden: true,
+            search: true,
           },
           {
             label: 'ETD',
@@ -231,6 +233,13 @@ export default {
             label: '箱属',
             prop: 'boxBelongsTo',
             overHidden: true,
+            search: true,
+            type: 'select',
+            dicUrl: "/api/blade-system/dict-biz/dictionary?code=boxBelongsTo",
+            props: {
+              label: "dictValue",
+              value: "dictValue"
+            },
           },
           {
             label: '箱型',