王旭
2022-09-29 0c769a382b1d99c11b2b61a9c466bb373c52827f
src/views/datamanage/dictionaryManage.vue
@@ -6,15 +6,16 @@
      <el-form ref="ruleForm" :model="ruleForm" :inline="true">
        <el-form-item label="表名称" prop="name">
          <el-select
            clearable
            v-model="queryName"
            @change="changeQueryName"
            placeholder="请选择表名称"
          >
            <el-option
              v-for="item in selectName"
              :key="item.value"
              :label="item.label"
              :value="item.value"
              v-for="(item, i) in selectData"
              :key="i"
              :label="item.tabDesc"
              :value="item.tab"
            >
            </el-option>
          </el-select>
@@ -48,42 +49,36 @@
            height="98%"
          >
            <el-table-column type="selection" width="55" />
            <el-table-column width="50" type="index" label="编号" />
            <el-table-column
              min-width="100"
              prop="field_name"
              label="字段名称"
            />
            <el-table-column
              min-width="90"
              prop="field_alias"
              label="字段显示名称"
            />
            <el-table-column
              min-width="100"
              prop="field_type"
              label="字段类型"
            />
            <el-table-column min-width="60" prop="length" label="字段长度" />
            <el-table-column prop="orderNum" label="编号" />
            <el-table-column min-width="100" prop="field" label="字段名称" />
            <el-table-column min-width="90" prop="alias" label="字段显示名称" />
            <el-table-column min-width="100" prop="type" label="字段类型" />
            <el-table-column min-width="60" prop="len" label="字段长度" />
            <el-table-column min-width="60" prop="precision" label="字段精度" />
            <el-table-column min-width="100" prop="tab" label="值域关联表" />
            <el-table-column min-width="100" prop="bak" label="备注" />
            <el-table-column
              min-width="100"
              prop="domain_name"
              label="值域关联表"
            />
            <el-table-column min-width="100" prop="remarks" label="备注" />
            <el-table-column
              min-width="100"
              prop="create_time"
              prop="createTime"
              label="创建时间"
              :formatter="formatData"
            />
            <el-table-column
              min-width="100"
              prop="create_user"
              prop="createUser"
              label="创建人员"
            />
            <el-table-column min-width="100" prop="up_time" label="更新时间" />
            <el-table-column min-width="100" prop="up_user" label="更新人员" />
            <el-table-column
              min-width="100"
              prop="updateTime"
              label="更新时间"
              :formatter="formatData"
            />
            <el-table-column
              min-width="100"
              prop="updateUser"
              label="更新人员"
            />
            <el-table-column min-width="70" label="操作">
              <template slot-scope="scope">
@@ -105,15 +100,15 @@
          </el-table>
        </div>
        <div
          style="margin-top: 20px; margin-left: 400px"
          style="margin-top: 20px; text-align: center"
          class="pagination_box"
        >
          <el-pagination
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
            :current-page="currentPage"
            :current-page="listData.pageIndex"
            :page-sizes="[10, 20, 50, 100]"
            :page-size="pageNum"
            :page-size="listData.pageSize"
            layout="total, sizes, prev, pager, next, jumper"
            :total="count"
          >
@@ -130,33 +125,33 @@
          </div>
        </div>
        <div class="contentBox">
          <p>表名称:{{ itemdetail.table_name }}</p>
          <p>表名称:{{ itemdetail.tab }}</p>
          <el-divider></el-divider>
          <p>表显示名称:{{ itemdetail.table_alias }}</p>
          <p>表显示名称:{{ itemdetail.tabDesc }}</p>
          <el-divider></el-divider>
          <p>表类型:{{ itemdetail.table_type }}</p>
          <!-- <p>表类型:{{ itemdetail.type }}</p>
          <el-divider></el-divider> -->
          <p>字段名称:{{ itemdetail.field }}</p>
          <el-divider></el-divider>
          <p>字段名称:{{ itemdetail.field_name }}</p>
          <p>字段显示名称:{{ itemdetail.alias }}</p>
          <el-divider></el-divider>
          <p>字段显示名称:{{ itemdetail.field_alias }}</p>
          <p>字段类型:{{ itemdetail.type }}</p>
          <el-divider></el-divider>
          <p>字段类型:{{ itemdetail.field_type }}</p>
          <el-divider></el-divider>
          <p>字段长度:{{ itemdetail.length }}</p>
          <p>字段长度:{{ itemdetail.len }}</p>
          <el-divider></el-divider>
          <p>字段精度:{{ itemdetail.precision }}</p>
          <el-divider></el-divider>
          <p>值域关联表:{{ itemdetail.domain_name }}</p>
          <!-- <p>值域关联表:{{ itemdetail.domain_name }}</p>
          <el-divider></el-divider> -->
          <p>备注:{{ itemdetail.bak }}</p>
          <el-divider></el-divider>
          <p>备注:{{ itemdetail.remarks }}</p>
          <p>创建时间:{{ itemdetail.createTime }}</p>
          <el-divider></el-divider>
          <p>创建时间:{{ itemdetail.create_time }}</p>
          <p>创建人员:{{ itemdetail.createUser }}</p>
          <el-divider></el-divider>
          <p>创建人员:{{ itemdetail.create_user }}</p>
          <p>更新时间:{{ itemdetail.updateTime }}</p>
          <el-divider></el-divider>
          <p>更新时间:{{ itemdetail.up_time }}</p>
          <el-divider></el-divider>
          <p>更新人员:{{ itemdetail.up_user }}</p>
          <p>更新人员:{{ itemdetail.updateUser }}</p>
        </div>
      </el-card>
    </div>
@@ -167,46 +162,46 @@
      :visible.sync="dialogFormVisible"
    >
      <el-form :model="upform">
        <el-form-item label="序号" :label-width="formLabelWidth">
          <el-input v-model="upform.oid" autocomplete="off"></el-input>
        <el-form-item label="编号" :label-width="formLabelWidth">
          <el-input v-model="upform.orderNum" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="表名" :label-width="formLabelWidth">
          <el-input v-model="upform.table_name" autocomplete="off"></el-input>
          <el-input v-model="upform.tab" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="表别名" :label-width="formLabelWidth">
          <el-input v-model="upform.table_alias" autocomplete="off"></el-input>
          <el-input v-model="upform.tabDesc" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="类型" :label-width="formLabelWidth">
        <!-- <el-form-item label="类型" :label-width="formLabelWidth">
          <el-select
            v-model="upform.table_type"
            style="width: 800px"
            style="width: 100%"
            placeholder="请选择数据类型"
          >
            <el-option label="点几何" value="点几何"></el-option>
            <el-option label="线几何" value="线几何"></el-option>
            <el-option label="面几何" value="面几何"></el-option>
          </el-select>
        </el-form-item>
        </el-form-item> -->
        <el-form-item label="字段名称" :label-width="formLabelWidth">
          <el-input v-model="upform.field_name" autocomplete="off"></el-input>
          <el-input v-model="upform.field" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="字段别名" :label-width="formLabelWidth">
          <el-input v-model="upform.field_alias" autocomplete="off"></el-input>
          <el-input v-model="upform.alias" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="字段类型" :label-width="formLabelWidth">
          <el-input v-model="upform.field_type" autocomplete="off"></el-input>
          <el-input v-model="upform.type" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="长度" :label-width="formLabelWidth">
          <el-input v-model="upform.length" autocomplete="off"></el-input>
          <el-input v-model="upform.len" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="精度" :label-width="formLabelWidth">
          <el-input v-model="upform.precision" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="值域名称" :label-width="formLabelWidth">
        <!-- <el-form-item label="值域名称" :label-width="formLabelWidth">
          <el-input v-model="upform.domain_name" autocomplete="off"></el-input>
        </el-form-item>
        </el-form-item> -->
        <el-form-item label="备注" :label-width="formLabelWidth">
          <el-input v-model="upform.remarks" autocomplete="off"></el-input>
          <el-input v-model="upform.bak" autocomplete="off"></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
@@ -221,52 +216,52 @@
      :visible.sync="InsertFormdialog"
    >
      <el-form :model="insertform">
        <el-form-item label="序号" :label-width="formLabelWidth">
          <el-input v-model="insertform.oid" autocomplete="off"></el-input>
        <el-form-item label="编号" :label-width="formLabelWidth">
          <el-input v-model="insertform.orderNum" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="表名" :label-width="formLabelWidth">
          <el-input
            v-model="insertform.table_name"
            v-model="insertform.tab"
            autocomplete="off"
          ></el-input>
        </el-form-item>
        <el-form-item label="表别名" :label-width="formLabelWidth">
          <el-input
            v-model="insertform.table_alias"
            v-model="insertform.tabDesc"
            autocomplete="off"
          ></el-input>
        </el-form-item>
        <el-form-item label="类型" :label-width="formLabelWidth">
        <!-- <el-form-item label="类型" :label-width="formLabelWidth">
          <el-select
            v-model="insertform.table_type"
            style="width: 800px"
            style="width: 100%"
            placeholder="请选择数据类型"
          >
            <el-option label="点几何" value="点几何"></el-option>
            <el-option label="线几何" value="线几何"></el-option>
            <el-option label="面几何" value="面几何"></el-option>
          </el-select>
        </el-form-item>
        </el-form-item> -->
        <el-form-item label="字段名称" :label-width="formLabelWidth">
          <el-input
            v-model="insertform.field_name"
            v-model="insertform.field"
            autocomplete="off"
          ></el-input>
        </el-form-item>
        <el-form-item label="字段别名" :label-width="formLabelWidth">
          <el-input
            v-model="insertform.field_alias"
            v-model="insertform.alias"
            autocomplete="off"
          ></el-input>
        </el-form-item>
        <el-form-item label="字段类型" :label-width="formLabelWidth">
          <el-input
            v-model="insertform.field_type"
            v-model="insertform.type"
            autocomplete="off"
          ></el-input>
        </el-form-item>
        <el-form-item label="长度" :label-width="formLabelWidth">
          <el-input v-model="insertform.length" autocomplete="off"></el-input>
          <el-input v-model="insertform.len" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="精度" :label-width="formLabelWidth">
          <el-input
@@ -274,14 +269,14 @@
            autocomplete="off"
          ></el-input>
        </el-form-item>
        <el-form-item label="值域名称" :label-width="formLabelWidth">
        <!-- <el-form-item label="值域名称" :label-width="formLabelWidth">
          <el-input
            v-model="insertform.domain_name"
            autocomplete="off"
          ></el-input>
        </el-form-item>
        </el-form-item> -->
        <el-form-item label="备注" :label-width="formLabelWidth">
          <el-input v-model="insertform.remarks" autocomplete="off"></el-input>
          <el-input v-model="insertform.bak" autocomplete="off"></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
@@ -294,12 +289,11 @@
<script>
import {
  insertDict,
  CountDict,
  SelectDict,
  DeletestDict,
  UpdateDict,
  QueryNamesDict,
  selectByPageAndCount,
  selectDictTab,
  deleteDicts,
  updateDict,
  insertDict
} from "../../api/api";
import MyBread from "../../components/MyBread.vue";
export default {
@@ -321,29 +315,95 @@
      tableData: [],
      count: 0,
      currentPage: 1,
      pageNum: 10,
      pageSize: 1,
      searchName: "",
      selectName: [],
      queryName: "",
      listData: {
        pageIndex: 1,
        pageSize: 10,
      },
      selectData: [],
    };
  },
  created() {
    // this.startFromData();
    this.startQueryNameData();
    this.getSelectDictTab();
  },
  methods: {
    //下拉选项调用
    async getSelectDictTab() {
      this.selectData = [];
      const data = await selectDictTab();
      if (data.code != 200) {
        this.$message.error("下拉调用失败");
      }
      data.result.forEach((e) => {
        if (e) {
          this.selectData.push({
            tab: e.tab,
            tabDesc: `${e.tabDesc}(${e.tab})`,
          });
        }
      });
    },
    //列表请求
    async startQueryNameData() {
      if (this.listData.tab == "") {
        delete this.listData.tab;
      }
      const data = await selectByPageAndCount(this.listData);
      if (data.code != 200) {
        this.$message.error("列表调用失败");
      }
      this.tableData = data.result;
      this.count = data.count;
    },
    //格式化时间
    add0(m) {
      return m < 10 ? "0" + m : m;
    },
    //格式化时间
    format(shijianchuo) {
      //shijianchuo是整数,否则要parseInt转换
      var time = new Date(shijianchuo);
      var y = time.getFullYear();
      var m = time.getMonth() + 1;
      var d = time.getDate();
      var h = time.getHours();
      var mm = time.getMinutes();
      var s = time.getSeconds();
      return (
        y + "-" + this.add0(m) + "-" + this.add0(d)
        // " " +
        // this.add0(h) +
        // ":" +
        // this.add0(mm) +
        // ":" +
        // this.add0(s)
      );
    },
    //格式化列表
    formatData(row, column) {
      let data = row[column.property];
      if (data == null) {
        return data;
      }
      return this.format(data);
    },
    //修改详情
    updateForm() {
      this.$confirm("是否确定保存修改内容?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
        .then(async () => {
          const data = await updateDict(this.upform);
          if (data.code != 200) {
            this.$message.error("修改失败");
          }
          this.dialogFormVisible = false;
          UpdateDict(this.upform).then((res) => {
            console.log(res);
          });
          this.startQueryNameData();
          this.$message({
            message: "修改成功",
            type: "success",
@@ -351,28 +411,8 @@
        })
        .catch(() => {});
    },
    submitForm(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          this.searchName = this.ruleForm.name.trim();
          this.count = 0;
          this.selectFromData(10, 1, this.searchName);
          this.countFromData(this.searchName);
        } else {
          console.log("error submit!!");
          return false;
        }
      });
    },
    resetForm(formName) {
      this.count = 0;
      this.pageSize = 1;
      this.pageNum = 10;
      this.selectFromData(10, 1, "");
      this.countFromData("");
      this.searchName = "";
      this.$refs[formName].resetFields();
    },
    //查看详情
    showDetail(index, row) {
      // console.log(index, row);
      this.showinfoBox = true;
@@ -382,81 +422,55 @@
      this.showinfoBox = false;
      this.itemdetail = {};
    },
    //修改详情弹框
    handleEdit(index, row) {
      this.dialogFormVisible = true;
      this.upform = row;
    },
    handleDelete(index, row) {
      this.$confirm("确定是否删除所选内容?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          DeletestDict([row.id]);
          this.$message({
            type: "success",
            message: "删除成功!",
          });
          this.startFromData();
        })
        .catch(() => {});
    },
    handleSizeChange(val) {
      // console.log(`每页 ${val} 条`);
      this.pageNum = val;
      this.selectFromData(this.pageNum, 1, this.searchName);
      this.countFromData(this.searchName);
    },
    handleCurrentChange(val) {
      this.pageSize = val;
      this.selectFromData(this.pageNum, this.pageSize, this.searchName);
      console.log(this.upform);
    },
    handleSizeChange(val) {
      console.log(val);
      // console.log(`每页 ${val} 条`);
      this.listData.pageSize = val;
      this.startQueryNameData();
    },
    handleCurrentChange(val) {
      this.listData.pageIndex = val;
      this.startQueryNameData();
    },
    //新增
    insertFromData() {
      this.$confirm("是否确定添加?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
        .then(async () => {
          const data = await insertDict(this.insertform);
          if (data.code != 200) {
            this.$message.error("新增失败");
          }
          this.InsertFormdialog = false;
          insertDict(this.insertform).then((res) => {
            if ((res.statusText = "OK" && res.data > 0)) {
              this.$message({
                message: "添加成功",
                type: "success",
              });
              this.startFromData();
              this.insertform = {};
            } else {
              this.$message({
                message: "添加失败",
                type: "error",
              });
              this.insertform = {};
            }
          this.startQueryNameData();
          this.$message({
            message: "新增成功",
            type: "success",
          });
        })
        .catch(() => {});
    },
    countFromData(name) {
      CountDict(name).then((res) => {
        this.count = res.data;
      });
    },
    selectFromData(size, index, name) {
      SelectDict(size, index, name).then((res) => {
        this.tableData = res.data;
      });
    },
    //列表选择
    handleSelectionChange(val) {
      this.multipleSelection = val;
    },
    //删除列表
    DelFormData() {
      var std = [];
      console.log(this.multipleSelection);
      for (var i in this.multipleSelection) {
        std.push(this.multipleSelection[i].id);
      }
@@ -465,37 +479,24 @@
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          DeletestDict(std);
        .then(async () => {
          const data = await deleteDicts({ ids: std.toString() });
          if (data.code != 200) {
            this.$message.error("列表删除失败");
          }
          this.$message({
            type: "success",
            message: "删除成功!",
          });
          this.startFromData();
          this.startQueryNameData();
        })
        .catch(() => {});
    },
    startFromData() {
      this.count = 0;
      this.pageSize = 1;
      this.pageNum = 10;
      this.selectFromData(10, 1, this.searchName);
      this.countFromData(this.searchName);
    },
    startQueryNameData() {
      QueryNamesDict().then((res) => {
        console.log(res);
        for (var i in res.data) {
          this.selectName.push({
            value: res.data[i].name,
            label: res.data[i].name,
          });
        }
      });
    },
    //搜索框
    changeQueryName(val) {
      this.searchName = val;
      this.startFromData();
      this.listData.tab = val;
      this.startQueryNameData();
    },
  },
};