index.vue 11.7 KB
Newer Older
1 2 3 4 5
<template>
  <div class="app-container">

    <!-- 搜索工作栏 -->
    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
dcy's avatar
dcy committed
6
      <el-form-item :label="$t('客户名称')" prop="customerId" >
dcy's avatar
dcy committed
7
        <el-select
dcy's avatar
dcy committed
8 9
          :remote-method="customerDropDownFn"
          remote
dcy's avatar
dcy committed
10 11 12
          clearable
          filterable
          v-model="queryParams.customerId"
dcy's avatar
dcy committed
13
          :placeholder="$t('请输入关键词')">
dcy's avatar
dcy committed
14
          <el-option
dcy's avatar
dcy committed
15 16
            v-for="(item, index) in customerNameFn"
            :key="item.id"
dcy's avatar
dcy committed
17 18 19 20 21
            :value="item.id"
            :label="item.name"
          >
          </el-option>
        </el-select>
22
      </el-form-item>
dcy's avatar
dcy committed
23 24
      <el-form-item :label="$t('联系电话')" prop="type">
        <el-input v-model="queryParams.defaultContactPhone" :placeholder="$t('请输入电话')" clearable size="small">
25 26
        </el-input>
      </el-form-item>
dcy's avatar
dcy committed
27
      <el-form-item :label="$t('佣金类型')" prop="transportId">
28
        <el-select v-model="queryParams.type"  clearable size="small">
dcy's avatar
dcy committed
29
          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.COMMISSION_TYPE)"
30
                       :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="dict.value"/>
31 32
        </el-select>
      </el-form-item>
dcy's avatar
dcy committed
33
      <el-form-item :label="$t('运输方式')" prop="departureId">
34
        <el-select v-model="queryParams.departureId"  clearable size="small">
dcy's avatar
dcy committed
35
          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.ECW_TRANSPORT_TYPE)"
36
                     :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="dict.value"/>
37 38
        </el-select>
      </el-form-item>
dcy's avatar
dcy committed
39
      <el-form-item :label="$t('始发地')" prop="objectiveId">
40
        <el-select v-model="queryParams.objectiveId"  clearable size="small">
dcy's avatar
dcy committed
41
          <el-option v-for="dict in exportCityList"
42
                     :key="dict.id" :label=" isChinese ? dict.titleZh : dict.titleEn" :value="dict.id"/>
43 44
        </el-select>
      </el-form-item>
dcy's avatar
dcy committed
45
      <el-form-item :label="$t('目的地')" prop="customsType">
46
        <el-select v-model="queryParams.customsType"  clearable size="small">
dcy's avatar
dcy committed
47 48
          <el-option v-for="dict in importCityList"
                     :key="dict.id" :label="dict.titleZh" :value="dict.id"/>
49 50
        </el-select>
      </el-form-item>
dcy's avatar
dcy committed
51
      <el-form-item :label="$t('报关方式')" prop="approval">
52
        <el-select v-model="queryParams.approval" clearable size="small">
dcy's avatar
dcy committed
53
          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.SHIPPING_DECLARATION_TYPE)"
54
                       :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="dict.value"/>
55 56
        </el-select>
      </el-form-item>
dcy's avatar
dcy committed
57
      <el-form-item :label="$t('备案')" prop="darkReturnType">
58
        <el-select v-model="queryParams.darkReturnType"  clearable size="small">
dcy's avatar
dcy committed
59
          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.COMMISSION_PRODUCT_APPROVAL)"
60
                       :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="dict.value"/>
61 62 63 64
        </el-select>
      </el-form-item>
        <div style="width:100%;display: flex;justify-content: space-between;margin-bottom: 50px;">
          <div style="flex: 1">
dcy's avatar
dcy committed
65 66
            <el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button>
            <el-button icon="el-icon-refresh" @click="resetQuery">{{$t('重置')}}</el-button></div>
邓春圆's avatar
邓春圆 committed
67
          <div style="flex: 1; text-align: right;" v-has-permi="['ecw:customer:commission-set']">
68
            <router-link :to="'/customerCommissionInfo/'+ 0 ">
dcy's avatar
dcy committed
69
              <el-button type="primary">{{$t('佣金设置')}}</el-button>
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
            </router-link>
          </div>
        </div>
    </el-form>

    <!-- 操作工具栏 -->
    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>

    <!-- 列表 -->
    <el-table v-loading="loading" :data="list">
      <el-table-column
        type="selection"
        width="55">
      </el-table-column>
88
      <el-table-column :label="$t('佣金编码')" align="center" prop="id" />
dcy's avatar
dcy committed
89
      <el-table-column :label="$t('客户名称')" align="center" prop="customerName" show-overflow-tooltip >
90
      </el-table-column>
dcy's avatar
dcy committed
91
      <el-table-column :label="$t('联系电话')" align="center" prop="transportId" show-overflow-tooltip >
92
        <template slot-scope="scope">
dcy's avatar
dcy committed
93
          <div>+{{scope.row.defaultContactPhoneAreaCode}}</div>
dcy's avatar
dcy committed
94
         <div>{{scope.row.defaultContactPhone}}</div>
95 96
        </template>
      </el-table-column>
dcy's avatar
dcy committed
97
      <el-table-column :label="$t('佣金类型')" type="" align="center" prop="type">
98
        <template slot-scope="scope">
dcy's avatar
dcy committed
99
          <dict-tag :type="DICT_TYPE.COMMISSION_TYPE" :value="scope.row.type" />
100 101
        </template>
      </el-table-column>
dcy's avatar
dcy committed
102
      <el-table-column :label="$t('暗佣返佣类型')" align="center" prop="darkReturnType">
103
        <template slot-scope="scope">
dcy's avatar
dcy committed
104
          <dict-tag :type="DICT_TYPE.COMMISSION_DARK_TYPE" :value="scope.row.darkReturnType" />
105 106
        </template>
      </el-table-column>
dcy's avatar
dcy committed
107
      <el-table-column :label="$t('运输方式')" align="center" prop="transportId">
108
        <template slot-scope="scope">
dcy's avatar
dcy committed
109
          <dict-tag v-if="scope.row.transportId !== -1" :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="scope.row.transportId" />
dcy's avatar
dcy committed
110
          <div v-else>{{$t('全部')}}</div>
111 112
        </template>
      </el-table-column>
dcy's avatar
dcy committed
113
      <el-table-column :label="$t('始发地/目的地')" align="center" prop="departureId" show-overflow-tooltip :formatter="originDestination">
dcy's avatar
dcy committed
114
      </el-table-column>
dcy's avatar
dcy committed
115
      <el-table-column :label="$t('报关方式')" align="center" prop="customsType" show-overflow-tooltip>
116
        <template slot-scope="scope">
dcy's avatar
dcy committed
117
          <dict-tag v-if="scope.row.customsType !==  -1" :type="DICT_TYPE.SHIPPING_DECLARATION_TYPE" :value="scope.row.customsType" />
dcy's avatar
dcy committed
118
          <div v-else>{{$t('全部')}}</div>
dcy's avatar
dcy committed
119 120
        </template>
      </el-table-column>
dcy's avatar
dcy committed
121
      <el-table-column :label="$t('备案')" align="center" prop="approval">
dcy's avatar
dcy committed
122
        <template slot-scope="scope">
dcy's avatar
dcy committed
123
          <dict-tag v-if="scope.row.approval !==  -1" :type="DICT_TYPE.COMMISSION_PRODUCT_APPROVAL" :value="scope.row.approval" />
dcy's avatar
dcy committed
124
          <div v-else>{{$t('全部')}}</div>
125 126
        </template>
      </el-table-column>
dcy's avatar
dcy committed
127
      <el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width" width="200px">
128
        <template slot-scope="scope">
邓春圆's avatar
邓春圆 committed
129 130
          <el-button v-has-permi="['ecw:customer:commission-query']" size="mini" type="text" icon="el-icon-view" @click="handleUpdate(scope.row)">{{ $t('查看') }}</el-button>
          <el-button v-has-permi="['ecw:customer:commission-delete']" size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)">{{$t('删除')}}</el-button>
131 132 133 134 135 136
        </template>
      </el-table-column>
    </el-table>
    <!-- 分页组件 -->
    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
                @pagination="getList"/>
137
x
138 139 140 141
  </div>
</template>

<script>
dcy's avatar
dcy committed
142 143 144
import {deleteCustomerCommission, getCustomerCommissionPage, exportCustomerCommissionExcel } from "@/api/ecw/customerCommission";
import {DICT_TYPE, getDictDatas} from "@/utils/dict";
import {getTradeCityList} from "@/api/ecw/region";
dcy's avatar
dcy committed
145
import {customerDropDownList} from "@/api/ecw/customerCommissionInfo";
dcy's avatar
dcy committed
146
import {getCustomerList} from "@/api/ecw/customer";
147 148

export default {
149 150 151 152
  name: "EcwCustomercommissionIndex",
  activated() {
   this.getList()
    },
153 154 155 156
  components: {
  },
  data() {
    return {
dcy's avatar
dcy committed
157 158 159
      DICT_TYPE,
      getDictDatas,
      tradeCityList:[],
160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
      // 遮罩层
      loading: true,
      // 导出遮罩层
      exportLoading: false,
      // 显示搜索条件
      showSearch: true,
      // 总条数
      total: 0,
      // 客户佣金类型列表
      list: [],
      // 弹出层标题
      title: "",
      // 是否显示弹出层
      open: false,
      // 查询参数
      queryParams: {
        pageNo: 1,
        pageSize: 10,
        customerId: null,//客户id
        type: null,//	佣金类型
        transportId: null,//	运输方式
        departureId: null,//始发地id
        objectiveId: null,//目的地id
        customsType: null,//报关类别
        approval: null,//产品备案
        darkReturnType: null,	//暗佣类型 1产品2达标
        defaultContactPhone:null,//主联系电话
      },
      // 表单参数
      form: {},
      // 表单校验
      rules: {
dcy's avatar
dcy committed
192 193 194
        customerId: [{ required: true, message: this.$t('客户id不能为空'), trigger: "change" }],
        type: [{ required: true, message: this.$t('佣金类型不能为空'), trigger: "change" }],
        darkReturnType: [{ required: true, message: this.$t('暗佣类型 1产品2达标不能为空'), trigger: "change" }],
dcy's avatar
dcy committed
195 196
      },
      customeList:[],
dcy's avatar
dcy committed
197
      selectCustomeList:[]
198 199
    };
  },
dcy's avatar
dcy committed
200
  computed:{
201 202 203
    isChinese(){
      return this.$i18n.locale === 'zh_CN'
    },
dcy's avatar
dcy committed
204 205 206 207 208 209 210 211
    //目的地
    importCityList(){
      return this.tradeCityList.filter(item => item.type == 1)
    },
    //始发地
    exportCityList(){
      return this.tradeCityList.filter(item => item.type == 2)
    },
dcy's avatar
dcy committed
212 213 214 215 216 217 218 219 220
    customerNameFn(){
      if(this.selectCustomeList.length > 0){
        let i = this.customeList.findIndex(item => item.id === this.selectCustomeList[0].id)
        if(i < 0){
          this.customeList.unshift(this.selectCustomeList[0])
        }
      }
      return  this.customeList
    }
dcy's avatar
dcy committed
221
  },
222
  created() {
dcy's avatar
dcy committed
223
    this.customerDropDownFn()
224
    if(this.$route.query.customerId){
dcy's avatar
dcy committed
225
        this.queryParams.customerId = Number(this.$route.query.customerId)
dcy's avatar
dcy committed
226 227 228 229
       getCustomerList({ids:this.queryParams.customerId}).then(r =>{
         console.log(r,'rrr');
        this.selectCustomeList = r.data
      })
230
    }
231
    this.getList();
dcy's avatar
dcy committed
232 233 234
    getTradeCityList().then(res => {
      this.tradeCityList = res.data
    })
235 236
  },
  methods: {
dcy's avatar
dcy committed
237 238 239 240 241 242 243
    customerDropDownFn(val){
      customerDropDownList({pageNo:1,pageSize: 100,searchKey:val}).then(res => {
        if (res.code === 0) {
          this.customeList = res.data.list
        }
      })
    },
244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265
    /** 查询列表 */
    getList() {
      this.loading = true;
      // 处理查询参数
      let params = {...this.queryParams};
      // 执行查询
      getCustomerCommissionPage(params).then(response => {
        this.list = response.data.list;
        this.total = response.data.total;
        this.loading = false;
      });
    },
    /** 搜索按钮操作 */
    handleQuery() {
      this.queryParams.pageNo = 1;
      this.getList();
    },
    /** 重置按钮操作 */
    resetQuery() {
      this.resetForm("queryForm");
      this.handleQuery();
    },
266
    /** 查看按钮操作 */
267
    handleUpdate(row) {
268 269 270
      const customerId = row.customerId;
      const id = row.id;
      this.$router.push(`/customerCommissionInfo/${customerId}/${id}`)
271 272 273 274
    },
    /** 删除按钮操作 */
    handleDelete(row) {
      const id = row.id;
dcy's avatar
dcy committed
275
      this.$modal.confirm(this.$t('是否确认删除客户佣金类型编号为"') + id + this.$t('"的数据项?')).then(function() {
276 277 278 279 280 281
          return deleteCustomerCommission(id);
        }).then(() => {
          this.getList();
          this.$modal.msgSuccess("删除成功");
        }).catch(() => {});
    },
dcy's avatar
dcy committed
282
    originDestination(row){
dcy's avatar
dcy committed
283

dcy's avatar
dcy committed
284 285
      let index1 = this.exportCityList.findIndex(item =>item.id == row.departureId);
      let index2 = this.importCityList.findIndex(item => item.id == row.objectiveId);
邓春圆's avatar
邓春圆 committed
286 287

      let flag = `${index1 === -1 ? this.$t('全部') : this.$i18n.locale === 'zh_CN' ? this.exportCityList[index1].titleZh : this.exportCityList[index1].titleEn}/${index2 === -1 ? this.$t('全部') :this.$i18n.locale === 'zh_CN'? this.importCityList[index2].titleZh : this.importCityList[index2].titleEn }`;
dcy's avatar
dcy committed
288 289
       return flag
    },
290 291 292
  }
};
</script>