index.vue 11.5 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>
67 68
          <div style="flex: 1; text-align: right;">
            <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">
Marcus's avatar
Marcus committed
129
          <el-button size="mini" type="text" icon="el-icon-view" @click="handleUpdate(scope.row)">{{ $t('查看') }}</el-button>
dcy's avatar
dcy committed
130
          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)">{{$t('删除')}}</el-button>
131 132 133 134 135 136 137 138 139 140 141
        </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>
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 149 150 151 152 153

export default {
  name: "CustomerCommission",
  components: {
  },
  data() {
    return {
dcy's avatar
dcy committed
154 155 156
      DICT_TYPE,
      getDictDatas,
      tradeCityList:[],
157 158 159 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
      // 遮罩层
      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
189 190 191
        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
192 193
      },
      customeList:[],
dcy's avatar
dcy committed
194
      selectCustomeList:[]
195 196
    };
  },
dcy's avatar
dcy committed
197
  computed:{
198 199 200
    isChinese(){
      return this.$i18n.locale === 'zh_CN'
    },
dcy's avatar
dcy committed
201 202 203 204 205 206 207 208
    //目的地
    importCityList(){
      return this.tradeCityList.filter(item => item.type == 1)
    },
    //始发地
    exportCityList(){
      return this.tradeCityList.filter(item => item.type == 2)
    },
dcy's avatar
dcy committed
209 210 211 212 213 214 215 216 217
    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
218
  },
219
  created() {
dcy's avatar
dcy committed
220
    this.customerDropDownFn()
221
    if(this.$route.query.customerId){
dcy's avatar
dcy committed
222
        this.queryParams.customerId = Number(this.$route.query.customerId)
dcy's avatar
dcy committed
223 224 225 226
       getCustomerList({ids:this.queryParams.customerId}).then(r =>{
         console.log(r,'rrr');
        this.selectCustomeList = r.data
      })
227
    }
228
    this.getList();
dcy's avatar
dcy committed
229 230 231
    getTradeCityList().then(res => {
      this.tradeCityList = res.data
    })
232 233
  },
  methods: {
dcy's avatar
dcy committed
234 235 236 237 238 239 240
    customerDropDownFn(val){
      customerDropDownList({pageNo:1,pageSize: 100,searchKey:val}).then(res => {
        if (res.code === 0) {
          this.customeList = res.data.list
        }
      })
    },
241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262
    /** 查询列表 */
    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();
    },
263
    /** 查看按钮操作 */
264
    handleUpdate(row) {
265 266 267
      const customerId = row.customerId;
      const id = row.id;
      this.$router.push(`/customerCommissionInfo/${customerId}/${id}`)
268 269 270 271
    },
    /** 删除按钮操作 */
    handleDelete(row) {
      const id = row.id;
dcy's avatar
dcy committed
272
      this.$modal.confirm(this.$t('是否确认删除客户佣金类型编号为"') + id + this.$t('"的数据项?')).then(function() {
273 274 275 276 277 278
          return deleteCustomerCommission(id);
        }).then(() => {
          this.getList();
          this.$modal.msgSuccess("删除成功");
        }).catch(() => {});
    },
dcy's avatar
dcy committed
279
    originDestination(row){
dcy's avatar
dcy committed
280

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

      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
285 286
       return flag
    },
287 288 289
  }
};
</script>