| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- <template>
- <el-dialog title="新增字段" :visible="dialogVisible" @close="btnX">
- <el-form
- :model="ruleForm"
- :rules="rules"
- ref="ruleForm"
- label-width="100px"
- class="demo-ruleForm"
- >
- <el-form-item label="字段名" prop="name">
- <el-input
- v-model="ruleForm.name"
- maxlength="15"
- show-word-limit
- ></el-input>
- </el-form-item>
- <el-form-item label="备注" prop="remark">
- <el-input
- v-model="ruleForm.remark"
- maxlength="30"
- show-word-limit
- ></el-input>
- </el-form-item>
- <el-form-item label="字段类型">
- <el-select v-model="ruleForm.type" @change="valueChange">
- <el-option label="varchar(字符串)" value="varchar"></el-option>
- <el-option label="datetime(日期)" value="datetime"></el-option>
- <el-option label="int(数字)" value="int"></el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="字段长度" prop="length">
- <el-input
- :disabled="ruleForm.type === 'datetime'"
- @input="changeValue"
- v-model="ruleForm.length"
- maxlength="3"
- show-word-limit
- ></el-input>
- </el-form-item>
- <el-form-item label="搜索字段">
- <el-switch
- active-color="#13ce66"
- inactive-color="#ccc"
- :disabled="ruleForm.type !== 'varchar'"
- v-model="ruleForm.isQuery"
- :active-value="1"
- :inactive-value="0"
- >
- </el-switch>
- </el-form-item>
- </el-form>
- <span slot="footer" class="dialog-footer">
- <el-button @click="btnX">取 消</el-button>
- <el-button type="primary" @click="btnOk">确 定</el-button>
- </span>
- </el-dialog>
- </template>
- <script>
- import { addField } from "@/utils/api";
- export default {
- name: "tab1Dialog",
- props: {
- dialogVisible: {
- type: Boolean,
- default: false,
- },
- },
- components: {},
- data() {
- //这里存放数据
- return {
- ruleForm: {
- tableId: null,
- name: "",
- remark: "",
- length: 16,
- type: "varchar",
- isQuery: 0,
- },
- rules: {
- name: [
- { required: true, message: "不能为空", trigger: "blur" },
- {
- pattern: /^\w+$/,
- message: "只能输入字母,下划线,数字",
- trigger: "blur",
- },
- ],
- remark: [{ required: true, message: "不能为空", trigger: "blur" }],
- length: [{ required: true, message: "不能为空", trigger: "blur" }],
- },
- };
- },
- //监听属性 类似于data概念
- computed: {},
- //监控data中的数据变化
- watch: {},
- //方法集合
- methods: {
- valueChange(value) {
- let temp = 0;
- if (value === "varchar") temp = 16;
- else if (value === "int") temp = 1;
- this.ruleForm.length = temp;
- if (value !== "varchar") this.ruleForm.isQuery = 0;
- },
- changeValue(value) {
- this.ruleForm.length = /^[0-9]*$/.test(parseInt(value))
- ? String(parseInt(value)).replace(".", "")
- : "";
- if (this.ruleForm.type === "int") {
- if (Number(value) > 8) this.ruleForm.length = 8;
- if(Number(value) <= 0) this.ruleForm.length = 1;
- }
- if (this.ruleForm.type === "varchar") {
- if (Number(value) > 512) this.ruleForm.length = 512;
- if(Number(value) <= 0) this.ruleForm.length = 1;
- }
- },
- // 点击取消
- btnX() {
- this.$refs.ruleForm.resetFields();
- this.$emit("update:dialogVisible", false);
- },
- async btnOk() {
- try {
- await this.$refs.ruleForm.validate();
- let obj = { ...this.ruleForm, length: Number(this.ruleForm.length) };
- let res = await addField([obj]);
- if (res.code === 0) {
- this.$emit("clickSon");
- this.btnX();
- this.$message.success("操作成功");
- } else this.$message.warning(res.msg);
- } catch (error) {
- console.log(error);
- }
- },
- },
- //生命周期 - 创建完成(可以访问当前this实例)
- created() {
- this.ruleForm.tableId = Number(this.$route.params.id);
- },
- //生命周期 - 挂载完成(可以访问DOM元素)
- mounted() {},
- beforeCreate() {}, //生命周期 - 创建之前
- beforeMount() {}, //生命周期 - 挂载之前
- beforeUpdate() {}, //生命周期 - 更新之前
- updated() {}, //生命周期 - 更新之后
- beforeDestroy() {}, //生命周期 - 销毁之前
- destroyed() {}, //生命周期 - 销毁完成
- activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
- };
- </script>
- <style lang='less' scoped>
- //@import url(); 引入公共css类
- </style>
|