Merge branch 'build' of http://git.sinoecare.com/sinoecare/digital_village_v2/dvcp_v2_webapp into build
This commit is contained in:
@@ -12,31 +12,34 @@
|
||||
</template>
|
||||
<template #content>
|
||||
<div class="detail-content__wrapper">
|
||||
<ai-card class="detail-content__wrapper--left" title="基础信息">
|
||||
<template #content>
|
||||
<ai-wrapper>
|
||||
<ai-info-item label="上报人员" :value="detail.name"></ai-info-item>
|
||||
<ai-info-item label="当前状态" :value="dict.getLabel('clapEventStatus', detail.eventStatus)"></ai-info-item>
|
||||
<ai-info-item label="联系方式">{{ detail.phone }}</ai-info-item>
|
||||
<ai-info-item label="上报时间">{{ detail.createTime }}</ai-info-item>
|
||||
<ai-info-item label="事件类型">{{ detail.groupName }}</ai-info-item>
|
||||
<ai-info-item label="事件描述" isLine>{{ detail.content }}</ai-info-item>
|
||||
<ai-info-item label="现场照片" isLine>
|
||||
<ai-uploader :instance="instance" disabled v-model="detail.files"></ai-uploader>
|
||||
</ai-info-item>
|
||||
<ai-info-item label="所属网格">{{ detail.girdName }}</ai-info-item>
|
||||
<ai-info-item label="事件位置" isLine>
|
||||
<div id="map" style="width: 500px; height: 280px;"></div>
|
||||
</ai-info-item>
|
||||
</ai-wrapper>
|
||||
</template>
|
||||
</ai-card>
|
||||
<div class="detail-content__wrapper--left">
|
||||
<ai-card title="基础信息">
|
||||
<template #content>
|
||||
<ai-wrapper>
|
||||
<ai-info-item label="上报人员" :value="detail.name"></ai-info-item>
|
||||
<ai-info-item label="当前状态" :value="dict.getLabel('clapEventStatus', detail.eventStatus)"></ai-info-item>
|
||||
<ai-info-item label="联系方式">{{ detail.phone }}</ai-info-item>
|
||||
<ai-info-item label="上报时间">{{ detail.createTime }}</ai-info-item>
|
||||
<ai-info-item label="事件类型">{{ detail.groupName }}</ai-info-item>
|
||||
<ai-info-item label="事件描述" isLine>{{ detail.content }}</ai-info-item>
|
||||
<ai-info-item label="现场照片" isLine>
|
||||
<ai-uploader :instance="instance" disabled v-model="detail.files"></ai-uploader>
|
||||
</ai-info-item>
|
||||
<ai-info-item label="所属网格">{{ detail.girdName }}</ai-info-item>
|
||||
<ai-info-item label="事件位置" isLine>
|
||||
<div id="map" style="width: 500px; height: 280px;"></div>
|
||||
</ai-info-item>
|
||||
</ai-wrapper>
|
||||
</template>
|
||||
</ai-card>
|
||||
<ai-evaluation :bid="form.id" :info.sync="evaluation"/>
|
||||
</div>
|
||||
<div class="rightZone">
|
||||
<ai-card title="办理进度">
|
||||
<template #content>
|
||||
<el-steps direction="vertical" :active="1">
|
||||
<el-step
|
||||
v-for="(item, i) in processList"
|
||||
v-for="(item, i) in process"
|
||||
:key="i"
|
||||
:title="item.systemExplain"
|
||||
:description="item.doTime">
|
||||
@@ -190,12 +193,18 @@ export default {
|
||||
groupName: '',
|
||||
content: [],
|
||||
eventStatus: '2'
|
||||
}
|
||||
},
|
||||
evaluation: {}
|
||||
}
|
||||
},
|
||||
|
||||
computed: {
|
||||
...mapState(['user'])
|
||||
...mapState(['user']),
|
||||
process: v => [v.processList, v.evaluation.id ? {
|
||||
systemExplain: `${v.evaluation.createUserName}完成评价 (${v.evaluation.score}星评价)`,
|
||||
doTime: v.evaluation.createTime,
|
||||
doExplain: v.evaluation.rateText
|
||||
} : null].flat().filter(Boolean)
|
||||
},
|
||||
|
||||
created() {
|
||||
@@ -501,6 +510,7 @@ export default {
|
||||
.detail-content__wrapper {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
flex-wrap: wrap;
|
||||
|
||||
.detail-content__wrapper--left {
|
||||
flex: 1;
|
||||
|
||||
@@ -86,28 +86,31 @@
|
||||
</ai-wrapper>
|
||||
</template>
|
||||
</ai-card>
|
||||
<ai-card title="处理意见">
|
||||
<ai-card title="卡口处置意见">
|
||||
<template #content>
|
||||
<ai-wrapper
|
||||
style="margin-bottom: 20px;"
|
||||
v-for="item in info.riskDisposalList"
|
||||
:key="item.id"
|
||||
label-width="120px">
|
||||
<ai-info-item label="处理人员" :value="info.createUserName"></ai-info-item>
|
||||
<ai-info-item label="联系电话" :value="info.createUserPhone"></ai-info-item>
|
||||
<ai-info-item label="处理意见" :value="dict.getLabel('EP_handleType', item.handleType)"></ai-info-item>
|
||||
<ai-info-item label="处置人员" :value="item.createUserName"></ai-info-item>
|
||||
<ai-info-item label="联系电话" :value="item.createUserPhone"></ai-info-item>
|
||||
<ai-info-item label="处置意见" :value="dict.getLabel('EP_handleType', item.handleType)"></ai-info-item>
|
||||
<ai-info-item v-if="item.handleType === '2'" label="集中隔离地" :value="dict.getLabel('EP_quarantineAddress', item.quarantineAddress)"></ai-info-item>
|
||||
<ai-info-item v-if="item.handleType === '6'" label="移交对象" :value="dict.getLabel('EP_handoverObject', item.handoverObject)"></ai-info-item>
|
||||
<ai-info-item v-if="item.handleType === '6'" label="移交方式" :value="dict.getLabel('EP_handoverMethod', item.handoverMethod)"></ai-info-item>
|
||||
<ai-info-item v-if="item.handleType === '6'" label="交接人员姓名" :value="info.handoverPersonName"></ai-info-item>
|
||||
<ai-info-item v-if="item.handleType === '6'" label="手机号" :value="info.handoverPersonPhone"></ai-info-item>
|
||||
<ai-info-item label="居家状态" v-if="item.handleType === '3' && item.homeStatus" :value="dict.getLabel('EP_homeStatus', item.homeStatus)"></ai-info-item>
|
||||
<ai-info-item
|
||||
v-if="['2'].includes(item.handleType)"
|
||||
v-if="['2', '3'].includes(item.handleType) && item.homeStatus"
|
||||
label="隔离时间"
|
||||
:value="item.quarantineBeginTime ? item.quarantineBeginTime + '至' + item.quarantineEndTime : ''">
|
||||
</ai-info-item>
|
||||
<ai-info-item v-if="['2'].includes(item.handleType)" label="隔离策略" :value="dict.getLabel('EP_quarantineStrategy', item.quarantineStrategy)"></ai-info-item>
|
||||
<ai-info-item label="图片" isLine v-if="['3', '6'].includes(item.handleType)">
|
||||
<ai-info-item label="隔离策略" v-if="['2', '3'].includes(item.handleType) && item.homeStatus" :value="dict.getLabel('EP_quarantineStrategy', item.quarantineStrategy)"></ai-info-item>
|
||||
<ai-info-item label="管控方式" isLine v-if="['3'].includes(item.handleType) && item.homeStatus" :value="dict.getLabel('EP_controlMethod', item.controlMethod)"></ai-info-item>
|
||||
<ai-info-item v-if="['2', '3', '6'].includes(item.handleType) && item.handoverPersonName" label="移交对象" :value="dict.getLabel('EP_handoverObject', item.handoverObject)"></ai-info-item>
|
||||
<ai-info-item v-if="['2', '3', '6'].includes(item.handleType) && item.handoverPersonName" label="移交方式" :value="dict.getLabel('EP_handoverMethod', item.handoverMethod)"></ai-info-item>
|
||||
<ai-info-item v-if="['2', '3', '6'].includes(item.handleType) && item.handoverPersonName" label="交接人员姓名" :value="item.handoverPersonName"></ai-info-item>
|
||||
<ai-info-item v-if="['2', '3', '6'].includes(item.handleType) && item.handoverPersonName" label="手机号" :value="item.handoverPersonPhone"></ai-info-item>
|
||||
|
||||
<ai-info-item label="交接图片" isLine v-if="['3', '2', '6'].includes(item.handleType) && item.handoverPersonName">
|
||||
<ai-uploader
|
||||
:instance="instance"
|
||||
:value="item.fileList"
|
||||
@@ -119,6 +122,31 @@
|
||||
<ai-empty style="margin-bottom: 60px;" v-if="info.riskDisposalList && !info.riskDisposalList.length"></ai-empty>
|
||||
</template>
|
||||
</ai-card>
|
||||
<ai-card title="社区处置意见">
|
||||
<template #content>
|
||||
<ai-wrapper
|
||||
style="margin-bottom: 20px;"
|
||||
v-if="communityInfo.communityHandleType"
|
||||
label-width="120px">
|
||||
<ai-info-item label="处置人员" :value="communityInfo.createUserName"></ai-info-item>
|
||||
<ai-info-item label="联系电话" :value="communityInfo.createUserPhone"></ai-info-item>
|
||||
<ai-info-item label="处置意见" :value="dict.getLabel('EP_handleType', communityInfo.handleType)"></ai-info-item>
|
||||
<ai-info-item label="居家状态" :value="dict.getLabel('EP_homeStatus', communityInfo.homeStatus)"></ai-info-item>
|
||||
<ai-info-item label="隔离时间" :value="communityInfo.quarantineBeginTime ? communityInfo.quarantineBeginTime + '至' + communityInfo.quarantineEndTime : ''"></ai-info-item>
|
||||
<ai-info-item label="隔离策略" :value="dict.getLabel('EP_quarantineStrategy', communityInfo.quarantineStrategy)"></ai-info-item>
|
||||
<ai-info-item label="管控方式" :value="dict.getLabel('EP_controlMethod', communityInfo.controlMethod)"></ai-info-item>
|
||||
<ai-info-item label="图片" isLine>
|
||||
<ai-uploader
|
||||
:instance="instance"
|
||||
:value="communityInfo.fileList"
|
||||
disabled
|
||||
:limit="9">
|
||||
</ai-uploader>
|
||||
</ai-info-item>
|
||||
</ai-wrapper>
|
||||
<ai-empty style="margin-bottom: 60px;" v-if="!communityInfo.communityHandleType"></ai-empty>
|
||||
</template>
|
||||
</ai-card>
|
||||
</div>
|
||||
</template>
|
||||
</ai-detail>
|
||||
@@ -141,6 +169,7 @@
|
||||
currIndex: 0,
|
||||
isLoading: false,
|
||||
tableData: [],
|
||||
communityInfo: {},
|
||||
colConfigs: [
|
||||
{prop: 'name', label: '姓名', align: 'center' },
|
||||
{prop: 'phone', label: '手机号', align: 'center'}
|
||||
@@ -153,8 +182,7 @@
|
||||
this.isLoading = true
|
||||
if (this.params && this.params.id) {
|
||||
this.id = this.params.id
|
||||
this.$dict.load(['EP_riskLevel', 'EP_handleType', 'EP_registerPersonType', 'EP_highRiskIndustries', 'EP_travelType', 'yesOrNo', 'EP_handoverObject',
|
||||
'EP_handleType', 'EP_quarantineAddress', 'EP_homeStatus', 'EP_quarantineStrategy', 'EP_controlMethod', 'EP_handoverMethod', 'EP_abnormalType']).then(() => {
|
||||
this.$dict.load(['EP_handleType', 'EP_registerPersonType', 'EP_highRiskIndustries', 'EP_travelType', 'yesOrNo', 'EP_handoverObject', 'EP_quarantineAddress', 'EP_homeStatus', 'EP_quarantineStrategy', 'EP_controlMethod', 'EP_handoverMethod', 'EP_abnormalType']).then(() => {
|
||||
this.getInfo(this.params.id)
|
||||
})
|
||||
}
|
||||
@@ -165,8 +193,9 @@
|
||||
this.instance.post(`/app/appepidemicpreventionregisterinfo/queryDetailById?id=${id}`).then(res => {
|
||||
if (res.code === 0) {
|
||||
this.info = res.data
|
||||
this.info.checkPhoto = res.data.checkPhoto ? JSON.parse(res.data.checkPhoto) : []
|
||||
|
||||
this.communityInfo = res.data.riskDisposalList.filter(v => !!v.communityHandleType).length ? res.data.riskDisposalList.filter(v => !!v.communityHandleType)[0] : {}
|
||||
this.info.riskDisposalList = res.data.riskDisposalList.filter(v => !v.communityHandleType)
|
||||
this.info.travelTypeNames = res.data.travelType.split(',').map(v => {
|
||||
return this.dict.getLabel('EP_travelType', v)
|
||||
}).join(',')
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
placeholder="选择结束日期"
|
||||
@change="search.current = 1, getList()">
|
||||
</el-date-picker>
|
||||
<ai-download :instance="instance" url="/app/appepidemicpreventionregisterinfo/export" :params="search" fileName="卡口登记" :disabled="tableData.length == 0">
|
||||
<ai-download :instance="instance" url="/app/appepidemicpreventionregisterinfo/export" :params="params" fileName="卡口登记" :disabled="tableData.length == 0">
|
||||
<el-button icon="iconfont iconExported" :disabled="tableData.length == 0">导出</el-button>
|
||||
</ai-download>
|
||||
</template>
|
||||
@@ -139,7 +139,16 @@
|
||||
},
|
||||
|
||||
computed: {
|
||||
...mapState(['user'])
|
||||
...mapState(['user']),
|
||||
|
||||
params () {
|
||||
return {
|
||||
...this.search,
|
||||
arriveAreaId: this.search.arriveAreaId,
|
||||
queryBeginTime: this.search.queryBeginTime ? this.search.queryBeginTime + ' 00:00:00' : '',
|
||||
queryEndTime: this.search.queryEndTime ? this.search.queryEndTime + ' 23:59:59' : ''
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
created () {
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
<ai-import :instance="instance" :dict="dict" type="appepidemicpreventiondatamatch" name="数据比对" @success="getList()">
|
||||
<el-button icon="iconfont iconImport" type="primary">导入</el-button>
|
||||
</ai-import>
|
||||
<ai-download :instance="instance" url="/app/appepidemicpreventiondatamatch/export" :params="search" fileName="数据比对" :disabled="tableData.length == 0">
|
||||
<ai-download :instance="instance" url="/app/appepidemicpreventiondatamatch/export" :params="params" fileName="数据比对" :disabled="tableData.length == 0">
|
||||
<el-button icon="iconfont iconExported" :disabled="tableData.length == 0">导出</el-button>
|
||||
</ai-download>
|
||||
</template>
|
||||
@@ -50,6 +50,7 @@
|
||||
<el-table-column slot="nucleicAcidSamplingProve" label="核酸结果" align="center">
|
||||
<template slot-scope="{ row }">
|
||||
<ai-uploader
|
||||
v-if="row.nucleicAcidSamplingProve"
|
||||
:instance="instance"
|
||||
:value="[{url: row.nucleicAcidSamplingProve}]"
|
||||
disabled
|
||||
@@ -130,6 +131,17 @@
|
||||
}
|
||||
},
|
||||
|
||||
computed: {
|
||||
params () {
|
||||
return {
|
||||
...this.search,
|
||||
arriveAreaId: this.search.arriveAreaId,
|
||||
queryBeginTime: this.search.queryBeginTime ? this.search.queryBeginTime + ' 00:00:00' : '',
|
||||
queryEndTime: this.search.queryEndTime ? this.search.queryEndTime + ' 23:59:59' : ''
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
created () {
|
||||
this.loading = true
|
||||
|
||||
|
||||
@@ -16,6 +16,10 @@
|
||||
<ai-info-item label="单位名称" :value="info.organizationName"></ai-info-item>
|
||||
<ai-info-item label="选举方式">
|
||||
{{ info.electionMethod==0? '等额':'差额'}}
|
||||
<el-tooltip class="item" effect="dark" content="差额选举:候选人数多于应选人数的选举方式;
|
||||
等额选举:候选人数与应选人数相等的选举方式。" placement="top">
|
||||
<i class="el-icon-info" style="margin-right: 8px"></i>
|
||||
</el-tooltip>
|
||||
</ai-info-item>
|
||||
<ai-info-item label="应选人数" :value="info.candidatesNumber"></ai-info-item>
|
||||
<ai-info-item label="投票日期" :value="info.votingDate"></ai-info-item>
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
<script>
|
||||
import addChange from "./components/addChange.vue";
|
||||
import List from "./components/List.vue";
|
||||
import organizationSetting from "./components/organizationSetting.vue";
|
||||
|
||||
export default {
|
||||
name: "AppOrganizationChange",
|
||||
@@ -17,7 +18,11 @@ export default {
|
||||
instance: Function,
|
||||
dict: Object,
|
||||
},
|
||||
components: {List, addChange},
|
||||
components: {
|
||||
List,
|
||||
addChange,
|
||||
organizationSetting,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
component: "List",
|
||||
@@ -33,6 +38,11 @@ export default {
|
||||
this.params = data.params;
|
||||
}
|
||||
|
||||
if (data.type === "organizationSetting") {
|
||||
this.component = "organizationSetting";
|
||||
this.params = data.params;
|
||||
}
|
||||
|
||||
if (data.type === "addChange") {
|
||||
this.component = "addChange";
|
||||
this.params = data.params;
|
||||
|
||||
@@ -3,28 +3,27 @@
|
||||
<template slot="title">
|
||||
<ai-title title="组织换届" isShowBottomBorder>
|
||||
<template slot="rightBtn">
|
||||
<el-button size="small" type="primary" icon="iconfont iconAdd" @click="toAdd('')" >换届设置</el-button>
|
||||
<el-button size="small" type="primary" icon="iconfont iconAdd" @click="toSetting('')" >换届设置</el-button>
|
||||
</template>
|
||||
</ai-title>
|
||||
</template>
|
||||
<template #left>
|
||||
<ai-tree-menu title="组织目录" searchPlaceholder="请输入组织名称" @search="onSearch">
|
||||
<ai-party-tree
|
||||
:filter-node-method="filterNode"
|
||||
ref="tree"
|
||||
:instance="instance"
|
||||
:root="user.info.organizationId"
|
||||
:current-node-key="selected.id"
|
||||
@select="onTreeChange"/>
|
||||
:filter-node-method="filterNode"
|
||||
ref="tree"
|
||||
:instance="instance"
|
||||
:root="user.info.organizationId"
|
||||
:current-node-key="selected.id"
|
||||
@select="onTreeChange"/>
|
||||
</ai-tree-menu>
|
||||
</template>
|
||||
<template slot="content" class="content">
|
||||
<el-tabs v-model="currIndex" >
|
||||
<el-tab-pane v-for="(tab,i) in tabs" :key="i" :label="tab.label">
|
||||
<component :ref="String(i)" v-if="currIndex == i" :is="tab.comp" lazy :instance="instance"
|
||||
<component :ref="tab.name" v-if="currIndex == String(i)" :is="tab.comp" lazy :instance="instance" :selected="selected"
|
||||
:dict="dict" :permissions="permissions" v-on="$listeners"/>
|
||||
</el-tab-pane>
|
||||
|
||||
</el-tabs>
|
||||
<div class="add_btn">
|
||||
<el-button size="small" type="primary" icon="iconfont iconAdd" @click="toAdd('')" >新增换届</el-button>
|
||||
@@ -34,7 +33,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {mapState} from 'vuex'
|
||||
import { mapState } from 'vuex'
|
||||
import moment from './moment.vue'
|
||||
import history from './history.vue'
|
||||
|
||||
@@ -48,34 +47,11 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
search: {
|
||||
current: 1,
|
||||
size: 10,
|
||||
con: '',
|
||||
age: [],
|
||||
sex: '',
|
||||
nation: '',
|
||||
partyStatus: '',
|
||||
flowStatus: '',
|
||||
education: '',
|
||||
partyPosition: '',
|
||||
birthStart: '',
|
||||
birthEnd: '',
|
||||
turnPositiveStart: '',
|
||||
turnPositiveEnd: '',
|
||||
joinPartyStart: '',
|
||||
joinPartyEnd: ''
|
||||
},
|
||||
orgName: '',
|
||||
loading: false,
|
||||
total: 0,
|
||||
tableData: [],
|
||||
ids: '',
|
||||
tabs: [
|
||||
{label: '当前届次', name: 'moment', comp: moment, permission: ''},
|
||||
{label: '历史届次', name: 'history', comp: history, permission: ''}
|
||||
],
|
||||
currIndex: '0'
|
||||
currIndex: '0',
|
||||
}
|
||||
},
|
||||
components: {
|
||||
@@ -88,78 +64,25 @@ export default {
|
||||
orgTree() {
|
||||
return this.$refs.tree?.$refs?.partyTree
|
||||
},
|
||||
// exportQuery() {
|
||||
// let {id: partyOrgId} = this.selected
|
||||
// return {
|
||||
// ids: this.ids ? this.ids.split(',') : [],
|
||||
// ...this.search, partyOrgId
|
||||
// }
|
||||
// },
|
||||
// isShowAddBtn() {
|
||||
// return this.selected.isLeaf == 1
|
||||
// }
|
||||
},
|
||||
created() {
|
||||
// this.dict.load('disciplinary', 'partyType', 'sex', 'nation', 'education', 'partyStatus', 'partyPosition', 'flowStatus', 'auditStatus')
|
||||
// this.getList()
|
||||
console.log(this.user);
|
||||
},
|
||||
|
||||
methods: {
|
||||
showNeighbourSetting(id) {
|
||||
this.$router.push({query: {id}, hash: "#ns"})
|
||||
},
|
||||
onTreeChange(e) {
|
||||
this.$emit("update:selected", e)
|
||||
this.getList(e.id)
|
||||
this.$refs[this.tabs[Number(this.currIndex)].name][0].getList(e.id)
|
||||
},
|
||||
|
||||
onSearch(v) {
|
||||
this.orgTree.filter(v)
|
||||
},
|
||||
|
||||
getList(partyOrgId) {
|
||||
if (!this.user.info.organizationId) return
|
||||
|
||||
this.loading = true
|
||||
partyOrgId = partyOrgId || this.selected.id
|
||||
this.instance.post(`/app/appparty/list`, null, {
|
||||
params: {partyOrgId, ...this.search, age: this.search.age?.join(',')}
|
||||
}).then(res => {
|
||||
this.loading = false
|
||||
if (res?.data) {
|
||||
this.tableData = res.data.records
|
||||
this.total = res.data.total
|
||||
}
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
removeAll() {
|
||||
if (!this.ids) {
|
||||
return this.$message.error('请选择党员')
|
||||
}
|
||||
this.remove(this.ids)
|
||||
},
|
||||
handleSelectionChange(e) {
|
||||
this.ids = e.map(v => v.id).join(',')
|
||||
},
|
||||
filterNode(value, data) {
|
||||
if (!value) return true
|
||||
return data.name.indexOf(value) !== -1
|
||||
},
|
||||
remove(id) {
|
||||
this.$confirm('确定删除该数据?').then(() => {
|
||||
this.instance.post(`/app/appparty/delete?ids=${id}`).then(res => {
|
||||
if (res.code == 0) {
|
||||
this.$message.success('删除成功!')
|
||||
this.getList()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
toDetail(id) {
|
||||
this.$router.push({query: {id}})
|
||||
},
|
||||
toAdd(id) {
|
||||
this.$emit('change', {
|
||||
type: 'addChange',
|
||||
@@ -167,6 +90,14 @@ export default {
|
||||
id: id || ''
|
||||
}
|
||||
})
|
||||
},
|
||||
toSetting(id) {
|
||||
this.$emit('change', {
|
||||
type: 'organizationSetting',
|
||||
params: {
|
||||
id: id || ''
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,71 +1,80 @@
|
||||
<template>
|
||||
<ai-list class="addChange">
|
||||
<template #title>
|
||||
<ai-title title="基本信息" isShowBottomBorder isShowBack @onBackClick="cancel(false)" />
|
||||
</template>
|
||||
<template #content>
|
||||
<div class="Form" style="padding: 0 200px;">
|
||||
<el-form ref="form" :model="form" label-width="100px" label-position="right">
|
||||
<ai-bar title="基本信息"></ai-bar>
|
||||
<section class="addChange">
|
||||
<ai-detail>
|
||||
<ai-title slot="title" title="新增换届" isShowBottomBorder isShowBack @onBackClick="cancel(false)" />
|
||||
<template #content>
|
||||
<ai-card title="基本信息">
|
||||
<template #content>
|
||||
<div class="Form">
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="100px" label-position="right">
|
||||
<el-row type="flex">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="换届时间" prop="data" :rules="[{ required: true, message: '请选择换届时间', trigger: 'blur' }]">
|
||||
<el-input size="small" :maxlength="30" placeholder="请输入大屏项目名称" v-model="form.name"></el-input>
|
||||
<el-form-item label="换届时间" prop="changeTime">
|
||||
<el-date-picker v-model="form.changeTime" value-format="yyyy-MM-dd" type="date" placeholder="选择日期" style="width:338px">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="届次" prop="noun" :rules="[{ required: true, message: '请输入届次', trigger: 'blur' }]">
|
||||
<el-input size="small" :maxlength="30" placeholder="请输入届次" v-model="form.name"></el-input>
|
||||
<el-form-item label="届次" prop="sessionTime">
|
||||
<el-input size="small" :maxlength="30" placeholder="请输入届次" v-model="form.sessionTime"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
|
||||
<ai-bar title="本届任职(必填)">
|
||||
<template slot="right">
|
||||
<el-button size="small" type="text" icon="iconfont iconAdd" @click="toEdit('')" >添加任职人员</el-button>
|
||||
</template>
|
||||
</ai-bar>
|
||||
<ai-table
|
||||
class="detail-table__table"
|
||||
:tableData="tableDataJob"
|
||||
:col-configs="colConfigsJob"
|
||||
:total="job.total"
|
||||
:current.sync="job.current"
|
||||
:size.sync="job.size"
|
||||
>
|
||||
<!-- @getList="getJobList" -->
|
||||
<el-table-column slot="options" label="操作" align="center">
|
||||
<template slot-scope="{ row }">
|
||||
<el-button type="text" @click="jobEdit(row.id)">编辑</el-button>
|
||||
<el-button type="text" @click="jobDelete(row.id)">删除</el-button>
|
||||
<ai-bar title="本届任职(必填)">
|
||||
<template slot="right">
|
||||
<el-button size="small" type="text" icon="iconfont iconAdd" @click="form.serveList.push({name:null,position:null,type:0})" >添加任职人员</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</ai-table>
|
||||
</ai-bar>
|
||||
<el-table :data="form.serveList" size="mini" border stripe>
|
||||
<el-table-column label="职位" align="center">
|
||||
<template slot-scope="{row}">
|
||||
<el-input class="tableInput" v-model="row.position" clearable placeholder="请输入职位"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="姓名" align="center">
|
||||
<template slot-scope="{row}">
|
||||
<el-input class="tableInput" v-model="row.name" clearable placeholder="请输入姓名" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center">
|
||||
<template slot-scope="{$index}">
|
||||
<el-button type="text" @click="handleDelete($index, 'serveList')">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-form>
|
||||
<ai-bar title="本届候选人">
|
||||
<template slot="right">
|
||||
<el-button size="small" type="text" icon="iconfont iconAdd" @click="toEdit('')" >添加候选人</el-button>
|
||||
<el-button size="small" type="text" icon="iconfont iconAdd" @click="form.candidateList.push({name:null,position:null,type: 1})" >添加候选人</el-button>
|
||||
</template>
|
||||
</ai-bar>
|
||||
<ai-table
|
||||
class="detail-table__table"
|
||||
:tableData="tableDataPerson"
|
||||
:col-configs="colConfigsPerson"
|
||||
:total="person.total"
|
||||
:current.sync="person.current"
|
||||
:size.sync="person.size"
|
||||
>
|
||||
<!-- @getList="getJobList" -->
|
||||
<el-table-column slot="options" label="操作" align="center">
|
||||
<template slot-scope="{ row }">
|
||||
<el-button type="text" @click="jobEdit(row.id)">编辑</el-button>
|
||||
<el-button type="text" @click="jobDelete(row.id)">删除</el-button>
|
||||
<el-table :data="form.candidateList" size="mini" border stripe>
|
||||
<el-table-column label="职位" align="center">
|
||||
<template slot-scope="{row}">
|
||||
<el-input class="tableInput" v-model="row.position" clearable placeholder="请输入职位"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</ai-table>
|
||||
<el-table-column label="候选人" align="center">
|
||||
<template slot-scope="{row}">
|
||||
<el-input class="tableInput" v-model="row.name" clearable placeholder="请输入姓名" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center">
|
||||
<template slot-scope="{$index}">
|
||||
<el-button type="text" @click="handleDelete($index, 'candidateList')">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</template>
|
||||
</ai-list>
|
||||
</template>
|
||||
</ai-card>
|
||||
</template>
|
||||
<template slot="footer" class="footer">
|
||||
<el-button class="delete-btn footer-btn" @click="cancel(false)">取消</el-button>
|
||||
<el-button class="footer-btn" type="primary" @click="confirm()">保存</el-button>
|
||||
</template>
|
||||
</ai-detail>
|
||||
</section>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@@ -79,42 +88,16 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
form: {
|
||||
|
||||
addOrMakeup: true,
|
||||
changeTime: '',
|
||||
sessionTime: '',
|
||||
serveList: [], // 任职人员列表
|
||||
candidateList: [], // 候选人员列表
|
||||
},
|
||||
tableDataJob: [],
|
||||
tableDataPerson: [],
|
||||
totalJob: '',
|
||||
job: {
|
||||
total: 0,
|
||||
current: 1,
|
||||
size: 10,
|
||||
rules: {
|
||||
changeTime: [{ required: true, message: '请选择换届时间', trigger: 'blur' }],
|
||||
sessionTime: [{ required: true, message: '请输入届次', trigger: 'blur' }],
|
||||
},
|
||||
person: {
|
||||
total: 0,
|
||||
current: 1,
|
||||
size: 10,
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
colConfigsJob() {
|
||||
return [
|
||||
{prop: 'content', label: '职位'},
|
||||
{prop: 'content', label: '姓名'},
|
||||
{slot: 'options'},
|
||||
]
|
||||
},
|
||||
colConfigsPerson() {
|
||||
return [
|
||||
{prop: 'content', label: '职位'},
|
||||
{prop: 'content', label: '候选人'},
|
||||
{slot: 'options'},
|
||||
]
|
||||
},
|
||||
formRules() {
|
||||
return {
|
||||
// corpId: [{required: true, message: "请输入CorpId"}],
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@@ -123,11 +106,36 @@ export default {
|
||||
type: 'List',
|
||||
isRefresh: !!isRefresh
|
||||
})
|
||||
}
|
||||
},
|
||||
handleDelete(i, type) {
|
||||
this.$confirm("确定要删除该数据?").then(() => {
|
||||
if(type == 'candidateList') {
|
||||
this.form.candidateList.splice(i, 1)
|
||||
} else if(type == 'serveList') {
|
||||
this.form.serveList.splice(i, 1)
|
||||
}
|
||||
}).catch(() => 0)
|
||||
},
|
||||
confirm() {
|
||||
this.$refs.form.validate((valid) => {
|
||||
if(valid) {
|
||||
this.instance.post(`/app/apporganizationgeneralelection/add`, {
|
||||
...this.form
|
||||
}).then(res=>{
|
||||
if(res.code == 0) {
|
||||
this.$message.success('提交成功')
|
||||
this.cancel(true)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scope>
|
||||
.addChange {}
|
||||
.addChange {
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
@@ -86,7 +86,7 @@ export default {
|
||||
instance: Function,
|
||||
permissions: Function,
|
||||
dict: Object,
|
||||
selected: Object
|
||||
selected: Object,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@@ -128,6 +128,9 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getList(this.selected.id)
|
||||
},
|
||||
methods: {
|
||||
jobEdit() {},
|
||||
jobDelete() {},
|
||||
@@ -140,6 +143,13 @@ export default {
|
||||
}
|
||||
})
|
||||
},
|
||||
getList(id) {
|
||||
this.instance.post(`/app/apporganizationgeneralelection/queryDetailByOrganizationId?organizationId=${id}`).then(res=>{
|
||||
if(res?.data) {
|
||||
console.log(res,'111');
|
||||
}
|
||||
})
|
||||
},
|
||||
handleJobForm() {},
|
||||
handleCandForm() {},
|
||||
}
|
||||
|
||||
@@ -0,0 +1,219 @@
|
||||
<template>
|
||||
<section class="organizationSetting">
|
||||
<!-- <ai-detail class="add" v-if="id && !isEdit">
|
||||
<template slot="title">
|
||||
<ai-title title="换届选举详情" isShowBack isShowBottomBorder @onBackClick="cancel(false)"></ai-title>
|
||||
</template>
|
||||
<template slot="content">
|
||||
<ai-card title="基本信息">
|
||||
<template #right>
|
||||
<span style="color:#2266FF;cursor: pointer;font-size: 12px;" class="iconfont iconEdit" v-if="isEdit==false" @click="isEdit = true">修改</span>
|
||||
</template>
|
||||
<template #content v-if="isEdit == false">
|
||||
<ai-wrapper>
|
||||
<ai-info-item label="标题" :value="info.title"></ai-info-item>
|
||||
<ai-info-item label="投票说明" :value="info.votingInstructions"></ai-info-item>
|
||||
<ai-info-item label="单位名称" :value="info.organizationName"></ai-info-item>
|
||||
<ai-info-item label="选举方式">
|
||||
{{ info.electionMethod==0? '等额':'差额'}}
|
||||
<el-tooltip class="item" effect="dark" content="差额选举:候选人数多于应选人数的选举方式;
|
||||
等额选举:候选人数与应选人数相等的选举方式。" placement="top">
|
||||
<i class="el-icon-info" style="margin-right: 8px"></i>
|
||||
</el-tooltip>
|
||||
</ai-info-item>
|
||||
<ai-info-item label="应选人数" :value="info.candidatesNumber"></ai-info-item>
|
||||
<ai-info-item label="投票日期" :value="info.votingDate"></ai-info-item>
|
||||
<ai-info-item label="候选人" isLine>
|
||||
<span v-for="(item,index) in candidateUsersList" :key="index">
|
||||
{{ item }}
|
||||
<span v-if="index < candidateUsersList.length - 1">、</span>
|
||||
</span>
|
||||
</ai-info-item>
|
||||
<ai-info-item label="投票人" isLine :value="info.voteUsers">
|
||||
<span v-for="(item,index) in voteUsersList" :key="index">
|
||||
{{ item }}
|
||||
<span v-if="index < voteUsersList.length - 1">、</span>
|
||||
</span>
|
||||
</ai-info-item>
|
||||
</ai-wrapper>
|
||||
</template>
|
||||
</ai-card>
|
||||
</template>
|
||||
</ai-detail> -->
|
||||
<ai-detail>
|
||||
<ai-title slot="title" title="换届设置" isShowBottomBorder isShowBack @onBackClick="cancel(true)"/>
|
||||
<template slot="content">
|
||||
<ai-card title="基本信息">
|
||||
<template #content>
|
||||
<div class="tips">
|
||||
<i class="el-icon-warning"></i>
|
||||
系统将在下次换届时间开始前,对“换届提醒人”进行提醒。提醒方式包括平台消息推送、短信提醒。
|
||||
</div>
|
||||
<div class="add-form">
|
||||
<el-form ref="form" :model="form" :rules="formRules" size="small" label-width="150px">
|
||||
<el-form-item label="单位名称">
|
||||
<div>{{ user.info.organizationName }}</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="成立时间">
|
||||
<div>{{ createTime }}</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="换届类型" prop="type">
|
||||
<el-radio v-model="form.type" label="0">三年换届</el-radio>
|
||||
<el-radio v-model="form.type" label="1">五年换届</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="单位名称" prop="organizationName">
|
||||
<el-input size="small" disabled placeholder="请选择所属党组织" v-model="form.organizationName">
|
||||
<template slot="append">
|
||||
<ai-party :instance="instance" size="small" :value="form.organizationId" @origin="handlePartyOrgSelect"/>
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="换届提醒人" prop="userList">
|
||||
<ai-person-select :instance="instance" :customClicker="true" :chooseUserList="chooseUserList"
|
||||
:url="`/app/appparty/list?partyOrgId=${form.organizationId}`" headerTitle="党员列表"
|
||||
:isMultiple="true" dialogTitle="选择抄送人" @selectPerson="selectUser" class="aipersonselect">
|
||||
<template name="option" v-slot:option="{ item }">
|
||||
<span class="iconfont iconProlife">{{ item.name }}</span>
|
||||
</template>
|
||||
</ai-person-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</template>
|
||||
</ai-card>
|
||||
</template>
|
||||
<template slot="footer" class="footer">
|
||||
<el-button class="delete-btn footer-btn" @click="cancel(false)">取消</el-button>
|
||||
<el-button class="footer-btn" type="primary" @click="confirm()">保存</el-button>
|
||||
</template>
|
||||
</ai-detail>
|
||||
|
||||
</section>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState } from 'vuex'
|
||||
export default {
|
||||
name: "organizationSetting",
|
||||
props: {
|
||||
instance: Function,
|
||||
dict: Object,
|
||||
params: Object,
|
||||
},
|
||||
|
||||
data() {
|
||||
let validUser = (rule, value, callback) => {
|
||||
if (!value.length) {
|
||||
return callback(new Error('请选择换届提醒人'));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
return {
|
||||
form: {
|
||||
addOrMakeup: true,
|
||||
organizationId: '',
|
||||
organizationName: '',
|
||||
type: '0',
|
||||
userList: [],
|
||||
},
|
||||
formRules: {
|
||||
type: [{required: true, message: "请选择选举方式", trigger: "blur"}],
|
||||
organizationName: [{required: true, message: "请选择党组织", trigger: "blur"}],
|
||||
userList: [{required: true,validator: validUser, trigger: "blur"}],
|
||||
},
|
||||
chooseUserList: [],
|
||||
createTime: '',
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapState(['user'])
|
||||
},
|
||||
created() {
|
||||
this.getDetail()
|
||||
this.getOrganization()
|
||||
},
|
||||
methods: {
|
||||
cancel (isRefresh) {
|
||||
this.$emit('change', {
|
||||
type: 'List',
|
||||
isRefresh: !!isRefresh
|
||||
})
|
||||
},
|
||||
// 查询组织关系
|
||||
getOrganization() {
|
||||
this.instance.post(`/app/partyOrganization/queryPartyOrganizationServiceList`).then(res=>{
|
||||
if(res?.data) {
|
||||
let data = res.data.filter(item=>item.id == this.user.info.organizationId)
|
||||
this.createTime = data[0].createTime
|
||||
}
|
||||
})
|
||||
},
|
||||
getDetail() {
|
||||
this.instance.post(`/app/apporganizationchangeconfig/queryDetailByOrganizationId?organizationId=${this.user.info.organizationId}`).then((res) => {
|
||||
if(res?.data) {
|
||||
// this.chooseCandidateList = res.data.candidateUsers
|
||||
// this.chooseVoteList = res.data.voteUsers
|
||||
console.log(res);
|
||||
}
|
||||
})
|
||||
},
|
||||
selectUser(v) {
|
||||
this.form.userList = v
|
||||
},
|
||||
selectVote(e) {
|
||||
this.form.voteUsers = e
|
||||
},
|
||||
handlePartyOrgSelect(v) {
|
||||
if(v) {
|
||||
this.form.organizationId = v[0]?.id
|
||||
this.form.organizationName = v[0]?.name
|
||||
|
||||
}
|
||||
},
|
||||
confirm() {
|
||||
// 换届设置
|
||||
this.$refs.form.validate((valid) => {
|
||||
if (valid) {
|
||||
this.instance.post(`/app/apporganizationchangeconfig/update`,{
|
||||
...this.form
|
||||
}).then(res => {
|
||||
if(res.code == 0) {
|
||||
this.$message.success('提交成功')
|
||||
this.cancel(true)
|
||||
}
|
||||
}).catch((err) => {
|
||||
console.log(err);
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scope>
|
||||
.organizationSetting {
|
||||
height: 100%;
|
||||
|
||||
::v-deep .el-date-editor .el-input {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.tips {
|
||||
width: 100%;
|
||||
border: 1px solid #f82;
|
||||
background-color: #fff3e9;
|
||||
color: #f82;
|
||||
padding: 8px 16px;
|
||||
box-sizing: border-box;
|
||||
border-radius: 4px;
|
||||
margin-bottom: 32px;
|
||||
font-size: 13px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user