index.vue 13.5 KB
Newer Older
wanglianghe's avatar
wanglianghe committed
1 2 3 4
<template>
  <div class="app-container">

    <!-- 搜索工作栏 -->
dragondean@qq.com's avatar
dragondean@qq.com committed
5
    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
dragondean@qq.com's avatar
dragondean@qq.com committed
6 7
      <el-form-item :label="$t('公司名称')" prop="companyZh">
        <el-input v-model="queryParams.companyZh" :placeholder="$t('请输入公司名称')" clearable @keyup.enter.native="handleQuery"/>
wanglianghe's avatar
wanglianghe committed
8
      </el-form-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
9 10
      <el-form-item :label="$t('英文名称')" prop="companyEn">
        <el-input v-model="queryParams.companyEn" :placeholder="$t('请输入英文名称')" clearable @keyup.enter.native="handleQuery"/>
wanglianghe's avatar
wanglianghe committed
11
      </el-form-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
12 13
      <el-form-item :label="$t('供应商代码')" prop="companyCode">
        <el-input v-model="queryParams.companyCode" :placeholder="$t('请输入供应商代码')" clearable @keyup.enter.native="handleQuery"/>
wanglianghe's avatar
wanglianghe committed
14
      </el-form-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
15 16
      <el-form-item :label="$t('代理商名称')" prop="agentName">
        <el-input v-model="queryParams.agentName" :placeholder="$t('请输入代理商名称')" clearable @keyup.enter.native="handleQuery"/>
wanglianghe's avatar
wanglianghe committed
17
      </el-form-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
18 19
      <el-form-item :label="$t('公司电话')" prop="tell">
        <el-input v-model="queryParams.tell" :placeholder="$t('请输入公司电话')" clearable @keyup.enter.native="handleQuery"/>
wanglianghe's avatar
wanglianghe committed
20
      </el-form-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
21 22
      <el-form-item :label="$t('国家')" prop="country">
        <el-input v-model="queryParams.country" :placeholder="$t('请输入国家')" clearable @keyup.enter.native="handleQuery"/>
wanglianghe's avatar
wanglianghe committed
23
      </el-form-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
24 25
      <el-form-item :label="$t('省')" prop="province">
        <el-input v-model="queryParams.province" :placeholder="$t('请输入省')" clearable @keyup.enter.native="handleQuery"/>
wanglianghe's avatar
wanglianghe committed
26
      </el-form-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
27 28
      <el-form-item :label="$t('市')" prop="city">
        <el-input v-model="queryParams.city" :placeholder="$t('请输入市')" clearable @keyup.enter.native="handleQuery"/>
wanglianghe's avatar
wanglianghe committed
29
      </el-form-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
30
      <!--el-form-item label="详细地址" prop="area">
wanglianghe's avatar
wanglianghe committed
31 32 33 34
        <el-input v-model="queryParams.area" placeholder="请输入详细地址" clearable @keyup.enter.native="handleQuery"/>
      </el-form-item>
      <el-form-item label="省市区+详细地址" prop="address">
        <el-input v-model="queryParams.address" placeholder="请输入省市区+详细地址" clearable @keyup.enter.native="handleQuery"/>
dragondean@qq.com's avatar
dragondean@qq.com committed
35
      </el-form-item-->
dragondean@qq.com's avatar
dragondean@qq.com committed
36 37
      <el-form-item :label="$t('备注')" prop="remark">
        <el-input v-model="queryParams.remark" :placeholder="$t('请输入备注')" clearable @keyup.enter.native="handleQuery"/>
wanglianghe's avatar
wanglianghe committed
38
      </el-form-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
39
      <el-form-item :label="$t('供应商类别')" prop="companyType">
dragondean@qq.com's avatar
dragondean@qq.com committed
40
        <!--el-select v-model="queryParams.companyType" placeholder="请选择供应商类别" clearable size="small">
wanglianghe's avatar
wanglianghe committed
41
          <el-option label="请选择字典生成" value="" />
dragondean@qq.com's avatar
dragondean@qq.com committed
42 43 44 45 46
        </el-select-->
        <!--el-select v-model="form.code" placeholder="请选择渠道编码" clearable>
            <el-option v-for="dict in this.getDictDatas('company_type')"
                      :key="dict.value" :label="dict.label" :value="dict.value"/>
        </el-select-->
47
        <dict-selector :type="DICT_TYPE.COMPANY_TYPE" v-model="queryParams.companyType" />
wanglianghe's avatar
wanglianghe committed
48
      </el-form-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
49
      <el-form-item :label="$t('合作类型')" prop="cooperationType">
50
        <dict-selector :type="DICT_TYPE.ECW_COOPERATION_TYPE" v-model="queryParams.cooperationType" />
dragondean@qq.com's avatar
dragondean@qq.com committed
51
        <!--el-select v-model="queryParams.cooperationType" placeholder="请选择合作类型" clearable size="small">
wanglianghe's avatar
wanglianghe committed
52
          <el-option label="请选择字典生成" value="" />
dragondean@qq.com's avatar
dragondean@qq.com committed
53
        </el-select-->
wanglianghe's avatar
wanglianghe committed
54
      </el-form-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
55 56
      <el-form-item :label="$t('营业执照')" prop="license">
        <el-input v-model="queryParams.license" :placeholder="$t('请输入营业执照')" clearable @keyup.enter.native="handleQuery"/>
wanglianghe's avatar
wanglianghe committed
57
      </el-form-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
58 59
      <el-form-item :label="$t('合同')" prop="contract">
        <el-input v-model="queryParams.contract" :placeholder="$t('请输入合同')" clearable @keyup.enter.native="handleQuery"/>
wanglianghe's avatar
wanglianghe committed
60
      </el-form-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
61 62
      <el-form-item :label="$t('统一信用代码')" prop="licenseNumber">
        <el-input v-model="queryParams.licenseNumber" :placeholder="$t('请输入社会信用统一代码')" clearable @keyup.enter.native="handleQuery"/>
wanglianghe's avatar
wanglianghe committed
63
      </el-form-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
64
      <el-form-item :label="$t('是否展示')" prop="status">
dragondean@qq.com's avatar
dragondean@qq.com committed
65
        <!-- <el-select v-model="queryParams.status" placeholder="请选择是否展示 默认为展示" clearable size="small">
wanglianghe's avatar
wanglianghe committed
66
          <el-option label="请选择字典生成" value="" />
dragondean@qq.com's avatar
dragondean@qq.com committed
67
        </el-select> -->
68
        <dict-selector :type="DICT_TYPE.ECW_YES_NO" v-model="queryParams.status" />
wanglianghe's avatar
wanglianghe committed
69
      </el-form-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
70
      <el-form-item :label="$t('创建时间')">
wanglianghe's avatar
wanglianghe committed
71
        <el-date-picker v-model="dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd"
dragondean@qq.com's avatar
dragondean@qq.com committed
72
                        type="daterange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" />
wanglianghe's avatar
wanglianghe committed
73 74
      </el-form-item>
      <el-form-item>
dragondean@qq.com's avatar
dragondean@qq.com committed
75 76
        <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
77 78 79 80 81 82 83
      </el-form-item>
    </el-form>

    <!-- 操作工具栏 -->
    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
dragondean@qq.com's avatar
dragondean@qq.com committed
84
                   v-hasPermi="['ecw:supplier:create']">{{$t('新增')}}</el-button>
wanglianghe's avatar
wanglianghe committed
85 86 87
      </el-col>
      <el-col :span="1.5">
        <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
dragondean@qq.com's avatar
dragondean@qq.com committed
88
                   v-hasPermi="['ecw:supplier:export']">{{$t('导出')}}</el-button>
wanglianghe's avatar
wanglianghe committed
89 90 91 92 93 94 95
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>

    <!-- 列表 -->
    <el-table v-loading="loading" :data="list">
      <el-table-column label="" align="center" prop="id" />
dragondean@qq.com's avatar
dragondean@qq.com committed
96
      <el-table-column :label="$t('公司名称')" align="center" prop="companyZh" />
dragondean@qq.com's avatar
dragondean@qq.com committed
97
      <!--el-table-column label="英文名称" align="center" prop="companyEn" /-->
dragondean@qq.com's avatar
dragondean@qq.com committed
98 99 100 101 102 103 104 105 106 107
      <el-table-column :label="$t('供应商代码')" align="center" prop="companyCode" />
      <el-table-column :label="$t('代理商名称')" align="center" prop="agentName" />
      <el-table-column :label="$t('公司电话')" align="center" prop="tell" />
      <el-table-column :label="$t('国家')" align="center" prop="country" />
      <el-table-column :label="$t('省')" align="center" prop="province" />
      <el-table-column :label="$t('市')" align="center" prop="city" />
      <el-table-column :label="$t('区')" align="center" prop="area" />
      <el-table-column :label="$t('详细地址')" align="center" prop="address" />
      <el-table-column :label="$t('备注')" align="center" prop="remark" />
      <el-table-column :label="$t('供应商类别')" align="center" prop="companyType" >
dragondean@qq.com's avatar
dragondean@qq.com committed
108 109 110 111 112 113
        <template slot-scope="{row}">
          <template v-for="type in row.companyType.split(',')">
            <dict-tag type="company_type" :value="type" :key="type" />
          </template>
        </template>
      </el-table-column>
dragondean@qq.com's avatar
dragondean@qq.com committed
114
      <el-table-column :label="$t('合作类型')" align="center" prop="cooperationType">
dragondean@qq.com's avatar
dragondean@qq.com committed
115 116 117 118 119 120
        <template slot-scope="{row}">
          <dict-tag type="cooperation_type" :value="row.cooperationType" />
        </template>
      </el-table-column>
      <!-- <el-table-column label="营业执照" align="center" prop="license" />
      <el-table-column label="合同" align="center" prop="contract" /> -->
dragondean@qq.com's avatar
dragondean@qq.com committed
121 122 123
      <el-table-column :label="$t('统一信用代码')" align="center" prop="licenseNumber" />
      <el-table-column :label="$t('是否展示')" align="center" prop="status" />
      <el-table-column :label="$t('创建时间')" align="center" prop="createTime" width="180">
wanglianghe's avatar
wanglianghe committed
124 125 126 127
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.createTime) }}</span>
        </template>
      </el-table-column>
dragondean@qq.com's avatar
dragondean@qq.com committed
128
      <el-table-column fixed="right" :label="$t('操作')" align="center" class-name="small-padding fixed-width">
wanglianghe's avatar
wanglianghe committed
129 130
        <template slot-scope="scope">
          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
dragondean@qq.com's avatar
dragondean@qq.com committed
131
                     v-hasPermi="['ecw:supplier:update']">{{$t('修改')}}</el-button>
wanglianghe's avatar
wanglianghe committed
132
          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
dragondean@qq.com's avatar
dragondean@qq.com committed
133
                     v-hasPermi="['ecw:supplier:delete']">{{$t('删除')}}</el-button>
wanglianghe's avatar
wanglianghe committed
134 135 136 137 138 139 140 141 142 143 144 145
        </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>
import { createSupplier, updateSupplier, deleteSupplier, getSupplier, getSupplierPage, exportSupplierExcel } from "@/api/ecw/supplier";
dragondean@qq.com's avatar
dragondean@qq.com committed
146
// import DictSelector from '@/components/DictSelector'
wanglianghe's avatar
wanglianghe committed
147 148 149
export default {
  name: "Supplier",
  components: {
dragondean@qq.com's avatar
dragondean@qq.com committed
150
    // DictSelector
wanglianghe's avatar
wanglianghe committed
151 152 153 154 155 156 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 189 190 191 192 193 194
  },
  data() {
    return {
      // 遮罩层
      loading: true,
      // 导出遮罩层
      exportLoading: false,
      // 显示搜索条件
      showSearch: true,
      // 总条数
      total: 0,
      // 供应商列表
      list: [],
      // 弹出层标题
      title: "",
      // 是否显示弹出层
      open: false,
      dateRangeCreateTime: [],
      // 查询参数
      queryParams: {
        pageNo: 1,
        pageSize: 10,
        companyZh: null,
        companyEn: null,
        companyCode: null,
        agentName: null,
        tell: null,
        country: null,
        province: null,
        city: null,
        area: null,
        address: null,
        remark: null,
        companyType: null,
        cooperationType: null,
        license: null,
        contract: null,
        licenseNumber: null,
        status: null,
      },
      // 表单参数
      form: {},
      // 表单校验
      rules: {
dragondean@qq.com's avatar
dragondean@qq.com committed
195 196 197
        companyZh: [{ required: true, message: this.$t("公司名称不能为空"), trigger: "blur" }],
        companyType: [{ required: true, message: this.$t("供应商类别不能为空"), trigger: "change" }],
        cooperationType: [{ required: true, message: this.$t("合作类型不能为空"), trigger: "change" }],
wanglianghe's avatar
wanglianghe committed
198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259
      }
    };
  },
  created() {
    this.getList();
  },
  methods: {
    /** 查询列表 */
    getList() {
      this.loading = true;
      // 处理查询参数
      let params = {...this.queryParams};
      this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
      // 执行查询
      getSupplierPage(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,
        companyZh: undefined,
        companyEn: undefined,
        companyCode: undefined,
        agentName: undefined,
        tell: undefined,
        country: undefined,
        province: undefined,
        city: undefined,
        area: undefined,
        address: undefined,
        remark: undefined,
        companyType: undefined,
        cooperationType: undefined,
        license: undefined,
        contract: undefined,
        licenseNumber: undefined,
        status: undefined,
      };
      this.resetForm("form");
    },
    /** 搜索按钮操作 */
    handleQuery() {
      this.queryParams.pageNo = 1;
      this.getList();
    },
    /** 重置按钮操作 */
    resetQuery() {
      this.dateRangeCreateTime = [];
      this.resetForm("queryForm");
      this.handleQuery();
    },
    /** 新增按钮操作 */
    handleAdd() {
dragondean@qq.com's avatar
dragondean@qq.com committed
260
      return this.$router.push('/supplier/edit')
wanglianghe's avatar
wanglianghe committed
261 262 263 264 265
    },
    /** 修改按钮操作 */
    handleUpdate(row) {
      this.reset();
      const id = row.id;
dragondean@qq.com's avatar
dragondean@qq.com committed
266 267
      return this.$router.push('edit?id=' + id)
      
wanglianghe's avatar
wanglianghe committed
268 269 270 271 272 273 274 275 276 277
    },
    /** 提交按钮 */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (!valid) {
          return;
        }
        // 修改的提交
        if (this.form.id != null) {
          updateSupplier(this.form).then(response => {
dragondean@qq.com's avatar
dragondean@qq.com committed
278
            this.$modal.msgSuccess(this.$t("修改成功"));
wanglianghe's avatar
wanglianghe committed
279 280 281 282 283 284 285
            this.open = false;
            this.getList();
          });
          return;
        }
        // 添加的提交
        createSupplier(this.form).then(response => {
dragondean@qq.com's avatar
dragondean@qq.com committed
286
          this.$modal.msgSuccess(this.$t("新增成功"));
wanglianghe's avatar
wanglianghe committed
287 288 289 290 291 292 293 294
          this.open = false;
          this.getList();
        });
      });
    },
    /** 删除按钮操作 */
    handleDelete(row) {
      const id = row.id;
dragondean@qq.com's avatar
dragondean@qq.com committed
295
      this.$modal.confirm(this.$t('是否确认删除供应商编号为{id}的数据项?', {id})).then(function() {
wanglianghe's avatar
wanglianghe committed
296 297 298
          return deleteSupplier(id);
        }).then(() => {
          this.getList();
dragondean@qq.com's avatar
dragondean@qq.com committed
299
          this.$modal.msgSuccess(this.$t("删除成功"));
wanglianghe's avatar
wanglianghe committed
300 301 302 303 304 305 306 307 308 309
        }).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
310
      this.$modal.confirm(this.$t('是否确认导出所有供应商数据项?')).then(() => {
wanglianghe's avatar
wanglianghe committed
311 312 313 314 315 316 317 318 319 320
          this.exportLoading = true;
          return exportSupplierExcel(params);
        }).then(response => {
          this.$download.excel(response, '${table.classComment}.xls');
          this.exportLoading = false;
        }).catch(() => {});
    }
  }
};
</script>