gcs-ui-lib 1.0.1

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 (231) hide show
  1. package/.env.development +5 -0
  2. package/.env.production +7 -0
  3. package/.eslintrc.js +5 -0
  4. package/README.md +97 -0
  5. package/_webpack.config.js +135 -0
  6. package/babel.config.js +16 -0
  7. package/lib/demo.html +10 -0
  8. package/lib/fonts/SIMSUN.5e0c362c.5e0c362c.ttf +0 -0
  9. package/lib/fonts/element-icons.535877f5.535877f5.woff +0 -0
  10. package/lib/fonts/element-icons.732389de.732389de.ttf +0 -0
  11. package/lib/fonts/iconfont.09d221ee.09d221ee.woff +0 -0
  12. package/lib/fonts/iconfont.1c4bfacc.1c4bfacc.ttf +0 -0
  13. package/lib/fonts/iconfont.a6f34dc7.a6f34dc7.woff2 +0 -0
  14. package/lib/fonts/iconfont.f4c32765.f4c32765.ttf +0 -0
  15. package/lib/gcs-ui-lib.common.js +106776 -0
  16. package/lib/gcs-ui-lib.css +3 -0
  17. package/lib/gcs-ui-lib.umd.js +106786 -0
  18. package/lib/gcs-ui-lib.umd.min.js +330 -0
  19. package/lib/img/bankbackground(1).e1f6e40f.jpg +0 -0
  20. package/lib/img/busibackground(2).7e09bf1f.jpg +0 -0
  21. package/lib/img/document.193a282d.svg +8 -0
  22. package/lib/img/folder.8e019792.svg +9 -0
  23. package/lib/img/icon.fc86764f.gif +0 -0
  24. package/npm +1 -0
  25. package/package.json +101 -0
  26. package/packages/AutoFillDetail/index.js +7 -0
  27. package/packages/AutoFillDetail/src/components/fillDetail.vue +188 -0
  28. package/packages/AutoFillDetail/src/demo/index.vue +18 -0
  29. package/packages/AutoFillDetail/src/main.vue +283 -0
  30. package/packages/AutoFillDetection/index.js +7 -0
  31. package/packages/AutoFillDetection/src/components/FillInfo.vue +36 -0
  32. package/packages/AutoFillDetection/src/components/HandEntred.vue +226 -0
  33. package/packages/AutoFillDetection/src/components/RuleHit.vue +105 -0
  34. package/packages/AutoFillDetection/src/components/SelectEntries.vue +192 -0
  35. package/packages/AutoFillDetection/src/components/config.js +359 -0
  36. package/packages/AutoFillDetection/src/demo/index.vue +18 -0
  37. package/packages/AutoFillDetection/src/main.vue +130 -0
  38. package/packages/AutoFillList/index.js +7 -0
  39. package/packages/AutoFillList/src/components/ImportRules.vue +407 -0
  40. package/packages/AutoFillList/src/components/ImportRulesDialog.vue +40 -0
  41. package/packages/AutoFillList/src/components/config.js +616 -0
  42. package/packages/AutoFillList/src/demo/index.vue +28 -0
  43. package/packages/AutoFillList/src/main.vue +559 -0
  44. package/packages/AutoFillRuleHistory/index.js +7 -0
  45. package/packages/AutoFillRuleHistory/src/demo/index.vue +23 -0
  46. package/packages/AutoFillRuleHistory/src/main.vue +422 -0
  47. package/packages/AutoFillService/index.js +7 -0
  48. package/packages/AutoFillService/src/components/BudgetAccountDialogForSetting.vue +588 -0
  49. package/packages/AutoFillService/src/components/BudgetAccountSettingDialog.vue +377 -0
  50. package/packages/AutoFillService/src/components/ConditionGroup.vue +413 -0
  51. package/packages/AutoFillService/src/components/CustomInput.vue +191 -0
  52. package/packages/AutoFillService/src/components/FillComponent.vue +371 -0
  53. package/packages/AutoFillService/src/components/SelectBudgetAccountDialog.vue +161 -0
  54. package/packages/AutoFillService/src/components/SelectDialog.vue +211 -0
  55. package/packages/AutoFillService/src/components/basic.vue +308 -0
  56. package/packages/AutoFillService/src/components/config.js +549 -0
  57. package/packages/AutoFillService/src/components/fillDetail.vue +145 -0
  58. package/packages/AutoFillService/src/components/fillRules.vue +787 -0
  59. package/packages/AutoFillService/src/components/paymentCategory.vue +297 -0
  60. package/packages/AutoFillService/src/components/paymentCategoryT.vue +292 -0
  61. package/packages/AutoFillService/src/customTemplate/FillBigDecimal.vue +50 -0
  62. package/packages/AutoFillService/src/customTemplate/FillDate.vue +54 -0
  63. package/packages/AutoFillService/src/customTemplate/FillInput.vue +33 -0
  64. package/packages/AutoFillService/src/customTemplate/FillMultiSelect.vue +70 -0
  65. package/packages/AutoFillService/src/customTemplate/FillSelect.vue +72 -0
  66. package/packages/AutoFillService/src/demo/index.vue +30 -0
  67. package/packages/AutoFillService/src/main.vue +432 -0
  68. package/packages/Bank/index.js +7 -0
  69. package/packages/Bank/src/demo/index.vue +18 -0
  70. package/packages/Bank/src/main.vue +70 -0
  71. package/packages/BranchBank/index.js +7 -0
  72. package/packages/BranchBank/src/demo/index.vue +18 -0
  73. package/packages/BranchBank/src/main.vue +97 -0
  74. package/packages/ConfigurableForm/index.js +7 -0
  75. package/packages/ConfigurableForm/src/components/config.js +63 -0
  76. package/packages/ConfigurableForm/src/components/detail.vue +158 -0
  77. package/packages/ConfigurableForm/src/demo/index.vue +279 -0
  78. package/packages/ConfigurableForm/src/main.vue +529 -0
  79. package/packages/DynamicForm/index.js +7 -0
  80. package/packages/DynamicForm/src/components/Amount.vue +51 -0
  81. package/packages/DynamicForm/src/components/AmountRange.vue +76 -0
  82. package/packages/DynamicForm/src/components/CheckboxGroup.vue +63 -0
  83. package/packages/DynamicForm/src/components/DMY.vue +126 -0
  84. package/packages/DynamicForm/src/components/Date.vue +51 -0
  85. package/packages/DynamicForm/src/components/DateRange.vue +51 -0
  86. package/packages/DynamicForm/src/components/Dialog.vue +247 -0
  87. package/packages/DynamicForm/src/components/Input.vue +48 -0
  88. package/packages/DynamicForm/src/components/InputNumber.vue +69 -0
  89. package/packages/DynamicForm/src/components/InputNumberRange.vue +47 -0
  90. package/packages/DynamicForm/src/components/LazySelect.vue +311 -0
  91. package/packages/DynamicForm/src/components/RadioGroup.vue +43 -0
  92. package/packages/DynamicForm/src/components/Rate.vue +57 -0
  93. package/packages/DynamicForm/src/components/Select.vue +307 -0
  94. package/packages/DynamicForm/src/components/Switch.vue +32 -0
  95. package/packages/DynamicForm/src/components/Textarea.vue +58 -0
  96. package/packages/DynamicForm/src/components/TimeSelect.vue +61 -0
  97. package/packages/DynamicForm/src/components/unitTreeSelect.vue +141 -0
  98. package/packages/DynamicForm/src/components/urlLinkInput.vue +100 -0
  99. package/packages/DynamicForm/src/demo/index.vue +486 -0
  100. package/packages/DynamicForm/src/fileUpload.js +232 -0
  101. package/packages/DynamicForm/src/formConfig.js +2910 -0
  102. package/packages/DynamicForm/src/helpers.js +18 -0
  103. package/packages/DynamicForm/src/main.vue +1095 -0
  104. package/packages/FileImport/index.js +7 -0
  105. package/packages/FileImport/src/demo/index.vue +29 -0
  106. package/packages/FileImport/src/main.vue +306 -0
  107. package/packages/MultiCurrencyStatistics/index.js +7 -0
  108. package/packages/MultiCurrencyStatistics/src/demo/index.vue +320 -0
  109. package/packages/MultiCurrencyStatistics/src/main.vue +200 -0
  110. package/packages/SelectTicket/index.js +7 -0
  111. package/packages/SelectTicket/src/Tree/index.vue +13 -0
  112. package/packages/SelectTicket/src/demo/index.vue +139 -0
  113. package/packages/SelectTicket/src/header.js +276 -0
  114. package/packages/SelectTicket/src/main.vue +581 -0
  115. package/packages/SelectTicket/src/printDialog/dialogO.vue +116 -0
  116. package/packages/SelectTicket/src/printDialog/index.vue +69 -0
  117. package/packages/SelectTicket/src/ticketDetail/billInformation/README.MD +6 -0
  118. package/packages/SelectTicket/src/ticketDetail/billInformation/mixins/index.js +35 -0
  119. package/packages/SelectTicket/src/ticketDetail/billInformation/obverse.vue +768 -0
  120. package/packages/SelectTicket/src/ticketDetail/billInformation/overview.vue +115 -0
  121. package/packages/SelectTicket/src/ticketDetail/billInformation/printList.vue +127 -0
  122. package/packages/SelectTicket/src/ticketDetail/billInformation/reverse.vue +205 -0
  123. package/packages/SelectTicket/src/ticketDetail/billInformation//351/231/204/345/212/240/344/277/235/350/257/201/344/277/241/346/201/257/345/255/227/346/256/265/345/257/271/347/205/247.md +246 -0
  124. package/packages/SelectTicket/src/ticketDetail/dialog.vue +73 -0
  125. package/packages/SelectTicket/src/ticketDetail/img/bankbackground(1).jpg +0 -0
  126. package/packages/SelectTicket/src/ticketDetail/img/busibackground(2).jpg +0 -0
  127. package/packages/SelectTicket/src/ticketDetail/img/icon.gif +0 -0
  128. package/packages/SelectTicket/src/ticketDetail/img/icon2.png +0 -0
  129. package/packages/SelectTicket/src/ticketDetail/img/noData.png +0 -0
  130. package/packages/SelectTicket/src/ticketDetail/index.vue +188 -0
  131. package/packages/SelectTreeUnit/index.js +7 -0
  132. package/packages/SelectTreeUnit/src/Tree/document.svg +8 -0
  133. package/packages/SelectTreeUnit/src/Tree/folder.svg +9 -0
  134. package/packages/SelectTreeUnit/src/Tree/index.vue +239 -0
  135. package/packages/SelectTreeUnit/src/demo/index.vue +219 -0
  136. package/packages/SelectTreeUnit/src/forEachs.js +16 -0
  137. package/packages/SelectTreeUnit/src/main.vue +1136 -0
  138. package/packages/SelectTreeUnitForm/index.js +7 -0
  139. package/packages/SelectTreeUnitForm/src/Tree/document.svg +8 -0
  140. package/packages/SelectTreeUnitForm/src/Tree/folder.svg +9 -0
  141. package/packages/SelectTreeUnitForm/src/Tree/index.vue +254 -0
  142. package/packages/SelectTreeUnitForm/src/demo/index.vue +230 -0
  143. package/packages/SelectTreeUnitForm/src/forEachs.js +16 -0
  144. package/packages/SelectTreeUnitForm/src/main.vue +1068 -0
  145. package/packages/StreamRefill/index.js +7 -0
  146. package/packages/StreamRefill/src/components/FillBigDecimal.vue +50 -0
  147. package/packages/StreamRefill/src/components/FillDate.vue +56 -0
  148. package/packages/StreamRefill/src/components/FillInput.vue +36 -0
  149. package/packages/StreamRefill/src/components/FillMultiSelect.vue +54 -0
  150. package/packages/StreamRefill/src/components/FillSelect.vue +51 -0
  151. package/packages/StreamRefill/src/demo/index.vue +254 -0
  152. package/packages/StreamRefill/src/main.vue +335 -0
  153. package/packages/Trade/index.js +7 -0
  154. package/packages/Trade/src/components/all/index.vue +913 -0
  155. package/packages/Trade/src/components/dynamicColumnMixin.js +69 -0
  156. package/packages/Trade/src/components/getDCloumn.js +15 -0
  157. package/packages/Trade/src/components/i18n.json +3337 -0
  158. package/packages/Trade/src/components/pendingEvent/index.vue +934 -0
  159. package/packages/Trade/src/components/server-config.js +60 -0
  160. package/packages/Trade/src/components/setUnitName.js +10 -0
  161. package/packages/Trade/src/components/specialHandle.js +171 -0
  162. package/packages/Trade/src/components/topendingTabs.js +21 -0
  163. package/packages/Trade/src/demo/index.vue +43 -0
  164. package/packages/Trade/src/main.vue +86 -0
  165. package/packages/ValidateQuota/index.js +58 -0
  166. package/packages/ValidateQuota/src/demo/index.vue +190 -0
  167. package/packages/ValidateQuota/src/main.vue +71 -0
  168. package/packages/ZipImport/index.js +7 -0
  169. package/packages/ZipImport/src/demo/index.vue +139 -0
  170. package/packages/ZipImport/src/main.vue +330 -0
  171. package/packages/approvel/index.js +8 -0
  172. package/packages/approvel/src/demo/index.vue +28 -0
  173. package/packages/approvel/src/main.vue +26 -0
  174. package/packages/approvel/src/progress.vue +167 -0
  175. package/packages/approvel/src/url.json +29 -0
  176. package/packages/extends/ElSelect.vue +180 -0
  177. package/packages/imgs/list-select.png +0 -0
  178. package/packages/imgs/list-unselect.png +0 -0
  179. package/packages/imgs/list.png +0 -0
  180. package/packages/imgs/tree-select.png +0 -0
  181. package/packages/imgs/tree-unselect.png +0 -0
  182. package/packages/imgs/tree.png +0 -0
  183. package/packages/inputTag/index.js +7 -0
  184. package/packages/inputTag/src/demo/index.vue +355 -0
  185. package/packages/inputTag/src/main.vue +502 -0
  186. package/public/favicon.ico +0 -0
  187. package/public/index.html +19 -0
  188. package/src/App.vue +61 -0
  189. package/src/api/aims.js +8 -0
  190. package/src/api/common.js +254 -0
  191. package/src/api/fileApi.js +33 -0
  192. package/src/api/setting.js +249 -0
  193. package/src/config/appSettings.js +12 -0
  194. package/src/config/favicon.ico +0 -0
  195. package/src/css/autoFill.scss +252 -0
  196. package/src/css/selectTreeUnit.scss +254 -0
  197. package/src/filter/filter.js +1 -0
  198. package/src/filter/index.js +274 -0
  199. package/src/fonts/demo.css +539 -0
  200. package/src/fonts/iconfont.css +21 -0
  201. package/src/fonts/iconfont.js +1 -0
  202. package/src/fonts/iconfont.json +23 -0
  203. package/src/fonts/iconfont.ttf +0 -0
  204. package/src/index.js +161 -0
  205. package/src/locale/format.js +47 -0
  206. package/src/locale/index.js +48 -0
  207. package/src/locale/lang/cn2hk.json +1270 -0
  208. package/src/locale/lang/en.js +73 -0
  209. package/src/locale/lang/es.js +7 -0
  210. package/src/locale/lang/index.js +66 -0
  211. package/src/locale/lang/ja.js +7 -0
  212. package/src/locale/lang/zh.js +74 -0
  213. package/src/locale/lang/zht.js +27 -0
  214. package/src/main.js +49 -0
  215. package/src/preview/page/Aside/index.vue +60 -0
  216. package/src/preview/router.js +107 -0
  217. package/src/utils/auth.js +12 -0
  218. package/src/utils/directive/asciiWidth.js +107 -0
  219. package/src/utils/directive/clickOutside.js +21 -0
  220. package/src/utils/directive/vtitle.js +140 -0
  221. package/src/utils/excel.js +538 -0
  222. package/src/utils/index.js +581 -0
  223. package/src/utils/request.js +157 -0
  224. package/src/utils/requestCache.js +68 -0
  225. package/src/utils/session.js +36 -0
  226. package/src/utils/thems.js +62 -0
  227. package/src/utils/token.js +26 -0
  228. package/src/utils/tools.js +317 -0
  229. package/src/utils/utils.js +513 -0
  230. package/types/favicon.ico +0 -0
  231. package/vue.config.js +49 -0
@@ -0,0 +1,413 @@
1
+ <template>
2
+ <div class="auto-group" :key="templateKey">
3
+ <div class="auto-actions" v-if="!disabled">
4
+ <el-dropdown @command="handleCommand">
5
+ <span class="el-dropdown-link">
6
+ <i class="el-icon-circle-plus-outline auto-icon-ops"></i>
7
+ </span>
8
+ <el-dropdown-menu slot="dropdown">
9
+ <el-dropdown-item icon="el-icon-plus" command="a"
10
+ >条件</el-dropdown-item
11
+ >
12
+ <el-dropdown-item icon="el-icon-plus" command="b"
13
+ >条件组</el-dropdown-item
14
+ >
15
+ </el-dropdown-menu>
16
+ </el-dropdown>
17
+
18
+ <i
19
+ v-if="!localNode.root"
20
+ class="el-icon-circle-close m-l-s auto-icon-ops"
21
+ @click="deleteleGroup"
22
+ ></i>
23
+ </div>
24
+ <select
25
+ v-model="localNode.logicalOperation"
26
+ v-if="showOperator"
27
+ :disabled="disabled"
28
+ class="auto-group-select"
29
+ >
30
+ <option value="AND">{{ $l("并且") }}</option>
31
+ <option value="OR">{{ $l("或者") }}</option>
32
+ </select>
33
+ <div
34
+ v-for="(item, idx) in localNode.matchingRules"
35
+ class="auto-rule"
36
+ :key="item.key + '-auto-rule'"
37
+ >
38
+ <div class="auto-group-item" :class="{'auto-group-item-disabled':disabled}">
39
+ <label class="auto-group-item-label">匹配字段</label>
40
+ <el-select
41
+ v-model="item.matchingFieldCode"
42
+ :placeholder="$l('请选择')"
43
+ :disabled="disabled"
44
+ filterable
45
+ v-title
46
+ @change="(val) => handChangeField(val, item)"
47
+ >
48
+ <el-option
49
+ v-for="(item, index) in filedList"
50
+ :key="index + item.fieldCode"
51
+ :label="item.fieldName"
52
+ :value="item.fieldCode"
53
+ ></el-option>
54
+ <!-- 其他字段 -->
55
+ </el-select>
56
+ </div>
57
+ <div
58
+ class="auto-group-item"
59
+ :class="{
60
+ 'auto-required': localNode.vaild && !item.matchingOperation,
61
+ 'auto-group-item-disabled':disabled
62
+ }"
63
+ >
64
+ <label class="auto-group-item-label">匹配关系</label>
65
+ <el-select
66
+ v-model="item.matchingOperation"
67
+ :placeholder="$l('请选择')"
68
+ clearable
69
+ :disabled="disabled"
70
+ @change="(val) => handChangeOperation(val, item)"
71
+ >
72
+ <el-option
73
+ :key="index"
74
+ :label="item.label"
75
+ :value="item.value"
76
+ v-for="(item, index) in matchList"
77
+ ></el-option>
78
+ <!-- 其他操作符 -->
79
+ </el-select>
80
+ </div>
81
+ <div
82
+ class="auto-group-item"
83
+ v-if="isNew"
84
+ :class="{
85
+ 'auto-required': localNode.vaild && !item.matchingValueType,
86
+ 'auto-group-item-disabled':disabled
87
+ }"
88
+ >
89
+ <label class="auto-group-item-label">匹配值</label>
90
+ <el-select
91
+ v-model="item.matchingValueType"
92
+ :placeholder="$l('请选择')"
93
+ :disabled="disabled"
94
+ >
95
+ <el-option
96
+ :key="index"
97
+ :label="row.label"
98
+ :value="row.value"
99
+ :disabled="disabledOps(row.value, item)"
100
+ v-for="(row, index) in valueList"
101
+ ></el-option>
102
+ </el-select>
103
+ </div>
104
+ <div
105
+ class="auto-group-item item-content"
106
+ :class="{
107
+ 'auto-required': autoValus(item),
108
+ 'auto-group-item-disabled':disabled
109
+ }"
110
+ >
111
+ <label class="auto-group-item-label">匹配内容</label>
112
+ <el-cascader
113
+ v-if="item.matchingValueType === 'DYNAMIC'"
114
+ :placeholder="$l('请选择')"
115
+ :disabled="disabled"
116
+ v-title
117
+ :separator="'-'"
118
+ style="width: 100%"
119
+ clearable
120
+ v-model="item.TmValues"
121
+ :options="options"
122
+ ></el-cascader>
123
+ <inputTag
124
+ v-model="item.mValues"
125
+ placeholder="请输入内容,按回车添加"
126
+ :disabled="disabled || emptyList.includes(item.matchingOperation)"
127
+ :tagEffect="'plain'"
128
+ :key="item.key"
129
+ :tagType="'info'"
130
+ v-else
131
+ />
132
+ </div>
133
+
134
+ <template v-if="!disabled">
135
+ <i
136
+ class="el-icon-edit auto-icon-ops"
137
+ @click="edit(item, idx)"
138
+ :class="{
139
+ noEvent: emptyList.includes(item.matchingOperation),
140
+ }"
141
+ ></i>
142
+ <i
143
+ class="el-icon-circle-plus-outline auto-icon-ops"
144
+ @click="addRule(idx)"
145
+ ></i>
146
+ <i
147
+ class="el-icon-document-copy auto-icon-ops"
148
+ @click="copyRule(item, idx)"
149
+ ></i>
150
+ <i
151
+ class="el-icon-circle-close auto-icon-ops"
152
+ @click="deleteChild(idx)"
153
+ ></i>
154
+ </template>
155
+ </div>
156
+ <div
157
+ v-for="(child, idx) in localNode.children"
158
+ :key="`${child.key || idx}-auto-group`"
159
+ class="auto-child"
160
+ >
161
+ <condition-group
162
+ :localNode="child"
163
+ :emptyList="emptyList"
164
+ :isNew="isNew"
165
+ :options="options"
166
+ :ref="`conditionGroup${idx}`"
167
+ @delete="deleteGrout(idx)"
168
+ :disabled="disabled"
169
+ :filedList="filedList"
170
+ />
171
+ </div>
172
+ <CLDialog
173
+ v-drag
174
+ :visible.sync="visible"
175
+ :title="$l('匹配值')"
176
+ :destroy-on-open="true"
177
+ >
178
+ <span>{{ $l("若需要同时维护多个匹配值,可换行维护。") }}</span>
179
+ <el-input
180
+ class="m-t-s"
181
+ type="textarea"
182
+ rows="10"
183
+ v-model="textarea"
184
+ placeholder="请输入1000字以内"
185
+ maxlength="1000"
186
+ show-word-limit
187
+ ></el-input>
188
+ <span slot="footer" class="dialog-footer m-t-m">
189
+ <el-button type="primary" @click="save">{{ $l("确 定") }}</el-button>
190
+ <el-button plain @click="visible = false">{{ $l("取 消") }}</el-button>
191
+ </span>
192
+ </CLDialog>
193
+ </div>
194
+ </template>
195
+
196
+ <script>
197
+ import { Dialog } from "n20-common-lib";
198
+ import { NODE_GROUP } from "./config";
199
+ import { uuid } from "@/utils";
200
+ const groupItem = [
201
+ {
202
+ ...NODE_GROUP,
203
+ key: uuid(),
204
+ },
205
+ {
206
+ ...NODE_GROUP,
207
+ key: uuid(),
208
+ },
209
+ ];
210
+ const ruleItem = {
211
+ ...NODE_GROUP,
212
+ key: uuid(),
213
+ };
214
+ export default {
215
+ name: "ConditionGroup",
216
+ props: {
217
+ isNew: {
218
+ type: Boolean,
219
+ default: true,
220
+ },
221
+ options: {
222
+ type: Array,
223
+ default: () => [],
224
+ },
225
+ disabled: {
226
+ type: Boolean,
227
+ default: false,
228
+ },
229
+ emptyList: {
230
+ type: Array,
231
+ default: () => [],
232
+ },
233
+ localNode: Object,
234
+ filedList: {
235
+ type: Array,
236
+ default: () => [],
237
+ },
238
+ },
239
+ components: {
240
+ CLDialog: Dialog,
241
+ inputTag: () => import("../../../inputTag/src/main.vue"),
242
+ },
243
+ data(vm) {
244
+ return {
245
+ valueList: [
246
+ { label: "固定值", value: "FIXED" },
247
+ { label: "动态值", value: "DYNAMIC" },
248
+ ],
249
+ textarea: "",
250
+ visible: false,
251
+ currentIndex: 0,
252
+ matchList: [
253
+ { label: "包含", value: "CONTAINS" },
254
+ { label: "不包含", value: "NOT_CONTAINS" },
255
+ { label: "等于", value: "EQUALS" },
256
+ { label: "不等于", value: "NOT_EQUALS" },
257
+ { label: "为空", value: "IS_EMPTY" },
258
+ { label: "不为空", value: "IS_NOT_EMPTY" },
259
+ { label: "开头包含", value: "STARTS_WITH" },
260
+ { label: "结尾包含", value: "ENDS_WITH" },
261
+ ],
262
+ };
263
+ },
264
+ computed: {
265
+ templateKey() {
266
+ return this.localNode?.matchingRules?.length;
267
+ },
268
+ autoValus() {
269
+ return (item) => {
270
+ if (!this.localNode.vaild) return false;
271
+ if (this.emptyList.includes(item.matchingOperation)) return false;
272
+ if (item?.mValues?.length) return false;
273
+ if (item?.TmValues?.length) return false;
274
+ return true;
275
+ };
276
+ },
277
+ disabledOps() {
278
+ return (val, item) => {
279
+ return (
280
+ !["EQUALS", "NOT_EQUALS"].includes(item.matchingOperation) &&
281
+ val == "DYNAMIC"
282
+ );
283
+ };
284
+ },
285
+ showDelBtn() {
286
+ return this.localNode?.matchingRules?.length > 1;
287
+ },
288
+ showOperator() {
289
+ let l = this.localNode?.matchingRules?.length || 0;
290
+ let c = this.localNode?.children?.length || 0;
291
+ return l + c > 1;
292
+ },
293
+ },
294
+ async mounted() {},
295
+ methods: {
296
+ valueTypeChange(val) {
297
+ if (val === "DYNAMIC") {
298
+ this.$set(item, "fValues", []);
299
+ }
300
+ },
301
+ handleCommand(val) {
302
+ switch (val) {
303
+ case "a":
304
+ this.addItem();
305
+ break;
306
+ case "b":
307
+ this.addGroup();
308
+ break;
309
+ }
310
+ },
311
+ addItem() {
312
+ let arr = this.localNode.matchingRules;
313
+ if (Array.isArray(arr)) {
314
+ this.localNode.matchingRules.push({ ...ruleItem });
315
+ } else {
316
+ this.localNode.matchingRules = [{ ...ruleItem }];
317
+ }
318
+ },
319
+ handChangeOperation(val, item) {
320
+ // if (this.emptyList.includes(val)) {
321
+ this.$set(item, "mValues", []);
322
+ this.$set(item, "TmValues", []);
323
+ // }
324
+ this.$set(item, "matchingValueType", "FIXED");
325
+ this.$set(item, "key", uuid());
326
+ },
327
+ handChangeField(val, item) {
328
+ let temp = this.filedList.find((item) => item.fieldCode == val);
329
+ if (!temp) return;
330
+ this.$set(item, "matchingFieldName", temp.fieldName);
331
+ },
332
+ validFn() {
333
+ //试图反馈逻辑
334
+ this.$set(this.localNode, "vaild", true);
335
+ this.localNode.children?.forEach((item, index) => {
336
+ this.$refs[`conditionGroup${index}`][0]?.validFn();
337
+ });
338
+ for (let i of this.localNode?.matchingRules || []) {
339
+ if (!i.matchingOperation) {
340
+ throw new Error("请输入匹配规则");
341
+ }
342
+ //匹配字段和匹配关系有值时,若匹配关系不等于‘为空’,匹配值必填。
343
+ let flag = !i.mValues.length && !i.TmValues.length;
344
+ if (!this.emptyList.includes(i.matchingOperation) && flag) {
345
+ throw new Error("请输入匹配规则");
346
+ }
347
+ }
348
+ },
349
+ addGroup() {
350
+ let matchingRules = JSON.parse(JSON.stringify(groupItem));
351
+ for (let i of matchingRules) {
352
+ i.key = uuid();
353
+ }
354
+ if ("children" in this.localNode) {
355
+ try {
356
+ this.localNode.children.push({
357
+ logicalOperation: "AND",
358
+ matchingRules: matchingRules,
359
+ });
360
+ return;
361
+ } catch {}
362
+ }
363
+ this.$set(this.localNode, "children", [
364
+ {
365
+ logicalOperation: "AND",
366
+ matchingRules: matchingRules,
367
+ },
368
+ ]);
369
+ },
370
+ save() {
371
+ if (!this.textarea)
372
+ return this.$message.warning(this.$l("请输入匹配内容"));
373
+ let temp = this.textarea.split("\n");
374
+ temp = temp.filter(item=>!!item)
375
+ this.$set(
376
+ this.localNode.matchingRules[this.currentIndex],
377
+ "mValues",
378
+ temp
379
+ );
380
+ this.visible = false;
381
+ },
382
+ edit(row, idx) {
383
+ if (this.emptyList.includes(row.matchingOperation)) return;
384
+ if (!row?.mValues?.length) {
385
+ this.textarea = "";
386
+ } else {
387
+ this.textarea = row.mValues.join("\n");
388
+ }
389
+ this.currentIndex = idx;
390
+ this.visible = true;
391
+ },
392
+ addRule(idx) {
393
+ let item = JSON.parse(JSON.stringify(ruleItem));
394
+ item.key = uuid();
395
+ this.localNode.matchingRules.splice(idx + 1, 0, { ...item });
396
+ },
397
+ copyRule(child, idx) {
398
+ let item = { ...child };
399
+ item.key = uuid();
400
+ this.localNode.matchingRules.splice(idx + 1, 0, { ...item });
401
+ },
402
+ deleteleGroup() {
403
+ this.$emit("delete");
404
+ },
405
+ deleteGrout(idx) {
406
+ this.localNode.children?.splice(idx, 1);
407
+ },
408
+ deleteChild(idx) {
409
+ this.localNode.matchingRules?.splice(idx, 1);
410
+ },
411
+ },
412
+ };
413
+ </script>
@@ -0,0 +1,191 @@
1
+ <template>
2
+ <div>
3
+ <el-input
4
+ v-if="type === 'input'"
5
+ class="input-w"
6
+ clearable
7
+ v-title
8
+ :show-overflow-tooltip="true"
9
+ :maxlength="64"
10
+ v-model="val"
11
+ :placeholder="$l('请输入')"
12
+ />
13
+ <CLSelectLazy
14
+ v-if="type === 'select'"
15
+ class="input-w"
16
+ :filter-method="filterFn"
17
+ @scroll-bottom="getNextList"
18
+ v-title
19
+ :show-overflow-tooltip="true"
20
+ v-model="val"
21
+ @change="selectChange"
22
+ :placeholder="$l('请选择')"
23
+ >
24
+ <el-option
25
+ v-for="item in options"
26
+ :key="item[valueKey]"
27
+ :label="
28
+ labelKey == 'branchBankName'
29
+ ? '(' + item['cnapsNo'] + ')' + item[labelKey]
30
+ : item[labelKey]
31
+ "
32
+ :value="item[valueKey]"
33
+ >
34
+ </el-option>
35
+ </CLSelectLazy>
36
+ </div>
37
+ </template>
38
+
39
+ <script>
40
+ import request from "@/utils/request";
41
+ import { delistToSame } from "@/utils/index";
42
+ import { SelectLazy, SecondaryTab, Page, dayjs } from "n20-common-lib";
43
+ export default {
44
+ name: "CustomInput",
45
+ props: {
46
+ type: {
47
+ type: String,
48
+ },
49
+ url: {
50
+ type: String,
51
+ },
52
+ valueKey: {
53
+ type: String,
54
+ },
55
+ labelKey: {
56
+ type: String,
57
+ },
58
+ params: {
59
+ type: Object,
60
+ },
61
+ value: {
62
+ type: String,
63
+ },
64
+ matchName: {
65
+ type: String,
66
+ },
67
+ },
68
+ components: {
69
+ CLSelectLazy:SelectLazy
70
+ },
71
+ data() {
72
+ return {
73
+ options: [],
74
+ current: 1,
75
+ };
76
+ },
77
+ computed: {
78
+ val: {
79
+ get() {
80
+ return this.value;
81
+ },
82
+ set(val) {
83
+ console.log(val, "val--");
84
+ this.$emit("input", val);
85
+ },
86
+ },
87
+ },
88
+ watch: {
89
+ url(val) {
90
+ if (!val) return;
91
+ this.type === "select" && this.filterFn();
92
+ },
93
+ },
94
+ mounted() {
95
+ this.type === "select" && this.filterFn();
96
+ },
97
+ methods: {
98
+ async getNextList() {
99
+ this.current++;
100
+ let params = {
101
+ ...this.params,
102
+ };
103
+ if (this.labelKey == "branchBankName") {
104
+ //支行模糊查询
105
+ params.searchKey = this.fval;
106
+ } else {
107
+ params[this.labelKey] = this.fval;
108
+ }
109
+
110
+ const list = await this.requestFn({
111
+ ...params,
112
+ "page.size": this.labelKey === "bankName" ? 100 : 20,
113
+ "page.current": this.current,
114
+ });
115
+ if (list.length == 0) {
116
+ this.current--;
117
+ return;
118
+ }
119
+ this.options.push(...list);
120
+ delistToSame(this.options, this.valueKey);
121
+ },
122
+ selectChange(val) {
123
+ let temp = this.options.filter((i) => i[this.valueKey] == val);
124
+ let map = {
125
+ value: temp[0][this.valueKey],
126
+ label: temp[0][this.labelKey],
127
+ };
128
+ this.$emit("change", map);
129
+ },
130
+ async filterFn(val) {
131
+ this.fval = val;
132
+ this.current = 1;
133
+ let params = {
134
+ ...this.params,
135
+ };
136
+ if (this.labelKey == "branchBankName") {
137
+ setTimeout(async () => {
138
+ if (this.value) {
139
+ const res = await request({
140
+ url: "/bems/1.0/branchBank",
141
+ method: "get",
142
+ loading:false,
143
+ params: {
144
+ cnapsNo: this.value,
145
+ "page.size": 1,
146
+ "page.current": 1,
147
+ },
148
+ });
149
+ if (!res.list?.length) {
150
+ return;
151
+ }
152
+ this.options = [...this.options, ...res.list];
153
+ }
154
+ }, 0);
155
+ //支行模糊查询
156
+ params.searchKey = val;
157
+ } else {
158
+ params[this.labelKey] = val;
159
+ }
160
+ const list = await this.requestFn({
161
+ ...params,
162
+ "page.size": this.labelKey === "bankName" ? 100 : 20,
163
+ "page.current": this.current,
164
+ });
165
+ if (!list?.length) return;
166
+ this.options = list;
167
+ let temp = this.options.find((item) => item[this.valueKey] == this.value);
168
+ if (!temp && this.value) {
169
+ this.options.push({
170
+ [this.valueKey]: this.value,
171
+ [this.labelKey]: this.matchName,
172
+ });
173
+ }
174
+ },
175
+ async requestFn(params) {
176
+ try {
177
+ const { list = [] } = await request({
178
+ url: this.url,
179
+ method: "get",
180
+ params,
181
+ });
182
+ return list;
183
+ } catch (error) {
184
+ return [];
185
+ }
186
+ },
187
+ },
188
+ };
189
+ </script>
190
+
191
+ <style></style>