【前端】智能库房综合管理系统前端项目
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.

150 lines
4.7 KiB

  1. <template>
  2. <div class="app-container container-wrap">
  3. <span class="right-top-line" />
  4. <span class="left-bottom-line" />
  5. <!--工具栏-->
  6. <div class="head-container">
  7. <crudOperation :permission="permission" />
  8. </div>
  9. <!--表格渲染-->
  10. <el-table ref="table" v-loading="crud.loading" :data="crud.data" style="width: 100%;" @selection-change="selectionChangeHandler" @row-click="clickRowHandler">
  11. <el-table-column type="selection" width="55" />
  12. <el-table-column type="index" label="序号" width="55" />
  13. <el-table-column prop="field_cn_name" label="中文名称" />
  14. <el-table-column prop="field_name" label="字段标识" />
  15. <el-table-column label="数据类型">
  16. <template slot-scope="scope">
  17. <span v-if="scope.row.is_data_type === 1">字符</span>
  18. <span v-if="scope.row.is_data_type === 2">数字</span>
  19. </template>
  20. </el-table-column>
  21. <el-table-column prop="is_column_length" label="字段长度" />
  22. <el-table-column label="默认值">
  23. <template slot-scope="scope">
  24. <span v-if="scope.row.is_default_value === ''">-</span>
  25. <span v-else>{{ scope.row.is_default_value }}</span>
  26. </template>
  27. </el-table-column>
  28. </el-table>
  29. <!--表单渲染-->
  30. <eForm />
  31. <el-dialog title="关键提示" :visible.sync="verifyDialogVisible" :before-close="handleClose">
  32. <span class="dialog-right-top" />
  33. <span class="dialog-left-bottom" />
  34. <div class="setting-dialog">
  35. <p><span style="color:#fff;">这里为技术人员维护系统时使用用户无需设置</span></p>
  36. <p><span style="color:red;">注意强行修改会导致系统数据异常或丢失如因用户强行修改本系统不负责因此导致的相关后果</span></p>
  37. <el-form :model="form">
  38. <el-form-item label="技术维护验证码" :label-width="formLabelWidth">
  39. <el-input v-model="form.verifyCode" />
  40. </el-form-item>
  41. </el-form>
  42. <div slot="footer" class="dialog-footer">
  43. <el-button type="primary" @click.native="handleConfirm">确定验证</el-button>
  44. </div>
  45. </div>
  46. </el-dialog>
  47. </div>
  48. </template>
  49. <script>
  50. import crudFields from '@/api/archivesConfig/field'
  51. import eForm from './module/form'
  52. import CRUD, { presenter } from '@crud/crud'
  53. import crudOperation from '@crud/CRUD.operation'
  54. export default {
  55. name: 'CommonFields',
  56. components: { eForm, crudOperation },
  57. cruds() {
  58. return CRUD({
  59. title: '常用字段',
  60. url: 'api/field/findGroupType',
  61. crudMethod: { ...crudFields },
  62. optShow: {
  63. add: true,
  64. edit: true,
  65. del: false,
  66. download: false,
  67. group: false
  68. },
  69. query: {
  70. is_type: 2
  71. }
  72. })
  73. },
  74. mixins: [presenter()],
  75. data() {
  76. return {
  77. permission: {
  78. add: ['admin', 'commonFields:add'],
  79. edit: ['admin', 'commonFields:edit']
  80. },
  81. verifyDialogVisible: false,
  82. form: {
  83. verifyCode: ''
  84. },
  85. formLabelWidth: '110px',
  86. btn: '',
  87. showVerifyDialog: true
  88. }
  89. },
  90. methods: {
  91. [CRUD.HOOK.beforeToCU](crud, form, btn) {
  92. console.log(btn)
  93. if (this.showVerifyDialog) {
  94. // 打开输入验证码对话框
  95. this.verifyDialogVisible = true
  96. this.btn = btn
  97. return false
  98. }
  99. },
  100. handleConfirm() {
  101. if (this.form.verifyCode === '123') {
  102. // 关闭输入验证码对话框
  103. this.verifyDialogVisible = false
  104. this.form.verifyCode = ''
  105. this.showVerifyDialog = false
  106. if (this.btn === 'add') {
  107. this.crud.toAdd()
  108. } else if (this.btn === 'edit') {
  109. this.crud.toEdit(this.crud.selections[0])
  110. }
  111. this.showVerifyDialog = true
  112. } else {
  113. this.$message.error('验证码错误!')
  114. }
  115. },
  116. handleClose(done) {
  117. this.form.verifyCode = ''
  118. done()
  119. },
  120. clickRowHandler(row) {
  121. this.$refs.table.clearSelection()
  122. this.$refs.table.toggleRowSelection(row)
  123. },
  124. selectionChangeHandler(val) {
  125. if (val.length > 1) {
  126. // 取出最后val的最后一个返回出来
  127. const finalVal = val.pop()
  128. // 清除所有选中
  129. this.$refs.table.clearSelection()
  130. // 给最后一个加上选中
  131. this.$refs.table.toggleRowSelection(finalVal)
  132. this.crud.selectionChangeHandler([finalVal])
  133. } else {
  134. this.crud.selectionChangeHandler(val)
  135. }
  136. }
  137. }
  138. }
  139. </script>
  140. <style rel="stylesheet/scss" lang="scss" scoped>
  141. ::v-deep thead .el-table-column--selection .cell {
  142. display: none;
  143. }
  144. ::v-deep div.el-dialog__footer {
  145. text-align: center;
  146. }
  147. </style>