Newer
Older
smart-economy / src / components / manageSystem / file / dictionaryManage.vue
StephanieGitHub on 26 Jan 2021 9 KB first commit
<template>
  <div class="full-box zhglcss" style="overflow: hidden">
    <div class="" style="width: 100%;height:100%;">
      <div class="top-tip-box t-title">当前位置:后台系统管理 > 字典管理</div>
      <div class="table-info-box">
        <div class="table-search-box onerow">
          <div class="search-info-box" style="">
            <div class="search-item">
              <div class="search-item-label">字典类型</div>
              <el-select v-model="valueType" clearable filterable placeholder="请选择" @change="typeChanged">
                <el-option label="全部" value=""></el-option>
                <el-option v-for="item in typeList" :key="item.id" :label="item.name" :value="item.id"></el-option>
              </el-select>
            </div>
            <el-button class="search-btn" type="primary" @click="searchResult">查询</el-button>
            <el-button class="operate-btn" type="primary" style="float:left" @click="showAdd">新增</el-button>
          </div>
          <div class="search-border-box">
            <div class="sbb-line"></div>
            <div class="sbb-role"></div>
          </div>
        </div>
        <div class="table-result-boxx">
          <div class="table-container-style">
            <el-table :data="tableData.list" height="200">
              <el-table-column type="index" label="序号" align="center" width="80"></el-table-column>
              <el-table-column property="name" label="字典名称" align="center" show-overflow-tooltip></el-table-column>
              <el-table-column property="typeName" label="类型" align="center" show-overflow-tooltip></el-table-column>
              <el-table-column property="sort" label="排序" align="center" width="80" show-overflow-tooltip></el-table-column>
              <el-table-column property="isDisabledStr" label="状态" align="center" width="80" show-overflow-tooltip></el-table-column>
              <el-table-column property="remark" label="备注" align="center" show-overflow-tooltip></el-table-column>
              <el-table-column property="updateTime" label="最近更新时间" align="center" width="120" show-overflow-tooltip v-if="false"></el-table-column>
              <el-table-column property="createTime" label="创建时间" align="center" width="152" show-overflow-tooltip></el-table-column>
              <el-table-column label="操作" align="center"  width="150">
                <template slot-scope="scope">
                  <div class="table-edit-btn" @click="editModule(scope.row)">修改</div>
                  <div class="table-edit-btn" @click="deleteModule(scope.row)">删除</div>
                </template>
              </el-table-column>
            </el-table>
            <el-pagination @current-change="handlePageChange" background layout="total, prev, pager, next" :total="tableData.total" :current-page="tableData.pageNum" :page-size="tableData.pageSize" :page-count="tableData.pages" style="text-align: right;"></el-pagination>
          </div>
        </div>
      </div>
    </div>

    <el-dialog :title="type==0?'新增':'修改'" :visible.sync="dialogVisible" width="450px" :close-on-click-modal=false>
      <el-form :model="addForm" :rules="addRules" ref="addForm" :label-width="formLabelWidth+'px'">
        <el-form-item label="字典名称" prop="name">
          <el-input v-model="addForm.name" clearable auto-complete="off"></el-input>
        </el-form-item>
        <el-form-item label="类型">
          <el-select v-model="addForm.typeId" clearable filterable placeholder="请选择">
            <el-option  v-for="item in typeList" :key="item.id" :label="item.name" :value="item.id"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="排序" prop="sort">
          <el-input v-model.number="addForm.sort" clearable auto-complete="off"></el-input>
        </el-form-item>
        <el-form-item label="备注">
          <el-input type="textarea" autosize v-model="addForm.remark"></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="dialogVisible = false">取 消</el-button>
        <el-button type="primary" @click="updateModule('addForm')">确 定</el-button>
      </div>
    </el-dialog>
  </div>
</template>

<script>
  let month = new Date().getMonth()==0?1:new Date().getMonth()+1;
  let year = month<10?new Date().getFullYear()+"-0"+month :new Date().getFullYear()+"-"+month;
  export default {
    name: 'yjManage',
    data () {
      return {
        timeFilter:[new Date().format("yyyy-")+"01",new Date(year).format("yyyy-MM")],
        dialogVisible:false,
        type:0,
        valueType:'',
        typeList: [],
        formLabelWidth: 120,
        addRules:{
          name: [
            { required: true, message: '请输入字典名称', trigger: 'blur' }
          ],
          sort: [
            { required: true, message: '请输入排序', trigger: 'blur' },
            { type: 'integer', message: '排序必须为数字值'}
          ]
        },
        addForm: {name: "",typeId: "",typeName: "",status: "正常",sort: "",remark: ""},
        tableData:{
          list: [],
          pageNum: 1,
          pageSize: 10,
          pages: 0,
          total: 0,
        },
      }
    },
    mounted (){},
    created(){
      this.getdictTypeList();
      this.getDataList();
    },
    methods:{
      searchResult(){
        this.getDataList();
      },
      getdictTypeList: function (pager) {
      let _this = this,names = _this.valueType;
      _this.tableData.pageNum = _this.$Util.isEmpty(pager) ? _this.tableData.pageNum : pager;
      _this.$http.get('/dx-economy-api/dict/dictTypeList').then(function (resp) {
        var _data = resp.data;
        if (_data.code === 200 && !_this.$Util.isEmpty(_data.data)) {
          _this.typeList= _data.data;
        } else {
          _this.$message.error(_data.message);
        }
      });
    },
      getDataList: function (pager) {
        let _this = this,_id = _this.valueType;
        _this.tableData.pageNum = _this.$Util.isEmpty(pager) ? _this.tableData.pageNum : pager;
        _this.$http.get('/dx-economy-api/dict/page', {
          params: {
            typeId: _id,
            pageNum: _this.tableData.pageNum,
            pageSize: _this.tableData.pageSize
          }
        }).then(function (resp) {
          var _data = resp.data;
          if (_data.code === 200 && !_this.$Util.isEmpty(_data.data)) {
            _data.data.list.forEach(function (i,k) {
              i.isDisabledStr = i.isDisabled == 0 ? '启用' :i.isDisabled == 1 ? '禁用':'';
            })
            _this.tableData.list = _data.data.list;
            _this.tableData.pageNum = _data.data.pageNum;
            _this.tableData.pageSize = _data.data.pageSize;
            _this.tableData.pages = _data.data.pages;
            _this.tableData.total = _data.data.total;
          } else {
            _this.$message.error(_data.message);
          }
        });
      },
      typeChanged: function () {
        this.getDataList(1);
      },
      handlePageChange: function (page) {
        this.getDataList(page);
      },
      resetForm(formName) {
        var _this = this;
        if(!_this.$Util.isEmpty(_this.$refs[formName])){
          _this.$refs[formName].resetFields();
          _this.addForm = {
            name: "",
            type: "",
            status: "正常",
            sort: "",
            remark: ""
          }
        }
      },
      showAdd(){
        this.type = 0;
        this.resetForm("addForm");
        this.dialogVisible = true;
      },
      updateModule: function (formName) {
        var _this = this;
        _this.$refs[formName].validate((valid) => {
          if (valid) {
            var _form = _this.addForm;
            _form.status = _form.status === "正常" ? "1" : "0";
            _this.typeList.forEach(function (i,k) {
              if(_form.typeId == i.id){
                _form.typeName = i.name
              }
            })
            if(_this.type === 0){ //新增
              _this.$http.post('/dx-economy-api/dict', _form).then(function (resp) {
                var _data = resp.data;
                if (_data.code === 200) {
                  _this.getDataList(1);
                } else {
                  _this.$message.error(_data.message);
                }
              });
            }else{ //  修改
              _this.$http.put('/dx-economy-api/dict/'+_form.id, _form).then(function (resp) {
                var _data = resp.data;
                if (_data.code === 200) {
                  _this.getDataList(1);
                } else {
                  _this.$message.error(_data.message);
                }
              });
            }
            _this.dialogVisible = false;
          } else {
            return false;
          }
        });
      },
      editModule: function (rowData) {
        this.type = 1;
        this.addForm = JSON.parse(JSON.stringify(rowData));
        this.dialogVisible = true;
      },
      deleteModule: function (rowData) {
        var _this = this;
        _this.$confirm('确认删除?','提示', {type: 'warning'}).then(() => {
          if(!_this.$Util.isEmpty(rowData) && !_this.$Util.isEmpty(rowData.id)){
            _this.$http.delete('/dx-economy-api/dict/'+rowData.id).then(function (resp) {
              var _data = resp.data;
              if (_data.code === 200) {
                _this.getDataList(1);
              } else {
                _this.$message.error(_data.message);
              }
            });
          }
        }).catch(() => {});
      },
    }
  }
</script>
<style></style>
<style scoped>
  .table-result-boxx{height:calc(100% - 95px);}
  .el-form-item{margin-bottom:15px;}
  .el-form-item label{width: 90px;}
  .aaa{}
  .aaa{}
</style>