lw-cdp-ui 1.0.40 → 1.0.41

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.
@@ -1,53 +1,58 @@
1
1
  <template>
2
- <div>
3
- <QuillEditor
4
- v-model="content"
5
- :options="editorOptions"
6
- />
7
- </div>
2
+ <div ref="divRef"
3
+ class="lw-editor-body"
4
+ :style="{height: height}"></div>
8
5
  </template>
9
6
 
10
7
  <script>
11
- import { QuillEditor } from '@vueup/vue-quill'
12
- import '@vueup/vue-quill/dist/vue-quill.snow.css'
13
-
8
+ import { AiEditor } from "aieditor";
9
+ import "aieditor/dist/style.css";
14
10
  export default {
15
- name: 'QuillEditorComponent',
16
- components: {
17
- QuillEditor,
11
+ name: 'lwEditor',
12
+ data() {
13
+ return {
14
+ defaultValue: ''
15
+ }
18
16
  },
19
17
  props: {
20
18
  modelValue: {
21
- type: String,
19
+ type: Object,
22
20
  required: true,
23
21
  },
24
- options: {
25
- type: Object,
26
- default: () => ({}),
22
+ height: {
23
+ type: String,
24
+ default: '300px'
27
25
  },
28
- },
29
- data() {
30
- return {
31
- content: this.modelValue,
26
+ placeholder: {
27
+ type: String,
28
+ default: '点击输入内容...'
32
29
  }
33
30
  },
34
- watch: {
35
- modelValue(newValue) {
36
- if (newValue !== this.content) {
37
- this.content = newValue
38
- }
39
- },
40
- content(newValue) {
41
- this.$emit('update:modelValue', newValue)
42
- },
31
+ mounted() {
32
+ let _this = this;
33
+ new AiEditor({
34
+ element: this.$refs.divRef,
35
+ content: _this.modelValue,
36
+ placeholder: _this.placeholder,
37
+ ai: {
38
+ models: {
39
+ spark: {
40
+ appId: "a58e8b6b",
41
+ apiKey: "3259c84cd549457ffd751aa0ae4479ed",
42
+ apiSecret: "YmU2YzdhMTI1MjYxZjY3M2MyN2ZlZjZh",
43
+ version: "v3.5" //支持 v2.1 v3.1 v3.5
44
+ }
45
+ },
46
+ },
47
+ onChange: (aiEditor) => {
48
+ _this.$emit("update:modelValue", aiEditor.getHtml())
49
+ },
50
+ });
43
51
  },
44
- computed: {
45
- editorOptions() {
46
- return {
47
- theme: 'snow',
48
- ...this.options,
49
- }
50
- },
51
- },
52
- }
52
+ };
53
53
  </script>
54
+ <style lang="scss" scoped>
55
+ .lw-editor-body {
56
+ height: 300px;
57
+ }
58
+ </style>
@@ -25,22 +25,42 @@
25
25
  </template>
26
26
  <!-- input -->
27
27
  <template v-if="item.component=='input'">
28
- <el-input v-model="form[item.name]"
29
- :placeholder="item.options.placeholder"
30
- clearable
31
- :type="item.options.type"
32
- :disabled="item.options.disabled"
33
- :maxlength="item.options.maxlength"
34
- show-word-limit></el-input>
28
+ <template v-if="item?.options?.name">
29
+ <el-input v-model="form[item.name][item.options.name]"
30
+ :placeholder="item.options.placeholder"
31
+ clearable
32
+ :type="item.options.type"
33
+ :disabled="item.options.disabled"
34
+ :maxlength="item.options.maxlength"
35
+ show-word-limit></el-input>
36
+ </template>
37
+ <template v-else>
38
+ <el-input v-model="form[item.name]"
39
+ :placeholder="item.options.placeholder"
40
+ clearable
41
+ :type="item.options.type"
42
+ :disabled="item.options.disabled"
43
+ :maxlength="item.options.maxlength"
44
+ show-word-limit></el-input>
45
+ </template>
35
46
  </template>
36
47
  <!-- upload -->
37
48
  <template v-else-if="item.component=='upload'">
38
49
  <el-col v-for="(_item, _index) in item.options.items"
39
50
  :key="_index">
40
- <el-form-item :prop="_item.name">
41
- <lw-upload v-model="form[_item.name]"
42
- :title="_item.label"></lw-upload>
43
- </el-form-item>
51
+ <template v-if="item.name">
52
+ <el-form-item :prop="_item.name">
53
+ <lw-upload v-model="form[item.name][_item.name]"
54
+ :title="_item.label"></lw-upload>
55
+ </el-form-item>
56
+ </template>
57
+ <template v-else>
58
+ <el-form-item :prop="_item.name">
59
+ <lw-upload v-model="form[_item.name]"
60
+ :title="_item.label"></lw-upload>
61
+ </el-form-item>
62
+ </template>
63
+
44
64
  </el-col>
45
65
  </template>
46
66
  <!-- checkbox -->
@@ -66,83 +86,163 @@
66
86
  :label="_item.value">{{_item.label}}</el-checkbox>
67
87
  </el-checkbox-group>
68
88
  </template>
69
- <!-- upload -->
70
- <template v-else-if="item.component=='upload'">
71
- <el-col v-for="(_item, _index) in item.options.items"
72
- :key="_index">
73
- <el-form-item :prop="_item.name">
74
- <sc-upload v-model="form[_item.name]"
75
- :title="_item.label"></sc-upload>
76
- </el-form-item>
77
- </el-col>
78
- </template>
89
+
79
90
  <!-- switch -->
80
91
  <template v-else-if="item.component=='switch'">
81
- <el-switch v-model="form[item.name]" />
92
+ <template v-if="item?.options?.name">
93
+ <el-switch v-model="form[item.name][item.options.name]" />
94
+ </template>
95
+ <template v-else>
96
+ <el-switch v-model="form[item.name]" />
97
+ </template>
82
98
  </template>
83
99
  <!-- select -->
84
100
  <template v-else-if="item.component=='select'">
85
- <el-select v-model="form[item.name]"
86
- :multiple="item.options.multiple"
87
- :placeholder="item.options.placeholder"
88
- clearable
89
- filterable
90
- style="width: 100%;">
91
- <el-option v-for="option in item.options.items"
92
- :key="option.value"
93
- :label="option.label"
94
- :value="option.value"></el-option>
95
- </el-select>
101
+ <template v-if="item?.options?.name">
102
+ <el-select v-model="form[item.name][item.options.name]"
103
+ :multiple="item.options?.multiple"
104
+ :allow-create="item.options?.allowCreate"
105
+ default-first-option
106
+ :placeholder="item.options?.placeholder || ''"
107
+ clearable
108
+ filterable
109
+ style="width: 100%;">
110
+ <el-option v-for="option in item.options.items"
111
+ :key="option.value"
112
+ :label="option.label"
113
+ :value="option.value"></el-option>
114
+ </el-select>
115
+ </template>
116
+ <template v-else>
117
+ <el-select v-model="form[item.name]"
118
+ :multiple="item.options?.multiple"
119
+ :allow-create="item.options?.allowCreate"
120
+ default-first-option
121
+ :placeholder="item.options?.placeholder || ''"
122
+ clearable
123
+ filterable
124
+ style="width: 100%;">
125
+ <el-option v-for="option in item.options.items"
126
+ :key="option.value"
127
+ :label="option.label"
128
+ :value="option.value"></el-option>
129
+ </el-select>
130
+ </template>
131
+
96
132
  </template>
97
133
  <!-- cascader -->
98
134
  <template v-else-if="item.component=='cascader'">
99
- <el-cascader v-model="form[item.name]"
100
- :options="item.options.items"
101
- clearable></el-cascader>
135
+ <template v-if="item?.options?.name">
136
+ <el-cascader v-model="form[item.name][item.options.name]"
137
+ :options="item.options.items"
138
+ clearable></el-cascader>
139
+ </template>
140
+ <template v-else>
141
+ <el-cascader v-model="form[item.name]"
142
+ :options="item.options.items"
143
+ clearable></el-cascader>
144
+ </template>
145
+
102
146
  </template>
103
147
  <!-- date -->
104
148
  <template v-else-if="item.component=='date'">
105
- <el-date-picker v-model="form[item.name]"
106
- style="width: 100%;"
107
- :type="item.options.type"
108
- :start-placeholder="item.options.startPlaceholder"
109
- :end-placeholder="item.options.endPlaceholder"
110
- :shortcuts="item.options.shortcuts"
111
- :default-time="item.options.defaultTime"
112
- :value-format="item.options.valueFormat"
113
- :placeholder="item.options.placeholder || '请选择'"></el-date-picker>
149
+ <template v-if="item?.options?.name">
150
+ <el-date-picker v-model="form[item.name][item.options.name]"
151
+ style="width: 100%;"
152
+ :type="item.options.type"
153
+ :start-placeholder="item.options.startPlaceholder"
154
+ :end-placeholder="item.options.endPlaceholder"
155
+ :shortcuts="item.options.shortcuts"
156
+ :default-time="item.options.defaultTime"
157
+ :value-format="item.options.valueFormat"
158
+ :placeholder="item.options.placeholder || '请选择'"></el-date-picker>
159
+ </template>
160
+ <template v-else>
161
+ <el-date-picker v-model="form[item.name]"
162
+ style="width: 100%;"
163
+ :type="item.options.type"
164
+ :start-placeholder="item.options.startPlaceholder"
165
+ :end-placeholder="item.options.endPlaceholder"
166
+ :shortcuts="item.options.shortcuts"
167
+ :default-time="item.options.defaultTime"
168
+ :value-format="item.options.valueFormat"
169
+ :placeholder="item.options.placeholder || '请选择'"></el-date-picker>
170
+ </template>
171
+
114
172
  </template>
115
173
  <!-- number -->
116
174
  <template v-else-if="item.component=='number'">
117
- <el-input-number v-model="form[item.name]"
118
- v-bind="{
175
+ <template v-if="item?.options?.name">
176
+ <el-input-number v-model="form[item.name][item.options.name]"
177
+ v-bind="{
119
178
  min: item?.options?.min !== undefined ? item.options.min : null,
120
179
  max: item?.options?.max !== undefined ? item.options.max : null,
121
180
  placeholder: item?.options?.placeholder || ''
122
181
  }"
123
- controls-position="right"></el-input-number>
182
+ controls-position="right"></el-input-number>
183
+ </template>
184
+ <template v-else>
185
+ <el-input-number v-model="form[item.name]"
186
+ v-bind="{
187
+ min: item?.options?.min !== undefined ? item.options.min : null,
188
+ max: item?.options?.max !== undefined ? item.options.max : null,
189
+ placeholder: item?.options?.placeholder || ''
190
+ }"
191
+ controls-position="right"></el-input-number>
192
+ </template>
193
+
124
194
  </template>
125
195
  <!-- radio -->
126
196
  <template v-else-if="item.component=='radio'">
127
- <el-radio-group v-model="form[item.name]">
128
- <el-radio v-for="_item in item.options.items"
129
- :key="_item.value"
130
- :label="_item.value">{{_item.label}}</el-radio>
131
- </el-radio-group>
197
+ <template v-if="item?.options?.name">
198
+ <el-radio-group v-model="form[item.name][item.options.name]">
199
+ <el-radio v-for="_item in item.options.items"
200
+ :key="_item.value"
201
+ :label="_item.value">{{_item.label}}</el-radio>
202
+ </el-radio-group>
203
+ </template>
204
+ <template v-else>
205
+ <el-radio-group v-model="form[item.name]">
206
+ <el-radio v-for="_item in item.options.items"
207
+ :key="_item.value"
208
+ :label="_item.value">{{_item.label}}</el-radio>
209
+ </el-radio-group>
210
+ </template>
211
+
132
212
  </template>
133
213
  <!-- color -->
134
214
  <template v-else-if="item.component=='color'">
135
- <el-color-picker v-model="form[item.name]" />
215
+ <template v-if="item?.options?.name">
216
+ <el-color-picker v-model="form[item.name][item.options.name]" />
217
+ </template>
218
+ <template v-else>
219
+ <el-color-picker v-model="form[item.name]" />
220
+ </template>
221
+
136
222
  </template>
137
223
  <!-- rate -->
138
224
  <template v-else-if="item.component=='rate'">
139
- <el-rate style="margin-top: 6px;"
225
+ <template v-if="item?.options?.name">
226
+ <el-rate style="margin-top: 6px;"
227
+ v-model="form[item.name][item.options.name]"></el-rate>
228
+ </template>
229
+ <template v-else>
230
+ <el-rate style="margin-top: 6px;"
140
231
  v-model="form[item.name]"></el-rate>
232
+ </template>
233
+
141
234
  </template>
142
235
  <!-- slider -->
143
236
  <template v-else-if="item.component=='slider'">
144
- <el-slider v-model="form[item.name]"
237
+ <template v-if="item?.options?.name">
238
+ <el-slider v-model="form[item.name][item.options.name]"
145
239
  :marks="item.options.marks"></el-slider>
240
+ </template>
241
+ <template v-else>
242
+ <el-slider v-model="form[item.name]"
243
+ :marks="item.options.marks"></el-slider>
244
+ </template>
245
+
146
246
  </template>
147
247
  <!-- 没有组件是component值 就是插槽名称 -->
148
248
  <template v-else>
@@ -207,10 +307,19 @@ export default {
207
307
  },
208
308
  hasValue() {
209
309
  return Object.keys(this.modelValue).length > 0
310
+ },
311
+ computedModelValue: {
312
+ get() {
313
+ return item.name2 ? this.form[item.name][item.name2] : this.form[item.name];
314
+ },
315
+ set(value) {
316
+ if (item.name2) {
317
+ this.$set(this.form[item.name], item.name2, value);
318
+ } else {
319
+ this.$set(this.form, item.name, value);
320
+ }
321
+ }
210
322
  }
211
- },
212
- created() {
213
-
214
323
  },
215
324
  mounted() {
216
325
  if (this.hasConfig) {
@@ -37,7 +37,7 @@
37
37
  <el-upload v-if="!file"
38
38
  class="uploader"
39
39
  ref="uploader"
40
- :auto-upload="cropper?false:autoUpload"
40
+ :auto-upload="autoUpload"
41
41
  :disabled="disabled"
42
42
  :show-file-list="showFileList"
43
43
  :action="action"
@@ -142,7 +142,7 @@ export default {
142
142
  if (files.length > 1) {
143
143
  files.splice(0, 1)
144
144
  }
145
- if (this.cropper && file.status == 'ready') {
145
+ if (file.status == 'ready') {
146
146
  const acceptIncludes = ["image/gif", "image/jpeg", "image/png"].includes(file.raw.type)
147
147
  if (!acceptIncludes) {
148
148
  this.$notify.warning({