index.vue 11.2 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 31 32
                       :key="dict.value" :label="dict.label" :value="dict.value"/>
        </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 36
          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.ECW_TRANSPORT_TYPE)"
                     :key="dict.value" :label="dict.label" :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 42
          <el-option v-for="dict in exportCityList"
                     :key="dict.id" :label="dict.titleZh" :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 55 56
                       :key="dict.value" :label="dict.label" :value="dict.value"/>
        </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 61 62 63 64
                       :key="dict.value" :label="dict.label" :value="dict.value"/>
        </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">
dcy's avatar
dcy committed
129
          <el-button size="mini" type="text" icon="el-icon-view" @click="handleUpdate(scope.row)">查看</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 198 199 200 201 202 203 204 205
  computed:{
    //目的地
    importCityList(){
      return this.tradeCityList.filter(item => item.type == 1)
    },
    //始发地
    exportCityList(){
      return this.tradeCityList.filter(item => item.type == 2)
    },
dcy's avatar
dcy committed
206 207 208 209 210 211 212 213 214
    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
215
  },
216
  created() {
dcy's avatar
dcy committed
217
    this.customerDropDownFn()
218
    if(this.$route.query.customerId){
dcy's avatar
dcy committed
219
        this.queryParams.customerId = Number(this.$route.query.customerId)
dcy's avatar
dcy committed
220 221 222 223
       getCustomerList({ids:this.queryParams.customerId}).then(r =>{
         console.log(r,'rrr');
        this.selectCustomeList = r.data
      })
224
    }
225
    this.getList();
dcy's avatar
dcy committed
226 227 228
    getTradeCityList().then(res => {
      this.tradeCityList = res.data
    })
229 230
  },
  methods: {
dcy's avatar
dcy committed
231 232 233 234 235 236 237
    customerDropDownFn(val){
      customerDropDownList({pageNo:1,pageSize: 100,searchKey:val}).then(res => {
        if (res.code === 0) {
          this.customeList = res.data.list
        }
      })
    },
238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259
    /** 查询列表 */
    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();
    },
260
    /** 查看按钮操作 */
261
    handleUpdate(row) {
262 263 264
      const customerId = row.customerId;
      const id = row.id;
      this.$router.push(`/customerCommissionInfo/${customerId}/${id}`)
265 266 267 268
    },
    /** 删除按钮操作 */
    handleDelete(row) {
      const id = row.id;
dcy's avatar
dcy committed
269
      this.$modal.confirm(this.$t('是否确认删除客户佣金类型编号为"') + id + this.$t('"的数据项?')).then(function() {
270 271 272 273 274 275
          return deleteCustomerCommission(id);
        }).then(() => {
          this.getList();
          this.$modal.msgSuccess("删除成功");
        }).catch(() => {});
    },
dcy's avatar
dcy committed
276
    originDestination(row){
dcy's avatar
dcy committed
277

dcy's avatar
dcy committed
278 279
      let index1 = this.exportCityList.findIndex(item =>item.id == row.departureId);
      let index2 = this.importCityList.findIndex(item => item.id == row.objectiveId);
dcy's avatar
dcy committed
280
      let flag = `${index1 === -1 ? this.$t('全部') : this.exportCityList[index1].titleZh}/${index2 === -1 ? this.$t('全部') : this.importCityList[index2].titleZh}`;
dcy's avatar
dcy committed
281 282
       return flag
    },
283 284 285
  }
};
</script>