@ebiz/designer-components 0.1.100 → 0.1.102
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.
- package/dist/designer-components.css +1 -1
- package/dist/index.mjs +8931 -8852
- package/package.json +1 -1
- package/src/components/EbizApproval.vue +4 -1
- package/src/components/LaunchInterview.vue +97 -7
package/package.json
CHANGED
|
@@ -220,7 +220,10 @@ const handleApproverSelect = (data: any, tempSelectedEmployees: []) => {
|
|
|
220
220
|
}
|
|
221
221
|
|
|
222
222
|
// 处理抄送人选择
|
|
223
|
-
const handleCCSelect = (data: []) => {
|
|
223
|
+
const handleCCSelect = (data: [], tempSelectedEmployees: []) => {
|
|
224
|
+
|
|
225
|
+
employeeList.value = [...employeeList.value, ...tempSelectedEmployees];
|
|
226
|
+
|
|
224
227
|
// 合并之前的数据,并且去重
|
|
225
228
|
selectedCC.value = [...selectedCC.value, ...data].filter((item, index, self) =>
|
|
226
229
|
self.findIndex(t => t == item) === index
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
<ebiz-s-form-item
|
|
43
43
|
label="访谈时间"
|
|
44
44
|
name="interview_time"
|
|
45
|
-
type="
|
|
45
|
+
type="datetime"
|
|
46
46
|
:multiple="false"
|
|
47
47
|
v-model="state.interviewFormData.interview_time"
|
|
48
48
|
:options="[]"
|
|
@@ -102,17 +102,26 @@
|
|
|
102
102
|
style="display: flex; flex-direction: column; align-items: center"
|
|
103
103
|
class="component-base-style"
|
|
104
104
|
>
|
|
105
|
-
<span style="display: inline-block; white-space: nowrap" class="component-base-style"
|
|
105
|
+
<span style="display: inline-block; white-space: nowrap; font-size: 12px;" class="component-base-style"
|
|
106
106
|
>有问题</span
|
|
107
107
|
>
|
|
108
108
|
<ebiz-switch
|
|
109
|
-
size="
|
|
109
|
+
size="small"
|
|
110
110
|
theme="primary"
|
|
111
111
|
class="component-base-style"
|
|
112
112
|
:modelValue="item.need_follow"
|
|
113
113
|
@change="(...eventArgs) => syncVal(eventArgs, item, 'need_follow')"
|
|
114
114
|
></ebiz-switch>
|
|
115
115
|
</div>
|
|
116
|
+
<div v-if="item.need_follow">
|
|
117
|
+
<ebiz-tdesign-button
|
|
118
|
+
theme="primary"
|
|
119
|
+
size="small"
|
|
120
|
+
content="跟进人"
|
|
121
|
+
class="component-base-style"
|
|
122
|
+
@click="openFollowListDialog(item,index)"
|
|
123
|
+
></ebiz-tdesign-button>
|
|
124
|
+
</div>
|
|
116
125
|
</div>
|
|
117
126
|
</div></div></template
|
|
118
127
|
></t-form>
|
|
@@ -161,6 +170,7 @@
|
|
|
161
170
|
</ebiz-s-data></ebiz-tab-panel></ebiz-tabs></template
|
|
162
171
|
></ebiz-dialog>
|
|
163
172
|
<ebiz-dialog
|
|
173
|
+
:zIndex="5000"
|
|
164
174
|
width="700"
|
|
165
175
|
header="问题列表"
|
|
166
176
|
body="对话框内容"
|
|
@@ -191,6 +201,38 @@
|
|
|
191
201
|
</div></template
|
|
192
202
|
></ebiz-dialog
|
|
193
203
|
>
|
|
204
|
+
|
|
205
|
+
<ebiz-dialog
|
|
206
|
+
:zIndex="5500"
|
|
207
|
+
width="500"
|
|
208
|
+
header="跟进人"
|
|
209
|
+
body="对话框内容"
|
|
210
|
+
mode="modal"
|
|
211
|
+
placement="center"
|
|
212
|
+
confirmBtn="确认"
|
|
213
|
+
cancelBtn="取消"
|
|
214
|
+
:footer="true"
|
|
215
|
+
class="component-base-style"
|
|
216
|
+
v-model:visible="state.showFollow">
|
|
217
|
+
<template #default>
|
|
218
|
+
<ebiz-employee-selector
|
|
219
|
+
:single="false"
|
|
220
|
+
defaultTab="organization"
|
|
221
|
+
content="请选择跟进人"
|
|
222
|
+
class="component-base-style"
|
|
223
|
+
v-model="state.follow_employee_list">
|
|
224
|
+
</ebiz-employee-selector>
|
|
225
|
+
</template>
|
|
226
|
+
<template #footer>
|
|
227
|
+
<ebiz-tdesign-button
|
|
228
|
+
content="确定"
|
|
229
|
+
theme="primary"
|
|
230
|
+
size="medium"
|
|
231
|
+
class="component-base-style"
|
|
232
|
+
@click="saveQuestionFollow"
|
|
233
|
+
></ebiz-tdesign-button>
|
|
234
|
+
</template>
|
|
235
|
+
</ebiz-dialog>
|
|
194
236
|
</div>
|
|
195
237
|
</template>
|
|
196
238
|
|
|
@@ -209,6 +251,7 @@ import EbizSFormItem from './senior/EbizSForm/item.vue'
|
|
|
209
251
|
import EbizTag from './TdesignTag.vue'
|
|
210
252
|
import * as vue from 'vue'
|
|
211
253
|
import dataService from '../apiService/simpleDataService';
|
|
254
|
+
import EbizEmployeeSelector from './EbizEmployeeSelector.vue'
|
|
212
255
|
|
|
213
256
|
|
|
214
257
|
const props = defineProps({
|
|
@@ -247,9 +290,10 @@ const state = vue.reactive({
|
|
|
247
290
|
cell: (h,{ row }) => {
|
|
248
291
|
return (
|
|
249
292
|
<EbizTdesignButton
|
|
293
|
+
variant="text"
|
|
250
294
|
theme="primary"
|
|
251
295
|
size="medium"
|
|
252
|
-
content="
|
|
296
|
+
content="访谈情况"
|
|
253
297
|
ghost={false}
|
|
254
298
|
class="component-base-style"
|
|
255
299
|
loading={state.loading}
|
|
@@ -275,7 +319,10 @@ const state = vue.reactive({
|
|
|
275
319
|
gridParams: vue.computed(() => ({ employee: employeeId.value })),
|
|
276
320
|
loading: false,
|
|
277
321
|
nowQuestions: [],
|
|
278
|
-
questionShow: false
|
|
322
|
+
questionShow: false,
|
|
323
|
+
showFollow: false,
|
|
324
|
+
follow_employee_list: [],
|
|
325
|
+
selected_qs_index: 0
|
|
279
326
|
})
|
|
280
327
|
function calcTime(timeStr = 0, type = null, dontFill = false) {
|
|
281
328
|
if (!timeStr) return '-';
|
|
@@ -356,7 +403,9 @@ function calcQuestion(type_id) {
|
|
|
356
403
|
})
|
|
357
404
|
}
|
|
358
405
|
async function formatData(event) {
|
|
359
|
-
|
|
406
|
+
console.log('questionList',state.questionList)
|
|
407
|
+
let {userId} = JSON.parse(localStorage.getItem('user') || '{}')
|
|
408
|
+
let valid = await form.value.validate()
|
|
360
409
|
if (valid !== true) return false
|
|
361
410
|
state.interviewFormData.content = state.questionList.map((i) => {
|
|
362
411
|
return {
|
|
@@ -365,11 +414,42 @@ async function formatData(event) {
|
|
|
365
414
|
answer: i.answer
|
|
366
415
|
}
|
|
367
416
|
})
|
|
417
|
+
|
|
418
|
+
const interview_records=state.questionList.map((item)=>{
|
|
419
|
+
return {
|
|
420
|
+
question_id: item.id,
|
|
421
|
+
employee: props.employeeId,
|
|
422
|
+
content: item.answer,
|
|
423
|
+
is_follow_task: Number(item.need_follow),
|
|
424
|
+
need_follow: item.need_follow,
|
|
425
|
+
follow_status: 'ing'
|
|
426
|
+
}
|
|
427
|
+
})
|
|
428
|
+
|
|
429
|
+
const taskList=state.questionList.filter((item)=>item.need_follow).map((item)=>{
|
|
430
|
+
return {
|
|
431
|
+
source: 'follow_task',
|
|
432
|
+
question_id: item.id,
|
|
433
|
+
title: item?.type_id_info?.name + '跟进',
|
|
434
|
+
duty_employee_list: item?.duty_employee_list||[],
|
|
435
|
+
follow_employee_list: item.follow_employee_list,
|
|
436
|
+
remark: item.name + `<div style='color: blue; font-size: 12px; background-color: #f5f5f5; padding: 4px 8px; border-radius: 3px;'>` + item?.answer + '</div>',
|
|
437
|
+
status: 'wait_feedback',
|
|
438
|
+
create_by: userId,
|
|
439
|
+
create_at: Date.now()
|
|
440
|
+
}
|
|
441
|
+
})
|
|
442
|
+
|
|
368
443
|
dataService.fetch({
|
|
369
|
-
saveData:
|
|
444
|
+
saveData: {
|
|
445
|
+
...state.interviewFormData,
|
|
446
|
+
employee_interview_question_answer_record: interview_records,
|
|
447
|
+
taskList: taskList
|
|
448
|
+
}
|
|
370
449
|
},{
|
|
371
450
|
key: 'interview_record_save'
|
|
372
451
|
}).then(closeTalkSave)
|
|
452
|
+
|
|
373
453
|
}
|
|
374
454
|
function submitSuccess(event) {
|
|
375
455
|
emit('api_success')
|
|
@@ -399,5 +479,15 @@ function closeQuestion(event) {
|
|
|
399
479
|
state.questionShow = false
|
|
400
480
|
}
|
|
401
481
|
|
|
482
|
+
const openFollowListDialog=(item,index)=>{
|
|
483
|
+
state.selected_qs_index=index
|
|
484
|
+
state.showFollow=true
|
|
485
|
+
state.follow_employee_list=item?.follow_employee_list||[]
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
const saveQuestionFollow=()=>{
|
|
489
|
+
state.questionList[state.selected_qs_index].follow_employee_list=state.follow_employee_list
|
|
490
|
+
state.showFollow=false
|
|
491
|
+
}
|
|
402
492
|
</script>
|
|
403
493
|
<style scoped></style>
|