wupengfei
2025-06-09 9932280cc032c62b23bf77fba8287d739243dc37
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
127
128
129
130
131
132
133
134
135
136
137
138
<template>
  <NutForm
    :model-value="form"
    ref="formRef"
    :rules="rules"
    label-position="top"
    class="order-bill-recharge phone chunk-form"
  >
    <NutFormItem label="公司名称" class="bole-form-item" prop="companyName">
      <NutInput
        v-model.trim="form.companyName"
        class="bole-input-text"
        placeholder="请填写您的公司名称"
        type="text"
      />
    </NutFormItem>
    <NutFormItem label="姓名" class="bole-form-item" prop="name" required>
      <NutInput
        v-model.trim="form.name"
        class="bole-input-text"
        placeholder="请填写您的姓名"
        type="text"
      />
    </NutFormItem>
    <NutFormItem label="联系方式" class="bole-form-item" prop="phoneNumber" required>
      <NutInput
        v-model.trim="form.phoneNumber"
        class="bole-input-text"
        placeholder="请填写您的联系方式"
        type="text"
      />
    </NutFormItem>
    <NutFormItem label="意向代理类型" class="bole-form-item" prop="agentType" required>
      <ChooseInputWithPicker
        v-model="form.agentType"
        placeholder="请选择您想申请的代理类型"
        :value-enum="LifeRechargeConstants.LifePayChannelAgentTypeText"
        enum-label-key="gasOrgName"
        enum-value-key="gasOrgCode"
      />
    </NutFormItem>
    <NutFormItem label="客户资源" class="bole-form-item" prop="customerResources">
      <NutTextarea
        placeholder="请填写您拥有的客户资源"
        placeholderClass="bole-input-text-placeholder"
        autoSize
        class="bole-input-textarea"
        v-model="form.customerResources"
        :max-length="200"
        limit-show
      >
      </NutTextarea>
    </NutFormItem>
  </NutForm>
</template>
 
<script setup lang="ts">
import {
  Form as NutForm,
  FormItem as NutFormItem,
  Input as NutInput,
  Textarea as NutTextarea,
} from '@nutui/nutui-taro';
import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types';
import { reactive, ref, computed } from 'vue';
import {
  CreateChannelConsultationInput,
  LifeRechargeConstants,
  useLifeRechargeContext,
} from '@life-payment/core-vue';
import { FormValidator } from '../../utils';
import ChooseInputWithPicker from '../../components/Input/ChooseInputWithPicker.vue';
import Taro from '@tarojs/taro';
 
defineOptions({
  name: 'ApplyAgentView',
});
 
const emit = defineEmits<{
  (e: 'submit'): void;
}>();
 
const router = Taro.useRouter();
 
const promoterIdNumber = router.params?.promoterIdNumber ?? '';
 
const form = reactive({
  companyName: '',
  name: '',
  phoneNumber: '',
  agentType: '' as any as LifeRechargeConstants.LifePayChannelAgentType,
  customerResources: '',
});
 
const rules = reactive<FormRules>({
  name: [{ required: true, message: '请填写您的姓名' }],
  phoneNumber: [
    { required: true, message: '请填写您的联系方式' },
    { validator: FormValidator.validatorPhoneNumber, message: '请输入正确的手机号' },
  ],
  agentType: [{ required: true, message: '请选择您想申请的代理类型' }],
});
 
const { blLifeRecharge } = useLifeRechargeContext();
 
const formRef = ref<any>(null);
 
function handleSubmit() {
  if (!formRef.value) return;
  formRef.value.validate().then(({ valid, errors }: any) => {
    if (valid) {
      createChannelConsultation();
    }
  });
}
 
async function createChannelConsultation() {
  try {
    let params: CreateChannelConsultationInput = {
      userId: blLifeRecharge.accountModel.userId,
      idNumber: promoterIdNumber,
      name: form.name,
      agentType: form.agentType,
      phoneNumber: form.phoneNumber,
      companyName: form.companyName,
      customerResources: form.customerResources,
    };
    let res = await blLifeRecharge.services.createChannelConsultation(params);
    if (res) {
      emit('submit');
    }
  } catch (error) {}
}
 
defineExpose({
  handleSubmit,
});
</script>