index.vue 12.7 KB
Newer Older
wanglianghe's avatar
wanglianghe committed
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="90px">
6

7 8
      <el-form-item :label="$t('提货点名称')" prop="titleZh">
        <el-input v-model="queryParams.titleZh" :placeholder="$t('请输入名称')" clearable @keyup.enter.native="handleQuery"/>
wanglianghe's avatar
wanglianghe committed
9 10
      </el-form-item>

11 12
      <el-form-item :label="$t('地区')" prop="countryId">
          <el-select v-model="queryParams.countryId" :placeholder="$t('请选择地区')" clearable>
13 14 15 16
            <el-option v-for="item in countryList" :key="item.id" :label="item.titleZh" :value="item.id"/>
          </el-select>
        </el-form-item>

17 18
      <!-- <el-form-item :label="$t('地区')" prop="countryId">
        <el-input v-model="queryParams.countryId" :placeholder="$t('请输入国家')" clearable @keyup.enter.native="handleQuery"/>
wanglianghe's avatar
wanglianghe committed
19
      </el-form-item> -->
20

21 22
      <el-form-item :label="$t('状态')" prop="status">
        <el-select v-model="queryParams.status" :placeholder="$t('请选择状态')" clearable>
wanglianghe's avatar
wanglianghe committed
23 24 25 26 27
          <el-option v-for="dict in statusDictDatas" :key="parseInt(dict.value)" :label="dict.label" :value="parseInt(dict.value)"/>
        </el-select>
      </el-form-item>

      <el-form-item>
28 29
        <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
30 31 32 33 34 35 36
      </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"
37
                   v-hasPermi="['ecw:pickup-loc:create']">{{$t('新增')}}</el-button>
wanglianghe's avatar
wanglianghe committed
38
      </el-col>
39
      <!-- <el-col :span="1.5">
wanglianghe's avatar
wanglianghe committed
40
        <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
41
                   v-hasPermi="['ecw:pickup-loc:export']">{{$t('导出')}}</el-button>
42
      </el-col> -->
wanglianghe's avatar
wanglianghe committed
43 44 45 46
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>

    <!-- 列表 -->
wanglianghe's avatar
wanglianghe committed
47
    <el-table v-loading="loading" :data="list" @sort-change="sortChange">
48
      <el-table-column :label="$t('序号')" type="index" width="50" />
49 50 51 52 53 54

      <el-table-column :label="$t('提货点名称')" align="center"  >
        <template v-slot="{row}">
          {{$l(row,'title')}}
        </template>
      </el-table-column>
55
      <el-table-column :label="$t('排序')" sortable="custom" align="center" prop="sort" />
wanglianghe's avatar
wanglianghe committed
56

57
      <el-table-column :label="$t('地区')" align="center" prop="countryId">
wanglianghe's avatar
wanglianghe committed
58 59 60 61
          <template slot-scope="scope">
              <span>{{ getCountryName(scope.row.countryId) }}</span>
          </template>
      </el-table-column>
62

63
      <el-table-column prop="status" :label="$t('状态')" width="100">
wanglianghe's avatar
wanglianghe committed
64 65 66 67
        <template slot-scope="scope">
          <el-switch v-model="scope.row.status" :active-value="CommonStatusEnum.ENABLE" :inactive-value="CommonStatusEnum.DISABLE" @change="handleStatusChange(scope.row)" />
        </template>
      </el-table-column>
68

69
      <el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width">
wanglianghe's avatar
wanglianghe committed
70 71
        <template slot-scope="scope">
          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
72
                     v-hasPermi="['ecw:pickup-loc:update']">{{$t('修改')}}</el-button>
wanglianghe's avatar
wanglianghe committed
73
          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
74
                     v-hasPermi="['ecw:pickup-loc:delete']">{{$t('删除')}}</el-button>
wanglianghe's avatar
wanglianghe committed
75 76 77 78 79 80 81 82 83 84 85 86
        </template>
      </el-table-column>

    </el-table>
    <!-- 分页组件 -->
    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
                @pagination="getList"/>

    <!-- 对话框(添加 / 修改) -->
    <el-dialog :title="title" :visible.sync="open" width="700px" append-to-body>
      <el-form ref="form" :model="form" :rules="rules" label-width="110px">

87
        <el-form-item :label="$t('地区')" prop="countryId">
wanglianghe's avatar
wanglianghe committed
88
            <el-radio-group v-model="form.countryId">
89
              <el-radio v-for="item in countryList" :key="item.id" :label="item.id">{{ $l(item, 'title') }}</el-radio>
wanglianghe's avatar
wanglianghe committed
90 91
            </el-radio-group>
        </el-form-item>
92

wanglianghe's avatar
wanglianghe committed
93

94 95
        <el-form-item :label="$t('名称')" prop="titleZh">
          <el-input v-model="form.titleZh" :placeholder="$t('请输入名称')" />
wanglianghe's avatar
wanglianghe committed
96
        </el-form-item>
97 98
        <el-form-item :label="$t('英文名称')" prop="titleEn">
          <el-input v-model="form.titleEn" :placeholder="$t('请输入英文名称')" />
wanglianghe's avatar
wanglianghe committed
99
        </el-form-item>
100 101
        <el-form-item :label="$t('工作时间')" prop="workTime">
          <el-input v-model="form.workTime" :placeholder="$t('请输入工作时间')" />
wanglianghe's avatar
wanglianghe committed
102
        </el-form-item>
103 104
        <el-form-item :label="$t('联系方式')" prop="contact">
          <el-input v-model="form.contact" :placeholder="$t('请输入联系方式')" />
wanglianghe's avatar
wanglianghe committed
105
        </el-form-item>
106 107
        <el-form-item :label="$t('提货点地址')" prop="address">
          <el-input v-model="form.address" :placeholder="$t('请输入提货点地址')" />
wanglianghe's avatar
wanglianghe committed
108
        </el-form-item>
109 110
        <el-form-item :label="$t('提货点信息')" prop="detailZh">
          <el-input v-model="form.detailZh" :placeholder="$t('请输入提货点信息')" />
wanglianghe's avatar
wanglianghe committed
111
        </el-form-item>
112 113
        <el-form-item :label="$t('英文提货点信息')" prop="detailEn">
          <el-input v-model="form.detailEn" :placeholder="$t('请输入提货点英文信息')" />
wanglianghe's avatar
wanglianghe committed
114
        </el-form-item>
115 116
        <el-form-item :label="$t('排序')" prop="sort">
          <el-input v-model="form.sort" :placeholder="$t('请输入排序')" type="number" />
wanglianghe's avatar
wanglianghe committed
117 118
        </el-form-item>

119 120 121
        <el-form-item :label="$t('状态')" prop="status">
          <el-select v-model="form.status" :placeholder="$t('请选择状态')">
            <el-option v-for="dict in statusDictDatas" :key="parseInt(dict.value)" :label="$l(dict, 'label')" :value="parseInt(dict.value)"/>
wanglianghe's avatar
wanglianghe committed
122 123 124 125 126
          </el-select>
        </el-form-item>

      </el-form>
      <div slot="footer" class="dialog-footer">
127 128
        <el-button type="primary" @click="submitForm">{{$t('确定')}}</el-button>
        <el-button @click="cancel">{{$t('取消')}}</el-button>
wanglianghe's avatar
wanglianghe committed
129 130 131 132 133 134 135 136 137 138
      </div>
    </el-dialog>
  </div>
</template>

<script>
import { createPickupLoc, updatePickupLoc, deletePickupLoc, getPickupLoc, getPickupLocPage, exportPickupLocExcel } from "@/api/ecw/pickupLoc";
import {CommonStatusEnum} from '@/utils/constants'
import { getDictDatas, DICT_TYPE } from '@/utils/dict'
import { getListTree } from "@/api/ecw/region";
139
import Template from "@/views/cms/template/index.vue";
wanglianghe's avatar
wanglianghe committed
140 141 142 143

export default {
  name: "PickupLoc",
  components: {
144
    Template
wanglianghe's avatar
wanglianghe committed
145 146 147 148 149 150 151 152 153 154 155 156 157
  },
  data() {
    return {
      // 遮罩层
      loading: true,
      // 导出遮罩层
      exportLoading: false,
      // 显示搜索条件
      showSearch: true,
      // 总条数
      total: 0,

      //国家信息列表
158
      countryList: [],
wanglianghe's avatar
wanglianghe committed
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

      // 自提点列表
      list: [],
      // 弹出层标题
      title: "",
      // 是否显示弹出层
      open: false,
      dateRangeWorkTime: [],
      dateRangeCreateTime: [],
      // 查询参数
      queryParams: {
        pageNo: 1,
        pageSize: 10,
        countryId: null,
        titleZh: null,
        titleEn: null,
        contact: null,
        address: null,
        detailZh: null,
        detailEn: null,
        sort: null,
        status: null,
      },
      // 表单参数
      form: {},
      // 表单校验
      rules: {
186 187 188
        countryId: [{ required: true, message: this.$t("地区不能为空"), trigger: "blur" }],
        titleZh: [{ required: true, message: this.$t("名称不能为空"), trigger: "blur" }],
        sort: [{ required: true, message: this.$t("排序不能为空"), trigger: "blur" }],
wanglianghe's avatar
wanglianghe committed
189 190 191 192 193
      },
       // 枚举
      CommonStatusEnum: CommonStatusEnum,
      // 数据字典
      statusDictDatas: getDictDatas(DICT_TYPE.COMMON_STATUS),
wanglianghe's avatar
wanglianghe committed
194 195 196

      sortProp: null,
      sortType: null,
wanglianghe's avatar
wanglianghe committed
197 198 199 200 201 202 203 204 205 206 207 208
    };
  },
  created() {
    this.getList();
    this.getCountryList();
  },
  methods: {
    /** 查询列表 */
    getList() {
      this.loading = true;
      // 处理查询参数
      let params = {...this.queryParams};
wanglianghe's avatar
wanglianghe committed
209 210
      params.sortProp = this.sortProp;
      params.sortType = this.sortType;
wanglianghe's avatar
wanglianghe committed
211 212 213 214 215 216 217 218 219 220
      this.addBeginAndEndTime(params, this.dateRangeWorkTime, 'workTime');
      this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
      // 执行查询
      getPickupLocPage(params).then(response => {
        this.list = response.data.list;
        this.total = response.data.total;
        this.loading = false;
      });
    },

wanglianghe's avatar
wanglianghe committed
221 222 223 224 225 226 227
    sortChange(obj) {
      this.sortProp = obj.prop;   //排序字段名称
      this.sortType = obj.order;   //排序方式
      this.queryParams.pageNo = 1;
      this.getList();
    },

wanglianghe's avatar
wanglianghe committed
228 229 230 231 232 233 234 235 236 237
    getCountryList() {
        this.queryParams.treeType = 1;
        getListTree(this.queryParams).then(response => {
          this.countryList = response.data;
      });
    },

    getCountryName(countryId) {
      for(let index in this.countryList) {
        let country = this.countryList[index];
238
        if(country.id == countryId) return this.$l(country, 'title');
wanglianghe's avatar
wanglianghe committed
239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279
      }
    },

    /** 取消按钮 */
    cancel() {
      this.open = false;
      this.reset();
    },
    /** 表单重置 */
    reset() {
      this.form = {
        id: undefined,
        countryId: undefined,
        titleZh: undefined,
        titleEn: undefined,
        workTime: undefined,
        contact: undefined,
        address: undefined,
        detailZh: undefined,
        detailEn: undefined,
        sort: undefined,
        status: undefined,
      };
      this.resetForm("form");
    },
    /** 搜索按钮操作 */
    handleQuery() {
      this.queryParams.pageNo = 1;
      this.getList();
    },
    /** 重置按钮操作 */
    resetQuery() {
      this.dateRangeWorkTime = [];
      this.dateRangeCreateTime = [];
      this.resetForm("queryForm");
      this.handleQuery();
    },
    /** 新增按钮操作 */
    handleAdd() {
      this.reset();
      this.open = true;
280
      this.title = this.$t("添加自提点");
wanglianghe's avatar
wanglianghe committed
281 282 283 284 285 286 287 288
    },
    /** 修改按钮操作 */
    handleUpdate(row) {
      this.reset();
      const id = row.id;
      getPickupLoc(id).then(response => {
        this.form = response.data;
        this.open = true;
289
        this.title = this.$t("修改自提点");
wanglianghe's avatar
wanglianghe committed
290 291 292 293
      });
    },

     handleStatusChange(row) {
294 295 296 297 298
      let text = row.status === CommonStatusEnum.ENABLE ? this.$t("启用") : this.$t("停用");
      this.$modal.confirm(this.$t('确认要{action} {title} 吗?', {
        action: text,
        title: this.$l(row, 'title')
      })).then(function() {
wanglianghe's avatar
wanglianghe committed
299 300 301
        return updatePickupLoc(row);

      }).then(() => {
302
        this.$modal.msgSuccess(text + this.$t("成功"));
wanglianghe's avatar
wanglianghe committed
303 304 305 306 307 308 309 310 311 312 313 314 315 316 317
      }).catch(function() {
        row.status = row.status === CommonStatusEnum.ENABLE ? CommonStatusEnum.DISABLE
          : CommonStatusEnum.ENABLE;
      });
    },

    /** 提交按钮 */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (!valid) {
          return;
        }
        // 修改的提交
        if (this.form.id != null) {
          updatePickupLoc(this.form).then(response => {
318
            this.$modal.msgSuccess(this.$t("修改成功"));
wanglianghe's avatar
wanglianghe committed
319 320 321 322 323 324 325
            this.open = false;
            this.getList();
          });
          return;
        }
        // 添加的提交
        createPickupLoc(this.form).then(response => {
326
          this.$modal.msgSuccess(this.$t("新增成功"));
wanglianghe's avatar
wanglianghe committed
327 328 329 330 331 332 333 334
          this.open = false;
          this.getList();
        });
      });
    },
    /** 删除按钮操作 */
    handleDelete(row) {
      const id = row.id;
335
      this.$modal.confirm(this.$t('是否确认删除自提点编号为{id}的数据项?', {id})).then(function() {
wanglianghe's avatar
wanglianghe committed
336 337 338
          return deletePickupLoc(id);
        }).then(() => {
          this.getList();
339
          this.$modal.msgSuccess(this.$t("删除成功"));
wanglianghe's avatar
wanglianghe committed
340 341 342 343 344 345 346 347 348 349 350
        }).catch(() => {});
    },
    /** 导出按钮操作 */
    handleExport() {
      // 处理查询参数
      let params = {...this.queryParams};
      params.pageNo = undefined;
      params.pageSize = undefined;
      this.addBeginAndEndTime(params, this.dateRangeWorkTime, 'workTime');
      this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
      // 执行导出
351
      this.$modal.confirm(this.$t('是否确认导出所有自提点数据项?')).then(() => {
wanglianghe's avatar
wanglianghe committed
352 353 354 355 356 357 358 359 360 361
          this.exportLoading = true;
          return exportPickupLocExcel(params);
        }).then(response => {
          this.$download.excel(response, '${table.classComment}.xls');
          this.exportLoading = false;
        }).catch(() => {});
    }
  }
};
</script>