Browse Source

Merge branch 'dev-fangyi' into dev

shibei_master
jiangyy 4 years ago
parent
commit
5c9f9e8a76
  1. 8
      src/assets/scss/modules/management/epidemic.scss
  2. 32
      src/views/modules/base/epidemic/natInfo/natForm.vue
  3. 37
      src/views/modules/base/epidemic/veroFocus/veroFocusAdd.vue
  4. 109
      src/views/modules/base/epidemic/veroFocus/veroFocusEdit.vue
  5. 22
      src/views/modules/base/epidemic/veroFocus/veroFocusList.vue
  6. 382
      src/views/modules/base/epidemic/veroFocus/vfNoticeList.vue
  7. 480
      src/views/modules/base/epidemic/veroFocus/vfVisiteList.vue

8
src/assets/scss/modules/management/epidemic.scss

@ -101,3 +101,11 @@
.div-mult-table { .div-mult-table {
padding: 0 20px; padding: 0 20px;
} }
.div_dialog_table {
padding: 10px;
.table {
margin-top: 20px;
}
}

32
src/views/modules/base/epidemic/natInfo/natForm.vue

@ -386,23 +386,23 @@ export default {
}, 5000) }, 5000)
const regPhone = /^1(3|4|5|6|7|8|9)\d{9}$/; // const regPhone = /^1(3|4|5|6|7|8|9)\d{9}$/; //
// if (regPhone.test(this.formData.mobile) === false) { if (regPhone.test(this.formData.mobile) === false) {
// this.btnDisable = false this.btnDisable = false
// this.$message({ this.$message({
// type: 'warning', type: 'warning',
// message: '' message: '请输入正确的手机号码'
// }) })
// return false; return false;
// } }
const regCard = /(^\d{15}$)|(^\d{17}(\d|X)$)/; //1518151817X const regCard = /(^\d{15}$)|(^\d{17}(\d|X)$)/; //1518151817X
// if (regCard.test(this.formData.idCard) === false) { if (regCard.test(this.formData.idCard) === false) {
// this.btnDisable = false this.btnDisable = false
// this.$message({ this.$message({
// type: 'warning', type: 'warning',
// message: '' message: '请输入正确的身份证号码'
// }) })
// return false; return false;
// } }
let url = '' let url = ''
if (this.formType === 'add') { if (this.formType === 'add') {

37
src/views/modules/base/epidemic/veroFocus/veroFocusAdd.vue

@ -506,14 +506,23 @@ export default {
list.push(this.formData1) list.push(this.formData1)
const regPhone = /^1(3|4|5|6|7|8|9)\d{9}$/; // const regPhone = /^1(3|4|5|6|7|8|9)\d{9}$/; //
// if (regPhone.test(this.formData.mobile) === false) { if (regPhone.test(this.formData1.mobile) === false) {
// this.btnDisable = false this.btnDisable = false
// this.$message({ this.$message({
// type: 'warning', type: 'warning',
// message: '' message: '请输入正确的手机号码'
// }) })
// return false; return false;
// } }
const regCard = /(^\d{15}$)|(^\d{17}(\d|X)$)/; //1518151817X
if (regCard.test(this.formData1.idCard) === false) {
this.btnDisable = false
this.$message({
type: 'warning',
message: '请输入正确的身份证号码'
})
return false;
}
} else { } else {
if (this.selectionAll.length === 0) { if (this.selectionAll.length === 0) {
this.$message.info('请选择批量添加的人员') this.$message.info('请选择批量添加的人员')
@ -534,17 +543,10 @@ export default {
} }
console.log(list) console.log(list)
return false
let url = '' let url = '/epmetuser/icEpidemicSpecialAttention/vaccination-add'
url = '/epmetuser/icEpidemicSpecialAttention/vaccination-add'
// url = "http://yapi.elinkservice.cn/mock/245/gov/project/memoConcern/save" // url = "http://yapi.elinkservice.cn/mock/245/gov/project/memoConcern/save"
this.formData.id = ''
const { data, code, msg } = await requestPost(url, this.formData) const { data, code, msg } = await requestPost(url, this.formData)
@ -556,8 +558,7 @@ export default {
this.resetData() this.resetData()
this.$emit('dialogOk') this.$emit('dialogOk')
this.btnDisable = false this.btnDisable = false
this.$store.dispatch('setTipsList')
this.$store.dispatch('setTipsTime')
} else { } else {
this.btnDisable = false this.btnDisable = false
this.$message.error(msg) this.$message.error(msg)

109
src/views/modules/base/epidemic/veroFocus/veroFocusEdit.vue

@ -5,7 +5,6 @@
<el-form ref="ref_form1" <el-form ref="ref_form1"
:inline="true" :inline="true"
:model="formData" :model="formData"
:rules="dataRule"
:disabled="formType==='detail'" :disabled="formType==='detail'"
class="form"> class="form">
@ -13,11 +12,13 @@
prop="name" prop="name"
label-width="150px" label-width="150px"
style="display: block"> style="display: block">
<el-input class="item_width_2" <span>{{formData.name}}</span>
<!-- <el-input class="item_width_2"
placeholder="请输入姓名" placeholder="请输入姓名"
clearable clearable
v-model="formData.name"> v-model="formData.name">
</el-input> </el-input> -->
</el-form-item> </el-form-item>
@ -25,21 +26,23 @@
prop="mobile" prop="mobile"
label-width="150px" label-width="150px"
style="display: block"> style="display: block">
<el-input class="item_width_2" <span>{{formData.mobile}}</span>
<!-- <el-input class="item_width_2"
placeholder="请输入手机号" placeholder="请输入手机号"
clearable clearable
v-model="formData.mobile"> v-model="formData.mobile">
</el-input> </el-input> -->
</el-form-item> </el-form-item>
<el-form-item label="身份证号" <el-form-item label="身份证号"
prop="idCard" prop="idCard"
label-width="150px" label-width="150px"
style="display: block"> style="display: block">
<el-input class="item_width_2" <span>{{formData.idCard}}</span>
<!-- <el-input class="item_width_2"
placeholder="请输入身份证号" placeholder="请输入身份证号"
clearable clearable
v-model="formData.idCard"> v-model="formData.idCard">
</el-input> </el-input> -->
</el-form-item> </el-form-item>
<el-form-item label="备注" <el-form-item label="备注"
prop="remark" prop="remark"
@ -47,6 +50,7 @@
style="display: block"> style="display: block">
<el-input class="item_width_1" <el-input class="item_width_1"
type="textarea" type="textarea"
:disabled="formType==='detail'"
maxlength="500" maxlength="500"
show-word-limit show-word-limit
:autosize="{ minRows: 2, maxRows: 5 }" :autosize="{ minRows: 2, maxRows: 5 }"
@ -54,34 +58,34 @@
placeholder="请输入通知备注" placeholder="请输入通知备注"
v-model="formData.remark"></el-input> v-model="formData.remark"></el-input>
</el-form-item> </el-form-item>
<div v-if=" formType!=='detail'">
<el-form-item label="通知渠道" <el-form-item label="通知渠道"
prop="channel" prop="channel"
label-width="150px" label-width="150px"
style="display: block"> style="display: block">
<el-checkbox-group v-model="formData.channel"> <el-checkbox-group v-model="formData.channel">
<el-checkbox key="0" <el-checkbox key="0"
label="0">小程序通知</el-checkbox> label="0">小程序通知</el-checkbox>
<el-checkbox key="1" <el-checkbox key="1"
label="1">短信通知</el-checkbox> label="1">短信通知</el-checkbox>
</el-checkbox-group> </el-checkbox-group>
</el-form-item> </el-form-item>
<el-form-item label="通知内容" <el-form-item label="通知内容"
prop="content" prop="content"
label-width="150px" label-width="150px"
style="display: block"> style="display: block">
<el-input class="item_width_1" <el-input class="item_width_1"
type="textarea" type="textarea"
maxlength="1000" maxlength="1000"
show-word-limit show-word-limit
:autosize="{ minRows: 4, maxRows: 10 }" :autosize="{ minRows: 4, maxRows: 10 }"
clearable clearable
placeholder="请输入通知内容" placeholder="请输入通知内容"
v-model="formData.content"></el-input> v-model="formData.content"></el-input>
</el-form-item> </el-form-item>
</div>
</el-form> </el-form>
</div> </div>
@ -139,8 +143,10 @@ export default {
async initForm (formType, row) { async initForm (formType, row) {
this.formType = formType this.formType = formType
this.$refs['ref_form1'].resetFields(); this.$refs['ref_form1'].resetFields();
row.channel = []
row.content = ''
this.formData = JSON.parse(JSON.stringify(row)) this.formData = JSON.parse(JSON.stringify(row))
}, },
async handleComfirm () { async handleComfirm () {
@ -155,22 +161,9 @@ export default {
}, },
async addVero () { async addVero () {
const regPhone = /^1(3|4|5|6|7|8|9)\d{9}$/; // let url = '/epmetuser/icEpidemicSpecialAttention/vaccination-update'
// if (regPhone.test(this.formData.mobile) === false) {
// this.btnDisable = false
// this.$message({
// type: 'warning',
// message: ''
// })
// return false;
// }
let url = ''
// url = '/epmetuser/icEpidemicSpecialAttention/vaccination-update'
url = "http://yapi.elinkservice.cn/mock/245/epmetuser/icEpidemicSpecialAttention/vaccination-update"
// url = "http://yapi.elinkservice.cn/mock/245/epmetuser/icEpidemicSpecialAttention/vaccination-update"
const { data, code, msg } = await requestPost(url, this.formData) const { data, code, msg } = await requestPost(url, this.formData)
@ -258,19 +251,9 @@ export default {
mobile: [ mobile: [
{ required: true, message: '手机号不能为空', trigger: 'blur' }, { required: true, message: '手机号不能为空', trigger: 'blur' },
], ],
checkTime: [
{ required: true, message: '检测时间不能为空', trigger: 'blur' },
],
address: [
{ required: false },
],
result: [
{ required: true },
],
address: [
{ required: false },
],
channel: [ channel: [
{ required: false }, { required: false },
], ],

22
src/views/modules/base/epidemic/veroFocus/veroFocusList.vue

@ -257,29 +257,29 @@
<vf-send-notice ref="ref_sendnotice" <vf-send-notice ref="ref_sendnotice"
@dialogCancle="diaClose"></vf-send-notice> @dialogCancle="diaClose"></vf-send-notice>
</el-dialog> </el-dialog>
<!-- 随访记录弹出框 --> <!-- 通知记录弹出框 -->
<el-dialog :visible.sync="noticeListFormShow" <el-dialog :visible.sync="noticeListFormShow"
:close-on-click-modal="false" :close-on-click-modal="false"
:close-on-press-escape="false" :close-on-press-escape="false"
title="随访记录" title="通知记录"
width="1050px" width="1050px"
top="5vh" top="5vh"
class="dialog-h" class="dialog-h"
@closed="diaClose"> @closed="diaClose">
<vf-notice-list ref="ref_visitelist" <vf-notice-list ref="ref_noticelist"
@dialogCancle="diaClose"></vf-notice-list> @dialogCancle="diaClose"></vf-notice-list>
</el-dialog> </el-dialog>
<!-- 通知记录弹出框 --> <!-- 随访记录弹出框 -->
<el-dialog :visible.sync="visiteListFormShow" <el-dialog :visible.sync="visiteListFormShow"
:close-on-click-modal="false" :close-on-click-modal="false"
:close-on-press-escape="false" :close-on-press-escape="false"
title="通知记录" title="随访记录"
width="1050px" width="1050px"
top="5vh" top="5vh"
class="dialog-h" class="dialog-h"
@closed="diaClose"> @closed="diaClose">
<vf-notice-list ref="ref_noticelist" <vf-visite-list ref="ref_visitelist"
@dialogCancle="diaClose"></vf-notice-list> @dialogCancle="diaClose"></vf-visite-list>
</el-dialog> </el-dialog>
</div> </div>
@ -504,7 +504,7 @@ export default {
handleNoticeList (row) { handleNoticeList (row) {
this.noticeListFormShow = true this.noticeListFormShow = true
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.ref_visitelist.initForm(row) this.$refs.ref_noticelist.initTable(row.idCard)
}) })
}, },
@ -512,7 +512,8 @@ export default {
this.visiteListFormShow = true this.visiteListFormShow = true
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.ref_noticelist.initForm(row) this.$refs.ref_visitelist.initTable(row.idCard)
}) })
}, },
@ -651,8 +652,7 @@ export default {
}, },
handleExportModule () { handleExportModule () {
let title = '' let title = '疫苗接种关注名单'
title = '房屋模板'
const url = "/gov/org/house/exporttemplate" const url = "/gov/org/house/exporttemplate"
let params = {} let params = {}

382
src/views/modules/base/epidemic/veroFocus/vfNoticeList.vue

@ -1,6 +1,6 @@
<template> <template>
<div class="dialog-h-content scroll-h "> <div class="dialog-h-content scroll-h ">
<div class="div_table"> <div class="div_dialog_table">
<el-table class="table" <el-table class="table"
:data="tableData" :data="tableData"
@ -16,120 +16,42 @@
width="50"> width="50">
</el-table-column> </el-table-column>
<el-table-column prop="reviewTime" <el-table-column prop="createdTime"
header-align="center" header-align="center"
align="center" align="center"
label="复查时间" label="通知时间"
width="250"> width="150">
<template slot-scope="scope">
<div v-if="scope.row.isEdit">
<el-date-picker v-model="scope.row.reviewTime"
value-format="yyyy-MM-dd"
type="date"
placeholder="选择日期">
</el-date-picker>
</div>
<span v-else>{{scope.row.reviewTime}}</span>
</template>
</el-table-column> </el-table-column>
<el-table-column prop="ninePlaceName" <el-table-column prop="channel"
header-align="center" header-align="center"
align="center" align="center"
label="分队名称" label="渠道"
width="280"> width="180">
<template slot-scope="scope">
<div v-if="scope.row.isEdit">
<el-select class="item_width_1"
v-model="scope.row.placePatrolTeamId"
placeholder="请选择"
clearable>
<el-option v-for="(item,index) in teamsList"
@click.native="hancleChangeTeam(scope.row,index,scope.$index)"
:key="item.teamId"
:label="item.teamName"
:value="item.teamId">
</el-option>
</el-select>
</div>
<span v-else>{{scope.row.placePatrolTeamName}}</span>
</template>
</el-table-column> </el-table-column>
<el-table-column prop="inspectorsNames" <el-table-column prop="content"
header-align="center" header-align="center"
align="center" align="center"
label="检查人员" label="内容"
min-width="380"> min-width="380">
<template slot-scope="scope">
<div v-if="scope.row.isEdit">
<el-checkbox-group style="display:flex;flex-wrap:wrap"
v-model="scope.row.inspectorArray">
<el-checkbox v-for="item in scope.row.inspectorsList"
:key="item.id"
:label="item.id">{{item.name}}</el-checkbox>
</el-checkbox-group>
</div>
<span v-else>{{scope.row.inspectorsNames}}</span>
</template>
</el-table-column>
<el-table-column prop="reviewResult"
header-align="center"
align="center"
label="复查结论"
width="120">
<template slot-scope="scope">
<div v-if="scope.row.isEdit">
<el-select class="item_width_2"
v-model="scope.row.reviewResult"
placeholder="全部"
clearable>
<el-option v-for="item in resultList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
<span v-else>{{scope.row.reviewResult==='0'?'合格':'不合格'}}</span>
</template>
</el-table-column> </el-table-column>
<el-table-column label="操作"
fixed="right"
width="180"
header-align="center"
align="center"
class="operate">
<template slot-scope="scope">
<el-button v-if="scope.row.isEdit"
type="text"
style="color:#00A7A9;text-decoration: underline;"
size="small"
@click="handleComfirm(scope.row,scope.$index)">保存</el-button>
<el-button v-if="!scope.row.isEdit"
type="text"
style="color:#1C6AFD;text-decoration: underline;"
size="small"
@click="handleEdit(scope.row,scope.$index)">修改</el-button>
<el-button type="text"
style="color:#D51010;text-decoration: underline;"
size="small"
@click="handleDelete(scope.row,scope.$index)">删除</el-button>
</template>
</el-table-column>
</el-table> </el-table>
<div>
<el-pagination @size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="pageNo"
:page-sizes="[20, 50, 100, 200]"
:page-size="pageSize"
layout="sizes, prev, pager, next, total"
:total="total">
</el-pagination>
</div>
</div> </div>
<!-- <div class="div_btn">
<el-button @click="handleCancle"> </el-button>
</div> -->
</div> </div>
</template> </template>
@ -143,9 +65,11 @@ export default {
data () { data () {
return { return {
tableLoading: false, tableLoading: false,
placePatrolRecordId: '', total: 0,
idCard: '',
tableData: [], tableData: [],
pageSize: 20,
pageNo: 1,
} }
}, },
@ -156,231 +80,56 @@ export default {
methods: { methods: {
async initTable (placePatrolRecordId) { async initTable (idCard) {
this.placePatrolRecordId = placePatrolRecordId this.idCard = idCard
await this.loadTeams()
await this.loadTable() await this.loadTable()
}, },
//
async loadTeams () {
const url = '/gov/org/placepatrolteam/getlist'
// const url = 'http://yapi.elinkservice.cn/mock/245/gov/org/placepatrolteam/getlist'
let params = {
isPage: false
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.teamsList = data.list
} else {
this.$message.error(msg)
}
},
//
async hancleChangeTeam (row, index, tableIndex) {
this.tableData[tableIndex].inspectorArray = [...[]]
let teamId = this.teamsList[index].teamId
await this.loadInspectors(teamId, tableIndex)
},
//
async loadInspectors (teamId, tableIndex) {
const url = '/gov/org/placepatrolteamstaff/getlist'
// const url = 'http://yapi.elinkservice.cn/mock/245/gov/org/placepatrolteamstaff/getlist'
let params = {
teamId: teamId
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
// let obj = this.tableData[tableIndex]
this.tableData[tableIndex].inspectorsList = [...data]
// this.tableData[tableIndex]=
// obj.inspectorsList = data
// this.$set(this.tableData, tableIndex, obj)
console.log(this.tableData)
} else {
this.$message.error(msg)
}
},
//form //form
async loadTable () { async loadTable () {
this.tableLoading = true this.tableLoading = true
const url = '/gov/org/placepatrolreviewrecord/getlist' // const url = "/epmetuser/icNotice/page"
// const url = 'http://yapi.elinkservice.cn/mock/245/gov/org/placepatrolreviewrecord/getlist' const url = "http://yapi.elinkservice.cn/mock/245/epmetuser/icNotice/page"
let params = { let params = {
placePatrolRecordId: this.placePatrolRecordId idCard: this.idCard,
pageNo: this.pageNo,
pageSize: this.pageSize,
origin: '1'
} }
const { data, code, msg } = await requestPost(url, params) const { data, code, msg } = await requestPost(url, params)
this.tableLoading = false this.tableLoading = false
if (code === 0) { if (code === 0) {
this.total = data.total
this.tableData = data.list
if (data.list && data.list.length > 0) { // data.list.forEach(item => {
data.list.forEach(item => { // item.isEdit = false
item.isEdit = false // item.isNew = false
item.isNew = false // let arrayInspectors = item.inspectors.split(',')
let arrayInspectors = item.inspectors.split(',') // item.inspectorArray = [...arrayInspectors]
item.inspectorArray = [...arrayInspectors]
let arrayReviewTime = item.reviewTime.split(' ')
item.reviewTime = arrayReviewTime[0]
});
this.tableData = [...data.list] // let arrayReviewTime = item.reviewTime.split(' ')
} else { // item.reviewTime = arrayReviewTime[0]
this.tableData = [] // });
}
} else {
this.$message.error(msg)
}
},
handleAdd () {
let obj = {
isNew: true,//
isEdit: true,//
placePatrolRecordId: this.placePatrolRecordId,
reviewTime: '',
placePatrolTeamId: '',
inspectors: '',
inspectorArray: [],
inspectorsList: [],
reviewResult: '',
}
this.tableData.push(obj)
},
async handleEdit (row, tableIndex) {
let teamId = row.placePatrolTeamId
await this.loadInspectors(teamId, tableIndex)
let rowData = JSON.parse(JSON.stringify(row))
rowData.isEdit = true
rowData.isNew = false
rowData.inspectorArray = rowData.inspectors.split(',')
console.log(rowData)
this.$set(this.tableData, tableIndex, rowData)
},
async handleComfirm (row, tableIndex) {
let valiMsg = this.validata(row)
if (valiMsg) {
this.$message({
type: 'warning',
message: valiMsg
})
return false
}
this.addReview(row, tableIndex)
},
async addReview (row, tableIndex) {
let url = "/gov/org/placepatrolreviewrecord/add"
if (row.placePatrolReviewRecordId) {
url = "/gov/org/placepatrolreviewrecord/edit"
}
let params = JSON.parse(JSON.stringify(row))
params.inspectors = params.inspectorArray.join(',')
params.reviewTime = params.reviewTime + ' 00:00:00'
const { data, code, msg } = await requestPost(url, params)
if (code === 0) { // this.tableData = [...data.list]
let array = data.reviewTime.split(' ')
data.reviewTime = array[0]
data.isEdit = false
data.isNew = false
this.$set(this.tableData, tableIndex, data)
} else { } else {
this.$message.error(msg) this.$message.error(msg)
} }
},
validata (row) {
let message = ''
if (row.reviewTime === '') {
message = message + '复查时间不能为空;'
}
if (row.placePatrolTeamId === '') {
message = message + '分队名称不能为空;'
}
if (row.inspectorArray.length === 0) {
message = message + '检查人员不能为空;'
}
if (row.reviewResult === '') {
message = message + '复查结论不能为空;'
}
return message
},
async handleDelete (row, tableIndex) {
this.$confirm("确认删除?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
if (row.placePatrolReviewRecordId) {//id
this.deleteRecord(row, tableIndex)
} else {//id
this.tableData.splice(tableIndex, 1);
}
})
.catch(err => {
if (err == "cancel") {
}
});
}, },
async deleteRecord (row, tableIndex) { handleSizeChange (val) {
this.pageSize = val
const url = "/gov/org/placepatrolreviewrecord/del" this.pageNo = 1
this.loadTable()
let params = {
placePatrolReviewRecordId: row.placePatrolReviewRecordId
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
// this.$message({
// type: "success",
// message: ""
// });
this.tableData.splice(tableIndex, 1);
} else {
this.$message.error(msg)
}
}, },
handleCurrentChange (val) {
handleCancle () { this.pageNo = val
this.$emit('dialogCancle') this.loadTable()
}, },
@ -403,7 +152,7 @@ export default {
computed: { computed: {
tableHeight () { tableHeight () {
return (this.clientHeight - 360) return (this.clientHeight - 460)
}, },
@ -412,36 +161,11 @@ export default {
}, },
props: { props: {
resultList: {
type: Array,
default: []
}
} }
} }
</script> </script>
<style lang="scss" scoped > <style lang="scss" scoped >
@import "@/assets/scss/buttonstyle.scss"; @import "@/assets/scss/modules/management/epidemic.scss";
.item_width_1 {
width: 250px;
}
.item_width_2 {
width: 100px;
}
.div_table {
// background: #ffffff;
// box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.1);
// border-radius: 4px;
.table {
margin-top: 20px;
}
}
.div_btn {
margin-top: 10px;
display: flex;
justify-content: flex-end;
}
</style> </style>

480
src/views/modules/base/epidemic/veroFocus/vfVisiteList.vue

@ -1,9 +1,12 @@
<template> <template>
<div class="dialog-h-content scroll-h"> <div class="dialog-h-content scroll-h">
<div class="div_table"> <div class="div_dialog_table">
<el-button size="small" <el-button size="small"
class="diy-button--add" class="diy-button--add"
@click="handleAdd">新增</el-button> @click="handleAdd">新增</el-button>
<el-button size="small"
class="diy-button--reset"
@click="handleExport">导出</el-button>
<el-table class="table" <el-table class="table"
:data="tableData" :data="tableData"
@ -19,120 +22,85 @@
width="50"> width="50">
</el-table-column> </el-table-column>
<el-table-column prop="reviewTime" <el-table-column prop="visitTime"
header-align="center" header-align="center"
align="center" align="center"
label="复查时间" label="随访时间"
width="250"> width="150">
<template slot-scope="scope">
<div v-if="scope.row.isEdit">
<el-date-picker v-model="scope.row.reviewTime"
value-format="yyyy-MM-dd"
type="date"
placeholder="选择日期">
</el-date-picker>
</div>
<span v-else>{{scope.row.reviewTime}}</span>
</template>
</el-table-column> </el-table-column>
<el-table-column prop="ninePlaceName" <el-table-column prop="content"
header-align="center" header-align="center"
align="center" align="center"
label="分队名称" label="随访内容"
width="280"> min-width="280">
<template slot-scope="scope">
<div v-if="scope.row.isEdit">
<el-select class="item_width_1"
v-model="scope.row.placePatrolTeamId"
placeholder="请选择"
clearable>
<el-option v-for="(item,index) in teamsList"
@click.native="hancleChangeTeam(scope.row,index,scope.$index)"
:key="item.teamId"
:label="item.teamName"
:value="item.teamId">
</el-option>
</el-select>
</div>
<span v-else>{{scope.row.placePatrolTeamName}}</span>
</template>
</el-table-column>
<el-table-column prop="inspectorsNames"
header-align="center"
align="center"
label="检查人员"
min-width="380">
<template slot-scope="scope">
<div v-if="scope.row.isEdit">
<el-checkbox-group style="display:flex;flex-wrap:wrap"
v-model="scope.row.inspectorArray">
<el-checkbox v-for="item in scope.row.inspectorsList"
:key="item.id"
:label="item.id">{{item.name}}</el-checkbox>
</el-checkbox-group>
</div>
<span v-else>{{scope.row.inspectorsNames}}</span>
</template>
</el-table-column>
<el-table-column prop="reviewResult"
header-align="center"
align="center"
label="复查结论"
width="120">
<template slot-scope="scope">
<div v-if="scope.row.isEdit">
<el-select class="item_width_2"
v-model="scope.row.reviewResult"
placeholder="全部"
clearable>
<el-option v-for="item in resultList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
<span v-else>{{scope.row.reviewResult==='0'?'合格':'不合格'}}</span>
</template>
</el-table-column> </el-table-column>
<el-table-column label="操作"
fixed="right"
width="180"
header-align="center"
align="center"
class="operate">
<template slot-scope="scope">
<el-button v-if="scope.row.isEdit"
type="text"
style="color:#00A7A9;text-decoration: underline;"
size="small"
@click="handleComfirm(scope.row,scope.$index)">保存</el-button>
<el-button v-if="!scope.row.isEdit"
type="text"
style="color:#1C6AFD;text-decoration: underline;"
size="small"
@click="handleEdit(scope.row,scope.$index)">修改</el-button>
<el-button type="text"
style="color:#D51010;text-decoration: underline;"
size="small"
@click="handleDelete(scope.row,scope.$index)">删除</el-button>
</template>
</el-table-column>
</el-table> </el-table>
<div>
<el-pagination @size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="pageNo"
:page-sizes="[20, 50, 100, 200]"
:page-size="pageSize"
layout="sizes, prev, pager, next, total"
:total="total">
</el-pagination>
</div>
</div> </div>
<!-- <div class="div_btn"> <el-dialog :visible.sync="dialogVisible"
<el-button @click="handleCancle"> </el-button> width="550px"
top="5vh"
</div> --> title="新增"
append-to-body
@closed="handleCancle">
<div class="epidemic-form">
<el-form ref="ref_form"
:inline="true"
:model="formData"
:rules="dataRule"
class="form">
<el-form-item label="随访时间"
style="display: block"
prop="visitTime"
label-width="150px">
<el-date-picker class="item_width_2"
v-model="formData.visitTime"
format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetime"
clearable
placeholder="选择时间">
</el-date-picker>
</el-form-item>
<el-form-item label="随访内容"
prop="content"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
type="textarea"
maxlength="1000"
show-word-limit
:autosize="{ minRows: 4, maxRows: 10 }"
clearable
placeholder="请输入通知内容"
v-model="formData.content"></el-input>
</el-form-item>
</el-form>
<div class="form_div_btn">
<el-button size="small"
@click="handleCancle"> </el-button>
<el-button size="small"
type="primary"
@click="handleComfirm"> </el-button>
</div>
</div>
</el-dialog>
</div> </div>
</template> </template>
@ -146,9 +114,22 @@ export default {
data () { data () {
return { return {
tableLoading: false, tableLoading: false,
placePatrolRecordId: '',
tableData: [], tableData: [],
total: 0,
pageSize: 20,
pageNo: 1,
formData: {
visitTime: '',//访
content: '',//
idCard: '',
name: '',
mobile: '',
origin: '1'
},
dialogVisible: false,
} }
}, },
@ -159,91 +140,33 @@ export default {
methods: { methods: {
async initTable (placePatrolRecordId) { async initTable (row) {
this.placePatrolRecordId = placePatrolRecordId this.formData.idCard = row.idCard
await this.loadTeams() this.formData.name = row.name
this.formData.mobile = row.mobile
await this.loadTable() await this.loadTable()
}, },
//
async loadTeams () {
const url = '/gov/org/placepatrolteam/getlist'
// const url = 'http://yapi.elinkservice.cn/mock/245/gov/org/placepatrolteam/getlist'
let params = {
isPage: false
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.teamsList = data.list
} else {
this.$message.error(msg)
}
},
//
async hancleChangeTeam (row, index, tableIndex) {
this.tableData[tableIndex].inspectorArray = [...[]]
let teamId = this.teamsList[index].teamId
await this.loadInspectors(teamId, tableIndex)
},
//
async loadInspectors (teamId, tableIndex) {
const url = '/gov/org/placepatrolteamstaff/getlist'
// const url = 'http://yapi.elinkservice.cn/mock/245/gov/org/placepatrolteamstaff/getlist'
let params = {
teamId: teamId
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
// let obj = this.tableData[tableIndex]
this.tableData[tableIndex].inspectorsList = [...data]
// this.tableData[tableIndex]=
// obj.inspectorsList = data
// this.$set(this.tableData, tableIndex, obj)
console.log(this.tableData)
} else {
this.$message.error(msg)
}
},
//form //form
async loadTable () { async loadTable () {
this.tableLoading = true this.tableLoading = true
const url = '/gov/org/placepatrolreviewrecord/getlist' // const url = '/epmetuser/followup/page'
// const url = 'http://yapi.elinkservice.cn/mock/245/gov/org/placepatrolreviewrecord/getlist' const url = 'http://yapi.elinkservice.cn/mock/245/epmetuser/followup/page'
let params = { let params = {
placePatrolRecordId: this.placePatrolRecordId idCard: this.formData.idCard,
pageNo: this.pageNo,
pageSize: this.pageSize,
origin: '1'
} }
const { data, code, msg } = await requestPost(url, params) const { data, code, msg } = await requestPost(url, params)
this.tableLoading = false this.tableLoading = false
if (code === 0) { if (code === 0) {
this.total = data.total
this.tableData = data.list
if (data.list && data.list.length > 0) {
data.list.forEach(item => {
item.isEdit = false
item.isNew = false
let arrayInspectors = item.inspectors.split(',')
item.inspectorArray = [...arrayInspectors]
let arrayReviewTime = item.reviewTime.split(' ')
item.reviewTime = arrayReviewTime[0]
});
this.tableData = [...data.list]
} else {
this.tableData = []
}
} else { } else {
this.$message.error(msg) this.$message.error(msg)
@ -251,139 +174,90 @@ export default {
}, },
handleAdd () { handleAdd () {
let obj = { this.dialogVisible = true
isNew: true,//
isEdit: true,//
placePatrolRecordId: this.placePatrolRecordId,
reviewTime: '',
placePatrolTeamId: '',
inspectors: '',
inspectorArray: [],
inspectorsList: [],
reviewResult: '',
}
this.tableData.push(obj)
}, },
async handleEdit (row, tableIndex) {
let teamId = row.placePatrolTeamId
await this.loadInspectors(teamId, tableIndex)
let rowData = JSON.parse(JSON.stringify(row)) async handleComfirm () {
rowData.isEdit = true
rowData.isNew = false
rowData.inspectorArray = rowData.inspectors.split(',')
console.log(rowData) // let url = "/epmetuser/followup/save"
this.$set(this.tableData, tableIndex, rowData) let url = "http://yapi.elinkservice.cn/mock/245/epmetuser/followup/save"
},
async handleComfirm (row, tableIndex) {
let valiMsg = this.validata(row)
if (valiMsg) {
this.$message({
type: 'warning',
message: valiMsg
})
return false
}
this.addReview(row, tableIndex) const { data, code, msg } = await requestPost(url, this.formData)
},
async addReview (row, tableIndex) {
let url = "/gov/org/placepatrolreviewrecord/add"
if (row.placePatrolReviewRecordId) {
url = "/gov/org/placepatrolreviewrecord/edit"
}
let params = JSON.parse(JSON.stringify(row))
params.inspectors = params.inspectorArray.join(',')
params.reviewTime = params.reviewTime + ' 00:00:00'
const { data, code, msg } = await requestPost(url, params)
if (code === 0) { if (code === 0) {
let array = data.reviewTime.split(' ') this.loadTable()
data.reviewTime = array[0] this.handleCancle()
data.isEdit = false
data.isNew = false
this.$set(this.tableData, tableIndex, data)
} else { } else {
this.$message.error(msg) this.$message.error(msg)
} }
}, },
validata (row) { handleCancle () {
let message = '' this.dialogVisible = false
if (row.reviewTime === '') {
message = message + '复查时间不能为空;'
}
if (row.placePatrolTeamId === '') {
message = message + '分队名称不能为空;'
}
if (row.inspectorArray.length === 0) {
message = message + '检查人员不能为空;'
}
if (row.reviewResult === '') {
message = message + '复查结论不能为空;'
}
return message
}, },
async handleDelete (row, tableIndex) { //
async handleExport () {
let title = this.formData.name + '—随访记录'
this.$confirm("确认删除?", "提示", { const url = "/gov/org/house/exporthouseinfo"
confirmButtonText: "确定", let params = {
cancelButtonText: "取消", ownerName: this.ownerName,
type: "warning" ownerPhone: this.ownerPhone,
}) buildingId: this.agencyObj.id
.then(() => { }
if (row.placePatrolReviewRecordId) {//id
this.deleteRecord(row, tableIndex)
} else {//id
this.tableData.splice(tableIndex, 1);
}
}) app.ajax.exportFilePost(
.catch(err => { url,
if (err == "cancel") { params,
(data, rspMsg) => {
} this.download(data, title + '.xlsx')
},
(rspMsg, data) => {
this.$message.error(rspMsg);
}
);
});
}, },
async deleteRecord (row, tableIndex) { //
download (data, fileName) {
const url = "/gov/org/placepatrolreviewrecord/del" if (!data) {
return
let params = {
placePatrolReviewRecordId: row.placePatrolReviewRecordId
} }
const { data, code, msg } = await requestPost(url, params) var csvData = new Blob([data])
if (code === 0) {
// this.$message({
// type: "success",
// message: ""
// });
this.tableData.splice(tableIndex, 1); if (window.navigator && window.navigator.msSaveOrOpenBlob) {
} else { window.navigator.msSaveOrOpenBlob(csvData, fileName);
this.$message.error(msg) }
// for Non-IE (chrome, firefox etc.)
else {
var a = document.createElement('a');
document.body.appendChild(a);
a.style = 'display: none';
var url = window.URL.createObjectURL(csvData);
a.href = url;
a.download = fileName;
a.click();
a.remove();
window.URL.revokeObjectURL(url);
} }
},
handleCancle () { },
this.$emit('dialogCancle')
handleSizeChange (val) {
this.pageSize = val
this.pageNo = 1
this.loadTable()
},
handleCurrentChange (val) {
this.pageNo = val
this.loadTable()
}, },
@ -405,46 +279,30 @@ export default {
}, },
computed: { computed: {
tableHeight () { tableHeight () {
return (this.clientHeight - 360) return (this.clientHeight - 360)
}, },
...mapGetters(['clientHeight']) ...mapGetters(['clientHeight']),
dataRule () {
return {
visitTime: [
{ required: true, message: '随访时间不能为空', trigger: 'blur' }
],
content: [
{ required: true, message: '随访内容不能为空', trigger: 'blur' }
],
}
}
}, },
props: { props: {
resultList: {
type: Array,
default: []
}
} }
} }
</script> </script>
<style lang="scss" scoped > <style lang="scss" scoped >
@import "@/assets/scss/buttonstyle.scss"; @import "@/assets/scss/modules/management/epidemic.scss";
.item_width_1 { </style>
width: 250px;
}
.item_width_2 {
width: 100px;
}
.div_table {
// background: #ffffff;
// box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.1);
// border-radius: 4px;
.table {
margin-top: 20px;
}
}
.div_btn {
margin-top: 10px;
display: flex;
justify-content: flex-end;
}
</style>
Loading…
Cancel
Save