|
|
@@ -9,7 +9,7 @@
|
|
|
</el-button>
|
|
|
</div>
|
|
|
<div class="add-customer-btn">
|
|
|
- <el-button size="small" type="primary" style="margin-right: 8px" v-if="detailData.seeDisabled"
|
|
|
+ <el-button size="small" type="primary" style="margin-right: 8px" v-if="basicData.disabled"
|
|
|
:loading="saveLoading" @click="editHandle">编 辑
|
|
|
</el-button>
|
|
|
<el-button size="small" type="primary" style="margin-right: 8px" v-else :loading="saveLoading"
|
|
|
@@ -18,103 +18,82 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="customer-main">
|
|
|
- <el-form :model="form" ref="form" label-width="100px" class="demo-ruleForm">
|
|
|
- <containerTitle title="基础资料"></containerTitle>
|
|
|
- <basic-container :showBtn="true">
|
|
|
- <el-row>
|
|
|
- <el-col v-for="(item, index) in basicData.column" :key="index" :span="item.span ? item.span : 8"
|
|
|
- :class="{ isShow: item.display }">
|
|
|
- <el-form-item :label="item.label" :prop="item.prop" :rules="item.rules">
|
|
|
- <el-select v-if="item.type == 'select'" v-model="form[item.prop]"
|
|
|
- :placeholder="'请选择' + item.label" clearable filterable style="width: 100%"
|
|
|
- size="small" :disabled="item.disabled || detailData.seeDisabled">
|
|
|
- <el-option v-for="(ite, inde) in item.dicData" :key="inde" :label="ite.label"
|
|
|
- :value="ite.value"></el-option>
|
|
|
- </el-select>
|
|
|
- <el-input type="textarea" v-else-if="item.type === 'textarea'"
|
|
|
- v-model.trim="form[item.prop]" size="small" autocomplete="off"
|
|
|
- :disabled="item.disabled || detailData.seeDisabled"
|
|
|
- :placeholder="'请输入' + item.label"></el-input>
|
|
|
- <el-input v-else type="age" style="width: 100%;" v-model.trim="form[item.prop]"
|
|
|
- size="small" autocomplete="off" :disabled="item.disabled || detailData.seeDisabled"
|
|
|
- clearable :placeholder="'请输入' + item.label"></el-input>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </basic-container>
|
|
|
- </el-form>
|
|
|
+ <containerTitle title="基础信息"></containerTitle>
|
|
|
+ <basic-container>
|
|
|
+ <avue-form :option="basicData" v-model="form" ref="form">
|
|
|
+ <tempalte slot="shippingCompanyCname">
|
|
|
+ <dic-select v-model="form.shippingCompanyCname" placeholder="船公司" key="id" label="cnName"
|
|
|
+ res="records" url="/blade-los/bcorps/list?corpTypeName=船公司" :filterable="true"
|
|
|
+ :remote="true" dataName="cnName" @selectChange="dicChange('shippingCompanyCname', $event)"
|
|
|
+ :disabled="basicData.disabled"></dic-select>
|
|
|
+ </tempalte>
|
|
|
+ <tempalte slot="addressCname">
|
|
|
+ <dic-select v-model="form.addressCname" placeholder="港口地址" key="id" label="cnName" res="records"
|
|
|
+ url="/blade-los/bports/list" :filterable="true" :remote="true" dataName="cnName"
|
|
|
+ @selectChange="dicChange('addressCname', $event)"
|
|
|
+ :disabled="basicData.disabled"></dic-select>
|
|
|
+ </tempalte>
|
|
|
+ </avue-form>
|
|
|
+ </basic-container>
|
|
|
</div>
|
|
|
|
|
|
<div class="customer-main margintop">
|
|
|
<containerTitle title="费用详情"></containerTitle>
|
|
|
<basic-container>
|
|
|
- <div style="margin-bottom: 10px">
|
|
|
- <el-button type="primary" size="small" :disabled="detailData.seeDisabled"
|
|
|
- @click="feestemplatepingCompanyAdd">新增数据
|
|
|
- </el-button>
|
|
|
- </div>
|
|
|
- <el-table stripe border :row-style="{ height: '20px', padding: '0px', fontSize: '12px' }"
|
|
|
- :cell-style="{ padding: '0px', fontSize: '12px' }" :data="form.feesTemplateItemsList" id="out-table"
|
|
|
- :header-cell-style="tableHeaderCellStyle" style="width: 100%">
|
|
|
- <el-table-column prop="corpCnName" label="客户">
|
|
|
- <template slot-scope="{ row }">
|
|
|
- <span class="nowrapClass">{{ row.corpCnName }}</span>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="corpType" label="客户类型">
|
|
|
- <template slot-scope="{ row }">
|
|
|
- <span class="nowrapClass">{{ row.corpType }}</span>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="corpEnName" label="客户英文">
|
|
|
- <template slot-scope="{ row }">
|
|
|
- <span class="nowrapClass">{{ row.corpEnName }}</span>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="feeCode" label="费用编码">
|
|
|
- <template slot-scope="{ row }">
|
|
|
- <span class="nowrapClass">{{ row.feeCode }}</span>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="feeCnName" label="费用">
|
|
|
- <template slot-scope="{ row }">
|
|
|
- <span class="nowrapClass">{{ row.feeCnName }}</span>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="feeEnName" label="费用英文">
|
|
|
- <template slot-scope="{ row }">
|
|
|
- <span class="nowrapClass">{{ row.feeEnName }}</span>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="quantityRule" label="数量规则">
|
|
|
- <template slot-scope="{ row }">
|
|
|
- <span v-for="item of quantityRuleData" :key="item.dictKey"
|
|
|
- v-if="item.dictKey == row.quantityRule">
|
|
|
- {{ item.dictValue }}
|
|
|
- </span>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="quantity" label="数量">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="price" label="单价">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="unitNo" label="计量单位">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="curCode" label="币别">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="remarks" label="备注">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="操作" width="120">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-button type="text" size="small" :disabled="detailData.seeDisabled"
|
|
|
- @click="feestemplateCompanyEdit(scope.$index, scope.row)">编辑</el-button>
|
|
|
- <el-button size="small" type="text" :disabled="detailData.seeDisabled"
|
|
|
- @click="feestemplateCompanyDelete(scope.$index, scope.row)">删除</el-button>
|
|
|
- <el-button type="text" size="small" :disabled="detailData.seeDisabled"
|
|
|
- @click="copyItem(scope.$index, scope.row)">复制</el-button>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
+ <avue-crud :option="option" :data="form.feesTemplateItemsList" id="out-table" ref="crud"
|
|
|
+ :header-cell-class-name="headerClassName" :row-style="{ height: '20px', padding: '0px' }"
|
|
|
+ :cell-style="{ height: '20px', padding: '0px' }">
|
|
|
+ <template slot="indexHeader" slot-scope="{row,index}">
|
|
|
+ <el-button type="primary" size="mini" icon="el-icon-plus" :disabled="basicData.disabled" circle
|
|
|
+ @click="feestemplatepingCompanyAdd()">
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ <template slot="index" slot-scope="{row,index}">
|
|
|
+ <span>{{ index + 1 }}</span>
|
|
|
+ </template>
|
|
|
+ <template slot="corpCnNameForm" slot-scope="{ row }">
|
|
|
+ <dic-select v-if="row.$cellEdit" v-model="row.corpCnName" key="id" label="cnName" res="records"
|
|
|
+ url="/blade-los/bcorps/selectList?status=0¤t=1&size=20" :filterable="true"
|
|
|
+ :remote="true" dataName="cnName" :disabled="row.corpType"
|
|
|
+ @selectChange="rowDicChange('corpCnName', $event, row)"></dic-select>
|
|
|
+ <span v-else>{{ row.corpCnName }}</span>
|
|
|
+ </template>
|
|
|
+ <template slot="corpTypeForm" slot-scope="{row,index}">
|
|
|
+ <dic-select v-if="row.$cellEdit" v-model="row.corpType" key="id" label="dictValue"
|
|
|
+ :disabled="row.corpCnName" url="/blade-system/dict-biz/dictionary?code=corp_type"
|
|
|
+ :filterable="true" @selectChange="rowDicChange('corpType', $event, row)"></dic-select>
|
|
|
+ <span v-else>{{ row.corpType }}</span>
|
|
|
+ </template>
|
|
|
+ <template slot="feeCnNameForm" slot-scope="{ row }">
|
|
|
+ <dic-select v-if="row.$cellEdit" v-model="row.feeCnName" key="id" placeholder="费用名称"
|
|
|
+ label="cnName" res="records" url="/blade-los/bfees/list?status=0¤t=1&size=20"
|
|
|
+ :filterable="true" :remote="true" dataName="cnName"
|
|
|
+ @selectChange="rowDicChange('feeCnName', $event, row)"></dic-select>
|
|
|
+ <span v-else>{{ row.feeCnName }}</span>
|
|
|
+ </template>
|
|
|
+ <template slot="quantityRuleForm" slot-scope="{row,index}">
|
|
|
+ <dic-select v-if="row.$cellEdit" v-model="row.quantityRule" key="id" label="dictValue"
|
|
|
+ url="/blade-system/dict-biz/dictionary?code=number_rule" :filterable="true"></dic-select>
|
|
|
+ <span v-else>{{ row.quantityRule }}</span>
|
|
|
+ </template>
|
|
|
+ <template slot="unitNoForm" slot-scope="{row,index}">
|
|
|
+ <dic-select v-if="row.$cellEdit" v-model="row.unitNo" key="id" label="cnName"
|
|
|
+ url="/blade-los//bunits/listAll" :filterable="true"
|
|
|
+ @selectChange="rowDicChange('unitNo', $event, row)"></dic-select>
|
|
|
+ <span v-else>{{ row.unitNo }}</span>
|
|
|
+ </template>
|
|
|
+ <template slot="menu" slot-scope="{ row, index }">
|
|
|
+ <el-button type="text" size="small" :disabled="basicData.disabled"
|
|
|
+ @click="feestemplateCompanyEdit(index, row)">详情</el-button>
|
|
|
+ <el-button size="small" type="text" :disabled="basicData.disabled" @click="rowCell(row, index)">
|
|
|
+ {{ row.$cellEdit ? '保存' : '编辑' }}
|
|
|
+ </el-button>
|
|
|
+ <el-button size="small" type="text" :disabled="basicData.disabled"
|
|
|
+ @click="feestemplateCompanyDelete(index, row)">删除</el-button>
|
|
|
+ <el-button type="text" size="small" :disabled="basicData.disabled"
|
|
|
+ @click="copyItem(index, row)">复制</el-button>
|
|
|
+ </template>
|
|
|
+ </avue-crud>
|
|
|
</basic-container>
|
|
|
</div>
|
|
|
|
|
|
@@ -123,83 +102,52 @@
|
|
|
<el-dialog title="费用详情" :visible.sync="feestemplateVisible" width="60%" append-to-body :destroy-on-close="true"
|
|
|
:modal-append-to-body="false" :close-on-click-modal="false" :before-close="feestemplateClose">
|
|
|
<div>
|
|
|
- <el-form :model="feestemplateForm" ref="feestemplateForm" label-width="100px" class="demo-ruleForm">
|
|
|
- <el-row>
|
|
|
- <el-col v-for="(item, index) in feestemplateData.column" :key="index"
|
|
|
- :span="item.span ? item.span : 12" :class="{ isShow: item.display }">
|
|
|
- <el-form-item :label="item.label" :prop="item.prop" :rules="item.rules">
|
|
|
- <div v-if="item.prop == 'corpType'">
|
|
|
- <search-query ref="SearchQuery" :datalist="corpTypeData"
|
|
|
- :selectValue="feestemplateForm[item.prop]" title="客户类型" :filterable="true"
|
|
|
- :clearable="true" :buttonIf="false"
|
|
|
- :forParameter="{ key: 'dictKey', label: 'dictValue', value: 'dictKey' }"
|
|
|
- :disabled="feestemplateForm.corpCnName == '' || feestemplateForm.corpCnName == null || !feestemplateForm.corpCnName ? false : true"
|
|
|
- @corpChange="corpTypeChange">
|
|
|
- </search-query>
|
|
|
- </div>
|
|
|
- <div v-else-if="item.prop == 'corpCnName'">
|
|
|
- <search-query ref="SearchCorp" :datalist="corpData"
|
|
|
- :selectValue="feestemplateForm[item.prop]" title="客户" :filterable="true"
|
|
|
- :clearable="true" :remote="true"
|
|
|
- :forParameter="{ key: 'id', label: 'cnName', value: 'cnName' }"
|
|
|
- :disabled="feestemplateForm.corpType == '' || feestemplateForm.corpType == null || !feestemplateForm.corpType ? false : true"
|
|
|
- @remoteMethod="getBcorpsListfun" @corpChange="corpCorpChange"
|
|
|
- @eldialogConfirm="eldialogConfirm(item.prop)">
|
|
|
- <bcorps ref="bcorps" :eldialog="true"
|
|
|
- @selectionChange="eldialogMultipleChoice($event, 'bcorps')"></bcorps>
|
|
|
- </search-query>
|
|
|
- </div>
|
|
|
- <div v-else-if="item.prop == 'feeCnName'">
|
|
|
- <search-query ref="SearchFee" :datalist="feeData"
|
|
|
- :selectValue="feestemplateForm[item.prop]" title="费用" :filterable="true"
|
|
|
- :clearable="true" :remote="true"
|
|
|
- :forParameter="{ key: 'id', label: 'cnName', value: 'id' }"
|
|
|
- @remoteMethod="bfeesListfun" @corpChange="feeCorpChange"
|
|
|
- @eldialogConfirm="eldialogConfirm(item.prop)">
|
|
|
- <bfeesdefine ref="bfeesdefine" :eldialog="true"
|
|
|
- @selectionChange="eldialogMultipleChoice($event, 'feeCnName')">
|
|
|
- </bfeesdefine>
|
|
|
- </search-query>
|
|
|
- </div>
|
|
|
- <div v-else-if="item.prop == 'quantityRule'">
|
|
|
- <search-query ref="SearchQuery" :datalist="quantityRuleData"
|
|
|
- :selectValue="feestemplateForm[item.prop]" title="数量规则" :filterable="true"
|
|
|
- :clearable="true" :buttonIf="false"
|
|
|
- :forParameter="{ key: 'dictKey', label: 'dictValue', value: 'dictKey' }"
|
|
|
- @corpChange="quantityRuleChange">
|
|
|
- </search-query>
|
|
|
- </div>
|
|
|
- <div v-else-if="item.prop == 'curCode'">
|
|
|
- <search-query ref="SearchQuery" :datalist="curCodeData"
|
|
|
- :selectValue="feestemplateForm[item.prop]" title="币别" :buttonIf="false"
|
|
|
- :filterable="true" :clearable="true" :remote="true"
|
|
|
- :forParameter="{ key: 'id', label: 'code', value: 'code' }"
|
|
|
- @remoteMethod="getRateListfun" @corpChange="curCodeCorpChange">
|
|
|
- <bfeesdefine></bfeesdefine>
|
|
|
- </search-query>
|
|
|
- </div>
|
|
|
- <div v-else-if="item.prop == 'unitNo'">
|
|
|
- <search-query ref="SearchUnitNo" :datalist="unitNoData"
|
|
|
- :selectValue="feestemplateForm[item.prop]" title="计量单位" :filterable="true"
|
|
|
- :clearable="true" :remote="true"
|
|
|
- :forParameter="{ key: 'id', label: 'code', value: 'code', disabled: 'status' }"
|
|
|
- @remoteMethod="getBunitsListfun" @corpChange="unitNoCorpChange"
|
|
|
- @eldialogConfirm="eldialogConfirm(item.prop)">
|
|
|
- <bunits ref="bunits" :eldialog="true"
|
|
|
- @selectionChange="eldialogMultipleChoice($event, 'bunits')"></bunits>
|
|
|
- </search-query>
|
|
|
- </div>
|
|
|
-
|
|
|
- <el-input type="textarea" v-else-if="item.type === 'textarea'"
|
|
|
- v-model.trim="feestemplateForm[item.prop]" size="small" autocomplete="off"
|
|
|
- :disabled="item.disabled" :placeholder="'请输入' + item.label"></el-input>
|
|
|
- <el-input v-else type="age" style="width: 100%;"
|
|
|
- v-model.trim="feestemplateForm[item.prop]" size="small" autocomplete="off"
|
|
|
- :disabled="item.disabled" clearable :placeholder="'请输入' + item.label"></el-input>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </el-form>
|
|
|
+ <avue-crud :option="sonOption" :data="feestemplateForm.sonItemsList">
|
|
|
+ <template slot="indexHeader" slot-scope="{row,index}">
|
|
|
+ <el-button type="primary" size="mini" icon="el-icon-plus" :disabled="basicData.disabled" circle
|
|
|
+ @click="addRow()">
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ <template slot="index" slot-scope="{row,index}">
|
|
|
+ <span>{{ index + 1 }}</span>
|
|
|
+ </template>
|
|
|
+ <template slot="typeForm" slot-scope="{row,index}">
|
|
|
+ <dic-select v-if="row.$cellEdit" v-model="row.type" key="id" label="dictValue"
|
|
|
+ url="/blade-system/dict-biz/dictionary?code=corp_type" :filterable="true"></dic-select>
|
|
|
+ <span v-else>{{ row.type }}</span>
|
|
|
+ </template>
|
|
|
+ <template slot="feeCnNameForm" slot-scope="{ row }">
|
|
|
+ <dic-select v-if="row.$cellEdit" v-model="row.feeCnName" key="id" placeholder="箱型"
|
|
|
+ label="cnName" res="records" url="/blade-los/bfees/list?status=0¤t=1&size=20"
|
|
|
+ :filterable="true" :remote="true" dataName="cnName"
|
|
|
+ @selectChange="rowDicChange('feeCnName', $event, row)"></dic-select>
|
|
|
+ <span v-else>{{ row.feeCnName }}</span>
|
|
|
+ </template>
|
|
|
+ <template slot="unitNoForm" slot-scope="{row,index}">
|
|
|
+ <span>
|
|
|
+ <dic-select
|
|
|
+ v-if="row.$cellEdit && (feestemplateForm.quantityRule == '按箱型' || feestemplateForm.quantityRule == '按TEU')"
|
|
|
+ v-model="row.unitNo" key="id" label="cnName" res="records"
|
|
|
+ url="/blade-los/bcntrtypes/list?status=0¤t=1&size=20" :filterable="true"
|
|
|
+ :remote="true" dataName="cnName"
|
|
|
+ @selectChange="rowDicChange('unitNo', $event, row)"></dic-select>
|
|
|
+ <dic-select
|
|
|
+ v-if="row.$cellEdit && !(feestemplateForm.quantityRule == '按箱型' || feestemplateForm.quantityRule == '按TEU')"
|
|
|
+ v-model="row.unitNo" key="id" label="cnName" res="records"
|
|
|
+ url="/blade-los/bunits/list?status=0¤t=1&size=20" :filterable="true"
|
|
|
+ :remote="true" dataName="cnName"
|
|
|
+ @selectChange="rowDicChange('unitNo', $event, row)"></dic-select>
|
|
|
+ <span v-if="!row.$cellEdit">{{ row.unitNo }}</span>
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
+ <template slot="menu" slot-scope="{ row, index }">
|
|
|
+ <el-button size="small" type="text" :disabled="basicData.disabled" @click="rowEdit(row, index)">
|
|
|
+ {{ row.$cellEdit ? '保存' : '编辑' }}
|
|
|
+ </el-button>
|
|
|
+ <el-button type="text" size="small" :disabled="basicData.disabled"
|
|
|
+ @click="rowDel(index, row)">删除</el-button>
|
|
|
+ </template>
|
|
|
+ </avue-crud>
|
|
|
</div>
|
|
|
<span slot="footer" class="dialog-footer">
|
|
|
<el-button @click="feestemplateVisible = false;">取 消</el-button>
|
|
|
@@ -210,7 +158,7 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import { losbfeestemplateDetail, losbfeestemplateSubmit, copytemplateDetail, itemRemove } from "@/api/iosBasicData/losbfeestemplate";
|
|
|
+import { losbfeestemplateDetail, losbfeestemplateSubmit, copytemplateDetail, itemRemove, remove } from "@/api/iosBasicData/losbfeestemplate";
|
|
|
import { bfeesList } from "@/api/iosBasicData/bfees";
|
|
|
import { getBcorpsList } from "@/api/iosBasicData/bcorps";
|
|
|
import { getRateList } from "@/api/iosBasicData/rateManagement";
|
|
|
@@ -222,9 +170,9 @@ import bbusinesstype from "@/views/iosBasicData/bbusinesstype/index.vue";
|
|
|
import bunits from "@/views/iosBasicData/bunits/index.vue";
|
|
|
import { getWorkDicts } from "@/api/system/dictbiz";
|
|
|
import { bcntrtypesList } from "@/api/iosBasicData/bcntrtypes";
|
|
|
-
|
|
|
+import dicSelect from "@/components/dicSelect/main";
|
|
|
export default {
|
|
|
- components: { SearchQuery, bcorps, bfeesdefine, bbusinesstype, bunits },
|
|
|
+ components: { SearchQuery, bcorps, bfeesdefine, bbusinesstype, bunits, dicSelect },
|
|
|
props: {
|
|
|
detailData: {
|
|
|
type: Object
|
|
|
@@ -233,12 +181,91 @@ export default {
|
|
|
|
|
|
data() {
|
|
|
return {
|
|
|
+ sonOption: {
|
|
|
+ calcHeight: 30,
|
|
|
+ // tip: false,
|
|
|
+ border: true,
|
|
|
+ // addBtn: false,
|
|
|
+ // viewBtn: false,
|
|
|
+ editBtn: false,
|
|
|
+ delBtn: false,
|
|
|
+ // refreshBtn: false,
|
|
|
+ // selection: true,
|
|
|
+ header: false,
|
|
|
+ align: 'center',
|
|
|
+ menu: true,
|
|
|
+ menuWidth: 100,
|
|
|
+ column: [
|
|
|
+ {
|
|
|
+ label: "index",
|
|
|
+ prop: "index",
|
|
|
+ width: "55",
|
|
|
+ headerslot: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '类别',
|
|
|
+ prop: 'type',
|
|
|
+ overHidden: true,
|
|
|
+ cell: true,
|
|
|
+ slot: true,
|
|
|
+ formslot: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '费用名称',
|
|
|
+ prop: 'feeCnName',
|
|
|
+ overHidden: true,
|
|
|
+ cell: true,
|
|
|
+ slot: true,
|
|
|
+ formslot: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '币种',
|
|
|
+ prop: 'curCode',
|
|
|
+ overHidden: true,
|
|
|
+ cell: true,
|
|
|
+ type: 'select',
|
|
|
+ dicData: [{
|
|
|
+ label: 'CNY',
|
|
|
+ value: 'CNY'
|
|
|
+ }, {
|
|
|
+ label: 'USD',
|
|
|
+ value: 'USD'
|
|
|
+ }],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '计量单位',
|
|
|
+ prop: 'unitNo',
|
|
|
+ overHidden: true,
|
|
|
+ cell: true,
|
|
|
+ slot: true,
|
|
|
+ formslot: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '销售价',
|
|
|
+ prop: 'salesPrice',
|
|
|
+ cell: true,
|
|
|
+ type: 'number',
|
|
|
+ controls: false,
|
|
|
+ overHidden: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '成本价',
|
|
|
+ prop: 'costPrice',
|
|
|
+ cell: true,
|
|
|
+ type: 'number',
|
|
|
+ controls: false,
|
|
|
+ overHidden: true,
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
pageLoading: false,
|
|
|
saveLoading: false,
|
|
|
// 费用详细弹窗
|
|
|
feestemplateVisible: false,
|
|
|
// 费用详细弹窗绑定的数据
|
|
|
- feestemplateForm: {},
|
|
|
+ feestemplateForm: {
|
|
|
+ sonItemsList: []
|
|
|
+ },
|
|
|
feestemplateIndex: null,
|
|
|
// 客户请求数据
|
|
|
corpData: [],
|
|
|
@@ -261,39 +288,15 @@ export default {
|
|
|
},
|
|
|
// 基础资料数据
|
|
|
basicData: {
|
|
|
+ menuBtn: false,
|
|
|
+ span: 8,
|
|
|
+ disabled: false,
|
|
|
+ labelWidth: 100,
|
|
|
column: [
|
|
|
- // {
|
|
|
- // label: "业务类型",
|
|
|
- // prop: "businessTypeId",
|
|
|
- // rules: [{
|
|
|
- // required: true,
|
|
|
- // message: "",
|
|
|
- // trigger: "blur"
|
|
|
- // }]
|
|
|
- // },
|
|
|
- // {
|
|
|
- // label: "业务类型",
|
|
|
- // prop: "businessTypeCnName",
|
|
|
- // rules: [{
|
|
|
- // required: true,
|
|
|
- // message: "",
|
|
|
- // trigger: "blur"
|
|
|
- // }]
|
|
|
- // },
|
|
|
- // {
|
|
|
- // label: "业务类型英文",
|
|
|
- // prop: "businessTypeEnName",
|
|
|
- // disabled:true,
|
|
|
- // rules: [{
|
|
|
- // required: true,
|
|
|
- // message: "请输入业务类型英文名称",
|
|
|
- // trigger: "blur"
|
|
|
- // }]
|
|
|
- // },
|
|
|
{
|
|
|
label: "模版编号",
|
|
|
prop: "code",
|
|
|
- search: true,
|
|
|
+ disabled: false,
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: "请输入模版编号",
|
|
|
@@ -303,6 +306,7 @@ export default {
|
|
|
{
|
|
|
label: "模版中文名称",
|
|
|
prop: "cnName",
|
|
|
+ disabled: false,
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: "请输入模版中文名称",
|
|
|
@@ -312,6 +316,7 @@ export default {
|
|
|
{
|
|
|
label: "模版英文名称",
|
|
|
prop: "enName",
|
|
|
+ disabled: false,
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: "请输入模版英文名称",
|
|
|
@@ -322,6 +327,7 @@ export default {
|
|
|
label: "收付",
|
|
|
prop: "dc",
|
|
|
type: 'select',
|
|
|
+ disabled: false,
|
|
|
dicData: [{
|
|
|
label: '收',
|
|
|
value: 'D'
|
|
|
@@ -336,9 +342,34 @@ export default {
|
|
|
}]
|
|
|
},
|
|
|
{
|
|
|
+ label: "船公司",
|
|
|
+ prop: "shippingCompanyCname",
|
|
|
+ disabled: false,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "港口地址",
|
|
|
+ prop: "addressCname",
|
|
|
+ disabled: false,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "运输条款",
|
|
|
+ prop: "transportationTerms",
|
|
|
+ disabled: false,
|
|
|
+ type: 'select',
|
|
|
+ filterable: true,
|
|
|
+ remote: true,
|
|
|
+ dicUrl: "/api/blade-los/bserviceterms/list?status=0¤t=1&size=20&cnName={{key}}",
|
|
|
+ props: {
|
|
|
+ label: 'cnName',
|
|
|
+ value: 'cnName',
|
|
|
+ res: 'data.records'
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
label: "是否公开共享",
|
|
|
prop: "isShared",
|
|
|
width: 100,
|
|
|
+ disabled: false,
|
|
|
type: 'select',
|
|
|
dicData: [{
|
|
|
label: '否',
|
|
|
@@ -351,6 +382,7 @@ export default {
|
|
|
{
|
|
|
label: "状态",
|
|
|
prop: "status",
|
|
|
+ disabled: false,
|
|
|
type: 'select',
|
|
|
dicData: [{
|
|
|
label: '启用',
|
|
|
@@ -363,6 +395,7 @@ export default {
|
|
|
{
|
|
|
label: "备注",
|
|
|
prop: "remarks",
|
|
|
+ disabled: false,
|
|
|
span: 24,
|
|
|
type: 'textarea',
|
|
|
minRows: 3,
|
|
|
@@ -370,6 +403,158 @@ export default {
|
|
|
|
|
|
]
|
|
|
},
|
|
|
+ option: {
|
|
|
+ // height: 'auto',
|
|
|
+ calcHeight: 30,
|
|
|
+ menuWidth: 160,
|
|
|
+ border: true,
|
|
|
+ header: false,
|
|
|
+ editBtn: false,
|
|
|
+ delBtn: false,
|
|
|
+ align: 'center',
|
|
|
+ menu: true,
|
|
|
+ column: [
|
|
|
+ {
|
|
|
+ label: "index",
|
|
|
+ prop: "index",
|
|
|
+ width: "55",
|
|
|
+ headerslot: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "客户",
|
|
|
+ prop: "corpCnName",
|
|
|
+ width: "120",
|
|
|
+ overHidden: true,
|
|
|
+ cell: true,
|
|
|
+ slot: true,
|
|
|
+ formslot: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "客户类型",
|
|
|
+ prop: "corpType",
|
|
|
+ width: "120",
|
|
|
+ overHidden: true,
|
|
|
+ cell: true,
|
|
|
+ slot: true,
|
|
|
+ formslot: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "客户英文",
|
|
|
+ prop: "corpEnName",
|
|
|
+ width: "80",
|
|
|
+ overHidden: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "费用名称",
|
|
|
+ prop: "feeCnName",
|
|
|
+ width: "120",
|
|
|
+ overHidden: true,
|
|
|
+ cell: true,
|
|
|
+ slot: true,
|
|
|
+ formslot: true,
|
|
|
+ rules: [{
|
|
|
+ required: true,
|
|
|
+ message: "请选择费用名称",
|
|
|
+ trigger: "blur"
|
|
|
+ }]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "费用编码",
|
|
|
+ prop: "feeCode",
|
|
|
+ width: "80",
|
|
|
+ overHidden: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "费用英文",
|
|
|
+ prop: "feeEnName",
|
|
|
+ width: "80",
|
|
|
+ overHidden: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "数量规则",
|
|
|
+ prop: "quantityRule",
|
|
|
+ width: "120",
|
|
|
+ overHidden: true,
|
|
|
+ cell: true,
|
|
|
+ slot: true,
|
|
|
+ formslot: true,
|
|
|
+ rules: [{
|
|
|
+ required: true,
|
|
|
+ message: "请选择数量规则",
|
|
|
+ trigger: "blur"
|
|
|
+ }]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "数量",
|
|
|
+ prop: "quantity",
|
|
|
+ width: "80",
|
|
|
+ cell: true,
|
|
|
+ type: 'number',
|
|
|
+ controls: false,
|
|
|
+ overHidden: true,
|
|
|
+ rules: [{
|
|
|
+ required: true,
|
|
|
+ message: "请输入数量",
|
|
|
+ trigger: "blur"
|
|
|
+ }]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "单价",
|
|
|
+ prop: "price",
|
|
|
+ width: "80",
|
|
|
+ cell: true,
|
|
|
+ type: 'number',
|
|
|
+ controls: false,
|
|
|
+ overHidden: true,
|
|
|
+ rules: [{
|
|
|
+ required: true,
|
|
|
+ message: "请输入单价",
|
|
|
+ trigger: "blur"
|
|
|
+ }]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "计量单位",
|
|
|
+ prop: "unitNo",
|
|
|
+ width: "120",
|
|
|
+ overHidden: true,
|
|
|
+ cell: true,
|
|
|
+ slot: true,
|
|
|
+ formslot: true,
|
|
|
+ rules: [{
|
|
|
+ required: true,
|
|
|
+ message: "请选择计量单位",
|
|
|
+ trigger: "blur"
|
|
|
+ }]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "币别",
|
|
|
+ prop: "curCode",
|
|
|
+ width: "100",
|
|
|
+ cell: true,
|
|
|
+ type: 'select',
|
|
|
+ dicData: [{
|
|
|
+ label: 'CNY',
|
|
|
+ value: 'CNY'
|
|
|
+ }, {
|
|
|
+ label: 'USD',
|
|
|
+ value: 'USD'
|
|
|
+ }],
|
|
|
+ overHidden: true,
|
|
|
+ rules: [{
|
|
|
+ required: true,
|
|
|
+ message: "请选择币别",
|
|
|
+ trigger: "blur"
|
|
|
+ }]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "备注",
|
|
|
+ prop: "remarks",
|
|
|
+ width: "120",
|
|
|
+ cell: true,
|
|
|
+ overHidden: true,
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
// 费用详细数据
|
|
|
feestemplateData: {
|
|
|
column: [
|
|
|
@@ -476,14 +661,117 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
created() {
|
|
|
+ if (this.detailData.businessTypeId) {
|
|
|
+ this.form = {
|
|
|
+ businessTypeId: this.detailData.businessTypeId,
|
|
|
+ businessTypeCnName: this.detailData.businessTypeCnName,
|
|
|
+ businessTypeEnName: this.detailData.businessTypeEnName,
|
|
|
+ businessTypeCode: this.detailData.businessTypeCode
|
|
|
+ }
|
|
|
+ }
|
|
|
this.getBcorpsListfun()
|
|
|
this.bfeesListfun()
|
|
|
this.quantityRuleWorkDictsfun()
|
|
|
this.getRateListfun()
|
|
|
this.getBunitsListfun()
|
|
|
this.getcorpTypeData()
|
|
|
+ if (this.detailData.id) {
|
|
|
+ this.basicData.disabled = true
|
|
|
+ this.losbfeestemplateDetailfun(this.detailData.id)
|
|
|
+ }
|
|
|
},
|
|
|
methods: {
|
|
|
+ rowCell(row, index) {
|
|
|
+ if (!row.feeCnName || !row.quantityRule || !row.quantity || !row.price || !row.unitNo || !row.curCode) {
|
|
|
+ this.$refs.crud.rowCell(row, index)
|
|
|
+ return this.$message.error("请完善明细信息");
|
|
|
+ }
|
|
|
+ if (row.$cellEdit == true) {
|
|
|
+ this.$set(row, "$cellEdit", false);
|
|
|
+ } else {
|
|
|
+ this.$set(row, "$cellEdit", true);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ rowEdit(row) {
|
|
|
+ if (row.$cellEdit == true) {
|
|
|
+ this.$set(row, "$cellEdit", false);
|
|
|
+ } else {
|
|
|
+ this.$set(row, "$cellEdit", true);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ rowDicChange(name, row, el) {
|
|
|
+ if (name == 'corpCnName') {
|
|
|
+ if (row) {
|
|
|
+ el.corpId = row.id
|
|
|
+ el.corpEnName = row.enName
|
|
|
+ } else {
|
|
|
+ el.corpId = null
|
|
|
+ el.corpEnName = null
|
|
|
+ el.corpCnName = null
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (name == 'feeCnName') {
|
|
|
+ if (row) {
|
|
|
+ el.feeId = row.id
|
|
|
+ el.feeCode = row.code
|
|
|
+ el.feeEnName = row.enName
|
|
|
+ } else {
|
|
|
+ el.feeId = null
|
|
|
+ el.feeCode = null
|
|
|
+ el.feeCnName = null
|
|
|
+ el.feeEnName = null
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (name == 'unitNo') {
|
|
|
+ if (row) {
|
|
|
+ el.unitId = row.id
|
|
|
+ } else {
|
|
|
+ el.unitId = null
|
|
|
+ el.unitNo = null
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (name == 'corpType') {
|
|
|
+ if (!row) {
|
|
|
+ el.corpType = null
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ dicChange(name, row) {
|
|
|
+ if (name == 'shippingCompanyCname') {
|
|
|
+ if (row) {
|
|
|
+ this.form.shippingCompanyId = row.id
|
|
|
+ this.form.shippingCompanyCode = row.code
|
|
|
+ } else {
|
|
|
+ this.form.shippingCompanyId = null
|
|
|
+ this.form.shippingCompanyCode = null
|
|
|
+ this.form.shippingCompanyCname = null
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (name == 'addressCname') {
|
|
|
+ if (row) {
|
|
|
+ this.form.addressId = row.id
|
|
|
+ this.form.addressCode = row.code
|
|
|
+ } else {
|
|
|
+ this.form.podId = null
|
|
|
+ this.form.addressCode = null
|
|
|
+ this.form.addressCname = null
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ addRow() {
|
|
|
+ this.feestemplateForm.sonItemsList.push({
|
|
|
+ pid: this.form.id,
|
|
|
+ type: this.feestemplateForm.corpType,
|
|
|
+ feeId: this.feestemplateForm.feeId,
|
|
|
+ feeCode: this.feestemplateForm.feeCode,
|
|
|
+ feeCnName: this.feestemplateForm.feeCnName,
|
|
|
+ feeEnName: this.feestemplateForm.feeEnName,
|
|
|
+ curCode: this.feestemplateForm.curCode,
|
|
|
+ salesPrice: 0,
|
|
|
+ costPrice: 0,
|
|
|
+ $cellEdit: true
|
|
|
+ })
|
|
|
+ },
|
|
|
copyItem(index, row) {
|
|
|
let item = this.deepClone(row)
|
|
|
item.id = null;
|
|
|
@@ -672,11 +960,12 @@ export default {
|
|
|
},
|
|
|
// 编辑按钮更改状态
|
|
|
editHandle() {
|
|
|
- this.detailData.seeDisabled = false;
|
|
|
+ this.basicData.disabled = false;
|
|
|
},
|
|
|
// 保存按钮
|
|
|
editCustomer() {
|
|
|
- this.$refs.form.validate((valid) => {
|
|
|
+ this.$refs["form"].validate((valid, done) => {
|
|
|
+ done();
|
|
|
if (valid) {
|
|
|
this.losbfeestemplateSubmitfun()
|
|
|
} else {
|
|
|
@@ -693,7 +982,7 @@ export default {
|
|
|
message: "操作成功!"
|
|
|
});
|
|
|
this.losbfeestemplateDetailfun(res.data.data.id)
|
|
|
- this.detailData.seeDisabled = true;
|
|
|
+ // this.basicData.disabled = true;
|
|
|
}).finally(() => {
|
|
|
this.saveLoading = false;
|
|
|
})
|
|
|
@@ -701,16 +990,37 @@ export default {
|
|
|
|
|
|
// 费用详细添加
|
|
|
feestemplatepingCompanyAdd() {
|
|
|
- this.feestemplateForm = {
|
|
|
+ if (!this.form.id) {
|
|
|
+ this.$message({
|
|
|
+ type: "error",
|
|
|
+ message: "请保存数据!"
|
|
|
+ });
|
|
|
+ return
|
|
|
+ }
|
|
|
+ this.form.feesTemplateItemsList.push({
|
|
|
quantity: 1,
|
|
|
price: 1,
|
|
|
+ quantityRule: '按箱型',
|
|
|
curCode: 'CNY',
|
|
|
- unitNo: 'KGS'
|
|
|
- }
|
|
|
- this.feestemplateVisible = true
|
|
|
+ unitNo: '20GP',
|
|
|
+ sonItemsList: [],
|
|
|
+ $cellEdit: true
|
|
|
+ })
|
|
|
+ // this.feestemplateForm = {
|
|
|
+ // quantity: 1,
|
|
|
+ // price: 1,
|
|
|
+ // curCode: 'CNY',
|
|
|
+ // unitNo: 'KGS',
|
|
|
+ // sonItemsList: []
|
|
|
+ // }
|
|
|
+ // this.feestemplateVisible = true
|
|
|
},
|
|
|
// 费用详细编辑
|
|
|
feestemplateCompanyEdit(index, row) {
|
|
|
+ if (!row.feeCnName || !row.quantityRule || !row.quantity || !row.price || !row.unitNo || !row.curCode) {
|
|
|
+ this.$refs.crud.rowCell(row, index)
|
|
|
+ return this.$message.error("请完善明细信息");
|
|
|
+ }
|
|
|
this.feestemplateForm = JSON.parse(JSON.stringify(row))
|
|
|
this.feestemplateIndex = index
|
|
|
this.feestemplateVisible = true
|
|
|
@@ -734,30 +1044,52 @@ export default {
|
|
|
}
|
|
|
|
|
|
},
|
|
|
- // 费用详细确认
|
|
|
- feestemplatecompanyConfirm() {
|
|
|
- if (!this.feestemplateForm.corpCnName && !this.feestemplateForm.corpType) {
|
|
|
+ // 费用详细删除
|
|
|
+ rowDel(index, row) {
|
|
|
+ if (row.id) {
|
|
|
+ remove({ ids: row.id }).then(res => {
|
|
|
+ this.$message({
|
|
|
+ type: "success",
|
|
|
+ message: "删除成功!"
|
|
|
+ });
|
|
|
+ this.feestemplateForm.sonItemsList.splice(index, 1)
|
|
|
+ })
|
|
|
+ } else {
|
|
|
this.$message({
|
|
|
- type: "error",
|
|
|
- message: "客户和客户类型必须填一项!"
|
|
|
+ type: "success",
|
|
|
+ message: "删除成功!"
|
|
|
});
|
|
|
- return
|
|
|
+ this.feestemplateForm.sonItemsList.splice(index, 1)
|
|
|
}
|
|
|
- this.$refs.feestemplateForm.validate((valid) => {
|
|
|
- if (valid) {
|
|
|
- if (this.feestemplateIndex != null) {
|
|
|
- this.form.feesTemplateItemsList.splice(this.feestemplateIndex, 1, this.feestemplateForm)
|
|
|
- } else {
|
|
|
- if (!this.form.feesTemplateItemsList) {
|
|
|
- this.form.feesTemplateItemsList = []
|
|
|
- }
|
|
|
- this.form.feesTemplateItemsList.push(this.feestemplateForm)
|
|
|
- }
|
|
|
- this.feestemplateForm = {}
|
|
|
- this.feestemplateIndex = null
|
|
|
- this.feestemplateVisible = false
|
|
|
- }
|
|
|
- })
|
|
|
+
|
|
|
+ },
|
|
|
+ // 费用详细确认
|
|
|
+ feestemplatecompanyConfirm() {
|
|
|
+ // if (!this.feestemplateForm.corpCnName && !this.feestemplateForm.corpType) {
|
|
|
+ // c
|
|
|
+ // return
|
|
|
+ // }
|
|
|
+ // this.$refs.feestemplateForm.validate((valid) => {
|
|
|
+ // if (valid) {
|
|
|
+ // if (this.feestemplateIndex != null) {
|
|
|
+ // this.form.feesTemplateItemsList.splice(this.feestemplateIndex, 1, this.feestemplateForm)
|
|
|
+ // } else {
|
|
|
+ // if (!this.form.feesTemplateItemsList) {
|
|
|
+ // this.form.feesTemplateItemsList = []
|
|
|
+ // }
|
|
|
+ // this.form.feesTemplateItemsList.push(this.feestemplateForm)
|
|
|
+ // }
|
|
|
+ // this.feestemplateForm = {}
|
|
|
+ // this.feestemplateIndex = null
|
|
|
+ // this.feestemplateVisible = false
|
|
|
+ // }
|
|
|
+ // })
|
|
|
+ if (this.feestemplateIndex != null) {
|
|
|
+ this.form.feesTemplateItemsList.splice(this.feestemplateIndex, 1, this.feestemplateForm)
|
|
|
+ }
|
|
|
+ this.feestemplateForm = {}
|
|
|
+ this.feestemplateIndex = null
|
|
|
+ this.feestemplateVisible = false
|
|
|
},
|
|
|
// 费用详细关闭
|
|
|
feestemplateClose(done) {
|