@94ai/nf-conditions 3.1.13

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.
@@ -0,0 +1,340 @@
1
+ <template>
2
+ <div class="nf-conditions">
3
+ <condition-container
4
+ ref="conditionContainer"
5
+ :config="{
6
+ disabled,
7
+ size,
8
+ model: plan,
9
+ 'show-message':showMessage,
10
+ 'inline-message':inlineMessage,
11
+ 'status-icon': statusIcon,
12
+ }"
13
+ :tag="tag"
14
+ >
15
+ <el-form-item
16
+ v-for="(condition,i) in plan[conditionsKey]"
17
+ :key="condition.key"
18
+ label-width="0"
19
+ >
20
+ <div class="condition-header">
21
+ <span class="condition-pre"><span style="color: red;margin-right: 5px;vertical-align: middle">*</span>{{ conditionDesc }} {{ (i + 1) }}</span>
22
+ <span class="remove-condition" @click="removeCondition(i)" v-if="!hiddenConditionReduce"><span class="remove-condition-icon">{{ deleteConditionDesc }}</span></span>
23
+ </div>
24
+ <nf-rules
25
+ ref="nfRules"
26
+ :show-message="showMessage"
27
+ :init-add-data="initAddRuleData"
28
+ :inline-message="inlineMessage"
29
+ :status-icon="statusIcon"
30
+ :logic-merge-desc="logicMergeDesc"
31
+ :number-require-desc="numberRequireDesc"
32
+ :common-len-limit-desc="commonLenLimitDesc"
33
+ :place-enter="placeEnter"
34
+ :prohibit-empty-desc="prohibitEmptyDesc"
35
+ :params-len-limit-desc="paramsLenLimitDesc"
36
+ :range-separator-desc="rangeSeparatorDesc"
37
+ :start-placeholder-date="startPlaceholderDate"
38
+ :end-placeholder-date="endPlaceholderDate"
39
+ :start-placeholder-time="startPlaceholderTime"
40
+ :end-placeholder-time="endPlaceholderTime"
41
+ :time-picker-placeholder="timePickerPlaceholder"
42
+ :date-picker-placeholder="datePickerPlaceholder"
43
+ :split-desc="splitDesc"
44
+ :condition-disabled="conditionDisabled"
45
+ :hidden-add="hiddenAdd"
46
+ :hidden-reduce="hiddenReduce"
47
+ :show-rule-types="showRuleTypes"
48
+ :default-add-data="defaultAddData"
49
+ :default-add-type="defaultAddType"
50
+ :size="size"
51
+ :placeholder="placeholder"
52
+ :times="times"
53
+ :second="second"
54
+ :disabled="disabled"
55
+ :disables="disables"
56
+ :limit="limit"
57
+ :操作类型="操作类型"
58
+ :规则类型="规则类型"
59
+ :计算类型="计算类型"
60
+ :日期类型="日期类型"
61
+ :外呼状态="外呼状态"
62
+ :规则类型下拉="规则类型下拉"
63
+ :操作类型下拉="操作类型下拉"
64
+ :计算类型下拉="计算类型下拉"
65
+ :日期类型下拉="日期类型下拉"
66
+ :外呼状态下拉="外呼状态下拉"
67
+ :意向标签集合="意向标签集合"
68
+ :规则类型下拉合并策略="规则类型下拉合并策略"
69
+ :计算类型下拉合并策略="计算类型下拉合并策略"
70
+ :操作类型下拉合并策略="操作类型下拉合并策略"
71
+ :日期类型下拉合并策略="日期类型下拉合并策略"
72
+ :外呼状态下拉合并策略="外呼状态下拉合并策略"
73
+ :意向标签集合合并策略="意向标签集合合并策略"
74
+ tag='div'
75
+ :valid-prefix='validPrefix + `${conditionsKey}.${i}.`'
76
+ :rules='condition[rulesKey]'
77
+ :rules-key="rulesKey"
78
+ @addRule="(e) => $emit('addRule', e)"
79
+ @reduceRule="(e) => $emit('reduceRule', e)"
80
+ @onChange="() => $emit('ruleChange' , plan[conditionsKey])"
81
+ />
82
+ </el-form-item>
83
+ <div class="condition-footer">
84
+ <span class="add-condition" @click="addCondition()" v-if="!hiddenConditionAdd && (!conditionLimit || plan[conditionsKey]?.length < conditionLimit)">
85
+ <span class="add-condition-icon">{{ addConditionDesc }}</span>
86
+ </span>
87
+ </div>
88
+ </condition-container>
89
+ </div>
90
+ </template>
91
+
92
+ <script lang="ts">
93
+ import { defineComponent } from 'vue-demi'
94
+
95
+ export default defineComponent({
96
+ name: "nf-conditions",
97
+ })
98
+ </script>
99
+
100
+ <script lang="ts" setup>
101
+ import {
102
+ nextTick,
103
+ onMounted,
104
+ ref
105
+ } from 'vue-demi'
106
+ import { generateUUID } from '@94ai/common-utils'
107
+ import {
108
+ DropDownItem,
109
+ MergeStrategy,
110
+ RuleItem
111
+ } from '@94ai/nf-rules/lib/types'
112
+ import {
113
+ 外呼状态 as 外呼状态默认枚举,
114
+ 操作类型 as 操作类型默认枚举,
115
+ 日期类型 as 日期类型默认枚举,
116
+ 规则类型 as 规则类型默认枚举,
117
+ 计算类型 as 计算类型默认枚举
118
+ } from '@94ai/nf-rules'
119
+ import ConditionContainer from './condition-container.vue'
120
+
121
+ const props = withDefaults(defineProps<{
122
+ conditions?: {
123
+ rules?: RuleItem[]
124
+ key?: string
125
+ }[]
126
+ rulesKey?: string
127
+ conditionsKey?: string
128
+ conditionLimit?: number
129
+ hiddenConditionAdd?: boolean
130
+ hiddenConditionReduce?: boolean
131
+ conditionDesc?: string,
132
+ addConditionDesc?: string,
133
+ deleteConditionDesc?: string,
134
+ initAddData?: boolean,
135
+ initAddRuleData?: boolean,
136
+
137
+ /**
138
+ * 表单
139
+ */
140
+ size?: 'medium' | 'small' | 'mini',
141
+ tag?: string
142
+ showMessage?: boolean
143
+ inlineMessage?:boolean
144
+ statusIcon?:boolean
145
+ validPrefix?: string
146
+ /**
147
+ * 国际化
148
+ */
149
+ logicMergeDesc?: string,
150
+ placeholder?: string,
151
+ numberRequireDesc?: string,
152
+ commonLenLimitDesc?: string,
153
+ placeEnter?: string,
154
+ prohibitEmptyDesc?: string,
155
+ paramsLenLimitDesc?: string,
156
+ times?: string,
157
+ second?: string,
158
+ rangeSeparatorDesc?: string,
159
+ startPlaceholderDate?: string,
160
+ endPlaceholderDate?:string,
161
+ startPlaceholderTime?:string,
162
+ endPlaceholderTime?:string,
163
+ timePickerPlaceholder?: string,
164
+ datePickerPlaceholder?: string,
165
+ splitDesc?: string,
166
+ /**
167
+ * 禁用
168
+ */
169
+ disabled?:boolean
170
+ conditionDisabled?:boolean
171
+ disables?: Record<string, boolean[]>
172
+ hiddenAdd?:boolean
173
+ hiddenReduce?:boolean
174
+ limit?:number
175
+ /**
176
+ * 规则回显数据
177
+ */
178
+ rules?: RuleItem[],
179
+ /**
180
+ * 控制哪些规则显示
181
+ */
182
+ showRuleTypes?: (string | number)[],
183
+ /**
184
+ * 默认新增的规则数据
185
+ */
186
+ defaultAddData?: RuleItem,
187
+ /**
188
+ * 默认新增的规则类型
189
+ */
190
+ defaultAddType?: string | number
191
+ /**
192
+ * 枚举
193
+ */
194
+ 操作类型?: Record<keyof typeof 操作类型默认枚举, string | number>,
195
+ 规则类型?: Record<keyof typeof 规则类型默认枚举, string | number>,
196
+ 计算类型?: Record<keyof typeof 计算类型默认枚举, string | number>,
197
+ 日期类型?: Record<keyof typeof 日期类型默认枚举, string | number>,
198
+ 外呼状态?: Record<keyof typeof 外呼状态默认枚举, string | number>,
199
+ /**
200
+ * 下拉
201
+ */
202
+ 规则类型下拉?: DropDownItem[],
203
+ 操作类型下拉?: DropDownItem[],
204
+ 计算类型下拉?: DropDownItem[],
205
+ 日期类型下拉?: DropDownItem[],
206
+ 外呼状态下拉?: DropDownItem[],
207
+ 意向标签集合?: DropDownItem[],
208
+ /**
209
+ * 下拉合并策略
210
+ */
211
+ 规则类型下拉合并策略?: MergeStrategy,
212
+ 计算类型下拉合并策略?: MergeStrategy,
213
+ 操作类型下拉合并策略?: MergeStrategy,
214
+ 日期类型下拉合并策略?: MergeStrategy,
215
+ 外呼状态下拉合并策略?: MergeStrategy,
216
+ 意向标签集合合并策略?: MergeStrategy,
217
+ }>(), {
218
+ conditions: undefined,
219
+ rulesKey: 'rules',
220
+ initAddData: true,
221
+ initAddRuleData: true,
222
+ conditionsKey: 'conditions',
223
+ conditionLimit: 0,
224
+ hiddenConditionAdd: false,
225
+ hiddenConditionReduce: false,
226
+ conditionDesc: '条件',
227
+ addConditionDesc: '+ 添加条件',
228
+ deleteConditionDesc: '- 删除条件',
229
+
230
+ size: 'mini',
231
+ logicMergeDesc: '且',
232
+ placeholder: '请选择',
233
+ numberRequireDesc: '请输入数字',
234
+ commonLenLimitDesc: '总文案长度不超过2000中文字符',
235
+ placeEnter: '请输入',
236
+ prohibitEmptyDesc: '不能为空',
237
+ paramsLenLimitDesc: '最多可输入50个英文字符长度',
238
+ rangeSeparatorDesc: "至",
239
+ startPlaceholderDate: "开始日期",
240
+ endPlaceholderDate: "结束日期",
241
+ startPlaceholderTime: "开始时间",
242
+ endPlaceholderTime: "结束时间",
243
+ timePickerPlaceholder: '选择时间范围',
244
+ datePickerPlaceholder: '选择日期范围',
245
+ splitDesc: '输入多个时,用#分割',
246
+ rules: undefined,
247
+ tag: 'el-form',
248
+ showMessage: true,
249
+ inlineMessage: false,
250
+ statusIcon: false,
251
+ validPrefix: '',
252
+ disabled: false,
253
+ conditionDisabled: false,
254
+ disables: undefined,
255
+ hiddenAdd: false,
256
+ limit: 0,
257
+ hiddenReduce: false,
258
+ times: '次',
259
+ second: '秒',
260
+ 规则类型下拉合并策略: 'defaultPatch',
261
+ 计算类型下拉合并策略: 'defaultPatch',
262
+ 操作类型下拉合并策略: 'defaultPatch',
263
+ 日期类型下拉合并策略: 'defaultPatch',
264
+ 外呼状态下拉合并策略: 'defaultPatch',
265
+ 意向标签集合合并策略: 'defaultPatch',
266
+ showRuleTypes: () => [],
267
+ 操作类型: () => 操作类型默认枚举,
268
+ 规则类型: () => 规则类型默认枚举,
269
+ 计算类型: () => 计算类型默认枚举,
270
+ 日期类型: () => 日期类型默认枚举,
271
+ 外呼状态: () => 外呼状态默认枚举,
272
+ })
273
+ const emit = defineEmits<{
274
+ (e: 'reduceCondition', event: Record<string, any>): void
275
+ (e: 'addCondition', event: Record<string, any>): void
276
+ }>()
277
+
278
+ const conditionContainer = ref()
279
+ const nfConditionsForm = ref()
280
+
281
+ onMounted(() => {
282
+ nfConditionsForm.value = conditionContainer.value?.$refs.nfConditionsForm
283
+ })
284
+
285
+ const getCondition = (): {
286
+ key: string
287
+ rules?: RuleItem[]
288
+ } => {
289
+ return {
290
+ [props.rulesKey]: [],
291
+ key: generateUUID()
292
+ }
293
+ }
294
+
295
+ const initPlan = () => {
296
+ if (!props.conditions) {
297
+ return props.initAddData ? [getCondition()] : []
298
+ } else if (!props.conditions.length) {
299
+ if (props.initAddData) {
300
+ props.conditions.push(getCondition())
301
+ }
302
+ } else {
303
+ props.conditions.forEach(item => {
304
+ item.key ??= generateUUID()
305
+ })
306
+ }
307
+ return props.conditions
308
+ }
309
+
310
+ const plan = ref<{
311
+ 'conditions'?: {
312
+ key?: string,
313
+ rules?: RuleItem[]
314
+ }[],
315
+ }>({
316
+ [props.conditionsKey]: initPlan()
317
+ })
318
+
319
+ const removeCondition = (j) => {
320
+ emit('reduceCondition', plan.value[props.conditionsKey][j])
321
+ plan.value[props.conditionsKey].splice(j, 1)
322
+ }
323
+ const addCondition = async () => {
324
+ plan.value[props.conditionsKey].push(getCondition())
325
+ await nextTick()
326
+ emit('addCondition', plan.value[props.conditionsKey][plan.value[props.conditionsKey].length - 1])
327
+ }
328
+
329
+
330
+ defineExpose({
331
+ addCondition,
332
+ removeCondition,
333
+ initPlan,
334
+ getCondition,
335
+ conditionContainer,
336
+ nfConditionsForm,
337
+ plan,
338
+ })
339
+
340
+ </script>
@@ -0,0 +1 @@
1
+ import '@94ai/nf-theme-chalk/lib/css/nf-conditions.css'
@@ -0,0 +1 @@
1
+ import '@94ai/nf-theme-chalk/lib/nf-conditions.scss'
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@94ai/nf-conditions",
3
+ "version": "3.1.13",
4
+ "description": "> TODO: description",
5
+ "keywords": [],
6
+ "author": "zoujiahe <zoujiahe@94ai.com>",
7
+ "homepage": "https://oss.xccjh.top/common-ui/#/ai-index",
8
+ "license": "ISC",
9
+ "publishConfig": {
10
+ "access": "public"
11
+ },
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "http://94ai.gitlab.com/ui/common-ui.git"
15
+ },
16
+ "dependencies": {
17
+ "@94ai/common-utils": "^3.1.13",
18
+ "@94ai/nf-rules": "^3.1.13",
19
+ "@94ai/nf-theme-chalk": "^3.1.13",
20
+ "vue-demi": "^0.14.5"
21
+ },
22
+ "peerDependenciesMeta": {
23
+ "@vue/composition-api": {
24
+ "optional": true
25
+ }
26
+ },
27
+ "peerDependencies": {
28
+ "@vue/composition-api": "^1.0.0-rc.1",
29
+ "element-ui": ">=2.13.2",
30
+ "vue": "^2.0.0 || >=3.0.0"
31
+ },
32
+ "types": "lib/index.d.ts",
33
+ "main": "lib/nf-conditions.cjs.js",
34
+ "module": "lib/nf-conditions.esm-bundler.js",
35
+ "gitHead": "a8c56183ccc8e979008e2d38bfde2d7d1448654c"
36
+ }
@@ -0,0 +1,8 @@
1
+ export default {
2
+ plugins: {
3
+ // 这个工具可以实现自动添加CSS3前缀
4
+ autoprefixer: {
5
+ overrideBrowserslist: ['last 5 version', '>1%', 'ie >=8']
6
+ },
7
+ },
8
+ }