cnhis-design-vue 3.1.1 → 3.1.4

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 (216) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/env.d.ts +8 -4
  3. package/es/packages/big-table/index.d.ts +2038 -0
  4. package/es/packages/big-table/index.mjs +1 -0
  5. package/es/packages/big-table/index2.mjs +14 -0
  6. package/es/packages/big-table/src/BigTable.mjs +2 -0
  7. package/es/packages/big-table/src/BigTable.vue.d.ts +2052 -0
  8. package/es/packages/big-table/src/BigTable.vue_vue_type_script_setup_true_lang.mjs +2315 -0
  9. package/es/packages/big-table/src/BigTable2.mjs +4 -0
  10. package/es/packages/big-table/src/bigTableEmits.d.ts +2 -0
  11. package/es/packages/big-table/src/bigTableEmits.mjs +1 -0
  12. package/{packages/big-table/src/bigTableEmits.ts → es/packages/big-table/src/bigTableEmits2.mjs} +48 -48
  13. package/es/packages/big-table/src/bigTableProps.d.ts +194 -0
  14. package/es/packages/big-table/src/bigTableProps.mjs +1 -0
  15. package/{packages/big-table/src/bigTableProps.ts → es/packages/big-table/src/bigTableProps2.mjs} +116 -125
  16. package/es/packages/big-table/src/bigTableState.d.ts +55 -0
  17. package/es/packages/big-table/src/bigTableState.mjs +1 -0
  18. package/es/packages/big-table/src/bigTableState2.mjs +51 -0
  19. package/es/packages/big-table/src/components/NoData.mjs +2 -0
  20. package/es/packages/big-table/src/components/NoData.vue.d.ts +51 -0
  21. package/es/packages/big-table/src/components/NoData.vue_vue_type_script_setup_true_lang.mjs +72 -0
  22. package/es/packages/big-table/src/components/NoData2.mjs +4 -0
  23. package/es/packages/big-table/src/components/SvgIcon.mjs +2 -0
  24. package/es/packages/big-table/src/components/SvgIcon.vue.d.ts +43 -0
  25. package/es/packages/big-table/src/components/SvgIcon.vue_vue_type_script_setup_true_lang.mjs +34 -0
  26. package/es/packages/big-table/src/components/SvgIcon2.mjs +4 -0
  27. package/es/packages/big-table/src/components/TextOverTooltip.mjs +2 -0
  28. package/es/packages/big-table/src/components/TextOverTooltip.vue.d.ts +560 -0
  29. package/es/packages/big-table/src/components/TextOverTooltip.vue_vue_type_script_setup_true_lang.mjs +74 -0
  30. package/es/packages/big-table/src/components/TextOverTooltip2.mjs +4 -0
  31. package/es/packages/big-table/src/components/edit-form/edit-date.d.ts +34 -0
  32. package/es/packages/big-table/src/components/edit-form/edit-date.mjs +88 -0
  33. package/es/packages/big-table/src/components/edit-form/edit-input.d.ts +43 -0
  34. package/es/packages/big-table/src/components/edit-form/edit-input.mjs +51 -0
  35. package/es/packages/big-table/src/components/edit-form/edit-select-table.d.ts +35 -0
  36. package/es/packages/big-table/src/components/edit-form/edit-select.d.ts +35 -0
  37. package/es/packages/big-table/src/components/edit-form/edit-select.mjs +89 -0
  38. package/es/packages/big-table/src/hooks/useBatchEditing.d.ts +17 -0
  39. package/es/packages/big-table/src/hooks/useBatchEditing.mjs +1 -0
  40. package/es/packages/big-table/src/hooks/useBatchEditing2.mjs +284 -0
  41. package/es/packages/big-table/src/hooks/useEdit.d.ts +171 -0
  42. package/es/packages/big-table/src/hooks/useEdit.mjs +1 -0
  43. package/es/packages/big-table/src/hooks/useEdit2.mjs +108 -0
  44. package/es/packages/big-table/src/hooks/useFormat.d.ts +29 -0
  45. package/es/packages/big-table/src/hooks/useFormat.mjs +1 -0
  46. package/{packages/big-table/src/hooks/useFormat.ts → es/packages/big-table/src/hooks/useFormat2.mjs} +480 -612
  47. package/es/packages/big-table/src/hooks/useNestTable.d.ts +8 -0
  48. package/es/packages/big-table/src/hooks/useNestTable.mjs +1 -0
  49. package/{packages/big-table/src/hooks/useNestTable.ts → es/packages/big-table/src/hooks/useNestTable2.mjs} +84 -109
  50. package/es/packages/big-table/src/hooks/useTableParse.d.ts +6 -0
  51. package/es/packages/big-table/src/hooks/useTableParse.mjs +1 -0
  52. package/es/packages/big-table/src/hooks/useTableParse2.mjs +135 -0
  53. package/es/packages/big-table/src/utils.d.ts +54 -0
  54. package/es/packages/big-table/src/utils.mjs +1 -0
  55. package/{packages/big-table/src/utils.ts → es/packages/big-table/src/utils2.mjs} +597 -705
  56. package/es/packages/big-table/style/index.css +448 -0
  57. package/{packages/big-table/src/assets/style/table-base.less → es/packages/big-table/style/index.less} +292 -10
  58. package/es/packages/button-print/index.d.ts +7373 -0
  59. package/es/packages/button-print/index.mjs +1 -0
  60. package/es/packages/button-print/index2.mjs +11 -0
  61. package/es/packages/button-print/src/ButtonPrint.mjs +2 -0
  62. package/es/packages/button-print/src/ButtonPrint.vue.d.ts +7372 -0
  63. package/es/packages/button-print/src/ButtonPrint.vue_vue_type_script_setup_true_lang.mjs +452 -0
  64. package/es/packages/button-print/src/ButtonPrint2.mjs +4 -0
  65. package/es/packages/button-print/src/components/IdentityVerification.mjs +2 -0
  66. package/es/packages/button-print/src/components/IdentityVerification.vue.d.ts +4785 -0
  67. package/es/packages/button-print/src/components/IdentityVerification.vue_vue_type_script_setup_true_lang.mjs +126 -0
  68. package/es/packages/button-print/src/components/IdentityVerification2.mjs +4 -0
  69. package/es/packages/button-print/src/utils/print.es.min.d.ts +2 -0
  70. package/es/packages/button-print/src/utils/print.es.min.mjs +1 -0
  71. package/es/packages/button-print/src/utils/print.es.min2.mjs +2080 -0
  72. package/es/packages/button-print/style/index.css +26 -0
  73. package/es/packages/button-print/style/index.less +32 -0
  74. package/es/packages/drag-layout/index.d.ts +20061 -0
  75. package/es/packages/drag-layout/index.mjs +1 -0
  76. package/es/packages/drag-layout/index2.mjs +11 -0
  77. package/es/packages/drag-layout/src/DragFormLeftItem.mjs +2 -0
  78. package/es/packages/drag-layout/src/DragFormLeftItem.vue.d.ts +7959 -0
  79. package/es/packages/drag-layout/src/DragFormLeftItem.vue_vue_type_script_setup_true_lang.mjs +122 -0
  80. package/es/packages/drag-layout/src/DragFormLeftItem2.mjs +4 -0
  81. package/es/packages/drag-layout/src/DragFormRightItem.mjs +2 -0
  82. package/es/packages/drag-layout/src/DragFormRightItem.vue.d.ts +3213 -0
  83. package/es/packages/drag-layout/src/DragFormRightItem.vue_vue_type_script_setup_true_lang.mjs +267 -0
  84. package/es/packages/drag-layout/src/DragFormRightItem2.mjs +4 -0
  85. package/es/packages/drag-layout/src/DragLayout.mjs +2 -0
  86. package/es/packages/drag-layout/src/DragLayout.vue.d.ts +20069 -0
  87. package/es/packages/drag-layout/src/DragLayout.vue_vue_type_script_setup_true_lang.mjs +657 -0
  88. package/es/packages/drag-layout/src/DragLayout2.mjs +4 -0
  89. package/es/packages/drag-layout/style/index.css +175 -0
  90. package/es/packages/drag-layout/style/index.less +208 -0
  91. package/es/packages/field-set/index.d.ts +2647 -0
  92. package/es/packages/field-set/index.mjs +1 -0
  93. package/es/packages/field-set/index2.mjs +11 -0
  94. package/es/packages/field-set/src/FieldSet.mjs +2 -0
  95. package/es/packages/field-set/src/FieldSet.vue.d.ts +2599 -0
  96. package/es/packages/field-set/src/FieldSet.vue_vue_type_script_setup_true_lang.mjs +330 -0
  97. package/es/packages/field-set/src/FieldSet2.mjs +4 -0
  98. package/es/packages/field-set/style/index.css +162 -0
  99. package/es/packages/field-set/style/index.less +172 -0
  100. package/es/packages/grid/index.d.ts +3 -0
  101. package/es/packages/grid/index.mjs +1 -0
  102. package/es/packages/grid/index2.mjs +11 -0
  103. package/es/packages/grid/src/Grid.d.ts +2 -0
  104. package/es/packages/grid/src/Grid.mjs +28 -0
  105. package/es/packages/grid/src/hooks.d.ts +1 -0
  106. package/es/packages/grid/src/hooks.mjs +1 -0
  107. package/es/packages/grid/src/hooks2.mjs +165 -0
  108. package/es/packages/grid/style/index.css +0 -0
  109. package/es/packages/grid/style/index.less +1 -0
  110. package/es/packages/index.css +1004 -0
  111. package/es/packages/index.d.ts +35622 -0
  112. package/es/packages/index.less +1205 -0
  113. package/es/packages/index.mjs +7 -0
  114. package/es/packages/index2.mjs +37 -0
  115. package/es/packages/select-person/index.d.ts +3500 -0
  116. package/es/packages/select-person/index.mjs +1 -0
  117. package/es/packages/select-person/index2.mjs +11 -0
  118. package/es/packages/select-person/src/SearchTree.mjs +2 -0
  119. package/es/packages/select-person/src/SearchTree.vue.d.ts +344 -0
  120. package/es/packages/select-person/src/SearchTree.vue_vue_type_script_setup_true_lang.mjs +231 -0
  121. package/es/packages/select-person/src/SearchTree2.mjs +4 -0
  122. package/es/packages/select-person/src/SelectPerson.mjs +2 -0
  123. package/es/packages/select-person/src/SelectPerson.vue.d.ts +3501 -0
  124. package/es/packages/select-person/src/SelectPerson.vue_vue_type_script_setup_true_lang.mjs +892 -0
  125. package/es/packages/select-person/src/SelectPerson2.mjs +4 -0
  126. package/es/packages/select-person/src/utils/index.d.ts +12 -0
  127. package/es/packages/select-person/src/utils/index.mjs +1 -0
  128. package/{packages/select-person/src/utils/index.js → es/packages/select-person/src/utils/index2.mjs} +57 -66
  129. package/es/packages/select-person/style/index.css +193 -0
  130. package/es/packages/select-person/style/index.less +229 -0
  131. package/{packages/big-table → es}/src/assets/iconfont/iconfont.ttf +0 -0
  132. package/{packages/big-table → es}/src/assets/img/failure.png +0 -0
  133. package/{packages/big-table → es}/src/assets/img/icon-asc.png +0 -0
  134. package/{packages/big-table → es}/src/assets/img/icon-desc.png +0 -0
  135. package/{packages/big-table → es}/src/assets/img/no-permission.png +0 -0
  136. package/{packages/big-table → es}/src/assets/img/nodata.png +0 -0
  137. package/{packages/big-table → es}/src/assets/img/notfound.png +0 -0
  138. package/{packages/big-table → es}/src/assets/img/qr.png +0 -0
  139. package/{packages/big-table → es}/src/assets/img/video_default_cover.png +0 -0
  140. package/{packages/big-table → es}/src/assets/img/xb_big.png +0 -0
  141. package/{packages/big-table → es}/src/assets/img/xb_small.png +0 -0
  142. package/es/src/core/create.d.ts +1 -0
  143. package/es/src/core/create.mjs +1 -0
  144. package/es/src/core/create2.mjs +8 -0
  145. package/es/src/global/variable.d.ts +2 -0
  146. package/es/src/global/variable.mjs +1 -0
  147. package/es/src/global/variable2.mjs +4 -0
  148. package/es/src/types/index.d.ts +4 -0
  149. package/es/src/types/index.mjs +1 -0
  150. package/es/src/utils/clickoutside.d.ts +18 -0
  151. package/es/src/utils/clickoutside.mjs +1 -0
  152. package/es/src/utils/clickoutside2.mjs +48 -0
  153. package/es/src/utils/crypto.d.ts +7 -0
  154. package/es/src/utils/crypto.mjs +1 -0
  155. package/{src/utils/crypto.js → es/src/utils/crypto2.mjs} +25 -25
  156. package/es/src/utils/index.d.ts +4 -0
  157. package/es/src/utils/index.mjs +1 -0
  158. package/es/src/utils/index2.mjs +27 -0
  159. package/es/src/utils/vexutils.d.ts +5 -0
  160. package/es/src/utils/vexutils.mjs +3 -0
  161. package/es/src/utils/vexutils2.mjs +729 -0
  162. package/global.d.ts +8 -0
  163. package/package.json +54 -21
  164. package/yarn-error.log +122 -0
  165. package/es/big-table/index.css +0 -587
  166. package/es/big-table/index.js +0 -41710
  167. package/es/button-print/index.css +0 -617
  168. package/es/button-print/index.js +0 -8363
  169. package/es/drag-layout/index.css +0 -850
  170. package/es/drag-layout/index.js +0 -13104
  171. package/es/field-set/index.css +0 -1048
  172. package/es/field-set/index.js +0 -351
  173. package/es/grid/index.css +0 -1049
  174. package/es/grid/index.js +0 -30819
  175. package/es/index.css +0 -1323
  176. package/es/index.js +0 -46945
  177. package/es/select-person/index.css +0 -1323
  178. package/es/select-person/index.js +0 -13191
  179. package/packages/big-table/index.ts +0 -17
  180. package/packages/big-table/src/BigTable.vue +0 -2598
  181. package/packages/big-table/src/assets/iconfont/iconfont.less +0 -22
  182. package/packages/big-table/src/assets/style/table-global.less +0 -171
  183. package/packages/big-table/src/bigTableState.ts +0 -63
  184. package/packages/big-table/src/components/NoData.vue +0 -90
  185. package/packages/big-table/src/components/TextOverTooltip.vue +0 -110
  186. package/packages/big-table/src/components/edit-form/edit-date.vue +0 -75
  187. package/packages/big-table/src/components/edit-form/edit-input.vue +0 -39
  188. package/packages/big-table/src/components/edit-form/edit-select-table.vue +0 -133
  189. package/packages/big-table/src/components/edit-form/edit-select.vue +0 -96
  190. package/packages/big-table/src/hooks/useBatchEditing.ts +0 -574
  191. package/packages/big-table/src/hooks/useEdit.ts +0 -131
  192. package/packages/big-table/src/hooks/useTableParse.ts +0 -169
  193. package/packages/button-print/index.ts +0 -15
  194. package/packages/button-print/src/ButtonPrint.vue +0 -488
  195. package/packages/button-print/src/components/IdentityVerification.vue +0 -120
  196. package/packages/button-print/src/interfaces.ts +0 -19
  197. package/packages/button-print/src/utils/print.es.min.js +0 -1
  198. package/packages/drag-layout/index.ts +0 -15
  199. package/packages/drag-layout/src/DragFormLeftItem.vue +0 -131
  200. package/packages/drag-layout/src/DragFormRightItem.vue +0 -277
  201. package/packages/drag-layout/src/DragLayout.vue +0 -712
  202. package/packages/field-set/index.ts +0 -15
  203. package/packages/field-set/src/FieldSet.vue +0 -471
  204. package/packages/grid/index.ts +0 -20
  205. package/packages/grid/src/Grid.tsx +0 -18
  206. package/packages/grid/src/hooks.ts +0 -167
  207. package/packages/index.ts +0 -41
  208. package/packages/select-person/index.ts +0 -11
  209. package/packages/select-person/src/SelectPerson.vue +0 -1104
  210. package/packages/select-person/src/search-tree.vue +0 -326
  211. package/src/component/svg/index.vue +0 -49
  212. package/src/core/create.js +0 -5
  213. package/src/global/variable.ts +0 -2
  214. package/src/utils/clickoutside.ts +0 -80
  215. package/src/utils/vexutils.js +0 -811
  216. package/tsconfig.node.json +0 -8
@@ -1,712 +0,0 @@
1
- <template>
2
- <div class="drag-layout-container" ref="dragLayoutContainer">
3
- <div class="border-box"></div>
4
- <!-- 左边 -->
5
- <div class="text-area" ref="textArea">
6
- <div class="info-header">备选字段</div>
7
- <draggable
8
- class="min-height text-draggable"
9
- itemKey="val_key"
10
- v-model="state.hideFields"
11
- group="formitem"
12
- :animation="300"
13
- ref="textDraggable"
14
- @add="leftDragAdd"
15
- >
16
- <template #item="{ element }" tag="li">
17
- <li>
18
- <slot name="leftItem" :itemData="element">
19
- <DragFormLeftItem :element="element" />
20
- </slot>
21
- </li>
22
- </template>
23
- </draggable>
24
- </div>
25
- <!-- 右边 -->
26
- <div class="form-area">
27
- <div class="info-header">
28
- <NButton class="add-divider" dashed size="small" @click="handlerAddBranchLine"
29
- >新建分行符</NButton
30
- >
31
- <NButton class="add-divider" dashed size="small" @click="handlerAddLine">新建分线栏</NButton>
32
- </div>
33
- <draggable
34
- class="min-height draggable-content"
35
- itemKey="val_key"
36
- v-model="state.showFields"
37
- :move="handleDragRemove"
38
- group="formitem"
39
- :animation="300"
40
- filter=".undraggable"
41
- >
42
- <template #item="{ element, index }">
43
- <div
44
- :style="{
45
- width: `${(element.elem_width || 12) * 2 / 24 * 100}%`,
46
- display: element.elem_width && element.elem_width < 12 ? 'inline-block': 'block'
47
- }"
48
- :class="{
49
- 'combination-col': element.html_type === 'COMBINATION'
50
- }"
51
- >
52
- <slot name="rightItem" :itemData="element">
53
- <DragFormRightItem
54
- :element="element"
55
- :index="index"
56
- @handleEdit="handleEdit"
57
- @handleDelete="handleDelete"
58
- />
59
- </slot>
60
- </div>
61
- </template>
62
- </draggable>
63
- </div>
64
-
65
- <!-- 弹窗 -->
66
- <NModal
67
- preset="dialog"
68
- title="字段属性"
69
- positive-text="确认"
70
- negative-text="取消"
71
- :show-icon="false"
72
- :zIndex="2001"
73
- v-model:show="state.modalVisible"
74
- @positive-click="handleOk"
75
- v-if="state.modalVisible"
76
- >
77
- <NForm ref="formRef" :model="state.modalFormData" :rules="rules" label-placement="left" label-width="auto">
78
- <NGrid>
79
- <!-- 名称 -->
80
- <NFormItemGi
81
- v-if="!is_text"
82
- :span="18"
83
- label="名称"
84
- >
85
- <NInput
86
- placeholder="名称"
87
- v-model:value="state.modalFormData.name"
88
- />
89
- </NFormItemGi>
90
- <template v-if="!isPageLayout">
91
- <!-- 默认值 -->
92
- <NFormItemGi
93
- v-if="!is_text"
94
- :span="18"
95
- label="默认值"
96
- >
97
- <NInput
98
- placeholder="默认值"
99
- v-model:value="state.modalFormData.default_val"
100
- />
101
- </NFormItemGi>
102
- </template>
103
-
104
- <!-- 宽度 -->
105
- <NFormItemGi
106
- v-if="!hideModalWidth"
107
- :span="18"
108
- label="宽度"
109
- >
110
- <NSelect
111
- :options="state.widthOptions"
112
- v-model:value="state.modalFormData.elem_width"
113
- >
114
- </NSelect>
115
- </NFormItemGi>
116
-
117
- <!-- 高度 -->
118
- <NFormItemGi
119
- v-if="isPageLayout && !hideModalWidth"
120
- :span="18"
121
- label="高度(行)"
122
- >
123
- <NInput
124
- placeholder="高度(行)"
125
- v-model:value="state.modalFormData.line_height"
126
- />
127
- </NFormItemGi>
128
- <template v-if="!is_text">
129
- <!-- 说明文本 -->
130
- <NFormItemGi
131
- v-if="!isPageLayout"
132
- :span="18"
133
- label="说明文本"
134
- >
135
- <NInput
136
- placeholder="说明文本"
137
- v-model:value="state.modalFormData.placeholder"
138
- />
139
- </NFormItemGi>
140
-
141
- <NFormItemGi
142
- v-if="state.modalFormData.html_type != 'PAGE_LAYOUT'"
143
- :span="18"
144
- :label="'问号提示'"
145
- >
146
- <NInput
147
- :maxLength="200"
148
- placeholder="请输入问号提示"
149
- v-model:value="state.modalFormData.remark"
150
- />
151
- </NFormItemGi>
152
- </template>
153
-
154
- <template
155
- v-if="
156
- state.modalFormData.is_fast_reply_field != 1 &&
157
- (state.modalFormData.html_type == 'TEXTAREA' || state.modalFormData.html_type == 'INPUT')
158
- "
159
- >
160
- <!-- 快速输入 -->
161
- <NFormItemGi
162
- :span="18"
163
- label="快速输入"
164
- >
165
- <NCheckbox :checked="state.modalFormData.is_fast_reply" @on-update:checked="checkOnChange"></NCheckbox>
166
- </NFormItemGi>
167
- <!-- 回复分类 -->
168
- <NFormItemGi
169
- v-if="state.modalFormData.is_fast_reply"
170
- :span="18"
171
- :label="'短语分类'"
172
- path="reply_category"
173
- >
174
- <NSelect
175
- multiple
176
- v-model:value="state.modalFormData.reply_category"
177
- filterable
178
- :filter="vexutils.filterOption"
179
- placeholder="分类名称"
180
- @update:value="changeCategofy"
181
- :options="state.publicReply"
182
- >
183
- </NSelect>
184
- </NFormItemGi>
185
- <!-- 部分隐藏 -->
186
- <NFormItemGi
187
- v-show="state.modalFormData.is_edit == 0"
188
- label="部分隐藏"
189
- :span="18"
190
- >
191
- <NInputNumber
192
- placeholder="请输入"
193
- v-model:value="state.modalFormData.hideExpression"
194
- />
195
- </NFormItemGi>
196
- </template>
197
-
198
- <!-- 动态文本值 -->
199
- <NFormItemGi v-if="is_text" :label="'文本内容(支持FreeMarker)'">
200
- <NInput
201
- placeholder="请输入动态文本内容"
202
- type="textarea"
203
- v-model:value="state.modalFormData.default_val"
204
- />
205
- </NFormItemGi>
206
- </NGrid>
207
- </NForm>
208
- </NModal>
209
-
210
- <NModal
211
- preset="dialog"
212
- :title="state.lineAddTitle"
213
- positive-text="确认"
214
- negative-text="取消"
215
- :show-icon="false"
216
- :zIndex="2001"
217
- v-model:show="state.visibleLineAdd"
218
- @negative-click="handleCancel"
219
- @positive-click="handleOkLineAdd"
220
- >
221
- <div>
222
- <label class="new-name">名称</label>
223
- <NInput class="view-model-input new-name-input" v-model:value="state.itemTitleNameAdd" />
224
- </div>
225
- <div v-show="state.lineType != 'LINE_BREAKS'">
226
- <input
227
- class="name-new-change"
228
- @change="onChangeAdd($event, 'is_show')"
229
- type="checkbox"
230
- v-model="state.isAddChecked"
231
- />
232
- 默认展开
233
- <br />
234
- <input
235
- class="name-new-change"
236
- @change="onChangeAdd($event, 'is_not_fold')"
237
- type="checkbox"
238
- v-model="state.is_not_foldChecked"
239
- />
240
- 不可折叠
241
- <!-- {{ $t("1.9.69") }} -->
242
- </div>
243
- </NModal>
244
- </div>
245
- </template>
246
-
247
- <script lang="ts">
248
- import create from '@/core/create.js';
249
- export default create({
250
- name: "DragLayout"
251
- })
252
- </script>
253
-
254
- <script setup lang="ts">
255
- import { ref, reactive, computed, watch, onMounted, nextTick } from 'vue'
256
- import { NGrid, NGridItem, NFormItemGi, NButton, NModal, NForm, NFormItem, NInput, NSelect, NCheckbox, NInputNumber, FormRules, FormInst } from 'naive-ui'
257
- import draggable from "vuedraggable";
258
- import DragFormLeftItem from "./DragFormLeftItem.vue";
259
- import DragFormRightItem from "./DragFormRightItem.vue";
260
- import vexutils from '@/utils/vexutils.js';
261
-
262
- const dragLayoutContainer: any = ref(null)
263
- const textArea: any = ref(null)
264
- const formRef = ref<FormInst | null>(null)
265
-
266
- const state: any = reactive({
267
- modalVisible: false,
268
- visibleLineAdd: false,
269
-
270
- modalFormData: {
271
- name: '', // 名称
272
- elem_width: '12', // 宽度
273
- reply_category: [], // 快速回复分类
274
- is_fast_reply: false, // 快速输入
275
- html_type: '', // 类型
276
- is_edit: 1, // 是否可编辑
277
- hideExpression: '', // 部分隐藏
278
- remark: '', // 字段说明
279
- default_val: '', // 默认值
280
- placeholder: '', // 字段提示语
281
- publicReply: [], // 分类数据
282
- is_fast_reply_field: 0 // 快速回复开启
283
- },
284
- publicReply: [],
285
-
286
- itemTitleNameAdd: '',
287
- is_show: 0,
288
- is_not_fold: 0,
289
- isAddChecked: false,
290
- is_not_foldChecked: false,
291
-
292
- handleLIne: 'add',
293
- lineType: "LINEBAR",
294
-
295
- showFields: [],
296
- hideFields: [],
297
- curIndex: undefined,
298
- editModalType: 'edit',
299
-
300
- lineAddTitle: '新建分线栏',
301
- widthOptions: [
302
- {
303
- label: "整行",
304
- value: '12',
305
- class: 'dragForm-select-drop'
306
- },
307
- {
308
- label: "半行",
309
- value: '6',
310
- class: 'dragForm-select-drop'
311
- },
312
- {
313
- label: '5/6',
314
- value: '10',
315
- class: 'dragForm-select-drop'
316
- },
317
- {
318
- label: '2/3',
319
- value: '8',
320
- class: 'dragForm-select-drop'
321
- },
322
- {
323
- label: '1/3',
324
- value: '4',
325
- class: 'dragForm-select-drop'
326
- },
327
- {
328
- label: '3/4',
329
- value: '9',
330
- class: 'dragForm-select-drop'
331
- },
332
- {
333
- label: '1/4',
334
- value: '3',
335
- class: 'dragForm-select-drop'
336
- }
337
- ]
338
- })
339
-
340
- const rules: FormRules = {
341
- reply_category: [
342
- {
343
- required: state.modalFormData.is_fast_reply,
344
- trigger: ['blur', 'change'],
345
- message: '请输入'
346
- }
347
- ]
348
- }
349
-
350
- const props = withDefaults(defineProps<{
351
- leftList?: any[]
352
- rightList?: any[]
353
- getpublicReplyList?: Function
354
- }>(), {
355
- leftList: () => [],
356
- rightList: () => [],
357
- getpublicReplyList: () => Promise.resolve([])
358
- })
359
-
360
- const emit = defineEmits(['updateConfig']);
361
-
362
- const isPageLayout = computed(() => state.modalFormData.html_type === "PAGE_LAYOUT" || state.modalFormData.html_type === "COMBINATION")
363
- const is_text = computed(() => state.modalFormData.html_type === "TEXT")
364
- const hideModalWidth = computed(() => state.modalFormData.html_type === "COMBINATION")
365
- const lineTypeList = computed(() => ["LINEBAR", "LINE_BREAKS"])
366
-
367
- /** line 类型 */
368
- const isLineType = (t: any) => {
369
- return lineTypeList.value.includes(t);
370
- }
371
- // 快速回复
372
- const handleReqQieckReplyData = async () => {
373
- // this.axios
374
- // .get("/fastReply/getList/all")
375
- // .then(({ data }) => {
376
- // if (data.result === "SUCCESS") {
377
- // this.publicReply = data.map?.organizationReply || [];
378
- // } else {
379
- // this.publicReply = [];
380
- // }
381
- // })
382
- // .catch(err => {
383
- // this.publicReply = [];
384
- // console.log(err);
385
- // });
386
- try {
387
- let res = await props.getpublicReplyList();
388
- state.publicReply = Array.isArray(res) ? res : [];
389
- } catch (error) {
390
- console.log(error);
391
- }
392
- }
393
- const handleEdit = (data: any, i: any, type = "edit") => {
394
- state.currentIndex = i;
395
- state.editModalType = type;
396
- if (isLineType(data.html_type)) {
397
- state.handleLIne = "edit";
398
- state.visibleLineAdd = true;
399
- state.itemTitleNameAdd = data.name || "分行符";
400
- state.is_show = data.is_show;
401
- state.is_not_fold = data.is_not_fold;
402
- state.isAddChecked = data.is_show == 1;
403
- state.is_not_foldChecked = data.is_not_fold == 1;
404
- return;
405
- }
406
- const keyList = [
407
- "name",
408
- "elem_width",
409
- "reply_category",
410
- "html_type",
411
- "is_edit",
412
- "remark",
413
- "default_val",
414
- "line_height",
415
- "is_fast_reply_field",
416
- "placeholder"
417
- ];
418
- keyList.forEach(v => {
419
- if (v === "reply_category") {
420
- if (data[v] && vexutils.isJSON(data[v])) {
421
- state.modalFormData[v] = JSON.parse(data[v]) || [];
422
- } else {
423
- state.modalFormData[v] = (data[v] && [data[v]]) || [];
424
- }
425
- } else {
426
- state.modalFormData[v] = data[v] || undefined;
427
- }
428
- });
429
- if (!state.publicReply?.length && data["is_fast_reply_field"] != 1) {
430
- handleReqQieckReplyData();
431
- }
432
-
433
- // 其他处理
434
- state.modalFormData.is_fast_reply = data.is_fast_reply == 1;
435
- state.modalFormData.hideExpression = 0;
436
-
437
- state.modalVisible = true;
438
- }
439
-
440
- const changeCategofy = (value: any) => {
441
- console.log(value);
442
- }
443
-
444
- const handleOk = (e: any) => {
445
- // e.preventDefault();
446
- formRef.value?.validate((errors) => {
447
- if (errors) return;
448
- if (state.editModalType == "edit") {
449
- state.showFields[state.currentIndex].is_fast_reply = state.modalFormData.is_fast_reply ? 1 : 0;
450
- // 直接赋值,不需要转换的属性
451
- let keys = [
452
- "name",
453
- "elem_width",
454
- "reply_category",
455
- "remark",
456
- "hideExpression",
457
- "default_val",
458
- "line_height",
459
- "placeholder"
460
- ];
461
- keys.forEach(k => {
462
- state.showFields[state.currentIndex][k] = state.modalFormData[k];
463
- });
464
- } else {
465
- state.showFields[state.currentIndex].reply_category = state.modalFormData.reply_category;
466
- }
467
-
468
- state.modalVisible = false;
469
- })
470
- }
471
- const handleDelete = (data: any, i: any) => {
472
- let deleItem = state.showFields.splice(i, 1);
473
- // 没有 val_key 的分线栏是中台创建的可以删除,后台创建的移到备选字段
474
- if (isLineType(data.html_type) && !data.val_key) {
475
- return;
476
- }
477
- state.hideFields.push(...deleItem);
478
- }
479
- const getParams = () => {
480
- return {
481
- showFields: state.showFields,
482
- hideFields: state.hideFields
483
- };
484
- }
485
- const addItemShowLine = () => {
486
- state.visibleLineAdd = true;
487
- state.itemTitleNameAdd = "";
488
- state.is_show = 1;
489
- state.is_not_fold = 0;
490
- state.isAddChecked = true;
491
- state.is_not_foldChecked = false;
492
- if (state.lineType === "LINEBAR") {
493
- state.lineAddTitle = '新建分线栏';
494
- } else if (state.lineType === "LINE_BREAKS") {
495
- state.lineAddTitle = "新建分行符";
496
- }
497
- }
498
- const handlerAddLine = () => {
499
- state.handleLIne = "add";
500
- state.lineType = "LINEBAR";
501
- addItemShowLine();
502
- }
503
- // 新增分行符
504
- const handlerAddBranchLine = () => {
505
- state.handleLIne = "add";
506
- state.lineType = "LINE_BREAKS";
507
- addItemShowLine();
508
- state.is_show = 1;
509
- }
510
- const onChangeAdd = (e: any, key: string) => {
511
- if (e.target.checked == true) {
512
- state[key] = 1;
513
- } else {
514
- state[key] = 0;
515
- }
516
- }
517
- const handleCancel = () => {
518
- state.visibleLine = false;
519
- state.visibleLineAdd = false;
520
- }
521
- const handleOkLineAdd = () => {
522
- let isL = state.lineType === "LINEBAR";
523
- let lineDefaultName = isL ? "分线栏" : "分行符";
524
-
525
- if (state.handleLIne === "edit") {
526
- let curItem = state.showFields[state.currentIndex];
527
- state.lineType = curItem.html_type;
528
- curItem.is_show = state.is_show;
529
- if (isL) {
530
- curItem.is_not_fold = state.is_not_fold;
531
- }
532
- curItem['name'] = state.itemTitleNameAdd || lineDefaultName;
533
- } else {
534
- // 新建 name
535
- state.showFields.push({
536
- html_type: state.lineType || "LINEBAR",
537
- is_show: state.is_show,
538
- is_not_fold: isL ? state.is_not_fold : undefined,
539
- name: state.itemTitleNameAdd || lineDefaultName
540
- });
541
- }
542
- handleCancel();
543
- }
544
- const leftDragAdd = (e: any) => {
545
- let { newIndex, oldIndex } = e;
546
- if (oldIndex > -1 && oldIndex > -1) {
547
- let curItem = state.hideFields[newIndex];
548
- if (curItem.is_system_fields == 0) {
549
- state.hideFields.splice(newIndex, 1);
550
- state.showFields.splice(oldIndex, 0, curItem);
551
- }
552
- }
553
- }
554
- const handleDragRemove = (e: any) => {
555
- console.log('handleDragRemove', e)
556
- let { draggedContext = {}, to } = e;
557
- let movedItem = draggedContext.element || {};
558
- let className = to.className || "";
559
-
560
- if (movedItem.is_drag && movedItem.is_drag == 0 && className.includes("text-draggable")) {
561
- return false;
562
- }
563
- }
564
- const checkOnChange = (e: any) => {
565
- state.modalFormData.is_fast_reply = e.target.checked;
566
- }
567
- const visibleChange = (e: any) => {
568
- // console.log("e", e);
569
- }
570
- /**
571
- * 更新配置
572
- */
573
- const updateConfig = () => {
574
- clearTimeout(state.updateTime);
575
- state.updateTime = setTimeout(() => {
576
- emit("updateConfig", {
577
- leftList: state.hideFields,
578
- rightList: state.showFields
579
- });
580
- }, 100);
581
- }
582
- // const getI18nText = (i: any, d: any) => {
583
- // if (Array.isArray(i)) {
584
- // return $t ? $t.apply(this, i) : d;
585
- // }
586
- // return $t ? $t(i) : d;
587
- // }
588
- // 设置数据
589
- const handleSetData = (config: any = {}) => {
590
- if (Array.isArray(config.rightList)) {
591
- state.showFields = config.rightList;
592
- }
593
-
594
- if (Array.isArray(config.leftList)) {
595
- state.hideFields = config.leftList;
596
- }
597
- }
598
- const mountedInit = () => {
599
- const { rightList, leftList } = props;
600
- let checkList = (v: any) => Array.isArray(v) && v.length > 0;
601
- if (checkList(props.rightList) || checkList(props.leftList)) {
602
- handleSetData({ rightList, leftList });
603
- }
604
- }
605
-
606
- onMounted(() => {
607
- mountedInit()
608
- nextTick(() => {
609
- textArea.value.style.height = dragLayoutContainer.value.clientHeight + 'px';
610
- })
611
- })
612
-
613
- watch(
614
- [state.showFields, state.hideFields],
615
- ([showFields, hideFields]: any) => {
616
- updateConfig()
617
- },
618
- { deep: true }
619
- )
620
- </script>
621
- <style lang="less" scoped>
622
- .drag-layout-container {
623
- width: 100%;
624
- height: 100%;
625
- flex: 1;
626
- overflow: hidden;
627
- overflow-y: auto;
628
- position: relative;
629
- display: flex;
630
- justify-content: flex-start;
631
- border: 1px solid #d2d9e8;
632
- text-align: left;
633
- .min-height {
634
- height: calc(100% - 60px);
635
- overflow: hidden;
636
- overflow-y: auto;
637
- li {
638
- list-style: none;
639
- }
640
- }
641
-
642
- .border-box {
643
- position: absolute;
644
- top: 0;
645
- left: 30%;
646
- border-left: 1px solid #d2d9e8;
647
- height: 100%;
648
- }
649
-
650
- .text-area {
651
- width: 30%;
652
- height: 100%;
653
- overflow-y: auto;
654
- padding: 0 !important;
655
-
656
- .info-header {
657
- display: flex;
658
- height: 50px;
659
- line-height: 50px;
660
- padding: 0 10px;
661
- margin-bottom: 10px;
662
- color: #2e2e2e;
663
- font-size: 18px;
664
- font-weight: bold;
665
- background: #e6eaef;
666
- }
667
-
668
- .text-draggable {
669
- display: flex;
670
- flex-wrap: wrap;
671
- justify-content: space-between;
672
- align-items: flex-start;
673
- padding: 0 12px 12px;
674
- box-sizing: border-box;
675
- align-content: flex-start;
676
- li {
677
- width: 49%;
678
- text-align: center;
679
- }
680
- }
681
- }
682
-
683
- .form-area {
684
- position: relative;
685
- width: 70%;
686
- height: 100%;
687
- overflow-y: auto;
688
- padding: 4px;
689
- box-sizing: border-box;
690
- &::-webkit-scrollbar {
691
- width: 5px;
692
- }
693
- .info-header {
694
- height: 50px;
695
- margin-bottom: 10px;
696
- background: unset;
697
-
698
- display: flex;
699
- justify-content: flex-end;
700
- align-items: center;
701
- }
702
- .combination-col {
703
- border: 1px solid #cdc5d3;
704
- margin-bottom: 10px;
705
- }
706
- }
707
- }
708
-
709
- .dragForm-select-drop {
710
- z-index: 2001;
711
- }
712
- </style>