user-project.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596
  1. <template>
  2. <div id="user-project">
  3. <el-row>
  4. <el-col :span="24" class="main animate__animated animate__backInRight">
  5. <component :is="CForm" :fields="fields" :form="form" :rules="rules" @save="toSave" @dataChange="dataChange" :span="24" labelWidth="140px">
  6. <!-- 基本 -->
  7. <template #gender>
  8. <el-option v-for="i in genderList" :key="i.model" :label="i.dict_label" :value="i.dict_value"></el-option>
  9. </template>
  10. <template #education>
  11. <el-option v-for="i in educationList" :key="i.model" :label="i.dict_label" :value="i.dict_value"></el-option>
  12. </template>
  13. <template #degree>
  14. <el-option v-for="i in degreeList" :key="i.model" :label="i.dict_label" :value="i.dict_value"></el-option>
  15. </template>
  16. <!-- 工作室 -->
  17. <template #card="{ item }">
  18. <component
  19. style="width: 100%"
  20. :is="CUpload"
  21. :model="item.model"
  22. :limit="2"
  23. url="/files/studioadmin/register/upload"
  24. :list="form[item.model]"
  25. listType="picture"
  26. @change="onUpload"
  27. ></component>
  28. </template>
  29. <template #team_phone>
  30. <el-col :span="12">
  31. <el-form-item label="内容" label-width="100px" prop="team_phone.phone">
  32. <el-input v-model="form.team_phone.phone" placeholder="请输入联系电话"></el-input>
  33. </el-form-item>
  34. </el-col>
  35. <el-col :span="12">
  36. <el-form-item label="是否公开" label-width="80px">
  37. <el-select v-model="form.team_phone.is_show" placeholder="请选择" style="width: 100%">
  38. <el-option v-for="i in isshowList" :key="i.model" :label="i.dict_label" :value="i.dict_value"></el-option>
  39. </el-select>
  40. </el-form-item>
  41. </el-col>
  42. </template>
  43. <template #zc>
  44. <el-option v-for="i in zcList" :key="i.model" :label="i.dict_label" :value="i.dict_value"></el-option>
  45. </template>
  46. <template #zc_file="{ item }">
  47. <component
  48. style="width: 100%"
  49. :is="CUpload"
  50. :model="item.model"
  51. :limit="1"
  52. url="/files/studioadmin/register/upload"
  53. :list="form[item.model]"
  54. listType="picture"
  55. @change="onUpload"
  56. ></component>
  57. </template>
  58. <template #fields>
  59. <el-option v-for="i in fieldList" :key="i.dict_value" :label="i.dict_label" :value="i.dict_value"></el-option>
  60. </template>
  61. <template #direction>
  62. <el-button type="primary" size="mini" @click="addDriection()">添加</el-button>
  63. <el-col :span="24">
  64. <el-table :data="form.direction" border size="mini">
  65. <el-table-column type="index" label="序号" width="50" align="center"> </el-table-column>
  66. <el-table-column prop="name" label="名称" align="center">
  67. <template v-slot="scope">
  68. <el-input v-model="scope.row.name" placeholder="请输入技术需求方向名称,名称长度不可超过八个字" maxlength="8"></el-input>
  69. </template>
  70. </el-table-column>
  71. <el-table-column label="操作" align="center" width="100">
  72. <template v-slot="scope">
  73. <el-button size="mini" type="danger" @click="delDriection(scope.row)">删除</el-button>
  74. </template>
  75. </el-table-column>
  76. </el-table>
  77. </el-col>
  78. </template>
  79. <template #case>
  80. <el-button type="primary" size="mini" @click="addCase()">添加</el-button>
  81. <el-col :span="24">
  82. <el-table :data="form.case" border size="mini">
  83. <el-table-column type="index" label="序号" width="50" align="center"> </el-table-column>
  84. <el-table-column prop="name" label="名称" align="center">
  85. <template v-slot="scope">
  86. <el-input
  87. v-model="scope.row.name"
  88. placeholder="请输入服务企业代表性案例"
  89. type="textarea"
  90. maxlength="100"
  91. show-word-limit
  92. :autosize="{ minRows: 3, maxRows: 5 }"
  93. ></el-input>
  94. </template>
  95. </el-table-column>
  96. <el-table-column label="操作" align="center" width="100">
  97. <template v-slot="scope">
  98. <el-button size="mini" type="danger" @click="delCase(scope.row)">删除</el-button>
  99. </template>
  100. </el-table-column>
  101. </el-table>
  102. </el-col>
  103. </template>
  104. <template #case_file="{ item }">
  105. <component
  106. style="width: 100%"
  107. :is="CUpload"
  108. :model="item.model"
  109. :limit="5"
  110. url="/files/studioadmin/basic/upload"
  111. :list="form[item.model]"
  112. listType="picture"
  113. @change="onUpload"
  114. ></component>
  115. </template>
  116. <template #is_job>
  117. <el-option v-for="i in isjobList" :key="i.model" :label="i.dict_label" :value="i.dict_value"></el-option>
  118. </template>
  119. </component>
  120. </el-col>
  121. </el-row>
  122. </div>
  123. </template>
  124. <script setup lang="ts">
  125. import moment from 'moment';
  126. import store from '@/stores/counter';
  127. import CForm from '@common/src/components/frame/c-form.vue';
  128. import CUpload from '@common/src/components/frame/c-upload.vue';
  129. import type { FormRules } from 'element-plus';
  130. import type { Ref } from 'vue';
  131. import { ref, reactive, watch, toRefs } from 'vue';
  132. import { ElMessage } from 'element-plus';
  133. import { isIdentityId, isIdentityPhone } from '@common/src/util/checkCard';
  134. import { UserStudioApplyStore } from '@common/src/stores/studio/role/userStudioApply';
  135. import { BasicStore } from '@common/src/stores/project/basic';
  136. import { UsersStore } from '@common/src/stores/users/users';
  137. import { UnitStore } from '@common/src/stores/users/unit';
  138. import { DictDataStore } from '@common/src/stores/users/sysdictdata'; // 字典表
  139. import type { IQueryResult } from '@/util/types.util';
  140. const userStudioApply = UserStudioApplyStore();
  141. const unit = UnitStore();
  142. const basic = BasicStore();
  143. const users = UsersStore();
  144. const sysdictdata = DictDataStore();
  145. const props = defineProps({
  146. userInfo: { type: Object, default: () => {} },
  147. });
  148. const { userInfo } = toRefs(props);
  149. let fields: Ref<any[]> = ref([]);
  150. const checkCard = (rule: any, value: any, callback: any) => {
  151. if (!value) {
  152. return callback(new Error('请输入身份证号'));
  153. } else {
  154. var errorMsg = isIdentityId(value);
  155. if (errorMsg != '') {
  156. callback(new Error(errorMsg));
  157. } else {
  158. callback();
  159. }
  160. }
  161. };
  162. const checkPhone = (rule: any, value: any, callback: any) => {
  163. if (!value) {
  164. return callback(new Error('请输入手机号'));
  165. } else {
  166. var errorMsg = isIdentityPhone(value);
  167. if (errorMsg != '') {
  168. callback(new Error(errorMsg));
  169. } else {
  170. callback();
  171. }
  172. }
  173. };
  174. const rules = reactive<FormRules>({
  175. name: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
  176. // card_type: [{ required: true, message: '请选择证件类别', trigger: 'change' }],
  177. num: [{ required: true, validator: checkCard, trigger: 'change' }],
  178. gender: [{ required: true, message: '请选择性别', trigger: 'change' }],
  179. birth: [{ required: true, message: '请选择出生年月', trigger: 'change' }],
  180. phone: [{ required: true, validator: checkPhone, trigger: 'blur', type: '手机号' }],
  181. email: [{ required: true, message: '请输入电子邮箱', trigger: 'blur' }],
  182. education: [{ required: true, message: '请选择学历', trigger: 'change' }],
  183. degree: [{ required: true, message: '请选择学位', trigger: 'change' }],
  184. unit_name: [{ required: true, message: '请输入工作单位', trigger: 'blur' }],
  185. work_phone: [{ required: true, message: '请输入办公电话', trigger: 'blur' }],
  186. title: [{ required: true, message: '请输入职称', trigger: 'blur' }],
  187. // 工作室
  188. live_place: [{ required: true, message: '请输入居住地', trigger: 'blur' }],
  189. card: [{ required: true, message: '请上传身份证', trigger: 'change' }],
  190. team_name: [{ required: false, message: '请输入团队联系人', trigger: 'blur' }],
  191. 'team_phone.phone': [{ required: true, validator: checkPhone, trigger: 'blur', type: '团队联系人电话' }],
  192. zc: [{ required: true, message: '请选择专业技术职称', trigger: 'change' }],
  193. zc_file: [{ required: true, message: '请上传职称证明', trigger: 'change' }],
  194. part_job: [{ required: false, message: '请输入社会兼职', trigger: 'blur' }],
  195. fields: [{ required: true, message: '请选择研究领域', trigger: 'change' }],
  196. direction: [{ required: true, message: '请添加研究方向', trigger: 'change' }],
  197. case: [{ required: false, message: '请上传服务企业代表性案例', trigger: 'change' }],
  198. case_file: [{ required: false, message: '请上传案例证明材料', trigger: 'change' }],
  199. is_job: [{ required: true, message: '请选择是否为在职人员', trigger: 'change' }],
  200. });
  201. const form: Ref<{
  202. phone: { phone: string; is_show: boolean };
  203. email: { is_show: boolean; email: string };
  204. card: any;
  205. team_phone: { phone: string; is_show: boolean };
  206. zc_file: any;
  207. fields: any;
  208. direction: any;
  209. case: any;
  210. case_file: any;
  211. settle_file: any;
  212. job_zc_file: any;
  213. name: string;
  214. team_name: string;
  215. birth: any;
  216. address: string;
  217. num: string;
  218. gender: string;
  219. }> = ref({
  220. phone: { phone: '', is_show: false },
  221. email: { is_show: false, email: '' },
  222. card: [],
  223. team_phone: { phone: '', is_show: false },
  224. zc_file: [],
  225. fields: [],
  226. direction: [],
  227. case: [],
  228. case_file: [],
  229. settle_file: [],
  230. job_zc_file: [],
  231. name: '',
  232. team_name: '',
  233. birth: '',
  234. address: '',
  235. num: '',
  236. gender: '',
  237. });
  238. // 字典表
  239. // 依托单位名称
  240. let unit_name: Ref<string> = ref('');
  241. // 证件类别
  242. let cardtypeList: Ref<any> = ref([]);
  243. // 性别
  244. let genderList: Ref<any> = ref([]);
  245. // 学历
  246. let educationList: Ref<any> = ref([]);
  247. // 学位
  248. let degreeList: Ref<any> = ref([]);
  249. // 领域
  250. let fieldList: Ref<any> = ref([]);
  251. // 专业技术职称
  252. let zcList: Ref<any> = ref([]);
  253. // 是否为在职人员
  254. let isjobList: Ref<any> = ref([]);
  255. // 是否公开
  256. let isshowList: Ref<any> = ref([]);
  257. let user = store.state.user as { _id: string; role_type: string; account: string; unit: String; unit_address: string };
  258. // 查询
  259. const search = async (e: any) => {
  260. let field1: any = [];
  261. let field = [
  262. { label: '姓名', model: 'name', options: { disabled: true } },
  263. // { label: '证件类别', model: 'card_type', type: 'select' },
  264. { label: '身份证号', model: 'num', options: { disabled: true } },
  265. { label: '性别', model: 'gender', type: 'select', options: { disabled: true } },
  266. { label: '出生年月', model: 'birth', type: 'date', options: { disabled: true } },
  267. { label: '手机号', model: 'phone', options: { disabled: true } },
  268. { label: '电子邮箱', model: 'email', options: { disabled: true } },
  269. { label: '学历', model: 'education', type: 'select' },
  270. { label: '学位', model: 'degree', type: 'select' },
  271. { label: '工作单位', model: 'unit_name', options: { disabled: true } },
  272. { label: '办公电话', model: 'work_phone' },
  273. { label: '职称', model: 'title' },
  274. // { label: '研究领域(2)', model: 'fields', type: 'selectMany', options: { placeholder: '请选择(多选,不超过2个)' } },
  275. ];
  276. if (e && e.is_studio == 'Y') {
  277. let fields_studio = [
  278. { label: '居住地', model: 'live_place' },
  279. { label: '身份证(正反)', model: 'card', custom: true },
  280. { label: '团队联系人', model: 'team_name' },
  281. { label: '团队联系人手机号', model: 'team_phone', custom: true },
  282. { label: '专业技术职称', model: 'zc', type: 'select' },
  283. { label: '职称证明', model: 'zc_file', custom: true },
  284. { label: '社会兼职', model: 'part_job' },
  285. { label: '研究领域(2)', model: 'fields', type: 'selectMany', options: { placeholder: '请选择(多选,不超过2个)' } },
  286. { label: '研究方向', model: 'direction', custom: true },
  287. { label: '服务企业代表性案例', model: 'case', custom: true },
  288. { label: '案例证明材料', model: 'case_file', custom: true },
  289. { label: '是否为在职人员', model: 'is_job', type: 'select' },
  290. ];
  291. field1 = [...field, ...fields_studio];
  292. }
  293. fields.value = field1;
  294. let p1s: any;
  295. let p1: any = {
  296. name: e.nick_name,
  297. card_type: '0',
  298. num: e.card,
  299. gender: getcard(e.card, 'gender') || '',
  300. birth: getcard(e.card, 'birth') || '',
  301. phone: e.phone,
  302. email: e.email,
  303. education: '',
  304. degree: '',
  305. unit: e.unit,
  306. unit_name: unit_name.value,
  307. work_phone: '',
  308. title: '',
  309. };
  310. if (e && e.is_studio == 'Y') {
  311. let form_studio = {
  312. live_place: '',
  313. card: [],
  314. team_name: e.nick_name || '',
  315. team_phone: { phone: e.phone || '' },
  316. zc: '',
  317. zc_file: [],
  318. part_job: '',
  319. fields: [],
  320. direction: [],
  321. case: [],
  322. case_file: [],
  323. is_job: '',
  324. };
  325. p1s = { ...p1, ...form_studio };
  326. }
  327. // 有数据:
  328. let res: IQueryResult = await basic.self();
  329. if (res.errcode == '0') {
  330. p1s = res.data as {};
  331. p1s.unit_name = unit_name.value;
  332. if (e.is_studio == 'Y') {
  333. let is_stu: IQueryResult = await userStudioApply.query({ user_id: user._id });
  334. if (is_stu.errcode == 0) {
  335. if (is_stu.total > 0) {
  336. let is_stu_info = is_stu.data[0];
  337. delete is_stu_info._id;
  338. delete is_stu_info.id;
  339. p1s = { ...p1s, ...is_stu_info };
  340. } else {
  341. let form_studio = {
  342. live_place: '',
  343. card: [],
  344. team_name: e.nick_name || '',
  345. team_phone: { phone: e.phone ? e.phone : '' },
  346. zc: '',
  347. zc_file: [],
  348. part_job: '',
  349. fields: [],
  350. direction: [],
  351. case: [],
  352. case_file: [],
  353. is_job: '',
  354. };
  355. p1s = { ...p1s, ...form_studio };
  356. }
  357. }
  358. }
  359. } else {
  360. console.log('暂无基础数据');
  361. if (e.is_studio == 'Y') {
  362. let is_stu: IQueryResult = await userStudioApply.query({ user_id: user._id });
  363. if (is_stu.errcode == 0) {
  364. if (is_stu.total > 0) {
  365. let is_stu_info = is_stu.data[0];
  366. delete is_stu_info._id;
  367. delete is_stu_info.id;
  368. p1s = { ...p1s, ...is_stu_info };
  369. } else {
  370. let form_studio = {
  371. live_place: '',
  372. card: [],
  373. team_name: e.nick_name || '',
  374. team_phone: { phone: e.phone ? e.phone : '' },
  375. zc: '',
  376. zc_file: [],
  377. part_job: '',
  378. fields: [],
  379. direction: [],
  380. case: [],
  381. case_file: [],
  382. is_job: '',
  383. };
  384. p1s = { ...p1s, ...form_studio };
  385. }
  386. }
  387. }
  388. }
  389. form.value = p1s;
  390. };
  391. // 查找出生年月,性别
  392. const getcard = (value: any, model: string) => {
  393. if (value) {
  394. if (model == 'brith') {
  395. let birthday = '';
  396. if (value != null && value != '') {
  397. if (value.length == 15) birthday = '19' + value.slice(6, 12);
  398. else if (value.length == 18) birthday = value.slice(6, 14);
  399. birthday = birthday.replace(/(.{4})(.{2})/, '$1-$2-');
  400. if (birthday) return birthday;
  401. else return null;
  402. }
  403. } else if (model == 'gender') {
  404. // 获取性别
  405. let gender = '';
  406. if (parseInt(value.substr(16, 1)) % 2 == 1) gender = '0';
  407. else if (parseInt(value.substr(16, 1)) % 2 == 0) gender = '1';
  408. else gender = '2';
  409. if (gender) return gender;
  410. else return null;
  411. }
  412. }
  413. };
  414. // 技术需求方向添加
  415. const addDriection = () => {
  416. let direction = form.value.direction;
  417. if (direction.length >= 5) ElMessage({ type: 'error', message: '研究方向最多添加五个' });
  418. else direction.push({ id: moment().valueOf(), name: '' });
  419. form.value.direction = direction;
  420. };
  421. // 研究方向删除
  422. const delDriection = (e: { id: string }) => {
  423. let direction = form.value.direction.filter((i: any) => i.id != e.id);
  424. form.value.direction = direction;
  425. };
  426. // 案例添加
  427. const addCase = () => {
  428. let cases = form.value.case;
  429. if (cases.length >= 5) ElMessage({ type: 'error', message: '案例最多添加五个' });
  430. else cases.push({ id: moment().valueOf(), name: '' });
  431. form.value.case = cases;
  432. };
  433. // 案例删除
  434. const delCase = (e: { id: string }) => {
  435. let cases = form.value.case.filter((i: any) => i.id != e.id);
  436. form.value.case = cases;
  437. };
  438. // 数据选择
  439. const dataChange = (e: { model: string; value: any }) => {
  440. const { model, value } = e;
  441. if (model == 'fields') {
  442. if (value.length > 2) ElMessage({ type: 'error', message: '数据过多,请重新选择' });
  443. }
  444. };
  445. const onUpload = (e: { model: string; value: Array<[]> }) => {
  446. const { model, value } = e;
  447. form.value[model] = value;
  448. };
  449. const emit = defineEmits(['updateBasic']);
  450. // 审核保存
  451. const toSave = async (data: any) => {
  452. console.log(data);
  453. let res: IQueryResult;
  454. let is_stu: IQueryResult;
  455. if (userInfo.value.is_studio == 'Y') {
  456. is_stu = await userStudioApply.query({ user_id: user._id });
  457. if (is_stu.total === 0) createApply(data);
  458. else {
  459. let id = is_stu.data[0]._id;
  460. console.log('已有科学家工作室信息,不可重复入驻');
  461. let form = {
  462. user_id: user._id,
  463. name: data.name,
  464. brith: data.birth,
  465. phone: { phone: data.phone || '' },
  466. email: { email: data.email || '' },
  467. education: data.education,
  468. degree: data.degree,
  469. live_place: data.live_place,
  470. card: data.card,
  471. team_name: data.team_name || '',
  472. team_phone: data.team_phone,
  473. company: unit_name.value,
  474. address: user.unit_address,
  475. zc: data.zc,
  476. zc_file: data.zc_file,
  477. part_job: data.part_job || '',
  478. fields: data.fields,
  479. direction: data.direction,
  480. case: data.case,
  481. case_file: data.case_file || [],
  482. is_job: data.is_job,
  483. _id: id,
  484. };
  485. let arr: IQueryResult = await userStudioApply.update(form);
  486. console.log(arr);
  487. }
  488. }
  489. if (data._id) {
  490. res = await basic.update(data);
  491. } else {
  492. res = await basic.create(data);
  493. let refresh: IQueryResult = await users.refresh();
  494. if (refresh.errcode == 0) {
  495. let p1: any = refresh.data as [];
  496. if (refresh.data) localStorage.setItem('token', p1);
  497. }
  498. }
  499. if (res.errcode == 0) {
  500. ElMessage({ type: 'success', message: '维护信息成功' });
  501. search(userInfo.value);
  502. }
  503. };
  504. // 创建入驻信息
  505. const createApply = async (e: any) => {
  506. let form = {
  507. user_id: user._id,
  508. name: e.name,
  509. brith: e.birth,
  510. phone: { phone: e.phone || '' },
  511. email: { email: e.email || '' },
  512. education: e.education,
  513. degree: e.degree,
  514. live_place: e.live_place,
  515. card: e.card,
  516. team_name: e.team_name || '',
  517. team_phone: e.team_phone,
  518. company: unit_name.value,
  519. address: user.unit_address,
  520. zc: e.zc,
  521. zc_file: e.zc_file,
  522. part_job: e.part_job || '',
  523. fields: e.fields,
  524. direction: e.direction,
  525. case: e.case,
  526. case_file: e.case_file || [],
  527. is_job: e.is_job,
  528. };
  529. let res: IQueryResult = await userStudioApply.create(form);
  530. if (res.errcode == 0) emit('updateBasic');
  531. };
  532. const searchOther = async () => {
  533. // 是否公开
  534. const p1: IQueryResult = await sysdictdata.query({ dict_type: 's_is_show' });
  535. if (p1.errcode == 0) isshowList.value = p1.data as [];
  536. // 领域
  537. const p2: IQueryResult = await sysdictdata.query({ dict_type: 'studio_field' });
  538. if (p2.errcode == 0) fieldList.value = p2.data as [];
  539. // 是否为在职人员
  540. const p3: IQueryResult = await sysdictdata.query({ dict_type: 'studio_scientist_is_job' });
  541. if (p3.errcode == 0) isjobList.value = p3.data as [];
  542. // 专业技术职称
  543. const p4: IQueryResult = await sysdictdata.query({ dict_type: 's-builddesire-zc' });
  544. if (p4.errcode == 0) {
  545. let arr1 = p4.data as [];
  546. let data = arr1.filter((i: any) => i.dict_value != '0');
  547. zcList.value = data;
  548. }
  549. // 性别
  550. const p5: IQueryResult = await sysdictdata.query({ dict_type: 'sys_user_sex' });
  551. if (p5.errcode == 0) genderList.value = p5.data as [];
  552. // 学历
  553. const p6: IQueryResult = await sysdictdata.query({ dict_type: 'education' });
  554. if (p6.errcode == 0) educationList.value = p6.data as [];
  555. // 学位
  556. const p7: IQueryResult = await sysdictdata.query({ dict_type: 'degree' });
  557. if (p7.errcode == 0) degreeList.value = p7.data as [];
  558. // 依托单位信息
  559. const p8: IQueryResult = await unit.fetch(user.unit);
  560. if (p8.errcode == 0) {
  561. let arr2 = p8.data as { unit_name: string };
  562. if (arr2 && arr2.unit_name) unit_name.value = arr2.unit_name;
  563. }
  564. // 证件类别
  565. const p9: IQueryResult = await sysdictdata.query({ dict_type: 'basic_card_type' });
  566. if (p9.errcode == 0) cardtypeList.value = p9.data as [];
  567. };
  568. watch(userInfo, async (val) => {
  569. if (val && val._id) {
  570. await searchOther();
  571. await search(val);
  572. }
  573. if (val && val.nick_name) form.value.name = val.nick_name;
  574. if (val && val.card) {
  575. form.value.num = val.card;
  576. let gender = getcard(val.card, 'gender') || '';
  577. let birth = getcard(val.card, 'birth') || '';
  578. form.value.gender = gender;
  579. form.value.birth = birth;
  580. }
  581. if (val && val.phone) form.value.phone = val.phone;
  582. if (val && val.email) form.value.email = val.email;
  583. if (val && val.is_studio == 'Y') {
  584. if (val && val.nick_name) form.value.team_name = val.nick_name;
  585. if (val && val.phone) form.value.team_phone.phone = val.phone;
  586. }
  587. });
  588. </script>
  589. <style lang="scss" scoped></style>