Sanakey
2024-09-21 f353bc62423323d3b2bf24934b98cc05176f5583
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<template>
  <BasicModal
    v-bind="$attrs"
    @register="register"
    title="重新分配"
    @visible-change="handleVisibleChange"
    @ok="handleSubmit"
  >
    <div class="mb-10px">
      将线索【{{cluesName}}】
    </div>
    <div :class="'pt-3px pr-3px '+ prefixCls">
      <BasicForm @register="registerForm"></BasicForm>
    </div>
 
  </BasicModal>
</template>
<script lang="ts" setup>
import {ref, nextTick, h, unref} from 'vue';
import {BasicModal, useModalInner} from '@/components/Modal';
import {BasicForm, useForm} from '@/components/Form';
 
import {PlusOutlined, MinusOutlined,PaperClipOutlined} from '@ant-design/icons-vue';
import {TreeSelect, Upload} from "ant-design-vue";
import {optionsListApi} from "@/api/demo/select";
const prefixCls = 'new-follow-up';
const props = defineProps({
  userData: {type: Object},
});
const modelRef = ref({});
const [registerForm,{validate:validate}] = useForm({
  schemas:[{
    field: 'cluesStatus',
    component: 'ApiSelect',
    label: '重新分配给',
    colProps: {
      span: 24,
    },
    required: true,
    componentProps: {
      api: optionsListApi,
      params: {
        id: 1,
      },
      resultField: 'list',
      // use name as label
      labelField: 'name',
      // use id as value
      valueField: 'id',
      // not request untill to select
      immediate: true,
      onChange: (e, v) => {
        console.log('ApiSelect====>:', e, v);
      },
      // atfer request callback
      onOptionsChange: (options) => {
        console.log('get options', options.length, options);
      },
    },
    defaultValue: '1',
  },],
  showActionButtonGroup: false,
  layout: 'vertical',
});
 
const [register,{ setModalProps, closeModal }] = useModalInner((data) => {
  Logger.log('useModalInner data...', data);
  data && onDataReceive(data);
  setModalProps({
    // width: 800,
    minHeight: 100,
    canFullscreen: false,
    destroyOnClose: true,
  });
});
 
 
let cluesName = ref('测试1');
function onDataReceive(data) {
  console.log('Data Received', data);
  cluesName.value = data.data.cluesName;
  // 方式1;
  // setFieldsValue({
  //   field2: data.data,
  //   field1: data.info,
  // });
 
  // // 方式2
  modelRef.value = {field2: data.data, field1: data.info};
 
  // setProps({
  //   model:{ field2: data.data, field1: data.info }
  // })
}
 
function handleVisibleChange(v) {
  v && props.userData && nextTick(() => onDataReceive(props.userData));
}
 
// let currentFollowUpType = ref('1');
// function handleFollowUpTypeChange(value: any) {
//   Logger.log('handleFollowUpTypeChange...', value);
// }
 
function removeFile(file: any) {
  Logger.log('remove file...', file);
}
 
async function handleSubmit() {
  try {
    const values = await validate();
    Logger.log('submit values', values);
    setModalProps({ confirmLoading: true });
    // TODO custom api
    // console.log(values);
    closeModal();
  } finally {
    setModalProps({ confirmLoading: false });
  }
}
</script>
 
<style lang="less">
 
 
</style>