<template> <div class="app-container"> <div align="center" style="font-size: 20px;">商品名称:{{this.$route.query.titleZh}}</div> <div class="page-title">复制价格</div> <!-- 搜索工作栏 --> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form-item :label="$t('商品名称')" prop="titleZh" v-if="!$route.query.product_id"> <el-input v-model="queryParams.titleZh" :placeholder="$t('请输入中英文名称、商品编码、海关编码')" clearable @keyup.enter.native="handleQuery"> <template #prepend> <el-select v-model="queryParams.searchType" style="width: 100px"> <el-option :value="1" :label="$t('包含')"></el-option> <el-option :value="2" :label="$t('不包含')"></el-option> <el-option :value="3" :label="$t('等于')"></el-option> </el-select> </template> </el-input> </el-form-item> <el-form-item :label="$t('商品类型')" prop="typeId" v-if="!$route.query.product_id"> <el-select v-model="queryParams.typeId" :placeholder="$t('选择商品类型')" clearable> <el-option v-for="type in typeList" :key="type.id" :label="$l(type, 'titleZh')" :value="type.id"/> </el-select> </el-form-item> <el-form-item :label="$t('商品属性')" prop="typeId" v-if="!$route.query.product_id"> <el-select v-model="queryParams.attrId" :placeholder="$t('选择商品类型')" clearable> <el-option v-for="attr in attrList" :key="attr.id" :label="$l(attr, 'attrName')" :value="attr.id"/> </el-select> </el-form-item> <el-form-item :label="$t('运输方式')" prop="transportType" v-if="!transportType"> <dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="queryParams.transportType" formatter="number" clearable /> </el-form-item> <!--海运不显示渠道--> <el-form-item :label="$t('出货渠道')" prop="shippingChannelId" v-if="type !== 'sea'"> <el-select v-model="queryParams.shippingChannelId" clearable> <el-option v-for="item in channelList" :key="item.id" :label="$l(item, 'name')" :value="item.channelId" /> </el-select> </el-form-item> <el-form-item :label="$t('始发地')" prop="startCityId"> <el-select v-model="queryParams.startCityId" clearable> <el-option v-for="city in startCityList" :key="city.id" :label="$l(city, 'title')" :value="city.id" /> </el-select> </el-form-item> <el-form-item :label="$t('目的地')" prop="destCityId"> <el-select v-model="queryParams.destCityId" clearable> <el-option v-for="city in destCityList" :key="city.id" :label="$l(city, 'title')" :value="city.id" /> </el-select> </el-form-item> <el-form-item :label="$t('是否预付')" prop="needPay"> <el-select v-model="queryParams.needPay" :placeholder="$t('请选择')" clearable> <el-option :label="$t('是')" value="1"></el-option> <el-option :label="$t('否')" value="0"></el-option> </el-select> </el-form-item> <el-form-item :label="$t('上架状态')" prop="auditStatus"> <dict-selector :type="DICT_TYPE.ECW_PRICE_AUDIT_STATUS" v-model="queryParams.auditStatus" clearable/> </el-form-item> <el-form-item :label="$t('状态')" prop="combStatus"> <el-select v-model="queryParams.combStatus" :placeholder="$t('请选择状态')" clearable> <el-option :label="$t('未设置价格')" value="setPrice_1"></el-option> <el-option :label="$t('未过期')" value="setPrice_2"></el-option> <el-option :label="$t('黑名单')" value="blacklist_1"></el-option> </el-select> </el-form-item> <el-form-item :label="$t('是否单询')" prop="needOrderInquiry"> <el-select v-model="queryParams.needOrderInquiry" :placeholder="$t('请选择')" clearable> <el-option :label="$t('是')" value="1"></el-option> <el-option :label="$t('否')" value="0"></el-option> </el-select> </el-form-item> <el-form-item :label="$t('单价模式')" prop="priceType"> <el-select v-model="queryParams.priceType" :placeholder="$t('请选择')" clearable> <el-option :label="$t('运费+清关费')" value="0"></el-option> <el-option :label="$t('全包价')" value="1"></el-option> </el-select> </el-form-item> <el-form-item> <el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button> <el-button icon="el-icon-refresh" @click="resetQuery">{{$t('重置')}}</el-button> </el-form-item> </el-form> <!-- 操作工具栏 --> <el-row :gutter="10" class="mb8"> <!--全部路线吗没有新增入口,指定商品的路线价格才有添加路线--> <el-col :span="1.5" v-if="$route.query.product_id"> <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd('air')" v-hasPermi="['ecw:product-price:create']">{{$t('新建空运价格')}}</el-button> <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd('sea')" v-hasPermi="['ecw:product-price:create']">{{$t('新建海运价格')}}</el-button> </el-col> <el-col :span="1.5"> <!--未指定商品--> <template> <!--<el-button type="primary" v-hasPermi="['ecw:product-price:batch_update']" size="mini" @click="handleBatchEdit">{{$t('批量设置价格')}}</el-button>--> <!-- <el-button type="primary" v-hasPermi="['ecw:product-price:bartch_black']" size="mini" @click="batchBlock" :disabled="multiple">{{$t('批量加入黑名单')}}</el-button> <el-button type="primary" v-hasPermi="['ecw:product-price:batch_down']" size="mini" @click="batchOff" :disabled="multiple">{{$t('批量下架')}}</el-button> <el-button type="warning" v-hasPermi="['ecw:product-price:export']" size="mini" @click="handleExport" :loading="exportLoading" >{{$t('导出')}}</el-button> <el-button type="primary" v-if="type != 'air'" v-hasPermi="['ecw:product-price:batch_update']" size="mini" @click="handleBatchEdit('sea')">{{$t('批量设置海运价格')}}</el-button> --> <el-button type="primary" v-if="type != 'sea'" v-hasPermi="['ecw:product-price:batch_update']" size="mini" @click="copyPrice">{{$t('批量复制价格')}}</el-button> </template> <!--指定商品--> <!-- <template v-else> <el-button type="primary" size="mini" v-hasPermi="['ecw:product-price:single_product']" @click="batchSetSingleProductPrice('sea')">{{$t('批量设置商品海运路线')}}</el-button> <el-button type="primary" size="mini" v-hasPermi="['ecw:product-price:single_product']" @click="batchSetSingleProductPrice('air')">{{$t('批量设置商品空运路线')}}</el-button> </template> --> </el-col> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> </el-row> <!-- 列表 --> <el-table v-loading="loading" :data="list" @selection-change="handleSelectionChange"> <el-table-column type="selection" width="55" align="center"></el-table-column> <el-table-column :label="$t('序号')" prop="id" width="50" /> <el-table-column :label="$t('商品编码')" align="center" prop="productCode" > <template slot-scope="{row}"> <el-link type="primary" @click.native="handleUpdate(row)"> {{ row.productDO ? row.productDO.productCode : $t('无productDO字段') }} </el-link> </template> </el-table-column> <el-table-column :label="$t('海关编码')" align="center" prop="customsCode"> <template slot-scope="{row}"> <div> {{ row.productDO ? row.productDO.customsCode : $t('无productDO字段') }} </div> </template> </el-table-column> <el-table-column :label="$t('商品类型')" align="center" prop="typeId"> <template slot-scope="{row}"> <span>{{ row.productDO ? getTypeName(row.productDO.typeId) : $t('无productDO字段') }}</span> </template> </el-table-column> <el-table-column :label="$t('商品名称')" align="center" prop="productName"> <template slot-scope="{row}"> <el-link type="primary" @click.native="handleUpdate(row)"> {{ row.productDO ? row.productDO.titleZh + '/' + row.productDO.titleEn : $t('无productDO字段') }} </el-link> </template> </el-table-column> <el-table-column prop="tansportType" :label="$t('运输方式')" align="center" width="100"> <template slot-scope="scope"> <div> {{ transportName(scope.row.warehouseLineDO.transportType) }} </div> </template> </el-table-column> <el-table-column prop="tansportType" :label="$t('出货渠道')" align="center" width="100"> <template slot-scope="{row}"> <div> {{ channelName(row.shippingChannelId) }} </div> </template> </el-table-column> <el-table-column prop="startDestTitle" :label="$t('始发地') + '/' + $t('目的地')" align="center"> <template slot-scope="scope"> <div> {{ scope.row.warehouseLineDO.startTitleZh }} <br /> {{ scope.row.warehouseLineDO.destTitleZh }} </div> </template> </el-table-column> <el-table-column prop="price" :label="$t('价格')" align="center"> <template slot-scope="scope"> <template v-if="scope.row.stepPrice == 1"> <!--全包价--> <div v-if="scope.row.priceType"> <div v-if="!scope.row.fullPriceStepList || !scope.row.fullPriceStepList.length">{{$t('未设置全包价阶梯价')}}</div> <div v-else> {{$t("第{no}阶梯({start}~{end}{weightUnit})", { no: 1, start: scope.row.fullPriceStepList[0].startNum, end: scope.row.fullPriceStepList[0].endNum, weightUnit: getUnitTitle(scope.row.fullPriceStepList[0].weightUnit), })}}<br/> {{$t('全包价')}}:{{ getCurrencySymbol(scope.row.fullPriceStepList[0].allPriceUnit) + scope.row.fullPriceStepList[0].allPrice}} {{ getCurrencyTitle(scope.row.fullPriceStepList[0].allPriceUnit) + '/' + getUnitTitle(scope.row.fullPriceStepList[0].allVolumeUnit)}} </div> </div> <template v-else> <div v-if="!scope.row.freightPriceStepList || !scope.row.freightPriceStepList.length">{{$t('未设置运费阶梯价')}}</div> <div v-else> {{$t("第{no}阶梯({start}~{end}{weightUnit})", { no: 1, start: scope.row.freightPriceStepList[0].startNum, end: scope.row.freightPriceStepList[0].endNum, weightUnit: getUnitTitle(scope.row.freightPriceStepList[0].weightUnit), })}}<br/> <div> {{$t('运费')}}:{{ getCurrencySymbol(scope.row.freightPriceStepList[0].transportPriceUnit) + scope.row.freightPriceStepList[0].transportPrice}} {{ getCurrencyTitle(scope.row.freightPriceStepList[0].transportPriceUnit) + '/' + getUnitTitle(scope.row.freightPriceStepList[0].transportVolumeUnit)}} </div> </div> </template> <el-button type="text" @click="showMoreStepPriceItem=scope.row">{{$t('查看更多')}}</el-button> </template> <template v-else> <div v-if="scope.row.priceType == 0"> {{$t('运费')}}:{{ getCurrencySymbol(scope.row.transportPriceUnit) + scope.row.transportPrice}} {{ getCurrencyTitle(scope.row.transportPriceUnit) + '/' + getUnitTitle(scope.row.transportVolumeUnit)}} <br /> {{$t('清关费')}}:{{ getCurrencySymbol(scope.row.clearancePriceUnit) + scope.row.clearancePrice}} {{ getCurrencyTitle(scope.row.clearancePriceUnit) + '/' + getUnitTitle(scope.row.clearanceVolumeUnit)}} </div> <div v-if="scope.row.priceType == 1"> {{$t('全包价')}}:{{ getCurrencySymbol(scope.row.allPriceUnit) + scope.row.allPrice}} {{ getCurrencyTitle(scope.row.allPriceUnit) + '/' + getUnitTitle(scope.row.allVolumeUnit)}} </div> </template> </template> </el-table-column> <el-table-column prop="auditStatus" align="center" :label="$t('状态')" width="120"> <template slot-scope="scope"> <div> {{ statusName(scope.row) }} <span style="color:red" v-if="(scope.row.validateStartDate && scope.row.validateStartDate > Date.now()) || (scope.row.validateEndDate && scope.row.validateEndDate < Date.now())">(已过期)</span> </div> </template> </el-table-column> <el-table-column prop="advanceStatus" :label="$t('单询')" align="center" width="80"> <template slot-scope="scope"> <dict-tag :type="DICT_TYPE.NEED_ORDER_INQUIRY" :value="scope.row.needOrderInquiry"></dict-tag> </template> </el-table-column> <el-table-column prop="advanceStatus" :label="$t('预付')" align="center" width="80"> <template slot-scope="scope"> <div> <!-- {{ getAdvanceStatuTitle(scope.row.advanceStatus) }} --> <dict-tag :type="DICT_TYPE.ECW_PAY_ADVANCE" :value="scope.row.needPay"></dict-tag> </div> </template> </el-table-column> <el-table-column :label="$t('最后修改时间')"> <template slot-scope="{row}"> <div> {{ row.updateTime|parseTime }} </div> </template> </el-table-column> <el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width" width="140"> <template slot-scope="scope"> <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row, true)" v-hasPermi="['ecw:product-price:show']">{{$t('查看')}}</el-button> <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['ecw:product-price:update']">{{$t('编辑')}}</el-button> <el-button size="mini" type="text" icon="el-icon-edit" @click="updateStatus(scope.row, 'blacklist')" v-hasPermi="['ecw:product-price:black']">{{ scope.row.blacklist == 0 ? $t('加入黑名单') : $t('移除黑名单') }}</el-button> <el-button size="mini" type="text" icon="el-icon-edit" @click="updateStatus(scope.row, 'auditStatus')" v-hasPermi="['ecw:product-price:down']">{{scope.row.auditStatus == AuditStatusEnum.PASS ? $t('下架') : $t('上架')}}</el-button> <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['ecw:product-price:delete']">{{$t('删除')}}</el-button> <el-button @click="copyTemplate(scope.row)" size="mini" type="text">{{$t('复制模板')}}</el-button> <el-button @click="setOrderInquiry(scope.row, 0)" v-if="scope.row.needOrderInquiry" size="mini" type="text">{{$t('取消单询')}}</el-button> <el-button @click="setOrderInquiry(scope.row, 1)" v-else size="mini" type="text">{{$t('单询异常')}}</el-button> </template> </el-table-column> </el-table> <!-- 分页组件 --> <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" @pagination="getList"/> <el-dialog :visible="!!showMoreStepPriceItem" :before-close="closeMoreStepPrice" :title="$t('查看阶梯价')"> <el-row :gutter="20" v-if="showMoreStepPriceItem"> <el-col :span="12"> <!--全包价--> <template v-if="showMoreStepPriceItem.priceType"> <div v-for="(item, index) in showMoreStepPriceItem.fullPriceStepList"> <show-step-price-item :value="item" :unit-map="unitMap" :currency-map="currencyMap" :index="index" field-prefix="all" :price-name="$t('全包价')"></show-step-price-item> </div> </template> <template v-else> <template v-if="showMoreStepPriceItem.freightPriceStepList"> <div v-for="(item, index) in showMoreStepPriceItem.freightPriceStepList"> <show-step-price-item :value="item" :unit-map="unitMap" :currency-map="currencyMap" :index="index" field-prefix="transport" :price-name="$t('运费')"></show-step-price-item> </div> </template> <template v-if="showMoreStepPriceItem.clearancePriceStepList"> <div v-for="(item, index) in showMoreStepPriceItem.clearancePriceStepList"> <show-step-price-item :value="item" :unit-map="unitMap" :currency-map="currencyMap" :index="index" field-prefix="clearance" :price-name="$t('清关费')"></show-step-price-item> </div> </template> </template> </el-col> <!--空运的清关费单独显示--> <!-- 甲方要求不显示清关费 https://zentao.test.jdshangmen.com/bug-view-5298.html --> <!-- <el-col :span="12" v-if="[3,4].indexOf(+showMoreStepPriceItem.warehouseLineDO.transportType) > -1"> <template v-if="showMoreStepPriceItem.clearPriceStepList.length"> <div v-for="(item, index) in showMoreStepPriceItem.clearPriceStepList"> <div class="page-title"> {{$t("第{no}阶梯({start}~{end}{weightUnit})", { no: index + 1, start: item.startNum, end: item.endNum, weightUnit: getUnitTitle(item.weightUnit), })}} </div> {{$t('清关费')}}:{{ getCurrencySymbol(item.clearancePriceUnit) + item.clearancePrice}} {{ getCurrencyTitle(item.clearancePriceUnit) + '/' + getUnitTitle(item.clearanceVolumeUnit)}} </div> </template> <template v-else>{{$t('暂无清关费设置')}}</template> </el-col>--> </el-row> </el-dialog> </div> </template> <script> import { createProductPrice, updateProductPrice, deleteProductPrice, getProductPrice, getProductPricePage, updateOrderInquiry, copyPriceByProductIds } from "@/api/ecw/productPrice"; import { openedRouterList } from "@/api/ecw/warehouse"; import { getTradeCityList } from "@/api/ecw/region"; import { getProductTypeList } from "@/api/ecw/productType"; import { getProductAttrList } from "@/api/ecw/productAttr"; import { getDictDatas, DICT_TYPE } from '@/utils/dict' import { getCurrencyList } from '@/api/ecw/currency'; import { getUnitList } from '@/api/ecw/unit'; import { AuditStatusEnum} from '@/utils/constants' import { getAllChannelList, getChannelList } from '@/api/ecw/channel' import DictTag from '@/components/DictTag' import {arrryToKeyedObjectBy} from '@/utils/index' import { getProduct} from '@/api/ecw/product'; import {parseTime} from '@/utils/ruoyi' import Template from "@/views/cms/template"; import {getStatusName} from "@/views/ecw/productPrice/util"; import ShowStepPriceItem from "@/views/ecw/productPrice/components/ShowStepPriceItem.vue"; export default { name: "EcwProductCopyprice", filters: {parseTime}, components: { ShowStepPriceItem, Template, DictTag }, data() { return { // 选中数组 ids: [], // 非单个禁用 single: true, // 非多个禁用 multiple: true, //特性列表 attrList:[], typeList: [], product: null, cityList: [], /* startCityList: [], //始发地城市 destCityList: [], //目的地城市 */ routedList: [], //已开头路线列表 currencyList: [], //货币列表 unitList: [], //单位列表 channelList:[] , // 渠道 routeParams:{}, //路线搜索条件 isUpdate: false, //更新操作 // 遮罩层 loading: true, // 导出遮罩层 exportLoading: false, // 显示搜索条件 showSearch: true, // 总条数 total: 0, // 产品价格列表 list: [], // 弹出层标题 title: "", // 是否显示弹出层 open: false, dateRangeCreateTime: [], // 查询参数 queryParams: { searchType: 1, pageNo: 1, pageSize: 10, productId: null, warehouseLineId: null, transportType: null, transportPrice: null, transportPriceUnit: null, transportVolumeUnit: null, clearancePrice: null, clearancePriceUnit: null, clearanceVolumeUnit: null, shippingChannelId: null, status: null, }, // 表单参数 form: { typeId: null, titleZh: null }, // 表单校验 rules: { typeId: [{ required: true, message: this.$t("产品类型不能为空"), trigger: "blur" }], titleZh: [{ required: true, message: this.$t("产品名称不能为空"), trigger: "blur" }], titleEn: [{ required: true, message: this.$t("英文名称不能为空"), trigger: "blur" }], transportPrice: [{ required: true, message: this.$t("海运费不能为空"), trigger: "blur" }], clearancePrice: [{ required: true, message: this.$t("清关费不能为空"), trigger: "blur" }], advanceStatus: [{ required: true, message: this.$t("是否预付不能为空"), trigger: "blur" }], containerLocation:[{ required: true, message: this.$t("货柜位置不能为空"), trigger: "blur" }], square:[{ required: true, message: this.$t("方数不能为空"), trigger: "blur" }], needBook:[{ required: true, message: this.$t("预约入仓不能为空"), trigger: "blur" }], }, lineList: [], transportDatas: getDictDatas(DICT_TYPE.ECW_TRANSPORT_TYPE), /* advanceStatusDictDatas: getDictDatas(DICT_TYPE.ADVANCE_STATUS), */ AuditStatusEnum: AuditStatusEnum, locationList: getDictDatas(DICT_TYPE.ECW_CONTAINER_LOCATION), // 查看更多阶梯价 showMoreStepPriceItem: null, entryPath: null }; }, computed: { // 路径中的运输方式参数 transportType() { // product-price-1_2的格式,如果没有三段则最后一段不是运输方式 return this.$route.path.split('-')[2] || ''; }, // 路由中的标题 routeName(){ return this.$route.name }, // 类型,transportType是1和2(1_2用一个表示)表示海运,3和4表示空运 type(){ // 如果没有则表示商品路线价格 if(!this.transportType){ return null } return ['3','4'].indexOf(this.transportType) > -1 ? 'air' : 'sea' }, // 商品名称 productTitle(){ if(!this.product){ return '' } return this.product.titleZh }, // 渠道用id做键值 keyedChannel(){ return arrryToKeyedObjectBy(this.channelList, 'channelId') }, // 根据渠道id获取渠道名 channelName(){ return id => { return this.keyedChannel[id] ? this.keyedChannel[id].nameZh : null } }, // 根据类型获取类型名称 getTypeName() { return typeId => { for(let index in this.typeList) { let typeItem = this.typeList[index]; if(typeItem.id == typeId) { return this.$l(typeItem, 'title'); } } } }, // 根据状态获取状态名称 ,这个应该可以改成字典,目前接口缺少相关数据,待定 statusName() { return getStatusName }, // 根据运输方式获取名称 transportName() { return transportType => { return this.getDictDataLabel(this.DICT_TYPE.ECW_TRANSPORT_TYPE, transportType) } }, // 显示币种符号 getCurrencySymbol() { return currencyId => { for(let index in this.currencyList) { let currecyItem = this.currencyList[index]; if(currecyItem.id == currencyId) { return currecyItem.fuhao; } } } }, // 显示币种名称 getCurrencyTitle() { return currencyId => { for(let index in this.currencyList) { let currecyItem = this.currencyList[index]; if(currecyItem.id == currencyId) { return this.$l(currecyItem, 'title'); } } } }, getUnitTitle() { return unitId => { for(let index in this.unitList) { let unitItem = this.unitList[index]; if(unitItem.id == unitId) { return this.$l(unitItem, 'title'); } } } }, startCityList(){ return this.cityList.filter(item => item.type == 2 || item.type == 3) }, destCityList(){ return this.cityList.filter(item => item.type == 1 || item.type == 3) }, currencyMap(){ let map = {} this.currencyList.forEach(item => { map[item.id] = this.$l(item, 'title') }) return map }, unitMap(){ let map = {} this.unitList.forEach(item => { map[item.id] = this.$l(item, 'title') }) return map }, }, activated() { // console.log('activated', Object.assign({}, this.$route.query)) /* this.$set(this.queryParams, 'typeId', +this.$route.query.product_type || null) let productId = this.product?.id console.log(this.$route.query.product_id, productId, this.$route.query.product_id != productId) if(this.$route.query.product_id != productId){ this.queryParams = { pageNo: 1, pageSize: 10 } } this.handleQuery() */ if(this.$route.query.product_type){ this.$set(this.queryParams, 'typeId', +this.$route.query.product_type); } if(this.$route.query.transportType){ this.$set(this.queryParams, 'transportType', +this.$route.query.transportType); } // 指定产品获取产品信息 if(this.$route.query.product_id){ this.$set(this.queryParams, 'productId', +this.$route.query.product_id); getProduct(this.$route.query.product_id).then(res => { this.product = res.data }) }else { if (this.transportType) { // 如果指定了单个的运输方式则赋值 if (this.transportType.split('_').length == 1) { this.$set(this.queryParams, 'transportType', +this.transportType) } } } }, watch:{ '$route.query.product_id'(){ // if(!this.$route.query.product_id){ // return this.product = null // } // 价格列表 跟 商品的价格列表,有时候商品价格列表的路由变动会导致价格列表也执行此处代码,所以做一个判断排除 // https://zentao.test.jdshangmen.com/bug-view-4928.html if(this.$route.path != this.entryPath) return let productId = this.product?.id if(this.$route.name === 'ProductPrice'){ if(this.$route.query.product_id != productId){ this.queryParams = { pageNo: 1, pageSize: 10, productId: this.$route.query.product_id, typeId: this.$route.query.product_type, transportType:this.$route.query.transportType } } getProduct(this.$route.query.product_id).then(res => { this.product = res.data }) this.getList(); } } }, created() { this.entryPath = this.$route.path if(this.$route.query.product_type){ this.$set(this.queryParams, 'typeId', +this.$route.query.product_type); } if(this.$route.query.transportType){ this.$set(this.queryParams, 'transportType', +this.$route.query.transportType); } // 指定产品获取产品信息 if(this.$route.query.product_id){ this.$set(this.queryParams, 'productId', +this.$route.query.product_id); getProduct(this.$route.query.product_id).then(res => { this.product = res.data }) }else{ if(this.transportType) { // 如果指定了单个的运输方式则赋值 if (this.transportType.split('_').length == 1) { this.$set(this.queryParams, 'transportType', +this.transportType) } } this.getAttrList(); } //获取城市列表 this.getAllCityList() this.getChannelList() this.getTypeList() this.getAttrList(); //获取货币列表 this.requestCurrencyList(); //获取单位列表 this.requestUnitList(); this.$nextTick(() => { this.getList(); }) }, methods: { getChannelList(){ getAllChannelList().then(res => this.channelList = res.data) }, /** 获取产品属性列表 */ getAttrList() { getProductAttrList().then(response => { this.attrList = response.data; }) }, /** 获取产品类型列表 */ getTypeList() { getProductTypeList().then(response => { this.typeList = response.data; }) }, /**获取所有城市列表 */ getAllCityList() { getTradeCityList({}).then(response => { this.cityList = response.data; }) }, /**获取已开通路线列表 */ getOpenedRouterList() { openedRouterList(this.routeParams).then(response => { this.routedList = response.data; this.setDefaultSelect(); }) }, //复制价格 copyPrice(){ console.log(this.product) if(this.ids.length==0){ return this.$message(this.$t('请至少选中一项复制价格')) } this.$confirm(this.$t('请再次确认是否将勾选的线路价格复制到'+this.$route.query.titleZh), '提示', { confirmButtonText: '确定', cancelButtonText: '取消' }).then(() => { let productPriceIds = this.ids.join(',') let productId = this.$route.query.id let lineChannelList =[{lineId:1,shippingChannelId:2}] let data = {productPriceIds:productPriceIds,productId:productId,lineChannelList:lineChannelList} copyPriceByProductIds(data).then(res => { this.$modal.msgSuccess(this.$t("复制价格成功")); this.getList() }) }) .catch(() => console.info("操作取消")); }, /**获取所有货币列表 */ requestCurrencyList() { getCurrencyList().then(response => { this.currencyList = response.data; }) }, /**获取所有单位列表 */ requestUnitList() { getUnitList().then(response => { this.unitList = response.data; }) }, /*handleSelectionChange(val) { this.lineList = val; },*/ /**运输线路改变 */ transportTypeChange(newVal) { this.routeParams.transportType = this.form.transportType; this.getOpenedRouterList(); }, /**始发地改变 */ startCityChange(newVal) { this.routeParams.startCityId = this.form.startCityId; this.getOpenedRouterList(); }, /**目的地改变 */ destCityChange(newVal) { this.routeParams.destCityId = this.form.destCityId; this.getOpenedRouterList(); }, handleStatusChange(row) { updateProductPrice(row).then(() => { this.$modal.msgSuccess(this.$t("修改成功")); }).catch(function() { row.auditStatus = row.auditStatus === AuditStatusEnum.PASS ? AuditStatusEnum.NOT_PASS : AuditStatusEnum.PASS; }); }, /** 查询列表 */ getList() { this.loading = true; console.log(this.queryParams,'this.queryParams') // 处理查询参数 let params = {...this.queryParams}; if(this.type == 'sea'){ params.transportType = 1 } if(this.type == 'air'){ params.transportType = 3 } this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime'); // 执行查询 console.log(params,'params') getProductPricePage(params).then(response => { this.list = response.data.list; this.total = response.data.total; this.loading = false; }); }, /** 取消按钮 */ cancel() { this.open = false; this.reset(); }, /** 表单重置 */ reset() { this.form = { id: undefined, productId: undefined, warehouseLineId: undefined, transportPrice: undefined, transportPriceUnit: undefined, transportVolumeUnit: undefined, clearancePrice: undefined, clearancePriceUnit: undefined, clearanceVolumeUnit: undefined, status: undefined, }; this.resetForm("form"); }, /** 搜索按钮操作 */ handleQuery() { this.queryParams.pageNo = 1; this.queryParams.setPrice = undefined this.queryParams.blacklist = undefined if(this.queryParams.combStatus){ let tmp = this.queryParams.combStatus.split('_') this.queryParams[tmp[0]] = tmp[1] } this.getList(); }, /** 重置按钮操作 */ resetQuery() { this.dateRangeCreateTime = []; this.resetForm("queryForm"); this.handleQuery(); }, /** 新增按钮操作 */ handleAdd(type) { return this.$router.push(`../../lineProject/product-price/edit-${type}?` + (new URLSearchParams(this.$route.query)).toString()) }, // 批量修改单个商品的价格(一条或者多条,后者全部路线) batchSetSingleProductPrice(type){ this.$router.push(`../../lineProject/product-price/edit-${type}?action=batchUpdate&type=${type}&product_id=${this.$route.query.product_id}&ids=${this.ids}`) }, // 批量设置路线 handleBatchEdit(type) { this.$router.push('../../lineProject/batch-edit-' + type) }, /** 修改按钮操作 */ handleUpdate(row, readonly) { let transportType = row.warehouseLineDO.transportType let type = transportType == 3 || transportType == 4 ? 'air' : 'sea' let url = `../../lineProject/product-price/edit-${type}?action=update&id=${row.id}` if(readonly)url += '&readonly=1' return this.$router.push(url) }, updateStatus(row, type) { if(type == 'blacklist') { row.blacklist=row.blacklist == 0 ? 1 : 0; } else if(type == 'auditStatus') { row.auditStatus=row.auditStatus === AuditStatusEnum.PASS ? AuditStatusEnum.NOT_PASS : AuditStatusEnum.PASS; } updateProductPrice(row).then(() => { this.$modal.msgSuccess(this.$t("修改成功")); }).catch(function() { if(statusType == 'blacklist') { row.blacklist = row.blacklist === 1 ? 0 : 1; } else { row.auditStatus = row.auditStatus === AuditStatusEnum.PASS ? AuditStatusEnum.NOT_PASS : AuditStatusEnum.PASS; } }); }, checkSelectable() { return !this.isUpdate; }, setDefaultSelect() { let vm = this; setTimeout(() => { // 修改线路价格,选中已经选择的 if(vm.isUpdate && vm.routedList && vm.routedList.length) { vm.$refs.routeTable.toggleRowSelection(vm.routedList[0]); } }, 300); }, /** 删除按钮操作 */ handleDelete(row) { const id = row.id; this.$modal.confirm(this.$t('是否确认删除产品价格编号为{id}的数据项?', {id})).then(function() { return deleteProductPrice(id); }).then(() => { this.getList(); this.$modal.msgSuccess(this.$t("删除成功")); }).catch(() => {}); }, // 表格多选 handleSelectionChange(selection) { this.ids = selection.map(item => item.id) this.single = selection.length !== 1 this.multiple = !selection.length }, // 设置,取消単询 setOrderInquiry(row, needOrderInquiry){ row.needOrderInquiry = needOrderInquiry updateOrderInquiry(row).then(res => { this.$message.success(res.msg || this.$t('操作成功')) this.getList() }) }, // 复制模板 copyTemplate(row){ // 跳转到批量设置页面,并填充数据 let transportType = row.warehouseLineDO.transportType this.$router.push(`../../lineProject/batch-edit-${transportType == 3 || transportType == 4 ? 'air' : 'sea'}?templateId=${row.id}`) }, // 关闭更多阶梯价格窗口 closeMoreStepPrice(){ this.showMoreStepPriceItem=null } } }; </script> <style lang="scss" scoped> </style>