飞天云平台-国产化
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.

156 lines
5.1 KiB

3 weeks ago
  1. <template>
  2. <!--表单组件-->
  3. <el-dialog append-to-body :close-on-click-modal="false" :modal-append-to-body="false" :before-close="crud.cancelCU" :visible="crud.status.cu > 0" :title="crud.status.title">
  4. <div class="setting-dialog">
  5. <el-form ref="form" inline :model="form" :rules="rules" size="small" label-width="90px">
  6. <el-form-item v-if="selectedMenu.pid === '0'" label="所属父级" prop="parentName">
  7. <el-input v-model="selectedMenu.cnName" disabled />
  8. </el-form-item>
  9. <el-form-item v-else label="所属父级" prop="parentName">
  10. <el-input v-model="selectedMenu.parentName" disabled />
  11. </el-form-item>
  12. <el-form-item label="编码" prop="code">
  13. <el-input v-model="form.code" />
  14. </el-form-item>
  15. <el-form-item label="名称" prop="cnName">
  16. <el-input v-model="form.cnName" />
  17. </el-form-item>
  18. <el-form-item label="菜单类型" prop="isType">
  19. <el-select v-model="form.isType" style="width: 225px;" @change="changeType">
  20. <el-option v-for="item in selectOptions" :key="item.value" :label="item.label" :value="item.value" />
  21. </el-select>
  22. </el-form-item>
  23. <el-row>
  24. <el-form-item style="width: 100%;" label="栏目绑定" prop="bind" class="is-required selecct-dropdown">
  25. <el-select v-model="form.bind" style="width: 584px" multiple placeholder="请选择" :popper-append-to-body="false" @remove-tag="deleteTag" @change="changeColumn">
  26. <el-option v-for="item in columnDatas" :key="item.id" :label="item.title" :value="item.id" />
  27. </el-select>
  28. </el-form-item>
  29. </el-row>
  30. <el-form-item label="备注" prop="remark">
  31. <el-input v-model="form.remark" type="textarea" :rows="4" style="width: 580px;" />
  32. </el-form-item>
  33. </el-form>
  34. <div slot="footer" class="dialog-footer">
  35. <el-button type="text" @click="crud.cancelCU">取消</el-button>
  36. <el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
  37. </div>
  38. </div>
  39. </el-dialog>
  40. </template>
  41. <script>
  42. import { FetchInitQueryTopic } from '@/api/inquiryMachine/column'
  43. import { form } from '@crud/crud'
  44. import CRUD from '@crud/crud'
  45. const defaultForm = { id: null, parentName: null, cnName: null, code: null, bind: null, isType: null, remark: null }
  46. export default {
  47. mixins: [
  48. form(function() {
  49. return Object.assign({ pid: this.pid }, defaultForm)
  50. })
  51. ],
  52. props: {
  53. selectedMenu: {
  54. type: Object,
  55. default: function() {
  56. return {}
  57. }
  58. }
  59. },
  60. data() {
  61. return {
  62. pid: null,
  63. isAdd: false,
  64. rules: {
  65. parentLevel: [
  66. { required: true, message: '所属父级不可为空', trigger: 'blur' }
  67. ],
  68. cnName: [
  69. { required: true, message: '名称不可为空', trigger: 'blur' }
  70. ],
  71. isType: [
  72. { required: true, message: '菜单类型不可为空', trigger: 'change' }
  73. ],
  74. code: [
  75. { required: true, message: '编码不可为空', trigger: 'blur' }
  76. ],
  77. bind: [
  78. { required: true, message: '栏目绑定不可为空', trigger: 'change' }
  79. ]
  80. },
  81. selectOptions: [
  82. { value: 1, label: '菜单' },
  83. { value: 2, label: '栏目显示' },
  84. { value: 3, label: '栏目列表' },
  85. { value: 4, label: '新书推荐' }
  86. ],
  87. columnDatas: [],
  88. templateTree: [],
  89. selectedTemplateNode: {},
  90. bindColumn: []
  91. }
  92. },
  93. watch: {
  94. selectedMenu: function(newValue, oldValue) {
  95. // console.log('newValue', newValue)
  96. }
  97. },
  98. created() {
  99. this.getInitQueryTopic()
  100. },
  101. methods: {
  102. getInitQueryTopic() {
  103. FetchInitQueryTopic().then(res => {
  104. this.columnDatas = res.content
  105. })
  106. },
  107. changeColumn(value) {
  108. this.bindColumn = []
  109. value.forEach(function(data, index) {
  110. const role = { id: data }
  111. this.bindColumn.push(role)
  112. })
  113. },
  114. deleteTag(value) {
  115. this.bindColumn.forEach(function(data, index) {
  116. if (data.id === value) {
  117. this.bindColumn.splice(index, value)
  118. }
  119. })
  120. },
  121. beforeToAdd() {
  122. this.form.isType = null
  123. },
  124. [CRUD.HOOK.beforeSubmit]() {
  125. },
  126. // 提交前的验证
  127. [CRUD.HOOK.afterValidateCU](crud) {
  128. // delete crud.form.parentName
  129. console.log(crud.form)
  130. return false
  131. },
  132. updateTemplateValue(node, instanceId) {
  133. this.selectedTemplateNode = node
  134. },
  135. changeType() {
  136. this.isAdd = this.form.isType === 2
  137. },
  138. normalizer(node) {
  139. if (node.children && !node.children.length) {
  140. delete node.children
  141. }
  142. return {
  143. id: node.id,
  144. label: node.cnName,
  145. children: node.children,
  146. isDisabled: node.isType !== 2 && node.isType !== 3 && node.isType !== 5
  147. }
  148. }
  149. }
  150. }
  151. </script>
  152. <style lang="scss" scoped>
  153. </style>