index.vue 25.8 KB
Newer Older
wanglianghe's avatar
wanglianghe committed
1 2
<template>
  <div class="app-container">
dragondean@qq.com's avatar
dragondean@qq.com committed
3
    <div class="page-title">{{$route.query.product_id ? productTitle + '-' : this.$t('全部')}}{{$t('路线价格列表')}}</div>
wanglianghe's avatar
wanglianghe committed
4
    <!-- 搜索工作栏 -->
wanglianghe's avatar
wanglianghe committed
5
      <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
6
        <!-- <el-form-item label="商品编码" prop="productCode" v-if="!$route.query.product_id">
7 8 9
          <el-input v-model="queryParams.productCode" placeholder="请输入商品编码" clearable @keyup.enter.native="handleQuery"/>
        </el-form-item>

10
        <el-form-item label="海关编码" prop="customsCode" v-if="!$route.query.product_id">
11
          <el-input v-model="queryParams.customsCode" placeholder="请输入海关编码" clearable @keyup.enter.native="handleQuery"/>
12
        </el-form-item> -->
13

dragondean@qq.com's avatar
dragondean@qq.com committed
14 15
        <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"/>
16 17
        </el-form-item>
        
dragondean@qq.com's avatar
dragondean@qq.com committed
18 19
        <el-form-item :label="$t('商品类型')" prop="typeId" v-if="!$route.query.product_id">
          <el-select v-model="queryParams.typeId" :placeholder="$t('选择商品类型')" clearable>
20 21 22
            <el-option v-for="type in typeList" :key="type.id" :label="type.titleZh" :value="type.id"/>
          </el-select>
        </el-form-item>
23
        <!-- <el-form-item label="商品属性" prop="attrId" v-if="!$route.query.product_id">
24
          <el-select v-model="queryParams.attrId" placeholder="选择商品属性" clearable>
25 26
            <el-option v-for="attr in attrList" :key="attr.id" :label="attr.attrName" :value="attr.id"/>
          </el-select>
27 28 29
        </el-form-item>
        <el-form-item label="商品特性" prop="attrId" v-if="!$route.query.product_id">
          // TODO
30
        </el-form-item> -->
dragondean@qq.com's avatar
dragondean@qq.com committed
31
        <el-form-item :label="$t('运输方式')" prop="transportType">
dragondean@qq.com's avatar
dragondean@qq.com committed
32
          <dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="queryParams.transportType" formatter="number" clearable />
33
        </el-form-item>  
dragondean@qq.com's avatar
dragondean@qq.com committed
34
        <el-form-item :label="$t('出货渠道')" prop="shippingChannelId">
35
        <el-select v-model="queryParams.shippingChannelId" clearable>
dragondean@qq.com's avatar
dragondean@qq.com committed
36
          <el-option v-for="item in channelList" :key="item.id" :label="$l(item, 'name')" :value="item.channelId" /> 
37 38
        </el-select>
      </el-form-item> 
dragondean@qq.com's avatar
dragondean@qq.com committed
39
        <el-form-item :label="$t('始发地')" prop="startCityId">
wanglianghe's avatar
wanglianghe committed
40
          <el-select v-model="queryParams.startCityId" clearable>
dragondean@qq.com's avatar
dragondean@qq.com committed
41
            <el-option v-for="city in startCityList" :key="city.id" :label="$l(city, 'title')" :value="city.id" /> 
42 43
          </el-select>
        </el-form-item>  
wanglianghe's avatar
wanglianghe committed
44

dragondean@qq.com's avatar
dragondean@qq.com committed
45
      <el-form-item :label="$t('目的地')" prop="destCityId">
wanglianghe's avatar
wanglianghe committed
46
        <el-select v-model="queryParams.destCityId" clearable>
dragondean@qq.com's avatar
dragondean@qq.com committed
47
          <el-option v-for="city in destCityList" :key="city.id" :label="$l(city, 'title')" :value="city.id" /> 
wanglianghe's avatar
wanglianghe committed
48 49
        </el-select>
      </el-form-item>  
50
      
51
      <el-form-item :label="$t('审核状态')" prop="auditStatus">
dragondean@qq.com's avatar
dragondean@qq.com committed
52
          <dict-selector :type="DICT_TYPE.ECW_PRICE_AUDIT_STATUS" v-model="queryParams.auditStatus" clearable/>
53 54
      </el-form-item>
      <el-form-item :label="$t('状态')" prop="status">
55
        // TODO
56
      </el-form-item>
57
  
wanglianghe's avatar
wanglianghe committed
58
      
wanglianghe's avatar
wanglianghe committed
59
      <el-form-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
60 61
        <el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button>
        <el-button icon="el-icon-refresh" @click="resetQuery">{{$t('重置')}}</el-button>
wanglianghe's avatar
wanglianghe committed
62 63 64 65 66
      </el-form-item>
    </el-form>

    <!-- 操作工具栏 -->
    <el-row :gutter="10" class="mb8">
67 68
      <!--全部路线吗没有新增入口,指定商品的路线价格才有添加路线-->
      <el-col :span="1.5" v-if="$route.query.product_id">
dragondean@qq.com's avatar
dragondean@qq.com committed
69
        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['ecw:product-price:create']">{{$t('新建价格')}}</el-button>
70 71
      </el-col>
      <el-col :span="1.5">
72
        <!--未指定商品-->
dragondean@qq.com's avatar
dragondean@qq.com committed
73 74 75
        <el-button  v-if="!$route.query.product_id" type="primary" plain icon="el-icon-setting" size="mini" @click="handleBatchEdit">{{$t('批量设置价格')}}</el-button>
        <el-button  v-if="!$route.query.product_id" type="primary" plain icon="el-icon-setting" size="mini" @click="batchBlock" :disabled="multiple">{{$t('批量加入黑名单')}}</el-button>
        <el-button  v-if="!$route.query.product_id" type="primary" plain icon="el-icon-setting" size="mini" @click="batchOff" :disabled="multiple">{{$t('批量下架')}}</el-button>
76

77
        <!--指定商品-->
dragondean@qq.com's avatar
dragondean@qq.com committed
78
        <el-button v-if="$route.query.product_id" type="primary" plain icon="el-icon-setting" size="mini" @click="batchSetSingleProductPrice">{{$t('批量设置单个商品的路线路线')}}</el-button>
wanglianghe's avatar
wanglianghe committed
79
      </el-col>
wanglianghe's avatar
wanglianghe committed
80
      <!-- <el-col :span="1.5">
wanglianghe's avatar
wanglianghe committed
81 82
        <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
                   v-hasPermi="['ecw:product-price:export']">导出</el-button>
wanglianghe's avatar
wanglianghe committed
83
      </el-col> -->
wanglianghe's avatar
wanglianghe committed
84 85 86 87
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>

    <!-- 列表 -->
88 89
    <el-table v-loading="loading" :data="list" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center"></el-table-column>
dragondean@qq.com's avatar
dragondean@qq.com committed
90
      <el-table-column :label="$t('序号')" prop="id" width="50" />
wanglianghe's avatar
wanglianghe committed
91

dragondean@qq.com's avatar
dragondean@qq.com committed
92
      <el-table-column :label="$t('商品编码')" align="center" prop="productCode" >
93
        <template slot-scope="{row}">
dragondean@qq.com's avatar
dragondean@qq.com committed
94
            <el-link type="primary" @click.native="handleUpdate(row)">
dragondean@qq.com's avatar
dragondean@qq.com committed
95
              {{ row.productDO ? row.productDO.productCode : $t('无productDO字段') }}
96
            </el-link>
97 98 99
        </template>
      </el-table-column>

dragondean@qq.com's avatar
dragondean@qq.com committed
100
      <el-table-column :label="$t('海关编码')" align="center" prop="customsCode">
101
        <template slot-scope="{row}">
102
            <div>
dragondean@qq.com's avatar
dragondean@qq.com committed
103
              {{ row.productDO ? row.productDO.customsCode : $t('无productDO字段') }}
104 105 106 107
            </div>
        </template>
      </el-table-column>

dragondean@qq.com's avatar
dragondean@qq.com committed
108
      <el-table-column :label="$t('商品类型')" align="center" prop="typeId">
109
        <template slot-scope="{row}">
dragondean@qq.com's avatar
dragondean@qq.com committed
110
          <span>{{ row.productDO ? getTypeName(row.productDO.typeId) : $t('无productDO字段') }}</span>
111 112 113
        </template>
      </el-table-column>

dragondean@qq.com's avatar
dragondean@qq.com committed
114
      <el-table-column :label="$t('商品名称')" align="center" prop="productName">
115
        <template slot-scope="{row}">
dragondean@qq.com's avatar
dragondean@qq.com committed
116
            <el-link type="primary" @click.native="handleUpdate(row)">
dragondean@qq.com's avatar
dragondean@qq.com committed
117
              {{ row.productDO ? row.productDO.titleZh + '/' + row.productDO.titleEn : $t('无productDO字段') }}
118
            </el-link>
119 120 121
        </template>
      </el-table-column>

dragondean@qq.com's avatar
dragondean@qq.com committed
122
      <el-table-column prop="tansportType" :label="$t('运输方式')" align="center" width="100">
wanglianghe's avatar
wanglianghe committed
123 124 125 126 127 128
          <template slot-scope="scope">
            <div>
              {{ transportName(scope.row.warehouseLineDO.transportType) }}
            </div>
          </template>
      </el-table-column>
dragondean@qq.com's avatar
dragondean@qq.com committed
129
      <el-table-column prop="tansportType" :label="$t('出货渠道')" align="center" width="100">
130 131 132 133 134 135
          <template slot-scope="{row}">
            <div>
              {{ channelName(row.shippingChannelId) }}
            </div>
          </template>
      </el-table-column>
dragondean@qq.com's avatar
dragondean@qq.com committed
136
      <el-table-column prop="startDestTitle" :label="$t('始发地') + '/' + $t('目的地')" align="center">
wanglianghe's avatar
wanglianghe committed
137 138 139 140 141 142 143 144 145
          <template slot-scope="scope">
            <div>
              {{ scope.row.warehouseLineDO.startTitleZh }}
              <br />
              {{ scope.row.warehouseLineDO.destTitleZh }}
            </div>
          </template>
      </el-table-column>

dragondean@qq.com's avatar
dragondean@qq.com committed
146
      <el-table-column prop="price" :label="$t('价格')" align="center">
wanglianghe's avatar
wanglianghe committed
147
          <template slot-scope="scope">
wanglianghe's avatar
wanglianghe committed
148
            <div v-if="scope.row.priceType == 0">
dragondean@qq.com's avatar
dragondean@qq.com committed
149
              {{$t('运费')}}:{{ getCurrencySymbol(scope.row.transportPriceUnit) + scope.row.transportPrice}}&nbsp; 
wanglianghe's avatar
wanglianghe committed
150 151
              {{ getCurrencyTitle(scope.row.transportPriceUnit) + '/' + getUnitTitle(scope.row.transportVolumeUnit)}}
              <br />
dragondean@qq.com's avatar
dragondean@qq.com committed
152
              {{$t('清关费')}}:{{ getCurrencySymbol(scope.row.clearancePriceUnit) + scope.row.clearancePrice}}&nbsp; 
wanglianghe's avatar
wanglianghe committed
153 154
              {{ getCurrencyTitle(scope.row.clearancePriceUnit) + '/' + getUnitTitle(scope.row.clearanceVolumeUnit)}}
            </div>
wanglianghe's avatar
wanglianghe committed
155 156 157 158
            <div v-if="scope.row.priceType == 1">
              {{$t('全包价')}}:{{ getCurrencySymbol(scope.row.allPriceUnit) + scope.row.allPrice}}&nbsp; 
              {{ getCurrencyTitle(scope.row.allPriceUnit) + '/' + getUnitTitle(scope.row.allVolumeUnit)}}
            </div>
wanglianghe's avatar
wanglianghe committed
159 160 161
          </template>
      </el-table-column>

dragondean@qq.com's avatar
dragondean@qq.com committed
162
      <el-table-column prop="auditStatus" align="center" :label="$t('状态')" width="120">
wanglianghe's avatar
wanglianghe committed
163
        <template slot-scope="scope">
164 165 166
          <div>
              {{ statusName(scope.row) }}
          </div>
wanglianghe's avatar
wanglianghe committed
167 168
        </template>
      </el-table-column>
wanglianghe's avatar
wanglianghe committed
169

dragondean@qq.com's avatar
dragondean@qq.com committed
170
      <el-table-column prop="advanceStatus" :label="$t('预付')" align="center" width="80">
wanglianghe's avatar
wanglianghe committed
171 172
          <template slot-scope="scope">
            <div>
173
              <!-- {{ getAdvanceStatuTitle(scope.row.advanceStatus) }} -->
174
              <dict-tag :type="DICT_TYPE.ECW_PAY_ADVANCE" :value="scope.row.needPay"></dict-tag>
wanglianghe's avatar
wanglianghe committed
175 176 177 178
            </div>
          </template>
      </el-table-column>

dragondean@qq.com's avatar
dragondean@qq.com committed
179
      <el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width" width="140">
wanglianghe's avatar
wanglianghe committed
180
        <template slot-scope="scope">
dragondean@qq.com's avatar
dragondean@qq.com committed
181
          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row, true)"
dragondean@qq.com's avatar
dragondean@qq.com committed
182
                     v-hasPermi="['ecw:product-price:update']">{{$t('查看')}}</el-button>
wanglianghe's avatar
wanglianghe committed
183
          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
dragondean@qq.com's avatar
dragondean@qq.com committed
184
                     v-hasPermi="['ecw:product-price:update']">{{$t('编辑')}}</el-button>
185

186
          <el-button size="mini" type="text" icon="el-icon-edit" @click="updateStatus(scope.row, 'blacklist')"
dragondean@qq.com's avatar
dragondean@qq.com committed
187
                    >{{ scope.row.blacklist == 0 ? $t('加入黑名单') : $t('移除黑名单') }}</el-button>
188
          <el-button size="mini" type="text" icon="el-icon-edit" @click="updateStatus(scope.row, 'auditStatus')"
dragondean@qq.com's avatar
dragondean@qq.com committed
189
                    >{{scope.row.auditStatus == AuditStatusEnum.PASS ? $t('下架') : $t('上架')}}</el-button>
190
          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
dragondean@qq.com's avatar
dragondean@qq.com committed
191
                     v-hasPermi="['ecw:product-price:delete']">{{$t('删除')}}</el-button>
wanglianghe's avatar
wanglianghe committed
192 193 194 195 196 197 198 199 200 201 202
        </template>
      </el-table-column>
    </el-table>
    <!-- 分页组件 -->
    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
                @pagination="getList"/>

  </div>
</template>

<script>
203
import { createProductPrice, updateProductPrice, deleteProductPrice, getProductPrice, getProductPricePage, exportProductPriceExcel, batchBlock, batchOff } from "@/api/ecw/productPrice";
wanglianghe's avatar
wanglianghe committed
204
import { openedRouterList } from "@/api/ecw/warehouse";
205
import { getTradeCityList } from "@/api/ecw/region";
wanglianghe's avatar
wanglianghe committed
206
import { getProductTypeList } from "@/api/ecw/productType";
207 208
import { getProductAttrList } from "@/api/ecw/productAttr";
import { getDictDatas, DICT_TYPE } from '@/utils/dict'
wanglianghe's avatar
wanglianghe committed
209 210 211
import { getCurrencyList } from '@/api/ecw/currency';
import { getUnitList } from '@/api/ecw/unit';
import { AuditStatusEnum} from '@/utils/constants'
212 213 214
import { getChannelList } from '@/api/ecw/channel';
import DictTag from '@/components/DictTag'
import {arrryToKeyedObjectBy} from '@/utils/index'
215
import { getProduct } from '@/api/ecw/product';
wanglianghe's avatar
wanglianghe committed
216 217 218
export default {
  name: "ProductPrice",
  components: {
219
    DictTag
wanglianghe's avatar
wanglianghe committed
220 221 222
  },
  data() {
    return {
223 224 225 226 227 228
      // 选中数组
      ids: [],
      // 非单个禁用
      single: true,
      // 非多个禁用
      multiple: true,
229 230
      //特性列表
      attrList:[],
wanglianghe's avatar
wanglianghe committed
231 232
      typeList: [],
      product: null,
233 234 235
      cityList: [],
      /* startCityList: [],  //始发地城市
      destCityList: [],   //目的地城市 */
wanglianghe's avatar
wanglianghe committed
236 237 238
      routedList: [],     //已开头路线列表
      currecyList: [],    //货币列表
      unitList: [],       //单位列表
239
      channelList:[] , // 渠道
wanglianghe's avatar
wanglianghe committed
240 241 242
      routeParams:{},    //路线搜索条件
      isUpdate: false,   //更新操作

243 244 245
      //货柜位置
      locationList:[],

wanglianghe's avatar
wanglianghe committed
246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266
      // 遮罩层
      loading: true,
      // 导出遮罩层
      exportLoading: false,
      // 显示搜索条件
      showSearch: true,
      // 总条数
      total: 0,
      // 产品价格列表
      list: [],
      // 弹出层标题
      title: "",
      // 是否显示弹出层
      open: false,
      dateRangeCreateTime: [],
      // 查询参数
      queryParams: {
        pageNo: 1,
        pageSize: 10,
        productId: null,
        warehouseLineId: null,
267
        transportType: null,
wanglianghe's avatar
wanglianghe committed
268 269 270 271 272 273
        transportPrice: null,
        transportPriceUnit: null,
        transportVolumeUnit: null,
        clearancePrice: null,
        clearancePriceUnit: null,
        clearanceVolumeUnit: null,
274
        shippingChannelId: null,
wanglianghe's avatar
wanglianghe committed
275 276 277
        status: null,
      },
      // 表单参数
wanglianghe's avatar
wanglianghe committed
278 279 280 281
      form: {
        typeId: null,
        titleZh: null
      },
wanglianghe's avatar
wanglianghe committed
282 283
      // 表单校验
      rules: {
dragondean@qq.com's avatar
dragondean@qq.com committed
284 285 286 287 288 289 290 291 292
        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" }],
wanglianghe's avatar
wanglianghe committed
293 294
      },

295
      lineList: [],
wanglianghe's avatar
wanglianghe committed
296
      transportDatas: getDictDatas(DICT_TYPE.ECW_TRANSPORT_TYPE),
297
      /* advanceStatusDictDatas: getDictDatas(DICT_TYPE.ADVANCE_STATUS), */
wanglianghe's avatar
wanglianghe committed
298
      AuditStatusEnum: AuditStatusEnum,
299
      locationList: getDictDatas(DICT_TYPE.ECW_CONTAINER_LOCATION),
300
      
wanglianghe's avatar
wanglianghe committed
301 302
    };
  },
wanglianghe's avatar
wanglianghe committed
303 304

  computed: {
305 306 307 308 309 310 311 312
    // 商品名称
    productTitle(){
      if(!this.product){
        return ''
      }
      return this.product.titleZh
    },
    // 渠道用id做键值
313 314 315
    keyedChannel(){
      return arrryToKeyedObjectBy(this.channelList, 'channelId')
    },
316
    // 根据渠道id获取渠道名
317 318 319 320 321
    channelName(){
      return id => {
        return this.keyedChannel[id] ? this.keyedChannel[id].nameZh : null
      }
    },
322
    // 根据类型获取类型名称
323 324 325 326 327 328 329 330 331 332
    getTypeName() {
      return typeId => {
        for(let index in this.typeList) {
          let typeItem = this.typeList[index];
          if(typeItem.id == typeId) {
            return typeItem.titleZh;
          }
        }
      }
    },
333
    // 根据状态获取状态名称 ,这个应该可以改成字典,目前接口缺少相关数据,待定
334 335 336 337 338 339 340 341
    statusName() {
      return row => {
        if(row.blacklist) return '黑名单';
        if(row.auditStatus === AuditStatusEnum.PASS) return '已审核';
        return '已下架';
      }
    },

342
    // 根据运输方式获取名称
wanglianghe's avatar
wanglianghe committed
343 344
    transportName() {
      return transportType => {
345
        return this.getDictDataLabel(this.DICT_TYPE.ECW_TRANSPORT_TYPE, transportType)
wanglianghe's avatar
wanglianghe committed
346 347
      }
    },
348
    // 显示币种符号
wanglianghe's avatar
wanglianghe committed
349 350 351 352 353 354 355 356 357 358
    getCurrencySymbol() {
      return currencyId => {
        for(let index in this.currecyList) {
          let currecyItem = this.currecyList[index];
          if(currecyItem.id == currencyId) {
            return currecyItem.fuhao;
          }
        }
      }
    },
359
    // 显示币种名称
wanglianghe's avatar
wanglianghe committed
360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381
    getCurrencyTitle() {
      return currencyId => {
        for(let index in this.currecyList) {
          let currecyItem = this.currecyList[index];
          if(currecyItem.id == currencyId) {
            return currecyItem.titleZh;
          }
        }
      }
    },

    getUnitTitle() {
      return unitId => {
        for(let index in this.unitList) {
          let unitItem = this.unitList[index];
          if(unitItem.id == unitId) {
            return unitItem.titleZh;
          }
        }
      }
    },

382 383 384 385 386 387
    startCityList(){
      return this.cityList.filter(item => item.type == 2 || item.type == 3)
    },
    destCityList(){
      return this.cityList.filter(item => item.type == 1 || item.type == 3)
    },
wanglianghe's avatar
wanglianghe committed
388 389
  },

wanglianghe's avatar
wanglianghe committed
390
  activated() {
391
    /* console.log('activated', this.product.id)
392 393
    this.$set(this.queryParams, 'typeId', +this.$route.query.product_type || null)

394 395 396 397 398 399 400 401 402
    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() */
wanglianghe's avatar
wanglianghe committed
403
  },
404 405 406 407 408 409
  watch:{
    '$route.query.product_id'(){
      console.log(this.$route.query)
      if(!this.$route.query.product_id){
        return this.product = null
      }
410 411 412 413
      let productId = this.product?.id
      if(this.$route.query.product_id != productId){
        this.queryParams = {
          pageNo: 1,
dragondean@qq.com's avatar
dragondean@qq.com committed
414 415
          pageSize: 10,
          productId: this.$route.query.product_id
416
        }
417 418 419
        getProduct(this.$route.query.product_id).then(res => {
          this.product = res.data
        })
420
        this.handleQuery()
421 422 423
      }
    }
  },
424 425 426
  created() {
    if(this.$route.query.product_type){
      this.$set(this.queryParams, 'typeId', +this.$route.query.product_type);
wanglianghe's avatar
wanglianghe committed
427
    }
428 429
    // 指定产品获取产品信息
    if(this.$route.query.product_id){
dragondean@qq.com's avatar
dragondean@qq.com committed
430
      this.$set(this.queryParams, 'productId', +this.$route.query.product_id);
431 432 433
      getProduct(this.$route.query.product_id).then(res => {
        this.product = res.data
      })
dragondean@qq.com's avatar
dragondean@qq.com committed
434
    }else{      
435 436 437
      this.getAttrList();
    }
    
438
    //获取城市列表
dragondean@qq.com's avatar
dragondean@qq.com committed
439
    this.getAllCityList()
440
    this.getChannelList()
dragondean@qq.com's avatar
dragondean@qq.com committed
441
    this.getTypeList()
wanglianghe's avatar
wanglianghe committed
442 443 444 445 446
   
    //获取货币列表
    this.requestCurrencyList();
    //获取单位列表
    this.requestUnitList();
447 448 449 450

    this.$nextTick(() => {
      this.getList();
    })
wanglianghe's avatar
wanglianghe committed
451
  },
wanglianghe's avatar
wanglianghe committed
452 453 454



wanglianghe's avatar
wanglianghe committed
455
  methods: {
456 457 458
    getChannelList(){
      getChannelList().then(res => this.channelList = res.data)
    },
459 460 461 462 463 464 465
    /** 获取产品属性列表 */
    getAttrList() {
      getProductAttrList().then(response => {
          this.attrList = response.data;
      })
    },

wanglianghe's avatar
wanglianghe committed
466 467 468 469 470 471 472 473 474
     /** 获取产品类型列表 */
    getTypeList() {
      getProductTypeList().then(response => {
        this.typeList = response.data;
      })
    },

    /**获取所有城市列表 */
    getAllCityList() {
475 476
      getTradeCityList({}).then(response => {
          this.cityList = response.data;
wanglianghe's avatar
wanglianghe committed
477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525
      })
    },

    /**获取已开通路线列表 */
    getOpenedRouterList() {
        openedRouterList(this.routeParams).then(response => {
            this.routedList = response.data;
            this.setDefaultSelect();
        })
    },

    /**获取所有货币列表 */
    requestCurrencyList() {
      getCurrencyList().then(response => {
        this.currecyList = 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(() => {
dragondean@qq.com's avatar
dragondean@qq.com committed
526
        this.$modal.msgSuccess(this.$t("修改成功"));
wanglianghe's avatar
wanglianghe committed
527 528 529 530 531
      }).catch(function() {
        row.auditStatus = row.auditStatus === AuditStatusEnum.PASS ? AuditStatusEnum.NOT_PASS : AuditStatusEnum.PASS;
      });
    },

wanglianghe's avatar
wanglianghe committed
532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578
    /** 查询列表 */
    getList() {
      this.loading = true;
      // 处理查询参数
      let params = {...this.queryParams};
      this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
      // 执行查询
      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.getList();
    },
    /** 重置按钮操作 */
    resetQuery() {
      this.dateRangeCreateTime = [];
      this.resetForm("queryForm");
      this.handleQuery();
    },
    /** 新增按钮操作 */
    handleAdd() {
579
      return this.$router.push('../../lineProject/product-price/edit?' + (new URLSearchParams(this.$route.query)).toString())
580
      
wanglianghe's avatar
wanglianghe committed
581
    },
582
    // 批量修改单个商品的价格(一条或者多条,后者全部路线)
583
    batchSetSingleProductPrice(){
584
        this.$router.push('../../lineProject/product-price/edit?action=batchUpdate&product_id=' + this.$route.query.product_id + '&ids=' + this.ids)
585
    },
586
    // 批量设置路线
587
    handleBatchEdit() {
588
      this.$router.push('../../lineProject/batch-edit')
589
    },
wanglianghe's avatar
wanglianghe committed
590
    /** 修改按钮操作 */
dragondean@qq.com's avatar
dragondean@qq.com committed
591 592 593 594
    handleUpdate(row, readonly) {
      let url = '../../lineProject/product-price/edit?action=update&id=' + row.id
      if(readonly)url += '&readonly=1'
      return this.$router.push(url)
wanglianghe's avatar
wanglianghe committed
595
    },
wanglianghe's avatar
wanglianghe committed
596

597 598 599 600 601 602 603
    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(() => {
dragondean@qq.com's avatar
dragondean@qq.com committed
604
        this.$modal.msgSuccess(this.$t("修改成功"));
605 606 607 608 609 610 611 612 613 614
      }).catch(function() {
        if(statusType == 'blacklist') {
          row.blacklist = row.blacklist === 1 ? 0 : 1;
        } else {
          row.auditStatus = row.auditStatus === AuditStatusEnum.PASS ? AuditStatusEnum.NOT_PASS : AuditStatusEnum.PASS;
        }
        
      });
    },

wanglianghe's avatar
wanglianghe committed
615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630
    
    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);
    },

wanglianghe's avatar
wanglianghe committed
631 632 633 634 635 636
    /** 提交按钮 */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (!valid) {
          return;
        }
wanglianghe's avatar
wanglianghe committed
637 638

        if(!this.lineList || !this.lineList.length) {
dragondean@qq.com's avatar
dragondean@qq.com committed
639
            this.$message.error(this.$t('请选择线路'));
wanglianghe's avatar
wanglianghe committed
640 641
            return;
        }
642 643
        let lineChannelList = [];
        //TODO  ,lineChannelList实体空运的时候需要传出货渠道ID--shippingChannelId
wanglianghe's avatar
wanglianghe committed
644
        this.lineList.map((item) => {
645
            lineChannelList.push({lineId: item.id});
wanglianghe's avatar
wanglianghe committed
646 647
            return item;
        });
648
        this.form.lineChannelList = lineChannelList;
wanglianghe's avatar
wanglianghe committed
649

wanglianghe's avatar
wanglianghe committed
650 651 652
        // 修改的提交
        if (this.form.id != null) {
          updateProductPrice(this.form).then(response => {
dragondean@qq.com's avatar
dragondean@qq.com committed
653
            this.$modal.msgSuccess(this.$t("修改成功"));
wanglianghe's avatar
wanglianghe committed
654 655 656 657 658 659
            this.open = false;
            this.getList();
          });
          return;
        }
        // 添加的提交
wanglianghe's avatar
wanglianghe committed
660
        this.form.productId = this.product.id;
wanglianghe's avatar
wanglianghe committed
661
        createProductPrice(this.form).then(response => {
dragondean@qq.com's avatar
dragondean@qq.com committed
662
          this.$modal.msgSuccess(this.$t("请求成功"));
wanglianghe's avatar
wanglianghe committed
663 664 665 666 667 668 669 670
          this.open = false;
          this.getList();
        });
      });
    },
    /** 删除按钮操作 */
    handleDelete(row) {
      const id = row.id;
dragondean@qq.com's avatar
dragondean@qq.com committed
671
      this.$modal.confirm(this.$t('是否确认删除产品价格编号为{id}的数据项?', {id})).then(function() {
wanglianghe's avatar
wanglianghe committed
672 673 674
          return deleteProductPrice(id);
        }).then(() => {
          this.getList();
dragondean@qq.com's avatar
dragondean@qq.com committed
675
          this.$modal.msgSuccess(this.$t("删除成功"));
wanglianghe's avatar
wanglianghe committed
676 677 678 679 680 681 682 683 684 685
        }).catch(() => {});
    },
    /** 导出按钮操作 */
    handleExport() {
      // 处理查询参数
      let params = {...this.queryParams};
      params.pageNo = undefined;
      params.pageSize = undefined;
      this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
      // 执行导出
dragondean@qq.com's avatar
dragondean@qq.com committed
686
      this.$modal.confirm(this.$t('是否确认导出所有产品价格数据项?')).then(() => {
wanglianghe's avatar
wanglianghe committed
687 688 689 690 691 692
          this.exportLoading = true;
          return exportProductPriceExcel(params);
        }).then(response => {
          this.$download.excel(response, '${table.classComment}.xls');
          this.exportLoading = false;
        }).catch(() => {});
693 694 695 696 697 698
    },
    // 表格多选
    handleSelectionChange(selection) {
      this.ids = selection.map(item => item.id)
      this.single = selection.length !== 1
      this.multiple = !selection.length
699 700 701
    },
    batchBlock(){
      batchBlock({ids: this.ids.join(',')}).then(res => {
dragondean@qq.com's avatar
dragondean@qq.com committed
702
        this.$message.success(res.msg || this.$t('操作成功'))
703 704 705 706 707
        this.handleQuery()
      })
    },
    batchOff(){
      batchOff({ids: this.ids.join(',')}).then(res => {
dragondean@qq.com's avatar
dragondean@qq.com committed
708
        this.$message.success(res.msg || this.$t('操作成功'))
709 710 711 712
        this.handleQuery()
      })
    },
    
wanglianghe's avatar
wanglianghe committed
713 714 715
  }
};
</script>
wanglianghe's avatar
wanglianghe committed
716