qj-common 4.3.0 → 4.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/.babelrc +12 -12
  2. package/.eslintrc.js +25 -25
  3. package/.idea/common.iml +11 -11
  4. package/.idea/modules.xml +7 -7
  5. package/.idea/vcs.xml +5 -5
  6. package/.postcssrc.js +9 -9
  7. package/.prettierrc.js +7 -7
  8. package/.project +37 -37
  9. package/README.md +2 -2
  10. package/gulpfile.js +20 -20
  11. package/package.json +18 -18
  12. package/src/api/apimanage.js +146 -146
  13. package/src/api/common/index.js +192 -192
  14. package/src/api/login.js +160 -160
  15. package/src/api/shopFbu.js +515 -515
  16. package/src/api/upload.js +8 -8
  17. package/src/components/Bounced/index.vue +145 -145
  18. package/src/components/Breadcrumb/index.vue +71 -71
  19. package/src/components/Checkbox/index.vue +53 -53
  20. package/src/components/Hamburger/index.vue +48 -48
  21. package/src/components/Logistics/logic.vue +186 -186
  22. package/src/components/ScrollBar/index.vue +60 -60
  23. package/src/components/Sticky/index.vue +76 -76
  24. package/src/components/SvgIcon/index.vue +42 -42
  25. package/src/components/ThemePicker/index.vue +243 -243
  26. package/src/components/Tinymce/components/editorImage.vue +94 -94
  27. package/src/components/Tinymce/index.vue +166 -166
  28. package/src/components/Tinymce/plugins.js +7 -7
  29. package/src/components/Tinymce/toolbar.js +6 -6
  30. package/src/components/TreeTable/customEval.js +44 -44
  31. package/src/components/TreeTable/eval.js +29 -29
  32. package/src/components/TreeTable/index.vue +124 -124
  33. package/src/components/TreeTable/readme.md +89 -89
  34. package/src/components/TreeTableApi/customEval.js +49 -49
  35. package/src/components/TreeTableApi/eval.js +29 -29
  36. package/src/components/TreeTableApi/index.vue +124 -124
  37. package/src/components/TreeTableApi/readme.md +89 -89
  38. package/src/components/Upload/singleImage.vue +123 -123
  39. package/src/components/Upload/singleImage2.vue +118 -118
  40. package/src/components/Upload/singleImage3.vue +138 -138
  41. package/src/components/Upload/upload.vue +295 -295
  42. package/src/components/workOrderList/index.vue +158 -158
  43. package/src/dependencies.js +119 -119
  44. package/src/iconShop/demo.css +539 -539
  45. package/src/iconShop/demo_index.html +8445 -8445
  46. package/src/iconShop/iconfont.css +1451 -1451
  47. package/src/iconShop/iconfont.json +2522 -2522
  48. package/src/iconShop/iconfont.svg +1070 -1070
  49. package/src/iconfont/demo.css +539 -539
  50. package/src/iconfont/demo_index.html +5276 -5276
  51. package/src/iconfont/iconfont.css +905 -905
  52. package/src/iconfont/iconfont.json +1563 -1563
  53. package/src/iconfont/iconfont.svg +692 -692
  54. package/src/icons/index.js +9 -9
  55. package/src/lang/e.js +48 -48
  56. package/src/lang/en.js +48 -48
  57. package/src/lang/zh.js +48 -48
  58. package/src/main.js +62 -62
  59. package/src/permission.js +283 -283
  60. package/src/permissionForMall.backup.js +375 -375
  61. package/src/permissionForMall.js +375 -375
  62. package/src/preset.js +67 -67
  63. package/src/router/_import_common.js +1 -1
  64. package/src/router/_import_development.js +1 -1
  65. package/src/router/_import_production.js +1 -1
  66. package/src/store/getters.js +39 -39
  67. package/src/store/index.js +18 -18
  68. package/src/store/modules/app.js +34 -30
  69. package/src/store/modules/menu.js +82 -82
  70. package/src/store/modules/user.js +227 -227
  71. package/src/styles/element-ui.scss +1368 -1368
  72. package/src/styles/index.scss +166 -166
  73. package/src/styles/mixin.scss +27 -27
  74. package/src/styles/pc-ui.scss +1031 -1031
  75. package/src/styles/scrollBar.scss +21 -21
  76. package/src/styles/sidebar.scss +123 -123
  77. package/src/styles/transition.scss +32 -32
  78. package/src/styles/variables.scss +44 -44
  79. package/src/styles/wf-ui.scss +86 -86
  80. package/src/utils/auth.js +57 -57
  81. package/src/utils/dom.js +12 -12
  82. package/src/utils/getQueryString.js +5 -5
  83. package/src/utils/import.js +5 -5
  84. package/src/utils/index.js +355 -355
  85. package/src/utils/interceptor.js +34 -34
  86. package/src/utils/menu.js +116 -116
  87. package/src/utils/proapp.js +35 -35
  88. package/src/utils/query.js +26 -26
  89. package/src/utils/request.js +366 -366
  90. package/src/utils/routeMapping.js +39 -39
  91. package/src/utils/routeMapping.json +310 -310
  92. package/src/utils/utils.js +84 -84
  93. package/src/utils/validate.js +102 -102
  94. package/src/views/404.vue +72 -72
  95. package/src/views/Layout.vue +106 -106
  96. package/src/views/imgSwiper/index.vue +34 -34
  97. package/src/views/layout/Layout.vue +181 -170
  98. package/src/views/layout/components/AppMain.vue +20 -20
  99. package/src/views/layout/components/Footer.vue +22 -22
  100. package/src/views/layout/components/LeftNavbar.vue +318 -310
  101. package/src/views/layout/components/NavMenu.vue +15 -15
  102. package/src/views/layout/components/Navbar.vue +664 -661
  103. package/src/views/layout/components/Sidebar/SidebarItem.vue +116 -113
  104. package/src/views/layout/components/Sidebar/index.vue +203 -193
  105. package/src/views/layout/components/index.js +19 -19
  106. package/src/views/layout/theme/darkBlue/Layout.vue +140 -140
  107. package/src/views/layout/theme/darkBlue/components/AppMain.vue +38 -38
  108. package/src/views/layout/theme/darkBlue/components/Footer.vue +147 -147
  109. package/src/views/layout/theme/darkBlue/components/LeftNavbar(/345/261/225/347/244/272/345/205/250/351/203/250/350/217/234/345/215/225).vue +448 -448
  110. package/src/views/layout/theme/darkBlue/components/LeftNavbar.3.vue +191 -191
  111. package/src/views/layout/theme/darkBlue/components/LeftNavbar.vue +466 -466
  112. package/src/views/layout/theme/darkBlue/components/Navbar.vue +200 -200
  113. package/src/views/layout/theme/darkBlue/components/Sidebar/SidebarItem.vue +71 -71
  114. package/src/views/layout/theme/darkBlue/components/Sidebar/index.vue +49 -49
  115. package/src/views/layout/theme/darkBlue/components/index.js +15 -15
  116. package/src/views/layout-default/Layout.vue +134 -134
  117. package/src/views/layout-default/components/AppMain.vue +19 -19
  118. package/src/views/layout-default/components/Footer.vue +22 -22
  119. package/src/views/layout-default/components/LeftNavbar.vue +164 -164
  120. package/src/views/layout-default/components/Navbar.vue +295 -295
  121. package/src/views/layout-default/components/Sidebar/SidebarItem.vue +67 -67
  122. package/src/views/layout-default/components/Sidebar/index.vue +59 -59
  123. package/src/views/layout-default/components/index.js +4 -4
  124. package/src/views/layout-default/theme/darkBlue/Layout.vue +140 -140
  125. package/src/views/layout-default/theme/darkBlue/components/AppMain.vue +38 -38
  126. package/src/views/layout-default/theme/darkBlue/components/Footer.vue +147 -147
  127. package/src/views/layout-default/theme/darkBlue/components/LeftNavbar.vue +465 -465
  128. package/src/views/layout-default/theme/darkBlue/components/Navbar.vue +200 -200
  129. package/src/views/layout-default/theme/darkBlue/components/Sidebar/SidebarItem.vue +69 -69
  130. package/src/views/layout-default/theme/darkBlue/components/Sidebar/index.vue +49 -49
  131. package/src/views/layout-default/theme/darkBlue/components/index.js +15 -15
  132. package/src/views/pc/Internationalization.vue +80 -80
  133. package/src/views/pc/default/Layout.vue +442 -442
  134. package/src/views/pc/default/LayoutCard.vue +424 -424
  135. package/src/views/pc/default/assets/flex.scss +99 -99
  136. package/src/views/pc/default/footer-modules/DgFooter/index.vue +179 -179
  137. package/src/views/pc/default/footer-modules/DgFooter/indexSDX.vue +187 -187
  138. package/src/views/pc/default/footer-modules/footer.vue +171 -171
  139. package/src/views/pc/default/footer-modules/footerAns.vue +167 -167
  140. package/src/views/pc/default/footer-modules/footerBulk.vue +169 -169
  141. package/src/views/pc/default/footer-modules/footerDM.vue +254 -254
  142. package/src/views/pc/default/footer-modules/footerDefault.vue +267 -267
  143. package/src/views/pc/default/footer-modules/footerDefaultA.vue +270 -270
  144. package/src/views/pc/default/footer-modules/footerDefaultNew.vue +201 -201
  145. package/src/views/pc/default/footer-modules/footerHDB.vue +153 -153
  146. package/src/views/pc/default/footer-modules/footerHy.vue +63 -63
  147. package/src/views/pc/default/footer-modules/footerKYW.vue +163 -163
  148. package/src/views/pc/default/footer-modules/footerMh.vue +30 -30
  149. package/src/views/pc/default/footer-modules/footerNew.vue +116 -116
  150. package/src/views/pc/default/footer-modules/footer_yzj.vue +169 -169
  151. package/src/views/pc/default/footer-modules/footerayd.vue +85 -85
  152. package/src/views/pc/default/footer-modules/ymFooter.vue +154 -154
  153. package/src/views/pc/default/footer-modules/zgl.vue +250 -250
  154. package/src/views/pc/default/header-modules/DgHeader/Logo.vue +57 -57
  155. package/src/views/pc/default/header-modules/DgHeader/Search.vue +135 -135
  156. package/src/views/pc/default/header-modules/DgHeader/Settleup.vue +46 -46
  157. package/src/views/pc/default/header-modules/DgHeader/index.vue +38 -38
  158. package/src/views/pc/default/header-modules/active.vue +177 -177
  159. package/src/views/pc/default/header-modules/header.vue +97 -97
  160. package/src/views/pc/default/header-modules/headerA.vue +142 -142
  161. package/src/views/pc/default/header-modules/headerFLPT.vue +157 -157
  162. package/src/views/pc/default/header-modules/headerMh.vue +187 -187
  163. package/src/views/pc/default/header-modules/headerNew.vue +121 -121
  164. package/src/views/pc/default/header-modules/headerSDX.vue +304 -304
  165. package/src/views/pc/default/header-modules/headerStyle2.vue +173 -173
  166. package/src/views/pc/default/header-modules/headerStyle3.vue +190 -190
  167. package/src/views/pc/default/header-modules/headerStyle4.vue +163 -163
  168. package/src/views/pc/default/header-modules/headerStyleAns.vue +400 -400
  169. package/src/views/pc/default/header-modules/headerStyleBulk.vue +427 -427
  170. package/src/views/pc/default/header-modules/headerStyleDefalut.vue +209 -209
  171. package/src/views/pc/default/header-modules/headerStyleKYW.vue +435 -435
  172. package/src/views/pc/default/header-modules/headerStyle_yzj.vue +427 -427
  173. package/src/views/pc/default/header-modules/headerayd.vue +187 -187
  174. package/src/views/pc/default/header-modules/index.vue +466 -466
  175. package/src/views/pc/default/header-modules/ymHeader.vue +292 -292
  176. package/src/views/pc/default/header-modules/ysHeader.vue +248 -248
  177. package/src/views/pc/default/header-modules/zgl.vue +855 -855
  178. package/src/views/pc/default/leftMenu-modules/leftMenu-logo.vue +194 -194
  179. package/src/views/pc/default/leftMenu-modules/leftMenu-style2.vue +206 -206
  180. package/src/views/pc/default/leftMenu-modules/leftMenu-style3.vue +207 -207
  181. package/src/views/pc/default/leftMenu-modules/leftMenu-style4.vue +192 -192
  182. package/src/views/pc/default/leftMenu-modules/leftMenu.vue +183 -183
  183. package/src/views/pc/default/leftMenu-modules/leftMenuDefault.vue +212 -212
  184. package/src/views/pc/default/leftMenu-modules/leftMenuDefaultEn.vue +214 -214
  185. package/src/views/pc/default/leftMenu-modules/leftMenuDefaultFLPT.vue +220 -220
  186. package/src/views/pc/default/leftMenu-modules/leftMenuDefaultayd.vue +220 -220
  187. package/src/views/pc/default/nav-modules/nav.vue +52 -52
  188. package/src/views/pc/default/nav-modules/navAns.vue +60 -60
  189. package/src/views/pc/default/nav-modules/navBulk.vue +60 -60
  190. package/src/views/pc/default/top-modules/DgTopShortcut/index.vue +177 -177
  191. package/src/views/pc/default/top-modules/Toplg.vue +280 -280
  192. package/src/views/pc/default/top-modules/topA.vue +136 -136
  193. package/src/views/pc/default/top-modules/topAns.vue +261 -261
  194. package/src/views/pc/default/top-modules/topAns_yzj.vue +282 -282
  195. package/src/views/pc/default/top-modules/topBar.vue +304 -304
  196. package/src/views/pc/default/top-modules/topBulk.vue +280 -280
  197. package/src/views/pc/default/top-modules/topDefault.vue +244 -244
  198. package/src/views/pc/default/top-modules/topDefaultDM.vue +197 -197
  199. package/src/views/pc/default/top-modules/topDefaultNew.vue +271 -271
  200. package/src/views/pc/default/top-modules/topFLPT.vue +197 -197
  201. package/src/views/pc/default/top-modules/topHDB.vue +479 -479
  202. package/src/views/pc/default/top-modules/topKYW.vue +258 -258
  203. package/src/views/pc/default/top-modules/topMh.vue +174 -174
  204. package/src/views/pc/default/top-modules/topNew.vue +97 -97
  205. package/src/views/pc/default/top-modules/topSDX.vue +298 -298
  206. package/src/views/pc/default/top-modules/topSimple.vue +247 -247
  207. package/src/views/pc/default/top-modules/topSimpleHy.vue +256 -256
  208. package/src/views/pc/default/top-modules/topUcc.vue +264 -264
  209. package/src/views/pc/default/top-modules/topayd.vue +170 -170
  210. package/src/views/pc/default/top-modules/ymTop.vue +299 -299
  211. package/src/views/pc/default/top-modules/zgltop.vue +499 -499
  212. package/src/views/routerView.vue +9 -9
  213. package/src/views/templates/components/temp-select.vue +80 -80
  214. package/src/views/templates/components/temp-upload.vue +233 -233
  215. package/src/views/templates/readme.md +2 -2
  216. package/src/views/templates/templateInput.vue +421 -421
  217. package/src/views/templates/templateReadme.html +588 -588
  218. package/src/views/templates/templateReadme.md +619 -619
  219. package/src/views/templates/templateTable.vue +2243 -2243
  220. package/src/views/templates/templateTableData.vue +1883 -1883
  221. package/src/views/templates/templateUi/templateTableContent.vue +187 -187
  222. package/src/views/treeTemplate/index.vue +559 -559
  223. package/src/views/treeTemplate/treeTemplate.md +274 -274
  224. package/src/views/uploadDialog/index copy.vue +352 -352
  225. package/src/views/uploadDialog/index.vue +558 -558
  226. package/src/views/uploadDialog/indexOlay.vue +582 -582
  227. package/src/views/uploadDialog/indexPM.vue +578 -578
  228. package/src/views/uploadDialog/indexUpload.vue +543 -543
  229. package/src/views/uploadDialog/readme.md +45 -45
@@ -1,559 +1,559 @@
1
- <template>
2
- <div class="template-tree auto">
3
- <!--header-->
4
- <div v-if="temInput" class="tem-header">
5
- <div v-if="'filter' in temTree" class="filter-input new-filter-input">
6
- <span>分类搜索:</span>
7
- <el-input v-model="filterText" clearable placeholder="请输入分类名称" />
8
- </div>
9
- <ul class="clearfix">
10
- <li v-for="(item, index) in temInput" :key="index">
11
- <label v-if="'label' in item">{{ item.label }}:</label>
12
- <div v-if="'type' in item && item.type === 'text'">
13
- <el-input v-model="item.value" :placeholder="'placeholder' in item ? item.placeholder : ''" />
14
- </div>
15
- <div v-if="'type' in item && item.type === 'select'">
16
- <el-select v-model="item.value" :placeholder="'placeholder' in item ? item.placeholder : ''">
17
- <el-option v-for="item2 in item.options" v-if="'options' in item" :key="item2.value" :label="item2.label" :value="item2.value" />
18
- </el-select>
19
- </div>
20
- <div v-if="'type' in item ? item.type === 'date' : ''">
21
- <el-date-picker :v-model="item.value" :placeholder="'placeholder' in item ? item.placeholder : ''" size="small" type="date" value-format="yyyy-MM-dd" />
22
- </div>
23
- <div v-if="'type' in item ? item.type === 'daterange' : ''">
24
- <el-date-picker
25
- v-model="item.value"
26
- :range-separator="'rangeSeparator' in item ? item.rangeSeparator || '-' : '-'"
27
- :start-placeholder="'startPlaceholder' in item ? item.startPlaceholder || '开始时间' : '开始时间'"
28
- :end-placeholder="'endPlaceholder' in item ? item.endPlaceholder || '结束时间' : '结束时间'"
29
- size="small"
30
- type="daterange"
31
- value-format="yyyy-MM-dd"
32
- />
33
- </div>
34
- <div v-if="'btnArray' in item">
35
- <el-button v-for="(itemBtn, indexBtn) in item.btnArray" :key="indexBtn" :type="itemBtn.type" @click="btn(itemBtn, indexBtn)">{{ itemBtn.label }}</el-button>
36
- </div>
37
- </li>
38
- </ul>
39
- </div>
40
-
41
- <ul v-if="'treeHeader' in temTree && temTree.treeHeader.length > 0" class="tem-tree-header">
42
- <li
43
- v-for="(item, index) in temTree.treeHeader"
44
- :key="index"
45
- :style="{
46
- width: item.width ? item.width : 100 / temTree.treeHeader.length + '%',
47
- float: item.type === 'button' ? 'right' : 'left',
48
- 'font-size': item.font ? item.font : '14px',
49
- 'margin-right': item.mr ? item.mr : '0px',
50
- 'margin-left': item.ml ? item.ml : '0px',
51
- 'padding-right': item.pr ? item.pr : '0px',
52
- color: item.color ? item.color : '#666',
53
- 'text-align': item.align ? item.align : 'left',
54
- }"
55
- class="table-left-label"
56
- >
57
- {{ item.name }}
58
- </li>
59
- <!-- temTree里的treeHeader数组里面每个对象控制头部文字,width,type,font,mr,color控制样式 -->
60
- </ul>
61
- <el-tree
62
- v-loading="loading"
63
- ref="tree"
64
- :node-key="nodeLoad.id"
65
- :default-expanded-keys="defaultExpandedKeys"
66
- :props="temTree.props"
67
- :data="treeData"
68
- :indent="temTree.indent || 36"
69
- :expand-on-click-node="false"
70
- :render-after-expand="true"
71
- :load="loadNode"
72
- :lazy="nodeLoad.lazy"
73
- :filter-node-method="filterNode"
74
- :render-content="renderContent"
75
- @node-expand="commt"
76
- />
77
-
78
- <!--编辑-->
79
- <el-dialog v-if="dialogData && dialogData.template" :title="'title' in dialogData.template ? dialogData.template.title : ''" :visible.sync="dialogFormVisible" @close="dialogClose">
80
- <template-input
81
- ref="child"
82
- :tem-input="dialogData.template.html"
83
- :rules="dialogData.template.rules"
84
- :label-width="dialogData.template.labelWidth"
85
- @cancel="dialogCancel"
86
- @getData="getData"
87
- @selChange="selChange"
88
- />
89
- </el-dialog>
90
- </div>
91
- </template>
92
- <script>
93
- import request from '#/utils/request';
94
- import templateInput from '../templates/templateInput';
95
- const querystring = require('querystring');
96
- import { parseTime } from '#/utils/index'; // 时间格式化
97
- export default {
98
- components: {
99
- 'template-input': templateInput,
100
- },
101
- props: ['temInput', 'queryPara', 'temTree', 'nodeLoad'],
102
- data() {
103
- return {
104
- loading: false,
105
- parseTime,
106
- defaultExpandedKeys: [],
107
- ruleForm: {},
108
- dialogFormVisible: false, // dialog编辑是否显示
109
- dialogData: {},
110
- activeName: '',
111
- filterText: '',
112
- btnState: null, // 1表示增加,2表示编辑
113
- treeData: [], // table内容
114
- };
115
- },
116
- watch: {
117
- temTree(val) {
118
- console.log(val, 'temTree');
119
- },
120
- temInput(val) {
121
- console.log(val, 'temInput');
122
- },
123
- filterText(val) {
124
- this.$refs.tree.filter(val);
125
- },
126
- $route: function (to, form) {
127
- //路由改变,重新请求页面
128
- this.getDataList();
129
- },
130
- },
131
- // beforeCreate() {
132
- // this.dialogData
133
- // },
134
- mounted() {
135
- if (!this.nodeLoad.lazy) {
136
- this.getDataList();
137
- }
138
- },
139
- methods: {
140
- filterNode(value, data) {
141
- if (!value) return true;
142
- console.log(data);
143
- return data[this.temTree.props.label].indexOf(value) !== -1;
144
- },
145
- btn(itemBtn, index) {
146
- if (itemBtn.id === 'query' || itemBtn.id === 'search') {
147
- // 表示查询
148
- const searchUrl = 'url' in itemBtn && itemBtn.url ? itemBtn.url : '';
149
- this.getDataList(searchUrl);
150
- } else if (itemBtn.id === 'add') {
151
- itemBtn.template.html.forEach((el) => {
152
- this.$set(this.ruleForm, el.name, el.value);
153
- });
154
- // this.$emit("editClick", val.row, index);
155
- this.dialogData = itemBtn;
156
- this.dialogFormVisible = true;
157
- this.btnState = 1; // 表示增加
158
- }
159
- this.$emit('inputBtnClick', itemBtn, index);
160
- },
161
-
162
- handleClick(item, index, val, node) {
163
- // index表示btn的位置
164
- console.log(val, item, index, 'eeeefff11111223232');
165
- const id = item.id;
166
- /* if (id === 'see') {
167
- // 表示查看
168
- this.$emit('tableSeeClick', val.row, index)
169
- this.openAlert(val, index, 'see')
170
- } else if (id === 'edit') {
171
- // 编辑事件
172
- item.template.html.forEach(el => {
173
- if (el.name in val.row) {
174
- // 判断属性是否存在
175
- el.value = val.row[el.name]
176
- } else {
177
- el.value = '' // 没有值的时候,为空
178
- }
179
- })
180
-
181
- // this.$emit("editClick", val.row, index);
182
- this.dialogData = item
183
- this.dialogFormVisible = true
184
- this.btnState = 2 // 表示编辑
185
- } else*/ if (
186
- id === 'del'
187
- ) {
188
- console.log('删除');
189
- this.delData(val, item, item.url, node);
190
- }
191
- this.$emit('treeBtnClick', item, val, node);
192
- },
193
- commt(node, data) {
194
- // 点击展开的事件
195
- },
196
- selChange(val, item) {
197
- this.$emit('selChange', val, item);
198
- },
199
- dialogCancel() {
200
- // 取消
201
- this.dialogFormVisible = false;
202
- },
203
- dialogClose() {
204
- this.$refs.child.setReset();
205
- this.dialogFormVisible = false;
206
- },
207
- refreshTree(node) {
208
- // defaultExpandedKeys
209
- if (!this.nodeLoad.lazy) {
210
- this.getDataList();
211
- if (node) {
212
- this.defaultExpandedKeys = [node.key];
213
- }
214
- } else {
215
- if (node.parent) {
216
- node.parent.loaded = false;
217
- node.parent.loading = false;
218
- node.parent.expanded = false;
219
- node.parent.expand();
220
- this.defaultExpandedKeys = [node.key];
221
- } else {
222
- this.getDataList();
223
- }
224
- }
225
- },
226
- loadNode(node, resolve) {
227
- console.log(node);
228
- const requestUrl = this.nodeLoad.url ? this.nodeLoad.url : '';
229
- if (requestUrl === '') {
230
- this.$message.error('url not defined');
231
- return false;
232
- }
233
- this.loading = true;
234
- let params = {};
235
- if (node.level === 0) {
236
- params = { ...this.queryPara };
237
- } else {
238
- this.nodeLoad.params.forEach((item) => {
239
- params[item.name] = node.data[item.value];
240
- });
241
- }
242
- request({
243
- url: requestUrl,
244
- method: 'post',
245
- data: querystring.stringify(params),
246
- }).then((res) => {
247
- this.loading = false;
248
- if (node.level === 0) {
249
- if (Array.isArray(res)) {
250
- this.treeData = res;
251
- } else {
252
- this.treeData = res.rows;
253
- }
254
- } else {
255
- if (Array.isArray(res)) {
256
- node.data[this.temTree.props.children] = res;
257
- resolve(res);
258
- } else {
259
- node.data[this.temTree.props.children] = res.rows; // 需要把值放进children
260
- resolve(res.rows);
261
- }
262
- }
263
- });
264
- },
265
- getDataList(paramsUrl) {
266
- const requestUrl = this.nodeLoad.url ? this.nodeLoad.url : paramsUrl || '';
267
- if (requestUrl === '') {
268
- this.$message.error('url not defined');
269
- return false;
270
- }
271
- this.loading = true;
272
- const params = { ...this.queryPara };
273
- // 获取参数
274
- /* this.queryPara.forEach(el => {
275
- params[el.name] = el.value;
276
- });*/
277
- // 查询列表
278
-
279
- request({
280
- url: requestUrl,
281
- method: 'post',
282
- data: querystring.stringify(params),
283
- }).then((res) => {
284
- this.loading = false;
285
- if (Array.isArray(res)) {
286
- this.$emit('getData', res);
287
- this.treeData = res;
288
- } else {
289
- this.$emit('getData', res.rows);
290
- this.treeData = res.rows;
291
- }
292
- });
293
- },
294
- getData(res) {
295
- this.$emit('refreshTree', res);
296
- },
297
- dialogCancel() {
298
- // 取消
299
- this.dialogFormVisible = false;
300
- },
301
-
302
- delData(val, item, url, node) {
303
- const json = {};
304
- for (const el in item.params) {
305
- if (item.params[el] === '') {
306
- json[el] = val[el];
307
- } else {
308
- json[el] = item.params[el];
309
- }
310
- }
311
- if (this.nodeLoad.lazy && node.expanded === false) {
312
- this.$message.error('请展开当前节点,并确认节点下不存在子节点');
313
- return false;
314
- }
315
- if (node.childNodes.length > 0) {
316
- this.$message.error('该节点下存在子节点,不可删除');
317
- return false;
318
- }
319
- this.$confirm('确认删除该分类?')
320
- .then((res) => {
321
- return request({
322
- url: url,
323
- method: 'post',
324
- data: querystring.stringify(json),
325
- })
326
- .then((res) => {
327
- if (res.success) {
328
- this.$message.success(res.msg);
329
- this.remove(node, val); // 删除成功后直接移除节点
330
- } else {
331
- this.$message.error(res.msg);
332
- }
333
- })
334
- .catch((err) => {
335
- console.log(err);
336
- });
337
- })
338
- .catch((err) => {
339
- console.log(err);
340
- });
341
- },
342
- remove(node, data) {
343
- const parent = node.parent;
344
- const children = parent.data[this.temTree.props.children] || parent.data;
345
- const index = children.findIndex((d) => d[this.temTree.props.label] === data[this.temTree.props.label]);
346
- children.splice(index, 1);
347
- },
348
- // <span>{node.label}</span>
349
- renderContent(h, { node, data, store }) {
350
- return (
351
- <div class="template-tree-node">
352
- <div class="template-tree-label">
353
- {'treeHeader' in this.temTree && this.temTree.treeHeader.length > 0
354
- ? this.temTree.treeHeader.map((item, index) => {
355
- if (item.type === 'first') {
356
- return <span class="first-label" style={{ width: item.width }} />;
357
- } else if (item.type === 'button') {
358
- } else {
359
- return (
360
- <span class="table-content" style={{ width: item.width }}>
361
- {item.template && item.template === 'format' ? this.parseTime(data[item.value]) : data[item.value]}
362
- </span>
363
- );
364
- }
365
- })
366
- : ''}
367
- <div class="btn-group">
368
- {this.temTree.treeBtn.map((item, index) => {
369
- if ((item.level && node.level >= item.level) || (item.last == '1' && data.classtreeLast == '0')) {
370
- return (
371
- <el-button size="text" class="tree-btn-hide">
372
- {item.label}
373
- </el-button>
374
- );
375
- } else {
376
- return (
377
- <el-button size="text" on-click={() => this.handleClick(item, index, data, node)}>
378
- {item.label}
379
- </el-button>
380
- );
381
- }
382
- })}
383
- </div>
384
- </div>
385
- </div>
386
- );
387
- },
388
- },
389
- };
390
- </script>
391
- <style rel="stylesheet/scss" lang="scss">
392
- .tree-table {
393
- .el-tree > .el-tree-node {
394
- border: 1px solid #ededed;
395
- overflow: hidden;
396
- margin-bottom: 4px;
397
- }
398
- .el-tree {
399
- background: #f8f8f8;
400
- .el-tree-node {
401
- background: #fff;
402
- .el-tree-node__content {
403
- height: 48px;
404
- .el-tree-node__expand-icon {
405
- margin-left: 10px;
406
- position: absolute;
407
- left: 0px;
408
- }
409
- }
410
- .el-button {
411
- width: auto;
412
- }
413
- }
414
- }
415
- }
416
- .template-tree {
417
- .tem-tree-header {
418
- width: 100%;
419
- display: inline-block;
420
- // background: #eee;
421
- // 修改头部背景色
422
- margin-top: 20px;
423
- list-style: none;
424
- li {
425
- height: 48px;
426
- line-height: 48px;
427
- width: auto;
428
- display: inline-block;
429
- &.table-left-label {
430
- float: left;
431
- span {
432
- width: 100px;
433
- display: block;
434
- float: left;
435
- }
436
- }
437
- }
438
- }
439
-
440
- .filter-input {
441
- margin-bottom: 20px;
442
- width: 190px;
443
- input {
444
- width: 190px;
445
- }
446
- }
447
- .new-filter-input {
448
- overflow: hidden;
449
- width: 400px;
450
- line-height: 35px;
451
- display: flex;
452
- span {
453
- display: inline-block;
454
- float: left;
455
- width: 100px;
456
- }
457
- .el-input {
458
- display: inline-block;
459
- float: left;
460
- width: 190px !important;
461
- .el-input__inner {
462
- width: 190px;
463
- }
464
- }
465
- }
466
- .tem-header {
467
- margin-bottom: 10px;
468
- background: #fff;
469
- padding: 20px;
470
- border: 1px solid #ededed;
471
- }
472
- .el-tree-node {
473
- position: relative;
474
- }
475
- .el-tree > .el-tree-node {
476
- background: #fff;
477
- margin-bottom: 4px;
478
- & > .el-tree-node__content > .template-tree-node {
479
- font-weight: bold;
480
- font-size: 14px;
481
- }
482
-
483
- & > .el-tree-node__children > .el-tree-node > .el-tree-node__content {
484
- font-weight: normal;
485
- font-size: 14px;
486
- }
487
- & > .el-tree-node__children .el-tree-node__children .template-tree-node {
488
- font-weight: normal;
489
- font-size: 12px;
490
- }
491
- }
492
- .el-tree > .el-tree-node > .el-tree-node__children > .el-tree-node > .el-tree-node__content > .template-tree-node {
493
- border-top: 1px solid #f8f8f8;
494
- }
495
- .el-tree .el-tree-node__children .el-tree-node__children {
496
- margin: 20px 0;
497
- .el-tree-node__content {
498
- background: #fafbfc;
499
- padding-left: 0 !important;
500
- margin-left: 48px;
501
- margin-right: 15px;
502
- }
503
- }
504
-
505
- .el-tree-node__content {
506
- height: auto;
507
- .el-tree-node__expand-icon {
508
- z-index: 2;
509
- }
510
- .template-tree-node {
511
- flex: 1;
512
- display: flex;
513
- align-items: center;
514
- justify-content: space-between;
515
- font-size: 14px;
516
- height: 48px;
517
- line-height: 48px;
518
- .template-tree-label {
519
- position: absolute;
520
- right: 0;
521
- box-sizing: border-box;
522
- width: 100%;
523
- float: right;
524
- font-size: 12px;
525
- color: #444;
526
- font-weight: normal;
527
-
528
- .first-label {
529
- width: 25%;
530
- z-index: 0;
531
- float: left;
532
- height: 48px;
533
- }
534
- .table-content {
535
- width: 25%;
536
- float: left;
537
- overflow: hidden;
538
- }
539
- .table-content:nth-child(1) {
540
- padding-left: 30px;
541
- }
542
-
543
- .btn-group {
544
- min-width: 200px;
545
- float: right;
546
- text-align: left;
547
- .el-button {
548
- width: auto;
549
- padding: 0 15px;
550
- }
551
- .tree-btn-hide {
552
- visibility: hidden;
553
- }
554
- }
555
- }
556
- }
557
- }
558
- }
559
- </style>
1
+ <template>
2
+ <div class="template-tree auto">
3
+ <!--header-->
4
+ <div v-if="temInput" class="tem-header">
5
+ <div v-if="'filter' in temTree" class="filter-input new-filter-input">
6
+ <span>分类搜索:</span>
7
+ <el-input v-model="filterText" clearable placeholder="请输入分类名称" />
8
+ </div>
9
+ <ul class="clearfix">
10
+ <li v-for="(item, index) in temInput" :key="index">
11
+ <label v-if="'label' in item">{{ item.label }}:</label>
12
+ <div v-if="'type' in item && item.type === 'text'">
13
+ <el-input v-model="item.value" :placeholder="'placeholder' in item ? item.placeholder : ''" />
14
+ </div>
15
+ <div v-if="'type' in item && item.type === 'select'">
16
+ <el-select v-model="item.value" :placeholder="'placeholder' in item ? item.placeholder : ''">
17
+ <el-option v-for="item2 in item.options" v-if="'options' in item" :key="item2.value" :label="item2.label" :value="item2.value" />
18
+ </el-select>
19
+ </div>
20
+ <div v-if="'type' in item ? item.type === 'date' : ''">
21
+ <el-date-picker :v-model="item.value" :placeholder="'placeholder' in item ? item.placeholder : ''" size="small" type="date" value-format="yyyy-MM-dd" />
22
+ </div>
23
+ <div v-if="'type' in item ? item.type === 'daterange' : ''">
24
+ <el-date-picker
25
+ v-model="item.value"
26
+ :range-separator="'rangeSeparator' in item ? item.rangeSeparator || '-' : '-'"
27
+ :start-placeholder="'startPlaceholder' in item ? item.startPlaceholder || '开始时间' : '开始时间'"
28
+ :end-placeholder="'endPlaceholder' in item ? item.endPlaceholder || '结束时间' : '结束时间'"
29
+ size="small"
30
+ type="daterange"
31
+ value-format="yyyy-MM-dd"
32
+ />
33
+ </div>
34
+ <div v-if="'btnArray' in item">
35
+ <el-button v-for="(itemBtn, indexBtn) in item.btnArray" :key="indexBtn" :type="itemBtn.type" @click="btn(itemBtn, indexBtn)">{{ itemBtn.label }}</el-button>
36
+ </div>
37
+ </li>
38
+ </ul>
39
+ </div>
40
+
41
+ <ul v-if="'treeHeader' in temTree && temTree.treeHeader.length > 0" class="tem-tree-header">
42
+ <li
43
+ v-for="(item, index) in temTree.treeHeader"
44
+ :key="index"
45
+ :style="{
46
+ width: item.width ? item.width : 100 / temTree.treeHeader.length + '%',
47
+ float: item.type === 'button' ? 'right' : 'left',
48
+ 'font-size': item.font ? item.font : '14px',
49
+ 'margin-right': item.mr ? item.mr : '0px',
50
+ 'margin-left': item.ml ? item.ml : '0px',
51
+ 'padding-right': item.pr ? item.pr : '0px',
52
+ color: item.color ? item.color : '#666',
53
+ 'text-align': item.align ? item.align : 'left',
54
+ }"
55
+ class="table-left-label"
56
+ >
57
+ {{ item.name }}
58
+ </li>
59
+ <!-- temTree里的treeHeader数组里面每个对象控制头部文字,width,type,font,mr,color控制样式 -->
60
+ </ul>
61
+ <el-tree
62
+ v-loading="loading"
63
+ ref="tree"
64
+ :node-key="nodeLoad.id"
65
+ :default-expanded-keys="defaultExpandedKeys"
66
+ :props="temTree.props"
67
+ :data="treeData"
68
+ :indent="temTree.indent || 36"
69
+ :expand-on-click-node="false"
70
+ :render-after-expand="true"
71
+ :load="loadNode"
72
+ :lazy="nodeLoad.lazy"
73
+ :filter-node-method="filterNode"
74
+ :render-content="renderContent"
75
+ @node-expand="commt"
76
+ />
77
+
78
+ <!--编辑-->
79
+ <el-dialog v-if="dialogData && dialogData.template" :title="'title' in dialogData.template ? dialogData.template.title : ''" :visible.sync="dialogFormVisible" @close="dialogClose">
80
+ <template-input
81
+ ref="child"
82
+ :tem-input="dialogData.template.html"
83
+ :rules="dialogData.template.rules"
84
+ :label-width="dialogData.template.labelWidth"
85
+ @cancel="dialogCancel"
86
+ @getData="getData"
87
+ @selChange="selChange"
88
+ />
89
+ </el-dialog>
90
+ </div>
91
+ </template>
92
+ <script>
93
+ import request from '#/utils/request';
94
+ import templateInput from '../templates/templateInput';
95
+ const querystring = require('querystring');
96
+ import { parseTime } from '#/utils/index'; // 时间格式化
97
+ export default {
98
+ components: {
99
+ 'template-input': templateInput,
100
+ },
101
+ props: ['temInput', 'queryPara', 'temTree', 'nodeLoad'],
102
+ data() {
103
+ return {
104
+ loading: false,
105
+ parseTime,
106
+ defaultExpandedKeys: [],
107
+ ruleForm: {},
108
+ dialogFormVisible: false, // dialog编辑是否显示
109
+ dialogData: {},
110
+ activeName: '',
111
+ filterText: '',
112
+ btnState: null, // 1表示增加,2表示编辑
113
+ treeData: [], // table内容
114
+ };
115
+ },
116
+ watch: {
117
+ temTree(val) {
118
+ console.log(val, 'temTree');
119
+ },
120
+ temInput(val) {
121
+ console.log(val, 'temInput');
122
+ },
123
+ filterText(val) {
124
+ this.$refs.tree.filter(val);
125
+ },
126
+ $route: function (to, form) {
127
+ //路由改变,重新请求页面
128
+ this.getDataList();
129
+ },
130
+ },
131
+ // beforeCreate() {
132
+ // this.dialogData
133
+ // },
134
+ mounted() {
135
+ if (!this.nodeLoad.lazy) {
136
+ this.getDataList();
137
+ }
138
+ },
139
+ methods: {
140
+ filterNode(value, data) {
141
+ if (!value) return true;
142
+ console.log(data);
143
+ return data[this.temTree.props.label].indexOf(value) !== -1;
144
+ },
145
+ btn(itemBtn, index) {
146
+ if (itemBtn.id === 'query' || itemBtn.id === 'search') {
147
+ // 表示查询
148
+ const searchUrl = 'url' in itemBtn && itemBtn.url ? itemBtn.url : '';
149
+ this.getDataList(searchUrl);
150
+ } else if (itemBtn.id === 'add') {
151
+ itemBtn.template.html.forEach((el) => {
152
+ this.$set(this.ruleForm, el.name, el.value);
153
+ });
154
+ // this.$emit("editClick", val.row, index);
155
+ this.dialogData = itemBtn;
156
+ this.dialogFormVisible = true;
157
+ this.btnState = 1; // 表示增加
158
+ }
159
+ this.$emit('inputBtnClick', itemBtn, index);
160
+ },
161
+
162
+ handleClick(item, index, val, node) {
163
+ // index表示btn的位置
164
+ console.log(val, item, index, 'eeeefff11111223232');
165
+ const id = item.id;
166
+ /* if (id === 'see') {
167
+ // 表示查看
168
+ this.$emit('tableSeeClick', val.row, index)
169
+ this.openAlert(val, index, 'see')
170
+ } else if (id === 'edit') {
171
+ // 编辑事件
172
+ item.template.html.forEach(el => {
173
+ if (el.name in val.row) {
174
+ // 判断属性是否存在
175
+ el.value = val.row[el.name]
176
+ } else {
177
+ el.value = '' // 没有值的时候,为空
178
+ }
179
+ })
180
+
181
+ // this.$emit("editClick", val.row, index);
182
+ this.dialogData = item
183
+ this.dialogFormVisible = true
184
+ this.btnState = 2 // 表示编辑
185
+ } else*/ if (
186
+ id === 'del'
187
+ ) {
188
+ console.log('删除');
189
+ this.delData(val, item, item.url, node);
190
+ }
191
+ this.$emit('treeBtnClick', item, val, node);
192
+ },
193
+ commt(node, data) {
194
+ // 点击展开的事件
195
+ },
196
+ selChange(val, item) {
197
+ this.$emit('selChange', val, item);
198
+ },
199
+ dialogCancel() {
200
+ // 取消
201
+ this.dialogFormVisible = false;
202
+ },
203
+ dialogClose() {
204
+ this.$refs.child.setReset();
205
+ this.dialogFormVisible = false;
206
+ },
207
+ refreshTree(node) {
208
+ // defaultExpandedKeys
209
+ if (!this.nodeLoad.lazy) {
210
+ this.getDataList();
211
+ if (node) {
212
+ this.defaultExpandedKeys = [node.key];
213
+ }
214
+ } else {
215
+ if (node.parent) {
216
+ node.parent.loaded = false;
217
+ node.parent.loading = false;
218
+ node.parent.expanded = false;
219
+ node.parent.expand();
220
+ this.defaultExpandedKeys = [node.key];
221
+ } else {
222
+ this.getDataList();
223
+ }
224
+ }
225
+ },
226
+ loadNode(node, resolve) {
227
+ console.log(node);
228
+ const requestUrl = this.nodeLoad.url ? this.nodeLoad.url : '';
229
+ if (requestUrl === '') {
230
+ this.$message.error('url not defined');
231
+ return false;
232
+ }
233
+ this.loading = true;
234
+ let params = {};
235
+ if (node.level === 0) {
236
+ params = { ...this.queryPara };
237
+ } else {
238
+ this.nodeLoad.params.forEach((item) => {
239
+ params[item.name] = node.data[item.value];
240
+ });
241
+ }
242
+ request({
243
+ url: requestUrl,
244
+ method: 'post',
245
+ data: querystring.stringify(params),
246
+ }).then((res) => {
247
+ this.loading = false;
248
+ if (node.level === 0) {
249
+ if (Array.isArray(res)) {
250
+ this.treeData = res;
251
+ } else {
252
+ this.treeData = res.rows;
253
+ }
254
+ } else {
255
+ if (Array.isArray(res)) {
256
+ node.data[this.temTree.props.children] = res;
257
+ resolve(res);
258
+ } else {
259
+ node.data[this.temTree.props.children] = res.rows; // 需要把值放进children
260
+ resolve(res.rows);
261
+ }
262
+ }
263
+ });
264
+ },
265
+ getDataList(paramsUrl) {
266
+ const requestUrl = this.nodeLoad.url ? this.nodeLoad.url : paramsUrl || '';
267
+ if (requestUrl === '') {
268
+ this.$message.error('url not defined');
269
+ return false;
270
+ }
271
+ this.loading = true;
272
+ const params = { ...this.queryPara };
273
+ // 获取参数
274
+ /* this.queryPara.forEach(el => {
275
+ params[el.name] = el.value;
276
+ });*/
277
+ // 查询列表
278
+
279
+ request({
280
+ url: requestUrl,
281
+ method: 'post',
282
+ data: querystring.stringify(params),
283
+ }).then((res) => {
284
+ this.loading = false;
285
+ if (Array.isArray(res)) {
286
+ this.$emit('getData', res);
287
+ this.treeData = res;
288
+ } else {
289
+ this.$emit('getData', res.rows);
290
+ this.treeData = res.rows;
291
+ }
292
+ });
293
+ },
294
+ getData(res) {
295
+ this.$emit('refreshTree', res);
296
+ },
297
+ dialogCancel() {
298
+ // 取消
299
+ this.dialogFormVisible = false;
300
+ },
301
+
302
+ delData(val, item, url, node) {
303
+ const json = {};
304
+ for (const el in item.params) {
305
+ if (item.params[el] === '') {
306
+ json[el] = val[el];
307
+ } else {
308
+ json[el] = item.params[el];
309
+ }
310
+ }
311
+ if (this.nodeLoad.lazy && node.expanded === false) {
312
+ this.$message.error('请展开当前节点,并确认节点下不存在子节点');
313
+ return false;
314
+ }
315
+ if (node.childNodes.length > 0) {
316
+ this.$message.error('该节点下存在子节点,不可删除');
317
+ return false;
318
+ }
319
+ this.$confirm('确认删除该分类?')
320
+ .then((res) => {
321
+ return request({
322
+ url: url,
323
+ method: 'post',
324
+ data: querystring.stringify(json),
325
+ })
326
+ .then((res) => {
327
+ if (res.success) {
328
+ this.$message.success(res.msg);
329
+ this.remove(node, val); // 删除成功后直接移除节点
330
+ } else {
331
+ this.$message.error(res.msg);
332
+ }
333
+ })
334
+ .catch((err) => {
335
+ console.log(err);
336
+ });
337
+ })
338
+ .catch((err) => {
339
+ console.log(err);
340
+ });
341
+ },
342
+ remove(node, data) {
343
+ const parent = node.parent;
344
+ const children = parent.data[this.temTree.props.children] || parent.data;
345
+ const index = children.findIndex((d) => d[this.temTree.props.label] === data[this.temTree.props.label]);
346
+ children.splice(index, 1);
347
+ },
348
+ // <span>{node.label}</span>
349
+ renderContent(h, { node, data, store }) {
350
+ return (
351
+ <div class="template-tree-node">
352
+ <div class="template-tree-label">
353
+ {'treeHeader' in this.temTree && this.temTree.treeHeader.length > 0
354
+ ? this.temTree.treeHeader.map((item, index) => {
355
+ if (item.type === 'first') {
356
+ return <span class="first-label" style={{ width: item.width }} />;
357
+ } else if (item.type === 'button') {
358
+ } else {
359
+ return (
360
+ <span class="table-content" style={{ width: item.width }}>
361
+ {item.template && item.template === 'format' ? this.parseTime(data[item.value]) : data[item.value]}
362
+ </span>
363
+ );
364
+ }
365
+ })
366
+ : ''}
367
+ <div class="btn-group">
368
+ {this.temTree.treeBtn.map((item, index) => {
369
+ if ((item.level && node.level >= item.level) || (item.last == '1' && data.classtreeLast == '0')) {
370
+ return (
371
+ <el-button size="text" class="tree-btn-hide">
372
+ {item.label}
373
+ </el-button>
374
+ );
375
+ } else {
376
+ return (
377
+ <el-button size="text" on-click={() => this.handleClick(item, index, data, node)}>
378
+ {item.label}
379
+ </el-button>
380
+ );
381
+ }
382
+ })}
383
+ </div>
384
+ </div>
385
+ </div>
386
+ );
387
+ },
388
+ },
389
+ };
390
+ </script>
391
+ <style rel="stylesheet/scss" lang="scss">
392
+ .tree-table {
393
+ .el-tree > .el-tree-node {
394
+ border: 1px solid #ededed;
395
+ overflow: hidden;
396
+ margin-bottom: 4px;
397
+ }
398
+ .el-tree {
399
+ background: #f8f8f8;
400
+ .el-tree-node {
401
+ background: #fff;
402
+ .el-tree-node__content {
403
+ height: 48px;
404
+ .el-tree-node__expand-icon {
405
+ margin-left: 10px;
406
+ position: absolute;
407
+ left: 0px;
408
+ }
409
+ }
410
+ .el-button {
411
+ width: auto;
412
+ }
413
+ }
414
+ }
415
+ }
416
+ .template-tree {
417
+ .tem-tree-header {
418
+ width: 100%;
419
+ display: inline-block;
420
+ // background: #eee;
421
+ // 修改头部背景色
422
+ margin-top: 20px;
423
+ list-style: none;
424
+ li {
425
+ height: 48px;
426
+ line-height: 48px;
427
+ width: auto;
428
+ display: inline-block;
429
+ &.table-left-label {
430
+ float: left;
431
+ span {
432
+ width: 100px;
433
+ display: block;
434
+ float: left;
435
+ }
436
+ }
437
+ }
438
+ }
439
+
440
+ .filter-input {
441
+ margin-bottom: 20px;
442
+ width: 190px;
443
+ input {
444
+ width: 190px;
445
+ }
446
+ }
447
+ .new-filter-input {
448
+ overflow: hidden;
449
+ width: 400px;
450
+ line-height: 35px;
451
+ display: flex;
452
+ span {
453
+ display: inline-block;
454
+ float: left;
455
+ width: 100px;
456
+ }
457
+ .el-input {
458
+ display: inline-block;
459
+ float: left;
460
+ width: 190px !important;
461
+ .el-input__inner {
462
+ width: 190px;
463
+ }
464
+ }
465
+ }
466
+ .tem-header {
467
+ margin-bottom: 10px;
468
+ background: #fff;
469
+ padding: 20px;
470
+ border: 1px solid #ededed;
471
+ }
472
+ .el-tree-node {
473
+ position: relative;
474
+ }
475
+ .el-tree > .el-tree-node {
476
+ background: #fff;
477
+ margin-bottom: 4px;
478
+ & > .el-tree-node__content > .template-tree-node {
479
+ font-weight: bold;
480
+ font-size: 14px;
481
+ }
482
+
483
+ & > .el-tree-node__children > .el-tree-node > .el-tree-node__content {
484
+ font-weight: normal;
485
+ font-size: 14px;
486
+ }
487
+ & > .el-tree-node__children .el-tree-node__children .template-tree-node {
488
+ font-weight: normal;
489
+ font-size: 12px;
490
+ }
491
+ }
492
+ .el-tree > .el-tree-node > .el-tree-node__children > .el-tree-node > .el-tree-node__content > .template-tree-node {
493
+ border-top: 1px solid #f8f8f8;
494
+ }
495
+ .el-tree .el-tree-node__children .el-tree-node__children {
496
+ margin: 20px 0;
497
+ .el-tree-node__content {
498
+ background: #fafbfc;
499
+ padding-left: 0 !important;
500
+ margin-left: 48px;
501
+ margin-right: 15px;
502
+ }
503
+ }
504
+
505
+ .el-tree-node__content {
506
+ height: auto;
507
+ .el-tree-node__expand-icon {
508
+ z-index: 2;
509
+ }
510
+ .template-tree-node {
511
+ flex: 1;
512
+ display: flex;
513
+ align-items: center;
514
+ justify-content: space-between;
515
+ font-size: 14px;
516
+ height: 48px;
517
+ line-height: 48px;
518
+ .template-tree-label {
519
+ position: absolute;
520
+ right: 0;
521
+ box-sizing: border-box;
522
+ width: 100%;
523
+ float: right;
524
+ font-size: 12px;
525
+ color: #444;
526
+ font-weight: normal;
527
+
528
+ .first-label {
529
+ width: 25%;
530
+ z-index: 0;
531
+ float: left;
532
+ height: 48px;
533
+ }
534
+ .table-content {
535
+ width: 25%;
536
+ float: left;
537
+ overflow: hidden;
538
+ }
539
+ .table-content:nth-child(1) {
540
+ padding-left: 30px;
541
+ }
542
+
543
+ .btn-group {
544
+ min-width: 200px;
545
+ float: right;
546
+ text-align: left;
547
+ .el-button {
548
+ width: auto;
549
+ padding: 0 15px;
550
+ }
551
+ .tree-btn-hide {
552
+ visibility: hidden;
553
+ }
554
+ }
555
+ }
556
+ }
557
+ }
558
+ }
559
+ </style>