index.vue 26.9 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
      </el-form-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
54
      <el-form-item :label="$t('状态')" prop="combStatus">
55 56 57
        <el-select v-model="queryParams.combStatus" :placeholder="$t('请选择状态')" clearable>
          <el-option :label="$t('未设置价格')" value="setPrice_1"></el-option>
          <el-option :label="$t('黑名单')" value="blacklist_1"></el-option>
dragondean@qq.com's avatar
dragondean@qq.com committed
58
        </el-select>
59
      </el-form-item>
60
  
wanglianghe's avatar
wanglianghe committed
61
      
wanglianghe's avatar
wanglianghe committed
62
      <el-form-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
63 64
        <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
65 66 67 68 69
      </el-form-item>
    </el-form>

    <!-- 操作工具栏 -->
    <el-row :gutter="10" class="mb8">
70 71
      <!--全部路线吗没有新增入口,指定商品的路线价格才有添加路线-->
      <el-col :span="1.5" v-if="$route.query.product_id">
dragondean@qq.com's avatar
dragondean@qq.com committed
72
        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['ecw:product-price:create']">{{$t('新建价格')}}</el-button>
73 74
      </el-col>
      <el-col :span="1.5">
75
        <!--未指定商品-->
dragondean@qq.com's avatar
dragondean@qq.com committed
76 77 78
        <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>
79

80
        <!--指定商品-->
dragondean@qq.com's avatar
dragondean@qq.com committed
81
        <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
82
      </el-col>
wanglianghe's avatar
wanglianghe committed
83
      <!-- <el-col :span="1.5">
wanglianghe's avatar
wanglianghe committed
84 85
        <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
86
      </el-col> -->
wanglianghe's avatar
wanglianghe committed
87 88 89 90
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>

    <!-- 列表 -->
91 92
    <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
93
      <el-table-column :label="$t('序号')" prop="id" width="50" />
wanglianghe's avatar
wanglianghe committed
94

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

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

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

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

dragondean@qq.com's avatar
dragondean@qq.com committed
125
      <el-table-column prop="tansportType" :label="$t('运输方式')" align="center" width="100">
wanglianghe's avatar
wanglianghe committed
126 127 128 129 130 131
          <template slot-scope="scope">
            <div>
              {{ transportName(scope.row.warehouseLineDO.transportType) }}
            </div>
          </template>
      </el-table-column>
dragondean@qq.com's avatar
dragondean@qq.com committed
132
      <el-table-column prop="tansportType" :label="$t('出货渠道')" align="center" width="100">
133 134 135 136 137 138
          <template slot-scope="{row}">
            <div>
              {{ channelName(row.shippingChannelId) }}
            </div>
          </template>
      </el-table-column>
dragondean@qq.com's avatar
dragondean@qq.com committed
139
      <el-table-column prop="startDestTitle" :label="$t('始发地') + '/' + $t('目的地')" align="center">
wanglianghe's avatar
wanglianghe committed
140 141 142 143 144 145 146 147 148
          <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
149
      <el-table-column prop="price" :label="$t('价格')" align="center">
wanglianghe's avatar
wanglianghe committed
150
          <template slot-scope="scope">
wanglianghe's avatar
wanglianghe committed
151
            <div v-if="scope.row.priceType == 0">
dragondean@qq.com's avatar
dragondean@qq.com committed
152
              {{$t('运费')}}:{{ getCurrencySymbol(scope.row.transportPriceUnit) + scope.row.transportPrice}}&nbsp; 
wanglianghe's avatar
wanglianghe committed
153 154
              {{ getCurrencyTitle(scope.row.transportPriceUnit) + '/' + getUnitTitle(scope.row.transportVolumeUnit)}}
              <br />
dragondean@qq.com's avatar
dragondean@qq.com committed
155
              {{$t('清关费')}}:{{ getCurrencySymbol(scope.row.clearancePriceUnit) + scope.row.clearancePrice}}&nbsp; 
wanglianghe's avatar
wanglianghe committed
156 157
              {{ getCurrencyTitle(scope.row.clearancePriceUnit) + '/' + getUnitTitle(scope.row.clearanceVolumeUnit)}}
            </div>
wanglianghe's avatar
wanglianghe committed
158 159 160 161
            <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
162 163 164
          </template>
      </el-table-column>

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

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

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

189
          <el-button size="mini" type="text" icon="el-icon-edit" @click="updateStatus(scope.row, 'blacklist')"
dragondean@qq.com's avatar
dragondean@qq.com committed
190
                    >{{ scope.row.blacklist == 0 ? $t('加入黑名单') : $t('移除黑名单') }}</el-button>
191
          <el-button size="mini" type="text" icon="el-icon-edit" @click="updateStatus(scope.row, 'auditStatus')"
dragondean@qq.com's avatar
dragondean@qq.com committed
192
                    >{{scope.row.auditStatus == AuditStatusEnum.PASS ? $t('下架') : $t('上架')}}</el-button>
193
          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
dragondean@qq.com's avatar
dragondean@qq.com committed
194
                     v-hasPermi="['ecw:product-price:delete']">{{$t('删除')}}</el-button>
wanglianghe's avatar
wanglianghe committed
195 196 197 198 199 200 201 202 203 204 205
        </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>
206
import { createProductPrice, updateProductPrice, deleteProductPrice, getProductPrice, getProductPricePage, exportProductPriceExcel, batchBlock, batchOff } from "@/api/ecw/productPrice";
wanglianghe's avatar
wanglianghe committed
207
import { openedRouterList } from "@/api/ecw/warehouse";
208
import { getTradeCityList } from "@/api/ecw/region";
wanglianghe's avatar
wanglianghe committed
209
import { getProductTypeList } from "@/api/ecw/productType";
210 211
import { getProductAttrList } from "@/api/ecw/productAttr";
import { getDictDatas, DICT_TYPE } from '@/utils/dict'
wanglianghe's avatar
wanglianghe committed
212 213 214
import { getCurrencyList } from '@/api/ecw/currency';
import { getUnitList } from '@/api/ecw/unit';
import { AuditStatusEnum} from '@/utils/constants'
215 216 217
import { getChannelList } from '@/api/ecw/channel';
import DictTag from '@/components/DictTag'
import {arrryToKeyedObjectBy} from '@/utils/index'
218
import { getProduct } from '@/api/ecw/product';
wanglianghe's avatar
wanglianghe committed
219 220 221
export default {
  name: "ProductPrice",
  components: {
222
    DictTag
wanglianghe's avatar
wanglianghe committed
223 224 225
  },
  data() {
    return {
226 227 228 229 230 231
      // 选中数组
      ids: [],
      // 非单个禁用
      single: true,
      // 非多个禁用
      multiple: true,
232 233
      //特性列表
      attrList:[],
wanglianghe's avatar
wanglianghe committed
234 235
      typeList: [],
      product: null,
236 237 238
      cityList: [],
      /* startCityList: [],  //始发地城市
      destCityList: [],   //目的地城市 */
wanglianghe's avatar
wanglianghe committed
239 240 241
      routedList: [],     //已开头路线列表
      currecyList: [],    //货币列表
      unitList: [],       //单位列表
242
      channelList:[] , // 渠道
wanglianghe's avatar
wanglianghe committed
243 244 245
      routeParams:{},    //路线搜索条件
      isUpdate: false,   //更新操作

246 247 248
      //货柜位置
      locationList:[],

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

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

  computed: {
308 309 310 311 312 313 314 315
    // 商品名称
    productTitle(){
      if(!this.product){
        return ''
      }
      return this.product.titleZh
    },
    // 渠道用id做键值
316 317 318
    keyedChannel(){
      return arrryToKeyedObjectBy(this.channelList, 'channelId')
    },
319
    // 根据渠道id获取渠道名
320 321 322 323 324
    channelName(){
      return id => {
        return this.keyedChannel[id] ? this.keyedChannel[id].nameZh : null
      }
    },
325
    // 根据类型获取类型名称
326 327 328 329 330
    getTypeName() {
      return typeId => {
        for(let index in this.typeList) {
          let typeItem = this.typeList[index];
          if(typeItem.id == typeId) {
331
            return this.$l(typeItem, 'title');
332 333 334 335
          }
        }
      }
    },
336
    // 根据状态获取状态名称 ,这个应该可以改成字典,目前接口缺少相关数据,待定
337 338
    statusName() {
      return row => {
339 340 341 342 343 344 345 346 347 348 349
        //判断价格是否过期
        let validateStartDate = row.validateStartDate;
        let validateEndDate = row.validateEndDate;
        let notSetPrice = false;
        let nowDate = new Date().getTime();
        if(validateStartDate && validateStartDate > nowDate) {
          notSetPrice = true;
        }
        if(validateEndDate && validateEndDate < nowDate) {
          notSetPrice = true;
        }
350 351 352 353
        let setPriceText = notSetPrice ? '(' + this.$t('未设置价格') + ')' : '';
        if(row.blacklist) return this.$t('黑名单') + setPriceText;
        if(row.auditStatus === AuditStatusEnum.PASS) return this.$t('已审核') + setPriceText;
        return this.$t('已下架') + setPriceText;
354 355 356
      }
    },

357
    // 根据运输方式获取名称
wanglianghe's avatar
wanglianghe committed
358 359
    transportName() {
      return transportType => {
360
        return this.getDictDataLabel(this.DICT_TYPE.ECW_TRANSPORT_TYPE, transportType)
wanglianghe's avatar
wanglianghe committed
361 362
      }
    },
363
    // 显示币种符号
wanglianghe's avatar
wanglianghe committed
364 365 366 367 368 369 370 371 372 373
    getCurrencySymbol() {
      return currencyId => {
        for(let index in this.currecyList) {
          let currecyItem = this.currecyList[index];
          if(currecyItem.id == currencyId) {
            return currecyItem.fuhao;
          }
        }
      }
    },
374
    // 显示币种名称
wanglianghe's avatar
wanglianghe committed
375 376 377 378 379
    getCurrencyTitle() {
      return currencyId => {
        for(let index in this.currecyList) {
          let currecyItem = this.currecyList[index];
          if(currecyItem.id == currencyId) {
380
            return this.$l(currecyItem, 'title');
wanglianghe's avatar
wanglianghe committed
381 382 383 384 385 386 387 388 389 390
          }
        }
      }
    },

    getUnitTitle() {
      return unitId => {
        for(let index in this.unitList) {
          let unitItem = this.unitList[index];
          if(unitItem.id == unitId) {
391
            return this.$l(unitItem, 'title');
wanglianghe's avatar
wanglianghe committed
392 393 394 395 396
          }
        }
      }
    },

397 398 399 400 401 402
    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
403 404
  },

wanglianghe's avatar
wanglianghe committed
405
  activated() {
406
    /* console.log('activated', this.product.id)
407 408
    this.$set(this.queryParams, 'typeId', +this.$route.query.product_type || null)

409 410 411 412 413 414 415 416 417
    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
418
  },
419 420 421 422 423 424
  watch:{
    '$route.query.product_id'(){
      console.log(this.$route.query)
      if(!this.$route.query.product_id){
        return this.product = null
      }
425 426 427 428
      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
429 430
          pageSize: 10,
          productId: this.$route.query.product_id
431
        }
432 433 434
        getProduct(this.$route.query.product_id).then(res => {
          this.product = res.data
        })
435
        this.handleQuery()
436 437 438
      }
    }
  },
439 440 441
  created() {
    if(this.$route.query.product_type){
      this.$set(this.queryParams, 'typeId', +this.$route.query.product_type);
wanglianghe's avatar
wanglianghe committed
442
    }
443 444
    // 指定产品获取产品信息
    if(this.$route.query.product_id){
dragondean@qq.com's avatar
dragondean@qq.com committed
445
      this.$set(this.queryParams, 'productId', +this.$route.query.product_id);
446 447 448
      getProduct(this.$route.query.product_id).then(res => {
        this.product = res.data
      })
dragondean@qq.com's avatar
dragondean@qq.com committed
449
    }else{      
450 451 452
      this.getAttrList();
    }
    
453
    //获取城市列表
dragondean@qq.com's avatar
dragondean@qq.com committed
454
    this.getAllCityList()
455
    this.getChannelList()
dragondean@qq.com's avatar
dragondean@qq.com committed
456
    this.getTypeList()
wanglianghe's avatar
wanglianghe committed
457 458 459 460 461
   
    //获取货币列表
    this.requestCurrencyList();
    //获取单位列表
    this.requestUnitList();
462 463 464 465

    this.$nextTick(() => {
      this.getList();
    })
wanglianghe's avatar
wanglianghe committed
466
  },
wanglianghe's avatar
wanglianghe committed
467 468 469



wanglianghe's avatar
wanglianghe committed
470
  methods: {
471 472 473
    getChannelList(){
      getChannelList().then(res => this.channelList = res.data)
    },
474 475 476 477 478 479 480
    /** 获取产品属性列表 */
    getAttrList() {
      getProductAttrList().then(response => {
          this.attrList = response.data;
      })
    },

wanglianghe's avatar
wanglianghe committed
481 482 483 484 485 486 487 488 489
     /** 获取产品类型列表 */
    getTypeList() {
      getProductTypeList().then(response => {
        this.typeList = response.data;
      })
    },

    /**获取所有城市列表 */
    getAllCityList() {
490 491
      getTradeCityList({}).then(response => {
          this.cityList = response.data;
wanglianghe's avatar
wanglianghe committed
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 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540
      })
    },

    /**获取已开通路线列表 */
    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
541
        this.$modal.msgSuccess(this.$t("修改成功"));
wanglianghe's avatar
wanglianghe committed
542 543 544 545 546
      }).catch(function() {
        row.auditStatus = row.auditStatus === AuditStatusEnum.PASS ? AuditStatusEnum.NOT_PASS : AuditStatusEnum.PASS;
      });
    },

wanglianghe's avatar
wanglianghe committed
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 579 580 581 582 583
    /** 查询列表 */
    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;
dragondean@qq.com's avatar
dragondean@qq.com committed
584 585 586 587 588 589
      this.queryParams.setPrice = undefined
      this.queryParams.blacklist = undefined
      if(this.queryParams.combStatus){
        let tmp = this.queryParams.combStatus.split('_')
        this.queryParams[tmp[0]] = tmp[1]
      }
wanglianghe's avatar
wanglianghe committed
590 591 592 593 594 595 596 597 598 599
      this.getList();
    },
    /** 重置按钮操作 */
    resetQuery() {
      this.dateRangeCreateTime = [];
      this.resetForm("queryForm");
      this.handleQuery();
    },
    /** 新增按钮操作 */
    handleAdd() {
600
      return this.$router.push('../../lineProject/product-price/edit?' + (new URLSearchParams(this.$route.query)).toString())
601
      
wanglianghe's avatar
wanglianghe committed
602
    },
603
    // 批量修改单个商品的价格(一条或者多条,后者全部路线)
604
    batchSetSingleProductPrice(){
605
        this.$router.push('../../lineProject/product-price/edit?action=batchUpdate&product_id=' + this.$route.query.product_id + '&ids=' + this.ids)
606
    },
607
    // 批量设置路线
608
    handleBatchEdit() {
609
      this.$router.push('../../lineProject/batch-edit')
610
    },
wanglianghe's avatar
wanglianghe committed
611
    /** 修改按钮操作 */
dragondean@qq.com's avatar
dragondean@qq.com committed
612 613 614 615
    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
616
    },
wanglianghe's avatar
wanglianghe committed
617

618 619 620 621 622 623 624
    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
625
        this.$modal.msgSuccess(this.$t("修改成功"));
626 627 628 629 630 631 632 633 634 635
      }).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
636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651
    
    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
652 653 654 655 656 657
    /** 提交按钮 */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (!valid) {
          return;
        }
wanglianghe's avatar
wanglianghe committed
658 659

        if(!this.lineList || !this.lineList.length) {
dragondean@qq.com's avatar
dragondean@qq.com committed
660
            this.$message.error(this.$t('请选择线路'));
wanglianghe's avatar
wanglianghe committed
661 662
            return;
        }
663 664
        let lineChannelList = [];
        //TODO  ,lineChannelList实体空运的时候需要传出货渠道ID--shippingChannelId
wanglianghe's avatar
wanglianghe committed
665
        this.lineList.map((item) => {
666
            lineChannelList.push({lineId: item.id});
wanglianghe's avatar
wanglianghe committed
667 668
            return item;
        });
669
        this.form.lineChannelList = lineChannelList;
wanglianghe's avatar
wanglianghe committed
670

wanglianghe's avatar
wanglianghe committed
671 672 673
        // 修改的提交
        if (this.form.id != null) {
          updateProductPrice(this.form).then(response => {
dragondean@qq.com's avatar
dragondean@qq.com committed
674
            this.$modal.msgSuccess(this.$t("修改成功"));
wanglianghe's avatar
wanglianghe committed
675 676 677 678 679 680
            this.open = false;
            this.getList();
          });
          return;
        }
        // 添加的提交
wanglianghe's avatar
wanglianghe committed
681
        this.form.productId = this.product.id;
wanglianghe's avatar
wanglianghe committed
682
        createProductPrice(this.form).then(response => {
dragondean@qq.com's avatar
dragondean@qq.com committed
683
          this.$modal.msgSuccess(this.$t("请求成功"));
wanglianghe's avatar
wanglianghe committed
684 685 686 687 688 689 690 691
          this.open = false;
          this.getList();
        });
      });
    },
    /** 删除按钮操作 */
    handleDelete(row) {
      const id = row.id;
dragondean@qq.com's avatar
dragondean@qq.com committed
692
      this.$modal.confirm(this.$t('是否确认删除产品价格编号为{id}的数据项?', {id})).then(function() {
wanglianghe's avatar
wanglianghe committed
693 694 695
          return deleteProductPrice(id);
        }).then(() => {
          this.getList();
dragondean@qq.com's avatar
dragondean@qq.com committed
696
          this.$modal.msgSuccess(this.$t("删除成功"));
wanglianghe's avatar
wanglianghe committed
697 698 699 700 701 702 703 704 705 706
        }).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
707
      this.$modal.confirm(this.$t('是否确认导出所有产品价格数据项?')).then(() => {
wanglianghe's avatar
wanglianghe committed
708 709 710 711 712 713
          this.exportLoading = true;
          return exportProductPriceExcel(params);
        }).then(response => {
          this.$download.excel(response, '${table.classComment}.xls');
          this.exportLoading = false;
        }).catch(() => {});
714 715 716 717 718 719
    },
    // 表格多选
    handleSelectionChange(selection) {
      this.ids = selection.map(item => item.id)
      this.single = selection.length !== 1
      this.multiple = !selection.length
720 721 722
    },
    batchBlock(){
      batchBlock({ids: this.ids.join(',')}).then(res => {
dragondean@qq.com's avatar
dragondean@qq.com committed
723
        this.$message.success(res.msg || this.$t('操作成功'))
724 725 726 727 728
        this.handleQuery()
      })
    },
    batchOff(){
      batchOff({ids: this.ids.join(',')}).then(res => {
dragondean@qq.com's avatar
dragondean@qq.com committed
729
        this.$message.success(res.msg || this.$t('操作成功'))
730 731 732 733
        this.handleQuery()
      })
    },
    
wanglianghe's avatar
wanglianghe committed
734 735 736
  }
};
</script>
wanglianghe's avatar
wanglianghe committed
737