更新 WEB登记 字段调整, H5 婚前检查登记

wenjuan
鹿和sa0ChunLuyu 1 year ago
parent 822dba5f50
commit ba32ba269a

@ -2,17 +2,17 @@
<html lang="zh">
<head>
<meta charset="UTF-8" />
<meta charset="UTF-8"/>
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<link type="image/x-icon" rel="shortcut icon" href="./favicon.png" />
<link rel="stylesheet" href="./assets/import/element-plus.css" />
<link rel="stylesheet" href="./assets/import/element.css" />
<link href="./assets/import/tailwind.min.css" rel="stylesheet" />
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"/>
<meta http-equiv="X-UA-Compatible" content="ie=edge"/>
<link type="image/x-icon" rel="shortcut icon" href="./favicon.png"/>
<link rel="stylesheet" href="./assets/import/element-plus.css"/>
<link rel="stylesheet" href="./assets/import/element.css"/>
<link href="./assets/import/tailwind.min.css" rel="stylesheet"/>
<script src="./assets/import/vue.js"></script>
<script src="./assets/import/element-plus.js"></script>
<link rel="stylesheet" href="./assets/import/icon/style.css" />
<link rel="stylesheet" href="./assets/import/icon/style.css"/>
<script src="./assets/import/axios.js"></script>
<title>体检登记</title>
<style>
@ -112,7 +112,7 @@
</head>
<body>
<div id="app">
<div id="app">
<el-config-provider :button="button_config">
<el-dialog v-model="combo_dialog_show" title="选择套餐" width="800">
<div>
@ -122,7 +122,7 @@
<el-table-column property="name" label="套餐名称"></el-table-column>
<el-table-column label="性别" width="60">
<template #default="scope">
{{ ['全部','男','女'][scope.row.sex] }}
{{ ['全部', '男', '女'][scope.row.sex] }}
</template>
</el-table-column>
<el-table-column property="pinyin" label="套餐简拼" width="120"></el-table-column>
@ -137,7 +137,8 @@
<el-form-item label="日期">
<el-date-picker v-model="plan_data.date" type="date" placeholder="请选择号源日期" format="YYYY-MM-DD"
value-format="YYYY-MM-DD"></el-date-picker>
</el-form-item></el-form>
</el-form-item>
</el-form>
<el-button @click="getPlanList()" type="primary">查看号源</el-button>
</div>
<div class="plan_show_wrapper">
@ -169,13 +170,13 @@
</el-select>
</el-form-item>
<el-form-item label="姓名">
<el-input v-model="input_data.name" placeholder="请输入姓名" />
<el-input v-model="input_data.name" placeholder="请输入姓名"/>
</el-form-item>
<el-form-item label="身份证号">
<el-input @change="idNumberUpdate" v-model="input_data.id_number" placeholder="请输入身份证号" />
<el-input @change="idNumberUpdate" v-model="input_data.id_number" placeholder="请输入身份证号"/>
</el-form-item>
<el-form-item label="手机号">
<el-input v-model="input_data.phone" placeholder="请输入手机号" />
<el-input v-model="input_data.phone" placeholder="请输入手机号"/>
</el-form-item>
<el-form-item label="性别">
<el-select v-model="input_data.gender" placeholder="请选择性别">
@ -185,8 +186,7 @@
</el-form-item>
<el-form-item label="婚否">
<el-select v-model="input_data.married" placeholder="请选择婚否">
<el-option label="是" value="1"></el-option>
<el-option label="否" value="2"></el-option>
<el-option v-for="(i,k) in married_array" :label="i.label" :value="i.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="VIP">
@ -200,7 +200,7 @@
value-format="YYYY-MM-DD"></el-date-picker>
</el-form-item>
<el-form-item label="登记人">
<el-input v-model="input_data.doctor" placeholder="请输入登记人" />
<el-input v-model="input_data.doctor" placeholder="请输入登记人"/>
</el-form-item>
</el-form>
</div>
@ -209,7 +209,9 @@
<div class="select_flex_wrapper">
<el-form label-width="40px" inline>
<el-form-item label="简拼">
<el-input v-model="search_input" placeholder="" /> </el-form-item></el-form>
<el-input v-model="search_input" placeholder=""/>
</el-form-item>
</el-form>
<el-button type="primary" @click="searchClick()">搜索</el-button>
</div>
<div class="select_flex_wrapper">
@ -218,7 +220,8 @@
<div class="combo_show_wrapper">
{{ !!combo_show ? combo_show.name : '无' }}
</div>
</el-form-item></el-form>
</el-form-item>
</el-form>
<el-button @click="combo_dialog_show = true" type="primary">选择套餐</el-button>
</div>
</div>
@ -232,7 +235,7 @@
<el-table-column property="group" label="科室" width="80"></el-table-column>
<el-table-column label="性别" width="60">
<template #default="scope">
{{ ['全部','男','女'][scope.row.sex] }}
{{ ['全部', '男', '女'][scope.row.sex] }}
</template>
</el-table-column>
<el-table-column property="desc" label="备注"></el-table-column>
@ -264,11 +267,11 @@
</div>
</div>
</el-config-provider>
</div>
</div>
</body>
<script>
const { createApp, onMounted, ref, nextTick, computed } = Vue;
const { ElLoading, ElMessage, ElMessageBox } = ElementPlus;
const {createApp, onMounted, ref, nextTick, computed} = Vue;
const {ElLoading, ElMessage, ElMessageBox} = ElementPlus;
</script>
<script src="./assets/mounting.js"></script>
<script>
@ -314,13 +317,29 @@
date: formatDatetime(new Date(), "YYYY-MM-DD"),
};
const plan_data = ref(JSON.parse(JSON.stringify(plan_data_default)))
const married_array = [{
value: '已婚',
label: '已婚'
}, {
value: '未婚',
label: '未婚'
}, {
value: '丧偶',
label: '丧偶'
}, {
value: '离婚',
label: '离婚'
}, {
value: '其他',
label: '其他'
}]
const input_data_default = {
hospital: "1",
name: "",
id_number: "",
phone: "",
gender: "1",
married: "2",
married: "未婚",
vip: "2",
doctor: "",
birthday: formatDatetime(new Date(), "YYYY-MM-DD"),
@ -650,7 +669,7 @@
combo_dialog_show.value = false
}
const comboRowClassName = ({ row }) => {
const comboRowClassName = ({row}) => {
if (select_data.value.combo === row.combo_id) {
return 'combo_active cursor-pointer'
} else {
@ -746,6 +765,7 @@
hospital: input_data.value.hospital,
combo_id: combo_id,
item_ids: item_ids,
appdoctor: input_data.value.doctor,
person: {
sex: input_data.value.gender,
birthday: input_data.value.birthday,
@ -785,6 +805,7 @@
idNumberUpdate,
tableRowClick,
planDialogShowClick,
married_array,
plan_list,
plan_data,
plan_dialog_show,

@ -213,11 +213,22 @@
}
},
{
"path" : "pages/main/ctime/ctime",
"style" :
"path": "pages/main/ctime/ctime",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
},
{
"navigationBarTitleText" : "",
"enablePullDownRefresh" : false
"path": "pages/premarital/readme/readme",
"style": {
"navigationBarTitleText": "婚前检查"
}
},
{
"path": "pages/premarital/form/form",
"style": {
"navigationBarTitleText": "婚前检查"
}
}

@ -0,0 +1,235 @@
<script setup>
/**
* name
* usersa0ChunLuyu
* date2024年9月11日 19:24:50
*/
import {
ref
} from 'vue'
import {
$api,
$response
} from '@/api'
import {
onShow
} from '@dcloudio/uni-app'
import {
useStore
} from '@/store'
const $store = useStore()
import TitleComponent from '../src/title.vue'
const mountedAction = () => {
}
const config_ref = ref(null)
const configRef = (e) => {
if (!config_ref.value) {
config_ref.value = e
mountedAction()
}
}
const number_type_array = [{
value: 1,
label: '身份证'
},
{
value: 2,
label: '军官证'
},
{
value: 3,
label: '港澳台'
},
]
const getEndDate = () => {
const date = new Date();
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
month = month > 9 ? month : '0' + month;
day = day > 9 ? day : '0' + day;
return `${year}-${month}-${day}`;
}
const input_data_default = {
'国籍': '中国',
'证件类型': 0,
'证件号': "",
'姓名': "",
'生日': getEndDate(),
'民族': "",
'现地址': "",
'详细地址': "",
'户籍地址': "",
'工作单位': "",
'文化程度': "",
'职业': "",
'出生地': "",
'配偶姓名': "",
'配偶证件类型': 0,
'配偶证件号': "",
'血缘关系': "无",
'邮政编码': "",
'手机号码': "",
}
const input_data = ref(JSON.parse(JSON.stringify(input_data_default)))
const bindPickerChange = (e, key) => {
input_data.value[key] = e.detail.value
}
const bindDateChange = (e, key) => {
input_data.value[key] = e.detail.value
}
const radioChange = (e, key) => {
input_data.value[key] = e.detail.value
}
const editDoneClick = () => {
let post_data = JSON.parse(JSON.stringify(input_data.value))
post_data['证件类型'] = number_type_array[input_data.value['证件类型']].value
post_data['配偶证件类型'] = number_type_array[input_data.value['配偶证件类型']].value
// for (let i in post_data) {
// if (!post_data[i]) {
// return uni.$lu.toast(`${i}`)
// }
// }
HunQianQuestionSubmit(post_data)
}
const HunQianQuestionSubmit = async (post_data) => {
const response = await $api('HunQianQuestionSubmit', {
person_id: $store.getUser()?.person_id,
content: post_data
})
$response(response, () => {
uni.navigateTo({
url: '/pages/main/combo/combo'
})
})
}
onShow(() => {
if (!!config_ref.value) {
mountedAction()
}
})
</script>
<template>
<view>
<view v-if="!!$store.config">
<view :ref="configRef"></view>
</view>
<view class="page_wrapper">
<TitleComponent title="信息登记"></TitleComponent>
<view class="form_wrapper">
<view v-for="(i,k) in input_data" :key="k" class="form_item_wrapper">
<view class="form_title_wrapper">{{ k }}</view>
<view class="form_input_wrapper">
<template v-if="['证件类型','配偶证件类型'].includes(k)">
<view class="select_wrapper">
<picker class="select_picker_wrapper" @change="(e)=>{bindPickerChange(e, k)}" :value="input_data[k]"
:range="number_type_array" range-key="label">
<view>{{ number_type_array[input_data[k]].label }}</view>
</picker>
<view class="select_icon_wrapper">
<uni-icons color="#808080" type="right" size="20"></uni-icons>
</view>
</view>
</template>
<template v-else-if="k === ''">
<picker mode="date" :value="input_data[k]" :end="getEndDate" @change="(e)=>{bindDateChange(e, k)}">
<view>{{ input_data[k] }}</view>
</picker>
</template>
<template v-else-if="k === ''">
<view>
<radio-group class="radio_wrapper" @change="(e)=>{radioChange(e, k)}">
<view class="radio_item_wrapper">
<radio style="transform:scale(0.7)" value="无" :checked="input_data[k] === '无'" />
</view>
<view class="radio_item_wrapper">
<radio style="transform:scale(0.7)" value="有" :checked="input_data[k] === '有'" />
</view>
</radio-group>
</view>
</template>
<template v-else>
<input v-model="input_data[k]" :placeholder="`请输入${k}`" />
</template>
</view>
</view>
</view>
<view @click="editDoneClick()" class="button_wrapper">提交</view>
<view style="height: 100rpx;"></view>
</view>
</view>
</template>
<style scoped>
.radio_item_wrapper {
margin-right: 30rpx;
display: flex;
align-items: center;
}
.radio_wrapper {
display: flex;
align-items: center;
}
.select_icon_wrapper {
position: absolute;
top: 50%;
right: 20rpx;
transform: translateY(-50%);
}
.select_picker_wrapper {
position: relative;
z-index: 9;
width: 100%;
}
.select_wrapper {
position: relative;
}
.form_wrapper {
margin-top: 20rpx;
}
.form_input_wrapper {
width: calc(100% - 140rpx - 20px);
margin-left: 20px;
}
.form_title_wrapper {
width: 140rpx;
}
.form_item_wrapper {
display: flex;
align-items: center;
padding: 20rpx 0;
font-size: 26rpx;
border-bottom: 1rpx solid #cccccc80;
}
.button_wrapper {
background: #279EA3;
color: #ffffff;
font-size: 28rpx;
text-align: center;
line-height: 90rpx;
height: 90rpx;
width: 600rpx;
border-radius: 10rpx;
margin: 50rpx auto 0;
}
.page_wrapper {
padding-top: 20rpx;
width: calc(100% - 50rpx);
margin: 0 auto;
}
</style>

@ -0,0 +1,96 @@
<script setup>
/**
* name
* usersa0ChunLuyu
* date2024年9月11日 19:24:50
*/
import {
ref
} from 'vue'
import {
$api,
$response
} from '@/api'
import {
onShow
} from '@dcloudio/uni-app'
import {
useStore
} from '@/store'
const $store = useStore()
import TitleComponent from '../src/title.vue'
const tip_content = ref('')
const getTipContent = async () => {
uni.showLoading();
const response = await $api("GetReadme", {
type: '2'
});
uni.hideLoading();
$response(response, () => {
tip_content.value = response.data.content;
});
};
const mountedAction = () => {
getTipContent()
}
const config_ref = ref(null)
const configRef = (e) => {
if (!config_ref.value) {
config_ref.value = e
mountedAction()
}
}
const toFormClick = () => {
uni.navigateTo({
url: '/pages/premarital/form/form'
})
}
onShow(() => {
if (!!config_ref.value) {
mountedAction()
}
})
</script>
<template>
<view>
<view v-if="!!$store.config">
<view :ref="configRef"></view>
</view>
<view class="page_wrapper">
<TitleComponent title="预约须知"></TitleComponent>
<view class="readme_wrapper">
<view v-html="tip_content"></view>
</view>
<view @click="toFormClick()" class="button_wrapper">立即预约</view>
<view style="height: 100rpx;"></view>
</view>
</view>
</template>
<style scoped>
.button_wrapper {
background: #279EA3;
color: #ffffff;
font-size: 28rpx;
text-align: center;
line-height: 90rpx;
height: 90rpx;
width: 600rpx;
border-radius: 10rpx;
margin: 50rpx auto 0;
}
.page_wrapper {
padding-top: 20rpx;
width: calc(100% - 50rpx);
margin: 0 auto;
}
.readme_wrapper {
margin-top: 20rpx;
}
</style>

@ -0,0 +1,40 @@
<script setup>
/**
* name
* usersa0ChunLuyu
* date2024年9月11日 19:24:50
*/
const $props = defineProps({
title: {
type: String,
default: ""
},
});
</script>
<template>
<view>
<view class="item_title_wrapper">
<view class="item_title_line_wrapper"></view>
<view class="item_title_text_wrapper">{{ $props.title }}</view>
</view>
</view>
</template>
<style scoped>
.item_title_wrapper {
display: flex;
align-items: center;
}
.item_title_line_wrapper {
width: 2rpx;
height: 40rpx;
background: #4F8E91;
}
.item_title_text_wrapper {
font-size: 30rpx;
line-height: 30rpx;
margin-left: 10rpx;
font-weight: bold;
}
</style>
Loading…
Cancel
Save