Dialog.vue 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. <template>
  2. <el-dialog title="新增字段" :visible="dialogVisible" @close="btnX">
  3. <el-form
  4. :model="ruleForm"
  5. :rules="rules"
  6. ref="ruleForm"
  7. label-width="100px"
  8. class="demo-ruleForm"
  9. >
  10. <el-form-item label="字段名" prop="name">
  11. <el-input
  12. v-model="ruleForm.name"
  13. maxlength="15"
  14. show-word-limit
  15. ></el-input>
  16. </el-form-item>
  17. <el-form-item label="备注" prop="remark">
  18. <el-input
  19. v-model="ruleForm.remark"
  20. maxlength="30"
  21. show-word-limit
  22. ></el-input>
  23. </el-form-item>
  24. <el-form-item label="字段类型">
  25. <el-select v-model="ruleForm.type" @change="valueChange">
  26. <el-option label="varchar(字符串)" value="varchar"></el-option>
  27. <el-option label="datetime(日期)" value="datetime"></el-option>
  28. <el-option label="int(数字)" value="int"></el-option>
  29. </el-select>
  30. </el-form-item>
  31. <el-form-item label="字段长度" prop="length">
  32. <el-input
  33. :disabled="ruleForm.type === 'datetime'"
  34. @input="changeValue"
  35. v-model="ruleForm.length"
  36. maxlength="3"
  37. show-word-limit
  38. ></el-input>
  39. </el-form-item>
  40. <el-form-item label="搜索字段">
  41. <el-switch
  42. active-color="#13ce66"
  43. inactive-color="#ccc"
  44. :disabled="ruleForm.type !== 'varchar'"
  45. v-model="ruleForm.isQuery"
  46. :active-value="1"
  47. :inactive-value="0"
  48. >
  49. </el-switch>
  50. </el-form-item>
  51. </el-form>
  52. <span slot="footer" class="dialog-footer">
  53. <el-button @click="btnX">取 消</el-button>
  54. <el-button type="primary" @click="btnOk">确 定</el-button>
  55. </span>
  56. </el-dialog>
  57. </template>
  58. <script>
  59. import { addField } from "@/utils/api";
  60. export default {
  61. name: "tab1Dialog",
  62. props: {
  63. dialogVisible: {
  64. type: Boolean,
  65. default: false,
  66. },
  67. },
  68. components: {},
  69. data() {
  70. //这里存放数据
  71. return {
  72. ruleForm: {
  73. tableId: null,
  74. name: "",
  75. remark: "",
  76. length: 16,
  77. type: "varchar",
  78. isQuery: 0,
  79. },
  80. rules: {
  81. name: [
  82. { required: true, message: "不能为空", trigger: "blur" },
  83. {
  84. pattern: /^\w+$/,
  85. message: "只能输入字母,下划线,数字",
  86. trigger: "blur",
  87. },
  88. ],
  89. remark: [{ required: true, message: "不能为空", trigger: "blur" }],
  90. length: [{ required: true, message: "不能为空", trigger: "blur" }],
  91. },
  92. };
  93. },
  94. //监听属性 类似于data概念
  95. computed: {},
  96. //监控data中的数据变化
  97. watch: {},
  98. //方法集合
  99. methods: {
  100. valueChange(value) {
  101. let temp = 0;
  102. if (value === "varchar") temp = 16;
  103. else if (value === "int") temp = 1;
  104. this.ruleForm.length = temp;
  105. if (value !== "varchar") this.ruleForm.isQuery = 0;
  106. },
  107. changeValue(value) {
  108. this.ruleForm.length = /^[0-9]*$/.test(parseInt(value))
  109. ? String(parseInt(value)).replace(".", "")
  110. : "";
  111. if (this.ruleForm.type === "int") {
  112. if (Number(value) > 8) this.ruleForm.length = 8;
  113. if(Number(value) <= 0) this.ruleForm.length = 1;
  114. }
  115. if (this.ruleForm.type === "varchar") {
  116. if (Number(value) > 512) this.ruleForm.length = 512;
  117. if(Number(value) <= 0) this.ruleForm.length = 1;
  118. }
  119. },
  120. // 点击取消
  121. btnX() {
  122. this.$refs.ruleForm.resetFields();
  123. this.$emit("update:dialogVisible", false);
  124. },
  125. async btnOk() {
  126. try {
  127. await this.$refs.ruleForm.validate();
  128. let obj = { ...this.ruleForm, length: Number(this.ruleForm.length) };
  129. let res = await addField([obj]);
  130. if (res.code === 0) {
  131. this.$emit("clickSon");
  132. this.btnX();
  133. this.$message.success("操作成功");
  134. } else this.$message.warning(res.msg);
  135. } catch (error) {
  136. console.log(error);
  137. }
  138. },
  139. },
  140. //生命周期 - 创建完成(可以访问当前this实例)
  141. created() {
  142. this.ruleForm.tableId = Number(this.$route.params.id);
  143. },
  144. //生命周期 - 挂载完成(可以访问DOM元素)
  145. mounted() {},
  146. beforeCreate() {}, //生命周期 - 创建之前
  147. beforeMount() {}, //生命周期 - 挂载之前
  148. beforeUpdate() {}, //生命周期 - 更新之前
  149. updated() {}, //生命周期 - 更新之后
  150. beforeDestroy() {}, //生命周期 - 销毁之前
  151. destroyed() {}, //生命周期 - 销毁完成
  152. activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
  153. };
  154. </script>
  155. <style lang='less' scoped>
  156. //@import url(); 引入公共css类
  157. </style>