【前端】智能库房综合管理系统前端项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

100 lines
3.1 KiB

  1. <template>
  2. <el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible="crud.status.cu > 0" :title="crud.status.title">
  3. <span class="dialog-right-top" />
  4. <span class="dialog-left-bottom" />
  5. <div class="setting-dialog">
  6. <el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px">
  7. <el-form-item label="中文名称" prop="fieldCnName">
  8. <el-input v-model="form.fieldCnName" style="width: 370px;" />
  9. </el-form-item>
  10. <el-form-item label="字段标识" prop="fieldName">
  11. <el-input v-model="form.fieldName" style="width: 370px;" />
  12. </el-form-item>
  13. <el-form-item label="数据类型" prop="isDataType">
  14. <el-select v-model="form.isDataType" placeholder="请选择">
  15. <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
  16. </el-select>
  17. </el-form-item>
  18. <el-form-item label="字段长度" prop="isColumnLength">
  19. <el-input-number v-model="form.isColumnLength" controls-position="right" style="width: 370px;" />
  20. </el-form-item>
  21. <el-form-item label="默认值" prop="isDefaultValue">
  22. <el-input v-model="form.isDefaultValue" style="width: 370px;" />
  23. </el-form-item>
  24. </el-form>
  25. <div slot="footer" class="dialog-footer">
  26. <el-button type="text" @click="crud.cancelCU">
  27. 取消
  28. </el-button>
  29. <el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">
  30. 确认
  31. </el-button>
  32. </div>
  33. </div>
  34. </el-dialog>
  35. </template>
  36. <script>
  37. import { form } from '@crud/crud'
  38. const defaultForm = {
  39. id: null,
  40. fieldCnName: '',
  41. fieldName: '',
  42. isDataType: 1,
  43. isColumnLength: 100,
  44. isDefaultValue: ''
  45. }
  46. export default {
  47. mixins: [form(defaultForm)],
  48. data() {
  49. var checkMaxLength = (rule, value, callback) => {
  50. if (!Number.isInteger(value) || value <= 0) {
  51. callback(new Error('请输入正整数数字值'))
  52. } else {
  53. if (this.form.isDataType === 1 && value > 2000) {
  54. callback(new Error('字符最大长度不能超过2000位'))
  55. } else if (this.form.isDataType === 2 && value > 11) {
  56. callback(new Error('数字最大长度不能超过11位'))
  57. } else {
  58. callback()
  59. }
  60. }
  61. }
  62. return {
  63. rules: {
  64. fieldCnName: [
  65. { required: true, message: '请输入中文名称', trigger: 'blur' }
  66. ],
  67. fieldName: [
  68. { required: true, message: '请输入字段标识', trigger: 'blur' }
  69. ],
  70. isDataType: [
  71. { required: true, message: '请选择数据类型', trigger: 'blur' }
  72. ],
  73. isColumnLength: [
  74. { validator: checkMaxLength, trigger: 'blur' }
  75. ]
  76. },
  77. options: [
  78. {
  79. value: 1,
  80. label: '字符',
  81. maxlength: 2000
  82. },
  83. {
  84. value: 2,
  85. label: '数字',
  86. maxlength: 11
  87. }
  88. ]
  89. }
  90. }
  91. }
  92. </script>
  93. <style rel="stylesheet/scss" lang="scss" scoped>
  94. ::v-deep .el-input-number .el-input__inner {
  95. text-align: left;
  96. }
  97. </style>