阅行客电子档案
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.

117 lines
3.7 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. <template>
  2. <el-dialog :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :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="96px">
  7. <el-form-item label="中文名称" prop="fieldCnName">
  8. <el-input v-model="form.fieldCnName" style="width: 560px;" />
  9. </el-form-item>
  10. <el-form-item label="字段标识" prop="fieldName">
  11. <el-input v-model="form.fieldName" style="width: 560px;" />
  12. </el-form-item>
  13. <el-row style="display:flex;">
  14. <el-form-item label="数据类型" prop="isDataType" class="field-form-item">
  15. <el-radio v-for="item in options" :key="item.value" v-model="form.isDataType" :label="item.value">{{ item.label }}</el-radio>
  16. </el-form-item>
  17. <el-form-item label="字段长度" prop="isColumnLength" class="field-form-item">
  18. <el-input v-model="form.isColumnLength" />
  19. </el-form-item>
  20. </el-row>
  21. <el-form-item label="默认值" prop="defaultValue">
  22. <el-input v-model="form.defaultValue" style="width: 560px;" />
  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. defaultValue: '',
  45. isSystem: true
  46. }
  47. export default {
  48. mixins: [form(defaultForm)],
  49. data() {
  50. var checkMaxLength = (rule, value, callback) => {
  51. // || (!Number.isInteger(value))
  52. if (value !== undefined && value <= 0) {
  53. callback(new Error('请输入正整数数字值'))
  54. } else {
  55. if (this.form.isDataType === 1 && value > 2000) {
  56. callback(new Error('字符最大长度不能超过2000位'))
  57. } else if (this.form.isDataType === 2 && value > 11) {
  58. callback(new Error('数字最大长度不能超过11位'))
  59. } else {
  60. callback()
  61. }
  62. }
  63. }
  64. var checkFieldName = (rule, value, callback) => {
  65. const reg = /^(([A-Za-z][A-Za-z_]*[a-zA-Z])|([A-Za-z]))$/
  66. if (reg.test(value)) {
  67. callback()
  68. } else {
  69. callback(new Error('字段标识只能由字母、字符“_”组成,并且必须以字母开头和结尾'))
  70. }
  71. }
  72. return {
  73. rules: {
  74. fieldCnName: [
  75. { required: true, message: '请输入中文名称', trigger: 'blur' }
  76. ],
  77. fieldName: [
  78. { required: true, message: '请选择字段标识', trigger: 'blur' },
  79. { validator: checkFieldName, trigger: 'blur' }
  80. ],
  81. isDataType: [
  82. { required: true, message: '请选择数据类型', trigger: 'blur' }
  83. ],
  84. isColumnLength: [
  85. { required: true, validator: checkMaxLength, trigger: 'blur' }
  86. ]
  87. },
  88. options: [
  89. {
  90. value: 1,
  91. label: '字符'
  92. },
  93. {
  94. value: 2,
  95. label: '数字'
  96. }
  97. ]
  98. }
  99. }
  100. }
  101. </script>
  102. <style lang="scss" scoped>
  103. ::v-deep .el-dialog {
  104. .el-dialog__body {
  105. .el-form-item{
  106. margin-right: 5px;
  107. &.field-form-item{
  108. width: 334px;
  109. margin-right: 0;
  110. }
  111. }
  112. }
  113. }
  114. </style>