Browse Source

1.海运进出口 调整列设置顺序功能
2.海运箱量统计,美金改名;船名显示英文
3.财务管理 付费申请 所属公司允许任何情况都可以修改 并放开保存限制
4.发票申请,销项发票,进项发票,检索条件联动
5.海运箱量统计,ETD/ETA不用显示时分秒 默认分单和直单 加上单据类型选择 (主单 分单 直单)
6. 托书页面调整,增加业务来源
7.海运进口 调整页面
8.海运进口 新加费用修改和费用删除

Qukatie 6 months ago
parent
commit
269ece2b47

+ 31 - 24
src/components/dicSelect/main.vue

@@ -2,26 +2,27 @@
     <!-- 中文下拉 -->
     <div>
         <div style="display: flex;">
-            <el-tooltip effect="dark" :disabled="!collapseTags" :content="collapseTags?(value?value.join(';'):null):value" placement="top">
-            <el-select ref="mySelect" style="width:100%" v-model="value" @input="inputChange"
-                :placeholder="'请选择 ' + placeholder" @change="selectChange" @clear="clear" :clearable="clearable"
-                :multiple="multiple" :filterable="filterable" :remote="remote" :remote-method="remoteMethod"
-                :loading="loading" :size="size" :disabled="disabled" :collapse-tags="collapseTags"
-                @visible-change="visibleChange" :allow-create="allowCreate">
-                <el-option v-for="item in options" :key="item[key]" :label="item[label]"
-                    :value="item[keyValue ? keyValue : label]" :disabled="item.disabled">
-                    <span v-if="slotRight" style="float: left">{{ item[label] }}</span>
-                    <span v-if="slotRight"
-                        style="float: right; color: #8492a6; font-size: 13px; max-width: 200px; white-space: nowrap; overflow: hidden;text-overflow: ellipsis;">{{
-                            item[rightLabel]
-                        }}</span>
-                    <span v-if="diySlot"
-                        style="float: left;white-space: nowrap; overflow: hidden;text-overflow: ellipsis;"
-                        :style="{ 'max-width': (selectWidth - 30) + 'px' }">{{
-                            item[label]
-                        }}</span>
-                </el-option>
-            </el-select>
+            <el-tooltip effect="dark" :disabled="!collapseTags"
+                :content="collapseTags ? (value ? value.join(';') : null) : value" placement="top">
+                <el-select ref="mySelect" style="width:100%" v-model="value" @input="inputChange"
+                    :placeholder="'请选择 ' + placeholder" @change="selectChange" @clear="clear" :clearable="clearable"
+                    :multiple="multiple" :filterable="filterable" :remote="remote" :remote-method="remoteMethod"
+                    :loading="loading" :size="size" :disabled="disabled" :collapse-tags="collapseTags"
+                    @visible-change="visibleChange" :allow-create="allowCreate">
+                    <el-option v-for="item in options" :key="item[key]" :label="item[label]"
+                        :value="item[keyValue ? keyValue : label]" :disabled="item.disabled">
+                        <span v-if="slotRight" style="float: left">{{ item[label] }}</span>
+                        <span v-if="slotRight"
+                            style="float: right; color: #8492a6; font-size: 13px; max-width: 200px; white-space: nowrap; overflow: hidden;text-overflow: ellipsis;">{{
+                                item[rightLabel]
+                            }}</span>
+                        <span v-if="diySlot"
+                            style="float: left;white-space: nowrap; overflow: hidden;text-overflow: ellipsis;"
+                            :style="{ 'max-width': (selectWidth - 30) + 'px' }">{{
+                                item[label]
+                            }}</span>
+                    </el-option>
+                </el-select>
             </el-tooltip>
             <el-button v-if="searchShow" icon="el-icon-search" size="small" :disabled="disabled" @click="open()" />
         </div>
@@ -295,10 +296,14 @@ export default {
             type: Boolean,
             default: false
         },
-        allowCreate:{
+        allowCreate: {
             type: Boolean,
             default: false
         },
+        initData: {
+            type: Boolean,
+            default: false
+        }
     },
     model: {
         prop: "value",
@@ -308,7 +313,9 @@ export default {
     },
     mounted() {
         if (this.activateCreated) {
-            // this.getDicData()
+            if (this.initData) {
+                this.getDicData()
+            }
         } else {
             this.options = this.mockData
         }
@@ -343,7 +350,7 @@ export default {
                     this.data = {}
                     this.getDicData()
                 }
-
+                this.$emit('visibleChange')
             }
         },
         inputChange() {
@@ -351,7 +358,7 @@ export default {
                 if (this.value && this.value.length) {
                     this.$emit('selectedValue', this.value.join(','))
                 } else {
-                    this.$emit('selectedValue',null)
+                    this.$emit('selectedValue', null)
                 }
             } else {
                 this.$emit('selectedValue', this.value)

+ 85 - 12
src/components/feeModify/main.vue

@@ -34,9 +34,14 @@
               :disabled="newOption.disabled"></dic-select>
           </template>
           <template slot="unitNoUpdate">
-            <dic-select v-model="newForm.unitNoUpdate" placeholder="费用名称" label="cnName"
-              url="/blade-los/bunits/listAll?status=0" :filterable="true" :slotRight="true" rightLabel="code"
-              :disabled="newOption.disabled" @selectChange="dicChange('unitNoUpdate', $event)"></dic-select>
+            <!-- <dic-select v-model="newForm.unitNoUpdate" :key="updateFormKey" placeholder="计量单位" label="code"
+              :filterable="true" :mockData="unitNoData" :disabled="newOption.disabled"
+              @selectChange="dicChange('unitNoUpdate', $event)" @visibleChange="visibleChange"></dic-select> -->
+            <el-select v-model="newForm.unitNoUpdate" placeholder="请选择 计量单位" size="small"
+              @visible-change="visibleChange" @change="dicChange('unitNoUpdate', $event)">
+              <el-option v-for="item in unitNoData" :key="item.code" :label="item.code" :value="item.code">
+              </el-option>
+            </el-select>
           </template>
           <template slot="curCodeUpdate">
             <dic-select v-model="newForm.curCodeUpdate" placeholder="币别" label="code"
@@ -46,7 +51,7 @@
           </template>
           <template slot="priceUpdate">
             <el-input-number v-model="newForm.priceUpdate" :controls="false" placeholder="请输入 单价" size="small"
-              style="width: 100%;" :precision="0" @change="countChange()"
+              style="width: 100%;" :precision="2" @change="countChange()"
               :disabled="newOption.disabled"></el-input-number>
           </template>
           <template slot="quantityUpdate">
@@ -67,6 +72,7 @@
 <script>
 import { applyUpdate, revokeapplyUpdate, getDetail } from '@/api/iosBasicData/feeModify.js'
 import dicSelect from "@/components/dicSelect/main";
+import { getBunitsPage } from "@/api/iosBasicData/bunits";
 import _ from "lodash";
 export default {
   components: {
@@ -83,6 +89,7 @@ export default {
       deptId: JSON.parse(localStorage.getItem('sysitemData')).deptId,
       oldForm: {},
       newForm: {},
+      unitNoData: [],
       dialogVisible: false,
       oldOption: {
         menuBtn: false,
@@ -195,13 +202,66 @@ export default {
       },
       type: null,
       title: null,
+      updateFormKey: new Date().getTime(),
     }
   },
   created() {
     // this.option = await this.getColumnData(this.getColumnName(309.6), this.optionBack);
-    
+
   },
   methods: {
+    // 获取计算属性
+    async getBunitsPagefun(type, feeRow) {
+      let srcBillId = null
+      if (this.form.billType == 'MH') {
+        srcBillId = this.form.masterId
+      } else {
+        srcBillId = this.form.id
+      }
+      const res = await getBunitsPage({ srcBillId })
+      this.unitNoData = []
+      let boxarr40 = ['40HC', '40GP']
+      let boxarr20 = ['20GP']
+      let teunum = 0
+      for (let item of res.data.data) {
+        // 按箱型
+        if (item.quantityRule != 1) {
+          // TEU
+          if (item.quantityRule == 4) {
+            for (let data of this.form.preContainersList) {
+              // 40*2 20*1
+              if (boxarr40.indexOf(data.cntrTypeCode) != -1) {
+                teunum += Number(data.quantity) * 2
+              } else if (boxarr20.indexOf(data.cntrTypeCode) != -1) {
+                teunum += Number(data.quantity)
+              }
+            }
+            this.unitNoData.push({ ...item, quantity: teunum })
+          } else {
+            this.unitNoData.push(item) // 不是TEU和不是箱的走这个
+          }
+        }
+      }
+      let arr = this.form.preContainersList.map(item => {
+        return {
+          quantityRule: 1, // 1 是按箱量
+          code: item.cntrTypeCode,
+          quantity: item.quantity,
+        }
+      })
+      this.unitNoData = [...arr, ...this.unitNoData]
+      // this.updateFormKey = new Date().getTime()
+      // // 选择费用时带出第一条
+      // if (type) {
+      //   let feeunitNodata = []
+      //   for (let item of this.unitNoData) {
+      //     if (item.quantityRule == feeRow.unitNo) {
+      //       feeunitNodata.push(item)
+      //     }
+      //   }
+      //   this.newForm.unitNoUpdate=feeunitNodata[0].code
+      // }
+    },
     openDialog(row, type) {
       if (type == 'fix') {
         this.oldForm = row
@@ -226,7 +286,7 @@ export default {
           priceUpdate: row.price,
           amountUpdate: row.amount,
         }
-         this.checkRate(null, (this.form.etd ? this.form.etd + ' 00:00:00' : null), this.oldForm.dc, 1, this.form.branchId)
+        this.checkRate(null, (this.form.etd ? this.form.etd + ' 00:00:00' : null), this.oldForm.dc, 1, this.form.branchId)
         this.type = type
         this.title = '费用申请修改'
         this.dialogVisible = true
@@ -243,6 +303,7 @@ export default {
             ...this.newForm,
             billDate: this.oldForm.billDate + ' 00:00:00',
             etd: this.oldForm.etd + ' 00:00:00',
+            eta: this.oldForm.eta + ' 00:00:00',
             type: 1,
             id: null,
             pid: this.form.id,
@@ -283,7 +344,7 @@ export default {
       }
     },
     countChange() {
-      this.newForm.amountUpdate = _.round(_.multiply(this.newForm.priceUpdate?this.newForm.priceUpdate:0, this.newForm.quantityUpdate?this.newForm.quantityUpdate:0), 2)
+      this.newForm.amountUpdate = _.round(_.multiply(this.newForm.priceUpdate ? this.newForm.priceUpdate : 0, this.newForm.quantityUpdate ? this.newForm.quantityUpdate : 0), 2)
     },
     dicChange(name, row) {
       if (name == 'corpTypeUpdate') {
@@ -351,6 +412,7 @@ export default {
           this.newForm.feeEnNameUpdate = row.enName
           this.newForm.curCodeUpdate = row.curNo
           this.newForm.exrateUpdate = this.getExchangeRate(row.curNo, this.oldForm.dc, 1)
+          // this.getBunitsPagefun(true, row)
         } else {
           this.newForm.feeIdUpdate = null
           this.newForm.feeCodeUpdate = null
@@ -369,19 +431,30 @@ export default {
         }
 
       }
-      if(name=='unitNoUpdate'){
-        if(row){
-          this.newForm.quantityUpdate=row.quantity
-               this.newForm.amountUpdate = _.round(_.multiply(this.newForm.priceUpdate?this.newForm.priceUpdate:0, this.newForm.quantityUpdate?this.newForm.quantityUpdate:0), 2)
-        }
+      if (name == 'unitNoUpdate') {
+        // console.log(row)
+        this.unitNoData.forEach(item => {
+          if (item.code == row) {
+            this.newForm.quantityUpdate = item.quantity
+            this.newForm.amountUpdate = _.round(_.multiply(this.newForm.priceUpdate ? this.newForm.priceUpdate : 0, this.newForm.quantityUpdate ? this.newForm.quantityUpdate : 0), 2)
+          }
+        })
+        // if (row) {
+        //   this.newForm.quantityUpdate = row.quantity
+        //   this.newForm.amountUpdate = _.round(_.multiply(this.newForm.priceUpdate ? this.newForm.priceUpdate : 0, this.newForm.quantityUpdate ? this.newForm.quantityUpdate : 0), 2)
+        // }
       }
     },
+    visibleChange() {
+      this.getBunitsPagefun()
+    },
     submit() {
       let obj = {
         ...this.oldForm,
         ...this.newForm,
         billDate: this.oldForm.billDate + ' 00:00:00',
         etd: this.oldForm.etd + ' 00:00:00',
+        eta: this.oldForm.eta + ' 00:00:00',
         type: 0,
         id: null,
         pid: this.form.id,

+ 17 - 4
src/views/approveDataH/index.vue

@@ -86,10 +86,10 @@
         <el-button type="text" size="small" v-else-if="scope.row.checkType == 'FY-SQXG'"
           :disabled="scope.row.auditStatus != 'S'" @click.stop="printWindowfun(scope.row, 'FY-SQXG')">审批
         </el-button>
-           <el-button type="text" size="small" v-else-if="scope.row.checkType == 'FY-SQSC'"
+        <el-button type="text" size="small" v-else-if="scope.row.checkType == 'FY-SQSC'"
           :disabled="scope.row.auditStatus != 'S'" @click.stop="printWindowfun(scope.row, 'FY-SQSC')">审批
         </el-button>
-                   <el-button type="text" size="small" v-else-if="scope.row.checkType == 'KHTS'"
+        <el-button type="text" size="small" v-else-if="scope.row.checkType == 'KHTS'"
           :disabled="scope.row.auditStatus != 'S'" @click.stop="printWindowfun(scope.row, 'KHTS')">审批
         </el-button>
         <el-button type="text" size="small" v-else :disabled="scope.row.auditStatus != 'S'"
@@ -330,13 +330,15 @@ export default {
           classifyCode: row.srcBusType,
           groupCode: 'FYSQ'
         }
-      } else if (type == 'FY-SQXG'||type == 'FY-SQSC') {
+      } else if (type == 'FY-SQXG' || type == 'FY-SQSC') {
         obj = {
-          billId: row.billId,
+          billId: row.srcBillId,
           businessType: 'HYCK',
           classifyCode: '费用',
           groupCode: '费用-申请修改'
         }
+
+        console.log(obj, 1111111111)
       } else if (type == 'KHTS') {
         obj = {
           billId: row.billId,
@@ -376,6 +378,17 @@ export default {
           this.selectPrintingDialog = false
           this.handleReportPreview(val.url, res.data.data.data)
         })
+      } else if (type == 'FY-SQXG' || type == 'FY-SQSC') {
+        reportsGetReportData({
+          billId: this.reportsData.srcBillId,
+          reportCode: val.classifyCode,
+          groupCode: val.groupCode,
+          type: val.businessType
+        }).then(res => {
+          // 关闭弹窗
+          this.selectPrintingDialog = false
+          this.handleReportPreview(val.url, res.data.data.data)
+        })
       } else {
         reportsGetReportData({
           billId: this.reportsData.billId,

+ 75 - 6
src/views/basicData/container/archives.vue

@@ -6,6 +6,11 @@
       :upload-delete="uploadDelete" :before-close="beforeClose" @row-del="rowDel" @refresh-change="refreshChange"
       @resetColumn="resetColumnTwo('crud', 'option', 'optionList', 234)"
       @saveColumn="saveColumnTwo('crud', 'option', 'optionList', 234)" :page.sync="page">
+      <template slot="menuLeft">
+        <el-button type="success" size="small" @click="importData">导入</el-button>
+        <el-button type="warning" size="small" @click="outExport">导 出
+        </el-button>
+      </template>
       <template slot-scope="{type,size,row,$index}" slot="menu">
         <el-button icon="el-icon-edit" :size="size" type="text" @click="$refs.crud.rowEdit(row, index)">查 看
         </el-button>
@@ -42,6 +47,20 @@
         </avue-crud>
       </span>
     </el-dialog>
+    <el-dialog title="导入数据" append-to-body :visible.sync="excelBox" width="555px" :close-on-click-modal="false"
+      v-dialog-drag>
+      <avue-form v-if="excelBox" :option="excelOption" v-model="excelForm" :table-loading="excelLoading"
+        :upload-before="uploadBefore" :upload-after="onSuccess">
+        <template slot="excelTemplate">
+          <el-button type="primary" @click="handleGet">
+            点击下载<i class="el-icon-download el-icon--right"></i>
+          </el-button>
+        </template>
+      </avue-form>
+      <p style="text-align: center;color: #DC0505">
+        温馨提示 第一次导入时请先下载模板
+      </p>
+    </el-dialog>
   </basic-container>
 </template>
 
@@ -58,6 +77,34 @@ export default {
   },
   data() {
     return {
+      excelBox: false,
+      excelForm: {},
+      excelLoading: false,
+      excelOption: {
+        submitBtn: false,
+        emptyBtn: false,
+        column: [
+          {
+            label: "模板下载",
+            prop: "excelTemplate",
+            formslot: true,
+            span: 24
+          },
+          {
+            label: "模板上传",
+            prop: "excelFile",
+            type: "upload",
+            drag: true,
+            loadText: "模板上传中,请稍等",
+            span: 24,
+            propsHttp: {
+              res: "data"
+            },
+            tip: "请上传 .xls,.xlsx 标准格式文件",
+            action: "/api/blade-los/archives/import-descParts-info"
+          }
+        ]
+      },
       boxTrack: false,
       dataTrackList: [],
       loadingTwo: false,
@@ -628,6 +675,28 @@ export default {
     }
   },
   methods: {
+    importData() {
+      this.excelForm = {}
+      this.excelBox = true
+    },
+    // 上传成功
+    onSuccess(res, done, loading, column) {
+      if (res.length > 0) {
+        this.$message.success("上传成功!");
+      }
+      this.excelBox = false;
+      // this.$message.success("导入成功!");
+      this.onLoad(this.page, this.search)
+      loading = false;
+      done();
+    },
+    // 下载模板
+    handleGet() {
+      window.open(
+        `/api/blade-los/archives/export-archives-info?${this.website.tokenHeader
+        }=${getToken()}`
+      );
+    },
     dicChange(name, row) {
       if (name == 'typeName') {
         if (row) {
@@ -653,7 +722,7 @@ export default {
         this.$router.push({
           path: '/boxManagement/buyContainer/index',
           query: {
-            id:row.srcId
+            id: row.srcId
           },
         });
       }
@@ -661,7 +730,7 @@ export default {
         this.$router.push({
           path: '/ow/owTask/index',
           query: {
-            id:row.srcId
+            id: row.srcId
           },
         });
       }
@@ -669,7 +738,7 @@ export default {
         this.$router.push({
           path: '/ow/owPut/index',
           query: {
-            id:row.srcId
+            id: row.srcId
           },
         });
       }
@@ -677,7 +746,7 @@ export default {
         this.$router.push({
           path: '/boxManagement/rentalBox/index',
           query: {
-            id:row.srcId
+            id: row.srcId
           },
         });
       }
@@ -685,7 +754,7 @@ export default {
         this.$router.push({
           path: '/boxManagement/agentBox/index',
           query: {
-            id:row.srcId
+            id: row.srcId
           },
         });
       }
@@ -742,7 +811,7 @@ export default {
       }).then(() => {
         let queryParams = this.search
         const routeData = this.$router.resolve({
-          path: '/api/blade-box-tube/archives/export-archives-out',      //跳转目标窗口的地址
+          path: '/api/blade-los/archives/export-archives-out',      //跳转目标窗口的地址
           query: {
             'Blade-Auth': getToken(),
             ...queryParams    //括号内是要传递给新窗口的参数

+ 1 - 1
src/views/boxManagement/buyContainer/detailsPage.vue

@@ -466,7 +466,7 @@ export default {
         labelWidth: 100,
         column: [
           {
-            label: '出售方',
+            label:this.$t("title"),
             prop: 'purchaseCompanyName',
             rules: [{
               required: true,

+ 150 - 15
src/views/iosBasicData/OceanFreightImport/bills/assembly/EntrustmentLnformation.vue

@@ -257,6 +257,30 @@
                         </div>
                     </el-row>
                     <el-row>
+                        <el-form-item label="业务来源" prop="srcType"
+                            :rules="[{ required: true, message: '', trigger: 'blur' }]">
+                            <el-row :gutter="10">
+                                <el-col :span="10">
+                                    <search-query :datalist="sourceTypeData" :selectValue="assemblyForm.srcType"
+                                        :disabled="detailData.seeDisabled || assemblyForm.feeCenterListD.filter(item => item.auditStatus > 0).length || assemblyForm.feeCenterListC.filter(item => item.auditStatus > 0).length"
+                                        :filterable="true" :clearable="true" :remote="true" :buttonIf="false"
+                                        placeholder="请选择业务来源" @corpChange="sourceCorp($event, 'srcType')">
+                                    </search-query>
+                                </el-col>
+                                <el-col :span="13">
+                                    <search-query :datalist="srcData" :selectValue="assemblyForm.srcCnName"
+                                        :filterable="true" :clearable="true" :remote="true"
+                                        :disabled="!assemblyForm.srcType || detailData.seeDisabled || assemblyForm.feeCenterListD.filter(item => item.auditStatus > 0).length || assemblyForm.feeCenterListC.filter(item => item.auditStatus > 0).length"
+                                        :buttonIf="false" :forParameter="sourceforParameter" placeholder="请选择来源明细"
+                                        @remoteMethod="sourceRemote($event, 'srcCnName')"
+                                        @corpChange="sourceCorp($event, 'srcCnName')"
+                                        @corpFocus="sourceRemote($event, 'srcCnName')">
+                                    </search-query>
+                                </el-col>
+                            </el-row>
+                        </el-form-item>
+                    </el-row>
+                    <el-row>
                         <!-- <el-form-item label="收货地" prop="placeReceiptName">
                             <span slot="label">
                                 <el-popover placement="right" width="400" trigger="hover"
@@ -427,6 +451,18 @@
                                         placeholder="请输入场站备注" @change="textareaBlur('cyRemarks')"></el-input>
                                 </el-form-item>
                             </div>
+                            <div style="margin-top: 4px">
+                                <el-form-item label="箱属" prop="boxBelongsTo" label-width="60px">
+                                    <span slot="label">
+                                        <span style="color: #1e9fff">箱属</span>
+                                    </span>
+                                    <div>
+                                        <dic-select v-model="assemblyForm.boxBelongsTo" placeholder="箱属" key="dictKey"
+                                            label="dictValue" url="/blade-system/dict-biz/dictionary?code=boxBelongsTo"
+                                            :filterable="true" :disabled="detailData.seeDisabled"></dic-select>
+                                    </div>
+                                </el-form-item>
+                            </div>
                         </el-row>
                     </el-col>
                     <el-col :span="12">
@@ -648,8 +684,7 @@
                                         <span style="color: #1e9fff">件数</span>
                                     </span>
                                     <el-input ref="quantityRef" style="width: 100%;" v-model="assemblyForm.quantity"
-                                        size="small" autocomplete="off" min="1"
-                                        :disabled="detailData.seeDisabled"
+                                        size="small" autocomplete="off" min="1" :disabled="detailData.seeDisabled"
                                         @input="quantityInput" @focus="quantityFocus" clearable
                                         placeholder="请输入件数"></el-input>
                                 </el-form-item>
@@ -670,8 +705,8 @@
                                     </span>
                                     <search-query :datalist="packingUnitData" style="margin-right: -10px;"
                                         :selectValue="assemblyForm.packingUnit" :filterable="true" :clearable="true"
-                                        :remote="true" :disabled="detailData.seeDisabled"
-                                        :buttonIf="false" placeholder="请选择包装"
+                                        :remote="true" :disabled="detailData.seeDisabled" :buttonIf="false"
+                                        placeholder="请选择包装"
                                         :forParameter="{ key: 'id', label: 'cnName', value: 'cnName' }"
                                         @remoteMethod="remoteMethod($event, 'packingUnit')"
                                         @corpChange="corpChange($event, 'packingUnit')"
@@ -689,9 +724,8 @@
                                     </span>
                                     <el-input ref="grossWeightRef" step="0.01" style="width: 100%;"
                                         v-model="assemblyForm.grossWeight" size="small" autocomplete="off"
-                                        :disabled="detailData.seeDisabled"
-                                        @input="floatingInput($event, 'grossWeight')" @focus="quantityFocus" clearable
-                                        placeholder="请输入毛重"></el-input>
+                                        :disabled="detailData.seeDisabled" @input="floatingInput($event, 'grossWeight')"
+                                        @focus="quantityFocus" clearable placeholder="请输入毛重"></el-input>
                                 </el-form-item>
                             </el-col>
                             <el-col :span="12">
@@ -702,9 +736,8 @@
                                     </span>
                                     <el-input ref="measurementRef" step="0.01" style="width: 106%;"
                                         v-model="assemblyForm.measurement" size="small" autocomplete="off"
-                                        :disabled="detailData.seeDisabled"
-                                        @input="floatingInput($event, 'measurement')" @focus="quantityFocus" clearable
-                                        placeholder="请输入尺码/体积"></el-input>
+                                        :disabled="detailData.seeDisabled" @input="floatingInput($event, 'measurement')"
+                                        @focus="quantityFocus" clearable placeholder="请输入尺码/体积"></el-input>
                                 </el-form-item>
                             </el-col>
                         </div>
@@ -922,7 +955,6 @@
                         </el-col>
 
                     </el-row>
-
                 </el-form>
             </div>
             <span slot="footer" class="dialog-footer">
@@ -1112,6 +1144,7 @@ import {
     getDeptTree,
     getLazyList
 } from "@/api/system/dept";
+import { selectListLos } from "@/api/approval/processConfig";
 export default {
     props: {
         detailData: {
@@ -1145,6 +1178,21 @@ export default {
     },
     data() {
         return {
+            sourceTypeData: [
+                {
+                    label: '公司',
+                    value: 'OWN'
+                },
+                {
+                    label: '代理',
+                    value: 'AGENT'
+                },
+                {
+                    label: '业务员',
+                    value: 'SALES'
+                }
+            ],
+            srcData: [],
             roleName: localStorage.getItem("roleName"),
             dicTree: [],
             textareaNumber: 5,
@@ -1286,6 +1334,93 @@ export default {
                 this.dicTree = res.data.data
             })
         },
+        // 业务来源下拉
+        sourceCorp(value, name) {
+            if (name == 'srcCnName') {
+                if (!value) {
+                    this.$set(this.assemblyForm, 'srcId', '')
+                    this.$set(this.assemblyForm, 'srcCnName', '')
+                    this.$set(this.assemblyForm, 'srcEnName', '')
+                }
+                for (let item of this.srcData) {
+                    if (item[this.sourceforParameter.value] == value) {
+                        if (this.assemblyForm.srcType == 'OWN') {
+                            // 国家
+                            this.$set(this.assemblyForm, 'srcId', item.id)
+                            this.$set(this.assemblyForm, 'srcCnName', item.title)
+                            this.$set(this.assemblyForm, 'srcEnName', item.title)
+                        } else if (this.assemblyForm.srcType == 'AGENT') {
+                            // 代理
+                            this.$set(this.assemblyForm, 'srcId', item.id)
+                            this.$set(this.assemblyForm, 'srcCnName', item.cnName)
+                            this.$set(this.assemblyForm, 'srcEnName', item.cnName)
+                        } else if (this.assemblyForm.srcType == 'SALES') {
+                            // 业务员
+                            this.$set(this.assemblyForm, 'srcId', item.id)
+                            this.$set(this.assemblyForm, 'srcCnName', item.name)
+                            this.$set(this.assemblyForm, 'srcEnName', item.name)
+                        }
+                    }
+                }
+            } else if (name == 'srcType') {
+                this.$set(this.assemblyForm, 'srcType', value)
+                this.$set(this.assemblyForm, 'srcId', '')
+                this.$set(this.assemblyForm, 'srcCnName', '')
+                this.$set(this.assemblyForm, 'srcEnName', '')
+                if (this.assemblyForm.srcType == 'OWN') {
+                    this.sourceforParameter = { key: 'id', label: 'title', value: 'title' }
+                    this.ownDeptLazyTreefun()
+                } else if (this.assemblyForm.srcType == 'AGENT') {
+                    this.sourceforParameter = { key: 'id', label: 'cnName', value: 'cnName' }
+                    this.agentBcorpsListfun()
+                } else if (this.assemblyForm.srcType == 'SALES') {
+                    this.sourceforParameter = { key: 'id', label: 'name', value: 'name' }
+                    this.salesUserGetListfun()
+                }
+            }
+        },
+        // 业务来源接口
+        sourceRemote(value, name) {
+            if (name == 'srcCnName') {
+                if (this.assemblyForm.srcType == 'OWN') {
+                    this.sourceforParameter = { key: 'id', label: 'title', value: 'title' }
+                    this.ownDeptLazyTreefun()
+                } else if (this.assemblyForm.srcType == 'AGENT') {
+                    this.sourceforParameter = { key: 'id', label: 'cnName', value: 'cnName' }
+                    this.agentBcorpsListfun(value)
+                } else if (this.assemblyForm.srcType == 'SALES') {
+                    this.sourceforParameter = { key: 'id', label: 'name', value: 'name' }
+                    this.salesUserGetListfun(value)
+                }
+            }
+        },
+        agentBcorpsListfun(cnName) {
+            let corpTypeName = '国内直接客户,国内同行及代理,国外直接客户,国外同行及代理,代理客户'
+            getBcorpslistByType(1, 10, { cnName, corpTypeName }).then(res => {
+                this.srcData = res.data.data.records
+            })
+        },
+        // 获取业务来源业务员数据
+        salesUserGetListfun(account) {
+            selectListLos('业务员').then(res => {
+                this.srcData = res.data.data
+            })
+        },
+        // 获取公司名称 用户管理左侧
+        ownDeptLazyTreefun() {
+            getDeptLazyTree(0).then(res => {
+                this.srcData = res.data.data
+                // 来源 内容 默认登录人所属公司
+                for (let item of this.srcData) {
+                    if (item.id == JSON.parse(localStorage.getItem('saber-userInfo')).content.dept_id) {
+                        this.$set(this.assemblyForm, 'srcId', item.id)
+                        this.$set(this.assemblyForm, 'srcCnName', item.title)
+                        this.$set(this.assemblyForm, 'srcEnName', item.title)
+                    }
+                }
+
+            })
+        },
         treeChange(val) {
             for (let item of this.dicTree) {
                 if (item.title == val) {
@@ -1368,10 +1503,10 @@ export default {
         },
         // 件数聚焦
         quantityFocus() {
-           if (this.assemblyForm.containersList&&this.assemblyForm.containersList.length) {
-                let num=0
-                for(let item of this.assemblyForm.containersList){
-                    num+=Number(item.quantity)
+            if (this.assemblyForm.containersList && this.assemblyForm.containersList.length) {
+                let num = 0
+                for (let item of this.assemblyForm.containersList) {
+                    num += Number(item.quantity)
                 }
                 if (Number(num) == 0) {
                     this.$alert('当前数据已经均分箱量,请撤销之后再修改', '提示', {

+ 142 - 3
src/views/iosBasicData/OceanFreightImport/bills/assembly/feecenter.vue

@@ -84,10 +84,16 @@
                         @click="allClick('D费用申请')">请核费用</el-button>
                     <el-button type="danger" plain size="small" :disabled="disabled || selectionDList.length == 0"
                         @click="allClick('D撤销请核')">撤销请核</el-button>
+                    <el-button type="primary" plain size="small" :disabled="selectionDList.length != 1"
+                        @click="allClick('D申请修改')">申请修改</el-button>
+                    <el-button type="success" plain size="small" :disabled="selectionDList.length != 1"
+                        @click="allClick('D申请删除')">申请删除</el-button>
+                    <el-button type="danger" plain size="small" :disabled="selectionDList.length != 1"
+                        @click="allClick('D取消申请')">取消申请</el-button>
                 </template>
                 <template slot="indexHeader" slot-scope="scope">
                     <el-button v-if="isFeeEditD" type="primary" size="small" icon="el-icon-plus" circle
-                        :disabled="disabled || pleasereviewType" @click="addDfun"></el-button>
+                        :disabled="disabled" @click="addDfun"></el-button>
                 </template>
                 <template slot="index" slot-scope="scope">
                     <span>{{ scope.index + 1 }}</span>
@@ -235,10 +241,16 @@
                         @click="allClick('C撤销请核')">撤销请核</el-button>
                     <!-- <el-button type="success" plain size="small" :disabled="disabled"
                         @click="allClick('提取成本')">提取成本</el-button> -->
+                    <el-button type="primary" plain size="small" :disabled="selectionCList.length != 1"
+                        @click="allClick('C申请修改')">申请修改</el-button>
+                    <el-button type="success" plain size="small" :disabled="selectionCList.length != 1"
+                        @click="allClick('C申请删除')">申请删除</el-button>
+                    <el-button type="danger" plain size="small" :disabled="selectionCList.length != 1"
+                        @click="allClick('C取消申请')">取消申请</el-button>
                 </template>
                 <template slot="indexHeader" slot-scope="scope">
                     <el-button v-if="isFeeEditC" type="primary" size="small" icon="el-icon-plus" circle
-                        :disabled="disabled || pleasereviewType" @click="addCfun">
+                        :disabled="disabled" @click="addCfun">
                     </el-button>
                 </template>
                 <template slot="index" slot-scope="scope">
@@ -614,6 +626,8 @@
         <reportContainer ref="reportContainer"></reportContainer>
         <mail-component ref="mailComponentRef" />
         <extraction-cost ref="extractionCost" @getData="getData" />
+        <fee-modify ref="feeModify" :form="assemblyForm" @updateDetail="updateDetail"></fee-modify>
+        <fee-modify-view ref="feeModifyView" :form="assemblyForm"></fee-modify-view>
     </div>
 </template>
 
@@ -689,6 +703,8 @@ import extractionCost from "@/components/extractionCost/main.vue";
 import { getListTemplate, getListTemplatelist } from "@/api/iosBasicData/losbfeestemplate";
 import dicSelect from "@/components/dicSelect/main";
 import mailComponent from "@/components/iosbasic-data/mail-component.vue";
+import feeModify from "@/components/feeModify/main.vue";
+import feeModifyView from "@/components/feeModify/view.vue";
 import _ from "lodash";
 export default {
     components: {
@@ -697,7 +713,9 @@ export default {
         reportContainer,
         SearchQuery,
         reportformsList,
-        mailComponent
+        mailComponent,
+        feeModify,
+        feeModifyView
     },
     props: {
         pid: {
@@ -1582,6 +1600,9 @@ export default {
         this.paymodeWorkDictsfun() // 获取预付/到付数据
     },
     methods: {
+        updateDetail() {
+            this.$emit('billsDetailfun')
+        },
         rowDicChange(name, row, el) {
             if (name == 'shortName') {
                 if (row) {
@@ -3067,6 +3088,124 @@ export default {
 
         },
         allClick(name, type) {
+            if (name == 'D申请修改') {
+                for (let row of this.selectionDList) {
+                    if (!row.id) {
+                        return this.$message.error("请保存费用明细");
+                    }
+                    if (row.auditStatus != 4) {
+                        return this.$message.error("未审核通过的费用,不允许申请");
+                    }
+                    if (Number(row.appliedAmount) > 0) {
+                        return this.$message.error("请选择未申请付费的费用?");
+                    }
+                    if (Number(row.appliedInvoiceAmount) > 0) {
+                        return this.$message.error("请选择未申请发票的费用?");
+                    }
+                    if (Number(row.uninvoicedAmount) > 0) {
+                        return this.$message.error("请选择未开票的费用?");
+                    }
+                    if (Number(row.stlTtlAmount) > 0) {
+                        return this.$message.error("请选择未结算的费用?");
+                    }
+                    this.$refs.feeModify.openDialog(row, 'fix')
+                }
+            }
+            if (name == 'D申请删除') {
+                for (let row of this.selectionDList) {
+                    if (!row.id) {
+                        return this.$message.error("请保存费用明细");
+                    }
+                    if (row.auditStatus != 4) {
+                        return this.$message.error("未审核通过的费用,不允许申请");
+                    }
+                    if (Number(row.appliedAmount) > 0) {
+                        return this.$message.error("请选择未申请付费的费用?");
+                    }
+                    if (Number(row.appliedInvoiceAmount) > 0) {
+                        return this.$message.error("请选择未申请发票的费用?");
+                    }
+                    if (Number(row.uninvoicedAmount) > 0) {
+                        return this.$message.error("请选择未开票的费用?");
+                    }
+                    if (Number(row.stlTtlAmount) > 0) {
+                        return this.$message.error("请选择未结算的费用?");
+                    }
+                    this.$refs.feeModify.openDialog(row, 'del')
+                }
+            }
+            if (name == 'D取消申请') {
+                for (let row of this.selectionDList) {
+                    if (!row.id) {
+                        return this.$message.error("请保存费用明细");
+                    }
+                    if (!(row.auditStatus == 5 || row.auditStatus == 6)) {
+                        return this.$message.error("未申请修改或删除,不允许撤销申请");
+                    }
+                    
+                    if (Number(row.appliedAmount) > 0) {
+                        return this.$message.error("请选择未申请付费的费用?");
+                    }
+                    if (Number(row.appliedInvoiceAmount) > 0) {
+                        return this.$message.error("请选择未申请发票的费用?");
+                    }
+                    if (Number(row.uninvoicedAmount) > 0) {
+                        return this.$message.error("请选择未开票的费用?");
+                    }
+                    if (Number(row.stlTtlAmount) > 0) {
+                        return this.$message.error("请选择未结算的费用?");
+                    }
+                    this.$refs.feeModify.openDialog(row, 'revoke')
+                }
+            }
+            if (name == 'C申请修改') {
+                for (let row of this.selectionCList) {
+                    if (!row.id) {
+                        return this.$message.error("请保存费用明细");
+                    }
+                    if (row.auditStatus != 4) {
+                        return this.$message.error("未审核通过的费用,不允许申请");
+                    }
+
+                    if (Number(row.appliedAmount) > 0) {
+                        return this.$message.error("请选择未申请付费的费用?");
+                    }
+                    if (Number(row.appliedInvoiceAmount) > 0) {
+                        return this.$message.error("请选择未申请发票的费用?");
+                    }
+                    if (Number(row.uninvoicedAmount) > 0) {
+                        return this.$message.error("请选择未开票的费用?");
+                    }
+                    if (Number(row.stlTtlAmount) > 0) {
+                        return this.$message.error("请选择未结算的费用?");
+                    }
+                    this.$refs.feeModify.openDialog(row, 'fix')
+                }
+            }
+            if (name == 'C申请删除') {
+                for (let row of this.selectionCList) {
+                    if (!row.id) {
+                        return this.$message.error("请保存费用明细");
+                    }
+                    if (row.auditStatus != 4) {
+                        return this.$message.error("未审核通过的费用,不允许申请");
+                    }
+
+                    this.$refs.feeModify.openDialog(row, 'del')
+                }
+            }
+            if (name == 'C取消申请') {
+                for (let row of this.selectionCList) {
+                    if (!row.id) {
+                        return this.$message.error("请保存费用明细");
+                    }
+                    if (!(row.auditStatus == 5 || row.auditStatus == 6)) {
+                        return this.$message.error("未申请修改或删除,不允许撤销申请");
+                    }
+
+                    this.$refs.feeModify.openDialog(row, 'revoke')
+                }
+            }
             if (name == '付费申请') {
                 if (this.selectionCList.length == 0) return this.$message.error("请选择费用");
                 if (this.selectionCList.filter(e => e.auditStatus != 4).length) return this.$message.error("请选择审核通过的费用");

+ 2 - 2
src/views/iosBasicData/OceanFreightImport/bills/assembly/formbottom.vue

@@ -111,7 +111,7 @@
                         </search-query>
                     </el-form-item>
                 </el-col>
-                <el-col :span="6">
+                <!-- <el-col :span="6">
                     <el-form-item label="业务来源" prop="srcType" :rules="[{ required: true, message: '', trigger: 'blur' }]">
                         <el-row :gutter="10">
                             <el-col :span="10">
@@ -133,7 +133,7 @@
                             </el-col>
                         </el-row>
                     </el-form-item>
-                </el-col>
+                </el-col> -->
                 <!-- <el-col :span="6">
                     <el-form-item label="AEA" prop="actualEta">
                         <span slot="label">

+ 37 - 35
src/views/iosBasicData/OceanFreightImport/bills/index.vue

@@ -456,7 +456,7 @@ export default {
                 //     // 禁用主单
                 //     return row.billType != 'MM'
                 // },
-                rowKey: "id",
+                               rowKey: "id",
                 height: 500,
                 calcHeight: 30,
                 tip: false,
@@ -465,7 +465,7 @@ export default {
                 searchLabelWidth: "100",
                 border: true,
                 index: true,
-                selection: true,
+                selection: true, // 是否有选择框
                 dialogClickModal: false,
                 highlightCurrentRow: true, // 单选
                 searchIcon: true,
@@ -479,13 +479,13 @@ export default {
                 align: "center",
                 showSummary: true,
                 column: [
-                    {
+                     {
                         label: "所属公司",
                         prop: "branchId",
                         width: "120",
                         overHidden: true,
                         hide: true,
-                        showColumn: false,
+                        //showColumn: false,
                         type: "select",
                         filterable: true,
                         dicUrl: "/api/blade-system/dept/lazy-list",
@@ -502,7 +502,7 @@ export default {
                         width: "120",
                         overHidden: true,
                         hide: true,
-                        showColumn: false,
+                        //showColumn: false,
                     },
                     // {
                     //     label: "所属团队",
@@ -510,13 +510,13 @@ export default {
                     //     overHidden: true
                     // },
                     {
-                        label: "客户",
+                        label: "客户简称",
                         prop: "corpCnName",
                         width: "160",
                         overHidden: true,
                         search: true,
                         type: "select",
-                        dicData: [],
+                        // //dicData: [],
                         filterable: true,
                         remote: true,
                         dicUrl:
@@ -535,6 +535,13 @@ export default {
                         width: "160",
                         overHidden: true
                     },
+                               {
+                        label: '箱属',
+                        prop: 'boxBelongsTo',
+                        width: 100,
+                        overHidden: true,
+                        disabled: true,
+                    },
                     {
                         label: "MB/L NO",
                         prop: "mblno",
@@ -615,7 +622,7 @@ export default {
                         prop: "vesselCnName",
                         overHidden: true,
                         type: "select",
-                        dicData: [],
+                        // //dicData: [],
                         filterable: true,
                         remote: true,
                         dicUrl: "/api/blade-los/bvessels/list?enName={{key}}",
@@ -628,7 +635,7 @@ export default {
                         span: 6,
                         searchOrder: 6,
                         hide: true,
-                        showColumn: false
+                        //showColumn: false
                     },
                     {
                         label: "船名",
@@ -680,7 +687,7 @@ export default {
                         prop: "carrierEnName",
                         overHidden: true,
                         type: "select",
-                        dicData: [],
+                        // //dicData: [],
                         filterable: true,
                         remote: true,
                         dicUrl:
@@ -694,12 +701,7 @@ export default {
                         span: 6,
                         searchOrder: 10,
                         hide: true,
-                        showColumn: false
-                    },
-                    {
-                        label: "船公司",
-                        prop: "carrierEnName",
-                        overHidden: true
+                        //showColumn: false
                     },
                     {
                         label: "装货港",
@@ -707,19 +709,19 @@ export default {
                         width: "120",
                         overHidden: true
                     },
+                    // {
+                    //     label: "卸货港",
+                    //     prop: "podEnName",
+                    //     width: "120",
+                    //     overHidden: true
+                    // },
                     {
                         label: "卸货港",
                         prop: "podEnName",
                         width: "120",
-                        overHidden: true
-                    },
-                    {
-                        label: "目的港",
-                        prop: "podEnName",
-                        width: "120",
                         overHidden: true,
                         type: "select",
-                        dicData: [],
+                        // //dicData: [],
                         filterable: true,
                         remote: true,
                         dicUrl: "/api/blade-los/bports/list?enName={{key}}",
@@ -744,7 +746,7 @@ export default {
                         width: "120",
                         overHidden: true,
                         type: "select",
-                        dicData: [],
+                        // //dicData: [],
                         filterable: true,
                         remote: true,
                         dicUrl: "/api/blade-los/blines/list?cnName={{key}}",
@@ -763,7 +765,7 @@ export default {
                         width: "120",
                         overHidden: true,
                         type: "select",
-                        dicData: [],
+                        //dicData: [],
                         filterable: true,
                         remote: true,
                         dicUrl:
@@ -777,7 +779,7 @@ export default {
                         span: 6,
                         searchOrder: 13,
                         hide: true,
-                        showColumn: false
+                        //showColumn: false
                     },
                     {
                         label: "场站",
@@ -864,7 +866,7 @@ export default {
                         width: "120",
                         overHidden: true,
                         type: "tree",
-                        dicData: [],
+                        //dicData: [],
                         dicUrl: "/api/blade-system/dept/tree",
                         props: {
                             label: "title",
@@ -881,7 +883,7 @@ export default {
                         width: "120",
                         overHidden: true,
                         type: "select",
-                        dicData: [],
+                        //dicData: [],
                         filterable: true,
                         remote: true,
                         dicUrl:
@@ -920,7 +922,7 @@ export default {
                         width: "120",
                         overHidden: true,
                         type: "select",
-                        dicData: [],
+                        //dicData: [],
                         dicUrl: "/api/blade-system/dict-biz/dictionary",
                         props: {
                             label: "dictValue",
@@ -1205,7 +1207,7 @@ export default {
                         label: "排序方式",
                         prop: "billSort",
                         hide: true,
-                        showColumn: false,
+                        //showColumn: false,
                         search: true,
                         searchValue: "1",
                         searchSpan: 12,
@@ -1243,7 +1245,7 @@ export default {
                         label: "业务状态",
                         prop: "billStatus",
                         type: "select",
-                        dicData: [],
+                        //dicData: [],
                         props: {
                             label: "dictValue",
                             value: "dictKey"
@@ -1255,7 +1257,7 @@ export default {
                         label: "财务状态",
                         prop: "accountStatus",
                         type: "select",
-                        dicData: [],
+                        //dicData: [],
                         props: {
                             label: "dictValue",
                             value: "dictKey"
@@ -1267,7 +1269,7 @@ export default {
                         label: "审核状态",
                         prop: "status",
                         type: "select",
-                        dicData: [],
+                        //dicData: [],
                         width: "120",
                         props: {
                             label: "dictValue",
@@ -1458,7 +1460,7 @@ export default {
                 }
                 if (item.prop == 'branchName') {
                     item.hide = false
-                    item.showColumn = true
+                    // item.showColumn = true
                 }
             })
         }
@@ -2524,7 +2526,7 @@ export default {
                     }
                     if (item.prop == 'branchName') {
                         item.hide = false
-                        item.showColumn = true
+                        // item.showColumn = true
                     }
                 })
             }

+ 10 - 7
src/views/iosBasicData/PaymentApplication/finstlbillsDetails.vue

@@ -25,11 +25,10 @@
                 <el-button type="success" size="small" :disabled="!form.id" plain @click="newbillFun">新建账单
                 </el-button>
                 <el-button size="small" type="primary" style="margin-right: 8px"
-                    :disabled="!(form.status == '0' || form.status == '4') || editPower || $route.query.id"
-                    v-if="editSave" :loading="saveLoading" @click="editHandle">编 辑
+                    :disabled="editPower || $route.query.id" v-if="editButton" :loading="saveLoading"
+                    @click="editHandle">编 辑
                 </el-button>
-                <el-button size="small" type="primary" style="margin-right: 8px"
-                    :disabled="!(form.status == '0' || form.status == '4')" v-else :loading="saveLoading"
+                <el-button size="small" type="primary" style="margin-right: 8px" v-else :loading="saveLoading"
                     @click="editCustomer()">保 存
                 </el-button>
                 <el-dropdown style="line-height: 0">
@@ -55,7 +54,7 @@
                                             <dic-select v-model="form.branchName" placeholder="所属公司" key="id"
                                                 label="deptName" url="/blade-system/dept/top-list" :filterable="true"
                                                 :remote="true" dataName="deptName"
-                                                :disabled="editSave || !(roleName.includes('admin') || roleName.includes('总部')) || tableData.length"
+                                                :disabled="editButton || !(roleName.includes('admin') || roleName.includes('总部'))"
                                                 @selectChange="dicChange('branchName', $event)"></dic-select>
                                         </el-form-item>
                                     </el-col>
@@ -460,7 +459,7 @@ export default {
     },
     data() {
         return {
-
+            editButton: false,
             amountSubSum: 0,
             amountSubUsdSum: 0,
             roleName: localStorage.getItem("roleName"),
@@ -806,7 +805,10 @@ export default {
         },
         // 编辑
         editHandle() {
-            this.editSave = false
+            this.editButton = false
+            if (this.form.status != 3) {
+                this.editSave = false
+            }
         },
         // 保存
         editCustomer(type) {
@@ -911,6 +913,7 @@ export default {
         },
         // 详情接口
         finstlbillsDetailfun(id) {
+            this.editButton = true
             this.pageLoading = true
             finstlbillsDetail(id).then(res => {
                 this.form = res.data.data

+ 52 - 6
src/views/iosBasicData/SeafreightExportF/bills/assembly/feecenter.vue

@@ -93,7 +93,7 @@
                 </template>
                 <template slot="indexHeader" slot-scope="scope">
                     <el-button v-if="isFeeEditD" type="primary" size="small" icon="el-icon-plus" circle
-                        :disabled="disabled || pleasereviewType" @click="addDfun"></el-button>
+                        :disabled="disabled" @click="addDfun"></el-button>
                 </template>
                 <template slot="index" slot-scope="scope">
                     <span>{{ scope.index + 1 }}</span>
@@ -252,7 +252,7 @@
                 </template>
                 <template slot="indexHeader" slot-scope="scope">
                     <el-button v-if="isFeeEditC" type="primary" size="small" icon="el-icon-plus" circle
-                        :disabled="disabled || pleasereviewType" @click="addCfun">
+                        :disabled="disabled" @click="addCfun">
                     </el-button>
                 </template>
                 <template slot="index" slot-scope="scope">
@@ -2522,6 +2522,7 @@ export default {
                         this.$set(row, 'elementsCode', item.elementsCode)
                         this.$set(row, 'elementsEnName', item.elementsEnName)
                         // 拿取费用简称下的计量单位
+                        console.log(row)
                         this.getBunitsPagefun(true, item, row)
                         // 币别
                         if (value == 'PS') {
@@ -3209,7 +3210,18 @@ export default {
                     if (row.auditStatus != 4) {
                         return this.$message.error("未审核通过的费用,不允许申请");
                     }
-
+                    if (Number(row.appliedAmount) > 0) {
+                        return this.$message.error("请选择未申请付费的费用?");
+                    }
+                    if (Number(row.appliedInvoiceAmount) > 0) {
+                        return this.$message.error("请选择未申请发票的费用?");
+                    }
+                    if (Number(row.uninvoicedAmount) > 0) {
+                        return this.$message.error("请选择未开票的费用?");
+                    }
+                    if (Number(row.stlTtlAmount) > 0) {
+                        return this.$message.error("请选择未结算的费用?");
+                    }
                     this.$refs.feeModify.openDialog(row, 'fix')
                 }
             }
@@ -3221,7 +3233,18 @@ export default {
                     if (row.auditStatus != 4) {
                         return this.$message.error("未审核通过的费用,不允许申请");
                     }
-
+                    if (Number(row.appliedAmount) > 0) {
+                        return this.$message.error("请选择未申请付费的费用?");
+                    }
+                    if (Number(row.appliedInvoiceAmount) > 0) {
+                        return this.$message.error("请选择未申请发票的费用?");
+                    }
+                    if (Number(row.uninvoicedAmount) > 0) {
+                        return this.$message.error("请选择未开票的费用?");
+                    }
+                    if (Number(row.stlTtlAmount) > 0) {
+                        return this.$message.error("请选择未结算的费用?");
+                    }
                     this.$refs.feeModify.openDialog(row, 'del')
                 }
             }
@@ -3237,7 +3260,7 @@ export default {
                     this.$refs.feeModify.openDialog(row, 'revoke')
                 }
             }
-             if (name == 'C申请修改') {
+            if (name == 'C申请修改') {
                 for (let row of this.selectionCList) {
                     if (!row.id) {
                         return this.$message.error("请保存费用明细");
@@ -3245,7 +3268,18 @@ export default {
                     if (row.auditStatus != 4) {
                         return this.$message.error("未审核通过的费用,不允许申请");
                     }
-
+                    if (Number(row.appliedAmount) > 0) {
+                        return this.$message.error("请选择未申请付费的费用?");
+                    }
+                    if (Number(row.appliedInvoiceAmount) > 0) {
+                        return this.$message.error("请选择未申请发票的费用?");
+                    }
+                    if (Number(row.uninvoicedAmount) > 0) {
+                        return this.$message.error("请选择未开票的费用?");
+                    }
+                    if (Number(row.stlTtlAmount) > 0) {
+                        return this.$message.error("请选择未结算的费用?");
+                    }
                     this.$refs.feeModify.openDialog(row, 'fix')
                 }
             }
@@ -3258,6 +3292,18 @@ export default {
                         return this.$message.error("未审核通过的费用,不允许申请");
                     }
 
+                    if (Number(row.appliedAmount) > 0) {
+                        return this.$message.error("请选择未申请付费的费用?");
+                    }
+                    if (Number(row.appliedInvoiceAmount) > 0) {
+                        return this.$message.error("请选择未申请发票的费用?");
+                    }
+                    if (Number(row.uninvoicedAmount) > 0) {
+                        return this.$message.error("请选择未开票的费用?");
+                    }
+                    if (Number(row.stlTtlAmount) > 0) {
+                        return this.$message.error("请选择未结算的费用?");
+                    }
                     this.$refs.feeModify.openDialog(row, 'del')
                 }
             }

+ 8 - 7
src/views/iosBasicData/SeafreightExportF/bills/index.vue

@@ -608,7 +608,7 @@ export default {
                         width: "120",
                         overHidden: true,
                         hide: true,
-                        showColumn: false,
+                        //showColumn: false,
                         type: "select",
                         filterable: true,
                         dicUrl: "/api/blade-system/dept/lazy-list",
@@ -625,7 +625,7 @@ export default {
                         width: "120",
                         overHidden: true,
                         hide: true,
-                        showColumn: false,
+                        //showColumn: false,
                     },
                     {
                         label: "客户简称",
@@ -759,7 +759,7 @@ export default {
                         span: 6,
                         searchOrder: 5,
                         hide: true,
-                        showColumn: false
+                        //showColumn: false
                     },
                     {
                         label: "船名",
@@ -835,7 +835,7 @@ export default {
                         span: 6,
                         searchOrder: 10,
                         hide: true,
-                        showColumn: false
+                        //showColumn: false
                     },
                     {
                         label: "承运人",
@@ -1422,7 +1422,7 @@ export default {
                         label: "排序方式",
                         prop: "billSort",
                         hide: true,
-                        showColumn: false,
+                        //showColumn: false,
                         search: true,
                         searchValue: "1",
                         searchSpan: 12,
@@ -1677,7 +1677,7 @@ export default {
                 }
                 if (item.prop == 'branchName') {
                     item.hide = false
-                    item.showColumn = true
+                    // item.showColumn = true
                 }
             })
         }
@@ -1685,6 +1685,7 @@ export default {
         this.accountStatusWorkDictsfun(); // 获取财务状态字典数据
         this.statusWorkDictsfun(); // 业务审核类型
         this.editypesListfun(); // edi 数据获取
+        // console.log(,11111)
     },
     mounted() { },
     activated() {
@@ -2771,7 +2772,7 @@ export default {
                     }
                     if (item.prop == 'branchName') {
                         item.hide = false
-                        item.showColumn = true
+                        // item.showColumn = true
                     }
                 })
             }

+ 72 - 3
src/views/iosBasicData/businessCenter/customerLetter/detailsPage.vue

@@ -144,8 +144,9 @@
                     </el-col>
                     <el-col span="12">
                       <el-form-item label="订舱日期" prop="bookingDate">
-                        <el-date-picker v-model="form.bookingDate" type="date" placeholder="请选择 订舱日期" :disabled="editDisabled"
-                          size="small" format="yyyy-MM-dd" value-format="yyyy-MM-dd" style="width: 100%;">
+                        <el-date-picker v-model="form.bookingDate" type="date" placeholder="请选择 订舱日期"
+                          :disabled="editDisabled" size="small" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
+                          style="width: 100%;">
                         </el-date-picker>
                       </el-form-item>
                     </el-col>
@@ -238,7 +239,8 @@
                           keyValue="value" :mockData="cargoTypeData"
                           :disabled="editDisabled"></dic-select> -->
                         <el-select v-model="form.cargoType" placeholder="请选择 货描" :disabled="editDisabled" size="small">
-                          <el-option v-for="item in cargoTypeData" :key="item.value" :label="item.label" :value="item.value">
+                          <el-option v-for="item in cargoTypeData" :key="item.value" :label="item.label"
+                            :value="item.value">
                           </el-option>
                         </el-select>
                       </el-form-item>
@@ -252,6 +254,31 @@
                           :filterable="true" :disabled="editDisabled"></dic-select>
                       </el-form-item>
                     </el-col>
+                    <el-col span="12">
+                      <el-form-item label="业务来源" prop="srcType">
+                        <div style="display: flex;">
+                          <dic-select style="margin-right: 4px;" v-model="form.srcType" placeholder="业务来源" key="dictKey"
+                            keyValue="dictKey" label="dictValue" :initData="true"
+                            url="/blade-system/dict-biz/dictionary?code=source_Type" :filterable="true"
+                            :disabled="editDisabled" @selectChange="dicChange('srcType', $event)"></dic-select>
+                          <el-input v-show="!form.srcType" v-model="form.srcCnName" placeholder="请选择" :disabled="true"
+                            size="small">
+                          </el-input>
+                          <dic-select v-show="form.srcType == 'OWN'" v-model="form.srcCnName" placeholder="所属公司"
+                            key="id" label="title" url="/blade-system/dept/lazy-tree?parentId=0" :filterable="true"
+                            @selectChange="dicChange('OWN', $event)" :disabled="editDisabled"></dic-select>
+                          <dic-select v-show="form.srcType == 'AGENT'" v-model="form.srcCnName" placeholder="代理"
+                            key="id" label="cnName" res="records" url="/blade-los/bcorps/listByType?corpTypeName=代理客户"
+                            :filterable="true" :remote="true" dataName="cnName"
+                            @selectChange="dicChange('AGENT', $event)" :disabled="editDisabled"></dic-select>
+                          <dic-select v-show="form.srcType == 'SALES'" v-model="form.srcCnName" placeholder="业务员"
+                            key="id" label="name" url="/blade-user/selectListLos?roles=业务员" :filterable="true"
+                            :remote="true" dataName="name" @selectChange="dicChange('SALES', $event)"
+                            :disabled="editDisabled"></dic-select>
+                        </div>
+                      </el-form-item>
+
+                    </el-col>
                   </el-row>
                   <el-row>
                     <el-form-item label="订舱备注" prop="cyRemarks">
@@ -570,6 +597,10 @@ export default {
         polNamePrint: null,
         serviceTerms: 'CY-CY',
         mpaymode: 'PP',
+        srcType: 'SALES',
+        srcId: JSON.parse(localStorage.getItem('sysitemData')).id,
+        srcEnName: JSON.parse(localStorage.getItem('sysitemData')).name,
+        srcCnName: JSON.parse(localStorage.getItem('sysitemData')).name,
         polFreeBoxUseDays: 7,
         podFreeBoxUseDays: 14,
         loadType: "整箱", // 装箱方式默认整箱
@@ -1273,6 +1304,44 @@ export default {
           this.form.podNamePrint = null
         }
       }
+      if (name == 'srcType') {
+        this.form.srcId = null
+        this.form.srcEnName = null
+        this.form.srcCnName = null
+      }
+      if (name == 'OWN') {
+        if (row) {
+          this.form.srcId = row.id
+          this.form.srcEnName = row.title
+          this.form.srcCnName = row.title
+        } else {
+          this.form.srcId = null
+          this.form.srcEnName = null
+          this.form.srcCnName = null
+        }
+      }
+      if (name == 'AGENT') {
+        if (row) {
+          this.form.srcId = row.id
+          this.form.srcEnName = row.cnName
+          this.form.srcCnName = row.cnName
+        } else {
+          this.form.srcId = null
+          this.form.srcEnName = null
+          this.form.srcCnName = null
+        }
+      }
+      if (name == 'SALES') {
+        if (row) {
+          this.form.srcId = row.id
+          this.form.srcEnName = row.name
+          this.form.srcCnName = row.name
+        } else {
+          this.form.srcId = null
+          this.form.srcEnName = null
+          this.form.srcCnName = null
+        }
+      }
       if (name == 'ETD') {
         if (row) {
           await this.checkRate(null, row, null, 1, this.deptId)

+ 48 - 16
src/views/iosBasicData/decisionAnalysis/index.vue

@@ -59,6 +59,7 @@ export default {
             query: {
                 chart: 1,
                 type: 1,
+                billType:'DD,MH'
             },
             loading: false,
             itemLoading: false,
@@ -73,7 +74,7 @@ export default {
                 height: 'auto',
                 calcHeight: 30,
                 searchShow: true,
-                searchMenuSpan: 24,
+                searchMenuSpan: 18,
                 border: true,
                 index: true,
                 addBtn: false,
@@ -122,6 +123,30 @@ export default {
                         },
                     },
                     {
+                        label: "单据类型",
+                        prop: "billType",
+                        type: "select",
+                        dataType: 'string',
+                        multiple: true,
+                        search: true,
+                        span: 6,
+                        dicData: [
+                            {
+                                label: "直单",
+                                value: "DD"
+                            },
+                            {
+                                label: "主单",
+                                value: "MM"
+                            },
+                            {
+                                label: "分单",
+                                value: "MH"
+                            }
+                        ],
+                        overHidden: true
+                    },
+                    {
                         label: "委托人",
                         prop: "corpCnName",
                         type: 'select',
@@ -272,7 +297,7 @@ export default {
                     },
                     {
                         label: "船名",
-                        prop: "vesselCnName",
+                        prop: "vesselEnName",
                         width: '100',
                         overHidden: true,
                     },
@@ -299,12 +324,18 @@ export default {
                         prop: "etd",
                         width: '100',
                         overHidden: true,
+                        type: "date",
+                        format: "yyyy-MM-dd",
+                        valueFormat: "yyyy-MM-dd HH:mm:ss",
                     },
                     {
                         label: "ETA",
                         prop: "eta",
                         width: '100',
                         overHidden: true,
+                        type: "date",
+                        format: "yyyy-MM-dd",
+                        valueFormat: "yyyy-MM-dd HH:mm:ss",
                     },
                     {
                         label: "Teu",
@@ -343,37 +374,37 @@ export default {
                         overHidden: true,
                     },
                     {
-                        label: "人民币应收",
+                        label: "币应收",
                         prop: "amountDr",
                         width: '120',
                         overHidden: true,
                     },
                     {
-                        label: "人民币应付",
+                        label: "币应付",
                         prop: "amountCr",
                         width: '120',
                         overHidden: true,
                     },
                     {
-                        label: "人民币利润",
+                        label: "币利润",
                         prop: "amountProfit",
                         width: '120',
                         overHidden: true,
                     },
                     {
-                        label: "美金应收",
+                        label: "外币应收",
                         prop: "amountDrUsd",
                         width: '100',
                         overHidden: true,
                     },
                     {
-                        label: "美金应付",
+                        label: "外币应付",
                         prop: "amountCrUsd",
                         width: '100',
                         overHidden: true,
                     },
                     {
-                        label: "美金利润",
+                        label: "外币利润",
                         prop: "amountProfitUsd",
                         width: '100',
                         overHidden: true,
@@ -462,37 +493,37 @@ export default {
                         overHidden: true,
                     },
                     {
-                        label: "人民币应收",
+                        label: "币应收",
                         prop: "amountDr",
                         width: '120',
                         overHidden: true,
                     },
                     {
-                        label: "人民币应付",
+                        label: "币应付",
                         prop: "amountCr",
                         width: '120',
                         overHidden: true,
                     },
                     {
-                        label: "人民币利润",
+                        label: "币利润",
                         prop: "amountProfit",
                         width: '120',
                         overHidden: true,
                     },
                     {
-                        label: "美金应收",
+                        label: "外币应收",
                         prop: "amountDrUsd",
                         width: '100',
                         overHidden: true,
                     },
                     {
-                        label: "美金应付",
+                        label: "外币应付",
                         prop: "amountCrUsd",
                         width: '100',
                         overHidden: true,
                     },
                     {
-                        label: "美金利润",
+                        label: "外币利润",
                         prop: "amountProfitUsd",
                         width: '100',
                         overHidden: true,
@@ -711,7 +742,7 @@ export default {
         ).content;
         this.option = await this.getColumnData(this.getColumnName(372), this.optionBack)
         if (this.saberUserInfo.role_name.indexOf('admin') != -1 || this.saberUserInfo.role_name.indexOf('总部') != -1) {
-            this.option.searchMenuSpan = 18
+            this.option.searchMenuSpan = 12
             this.option.column.forEach(item => {
                 if (item.prop == 'branchId') {
                     item.search = true
@@ -807,6 +838,7 @@ export default {
             this.query = {
                 chart: 1,
                 type: 1,
+                billType:'DD,MH'
             };
             this.onLoad(this.page);
         },
@@ -1184,7 +1216,7 @@ export default {
             this[option] = this[optionBack];
             const inSave = await this.delColumnData(this.getColumnName(code), this[optionBack]);
             if (this.saberUserInfo.role_name.indexOf('admin') != -1 || this.saberUserInfo.role_name.indexOf('总部') != -1) {
-                this.option.searchMenuSpan = 18
+                this.option.searchMenuSpan = 12
                 this.option.column.forEach(item => {
                     if (item.prop == 'branchId') {
                         item.search = true

+ 11 - 11
src/views/iosBasicData/fininvoices/index.vue

@@ -79,7 +79,7 @@ export default {
         calcHeight: 30,
         tip: false,
         searchShow: true,
-        searchMenuSpan: 24,
+        searchMenuSpan: 6,
         searchIcon: true,
         searchIndex: 3,
         border: true,
@@ -251,14 +251,14 @@ export default {
             search: true,
             overHidden: true,
           },
-          {
-            label: "JOB NO",
-            prop: "businessNo",
-            width: "120",
-            search: true,
-            searchOrder: 3,
-            overHidden: true
-          },
+          // {
+          //   label: "JOB NO",
+          //   prop: "businessNo",
+          //   width: "120",
+          //   search: true,
+          //   searchOrder: 3,
+          //   overHidden: true
+          // },
           {
             label: "业务单号",
             prop: "businessNo",
@@ -649,7 +649,7 @@ export default {
     this.saberUserInfo = JSON.parse(localStorage.getItem('saber-userInfo')).content
     this.option = await this.getColumnData(this.getColumnName(318), this.optionBack);
     if (this.saberUserInfo.role_name.indexOf('admin') != -1 || this.saberUserInfo.role_name.indexOf('总部') != -1) {
-      this.option.searchMenuSpan = 24
+      this.option.searchMenuSpan = 6
       this.option.column.forEach(item => {
         if (item.prop == 'branchId') {
           item.search = true
@@ -854,7 +854,7 @@ export default {
       this[option] = this[optionBack];
       const inSave = await this.delColumnData(this.getColumnName(code), this[optionBack]);
       if (this.saberUserInfo.role_name.indexOf('admin') != -1 || this.saberUserInfo.role_name.indexOf('总部') != -1) {
-        this.option.searchMenuSpan = 24
+        this.option.searchMenuSpan = 6
         this.option.column.forEach(item => {
           if (item.prop == 'branchId') {
             item.search = true

+ 3 - 11
src/views/iosBasicData/fininvoicesApplyfor/index.vue

@@ -78,7 +78,7 @@ export default {
         calcHeight: 30,
         tip: false,
         searchShow: true,
-        searchMenuSpan: 18,
+        searchMenuSpan: 24,
         searchIcon: true,
         searchIndex: 3,
         border: true,
@@ -258,14 +258,6 @@ export default {
             overHidden: true,
           },
           {
-            label: "JOB NO",
-            prop: "businessNo",
-            width: "120",
-            search: true,
-            searchOrder: 3,
-            overHidden: true
-          },
-          {
             label: "业务单号",
             prop: "businessNo",
             width: "100",
@@ -637,7 +629,7 @@ export default {
     this.saberUserInfo = JSON.parse(localStorage.getItem('saber-userInfo')).content
     this.option = await this.getColumnData(this.getColumnName(320), this.optionBack);
     if (this.saberUserInfo.role_name.indexOf('admin') != -1 || this.saberUserInfo.role_name.indexOf('总部') != -1) {
-      this.option.searchMenuSpan = 12
+      this.option.searchMenuSpan = 18
       this.option.column.forEach(item => {
         if (item.prop == 'branchId') {
           item.search = true
@@ -877,7 +869,7 @@ export default {
       this[option] = this[optionBack];
       const inSave = await this.delColumnData(this.getColumnName(code), this[optionBack]);
       if (this.saberUserInfo.role_name.indexOf('admin') != -1 || this.saberUserInfo.role_name.indexOf('总部') != -1) {
-        this.option.searchMenuSpan = 12
+        this.option.searchMenuSpan = 18
         this.option.column.forEach(item => {
           if (item.prop == 'branchId') {
             item.search = true

+ 6 - 22
src/views/iosBasicData/fininvoicesOutput/index.vue

@@ -142,7 +142,7 @@ export default {
                 calcHeight: 30,
                 tip: false,
                 searchShow: true,
-                searchMenuSpan: 18,
+                searchMenuSpan: 24,
                 searchIcon: true,
                 searchIndex: 3,
                 border: true,
@@ -282,14 +282,6 @@ export default {
                         overHidden: true,
                     },
                     {
-                        label: "JOB NO",
-                        prop: "businessNo",
-                        width: "120",
-                        search: true,
-                        searchOrder: 3,
-                        overHidden: true
-                    },
-                    {
                         label: "业务单号",
                         prop: "businessNo",
                         width: "100",
@@ -345,7 +337,7 @@ export default {
                 calcHeight: 30,
                 tip: false,
                 searchShow: true,
-                searchMenuSpan: 18,
+                searchMenuSpan: 24,
                 searchIcon: true,
                 searchIndex: 3,
                 border: true,
@@ -554,14 +546,6 @@ export default {
                         overHidden: true,
                     },
                     {
-                        label: "JOB NO",
-                        prop: "businessNo",
-                        width: "120",
-                        search: true,
-                        searchOrder: 3,
-                        overHidden: true
-                    },
-                    {
                         label: "业务单号",
                         prop: "businessNo",
                         width: "100",
@@ -938,7 +922,7 @@ export default {
         this.applyOption = await this.getColumnData(this.getColumnName(319), this.applyOptionBack);
         this.option = await this.getColumnData(this.getColumnName(319.1), this.optionBack);
         if (this.saberUserInfo.role_name.indexOf('admin') != -1 || this.saberUserInfo.role_name.indexOf('总部') != -1) {
-            this.option.searchMenuSpan = 12
+            this.option.searchMenuSpan = 18
             this.option.column.forEach(item => {
                 if (item.prop == 'branchId') {
                     item.search = true
@@ -948,7 +932,7 @@ export default {
                     item.showColumn = true
                 }
             })
-            this.applyOption.searchMenuSpan = 12
+            this.applyOption.searchMenuSpan = 18
             this.applyOption.column.forEach(item => {
                 if (item.prop == 'branchId') {
                     item.search = true
@@ -1275,7 +1259,7 @@ export default {
             this[option] = this[optionBack];
             const inSave = await this.delColumnData(this.getColumnName(code), this[optionBack]);
             if (this.saberUserInfo.role_name.indexOf('admin') != -1 || this.saberUserInfo.role_name.indexOf('总部') != -1) {
-                this.option.searchMenuSpan = 12
+                this.option.searchMenuSpan = 18
                 this.option.column.forEach(item => {
                     if (item.prop == 'branchId') {
                         item.search = true
@@ -1286,7 +1270,7 @@ export default {
                     }
 
                 })
-                this.applyOption.searchMenuSpan = 12
+                this.applyOption.searchMenuSpan = 18
                 this.applyOption.column.forEach(item => {
                     if (item.prop == 'branchId') {
                         item.search = true