Browse Source

Merge branch 'dev-fangyi' into dev

shibei_master
jiangyy 4 years ago
parent
commit
5c05a15e2f
  1. 7
      src/App.vue
  2. 5
      src/assets/scss/modules/management/epidemic.scss
  3. 102
      src/views/modules/base/epidemic/natFocus/natFocusAdd.vue
  4. 27
      src/views/modules/base/epidemic/natFocus/natFocusEdit.vue
  5. 56
      src/views/modules/base/epidemic/natFocus/natFocusList.vue
  6. 11
      src/views/modules/base/epidemic/natFocus/nfNoticeList.vue
  7. 16
      src/views/modules/base/epidemic/natFocus/nfSendNotice.vue
  8. 13
      src/views/modules/base/epidemic/natFocus/nfVisiteList.vue
  9. 14
      src/views/modules/base/epidemic/natInfo/natForm.vue
  10. 101
      src/views/modules/base/epidemic/natInfo/natList.vue
  11. 438
      src/views/modules/base/epidemic/travel.vue
  12. 120
      src/views/modules/base/epidemic/travelForm.vue
  13. 15
      src/views/modules/base/epidemic/veroFocus/veroFocusAdd.vue
  14. 5
      src/views/modules/base/epidemic/veroFocus/veroFocusEdit.vue
  15. 12
      src/views/modules/base/epidemic/veroFocus/veroFocusList.vue
  16. 8
      src/views/modules/base/epidemic/veroFocus/vfSendNotice.vue
  17. 30
      src/views/modules/communityService/ninePlaces/inspect/inspect.vue
  18. 443
      src/views/modules/shequ/index.vue

7
src/App.vue

@ -187,4 +187,11 @@ export default {
padding: 6px !important;
background-color: rgb(247, 250, 253);
}
//
.table-more-btn {
display: flex;
flex-direction: column;
justify-content: center;
}
</style>

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

@ -75,11 +75,6 @@
}
}
.more-btn {
display: flex;
flex-direction: column;
justify-content: center;
}
.div-mult-form {
margin-top: 20px;

102
src/views/modules/base/epidemic/natFocus/natFocusAdd.vue

@ -46,6 +46,17 @@
v-model="formData1.idCard">
</el-input>
</el-form-item>
<el-form-item label="关注原因"
prop="reason"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
placeholder="请输入关注原因"
clearable
v-model="formData1.reason">
</el-input>
</el-form-item>
<el-form-item label="备注"
prop="remark"
label-width="150px"
@ -60,7 +71,8 @@
v-model="formData1.remark"></el-input>
</el-form-item>
<el-form-item label="通知渠道"
<el-form-item v-if="false"
label="通知渠道"
prop="channel"
label-width="150px"
style="display: block">
@ -76,7 +88,8 @@
</el-checkbox-group> -->
</el-form-item>
<el-form-item label="通知内容"
<el-form-item v-if="false"
label="通知内容"
prop="content"
label-width="150px"
style="display: block">
@ -114,14 +127,29 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item label="疫苗接种次数小于"
<el-form-item label="检测时间"
prop="startTime">
<el-date-picker v-model="timeRange"
size="mini"
type="daterange"
@change="handleTimeChange"
format="yyyy-MM-dd"
value-format="yyyyMMdd"
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间">
</el-date-picker>
</el-form-item>
<el-form-item label="核酸检测次数小于"
label-width="150px">
<el-input-number class="item_width_3"
v-model="formDataSearch.vaccineCount"
v-model="formDataSearch.natCount"
size="mini"
:min="0"
:max="20"
label="疫苗接种次数小于"></el-input-number>
label="核酸检测次数小于"></el-input-number>
</el-form-item>
<el-button style="margin-left:30px"
size="mini"
@ -170,7 +198,7 @@
label="身份证"
min-width="170">
</el-table-column>
<el-table-column prop="vaccineCount"
<el-table-column prop="natCount"
header-align="center"
align="center"
label="疫苗接种次数"
@ -216,6 +244,17 @@
style="display: block">
<span> {{selectionAll.length}}</span>
</el-form-item>
<el-form-item label="关注原因"
prop="reason"
label-width="100px"
style="display: block">
<el-input class="item_width_1"
placeholder="请输入关注原因"
clearable
v-model="formData2.reason">
</el-input>
</el-form-item>
<el-form-item label="备注"
prop="remark"
label-width="100px"
@ -230,7 +269,8 @@
v-model="formData2.remark"></el-input>
</el-form-item>
<el-form-item label="通知渠道"
<el-form-item v-if="false"
label="通知渠道"
prop="channel"
label-width="100px"
style="display: block">
@ -246,7 +286,8 @@
</el-checkbox-group> -->
</el-form-item>
<el-form-item label="通知内容"
<el-form-item v-if="false"
label="通知内容"
prop="content"
label-width="100px"
style="display: block">
@ -298,14 +339,19 @@ export default {
formDataSearch: {
gridId: '',
vaccineCount: undefined,
natCount: undefined,
startDate: '',
endDate: '',
attentionType: 2
},
timeRange: [],
formData1: {
attentionType: 1,
attentionType: 2,
name: '',
idCard: '',
mobile: '',
reason: '',
remark: '',
isSelChannel: false,
channel: [],
@ -314,7 +360,8 @@ export default {
},
formData2: {
attentionType: 1,
attentionType: 2,
reason: '',
remark: '',
isSelChannel: false,
channel: [],
@ -356,7 +403,7 @@ export default {
async loadTable () {
this.tableLoading = true
const url = "/epmetuser/epidemicPrevention/page"
const url = "/epmetuser/epidemicPrevention/user-list"
// const url = "http://yapi.elinkservice.cn/mock/245/epmetuser/epidemicPrevention/page"
let params = {
pageSize: this.pageSize,
@ -382,6 +429,19 @@ export default {
this.tableLoading = false
},
handleTimeChange (time) {
if (time) {
this.formData.startDate = time[0]
this.formData.endDate = time[1]
} else {
this.formData.startDate = ''
this.formData.endDate = ''
}
},
handleSelectTable (selection, row) {
row.isSel = !row.isSel
@ -628,14 +688,9 @@ export default {
resetSearch () {
this.formDataSearch = {
gridId: '',
vaccineCount: undefined,
natCount: undefined,
}
},
destroyed () {
console.log(11111111)
this.timeRange = []
},
resetData () {
@ -644,15 +699,17 @@ export default {
name: '',
idCard: '',
mobile: '',
reason: '',
remark: '',
isSelChannel: false,
channel: [],
content: '',
attentionType: 1,
attentionType: 2,
}
this.formData2 = {
attentionType: 1,
attentionType: 2,
reason: '',
remark: '',
isSelChannel: false,
channel: [],
@ -660,12 +717,11 @@ export default {
}
this.formDataSearch = {
gridId: '',
vaccineCount: undefined,
natCount: undefined,
}
this.selectionAll = []//
},
handleSizeChange (val) {

27
src/views/modules/base/epidemic/natFocus/natFocusEdit.vue

@ -44,6 +44,17 @@
v-model="formData.idCard">
</el-input> -->
</el-form-item>
<el-form-item label="关注原因"
prop="reason"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
placeholder="请输入关注原因"
clearable
v-model="formData.reason">
</el-input>
</el-form-item>
<el-form-item label="备注"
prop="remark"
label-width="150px"
@ -59,7 +70,8 @@
v-model="formData.remark"></el-input>
</el-form-item>
<div v-if=" formType!=='detail'">
<el-form-item label="通知渠道"
<el-form-item v-if="false"
label="通知渠道"
prop="channel"
label-width="150px"
style="display: block">
@ -75,7 +87,8 @@
</el-checkbox-group> -->
</el-form-item>
<el-form-item label="通知内容"
<el-form-item v-if="false"
label="通知内容"
prop="content"
label-width="150px"
style="display: block">
@ -125,10 +138,11 @@ export default {
btnDisable: false,
formData: {
attentionType: 1,
attentionType: 2,
name: '',
idCard: '',
mobile: '',
reason: '',
remark: '',
isSelChannel: false,
channel: [],
@ -142,6 +156,10 @@ export default {
},
destroyed () {
},
methods: {
async initForm (formType, row) {
@ -149,6 +167,7 @@ export default {
this.$refs['ref_form1'].resetFields();
row.channel = []
row.content = ''
row.attentionType = 2
row.isSelChannel = false
this.formData = JSON.parse(JSON.stringify(row))
@ -210,9 +229,11 @@ export default {
this.veroId = ''
this.formData = {
attentionType: 2,
name: '',
idCard: '',
mobile: '',
reason: '',
remark: '',
isSelChannel: false,
channel: [],

56
src/views/modules/base/epidemic/natFocus/natFocusList.vue

@ -38,19 +38,24 @@
</el-input>
</el-form-item>
<el-form-item label="关注原因"
prop="mobile">
<el-input v-model="formData.reason"
size="small"
class="list_item_width_1"
clearable
placeholder="请输入关注原因">
</el-input>
<el-form-item label="接种针次"
prop="vaccinationCount">
<el-select class="list_item_width_1"
v-model.trim="formData.vaccinationCount"
placeholder="请选择"
clearable>
<el-option v-for="item in natNumList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="备注"
prop="remark">
<el-input v-model="formData.remark"
size="small"
class="list_item_width_1"
clearable
placeholder="请输入备注">
</el-input>
</el-form-item>
@ -94,7 +99,8 @@
size="small"
@click="handleExport">导出</el-button>
<el-button style="margin-left:15px"
<el-button v-if="false"
style="margin-left:15px"
class="diy-button--more"
size="small"
@click="handleSendNotice">发送通知</el-button>
@ -140,10 +146,10 @@
label="身份证"
min-width="170">
</el-table-column>
<el-table-column prop="vaccinationCount"
<el-table-column prop="reason"
header-align="center"
align="center"
label="接种针次"
label="关注原因"
width="100">
</el-table-column>
<el-table-column prop="remark"
@ -183,14 +189,14 @@
style="margin-left:10px"
width="20"
trigger="click">
<div class="more-btn">
<div class="table-more-btn">
<el-button type="text"
class="div-table-button--detail--noline"
size="small"
@click="handleNoticeList(scope.row)">通知记录</el-button>
</div>
<div class="more-btn">
<div class="table-more-btn">
<el-button type="text"
class="div-table-button--detail--noline"
size="small"
@ -223,6 +229,7 @@
<el-dialog :visible.sync="addFormShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:destroy-on-close="true"
title="新增"
width="1050px"
top="5vh"
@ -312,11 +319,12 @@ export default {
agencyId: '',
formData: {
attentionType: 1,//21
attentionType: 2,//21
name: '',
mobile: '',
idCard: '',
vaccinationCount: '',
remark: '',
reason: '',
},
natNumList: [],
@ -497,7 +505,7 @@ export default {
}
this.sendNoticeFormShow = true
this.$nextTick(() => {
this.$refs.ref_sendnotice.initForm(this.selectionAll)
this.$refs.ref_sendnotice.initForm(this.selectionAll, '2')
})
},
@ -505,7 +513,7 @@ export default {
handleNoticeList (row) {
this.noticeListFormShow = true
this.$nextTick(() => {
this.$refs.ref_noticelist.initTable(row.idCard)
this.$refs.ref_noticelist.initTable(row.idCard, '2')
})
},
@ -513,7 +521,7 @@ export default {
this.visiteListFormShow = true
this.$nextTick(() => {
this.$refs.ref_visitelist.initTable(row)
this.$refs.ref_visitelist.initTable(row, '2')
})
@ -557,7 +565,7 @@ export default {
idCards.push(element.idCard)
});
let params = {
attentionType: 1,
attentionType: 2,
idCards: idCards
}
@ -578,7 +586,7 @@ export default {
//
resetSearch () {
this.formData = {
attentionType: 1,//21
attentionType: 2,//21
name: '',
mobile: '',
idCard: '',

11
src/views/modules/base/epidemic/natFocus/nfNoticeList.vue

@ -70,7 +70,7 @@ export default {
tableData: [],
pageSize: 20,
pageNo: 1,
origin: ''
}
},
components: {},
@ -80,8 +80,9 @@ export default {
methods: {
async initTable (idCard) {
async initTable (idCard, origin) {
this.idCard = idCard
this.origin = origin
await this.loadTable()
},
@ -89,13 +90,13 @@ export default {
//form
async loadTable () {
this.tableLoading = true
// const url = "/epmetuser/icNotice/page"
const url = "http://yapi.elinkservice.cn/mock/245/epmetuser/icNotice/page"
const url = "/epmetuser/icNotice/page"
// const url = "http://yapi.elinkservice.cn/mock/245/epmetuser/icNotice/page"
let params = {
idCard: this.idCard,
pageNo: this.pageNo,
pageSize: this.pageSize,
origin: '1'
origin: this.origin
}
const { data, code, msg } = await requestPost(url, params)

16
src/views/modules/base/epidemic/natFocus/nfSendNotice.vue

@ -8,7 +8,8 @@
:rules="dataRule"
class="form">
<el-form-item label="通知渠道"
<el-form-item
label="通知渠道"
prop="channel"
label-width="150px"
style="display: block">
@ -24,7 +25,8 @@
</el-checkbox-group> -->
</el-form-item>
<el-form-item label="通知内容"
<el-form-item
label="通知内容"
prop="content"
label-width="150px"
style="display: block">
@ -73,7 +75,7 @@ export default {
btnDisable: false,
formData: {
origin: '1',
origin: '',
isSelChannel: false,
channel: [],
content: '',
@ -92,10 +94,11 @@ export default {
methods: {
async initForm (selectionAll) {
async initForm (selectionAll, origin) {
this.$refs['ref_form1'].resetFields();
this.formData.userList = selectionAll
this.formData.origin = origin
},
@ -119,7 +122,7 @@ export default {
}
console.log(this.formData)
return false
// return false
this.btnDisable = true
setTimeout(() => {
@ -128,8 +131,7 @@ export default {
let url = ''
url = '/epmetuser/icNotice/batchnotice'
// url = "http://yapi.elinkservice.cn/mock/245/epmetuser/icNotice/batchnotice"
url = '/epmetuser/icNotice/sendNotice'
const { data, code, msg } = await requestPost(url, this.formData)

13
src/views/modules/base/epidemic/natFocus/nfVisiteList.vue

@ -55,7 +55,7 @@
title="新增"
append-to-body
@closed="handleCancle">
<div class="epidemic-form">
<div v-if="dialogVisible" class="epidemic-form">
<el-form ref="ref_form"
:inline="true"
:model="formData"
@ -133,7 +133,7 @@ export default {
idCard: '',
name: '',
mobile: '',
origin: '1'
origin: ''
},
dialogVisible: false,
@ -147,11 +147,12 @@ export default {
methods: {
async initTable (row) {
async initTable (row, origin) {
this.formData.idCard = row.idCard
this.formData.name = row.name
this.formData.mobile = row.mobile
this.formData.origin = origin
await this.loadTable()
@ -168,7 +169,7 @@ export default {
idCard: this.formData.idCard,
pageNo: this.pageNo,
pageSize: this.pageSize,
origin: '1'
origin: this.formData.origin
}
const { data, code, msg } = await requestPost(url, params)
@ -207,6 +208,8 @@ export default {
},
handleCancle () {
this.formData.visitTime = ''
this.formData.content = ''
this.dialogVisible = false
},
@ -223,7 +226,7 @@ export default {
let params = {
idCard: this.formData.idCard,
name: this.formData.name,
origin: '2'
}
app.ajax.exportFilePost(

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

@ -123,7 +123,7 @@
</el-form-item>
<el-form-item label="检测结果"
prop="type"
prop="natResult"
label-width="150px"
style="display: block">
<el-radio-group v-model="formData.natResult">
@ -160,7 +160,8 @@
</el-form-item>
<el-form-item label="通知渠道"
<el-form-item v-if="false"
label="通知渠道"
prop="channel"
label-width="150px"
style="display: block">
@ -168,16 +169,17 @@
<el-checkbox v-model="formData.isSelChannel"
key="0"
label="0">小程序通知</el-checkbox>
<!-- <el-checkbox-group v-model="formData.channel">
<el-checkbox-group v-model="formData.channel">
<el-checkbox key="0"
label="0">小程序通知</el-checkbox>
<el-checkbox key="1"
label="1">短信通知</el-checkbox>
</el-checkbox-group> -->
</el-checkbox-group>
</el-form-item>
<el-form-item label="通知内容"
<el-form-item v-if="false"
label="通知内容"
prop="content"
label-width="150px"
style="display: block">
@ -607,7 +609,7 @@ export default {
{ required: false },
],
natResult: [
{ required: true },
{ required: true, message: '检测结果不能为空', trigger: 'blur' },
],
channel: [

101
src/views/modules/base/epidemic/natInfo/natList.vue

@ -19,6 +19,36 @@
</el-select>
</el-form-item>
<el-form-item label="本辖区居民">
<el-select class="list_item_width_1"
size="small"
:disabled="formData.orgType!='current'"
v-model.trim="formData.isResiUser"
placeholder="请选择">
<el-option v-for="item in isResiUserList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="接种时间"
prop="startTime">
<el-date-picker v-model="timeRange"
size="small"
type="datetimerange"
@change="handleTimeChange"
format="yyyy-MM-dd HH:mm"
value-format="yyyy-MM-dd HH:mm"
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间">
</el-date-picker>
</el-form-item>
<div>
<el-form-item label="姓名"
prop="name">
<el-input v-model="formData.name"
@ -49,22 +79,6 @@
placeholder="请输入身份证">
</el-input>
</el-form-item>
<div>
<el-form-item label="接种时间"
prop="startTime">
<el-date-picker v-model="timeRange"
size="small"
type="datetimerange"
@change="handleTimeChange"
format="yyyy-MM-dd HH:mm"
value-format="yyyy-MM-dd HH:mm"
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间">
</el-date-picker>
</el-form-item>
<el-button style="margin-left:30px"
@ -160,6 +174,14 @@
label="检测结果"
width="100">
</el-table-column>
<el-table-column v-if="formData.orgType==='current'"
prop="isResiUserShow"
header-align="center"
align="center"
show-overflow-tooltip
label="是否本辖区居民"
width="120">
</el-table-column>
<el-table-column label="操作"
fixed="right"
@ -174,48 +196,30 @@
size="small"
@click="handleDetail(scope.row)">查看</el-button>
<el-button v-if="scope.row.userType==='resi'||scope.row.userType==='icresi'"
type="text"
class="div-table-button--edit"
size="small"
@click="handleEdit(scope.row)">修改</el-button>
<el-button v-if="scope.row.userType==='resi'||scope.row.userType==='icresi'"
type="text"
class="div-table-button--delete "
size="small"
@click="handleDelete(scope.row,'delete')">删除</el-button>
<el-button v-if="scope.row.userType==='import'&&scope.row.agencyId!==agencyId"
<el-button v-if="formData.orgType==='all'"
type="text"
class="div-table-button--edit"
size="small"
@click="handleAttention(scope.row)">同步</el-button>
<el-button v-if="scope.row.userType==='synchro'&&scope.row.agencyId===agencyId"
<el-button v-if="formData.orgType==='current'&&(scope.row.userType==='resi'||scope.row.userType==='icresi') &&scope.row.agencyId===agencyId"
type="text"
class="div-table-button--delete "
size="small"
@click="handleDelete(scope.row,'attention')">取消同步</el-button>
<!-- <el-button type="text"
class="div-table-button--edit"
size="small"
@click="handleEdit(scope.row)">修改</el-button>
<el-button type="text"
<el-button v-if="formData.orgType==='current'&&(scope.row.userType==='resi'||scope.row.userType==='icresi') &&scope.row.agencyId===agencyId"
type="text"
class="div-table-button--delete "
size="small"
@click="handleDelete(scope.row,'delete')">删除</el-button>
<el-button type="text"
class="div-table-button--edit"
size="small"
@click="handleAttention(scope.row)">关注</el-button>
<el-button type="text"
<el-button v-if="formData.orgType==='current'&&scope.row.userType==='synchro'&&scope.row.agencyId===agencyId"
type="text"
class="div-table-button--delete "
size="small"
@click="handleDelete(scope.row,'attention')">取消关注</el-button> -->
@click="handleDelete(scope.row,'attention')">取消同步</el-button>
</template>
</el-table-column>
</el-table>
@ -277,6 +281,16 @@ export default {
label: '全部检测记录'
},
],
isResiUserList: [
{
value: '0',
label: '否'
},
{
value: '1',
label: '是'
},
],
timeRange: [],
formData: {
@ -286,6 +300,7 @@ export default {
idCard: '',//
startTime: '',//yyyy-MM-dd HH:mm
endTime: '',//yyyy-MM-dd HH:mm
isResiUser: ''//0: 1:
},
@ -337,6 +352,8 @@ export default {
this.tableData = data.list
this.tableData.forEach(item => {
item.isResiUserShow = item.isResiUser === '0' ? '否' : '是'
if (item.natResult === '1') {
item.natResultShow = '阳性'
} else if (item.natResult === '0') {

438
src/views/modules/base/epidemic/travel.vue

@ -23,7 +23,7 @@
size="small"
class="list_item_width_1"
clearable
placeholder="请输入姓名">
placeholder="请输入手机号">
</el-input>
</el-form-item>
@ -44,13 +44,14 @@
<el-form-item label="来自地区"
prop="sourceAddressCode">
<el-input v-model="formData.sourceAddressCode"
<!-- <el-input v-model="formData.sourceAddressCode"
size="small"
class="list_item_width_1"
clearable
placeholder="请输入姓名">
</el-input>
</el-input> -->
<el-cascader ref="nowArea" size="small" class="list_item_width_1" :props="areaProps"
v-model="searchAreacode" clearable @change="handleAreaChange"></el-cascader>
</el-form-item>
<el-form-item label="来到本地时间"
@ -84,7 +85,7 @@
size="small"
@click="handleAdd">新增</el-button>
<el-button style="float:left"
<el-button
class="diy-button--export"
size="small"
@click="handleExportModule">下载模板</el-button>
@ -96,16 +97,30 @@
accept=".xls,.xlsx"
:limit="1"
:on-exceed="handleExceed"
:http-request="uploadFile">
<el-button style="margin-left:10px"
size="small"
class="diy-button--delete">导入</el-button>
:http-request="uploadHttpRequest">
<el-button size="small"
style="margin-left: 10px"
class="diy-button--delete"
:loading="importLoading">{{importBtnTitle}}</el-button>
</el-upload>
<el-button style="float:left;margin-left:10px"
<el-button style="margin-left:10px"
class="diy-button--reset"
size="small"
@click="handleExport">导出</el-button>
:loading="exportBtn"
@click="handleExport">{{ exportBtnTitle }}</el-button>
<el-button style="margin-left:15px"
class="diy-button--more"
size="small"
@click="handleSendNotice">发送通知</el-button>
<el-button style="margin-left:15px"
class="diy-button--more"
size="small"
@click="handleAttention">加入关注</el-button>
<el-button style="margin-left:15px"
class="diy-button--more"
size="small"
@click="handleDeletes">取消关注</el-button>
</div>
<el-table class="table"
@ -114,18 +129,21 @@
:height="tableHeight"
v-loading="tableLoading"
:header-cell-style="{background:'#2195FE',color:'#FFFFFF'}"
style="width: 100%">
style="width: 100%"
@selection-change="handleSelectionChange">
<el-table-column type="selection"
width="55" fixed="left"></el-table-column>
<el-table-column label="序号"
header-align="center"
align="center"
type="index"
width="50"></el-table-column>
width="50" fixed="left"></el-table-column>
<el-table-column prop="name"
header-align="center"
align="center"
label="姓名"
width="90">
width="100" fixed="left">
</el-table-column>
<el-table-column prop="mobile"
header-align="center"
@ -178,7 +196,7 @@
label="备注"
min-width="120">
</el-table-column>
<el-table-column prop="heSuanCheck"
<el-table-column prop="heSuanCheckDesc"
header-align="center"
align="center"
label="核酸检测关注名单"
@ -197,15 +215,41 @@
class="div-table-button--detail"
size="small"
@click="handleDetail(scope.row)">查看</el-button>
<el-button type="text"
<el-button v-if="scope.row.userType != 'resi'" type="text"
class="div-table-button--edit"
size="small"
@click="handleEdit(scope.row)">修改</el-button>
<el-popover popper-class="btn-popper"
placement="bottom"
style="margin-left:10px"
width="20"
trigger="click">
<div class="more-btn">
<el-button type="text"
class="div-table-button--detail--noline"
size="small"
@click="handleNoticeList(scope.row)">通知记录</el-button>
</div>
<div class="more-btn">
<el-button type="text"
class="div-table-button--detail--noline"
size="small"
@click="handleVisiteList(scope.row) ">随访记录</el-button>
</div>
<div v-if="scope.row.userType != 'resi'" class="more-btn">
<el-button type="text"
class="div-table-button--delete--noline "
size="small"
@click="handleDelete(scope.row)">删除</el-button>
</div>
<el-button type="text"
size="small"
class="div-table-button--more"
slot="reference">更多<i class="el-icon-caret-bottom"></i></el-button>
</el-popover>
</template>
</el-table-column>
@ -231,17 +275,55 @@
top="5vh"
class="dialog-h"
@closed="diaClose">
<travel-form ref="ref_form"
<travel-form v-if="formShow" ref="ref_form"
@dialogCancle="addFormCancle"
@dialogOk="addFormOk"></travel-form>
</el-dialog>
<!-- 发送通知弹出框 -->
<el-dialog :visible.sync="sendNoticeFormShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
title="发送通知"
width="1050px"
top="5vh"
class="dialog-h"
@closed="diaClose">
<nf-send-notice ref="ref_sendnotice"
@dialogCancle="diaClose"></nf-send-notice>
</el-dialog>
<!-- 通知记录弹出框 -->
<el-dialog :visible.sync="noticeListFormShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
title="通知记录"
width="1050px"
top="5vh"
class="dialog-h"
@closed="diaClose">
<nf-notice-list ref="ref_noticelist"
@dialogCancle="diaClose"></nf-notice-list>
</el-dialog>
<!-- 随访记录弹出框 -->
<el-dialog :visible.sync="visiteListFormShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
title="随访记录"
width="1050px"
top="5vh"
class="dialog-h"
@closed="diaClose">
<nf-visite-list ref="ref_visitelist"
@dialogCancle="diaClose"></nf-visite-list>
</el-dialog>
</div>
</template>
<script>
import travelForm from './travelForm'
import nfNoticeList from './natFocus/nfNoticeList'
import nfSendNotice from './natFocus/nfSendNotice'
import nfVisiteList from './natFocus/nfVisiteList'
import { requestPost } from "@/js/dai/request";
import { mapGetters } from 'vuex'
@ -250,15 +332,22 @@ let loading // 加载动画
export default {
data () {
return {
sendNoticeFormShow: false,
visiteListFormShow: false,
noticeListFormShow: false,
exportBtn: false,
exportBtnTitle: '导出',
importBtnTitle: '导入',
importLoading: false,
loading: false,
total: 0,
pageSize: 20,
pageNo: 0,
tableLoading: false,
sHeight: 0,
searchAreacode: [],
agencyId: '',
selectionAll: [],
timeRange: [],
formData: {
name: '',//
@ -274,11 +363,19 @@ export default {
//form
formShow: false,
formTitle: '新增',
areaProps: {
lazy: true,
checkStrictly: true,
lazyLoad: this.lzayLoadArea
}
}
},
components: {
travelForm
travelForm,
nfNoticeList,
nfSendNotice,
nfVisiteList
},
async created () {
@ -296,13 +393,45 @@ export default {
},
methods: {
lzayLoadArea(node, resolve) {
this.getArea(node, resolve)
// setTimeout(() => {
// }, 1000)
},
handleSearch () {
this.loadTable()
},
handleSelectionChange(val) {
console.log('val----', val)
this.selectionAll = val
},
async getArea (node, resolve) {
const url = "/commonservice/areacode/nextarea"
let params = {
parentLevel: node.data ? node.data.level : '',
parentAreaCode: node.data ? node.data.code : ''
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
const nodes = data.map(item => ({
value: item.areaCode, //
label: item.areaName,
code: item.areaCode,
level: item.level,
leaf: node.level >= 4 // 5
}))
resolve(nodes)
} else {
this.$message.error(msg)
}
},
async loadTable () {
this.tableLoading = true
@ -332,7 +461,13 @@ export default {
}
this.tableLoading = false
},
handleAreaChange(val) {
if (val.length > 0) {
const len = val.length - 1
this.formData.sourceAddressCode = val[len]
} else this.formData.sourceAddressCode = ''
},
handleScheduledTimeChange (time) {
if (time) {
this.formData.startDate = time[0]
@ -347,8 +482,141 @@ export default {
},
diaClose () {
this.$refs.ref_form.resetData()
// this.$refs.ref_form.resetData()
this.formShow = false
this.sendNoticeFormShow = false
this.noticeListFormShow = false
this.visiteListFormShow = false
},
handleNoticeList (row) {
this.noticeListFormShow = true
this.$nextTick(() => {
this.$refs.ref_noticelist.initTable(row.idCard, '0')
})
},
handleVisiteList (row) {
this.visiteListFormShow = true
this.$nextTick(() => {
this.$refs.ref_visitelist.initTable(row, '0')
})
},
handleSendNotice () {
if (this.selectionAll.length === 0) {
this.$message.info('请选择要通知的人员')
return false
}
this.sendNoticeFormShow = true
this.$nextTick(() => {
const arr = this.selectionAll.map(item => {
return {
userId: item.userId,
idCard: item.idCard,
mobile: item.mobile
}
})
this.$refs.ref_sendnotice.initForm(arr, '0')
})
},
handleAttention(row) {
if (this.selectionAll.length === 0) {
this.$message.info('请选择要加入关注的名单')
return false
}
this.$confirm("确认选择的名单加入关注?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
this.saveFocus(row)
})
.catch(err => {
console.log('err-----', err)
});
},
async handleDeletes (row) {
if (this.selectionAll.length === 0) {
this.$message.info('请选择要取消关注的名单')
return false
}
this.$confirm("确认取消关注选择的名单?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
this.deleteFocus(row)
})
.catch(err => {
if (err == "cancel") {
}
});
},
async saveFocus (row) {
const url = "/epmetuser/icEpidemicSpecialAttention/vaccination-add"
// let idCards = []
// this.selectionAll.forEach(element => {
// idCards.push(element.idCard)
// });
let params = {
list: this.selectionAll.map(item => {
return {
name: item.name,
mobile: item.mobile,
idCard: item.idCard,
attentionType: 2
}
})
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.$message({
type: "success",
message: "操作成功"
});
this.loadTable()
} else {
this.$message.error(msg)
}
},
async deleteFocus (row) {
const url = "/epmetuser/icEpidemicSpecialAttention/cancel-attention"
// const url = "http://yapi.elinkservice.cn/mock/245/gov/org/placepatrolteam/del"
let idCards = []
this.selectionAll.forEach(element => {
idCards.push(element.idCard)
});
let params = {
attentionType: 2,
idCards: idCards
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.$message({
type: "success",
message: "操作成功"
});
this.loadTable()
} else {
this.$message.error(msg)
}
},
handleDetail (row) {
@ -427,6 +695,7 @@ export default {
this.$refs.ref_searchform.resetFields()
this.formData.startDate = ''
this.formData.endDate = ''
this.searchAreacode = []
this.timeRange = []
this.pageSize = 20
this.pageNo = 1
@ -446,27 +715,48 @@ export default {
//
async handleExport () {
let title = this.agencyObj.label
title = title + '—房屋列表'
const url = "/gov/org/house/exporthouseinfo"
this.exportBtn = true
this.exportBtnTitle = '正在导出...'
let params = {
ownerName: this.ownerName,
ownerPhone: this.ownerPhone,
buildingId: this.agencyObj.id
...this.formData
}
app.ajax.exportFilePost(
url,
params,
(data, rspMsg) => {
this.download(data, title + '.xls')
},
(rspMsg, data) => {
this.$message.error(rspMsg);
}
);
// .post('epmetuser/icresiuser/exportExcel', params)
// await axios({
// url: window.SITE_CONFIG['apiURL'] + '/epmetuser/tripreport/export',
// // url: 'epmetuser/icresiuser/exportExcel',
// method: 'post',
// data: params,
// responseType: 'blob'
// })
await this.$http({
method: 'POST',
url: '/epmetuser/tripreport/export',
responseType: 'blob',
data: params
})
.then(res => {
console.log('resllll', res)
let fileName = window.decodeURI(res.headers["content-disposition"].split(";")[1].split("=")[1])
console.log('filename', fileName)
let blob = new Blob([res.data], { type: 'application/vnd.ms-excel' })
var url = window.URL.createObjectURL(blob)
var aLink = document.createElement('a')
aLink.style.display = 'none'
aLink.href = url
aLink.setAttribute('download', fileName)
document.body.appendChild(aLink)
aLink.click()
document.body.removeChild(aLink) //
window.URL.revokeObjectURL(url) //blob
})
.catch((err) => {
console.log('获取导出情失败', err)
this.$message.error('获取导出失败')
})
this.exportBtnTitle = '导出'
this.exportBtn = false
},
@ -496,24 +786,40 @@ export default {
},
handleExportModule () {
async handleExportModule () {
let title = ''
title = '房屋模板'
const url = "/gov/org/house/exporttemplate"
const url = "/epmetuser/tripreport/template-download"
let params = {}
app.ajax.exportFilePost(
await this.$http({
method: 'POST',
url,
params,
(data, rspMsg) => {
this.download(data, title + '.xls')
},
(rspMsg, data) => {
this.$message.error(rspMsg);
}
);
responseType: 'blob',
data: params
})
.then(res => {
console.log('res----dddd', res)
// this.download(res.data, title + '.xls')
if (res.headers["content-disposition"]) {
let fileName = window.decodeURI(res.headers["content-disposition"].split(";")[1].split("=")[1])
console.log('filename', fileName)
let blob = new Blob([res.data], { type: 'application/vnd.ms-excel' })
var url = window.URL.createObjectURL(blob)
var aLink = document.createElement('a')
aLink.style.display = 'none'
aLink.href = url
aLink.setAttribute('download', fileName)
document.body.appendChild(aLink)
aLink.click()
document.body.removeChild(aLink) //
window.URL.revokeObjectURL(url) //blob
} else this.$message.error('下载失败')
})
.catch(err => {
console.log('err', err)
return this.$message.error('网络错误')
})
},
//
@ -536,6 +842,32 @@ export default {
handleExceed (files, fileList) {
this.$message.warning(`当前限制选择 1 个文件,请删除后继续上传`)
},
async uploadHttpRequest (file) {
this.importLoading = true
this.importBtnTitle = '正在上传中...'
this.$message({
showClose: true,
message: '导入中,请到系统管理-导入记录中查看进度',
duration: 0
})
const formData = new FormData() //FormDataappend('key', value)
formData.append('file', file.file) //
await this.$http
.post('/epmetuser/tripreport/import', formData).then(res => {
console.log('res-up', res)
if (res.data.code == 0 && res.data.msg == 'success') {
// this.$message.success('')
this.loadTable()
} else this.$message.error(res.data.msg)
}).catch(err => {
console.log('失败', err)
file.onError() //
// this.$message.error('')
})
this.importLoading = false
this.importBtnTitle = '导入'
this.$refs.upload.clearFiles()
},
async uploadFile () {
if (this.fileName == "") {

120
src/views/modules/base/epidemic/travelForm.vue

@ -104,19 +104,8 @@
clearable
:disabled="isFromResi"
v-model="formData.presentAddress" />
<el-select v-else class="item_width_2"
v-model.trim="formData.presentAddress"
placeholder="请选择"
filterable
clearable>
<el-option v-for="item in personList"
@click.native="handleSelPerson(item)"
:key="item.demandUserId"
:label="item.demandUserName"
:value="item.demandUserId">
</el-option>
</el-select>
<el-cascader v-else ref="nowArea" class="item_width_2" :props="areaProps"
v-model="nowAllCode" clearable @change="handleNowArea"></el-cascader>
</el-form-item>
<el-form-item label="详细地址"
prop="detailAddress"
@ -129,30 +118,9 @@
v-model="formData.detailAddress">
</el-input>
</el-form-item>
<el-form-item
label="来自地区"
prop="sourceAddress"
style="display: block"
label-width="150px">
<!-- <el-input class="item_width_2"
placeholder="请输入来自地区"
clearable
:disabled="isFromResi"
v-model="formData.sourceAddress">
</el-input> -->
<el-cascader :props="areaProps"></el-cascader>
<!-- <el-select class="item_width_2"
v-model.trim="formData.sourceAddress"
placeholder="请选择"
filterable
clearable>
<el-option v-for="item in personList"
@click.native="handleSelPerson(item)"
:key="item.demandUserId"
:label="item.demandUserName"
:value="item.demandUserId">
</el-option>
</el-select> -->
<el-form-item label="来自地区" prop="sourceAddress" style="display: block" label-width="150px">
<el-cascader ref="sourceArea" v-model="sourceAllCode" class="item_width_2" :props="areaProps"
@change="handleSourceArea" clearable></el-cascader>
</el-form-item>
<el-form-item label="来到本地时间"
@ -187,7 +155,7 @@
style="display: block">
<el-input class="item_width_1"
type="textarea"
maxlength="1000"
maxlength="500"
show-word-limit
:autosize="{ minRows: 4, maxRows: 10 }"
clearable
@ -214,7 +182,7 @@
style="display: block">
<el-input class="item_width_1"
type="textarea"
maxlength="1000"
maxlength="500"
show-word-limit
:autosize="{ minRows: 4, maxRows: 10 }"
clearable
@ -224,7 +192,6 @@
</el-form>
</div>
<div class="form_div_btn">
<el-button size="small"
@click="handleCancle"> </el-button>
@ -235,15 +202,6 @@
@click="handleComfirm('ref_form')"> </el-button>
</div>
<el-dialog :visible.sync="dialogVisible"
width="550px"
top="5vh"
append-to-body>
<img width="100%"
:src="dialogImageUrl"
alt="">
</el-dialog>
</div>
</template>
@ -288,7 +246,8 @@ export default {
personList: [],
btnDisable: false,
sourceAllCode: [], // code
nowAllCode: [], // code
icNatId: '',
formData: {
gridId: '',
@ -302,9 +261,9 @@ export default {
presentAddress: '',
presentAddressCode: '',
detailAddress: '',
sourceAddressCode: '370203',
sourceAddressCode: '',
presentAddressPathCode: '',
sourceAddress: '市北区',
sourceAddress: '',
sourceAddressPathCode: '',
arriveDate: '',
remark: '',
@ -319,10 +278,10 @@ export default {
{ required: true, message: '姓名不能为空', trigger: 'blur' }
],
idCard: [
{ validator: checkIdCard, trigger: 'blur' }
{ required: true, validator: checkIdCard, trigger: 'blur' }
],
mobile: [
{ validator: checkMObile, trigger: 'blur' },
{ required: true, validator: checkMObile, trigger: 'blur' },
],
presentAddress: [
{ required: true, message: '现居地不能为空', trigger: 'blur' },
@ -355,19 +314,24 @@ export default {
methods: {
lzayLoadArea(node, resolve) {
this.getArea(node, resolve)
// setTimeout(() => {
// }, 1000)
},
async initForm (type, row) {
console.log('row----', row)
this.formType = type
this.formData.agencyId = this.agencyId
if (type != 'add') {
this.formData = { ...row, channel: [], content: '' }
this.sourceAllCode = row.sourceAddressPathCode && row.sourceAddressPathCode.split(',')
if (row.userType == 'icresi') this.isFromResi = true
else this.nowAllCode = row.presentAddressPathCode && row.presentAddressPathCode.split(',')
}
this.formData.agencyId = this.agencyId
// this.$refs['ref_form'].resetFields();
this.formType = type
console.log('formtype', type)
},
@ -386,7 +350,35 @@ export default {
}
},
handleSourceArea(val) {
console.log('val-----', val)
console.log('label-----', this.$refs.sourceArea.getCheckedNodes())
if (val.length > 0) {
const labels = this.$refs.sourceArea.getCheckedNodes()[0].pathLabels
this.formData.sourceAddressCode = val[val.length - 1]
this.formData.sourceAddress = labels.join('-')
this.formData.sourceAddressPathCode = val.join(',')
} else {
this.formData.sourceAddressCode = ''
this.formData.sourceAddress = ''
this.formData.sourceAddressPathCode = ''
}
},
handleNowArea(val) {
console.log('val-----', val)
console.log('label-----', this.$refs.nowArea.getCheckedNodes())
if (val.length > 0) {
const labels = this.$refs.nowArea.getCheckedNodes()[0].pathLabels
this.formData.presentAddressCode = val[val.length - 1]
this.formData.presentAddress = labels.join('-')
this.formData.presentAddressPathCode = val.join(',')
} else {
this.formData.presentAddressCode = ''
this.formData.presentAddress = ''
this.formData.presentAddressPathCode = ''
}
},
async loadGrid () {
const url = "/gov/org/customergrid/gridoption"
@ -426,10 +418,9 @@ export default {
async getArea (node, resolve) {
const url = "/commonservice/areacode/nextarea"
let params = {
parentLevel: this.agencyId,
parentAreaCode: node.data ? node.data.value : ''
parentLevel: node.data ? node.data.level : '',
parentAreaCode: node.data ? node.data.code : ''
}
const { data, code, msg } = await requestPost(url, params)
@ -438,8 +429,9 @@ export default {
const nodes = data.map(item => ({
value: item.areaCode, //
label: item.areaName,
code1: item.parentCode,
leaf: node.level >= 5 // 5
code: item.areaCode,
level: item.level,
leaf: node.level >= 4 // 5
}))
resolve(nodes)
@ -615,6 +607,8 @@ export default {
this.formData.presentAddressCode = ''
this.formData.sourceAddressPathCode = ''
this.formData.presentAddressPathCode = ''
this.sourceAllCode = []
this.nowAllCode = []
},
//
startLoading () {

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

@ -60,7 +60,8 @@
v-model="formData1.remark"></el-input>
</el-form-item>
<el-form-item label="通知渠道"
<el-form-item v-if="false"
label="通知渠道"
prop="channel"
label-width="150px"
style="display: block">
@ -76,7 +77,8 @@
</el-checkbox-group> -->
</el-form-item>
<el-form-item label="通知内容"
<el-form-item v-if="false"
label="通知内容"
prop="content"
label-width="150px"
style="display: block">
@ -230,7 +232,8 @@
v-model="formData2.remark"></el-input>
</el-form-item>
<el-form-item label="通知渠道"
<el-form-item v-if="false"
label="通知渠道"
prop="channel"
label-width="100px"
style="display: block">
@ -246,7 +249,8 @@
</el-checkbox-group> -->
</el-form-item>
<el-form-item label="通知内容"
<el-form-item v-if="false"
label="通知内容"
prop="content"
label-width="100px"
style="display: block">
@ -299,6 +303,7 @@ export default {
formDataSearch: {
gridId: '',
vaccineCount: undefined,
attentionType: 1
},
formData1: {
@ -357,7 +362,7 @@ export default {
async loadTable () {
this.tableLoading = true
const url = "/epmetuser/epidemicPrevention/page"
const url = "/epmetuser/epidemicPrevention/user-list"
// const url = "http://yapi.elinkservice.cn/mock/245/epmetuser/epidemicPrevention/page"
let params = {
pageSize: this.pageSize,

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

@ -59,7 +59,8 @@
v-model="formData.remark"></el-input>
</el-form-item>
<div v-if=" formType!=='detail'">
<el-form-item label="通知渠道"
<el-form-item v-if="false"
label="通知渠道"
prop="channel"
label-width="150px"
style="display: block">
@ -149,7 +150,7 @@ export default {
this.$refs['ref_form1'].resetFields();
row.channel = []
row.content = ''
row.attentionType = '1'
row.attentionType = 1
row.isSelChannel = false
this.formData = JSON.parse(JSON.stringify(row))

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

@ -94,7 +94,8 @@
size="small"
@click="handleExport">导出</el-button>
<el-button style="margin-left:15px"
<el-button v-if="false"
style="margin-left:15px"
class="diy-button--more"
size="small"
@click="handleSendNotice">发送通知</el-button>
@ -183,14 +184,14 @@
style="margin-left:10px"
width="20"
trigger="click">
<div class="more-btn">
<div class="table-more-btn">
<el-button type="text"
class="div-table-button--detail--noline"
size="small"
@click="handleNoticeList(scope.row)">通知记录</el-button>
</div>
<div class="more-btn">
<div class="table-more-btn">
<el-button type="text"
class="div-table-button--detail--noline"
size="small"
@ -210,7 +211,7 @@
<el-pagination @size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="pageNo"
:page-sizes="[5, 50, 100, 200]"
:page-sizes="[20, 50, 100, 200]"
:page-size="pageSize"
layout="sizes, prev, pager, next, total"
:total="total">
@ -223,6 +224,7 @@
<el-dialog :visible.sync="addFormShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:destroy-on-close="true"
title="新增"
width="1050px"
top="5vh"
@ -303,7 +305,7 @@ export default {
return {
loading: false,
total: 0,
pageSize: 5,
pageSize: 20,
pageNo: 1,
tableLoading: false,

8
src/views/modules/base/epidemic/veroFocus/vfSendNotice.vue

@ -8,7 +8,8 @@
:rules="dataRule"
class="form">
<el-form-item label="通知渠道"
<el-form-item v-if="false"
label="通知渠道"
prop="channel"
label-width="150px"
style="display: block">
@ -24,7 +25,8 @@
</el-checkbox-group> -->
</el-form-item>
<el-form-item label="通知内容"
<el-form-item v-if="false"
label="通知内容"
prop="content"
label-width="150px"
style="display: block">
@ -73,7 +75,7 @@ export default {
btnDisable: false,
formData: {
origin: '1',
origin: '2',
isSelChannel: false,
channel: [],
content: '',

30
src/views/modules/communityService/ninePlaces/inspect/inspect.vue

@ -183,14 +183,36 @@
class="div-table-button--detail"
size="small"
@click="handleDetail(scope.row)">查看</el-button>
<el-button type="text"
class="div-table-button--edit"
size="small"
:disabled="true"
@click="handleEdit(scope.row)">修改</el-button>
<el-popover popper-class="btn-popper"
placement="bottom"
style="margin-left:10px"
width="20"
trigger="click">
<div class="table-more-btn">
<el-button type="text"
class="div-table-button--edit"
size="small"
@click="handleReview(scope.row)">复查记录</el-button>
</div>
<div class="table-more-btn">
<el-button type="text"
class="div-table-button--delete"
size="small"
@click="handleDelete(scope.row)">删除</el-button>
</div>
<el-button type="text"
size="small"
class="div-table-button--more"
slot="reference">更多<i class="el-icon-caret-bottom"></i></el-button>
</el-popover>
</template>
</el-table-column>
@ -428,6 +450,14 @@ export default {
})
},
handleEdit (row) {
this.formTitle = '编辑'
this.formShow = true
this.$nextTick(() => {
this.$refs.ref_form.initForm('edit', row)
})
},
handleReview (row) {
this.reviewShow = true
this.$nextTick(() => {

443
src/views/modules/shequ/index.vue

@ -10,12 +10,10 @@
<div class="search">
<div class="input">
<el-dropdown
class="select"
<el-dropdown class="select"
placement="bottom"
v-model="searchData.type"
@command="(type) => (searchData.type = type)"
>
@command="(type) => (searchData.type = type)">
<span class="select-show">
{{
{ jumin: "居民", fangwu: "房屋", xuqiu: "需求" }[
@ -30,48 +28,38 @@
</el-dropdown-menu>
</el-dropdown>
<input
type="text"
<input type="text"
:placeholder="typePlaceholder[searchData.type]"
v-model="searchData.keyword"
@keyup.enter="handleClickSearchBtn"
/>
@keyup.enter="handleClickSearchBtn" />
<div
class="close-btn"
<div class="close-btn"
v-if="searchData.keyword != ''"
@click="searchData.keyword = ''"
>
@click="searchData.keyword = ''">
<img src="@/assets/img/shequ/close.png" />
</div>
</div>
<div class="btn" @click="handleClickSearchBtn">搜索</div>
<div class="btn"
@click="handleClickSearchBtn">搜索</div>
</div>
<div
class="m-tb"
<div class="m-tb"
v-if="
searchData.type == 'jumin' &&
searchData.keyword != '' &&
searchStatus == 'ing'
"
>
">
<div class="tb">
<el-table
:data="searchJumin.list"
<el-table :data="searchJumin.list"
border
style="width: 100%"
class="resi-table"
:max-height="1000"
>
<el-table-column
label="序号"
:max-height="1000">
<el-table-column label="序号"
type="index"
align="center"
width="50"
/>
<el-table-column
v-for="item in searchJumin.header"
width="50" />
<el-table-column v-for="item in searchJumin.header"
:key="item.columnName"
:prop="item.columnName"
:label="item.label"
@ -81,238 +69,199 @@
item.itemType === 'radio'
? computedWidth(item.label)
: 180
"
>
">
<template slot-scope="scope">
<span>{{ handleFilterSpan(scope.row, item) }}</span>
</template>
</el-table-column>
<el-table-column fixed="right" label="操作" align="center">
<el-table-column fixed="right"
label="操作"
align="center">
<template slot-scope="scope">
<el-button
@click="handleWatchSearchJumin(scope.$index)"
<el-button @click="handleWatchSearchJumin(scope.$index)"
type="text"
size="small"
>查看</el-button
>
size="small">查看</el-button>
</template>
</el-table-column>
</el-table>
<div>
<el-pagination
@size-change="handleSizeChangeSearchJumin"
<el-pagination @size-change="handleSizeChangeSearchJumin"
@current-change="handleCurrentChangeSearchJumin"
:current-page.sync="searchJumin.pageNo"
:page-sizes="[20, 50, 100, 200]"
:page-size="parseInt(searchJumin.pageSize)"
layout="sizes, prev, pager, next"
:total="searchJumin.total"
>
layout="sizes, prev, pager, next, total"
:total="searchJumin.total">
</el-pagination>
</div>
</div>
</div>
<div
class="m-tb"
<div class="m-tb"
v-if="
searchData.type == 'fangwu' &&
searchData.keyword != '' &&
searchStatus == 'ing'
"
>
">
<div class="tb">
<el-table
:data="searchFangwu.list"
<el-table :data="searchFangwu.list"
v-loading="searchFangwu.loading"
border
:max-height="1000"
style="width: 100%"
>
<el-table-column
label="序号"
style="width: 100%">
<el-table-column label="序号"
type="index"
align="center"
width="50"
/>
<el-table-column
prop="houseName"
width="50" />
<el-table-column prop="houseName"
label="房屋名称"
width="120"
>
width="120">
</el-table-column>
<el-table-column
prop="neighborHoodName"
<el-table-column prop="neighborHoodName"
label="所属小区"
width="160"
>
width="160">
</el-table-column>
<el-table-column prop="buildingName" label="所属楼栋">
<el-table-column prop="buildingName"
label="所属楼栋">
</el-table-column>
<el-table-column prop="unitNum" label="单元号">
<el-table-column prop="unitNum"
label="单元号">
</el-table-column>
<el-table-column prop="doorName" label="门牌号">
<el-table-column prop="doorName"
label="门牌号">
</el-table-column>
<el-table-column prop="houseType" label="类型">
<el-table-column prop="houseType"
label="类型">
</el-table-column>
<el-table-column prop="purpose" label="用途">
<el-table-column prop="purpose"
label="用途">
</el-table-column>
<el-table-column prop="rentFlag" label="是否出租">
<el-table-column prop="rentFlag"
label="是否出租">
</el-table-column>
<el-table-column prop="ownerName" label="房主姓名">
<el-table-column prop="ownerName"
label="房主姓名">
</el-table-column>
<el-table-column
prop="ownerPhone"
<el-table-column prop="ownerPhone"
label="房主电话"
width="110"
>
width="110">
</el-table-column>
<el-table-column
prop="ownerIdCard"
<el-table-column prop="ownerIdCard"
label="身份证"
width="170"
>
width="170">
</el-table-column>
<el-table-column
label="操作"
<el-table-column label="操作"
fixed="right"
header-align="center"
align="center"
class="operate"
>
class="operate">
<template slot-scope="scope">
<el-button
type="text"
<el-button type="text"
style="color: #1c6afd; text-decoration: underline"
size="small"
@click="handleWatchSearchFangwu(scope.row)"
>查看</el-button
>
@click="handleWatchSearchFangwu(scope.row)">查看</el-button>
</template>
</el-table-column>
</el-table>
<div>
<el-pagination
@size-change="handleSizeChangeSearchFangwu"
<el-pagination @size-change="handleSizeChangeSearchFangwu"
@current-change="handleCurrentChangeSearchFangwu"
:current-page.sync="searchFangwu.pageNo"
:page-sizes="[20, 50, 100, 200]"
:page-size="parseInt(searchFangwu.pageSize)"
layout="sizes, prev, pager, next"
:total="searchFangwu.total"
>
:total="searchFangwu.total">
</el-pagination>
</div>
</div>
</div>
<div
class="m-tb"
<div class="m-tb"
v-if="
searchData.type == 'xuqiu' &&
searchData.keyword != '' &&
searchStatus == 'ing'
"
>
">
<div class="tb">
<el-table
:data="searchXuqiu.list"
<el-table :data="searchXuqiu.list"
v-loading="searchXuqiu.loading"
border
:max-height="1000"
style="width: 100%"
>
<el-table-column
label="序号"
style="width: 100%">
<el-table-column label="序号"
type="index"
align="center"
width="50"
/>
width="50" />
<el-table-column
v-for="item in searchXuqiu.header"
<el-table-column v-for="item in searchXuqiu.header"
:key="item.columnName"
:prop="item.columnName"
:label="item.label"
:align="item.align"
:width="item.width"
:show-overflow-tooltip="true"
>
:show-overflow-tooltip="true">
<template slot-scope="scope">
<span>{{ handleFilterSpan(scope.row, item) }}</span>
</template>
</el-table-column>
<el-table-column
label="操作"
<el-table-column label="操作"
fixed="right"
header-align="center"
align="center"
class="operate"
>
class="operate">
<template slot-scope="scope">
<el-button
type="text"
<el-button type="text"
style="color: #1c6afd; text-decoration: underline"
size="small"
@click="handleWatchSearchXuqiu(scope.row)"
>查看</el-button
>
@click="handleWatchSearchXuqiu(scope.row)">查看</el-button>
</template>
</el-table-column>
</el-table>
<div>
<el-pagination
@size-change="handleSizeChangeSearchXuqiu"
<el-pagination @size-change="handleSizeChangeSearchXuqiu"
@current-change="handleCurrentChangeSearchXuqiu"
:current-page.sync="searchXuqiu.pageNo"
:page-sizes="[20, 50, 100, 200]"
:page-size="parseInt(searchXuqiu.pageSize)"
layout="sizes, prev, pager, next"
:total="searchXuqiu.total"
>
:total="searchXuqiu.total">
</el-pagination>
</div>
</div>
</div>
<div
class="m-tb"
<div class="m-tb"
v-if="
searchData.type == 'xuqiu' &&
searchData.keyword != '' &&
searchStatus == 'ing'
"
>
">
<div class="tb"></div>
</div>
<div class="m-list" v-if="searchStatus == 'ini'">
<div class="m-list"
v-if="searchStatus == 'ini'">
<div class="list-title">常用功能</div>
<div class="list">
<div
class="item"
<div class="item"
:key="item.menuId"
@click="handleClickFunc(item)"
v-for="item in funcList"
>
v-for="item in funcList">
<div class="icon">
<svg
class="icon-svg aui-sidebar__menu-icon"
aria-hidden="true"
>
<svg class="icon-svg aui-sidebar__menu-icon"
aria-hidden="true">
<use :xlink:href="`#${item.icon}`" />
</svg>
</div>
<p>{{ item.menuName }}</p>
</div>
<div class="item" @click="showedFuncPanel = true">
<div class="item"
@click="showedFuncPanel = true">
<div class="icon">
<img
src="@/assets/img/shequ/function/tianjiayingyong.png"
/>
<img src="@/assets/img/shequ/function/tianjiayingyong.png" />
</div>
<p>添加应用</p>
</div>
@ -321,21 +270,22 @@
</div>
</div>
<div class="m-data" v-if="searchStatus == 'ini'">
<div class="m-data"
v-if="searchStatus == 'ini'">
<div class="wrap">
<div class="header">
<div class="headline">人员预警</div>
<div class="notice" v-if="noticeList.length > 0">
<div class="notice-btn" @click="toNoticeInfo">通知</div>
<div class="notice"
v-if="noticeList.length > 0">
<div class="notice-btn"
@click="toNoticeInfo">通知</div>
<div class="notice-list">
<scroll-notice :list="noticeList">
<a
class="notice-item"
<a class="notice-item"
v-for="(item, index) in noticeList"
:key="item.configId + item.buildingId + index"
@click="toNoticeInfo(item)"
>
@click="toNoticeInfo(item)">
{{ item.noticeContent }}
</a>
</scroll-notice>
@ -345,59 +295,55 @@
<div class="cnt">
<div class="chart">
<bar-chart
:width="520"
<bar-chart :width="520"
:height="420"
v-if="warningChart.loading"
:total="warningChart.total"
:list="warningChart.list"
@clickBar="changeCategoryCode"
/>
@clickBar="changeCategoryCode" />
</div>
<div class="tb">
<el-table
:data="warningTb.list"
<el-table :data="warningTb.list"
border
style="width: 100%"
class="resi-table"
:max-height="maxTableHeight"
>
<el-table-column
label="序号"
:max-height="maxTableHeight">
<el-table-column label="序号"
type="index"
align="center"
width="50"
/>
<el-table-column prop="typeName" label="类型">
width="50" />
<el-table-column prop="typeName"
label="类型">
</el-table-column>
<el-table-column prop="gridName" label="所属网格">
<el-table-column prop="gridName"
label="所属网格">
</el-table-column>
<el-table-column prop="name" label="姓名"> </el-table-column>
<el-table-column prop="family" label="所属家庭">
<el-table-column prop="name"
label="姓名"> </el-table-column>
<el-table-column prop="family"
label="所属家庭">
</el-table-column>
<el-table-column prop="mobile" label="电话">
<el-table-column prop="mobile"
label="电话">
</el-table-column>
<el-table-column fixed="right" label="操作" align="center">
<el-table-column fixed="right"
label="操作"
align="center">
<template slot-scope="scope">
<el-button
@click="handleWatchWarning(scope.$index)"
<el-button @click="handleWatchWarning(scope.$index)"
type="text"
size="small"
>查看</el-button
>
size="small">查看</el-button>
</template>
</el-table-column>
</el-table>
<div>
<el-pagination
@size-change="handleSizeChangeWarning"
<el-pagination @size-change="handleSizeChangeWarning"
@current-change="handleCurrentChangeWarning"
:current-page.sync="warningTb.pageNo"
:page-sizes="[20, 50, 100, 200]"
:page-size="parseInt(warningTb.pageSize)"
layout="sizes, prev, pager, next"
:total="warningTb.total"
>
layout="sizes, prev, pager, next, total"
:total="warningTb.total">
</el-pagination>
</div>
</div>
@ -407,35 +353,27 @@
</div>
<!-- 修改弹出框 -->
<div
v-show="showedFuncPanel"
<div v-show="showedFuncPanel"
v-if="
Array.isArray($store.state.sidebarMenuList) &&
$store.state.sidebarMenuList.length > 0
"
>
">
<div class="m-panel">
<div
class="m-list"
v-if="selectedFuncList && selectedFuncList.length > 0"
>
<div class="m-list"
v-if="selectedFuncList && selectedFuncList.length > 0">
<div class="list-title">常用功能</div>
<div class="list">
<div
class="item"
<div class="item"
:key="item.menuId"
@click="selectFuncItem(item.menuId)"
v-for="item in selectedFuncList"
>
v-for="item in selectedFuncList">
<div class="corner-mark z-on">
<i class="el-icon-success"></i>
</div>
<div class="icon">
<svg
class="icon-svg aui-sidebar__menu-icon"
aria-hidden="true"
>
<svg class="icon-svg aui-sidebar__menu-icon"
aria-hidden="true">
<use :xlink:href="`#${item.icon}`" />
</svg>
</div>
@ -447,33 +385,25 @@
<div class="m-list">
<div class="list-title">所有功能</div>
<div
:key="'one' + menu.id"
<div :key="'one' + menu.id"
v-show="menu.children && menu.children.length > 0"
v-for="menu in $store.state.sidebarMenuList"
>
v-for="menu in $store.state.sidebarMenuList">
<div class="list-title2">{{ menu.name }}</div>
<div class="list">
<div
class="item"
<div class="item"
:key="'two' + item.id"
@click="selectFuncItem(item.id)"
v-for="item in menu.children"
>
<div
class="corner-mark"
v-for="item in menu.children">
<div class="corner-mark"
:class="{
'z-on': selectedFuncIdList.indexOf(item.id) !== -1,
}"
>
}">
<i class="el-icon-success"></i>
</div>
<div class="icon">
<svg
class="icon-svg aui-sidebar__menu-icon"
aria-hidden="true"
>
<svg class="icon-svg aui-sidebar__menu-icon"
aria-hidden="true">
<use :xlink:href="`#${item.icon}`" />
</svg>
</div>
@ -484,10 +414,11 @@
</div>
<div class="operate">
<el-button round @click="showedFuncPanel = false">返回</el-button>
<el-button type="primary" round @click="editFuncList"
>确认</el-button
>
<el-button round
@click="showedFuncPanel = false">返回</el-button>
<el-button type="primary"
round
@click="editFuncList">确认</el-button>
</div>
</div>
</div>
@ -500,47 +431,35 @@
<span>人员预警</span>
</div>
<warning-list
:buildingId="currentNoticeBuildingId"
:configId="currentNoticeConfigId"
/>
<warning-list :buildingId="currentNoticeBuildingId"
:configId="currentNoticeConfigId" />
</div>
<people-more
v-if="showedPeopleMoreInfo && currentPepeleId"
<people-more v-if="showedPeopleMoreInfo && currentPepeleId"
:userId="currentPepeleId"
:gridName="currentPepeleGridName"
@close="showedPeopleMoreInfo = false"
/>
@close="showedPeopleMoreInfo = false" />
<!-- 修改弹出框 -->
<el-dialog
:visible.sync="showedFangwuInfo"
<el-dialog :visible.sync="showedFangwuInfo"
:close-on-click-modal="false"
:close-on-press-escape="false"
title="房屋详情"
width="900px"
@closed="showedFangwuInfo = false"
>
<fangwu-info
ref="fangwu_info"
@dialogCancle="showedFangwuInfo = false"
></fangwu-info>
@closed="showedFangwuInfo = false">
<fangwu-info ref="fangwu_info"
@dialogCancle="showedFangwuInfo = false"></fangwu-info>
</el-dialog>
<!-- 修改弹出框 -->
<el-dialog
:visible.sync="showedXuqiuInfo"
<el-dialog :visible.sync="showedXuqiuInfo"
:close-on-click-modal="false"
:close-on-press-escape="false"
title="需求详情"
width="900px"
@closed="showedXuqiuInfo = false"
>
<xuqiu-info
ref="xuqiu_info"
@dialogCancle="showedXuqiuInfo = false"
></xuqiu-info>
@closed="showedXuqiuInfo = false">
<xuqiu-info ref="xuqiu_info"
@dialogCancle="showedXuqiuInfo = false"></xuqiu-info>
</el-dialog>
</div>
</template>
@ -566,7 +485,7 @@ export default {
scrollNotice,
},
data() {
data () {
return {
searchStatus: "ini", //ing over
searchData: {
@ -763,7 +682,7 @@ export default {
};
},
computed: {
selectedFuncList() {
selectedFuncList () {
const {
selectedFuncIdList,
$store: {
@ -795,7 +714,7 @@ export default {
});
return selectedFuncIdList.map((id) => obj[id]);
},
maxTableHeight() {
maxTableHeight () {
// return this.clientHeight - 450;
return 420;
},
@ -808,7 +727,7 @@ export default {
}
},
},
mounted() {
mounted () {
this.getApiData();
console.log(
"dynamicMenuRoutes----------------------------",
@ -816,18 +735,18 @@ export default {
);
},
methods: {
changeCategoryCode({ code }) {
changeCategoryCode ({ code }) {
this.currentCategoryCode = code || "";
this.warningTb.pageNo = 1;
this.getWarningTb();
},
computedWidth(label) {
computedWidth (label) {
const wd = 20 * label.length;
return wd > 80 ? wd : 80;
},
handleFilterSpan(row, item) {
handleFilterSpan (row, item) {
let _val = "";
if (item.options && item.options.length > 0) {
item.options.forEach((n) => {
@ -837,7 +756,7 @@ export default {
return _val || row[item.columnName];
},
handleClickSearchBtn() {
handleClickSearchBtn () {
const {
searchData: { type, keyword },
} = this;
@ -858,18 +777,18 @@ export default {
this.searchStatus = "ing";
},
handleSizeChangeWarning(val) {
handleSizeChangeWarning (val) {
console.log(`每页 ${val}`);
this.warningTb.pageSize = val;
window.localStorage.setItem("pageSize", val);
this.getWarningTb();
},
handleCurrentChangeWarning(val) {
handleCurrentChangeWarning (val) {
console.log(`当前页: ${val}`);
this.warningTb.pageNo = val;
this.getWarningTb();
},
async handleWatchWarning(rowIndex) {
async handleWatchWarning (rowIndex) {
let item = this.warningTb.list[rowIndex];
this.currentPepeleId = item.userId;
this.currentPepeleGridName = item.gridName;
@ -877,18 +796,18 @@ export default {
this.showedPeopleMoreInfo = true;
},
handleSizeChangeSearchJumin(val) {
handleSizeChangeSearchJumin (val) {
console.log(`每页 ${val}`);
this.searchJumin.pageSize = val;
window.localStorage.setItem("pageSize", val);
this.getSearchJumin();
},
handleCurrentChangeSearchJumin(val) {
handleCurrentChangeSearchJumin (val) {
console.log(`当前页: ${val}`);
this.searchJumin.pageNo = val;
this.getSearchJumin();
},
async handleWatchSearchJumin(rowIndex) {
async handleWatchSearchJumin (rowIndex) {
let item = this.searchJumin.list[rowIndex];
this.currentPepeleId = item.icResiUserId;
this.currentPepeleGridName = item.GRID_ID;
@ -896,41 +815,41 @@ export default {
this.showedPeopleMoreInfo = true;
},
handleSizeChangeSearchFangwu(val) {
handleSizeChangeSearchFangwu (val) {
console.log(`每页 ${val}`);
this.searchFangwu.pageSize = val;
window.localStorage.setItem("pageSize", val);
this.getSearchFangwu();
},
handleCurrentChangeSearchFangwu(val) {
handleCurrentChangeSearchFangwu (val) {
console.log(`当前页: ${val}`);
this.searchFangwu.pageNo = val;
this.getSearchFangwu();
},
async handleWatchSearchFangwu(row) {
async handleWatchSearchFangwu (row) {
this.showedFangwuInfo = true;
await nextTick();
this.$refs.fangwu_info.initForm("detail", row);
},
handleSizeChangeSearchXuqiu(val) {
handleSizeChangeSearchXuqiu (val) {
console.log(`每页 ${val}`);
this.searchXuqiu.pageSize = val;
window.localStorage.setItem("pageSize", val);
this.getSearchXuqiu();
},
handleCurrentChangeSearchXuqiu(val) {
handleCurrentChangeSearchXuqiu (val) {
console.log(`当前页: ${val}`);
this.searchXuqiu.pageNo = val;
this.getSearchXuqiu();
},
async handleWatchSearchXuqiu(row) {
async handleWatchSearchXuqiu (row) {
this.showedXuqiuInfo = true;
await nextTick();
this.$refs.xuqiu_info.initForm("detail", row);
},
handleClickFunc(menu) {
handleClickFunc (menu) {
const menuId = menu.menuId;
var route = window.SITE_CONFIG["dynamicMenuRoutes"].filter(
(item) => item.meta.menuId === menuId
@ -940,7 +859,7 @@ export default {
}
},
getApiData() {
getApiData () {
this.getFuncList();
this.getWarningList();
this.getWarningTb();
@ -948,7 +867,7 @@ export default {
this.getNoticeList();
},
selectFuncItem(id) {
selectFuncItem (id) {
let index = this.selectedFuncIdList.indexOf(id);
if (index === -1) {
this.selectedFuncIdList.push(id);
@ -957,7 +876,7 @@ export default {
}
},
toNoticeInfo(item) {
toNoticeInfo (item) {
console.log(item);
this.currentPage = "yujing";
if (item) {
@ -969,7 +888,7 @@ export default {
}
},
async getNoticeList() {
async getNoticeList () {
const url = "/epmetuser/statsresiwarn/queryuserwarnnotice";
const { data, code, msg } = await requestPost(url, {
agencyId: this.$store.state.user.agencyId,
@ -981,7 +900,7 @@ export default {
}
},
async getSearchJuminHeader() {
async getSearchJuminHeader () {
const url = "/oper/customize/icform/tableheaders";
const { data, code, msg } = await requestPost(url, {
formCode: "resi_base_info",
@ -994,7 +913,7 @@ export default {
}
},
async getSearchXuqiu() {
async getSearchXuqiu () {
const url = "/heart/userdemand/search";
const {
searchData: { keyword },
@ -1017,7 +936,7 @@ export default {
}
},
async getSearchJumin() {
async getSearchJumin () {
const url = "/epmetuser/icresiuser/search";
const {
searchData: { keyword },
@ -1040,7 +959,7 @@ export default {
}
},
async getSearchFangwu() {
async getSearchFangwu () {
const url = "/gov/org/house/search";
const {
searchData: { keyword },
@ -1063,7 +982,7 @@ export default {
}
},
async getWarningTb() {
async getWarningTb () {
const url = "/epmetuser/icresiuser/personwarn/rightlist";
const {
warningTb: { pageSize, pageNo },
@ -1087,7 +1006,7 @@ export default {
},
//
async getWarningList() {
async getWarningList () {
const url = "/epmetuser/icstatsresiwarn/personwarn/leftpie";
let params = {};
@ -1110,7 +1029,7 @@ export default {
},
//
async getFuncList() {
async getFuncList () {
const url = "/gov/access/icoftenusefunction/oftenusefunctionlist";
let params = {};
@ -1125,7 +1044,7 @@ export default {
},
//
async editFuncList() {
async editFuncList () {
const url = "/gov/access/icoftenusefunction/addoftenusefunction";
const { selectedFuncIdList } = this;
let params = selectedFuncIdList.map((menuId, sort) => {

Loading…
Cancel
Save