Browse Source

更新线上接口和表单内容

wzz 3 weeks ago
parent
commit
0732de2d4e

+ 3 - 2
src/App.vue

@@ -2,8 +2,9 @@
 import md5 from '@/common/md5.js';
 export default {
   globalData: {
-    shareUrl: "http://8.136.230.133/tinnitus-php/", //测试地址(2.0后台)
-    //shareUrl:"https://tts.xazhima.com/", //测试地址(旧)
+    shareUrl: "https://tts.xazhima.com/tingli/", //公共接口地址
+    //shareUrl:"http://8.136.230.133/tinnitus-php/", //测试地址(2.0后台,旧)
+    //shareUrl:"https://tts.xazhima.com/", //测试地址(更旧)
     //shareUrl:"https://h.xayuanju.com/",
     globalTimestamp: Date.now().toString(),
     secret: "tts_weichat_app_zhima",

+ 65 - 45
src/pages/selfCenter/info.vue

@@ -20,32 +20,32 @@
 					<uni-forms-item label="年龄"  name="age" box-width="175rpx">
 						<uni-easyinput type="number" :value="baseFormData.age" :styles="{fontSize:'14px',disableColor: '#f5f7fa', borderColor:'#e5e5e5'}" disabled  />
 					</uni-forms-item>
-					<uni-forms-item label="常住地"  name="address" box-width="175rpx">
-						<uni-easyinput :value="baseFormData.address" :styles="{fontSize:'14px',disableColor: '#f5f7fa', borderColor:'#e5e5e5'}" disabled />
+					<uni-forms-item label="身高(cm)"  name="height" box-width="175rpx">
+						<uni-easyinput type="number" :value="baseFormData.height" :styles="{fontSize:'14px',disableColor: '#f5f7fa', borderColor:'#e5e5e5'}" disabled />
 					</uni-forms-item>
-					<uni-forms-item label="民族"  name="nation" box-width="175rpx">
-						<uni-data-select v-model="baseFormData.nation" disabled :localdata="selectData.nation" ></uni-data-select>
+					<uni-forms-item label="体重(kg)"  name="weight" box-width="175rpx">
+						<uni-easyinput type="number" :value="baseFormData.weight" :styles="{fontSize:'14px',disableColor: '#f5f7fa', borderColor:'#e5e5e5'}" disabled />
 					</uni-forms-item>
-					<uni-forms-item label="职业"  name="profession" box-width="175rpx">
-						<uni-data-select v-model="baseFormData.profession" disabled :localdata="selectData.profession"></uni-data-select>
+					<uni-forms-item label="婚姻"  name="marriage" box-width="175rpx">
+						<uni-data-select v-model="baseFormData.marriage" disabled :localdata="selectData.marriage"></uni-data-select>
 					</uni-forms-item>
-					<uni-forms-item label="工作地点"  name="work_address" box-width="175rpx">
-						<uni-easyinput :value="baseFormData.work_address" :styles="{fontSize:'14px',disableColor: '#f5f7fa', borderColor:'#e5e5e5'}" disabled />
+					<uni-forms-item label="有无孩子"  name="has_children" box-width="175rpx">
+						<uni-data-checkbox v-model="baseFormData.has_children" :localdata="yesNoOptions" :wrap="true" disabled/>
 					</uni-forms-item>
-					<uni-forms-item label="学历"  name="education" box-width="175rpx">
-						<uni-data-select v-model="baseFormData.education" disabled :localdata="selectData.education"></uni-data-select>
+					<uni-forms-item label="孩子年龄"  name="children_age" box-width="175rpx" v-if="baseFormData.has_children === 1">
+						<uni-easyinput type="number" :value="baseFormData.children_age" :styles="{fontSize:'14px',disableColor: '#f5f7fa', borderColor:'#e5e5e5'}" disabled />
 					</uni-forms-item>
-					<uni-forms-item label="婚姻"  name="marriage" box-width="175rpx">
-						<uni-data-select v-model="baseFormData.marriage" disabled :localdata="selectData.marriage"></uni-data-select>
+					<uni-forms-item label="职业"  name="profession" box-width="175rpx">
+						<uni-data-select v-model="baseFormData.profession" disabled :localdata="selectData.profession"></uni-data-select>
 					</uni-forms-item>
-					<uni-forms-item label="居住情况"  name="house" box-width="175rpx">
-						<uni-data-select v-model="baseFormData.house" disabled :localdata="selectData.house"></uni-data-select>
+					<uni-forms-item label="工作地点"  name="work_address" box-width="175rpx" v-if="isTeacher">
+						<uni-data-checkbox v-model="baseFormData.work_address" :localdata="workplaceOptions" :wrap="true" disabled/>
 					</uni-forms-item>
-					<uni-forms-item label="耳鸣病程"  name="days" box-width="175rpx">
-						<uni-easyinput :value="baseFormData.days" :styles="{fontSize:'14px',disableColor: '#f5f7fa', borderColor:'#e5e5e5'}" textUnit="天"  disabled />
+					<uni-forms-item label="目前最主要的症状"  name="main_symptom" box-width="175rpx">
+						<uni-easyinput :value="baseFormData.main_symptom" :styles="{fontSize:'14px',disableColor: '#f5f7fa', borderColor:'#e5e5e5'}" disabled />
 					</uni-forms-item>
-					<uni-forms-item label="惯用手"  box-width="175rpx">
-						<uni-data-checkbox v-model="baseFormData.common_hand" disabled :localdata="selectData.hand" :wrap="true"/>
+					<uni-forms-item label="持续时间(月)"  name="symptom_duration" box-width="175rpx">
+						<uni-easyinput type="number" :value="baseFormData.symptom_duration" :styles="{fontSize:'14px',disableColor: '#f5f7fa', borderColor:'#e5e5e5'}" disabled />
 					</uni-forms-item>
 					<uni-forms-item label="就诊类型"  name="type" box-width="175rpx">
 						<uni-data-select v-model="baseFormData.type" disabled :localdata="selectData.type"></uni-data-select>
@@ -56,6 +56,9 @@
 					<uni-forms-item label="就诊医生"   name="doctor_id" box-width="175rpx">
 						<uni-data-select v-model="baseFormData.doctor_id" disabled :localdata="doctorRange"></uni-data-select>
 					</uni-forms-item>
+					<uni-forms-item label="ID号"  name="code" box-width="175rpx">
+						<uni-easyinput :value="baseFormData.code" :styles="{fontSize:'14px',disableColor: '#f5f7fa', borderColor:'#e5e5e5'}" disabled />
+					</uni-forms-item>
 				</uni-forms>
 			</view>
   </view>
@@ -63,6 +66,14 @@
 
 <script>
 import { request, currentOpenId } from '@/utils/request.js'
+
+// 和 history.vue 保持一致:这几组选项后台 get_case_select 目前没有提供,先在前端写死
+const YES_NO_OPTIONS = [{ value: 1, text: '有' }, { value: 0, text: '无' }]
+const WORKPLACE_OPTIONS = [
+	{ value: 1, text: '幼儿园' }, { value: 2, text: '小学' }, { value: 3, text: '初中' },
+	{ value: 4, text: '高中' }, { value: 5, text: '大学' },
+]
+
 export default {
   data() {
     return {
@@ -70,37 +81,44 @@ export default {
 	  isWith:0,
 		// 基础表单数据
 		baseFormData: {
-			address: "",
-			age: "18",
-			birth_year: "0",
-			birthday: "0",
-			profession: 1,
-			work_address: "",
-			code: "",
-			common_hand: 2,
-			create_time: "0",
-			days: "",
-			doctor_id: 1,
-			doctor_name: "",
-			education: 1,
-			hospital_id: 1,
-			hospital_name: "",
-			house: 1,
-			id: "2",
-			marriage: 1,
 			name: "",
-			nation: 1,
 			phone: "",
 			sex: 1,
-			title: "0",
+			age: "",
+			height: "",
+			weight: "",
+			marriage: 1,
+			has_children: 0,
+			children_age: "",
+			profession: 1,
+			work_address: "",
+			main_symptom: "",
+			symptom_duration: "",
 			type: 1,
-			update_time: "1728436174",
-			weixin_user_id: "1"
+			hospital_id: 1,
+			hospital_name: "",
+			doctor_id: 1,
+			doctor_name: "",
+			code: "",
+		},
+		selectData:{
+			sex: [],
+			profession: [],
+			marriage: [],
+			type: [],
+			hospital: [],
 		},
-		selectData:[],
 		doctorRange: [],
+		yesNoOptions: YES_NO_OPTIONS,
+		workplaceOptions: WORKPLACE_OPTIONS,
     };
   },
+  computed: {
+	  isTeacher() {
+		  const item = this.selectData.profession.find(item => item.value === this.baseFormData.profession)
+		  return !!(item && item.text.includes('教师'))
+	  }
+  },
   onLoad() {
 	this.getUserHis();
   },
@@ -108,20 +126,22 @@ export default {
 	  async getUserHis() {
 	     const res = await request('user', 'get_case_info', { openId: currentOpenId() })
 	     if (res.code === 200) {
-            this.baseFormData = res.data;
+			// 用合并而不是整体替换,后台还没实现的新字段会保留 data() 里的默认值,不会变成 undefined(跟 history.vue 一致)
+			this.baseFormData = Object.assign({}, this.baseFormData, res.data);
 			// 后台没填过的选择类字段存的是字符串 "0"(或者字段压根不存在),选项列表都是从 value:1 开始编号,
-			// 统一兜底成 1,否则这几个只读下拉会显示空白(跟 history.vue 是同一套处理)
-			['sex','common_hand','doctor_id','education','hospital_id','marriage','nation','profession','type','house'].forEach((key)=>{
+			// 统一兜底成 1,否则这几个只读下拉会显示空白
+			['sex','profession','marriage','type','hospital_id','doctor_id'].forEach((key)=>{
 				if (!this.baseFormData[key] || this.baseFormData[key] == '0') this.baseFormData[key] = 1
 				this.baseFormData[key] = Number(this.baseFormData[key])
 			})
+			if (this.baseFormData.work_address == null || this.baseFormData.work_address == undefined) this.baseFormData.work_address = ''
 			this.getUserSelect();
 	     }
 	   },
 	  async getUserSelect() {
 	     const res = await request('user', 'get_case_select', { openId: currentOpenId() })
 	     if (res.code === 200) {
-			 this.selectData= res.data;
+			 this.selectData = Object.assign({}, this.selectData, res.data);
 			 this.getDoctor(this.baseFormData.hospital_id)
 	     }
 	   },

+ 135 - 175
src/pages/sickForm/history.vue

@@ -3,11 +3,12 @@
       <view class="self-inf">
         <view class="img-title-box">
 			<view class="title">病史信息</view>
-			<view class="content">耳鸣情况及其他系统合并疾病情况</view>
+			<view class="content">嗓音情况及其他系统合并疾病情况</view>
 			<view class="footer">约2分钟完成</view>
         </view>
 	  </view>
 			<view class="example">
+				<view class="date-line">日期:{{todayDate}}</view>
 				<!-- 基础表单校验 -->
 				<uni-forms ref="valiForm" :rules="rules" :modelValue="baseFormData">
 					<uni-forms-item label="姓名" required name="name" box-width="190rpx">
@@ -19,51 +20,39 @@
 					<uni-forms-item label="性别" required name="sex" box-width="190rpx">
 						<uni-data-checkbox v-model="baseFormData.sex" :localdata="selectData.sex" @change="change('sex',$event)" :wrap="true"/>
 					</uni-forms-item>
-					<uni-forms-item label="年龄" name="age" box-width="190rpx">
+					<uni-forms-item label="年龄" required name="age" box-width="190rpx">
 						<uni-easyinput type="number" :value="baseFormData.age" @input="baseFormData.age = $event" placeholder="请输入" />
 					</uni-forms-item>
-					<uni-forms-item label="常住地" required name="address" box-width="190rpx">
-						<uni-easyinput :value="baseFormData.address" @input="baseFormData.address = $event" placeholder="请输入" />
+					<uni-forms-item label="身高(cm)" required name="height" box-width="190rpx">
+						<uni-easyinput type="number" :value="baseFormData.height" @input="baseFormData.height = $event" placeholder="请输入" />
 					</uni-forms-item>
-					<uni-forms-item label="民族" required name="nation" box-width="190rpx">
-						<picker @change="change('nation',$event)" :value="pickerIndexObj.nation" :range="selectData.nation" range-key="text">
-							<view class="picker-class-box">{{pickerText(selectData.nation, pickerIndexObj.nation)}}</view>
-						</picker>
-					</uni-forms-item>
-
-					<uni-forms-item label="职业" required name="profession" box-width="190rpx">
-						<picker @change="change('profession',$event)" :value="pickerIndexObj.profession" :range="selectData.profession" range-key="text">
-							<view class="picker-class-box">{{pickerText(selectData.profession, pickerIndexObj.profession)}}</view>
-						</picker>
-					</uni-forms-item>
-
-					<uni-forms-item label="工作地点" required name="work_address" box-width="190rpx">
-						<uni-easyinput :value="baseFormData.work_address" @input="baseFormData.work_address = $event" placeholder="请输入" />
-					</uni-forms-item>
-
-					<uni-forms-item label="学历" required name="education" box-width="190rpx">
-						<picker @change="change('education',$event)" :value="pickerIndexObj.education" :range="selectData.education" range-key="text">
-							<view class="picker-class-box">{{pickerText(selectData.education, pickerIndexObj.education)}}</view>
-						</picker>
+					<uni-forms-item label="体重(kg)" required name="weight" box-width="190rpx">
+						<uni-easyinput type="number" :value="baseFormData.weight" @input="baseFormData.weight = $event" placeholder="请输入" />
 					</uni-forms-item>
 					<uni-forms-item label="婚姻" required name="marriage" box-width="190rpx">
 						<picker @change="change('marriage',$event)" :value="pickerIndexObj.marriage" :range="selectData.marriage" range-key="text">
 							<view class="picker-class-box">{{pickerText(selectData.marriage, pickerIndexObj.marriage)}}</view>
 						</picker>
 					</uni-forms-item>
-					<uni-forms-item label="居住情况" required name="house" box-width="190rpx">
-						<picker @change="change('house',$event)" :value="pickerIndexObj.house" :range="selectData.house" range-key="text">
-							<view class="picker-class-box">{{pickerText(selectData.house, pickerIndexObj.house)}}</view>
+					<uni-forms-item label="有无孩子" required name="has_children" box-width="190rpx">
+						<uni-data-checkbox v-model="baseFormData.has_children" :localdata="yesNoOptions" :wrap="true"/>
+					</uni-forms-item>
+					<uni-forms-item label="孩子年龄" required name="children_age" box-width="190rpx" v-if="baseFormData.has_children === 1">
+						<uni-easyinput type="number" :value="baseFormData.children_age" @input="baseFormData.children_age = $event" placeholder="请输入" />
+					</uni-forms-item>
+					<uni-forms-item label="职业" required name="profession" box-width="190rpx">
+						<picker @change="change('profession',$event)" :value="pickerIndexObj.profession" :range="selectData.profession" range-key="text">
+							<view class="picker-class-box">{{pickerText(selectData.profession, pickerIndexObj.profession)}}</view>
 						</picker>
 					</uni-forms-item>
-					<uni-forms-item label="耳鸣病程" required name="days" box-width="190rpx">
-						<view class="display-between">
-							<uni-easyinput :value="baseFormData.days" @input="baseFormData.days = $event" placeholder="请输入" type="number" widthStyle="160rpx" />
-							<uni-data-checkbox v-model="unitValue" :localdata="unitList" @change="unitChange($event)" :wrap="true"/>
-						</view>
+					<uni-forms-item label="工作地点" required name="work_address" box-width="190rpx" v-if="isTeacher">
+						<uni-data-checkbox v-model="baseFormData.work_address" :localdata="workplaceOptions" :wrap="true"/>
+					</uni-forms-item>
+					<uni-forms-item label="目前最主要的症状" required name="main_symptom" box-width="190rpx">
+						<uni-easyinput :value="baseFormData.main_symptom" @input="baseFormData.main_symptom = $event" placeholder="请输入" />
 					</uni-forms-item>
-					<uni-forms-item label="惯用手" required name="common_hand" box-width="190rpx">
-						<uni-data-checkbox v-model="baseFormData.common_hand" :localdata="selectData.hand" @change="change('hand',$event)" :wrap="true"/>
+					<uni-forms-item label="持续时间(月)" required name="symptom_duration" box-width="190rpx">
+						<uni-easyinput type="number" :value="baseFormData.symptom_duration" @input="baseFormData.symptom_duration = $event" placeholder="请输入" />
 					</uni-forms-item>
 					<uni-forms-item label="就诊类型" required name="type" box-width="190rpx">
 						<picker @change="change('type',$event)" :value="pickerIndexObj.type" :range="selectData.type" range-key="text">
@@ -80,7 +69,7 @@
 							<view class="picker-class-box">{{pickerText(doctorRange, pickerIndexObj.doctor)}}</view>
 						</picker>
 					</uni-forms-item>
-					<uni-forms-item label="ID号"  name="code" box-width="190rpx">
+					<uni-forms-item label="ID号" required name="code" box-width="190rpx">
 						<uni-easyinput :value="baseFormData.code" @input="baseFormData.code = $event" placeholder="请输入"/>
 					</uni-forms-item>
 				</uni-forms>
@@ -91,11 +80,16 @@
 
 <script>
 import { request, currentOpenId } from '@/utils/request.js'
+
+// 以下几组选项,后台 get_case_select 目前没有提供,先在前端写死;具体见开发备注同步给后台
+const YES_NO_OPTIONS = [{ value: 1, text: '有' }, { value: 0, text: '无' }]
+const WORKPLACE_OPTIONS = [
+	{ value: 1, text: '幼儿园' }, { value: 2, text: '小学' }, { value: 3, text: '初中' },
+	{ value: 4, text: '高中' }, { value: 5, text: '大学' },
+]
+
 export default {
 	data() {
-	const currentDate = this.getDate({
-		format: true
-	})
     return {
 		// 校验规则
 		rules: {
@@ -105,115 +99,135 @@ export default {
 					errorMessage: '请输入姓名'
 				}]
 			},
+			phone: {
+				rules: [{
+					required: true,
+					errorMessage: '请输入电话号码'
+				},
+				{
+					minLength: 11,
+					maxLength: 11,
+					errorMessage: '电话号码长度为11个数字',
+				}
+				]
+			},
 			sex: {
 				rules: [{
 					required: true,
 					errorMessage: '请选择性别'
 				}]
 			},
-			address: {
+			age: {
 				rules: [{
 					required: true,
-					errorMessage: '请输入常住地'
+					errorMessage: '请输入年龄'
 				}]
 			},
-			phone: {
+			height: {
 				rules: [{
 					required: true,
-					errorMessage: '请输入电话号码'
-				},
-				{
-					minLength: 11,
-					maxLength: 11,
-					errorMessage: '电话号码长度为11个数字',
-				}
-				]
+					errorMessage: '请输入身高'
+				}]
+			},
+			weight: {
+				rules: [{
+					required: true,
+					errorMessage: '请输入体重'
+				}]
 			},
-			days: {
+			has_children: {
 				rules: [{
 					required: true,
-					errorMessage: '请输入耳鸣病程'
+					errorMessage: '请选择有无孩子'
 				}]
 			},
-			common_hand: {
+			children_age: {
 				rules: [{
 					required: true,
-					errorMessage: '请选择惯用手'
+					errorMessage: '请输入孩子年龄'
 				}]
 			},
 			work_address: {
 				rules: [{
 					required: true,
-					errorMessage: '请输入工作地点'
+					errorMessage: '请选择工作地点'
+				}]
+			},
+			main_symptom: {
+				rules: [{
+					required: true,
+					errorMessage: '请输入目前最主要的症状'
+				}]
+			},
+			symptom_duration: {
+				rules: [{
+					required: true,
+					errorMessage: '请输入持续时间'
+				}]
+			},
+			code: {
+				rules: [{
+					required: true,
+					errorMessage: '请输入ID号'
 				}]
 			},
 		},
 		// 基础表单数据
 		baseFormData: {
-			address: "",
-			age: "",
-			birth_year: "0",
-			birthday: "0",
-			profession: 1,
-			work_address: "",
-			code: "",
-			common_hand: 2,
-			create_time: "0",
-			days: "",
-			doctor_id: 1,
-			doctor_name: "",
-			education: 1,
-			hospital_id: 1,
-			hospital_name: "",
-			house: 1,
-			id: "2",
-			marriage: 1,
 			name: "",
-			nation: 1,
 			phone: "",
 			sex: 1,
-			title: "0",
+			age: "",
+			height: "",
+			weight: "",
+			marriage: 1,
+			has_children: 0,
+			children_age: "",
+			profession: 1,
+			work_address: '',
+			main_symptom: "",
+			symptom_duration: "",
 			type: 1,
-			update_time: "1728436174",
-			weixin_user_id: "1",
+			hospital_id: 1,
+			hospital_name: "",
+			doctor_id: 1,
+			doctor_name: "",
+			code: "",
 		},
 		pickerIndexObj:{
 			profession: -1,
-			nation: -1,
-			education: -1,
 			marriage: -1,
-			house: -1,
 			type: -1,
 			hospital: -1,
 			doctor: -1,
 		},
 		selectData:{
 			sex: [],
-			hand: [],
 			profession: [],
-			nation: [],
-			education: [],
 			marriage: [],
-			house: [],
 			type: [],
 			hospital: [],
 		},
 		doctorRange: [],
+		yesNoOptions: YES_NO_OPTIONS,
+		workplaceOptions: WORKPLACE_OPTIONS,
         isAuth: true,
 		pageId:1,
-        date: currentDate,
 		isFinish:false,
-		unitList:[{ value: "天" , text: "天" },{ value:"月", text: "月" },{ value: "年" , text: "年" }],
-		unitValue:'天',
-		unitSubmit:'天'
     };
   },
   computed: {
-	  startDate() {
-		  return this.getDate('start');
+	  isTeacher() {
+		  const text = this.pickerText(this.selectData.profession, this.pickerIndexObj.profession)
+		  return text.includes('教师')
 	  },
-	  endDate() {
-		  return this.getDate('end');
+	  // 日期仅展示当天,不作为表单字段提交,后台会自行记录提交时间
+	  todayDate() {
+		  const d = new Date()
+		  const y = d.getFullYear()
+		  const m = String(d.getMonth() + 1).padStart(2, '0')
+		  const day = String(d.getDate()).padStart(2, '0')
+		  return `${y}-${m}-${day}`
 	  }
   },
   onLoad(query) {
@@ -223,28 +237,13 @@ export default {
 	  const scene = getApp().globalData.sceneParam
       if(scene){
 		  await this.$onLaunched;
-		 let codeParam = this.getQueryParams(scene)
-		 this.getUserHis(codeParam.doctor_id,codeParam.hospital_id);
+		 this.getUserHis();
 		 getApp().globalData.sceneParam = '';
 	  }else {
-		 this.getUserHis('');
+		 this.getUserHis();
 	  }
   },
   methods: {
-		getDate(type) {
-			const date = new Date();
-			let year = date.getFullYear();
-			let month = date.getMonth() + 1;
-			let day = date.getDate();
-			if (type === 'start') {
-				year = year - 124;
-			} else if (type === 'end') {
-				year = year + 0;
-			}
-			month = month > 9 ? month : '0' + month;
-			day = day > 9 ? day : '0' + day;
-			return `${year}-${month}-${day}`;
-			},
 		getQueryParams(str) {
 			const paramsArr = str.split('&');
 			const paramObj = {};
@@ -257,14 +256,11 @@ export default {
 	validatePikcer(){
 		let pickerObj = this.pickerIndexObj , pickerArr = [];
 		let language = {
-			'nation':'民族',
 			'profession':'职业',
-			'education':'学历',
 			'marriage':'婚姻',
-			'house':'居住情况',
 			'type':'就诊类型',
 			'hospital':'就诊医院',
-			'doctor':'就诊医生'
+			'doctor':'就诊医生',
 		}
 		for(let k in pickerObj) {
 			if(pickerObj[k] === -1){
@@ -314,10 +310,6 @@ export default {
 		}
 		return resultId;
 	},
-	  unitChange(e){
-		 this.unitValue = e.detail.value;
-		 this.unitSubmit = e.detail.value;
-	  },
 	  change(types,e) {
 		let that = this;
 		let value = e;
@@ -327,21 +319,17 @@ export default {
 			value = e.detail.value;
 			that.baseFormData.sex = value;
 			break;
-			case 'nation' :
+			case 'profession' :
 			value = Number(e.detail.value);
-			that.baseFormData.nation = that.getPostId(tpyeVal,value);
+			that.baseFormData.profession = that.getPostId(tpyeVal,value);
 			break;
-			case 'education' :
+			case 'marriage' :
 			value = Number(e.detail.value);
-			that.baseFormData.education = that.getPostId(tpyeVal,value);
+			that.baseFormData.marriage = that.getPostId(tpyeVal,value);
 			break;
-			case 'profession' :
+			case 'type' :
 			value = Number(e.detail.value);
-			that.baseFormData.profession = that.getPostId(tpyeVal,value);
-			break;
-			case 'hand' :
-			value = e.detail.value;
-			that.baseFormData.common_hand = value;
+			that.baseFormData.type = that.getPostId(tpyeVal,value);
 			break;
 			case 'hospital' :
 			value = Number(e.detail.value);
@@ -354,81 +342,49 @@ export default {
 			that.baseFormData.doctor_id = that.getPostId(tpyeVal,value)
 			that.baseFormData.doctor_name = that.doctorRange[that.pickerIndexObj.doctor].text
 			break;
-			case 'house' :
-			value = Number(e.detail.value);
-			that.baseFormData.house = that.getPostId(tpyeVal,value);
-			break;
-			case 'marriage' :
-			value = Number(e.detail.value);
-			that.baseFormData.marriage = that.getPostId(tpyeVal,value);
-			break;
-			case 'type' :
-			value = Number(e.detail.value);
-			that.baseFormData.type = that.getPostId(tpyeVal,value);
-			break;
 		}
 	  },
 	  pickerText(arr, idx) {
 		  return (arr && arr[idx]) ? arr[idx].text : ''
 	  },
 	  pickerEchoShow(dataArr,dataId,typeName){
-		  // sex/hand 是复选组件自己处理回显;career_type(工作性质)后台会返回但表单目前没有对应字段,跳过避免污染 pickerIndexObj
-		  if(typeName === 'sex' || typeName === 'hand' || typeName === 'career_type'){
-			   return
-		  }else {
-			 let rangeArr = dataArr, selectedId = dataId;
-			 this.pickerIndexObj[typeName] = rangeArr.findIndex(item => item.value === selectedId);
-		  }
+		 let rangeArr = dataArr, selectedId = dataId;
+		 this.pickerIndexObj[typeName] = rangeArr.findIndex(item => item.value === selectedId);
 	  },
-	  makeFromData(docId,hosId){
+	  makeFromData(){
 			if(this.baseFormData.age == '0')this.baseFormData.age = '';
 			this.baseFormData.sex = Number(this.baseFormData.sex);
 			if(this.baseFormData.sex == '0')this.baseFormData.sex = '';
-			this.baseFormData.common_hand = Number(this.baseFormData.common_hand);
-			if(this.baseFormData.common_hand == '0')this.baseFormData.common_hand = '';
-			if(docId) {
-				this.baseFormData.hospital_id = Number(hosId);
-				this.baseFormData.hospital = this.baseFormData.hospital_id
-				this.baseFormData.doctor_id = Number(docId);
-				this.baseFormData.doctor = this.baseFormData.doctor_id
-			}else {
-				this.baseFormData.hospital_id = Number(this.baseFormData.hospital_id);
-				this.baseFormData.hospital = this.baseFormData.hospital_id
-				this.baseFormData.doctor_id = Number(this.baseFormData.doctor_id);
-				this.baseFormData.doctor = this.baseFormData.doctor_id
-			}
 			this.baseFormData.profession = Number(this.baseFormData.profession);
-			this.baseFormData.education = Number(this.baseFormData.education);
 			this.baseFormData.marriage = Number(this.baseFormData.marriage);
-			this.baseFormData.nation = Number(this.baseFormData.nation);
 			this.baseFormData.type = Number(this.baseFormData.type);
-			this.baseFormData.house = Number(this.baseFormData.house);
+			this.baseFormData.hospital_id = Number(this.baseFormData.hospital_id);
+			this.baseFormData.doctor_id = Number(this.baseFormData.doctor_id);
 			this.getUserSelect();
 	  },
-	  async getUserHis(docId,hosId) {
-	     const res = await request('user', 'get_case_info', { openId: currentOpenId(), doctor_id: docId || 0 })
+	  async getUserHis() {
+	     const res = await request('user', 'get_case_info', { openId: currentOpenId() })
 	     if (res.code === 200) {
-            this.baseFormData = res.data;
+			// 用合并而不是整体替换,后台还没实现的新字段会保留 data() 里的默认值,不会变成 undefined
+			this.baseFormData = Object.assign({}, this.baseFormData, res.data);
 			// 后台没填过的选择类字段存的是字符串 "0"(或者字段压根不存在),跟 age/sex 是同一套"0 代表未填"的约定,
 			// "0"/undefined 在 JS 里判真值容易漏判,选项列表都是从 value:1 开始编号,统一兜底成 1,否则选择器会显示空白
-			['profession','nation','education','marriage','house','common_hand','type','hospital_id','doctor_id'].forEach((key)=>{
+			['profession','marriage','type','hospital_id','doctor_id'].forEach((key)=>{
 				if (!this.baseFormData[key] || this.baseFormData[key] == '0') this.baseFormData[key] = 1
 			})
-			// 老病历记录没有工作地点字段时后台返回 null,uni-easyinput 绑定 null 初始值会导致输入内容同步不到 baseFormData,提前归一化成空字符串
 			if (this.baseFormData.work_address == null || this.baseFormData.work_address == undefined) this.baseFormData.work_address = ''
-			this.unitValue = this.baseFormData.days.substr(-1);
-			this.baseFormData.days = this.baseFormData.days.substr(0,(this.baseFormData.days.length-1))
 	     }
-		 // 不管是否已有历史病历,选项列表(民族/职业/学历...)都要加载,否则新用户第一次填表时全部选择项空白
-		 this.makeFromData(docId,hosId)
+		 this.makeFromData()
 	   },
 	  async getUserSelect() {
 		 const res = await request('user', 'get_case_select', { openId: currentOpenId() })
 	     if (res.code === 200) {
 			 let pickerArr = res.data;
-			 for(let key in pickerArr){
-				 this.pickerEchoShow(pickerArr[key],this.baseFormData[key],key)
-			 }
+			 // 只处理表单里实际用到的字段,其余字段(比如 career_type)后台可能还会返回,忽略即可,
+			 // 避免像之前 career_type 那样污染 pickerIndexObj 导致提交校验报错
+			 ['profession','marriage','type','hospital'].forEach((key)=>{
+				 if (pickerArr[key]) this.pickerEchoShow(pickerArr[key], this.baseFormData[key === 'hospital' ? 'hospital_id' : key], key)
+			 })
 			 this.selectData = Object.assign({}, this.selectData, pickerArr);
 			 this.getDoctor(this.baseFormData.hospital_id)
 	     }
@@ -441,7 +397,6 @@ export default {
 	     }
 	   },
 	  async submitForm() {
-		 this.baseFormData.days = this.baseFormData.days + this.unitSubmit;
 	     const res = await request('user', 'update_case_info', this.baseFormData)
 	     if (res.code === 200) {
 			uni.navigateTo({
@@ -497,6 +452,11 @@ export default {
 .example {
 	padding: 0 20rpx 140rpx;
 }
+.date-line {
+	font-size: 26rpx;
+	color: #999999;
+	margin: 10rpx 0 20rpx;
+}
 .picker-class-box {
 	color: #333;
 }

+ 1 - 0
src/uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue

@@ -1006,6 +1006,7 @@
 		}
 		.is-wrap {
 			display: flex;
+			flex-wrap: wrap;
 		}
 		.multiple-Input {
 			// margin-right: 30%;