图书馆智能管理系统
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.

175 lines
7.3 KiB

5 months ago
  1. <#--noinspection ALL-->
  2. <template>
  3. <div class="app-container">
  4. <!--工具栏-->
  5. <div class="head-container">
  6. <#if hasQuery>
  7. <div v-if="crud.props.searchToggle">
  8. <!-- 搜索 -->
  9. <#if queryColumns??>
  10. <#list queryColumns as column>
  11. <#if column.queryType != 'BetWeen'>
  12. <label class="el-form-item-label"><#if column.remark != ''>${column.remark}<#else>${column.changeColumnName}</#if></label>
  13. <el-input v-model="query.${column.changeColumnName}" clearable placeholder="<#if column.remark != ''>${column.remark}<#else>${column.changeColumnName}</#if>" style="width: 185px;" class="filter-item" @keyup.enter.native="crud.toQuery" />
  14. </#if>
  15. </#list>
  16. </#if>
  17. <#if betweens??>
  18. <#list betweens as column>
  19. <#if column.queryType = 'BetWeen'>
  20. <date-range-picker
  21. v-model="query.${column.changeColumnName}"
  22. start-placeholder="${column.changeColumnName}Start"
  23. end-placeholder="${column.changeColumnName}Start"
  24. class="date-item"
  25. />
  26. </#if>
  27. </#list>
  28. </#if>
  29. <rrOperation :crud="crud" />
  30. </div>
  31. </#if>
  32. <!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
  33. <crudOperation :permission="permission" />
  34. <!--表单组件-->
  35. <el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" width="500px">
  36. <el-form ref="form" :model="form" <#if isNotNullColumns??>:rules="rules"</#if> size="small" label-width="80px">
  37. <#if columns??>
  38. <#list columns as column>
  39. <#if column.formShow>
  40. <el-form-item label="<#if column.remark != ''>${column.remark}<#else>${column.changeColumnName}</#if>"<#if column.istNotNull> prop="${column.changeColumnName}"</#if>>
  41. <#if column.formType = 'Input'>
  42. <el-input v-model="form.${column.changeColumnName}" style="width: 370px;" />
  43. <#elseif column.formType = 'Textarea'>
  44. <el-input v-model="form.${column.changeColumnName}" :rows="3" type="textarea" style="width: 370px;" />
  45. <#elseif column.formType = 'Radio'>
  46. <#if (column.dictName)?? && (column.dictName)!="">
  47. <el-radio v-model="form.${column.changeColumnName}" v-for="item in dict.${column.dictName}" :key="item.id" :label="item.value">{{ item.label }}</el-radio>
  48. <#else>
  49. 未设置字典,请手动设置 Radio
  50. </#if>
  51. <#elseif column.formType = 'Select'>
  52. <#if (column.dictName)?? && (column.dictName)!="">
  53. <el-select v-model="form.${column.changeColumnName}" filterable placeholder="请选择">
  54. <el-option
  55. v-for="item in dict.${column.dictName}"
  56. :key="item.id"
  57. :label="item.label"
  58. :value="item.value" />
  59. </el-select>
  60. <#else>
  61. 未设置字典,请手动设置 Select
  62. </#if>
  63. <#else>
  64. <el-date-picker v-model="form.${column.changeColumnName}" type="datetime" style="width: 370px;" />
  65. </#if>
  66. </el-form-item>
  67. </#if>
  68. </#list>
  69. </#if>
  70. </el-form>
  71. <div slot="footer" class="dialog-footer">
  72. <el-button type="text" @click="crud.cancelCU">取消</el-button>
  73. <el-button :loading="crud.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
  74. </div>
  75. </el-dialog>
  76. <!--表格渲染-->
  77. <el-table ref="table" v-loading="crud.loading" :data="crud.data" size="small" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
  78. <el-table-column type="selection" width="55" />
  79. <#if columns??>
  80. <#list columns as column>
  81. <#if column.columnShow>
  82. <#if (column.dictName)?? && (column.dictName)!="">
  83. <el-table-column prop="${column.changeColumnName}" label="<#if column.remark != ''>${column.remark}<#else>${column.changeColumnName}</#if>">
  84. <template slot-scope="scope">
  85. {{ dict.label.${column.dictName}[scope.row.${column.changeColumnName}] }}
  86. </template>
  87. </el-table-column>
  88. <#elseif column.columnType != 'Timestamp'>
  89. <el-table-column prop="${column.changeColumnName}" label="<#if column.remark != ''>${column.remark}<#else>${column.changeColumnName}</#if>" />
  90. <#else>
  91. <el-table-column prop="${column.changeColumnName}" label="<#if column.remark != ''>${column.remark}<#else>${column.changeColumnName}</#if>">
  92. <template slot-scope="scope">
  93. <span>{{ parseTime(scope.row.${column.changeColumnName}) }}</span>
  94. </template>
  95. </el-table-column>
  96. </#if>
  97. </#if>
  98. </#list>
  99. </#if>
  100. <el-table-column v-permission="['admin','${changeClassName}:edit','${changeClassName}:del']" label="操作" width="150px" align="center">
  101. <template slot-scope="scope">
  102. <udOperation
  103. :data="scope.row"
  104. :permission="permission"
  105. />
  106. </template>
  107. </el-table-column>
  108. </el-table>
  109. <!--分页组件-->
  110. <pagination />
  111. </div>
  112. </div>
  113. </template>
  114. <script>
  115. import crud${className} from '@/api/${changeClassName}'
  116. import CRUD, { presenter, header, form, crud } from '@crud/crud'
  117. import rrOperation from '@crud/RR.operation'
  118. import crudOperation from '@crud/CRUD.operation'
  119. import udOperation from '@crud/UD.operation'
  120. import pagination from '@crud/Pagination'
  121. const defaultForm = { <#if columns??><#list columns as column>${column.changeColumnName}: null<#if column_has_next>, </#if></#list></#if> }
  122. export default {
  123. name: '${className}',
  124. components: { pagination, crudOperation, rrOperation, udOperation },
  125. mixins: [presenter(), header(), form(defaultForm), crud()],
  126. <#if hasDict>
  127. dicts: [<#if hasDict??><#list dicts as dict>'${dict}'<#if dict_has_next>, </#if></#list></#if>],
  128. </#if>
  129. cruds() {
  130. return CRUD({ title: '${apiAlias}', url: 'api/${changeClassName}', idField: '${pkChangeColName}', sort: '${pkChangeColName},desc', crudMethod: { ...crud${className} }})
  131. },
  132. data() {
  133. return {
  134. permission: {
  135. add: ['admin', '${changeClassName}:add'],
  136. edit: ['admin', '${changeClassName}:edit'],
  137. del: ['admin', '${changeClassName}:del']
  138. },
  139. rules: {
  140. <#if isNotNullColumns??>
  141. <#list isNotNullColumns as column>
  142. <#if column.istNotNull>
  143. ${column.changeColumnName}: [
  144. { required: true, message: '<#if column.remark != ''>${column.remark}</#if>不能为空', trigger: 'blur' }
  145. ]<#if column_has_next>,</#if>
  146. </#if>
  147. </#list>
  148. </#if>
  149. }<#if hasQuery>,
  150. queryTypeOptions: [
  151. <#if queryColumns??>
  152. <#list queryColumns as column>
  153. <#if column.queryType != 'BetWeen'>
  154. { key: '${column.changeColumnName}', display_name: '<#if column.remark != ''>${column.remark}<#else>${column.changeColumnName}</#if>' }<#if column_has_next>,</#if>
  155. </#if>
  156. </#list>
  157. </#if>
  158. ]
  159. </#if>
  160. }
  161. },
  162. methods: {
  163. // 钩子:在获取表格数据之前执行,false 则代表不获取数据
  164. [CRUD.HOOK.beforeRefresh]() {
  165. return true
  166. }
  167. }
  168. }
  169. </script>
  170. <style scoped>
  171. </style>