main.vue 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. <template>
  2. <div class="organize-tree">
  3. <div v-if="list && list.length > 0">
  4. <div
  5. v-for="item in list"
  6. :key="item.updatetime"
  7. class="organize-tree-node"
  8. @click="openChildren($event, item)"
  9. >
  10. <div class="organize-box">
  11. <span class="label">
  12. {{ item.name }}
  13. </span>
  14. <i class="el-icon-arrow-right"></i>
  15. <span class="btn-list" @click="(e) => e.stopPropagation()">
  16. <el-button
  17. v-if="powers.some((i) => i == '005')"
  18. type="warning"
  19. size="mini"
  20. @click="
  21. addEdit(
  22. $event,
  23. item.id,
  24. level === 3 ? item.menuid : item.pid,
  25. level,
  26. false,
  27. false,
  28. item
  29. )
  30. "
  31. >
  32. 修改
  33. </el-button>
  34. <el-button
  35. v-if="powers.some((i) => i == '004')"
  36. :type="item.status === '1' ? 'primary' : 'info'"
  37. size="mini"
  38. @click="
  39. status(
  40. $event,
  41. item.id,
  42. level === 3 ? item.menuid : item.pid,
  43. level,
  44. item.status
  45. )
  46. "
  47. >
  48. {{ item.status === "1" ? "禁用" : "启用" }}
  49. </el-button>
  50. <!-- <el-button
  51. v-if="powers.some((i)=> i == '006')"
  52. type="danger"
  53. size="mini"
  54. @click="
  55. detail(
  56. $event,
  57. item.id,
  58. level === 3 ? item.menuid : item.pid,
  59. level,
  60. item.status
  61. )
  62. "
  63. >
  64. 详情
  65. </el-button> -->
  66. </span>
  67. </div>
  68. </div>
  69. </div>
  70. <!-- -->
  71. <!-- vif{{ page }}--{{ page.total }}--{{}} -->
  72. <div
  73. class="Pagination"
  74. style="text-align: right; margin-top: 10px"
  75. v-if="page.total > 0"
  76. >
  77. <el-pagination
  78. :current-page="page.curr"
  79. :page-sizes="[15, 50, 100]"
  80. :page-size="page.size"
  81. :size="searchSize"
  82. layout="total, sizes, prev, pager, next, jumper"
  83. :total="page.total"
  84. @size-change="$emit('page-size-change', $event)"
  85. @current-change="$emit('page-curr-change', $event)"
  86. />
  87. </div>
  88. </div>
  89. </template>
  90. <script>
  91. export default {
  92. name: "goodsClassTree",
  93. props: ["list", "level", "page"],
  94. computed: {
  95. powers() {
  96. const tran =
  97. this.$store.getters.btnList.find((i) => i.menu_route == "goodsClass") || {};
  98. const { action } = tran ?? {};
  99. return action ?? [];
  100. },
  101. },
  102. data() {
  103. return {
  104. newlist: "",
  105. index: 0, // icon 箭头
  106. // page: {
  107. // type: [Boolean, Object],
  108. // default: false,
  109. // },
  110. };
  111. },
  112. methods: {
  113. addEdit(e, id, pid, level, isDetail, isAdd, formData) {
  114. e.stopPropagation();
  115. this.$emit("addEdit", id, pid, level, isDetail, isAdd, formData);
  116. },
  117. openChildren(e, item) {
  118. e.stopPropagation();
  119. this.$emit("openChildren", item);
  120. },
  121. status(e, id, pid, level, status) {
  122. e.stopPropagation();
  123. this.$emit("status", id, pid, level, status);
  124. },
  125. // detail(e, id, pid, level, status) {
  126. // e.stopPropagation();
  127. // this.$emit("detail", id, pid, level, status);
  128. // },
  129. },
  130. };
  131. </script>
  132. <style lang="scss">
  133. .organize-tree {
  134. margin-left: 18px;
  135. cursor: pointer;
  136. .el-button--mini {
  137. padding: 6px 10px;
  138. margin-top: 5px;
  139. }
  140. .organize-tree-node:nth-of-type(odd) {
  141. background: rgba(75, 157, 177, 0.1);
  142. }
  143. .organize-tree-node:nth-of-type(even) {
  144. background: rgba(249, 168, 110, 0.1);
  145. }
  146. .organize-tree-node {
  147. display: block;
  148. margin: 5px 0 5px 5px;
  149. padding: 0 7px 2px 10px;
  150. line-height: 35px;
  151. .btn-list {
  152. display: block;
  153. float: right;
  154. }
  155. i.el-icon-arrow-right {
  156. font-size: 16px;
  157. width: 22px;
  158. height: 35px;
  159. line-height: 38px;
  160. vertical-align: top;
  161. margin: auto;
  162. }
  163. .label {
  164. font-size: 16px;
  165. }
  166. .staff {
  167. // padding:0 0 0 5px;
  168. // background: #eee;
  169. .user-box {
  170. display: inline-block;
  171. vertical-align: top;
  172. width: 25px;
  173. height: 25px;
  174. line-height: 25px;
  175. font-size: 15px;
  176. text-align: center;
  177. border-radius: 50%;
  178. overflow: hidden;
  179. background: #63cbe7;
  180. color: #fff;
  181. margin: 6px 5px 0 3px;
  182. small {
  183. font-size: 8px;
  184. }
  185. }
  186. .staff-name {
  187. display: inline-block;
  188. height: 38px;
  189. line-height: 38px;
  190. vertical-align: top;
  191. }
  192. }
  193. }
  194. }
  195. </style>