classify.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. <template>
  2. <div class="article-manager">
  3. <Card :bordered="false" dis-hover class="ivu-mt">
  4. <Form ref="artFrom" :model="artFrom" :label-width="75" label-position="right" @submit.native.prevent>
  5. <Row type="flex">
  6. <Col v-bind="grid">
  7. <Button v-auth="['product-save-cate']" type="primary" class="bnt" icon="md-add"
  8. @click="addClass">添加分类</Button>
  9. </Col>
  10. </Row>
  11. </Form>
  12. <vxe-table class="mt25" highlight-hover-row :loading="loading" header-row-class-name="false"
  13. :tree-config="{ children: 'children' }" :data="tableData">
  14. <vxe-table-column field="merchant_category_id" title="ID" tooltip width="80"></vxe-table-column>
  15. <vxe-table-column field="category_name" tree-node title="分类名称" min-width="250"></vxe-table-column>
  16. <!-- <vxe-table-column field="pic" title="分类图标" min-width="100">
  17. <template v-slot="{ row }">
  18. <div class="tabBox_img" v-viewer v-if="row.pic">
  19. <img v-lazy="row.pic" />
  20. </div>
  21. </template>
  22. </vxe-table-column> -->
  23. <!-- <vxe-table-column field="is_show" title="状态" min-width="120">
  24. <template v-slot="{ row }">
  25. <i-switch v-model="row.is_show" :value="row.is_show" :true-value="1" :false-value="0"
  26. @on-change="onchangeIsShow(row)" size="large">
  27. <span slot="open">显示</span>
  28. <span slot="close">隐藏</span>
  29. </i-switch>
  30. </template>
  31. </vxe-table-column> -->
  32. <vxe-table-column field="date" title="操作" width="250" fixed="right" align="center">
  33. <template v-slot="{ row, index }">
  34. <a @click="edit(row)">编辑</a>
  35. <Divider type="vertical" />
  36. <a @click="del(row, '删除商户分类', index)">删除</a>
  37. </template>
  38. </vxe-table-column>
  39. </vxe-table>
  40. <!-- <div class="acea-row row-right page">-->
  41. <!-- <Page :total="total" :current="artFrom.page" show-elevator show-total @on-change="pageChange"-->
  42. <!-- :page-size="artFrom.limit"/>-->
  43. <!-- </div>-->
  44. </Card>
  45. <!-- 添加 编辑表单-->
  46. <edit-from ref="edits" :FromData="FromData" @submitFail="userSearchs"></edit-from>
  47. </div>
  48. </template>
  49. <script>
  50. import {
  51. mapState
  52. } from 'vuex';
  53. import {
  54. lst,
  55. addcreate,
  56. getedit,
  57. editcategory,
  58. deletecategory,
  59. getCreate
  60. } from '@/api/shop';
  61. import editFrom from '../../components/from/from';
  62. export default {
  63. name: 'shop_shopClassify',
  64. components: {
  65. editFrom,
  66. },
  67. data() {
  68. return {
  69. treeSelect: [],
  70. FromData: null,
  71. grid: {
  72. xl: 7,
  73. lg: 7,
  74. md: 12,
  75. sm: 24,
  76. xs: 24,
  77. },
  78. loading: false,
  79. artFrom: {
  80. page: 1,
  81. limit: 15,
  82. },
  83. total: 0,
  84. tableData: [],
  85. };
  86. },
  87. computed: {
  88. ...mapState('admin/userLevel', ['categoryId']),
  89. },
  90. mounted() {
  91. this.getList();
  92. },
  93. methods: {
  94. // 列表
  95. getList() {
  96. this.loading = true;
  97. lst(this.artFrom)
  98. .then(async (res) => {
  99. this.tableData = res.data
  100. console.log(this.tableData, 'info');
  101. this.loading = false;
  102. })
  103. .catch((res) => {
  104. this.loading = false;
  105. this.$Message.error(res.msg);
  106. });
  107. },
  108. pageChange(index) {
  109. this.artFrom.page = index;
  110. this.getList();
  111. },
  112. // 添加
  113. addClass() {
  114. this.$modalForm(getCreate()).then(() => this.getList());
  115. },
  116. // 编辑
  117. edit(row) {
  118. console.log(row, 'info');
  119. this.$modalForm(getedit({}, row.merchant_category_id)).then(() => this.getList());
  120. },
  121. // 修改状态
  122. onchangeIsShow(row) {
  123. let data = {
  124. id: row.id,
  125. is_show: row.is_show,
  126. };
  127. setShowApi(data)
  128. .then(async (res) => {
  129. this.$Message.success(res.msg);
  130. })
  131. .catch((res) => {
  132. this.$Message.error(res.msg);
  133. });
  134. },
  135. // 下拉树
  136. handleCheckChange(data) {
  137. let value = '';
  138. let title = '';
  139. this.list = [];
  140. this.artFrom.pid = 0;
  141. data.forEach((item, index) => {
  142. value += `${item.id},`;
  143. title += `${item.title},`;
  144. });
  145. value = value.substring(0, value.length - 1);
  146. title = title.substring(0, title.length - 1);
  147. this.list.push({
  148. value,
  149. title,
  150. });
  151. this.artFrom.pid = value;
  152. this.getList();
  153. },
  154. // 删除
  155. del(row, tit, num) {
  156. let delfromData = {
  157. title: tit,
  158. num: num,
  159. url: `merchant/category/delete/${row.merchant_category_id}`,
  160. method: 'get',
  161. ids: '',
  162. };
  163. this.$modalSure(delfromData)
  164. .then((res) => {
  165. this.$Message.success(res.msg);
  166. this.getList();
  167. })
  168. .catch((res) => {
  169. this.$Message.error(res.msg);
  170. });
  171. },
  172. // 表格搜索
  173. userSearchs() {
  174. this.artFrom.page = 1;
  175. this.getList();
  176. },
  177. },
  178. };
  179. </script>
  180. <style scoped lang="stylus">
  181. .treeSel>>>.ivu-select-dropdown-list {
  182. padding: 0 10px !important;
  183. box-sizing: border-box;
  184. }
  185. .tabBox_img {
  186. width: 36px;
  187. height: 36px;
  188. border-radius: 4px;
  189. cursor: pointer;
  190. img {
  191. width: 100%;
  192. height: 100%;
  193. }
  194. }
  195. </style>