@ebiz/designer-components 0.1.101 → 0.1.103

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ebiz/designer-components",
3
- "version": "0.1.101",
3
+ "version": "0.1.103",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -888,7 +888,7 @@ defineExpose({
888
888
 
889
889
  .time-slots-grid {
890
890
  display: grid;
891
- grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
891
+ grid-template-columns: repeat(auto-fill, minmax(80px, 1fr));
892
892
  gap: 12px;
893
893
  }
894
894
 
@@ -896,11 +896,10 @@ defineExpose({
896
896
  background: #f6ffed;
897
897
  border: 1px solid #52c41a;
898
898
  border-radius: 8px;
899
- padding: 12px;
900
899
  text-align: center;
901
900
  cursor: pointer;
902
901
  transition: all 0.2s ease;
903
- min-height: 80px;
902
+ min-height: 60px;
904
903
  display: flex;
905
904
  flex-direction: column;
906
905
  justify-content: center;
@@ -1133,7 +1132,6 @@ defineExpose({
1133
1132
  }
1134
1133
 
1135
1134
  .time-slot {
1136
- padding: 8px;
1137
1135
  min-height: 60px;
1138
1136
  }
1139
1137
 
@@ -42,7 +42,7 @@
42
42
  <ebiz-s-form-item
43
43
  label="访谈时间"
44
44
  name="interview_time"
45
- type="date"
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="medium"
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
- let valid = await form.value.formRef.validate()
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: state.interviewFormData
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>