Commit 843b9218 by 黑潮

update: 宝宝信息

parent 1cfd07f5
......@@ -12,69 +12,49 @@
<el-tab-pane
v-for="(item,index) in fieldsList"
:key="index"
:label="item.form.name||item.bName"
:label="`宝宝${index + 1}${item['k20301'] ? `(${item['k20301']})`: '' }`"
:name="`${index}`"
/>
>
<el-form
ref="form"
:model="item.form"
label-width="122px"
:inline="true"
>
<el-form-item v-for="item in babyConfigTemplate.template" :key="item.unifiedIdentification" :label="item.fieldName+ ':'" :prop="item.unifiedIdentification" :rules="getRules(item)">
<el-input
v-if="item.fieldType == 0"
v-model="fieldsList[activeName].form[item.systemFieldId]"
:placeholder="item.fieldDescription"
type="text"
show-word-limit
:maxlength="item.limitCountMax"
style="width: 160px;"
/>
<el-date-picker
v-if="item.fieldType == 4"
:placeholder="item.fieldDescription"
style="width: 160px;"
v-model="fieldsList[activeName].form[item.systemFieldId]"
type="date"
/>
<el-select v-if="item.fieldType == 2" :placeholder="item.fieldDescription" v-model="fieldsList[activeName].form[item.systemFieldId]" style="width: 160px;">
<el-option v-for="(el, index) in JSON.parse(item.fieldContent.replaceAll('\'', '&quot;'))" :key="index" :label="el.name" :value="el.name" />
</el-select>
</el-form-item>
</el-form>
</el-tab-pane>
</el-tabs>
<el-form
v-if="fieldsList[activeName]"
ref="form"
:model="fieldsList[activeName].form"
label-width="122px"
:inline="true"
:disabled="true"
>
<el-form-item label="宝宝名称:" prop="name">
<el-input
type="text"
maxlength="10"
show-word-limit
v-model="fieldsList[activeName].form.name"
style="width: 160px;"
/>
</el-form-item>
<el-form-item label="宝宝生日:" prop="birthDay">
<el-date-picker
style="width: 160px;"
v-model="fieldsList[activeName].form.birthDay"
type="date"
/>
</el-form-item>
<el-form-item label="宝宝性别:" prop="sex">
<el-select v-model="fieldsList[activeName].form.sex" style="width: 160px;">
<el-option label="男" :value="1" />
<el-option label="女" :value="2" />
</el-select>
</el-form-item>
<el-form-item label="宝宝身高(cm):" prop="height">
<el-input
v-model="fieldsList[activeName].form.height"
type="text"
show-word-limit
style="width: 160px;"
/>
</el-form-item>
<el-form-item label="宝宝体重(kg):" prop="weight">
<el-input
v-model="fieldsList[activeName].form.weight"
type="text"
show-word-limit
style="width: 160px;"
/>
</el-form-item>
<el-form-item label="鞋码(码):" prop="shoeSize">
<el-input
v-model="fieldsList[activeName].form.shoeSize"
type="text"
show-word-limit
style="width: 160px;"
/>
</el-form-item>
</el-form>
<div slot="footer">
<el-button @click="$emit('update:dialogVisible', false)">取消</el-button>
<el-button type="primary" @click="onSave" :loading="loading">保存</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { doFetch } from '../../axios/api';
import url from '../../axios/url';
export default {
name: 'BabyinfoDialog',
props: {
......@@ -88,43 +68,133 @@ export default {
return [];
},
},
babyConfigTemplate: {
type: Object,
default: () => {
return {}
}
}
},
data () {
return {
visible: false,
fieldsList: [],
activeName: '0',
loading: false
};
},
watch: {
dialogVisible (n, o) {
this.visible = n;
if (n) {
const filterObj = {
'宝宝名称': 'name',
'宝宝性别': 'sex',
'宝宝生日': 'birthDay',
'宝宝身高(cm)': 'height',
'宝宝体重(kg)': 'weight',
'鞋码(码)': 'shoeSize',
};
const fieldList = this.childFieldsList.map(el => {
el.form = {
name: '',
sex: '',
birthDay: '',
height: '',
weight: '',
shoeSize: '',
'k20301': '',
'k20302': '',
'k20303': '',
'k20304': '',
'k20305': '',
'k20306': '',
};
el.sonFields.map(field => (el.form[filterObj[field.fieldName]] = field.fieldValue));
el.sonFields.forEach(field => {
el.form[field.unifiedIdentification] = field.fieldValue;
el[field.unifiedIdentification] = field.fieldValue;
});
return el;
});
this.fieldsList = JSON.parse(JSON.stringify(fieldList));
let formRef = this.$refs.form
if(Array.isArray(formRef)) {
formRef.forEach(el => {
el.clearValidate();
})
} else if(formRef) {
formRef.clearValidate();
}
}
},
},
methods: {
async onSave() {
let formRefs = this.$refs.form;
if(Array.isArray(formRefs)) {
for(let i = 0; i < formRefs.length; i++) {
let valid = await formRefs[i].validate().catch(() => {
this.$message.error(`宝宝${i+1}信息填写错误`);
})
if(!valid) return;
}
} else if(formRefs) {
let valid = await formRefs.validate();
if(!valid) return;
}
let params = {
fieldValueId: this.babyConfigTemplate.fieldValueId,
memberId: this.babyConfigTemplate.memberId,
enterpriseOpencardFieldId: this.babyConfigTemplate.enterpriseOpencardFieldId,
systemFieldId: this.babyConfigTemplate.systemFieldId,
unifiedIdentification: this.babyConfigTemplate.unifiedIdentification,
fieldName: this.babyConfigTemplate.fieldName,
fieldType: this.babyConfigTemplate.fieldType,
fieldContent: this.babyConfigTemplate.fieldContent,
fieldCode: this.babyConfigTemplate.fieldCode,
fieldValue: this.babyConfigTemplate.fieldValue,
}
let babyTemplates = this.babyConfigTemplate.template;
let child = this.fieldsList.map(el => {
let value = [];
for(let key in el.form) {
if(el.form[key]) {
let findItem = babyTemplates.find(e => e.unifiedIdentification == key);
let fieldValue = el.form[key];
if(findItem.fieldType == 4) {
fieldValue = fieldValue.replaceAll('-', '');
}
value.push({enterpriseOpencardFieldId: findItem.enterpriseOpencardFieldId, unifiedIdentification: findItem.unifiedIdentification, fieldValue, systemFieldId: findItem.systemFieldId});
}
}
return value;
})
params.child = child;
this.loading = true;
doFetch(url.updateBabyInfo, Object.assign({}, params)).then(() => {
this.$emit('update:dialogVisible', false);
this.$parent.initData();
}).finally(() => {
this.loading = false;
})
},
getRules(item) {
let ruleReg = new RegExp(item.ruleContent)
let validatePass = null
if(item.fieldType == 0) {
validatePass = (rule, value, callback) => {
if (value === '' || ruleReg.test(value)) {
callback();
} else {
callback(new Error('请输入正确的内容'));
}
}
return { validator: validatePass, trigger: 'blur' }
} else if(item.unifiedIdentification == 'k20303') {
let rule = JSON.parse(item.fieldContent.replaceAll('\'', '"'));
let time = rule.timeLong
validatePass = (rule, value, callback) => {
if (value === '' || value === null) {
callback();
} else if (new Date().getFullYear() - new Date(value).getFullYear() > parseInt(time)) {
callback(new Error(`超过当前日期时间之前${time}年`));
} else if(new Date(value) > new Date()) {
callback(new Error(`超过当前日期时间`));
} else {
callback();
}
}
return { validator: validatePass, trigger: 'blur' }
} else {
return null
}
},
cancel () {
this.$emit('update:dialogVisible', false);
},
......
......@@ -94,7 +94,7 @@
<div class="vertical-line" />
<!-- <div class="toggleTag" @click="toggleTag=!toggleTag">
{{ toggleTag?'收起':'展开' }}<i
:class="toggleTag ? 'el-icon-arrow-up' : 'el-icon-arrow-down'" />
:class="toggleTag ? 'el-icon-arrow-up' : 'el-icon-arrow-down'" />
</div>-->
</div>
<div class="max1600">
......@@ -109,11 +109,19 @@
{{ item.fieldValue }}
</el-descriptions-item>
<el-descriptions-item label="宝宝信息" v-if="babyStr">
{{ babyStr }} <el-tooltip class="item" effect="dark" open-delay="200"
content="查看宝宝信息" placement="top-start">
{{ babyStr }} <el-tooltip
class="item"
effect="dark"
open-delay="200"
content="编辑宝宝信息"
placement="top-start"
>
<span class="edit-span" @click="babyDialogVisible=true">
<icon-svg icon-class="icon-chakanxiangqing-copy"
style="width:13px;height:14px;" />
<!-- <icon-svg
icon-class="icon-chakanxiangqing-copy"
style="width:13px;height:14px;"
/> -->
<i class="el-icon-edit"></i>
</span>
</el-tooltip>
</el-descriptions-item>
......@@ -470,8 +478,11 @@
<baseinfo-dialog :dialogVisible.sync="baseinfoDialogVisible" :baseInfo="member"
:nationCodeList="nationCodeList" @refresh="initData" />
<!-- 宝宝信息弹窗 -->
<babyinfo-dialog :dialogVisible.sync="babyDialogVisible"
:childFieldsList="extendInfo.openChildrenField||[]" />
<babyinfo-dialog
:dialogVisible.sync="babyDialogVisible"
:childFieldsList="extendInfo.openChildrenField||[]"
:babyConfigTemplate="extendInfo.babyConfigTemplate || {}"
/>
<!-- 等级修改弹窗 -->
<customergrade-dialog :dialogVisible.sync="gradeDialogVisible" :memberId="memberId"
:gradeId="memberInfo.gradeId" :gradeList="gradeList" @refresh="initData" />
......
......@@ -2,6 +2,7 @@ const host = window.location.origin;
const baseUrl = host.indexOf('localhost') > -1 ? 'http://gicdev.demogic.com' : host;
const urlConfig = {
updateBabyInfo: '/api-member/update-member-baby-info',// 更新宝宝信息
cliqueGradeList: '/api-admin/clique-grade-list',
doLogin: '/api-auth/dologin', // 登录
enterprise: '/api-auth/list-login-enterprise',//企业列表
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment