车管所-体检预约-前端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

467 lines
13 KiB

<template>
<basic-container>
<avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" v-model="form"
:permission="permissionList" :before-open="beforeOpen" :before-close="beforeClose" @row-del="rowDel"
@row-update="rowUpdate" @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
@selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
@refresh-change="refreshChange" @on-load="onLoad" @tree-load="treeLoad">
<template slot-scope="{row}" slot="status">
<el-tag :type="row.status == 1 ? 'success' : row.status == 2 ? 'warning' : row.status == 3 ? 'danger' : 'info'">{{ row.status == 1 ? '已报道' : row.status == 2 ? '未报道' : row.status == 3 ? '已拉黑' : '已取消' }}</el-tag>
</template>
<template slot-scope="{row}" slot="menu">
<el-button @click="handleRegister" :disabled="row.status == 1 ? true : row.status == 4 ? true : false">{{row.status == 3 ? '取消拉黑' : '预约报道'}}</el-button>
</template>
</avue-crud>
<el-drawer
:visible.sync="isRegister"
:append-to-body="true"
:direction="direction"
:with-header="false"
class="my-info-dialog"
custom-class="register_box">
<div class="title_box">
<div class="title_txt">
<div class="txt">预约人报道信息</div>
<div class="img_box" @click="closeDraw">
<img src="~@/assets/image/close.png" alt="">
</div>
</div>
<div class="sub_txt">通过身份证、医保卡刷卡识别报道</div>
</div>
<div class="tip_box">
<img v-show="regData.status == 1" src="~@/assets/image/succ.png" alt="">
<img v-show="regData.status == 2" src="~@/assets/image/fail.png" alt="">
<img v-show="regData.status == 3" src="~@/assets/image/warn.png" alt="">
<div class="tip_txt" :class="regData.status == 2 ? 'fail_txt' : regData.status == 3 ? 'warn_txt' : ''">{{regData.status == 1 ? '报道成功' : '报道失败'}}</div>
</div>
<div class="tips_txt" v-show="regData.status == 2">无此人员预约检测项目,请预约后按时间报道</div>
<div class="tips_txt tips_warn" v-show="regData.status == 3">报到时间与预约时间不符,请按预约时间报道</div>
<div class="account_mess">
<div class="mess_tit">账号信息</div>
<div class="mess_box">
<div class="left_box" :class="regData.status == 2 ? 'fail_box' : regData.status == 3 ? 'warn_box' : ''">
<div class="acc_text">姓名</div>
<div class="acc_txt">{{regData.name}}</div>
</div>
<div class="right_box" :class="regData.status == 2 ? 'fail_right' : regData.status == 3 ? 'warn_right' : ''">
<div class="acc_box">
<div class="acc_text">身份证号</div>
<div class="acc_txt">{{regData.cardId}}</div>
</div>
<div class="acc_box">
<div class="acc_text">联系方式</div>
<div class="acc_txt">{{regData.phone}}</div>
</div>
<div class="img_box">
<img v-show="regData.status == 1" src="~@/assets/image/succ_img.png" alt="">
<img v-show="regData.status == 2" src="~@/assets/image/fail_img.png" alt="">
<img v-show="regData.status == 3" src="~@/assets/image/warn_img.png" alt="">
</div>
</div>
</div>
</div>
<div class="account_mess">
<div class="mess_tit">体检信息</div>
<div class="mess_box reg_box">
<div class="left_box">
<div class="acc_text">体检项目</div>
<div class="acc_txt">{{regData.project}}</div>
</div>
<div class="right_box">
<div class="acc_box">
<div class="acc_text">预约时间</div>
<div class="acc_txt" :class="regData.status == 3 ? 'acc_warn' : ''">{{regData.time}}</div>
</div>
</div>
</div>
</div>
<div class="btn">
签到并打印
</div>
</el-drawer>
</basic-container>
</template>
<script>
import {
getLazyList,
remove,
update,
add,
getDept,
getDeptTree
} from "@/api/system/dept";
import { mapGetters } from "vuex";
import website from '@/config/website';
export default {
data() {
return {
form: {},
selectionList: [],
query: {},
loading: true,
parentId: 0,
direction:'rtl',
page: {
pageSize: 10,
currentPage: 1,
total: 0,
},
isRegister:false,
option: {
height: 'auto',
calcHeight: 30,
tip: false,
searchShow: true,
searchMenuSpan: 6,
border: true,
index: true,
viewBtn: false,
viewBtnIcon:'none',
editBtn:false,
delBtn:false,
addBtn:false,
selection: true,
saveBtn:false,
updateBtn:false,
cancelBtn:false,
dialogType: 'drawer',
border:false,stripe:true,
dialogClickModal: false,
column: [
{
label: "体检人姓名",
prop: "name",
},
{
label: "身份证号码",
prop: "releaseCard",
searchLabelWidth:100,
search:true
},
{
label: "联系方式",
prop: "phone",
},
{
label: "预约时间",
prop: "releaseTime",
type: "date",
format: "yyyy-MM-dd",
valueFormat: "yyyy-MM-dd",
search: true,
searchValue:'2022-02-09',
searchClearable:false
},
{
label: "预约项目",
prop: "releaseProject",
type: "select",
hide: true,
dicData:[
{
label:'全部',
value:0
},
{
label:'视力',
value:1
},
{
label:'听力',
value:2
},
{
label:'四肢',
value:3
}
],
search: true,
viewDisplay:false,
searchValue:0
},
{
label:'预约项目',
prop:"releasePro",
},
{
label: "状态",
prop: "status",
slot: true,
viewDisplay:false,
},
]
},
data: [],
regData:{
status:3,
name:'/',
cardId:'/',
phone:'/',
project:'/',
time:'/'
}
};
},
computed: {
},
created() {
},
methods: {
handleRegister(){
this.isRegister = true
},
beforeOpen(done, type) {
// if (["add", "edit"].includes(type)) {
// this.initData();
// }
// if (["edit", "view"].includes(type)) {
// getDept(this.form.id).then(res => {
// this.form = res.data.data;
// });
// }
done();
},
beforeClose(done) {
// this.parentId = "";
// const column = this.findObject(this.option.column, "parentId");
// // column.value = "";
// column.addDisabled = false;
done();
},
closeDraw(){
this.isRegister = false
},
currentChange(currentPage) {
this.page.currentPage = currentPage;
},
sizeChange(pageSize) {
this.page.pageSize = pageSize;
},
refreshChange() {
this.onLoad(this.page, this.query);
},
onLoad(page, params = {}) {
this.loading = true;
// getLazyList(this.parentId, Object.assign(params, this.query)).then(res => {
// this.data = res.data.data;
//
// this.selectionClear();
// });
this.data = [
{name:'张三',releaseCard:321236195812020314,phone:13254651235,releaseTime:'2023-02-07',releasePro:'视力 听力',status:1},
{name:'李四',releaseCard:321236195812020313,phone:13254651235,releaseTime:'2023-02-07',releasePro:'视力 听力',status:2},
{name:'王五',releaseCard:321236195812012314,phone:13254651235,releaseTime:'2023-02-07',releasePro:'视力 听力',status:3},
{name:'刘敏',releaseCard:321236195812012314,phone:13254651235,releaseTime:'2023-02-07',releasePro:'视力 听力',status:4},
]
this.loading = false;
this.page.total = 4;
},
}
};
</script>
<style lang="scss" scoped>
</style>
<style lang="scss">
.el-drawer__wrapper{
.register_box{
width: 45% !important;
padding: 0 40px;
.title_box{
// padding: 0 40px;
margin-top: 40px;
.title_txt{
display: flex;
height: 30px;
align-items: center;
justify-content: space-between;
.txt{
font-weight: bold;
color: #333333;
line-height: 16px;
font-size: 20px;
}
.img_box{
img{
width: 30px;
height: 30px;
}
}
}
.sub_txt{
font-size: 14px;
font-family: Microsoft YaHei-Regular, Microsoft YaHei;
font-weight: 400;
color: #999999;
line-height: 16px;
}
}
.tip_box{
display: flex;
align-items: center;
justify-content: center;
margin:60px 0 20px 0;
.img{
width: 30px;
height: 30px;
}
.tip_txt{
font-size: 24px;
font-family: Microsoft YaHei-Bold, Microsoft YaHei;
font-weight: bold;
color: #00B578;
margin-left: 10px;
}
.fail_txt{
color: #F93A4A;
}
.warn_txt{
color: #FF6010;
}
}
.tips_txt{
display: flex;
align-items: center;
justify-content: center;
font-size: 14px;
font-family: Microsoft YaHei-Regular, Microsoft YaHei;
font-weight: 400;
color: #F93A4A;
}
.tips_warn{
color: #FF6010;
}
.fail_tip{
color: #FF6010;
}
.account_mess{
.mess_tit{
font-size: 16px;
font-family: Microsoft YaHei-Bold, Microsoft YaHei;
font-weight: bold;
color: #333333;
margin:40px 0 20px 0;
}
.mess_box{
width: 100%;
height: 123px;
background: #F5F6FA;
border-radius: 8px;
display: flex;
justify-content: space-between;
align-items: center;
.left_box{
width: 25%;
margin-left: 30px;
.acc_text{
font-size: 14px;
font-family: Microsoft YaHei-Regular, Microsoft YaHei;
font-weight: 400;
color: #999999;
margin-bottom:14px;
}
.acc_txt{
font-size: 16px;
font-family: Microsoft YaHei-Bold, Microsoft YaHei;
font-weight: bold;
color: #00B578;
}
}
.fail_box{
.acc_txt{
color: #333333;
}
}
.warn_box{
.acc_txt{
color: #333333;
}
}
.right_box{
display: flex;
width: 75%;
align-items: center;
justify-content: space-between;
.acc_box{
.acc_text{
font-size: 14px;
font-family: Microsoft YaHei-Regular, Microsoft YaHei;
font-weight: 400;
color: #999999;
margin-bottom:14px;
}
.acc_txt{
font-size: 16px;
font-family: Microsoft YaHei-Bold, Microsoft YaHei;
font-weight: bold;
color: #00B578;
}
}
}
.fail_right{
.acc_box{
.acc_txt{
color: #333333;
}
}
}
.warn_right{
.acc_box{
.acc_txt{
color: #333333;
}
}
}
}
.reg_box{
justify-content: start;
.left_box{
.acc_txt{
color: #333333;
}
}
.right_box{
.acc_box{
.acc_txt{
color: #333333;
}
.acc_warn{
color: #FF6010;
}
}
}
}
}
.btn{
width: 151px;
height: 50px;
background: #1677FF;
border-radius: 2px 2px 2px 2px;
margin: 0 auto;
display: flex;
align-items: center;
justify-content: center;
font-size: 16px;
font-family: Microsoft YaHei-Regular, Microsoft YaHei;
font-weight: 400;
color: #FFFFFF;
margin-top: 50px;
}
}
}
</style>