item-list-layer.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. <template>
  2. <el-dialog
  3. title="选择花材"
  4. :visible.sync="selDialog"
  5. :close-on-click-modal="false"
  6. :append-to-body="true"
  7. width="800px"
  8. >
  9. <div class="recharge-modal-content">
  10. <el-checkbox-group v-model="checkList" class="radio-wrap">
  11. <x-crud class="liu-crud-wrap" @load="onLoad">
  12. <template #table-column-radio="{scope}">
  13. <div>
  14. <el-checkbox v-if="scope.row.select == 2" disabled :label="scope.row.index">选择</el-checkbox>
  15. <el-checkbox v-else :label="scope.row.index">选择</el-checkbox>
  16. </div>
  17. </template>
  18. <template #table-column-select="{scope}">
  19. <i class="el-icon-success" v-if="scope.row.select == 2" style="color: #67c23a; font-size: 19px"></i>
  20. <i class="el-icon-success" v-else style="color: #c0c4cc; font-size: 19px"></i>
  21. </template>
  22. <template #table-column-cover="{scope}">
  23. <div>
  24. <cl-avatar
  25. shape="square"
  26. :size="40"
  27. :src="scope.row.cover | default_avatar"
  28. :style="{ margin: 'auto' }"
  29. ></cl-avatar>
  30. </div>
  31. </template>
  32. </x-crud>
  33. </el-checkbox-group>
  34. </div>
  35. <div slot="footer" class="dialog-footer">
  36. <el-button size="small" @click="resetForm">取 消</el-button>
  37. <el-button type="primary" size="small" @click="confirmFn">确定</el-button>
  38. </div>
  39. </el-dialog>
  40. </template>
  41. <script>
  42. export default {
  43. name: 'sj-list-layer',
  44. props: {
  45. show: {
  46. type: Boolean,
  47. default: false
  48. },
  49. multi: {
  50. type: Boolean,
  51. default: false
  52. }
  53. },
  54. data() {
  55. return {
  56. selDialog: false,
  57. ruleForm: {},
  58. checkList: [],
  59. list: [],
  60. selData: {}
  61. };
  62. },
  63. computed: {
  64. },
  65. watch: {
  66. show(val) {
  67. this.selDialog = val;
  68. }
  69. },
  70. created() {},
  71. methods: {
  72. confirmFn() {
  73. this.$emit('confirm', this.list[this.checkList]);
  74. },
  75. resetForm() {
  76. this.$emit('cancel');
  77. },
  78. onLoad({ ctx, app }) {
  79. this.app = app;
  80. let getItemList = () => {
  81. return this.$service.ptItem.list();
  82. };
  83. ctx.service({
  84. page: getItemList
  85. })
  86. .set('table', {
  87. columns: [
  88. {
  89. prop: 'radio',
  90. label: '选择',
  91. align: 'center',
  92. width: 120
  93. },
  94. {
  95. prop: 'cover',
  96. label: '图片',
  97. align: 'center',
  98. width: 130
  99. },
  100. {
  101. prop: 'name',
  102. label: '名称',
  103. align: 'center'
  104. },
  105. {
  106. prop: 'select',
  107. label: '已添加',
  108. align: 'center'
  109. }
  110. ],
  111. on: {
  112. 'row-click': (row, column) => {
  113. console.log(666666666666666)
  114. if (column.property && row.children) {
  115. app.refs('table').toggleRowExpansion(row);
  116. }
  117. }
  118. },
  119. // 操作列
  120. op: {
  121. visible: false // 是否显示
  122. }
  123. })
  124. .set('dict', {
  125. search: {
  126. keyWord: 'name'
  127. }
  128. })
  129. .set('search', {
  130. key: {
  131. placeholder: '花材名称,支持拼音首字母'
  132. }
  133. })
  134. .set('pagination', {
  135. size: 6
  136. })
  137. .set('layout', [
  138. ['slot-tabs'],
  139. ['search-key', 'flex1', 'refresh-btn'],
  140. ['data-table'],
  141. ['flex1', 'pagination']
  142. ])
  143. .on('refresh', async (params, { next, render }) => {
  144. // 继续执行刷新
  145. let { list } = await next(params);
  146. list.map((e, index) => {
  147. e.index = index;
  148. });
  149. this.list = list;
  150. render(list);
  151. })
  152. .done();
  153. app.refresh({ type: this.tabIndex });
  154. }
  155. }
  156. };
  157. </script>
  158. <style lang="scss">
  159. // 列表
  160. .radio-wrap {
  161. display: block;
  162. }
  163. </style>