先提交一波整理的代码

This commit is contained in:
aixianling
2022-10-21 11:53:29 +08:00
parent 1e59444e0e
commit bd41857962
6 changed files with 196 additions and 227 deletions

View File

@@ -3,37 +3,37 @@
<template slot="title">
<ai-title title="组织换届" isShowBottomBorder>
<template slot="rightBtn">
<el-button size="small" type="primary" icon="iconfont iconAdd" @click="toSetting('')" >换届设置</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-tabs v-model="currIndex">
<el-tab-pane v-for="(tab,i) in tabs" :key="i" :label="tab.label">
<component :ref="tab.name" v-if="currIndex == String(i)" :is="tab.comp" lazy :instance="instance" :selected="selected"
:dict="dict" :permissions="permissions" v-on="$listeners"/>
: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>
<el-button size="small" type="primary" icon="iconfont iconAdd" @click="toAdd('')">新增换届</el-button>
</div>
</template>
</ai-list>
</template>
<script>
import { mapState } from 'vuex'
import {mapState} from 'vuex'
import moment from './moment.vue'
import history from './history.vue'
@@ -60,7 +60,7 @@ export default {
},
computed: {
...mapState(['user']),
orgTree() {
return this.$refs.tree?.$refs?.partyTree
},
@@ -84,20 +84,10 @@ export default {
return data.name.indexOf(value) !== -1
},
toAdd(id) {
this.$emit('change', {
type: 'addChange',
params: {
id: id || ''
}
})
this.$router.push({hash: "#add", query: {id}})
},
toSetting(id) {
this.$emit('change', {
type: 'organizationSetting',
params: {
id: id || ''
}
})
this.$router.push({hash: "#setting", query: {id}})
}
}
}
@@ -111,7 +101,7 @@ export default {
display: flex;
align-items: center;
}
.set_btn {
position: absolute;
right: 20px;
@@ -128,7 +118,7 @@ export default {
}
}
::v-deep .audit-0 {
color: #FF8822 !important;
}
@@ -147,9 +137,10 @@ export default {
width: 100%;
}
}
::v-deep .is-current>.el-tree-node__content{
width: 100%!important;
padding-right: 16px!important;
::v-deep .is-current > .el-tree-node__content {
width: 100% !important;
padding-right: 16px !important;
}
}
</style>

View File

@@ -1,30 +1,27 @@
<template>
<section class="addChange">
<ai-detail>
<ai-title slot="title" title="新增换届" isShowBottomBorder isShowBack @onBackClick="cancel(false)" />
<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-form ref="form" :model="form" :rules="rules" label-width="100px" label-position="right" size="small">
<el-row type="flex">
<el-col :span="12">
<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="sessionTime">
<el-input size="small" :maxlength="30" placeholder="请输入届次" v-model="form.sessionTime"></el-input>
</el-form-item>
</el-col>
<el-form-item class="fill" 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-form-item class="fill" label="届次" prop="sessionTime">
<el-input size="small" :maxlength="30" placeholder="请输入届次" v-model="form.sessionTime"></el-input>
</el-form-item>
</el-row>
<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>
<ai-title title="本届任职(必填)">
<template slot="rightBtn">
<el-button size="small" type="text" icon="iconfont iconAdd" @click="form.serveList.push({name:null,position:null,type:0})">添加任职人员
</el-button>
</template>
</ai-bar>
</ai-title>
<el-table :data="form.serveList" size="mini" border stripe>
<el-table-column label="职位" align="center">
<template slot-scope="{row}">
@@ -33,7 +30,7 @@
</el-table-column>
<el-table-column label="姓名" align="center">
<template slot-scope="{row}">
<el-input class="tableInput" v-model="row.name" clearable placeholder="请输入姓名" />
<el-input class="tableInput" v-model="row.name" clearable placeholder="请输入姓名"/>
</template>
</el-table-column>
<el-table-column label="操作" align="center">
@@ -43,11 +40,12 @@
</el-table-column>
</el-table>
</el-form>
<ai-bar title="本届候选人">
<template slot="right">
<el-button size="small" type="text" icon="iconfont iconAdd" @click="form.candidateList.push({name:null,position:null,type: 1})" >添加候选人</el-button>
<ai-title class="mar-t8" title="本届候选人">
<template slot="rightBtn">
<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-title>
<el-table :data="form.candidateList" size="mini" border stripe>
<el-table-column label="职位" align="center">
<template slot-scope="{row}">
@@ -56,7 +54,7 @@
</el-table-column>
<el-table-column label="候选人" align="center">
<template slot-scope="{row}">
<el-input class="tableInput" v-model="row.name" clearable placeholder="请输入姓名" />
<el-input class="tableInput" v-model="row.name" clearable placeholder="请输入姓名"/>
</template>
</el-table-column>
<el-table-column label="操作" align="center">
@@ -95,34 +93,31 @@ export default {
candidateList: [], // 候选人员列表
},
rules: {
changeTime: [{ required: true, message: '请选择换届时间', trigger: 'blur' }],
sessionTime: [{ required: true, message: '请输入届次', trigger: 'blur' }],
changeTime: [{required: true, message: '请选择换届时间', trigger: 'blur'}],
sessionTime: [{required: true, message: '请输入届次', trigger: 'blur'}],
},
}
},
methods: {
cancel (isRefresh) {
this.$emit('change', {
type: 'List',
isRefresh: !!isRefresh
})
cancel() {
this.$router.push({})
},
handleDelete(i, type) {
this.$confirm("确定要删除该数据?").then(() => {
if(type == 'candidateList') {
if (type == 'candidateList') {
this.form.candidateList.splice(i, 1)
} else if(type == 'serveList') {
} else if (type == 'serveList') {
this.form.serveList.splice(i, 1)
}
}).catch(() => 0)
},
confirm() {
this.$refs.form.validate((valid) => {
if(valid) {
if (valid) {
this.instance.post(`/app/apporganizationgeneralelection/add`, {
...this.form
}).then(res=>{
if(res.code == 0) {
}).then(res => {
if (res.code == 0) {
this.$message.success('提交成功')
this.cancel(true)
}
@@ -138,4 +133,4 @@ export default {
.addChange {
height: 100%;
}
</style>
</style>

View File

@@ -1,17 +1,17 @@
<template>
<ai-list class="history">
<template slot="content">
<ai-search-bar>
<template #left>
<el-button type="primary" icon="iconfont iconEdit" @click="fillupAdd('')">补录</el-button>
</template>
<template #right>
<el-input size="small" placeholder="请输入届次" v-model="search.name" clearable
v-throttle="() => {page.current = 1, getList()}"/>
<el-button icon="iconfont iconResetting" @click="reset('')">重置</el-button>
</template>
</ai-search-bar>
<ai-table
<section class="history">
<ai-search-bar>
<template #left>
<el-button type="primary" icon="iconfont iconEdit" @click="fillupAdd('')">补录</el-button>
</template>
<template #right>
<el-input size="small" placeholder="请输入届次" v-model="search.name" clearable
v-throttle="() => {page.current = 1, getList()}"/>
<el-button icon="iconfont iconResetting" @click="reset('')">重置</el-button>
</template>
</ai-search-bar>
<ai-table
class="detail-table__table"
:tableData="tableData"
:col-configs="colConfigs"
@@ -19,15 +19,14 @@
:current.sync="current"
:size.sync="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>
</template>
</el-table-column>
</ai-table>
</template>
</ai-list>
<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>
</template>
</el-table-column>
</ai-table>
</section>
</template>
<script>
@@ -77,4 +76,4 @@ export default {
padding-top: 0 !important;
background-color: #FFF !important;
}
</style>
</style>

View File

@@ -1,43 +1,22 @@
<template>
<ai-list class="moment">
<template slot="content">
<ai-bar title="总体概况">
<template slot="right">
<el-button size="small" type="text" icon="iconfont iconEdit" @click="toEdit('')" >修改</el-button>
</template>
</ai-bar>
<ai-wrapper>
<ai-info-item label="本届换届时间" :value="111" />
<ai-info-item label="换届类型" :value="111" />
<ai-info-item label="下届换届时间" :value="111" />
<ai-info-item label="当前届次" :value="111" />
</ai-wrapper>
<ai-bar title="本届任职">
<template slot="right">
<el-button size="small" type="text" icon="iconfont iconAdd" @click="dialogJob=true" >添加任职人员</el-button>
</template>
</ai-bar>
<ai-table
class="detail-table__table"
:tableData="tableData"
:col-configs="colConfigs"
:total="totalJob"
:current.sync="current"
:size.sync="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>
</template>
</el-table-column>
</ai-table>
<ai-bar title="本届候选人">
<template slot="right">
<el-button size="small" type="text" icon="iconfont iconAdd" @click="dialogCandidate = true" >添加候选人</el-button>
<section class="moment">
<ai-title title="总体概况" class="mar-b8">
<template slot="rightBtn">
<el-button size="small" type="text" icon="iconfont iconEdit" @click="toEdit('')">修改</el-button>
</template>
</ai-bar>
<ai-table
</ai-title>
<ai-wrapper>
<ai-info-item label="本届换届时间" :value="111"/>
<ai-info-item label="换届类型" :value="111"/>
<ai-info-item label="下届换届时间" :value="111"/>
<ai-info-item label="当前届次" :value="111"/>
</ai-wrapper>
<ai-title title="本届任职" class="mar-b8">
<template slot="rightBtn">
<el-button size="small" type="text" icon="iconfont iconAdd" @click="dialogJob=true">添加任职人员</el-button>
</template>
</ai-title>
<ai-table
class="detail-table__table"
:tableData="tableData"
:col-configs="colConfigs"
@@ -45,38 +24,54 @@
:current.sync="current"
:size.sync="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>
</template>
</el-table-column>
</ai-table>
<ai-dialog :visible.sync="dialogJob" title="添加本届任职人" width="720px" @closed="jobForm={}" @onConfirm="handleJobForm">
<el-form ref="jobForm" size="small" :model="jobForm" :rules="jobRules" label-width="80px">
<el-form-item label="职位" prop="job">
<el-input v-model="jobForm.job" clearable placeholder="请输入"/>
</el-form-item>
<el-form-item label="姓名" prop="name">
<el-input v-model="jobForm.name" clearable placeholder="请输入"/>
</el-form-item>
</el-form>
</ai-dialog>
<ai-dialog :visible.sync="dialogCandidate" title="添加本届候选人" width="720px" @closed="CandFrom={}" @onConfirm="handleCandForm">
<el-form ref="CandFrom" size="small" :model="CandFrom" :rules="candRules" label-width="80px">
<el-form-item label="职位" prop="job">
<el-input v-model="CandFrom.job" clearable placeholder="请输入"/>
</el-form-item>
<el-form-item label="候选人" prop="name">
<el-input type="textarea" rows="5" v-model="CandFrom.name" placeholder="请输入候选人姓名,用逗号隔开"/>
</el-form-item>
</el-form>
</ai-dialog>
</template>
</ai-list>
<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>
</template>
</el-table-column>
</ai-table>
<ai-title title="本届候选人" class="mar-b8">
<template slot="rightBtn">
<el-button size="small" type="text" icon="iconfont iconAdd" @click="dialogCandidate = true">添加候选人</el-button>
</template>
</ai-title>
<ai-table
class="detail-table__table"
:tableData="tableData"
:col-configs="colConfigs"
:total="totalJob"
:current.sync="current"
:size.sync="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>
</template>
</el-table-column>
</ai-table>
<ai-dialog :visible.sync="dialogJob" title="添加本届任职人" width="720px" @closed="jobForm={}" @onConfirm="handleJobForm">
<el-form ref="jobForm" size="small" :model="jobForm" :rules="jobRules" label-width="80px">
<el-form-item label="职位" prop="job">
<el-input v-model="jobForm.job" clearable placeholder="请输入"/>
</el-form-item>
<el-form-item label="姓名" prop="name">
<el-input v-model="jobForm.name" clearable placeholder="请输入"/>
</el-form-item>
</el-form>
</ai-dialog>
<ai-dialog :visible.sync="dialogCandidate" title="添加本届候选人" width="720px" @closed="CandFrom={}" @onConfirm="handleCandForm">
<el-form ref="CandFrom" size="small" :model="CandFrom" :rules="candRules" label-width="80px">
<el-form-item label="职位" prop="job">
<el-input v-model="CandFrom.job" clearable placeholder="请输入"/>
</el-form-item>
<el-form-item label="候选人" prop="name">
<el-input type="textarea" rows="5" v-model="CandFrom.name" placeholder="请输入候选人姓名,用逗号隔开"/>
</el-form-item>
</el-form>
</ai-dialog>
</section>
</template>
<script>
@@ -132,26 +127,26 @@ export default {
this.getList(this.selected.id)
},
methods: {
jobEdit() {},
jobDelete() {},
getJobList() {},
jobEdit() {
},
jobDelete() {
},
getJobList() {
},
toEdit(id) {
this.$emit('change', {
type: 'addChange',
params: {
id: id || ''
}
})
this.$router.push({hash: "#add", query: {id}})
},
getList(id) {
this.instance.post(`/app/apporganizationgeneralelection/queryDetailByOrganizationId?organizationId=${id}`).then(res=>{
if(res?.data) {
console.log(res,'111');
this.instance.post(`/app/apporganizationgeneralelection/queryDetailByOrganizationId?organizationId=${id}`).then(res => {
if (res?.data) {
console.log(res, '111');
}
})
},
handleJobForm() {},
handleCandForm() {},
handleJobForm() {
},
handleCandForm() {
},
}
}
</script>
@@ -161,4 +156,4 @@ export default {
padding-top: 0 !important;
background-color: #FFF !important;
}
</style>
</style>

View File

@@ -50,7 +50,7 @@
系统将在下次换届时间开始前换届提醒人进行提醒提醒方式包括平台消息推送短信提醒
</div>
<div class="add-form">
<el-form ref="form" :model="form" :rules="formRules" size="small" label-width="150px">
<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>
@@ -71,11 +71,11 @@
</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">
: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>
@@ -91,18 +91,18 @@
<el-button class="footer-btn" type="primary" @click="confirm()">保存</el-button>
</template>
</ai-detail>
</section>
</template>
<script>
import { mapState } from 'vuex'
import {mapState} from 'vuex'
export default {
name: "organizationSetting",
props: {
instance: Function,
dict: Object,
params: Object,
},
data() {
@@ -124,7 +124,7 @@ export default {
formRules: {
type: [{required: true, message: "请选择选举方式", trigger: "blur"}],
organizationName: [{required: true, message: "请选择党组织", trigger: "blur"}],
userList: [{required: true,validator: validUser, trigger: "blur"}],
userList: [{required: true, validator: validUser, trigger: "blur"}],
},
chooseUserList: [],
createTime: '',
@@ -138,24 +138,21 @@ export default {
this.getOrganization()
},
methods: {
cancel (isRefresh) {
this.$emit('change', {
type: 'List',
isRefresh: !!isRefresh
})
cancel() {
this.$router.back()
},
// 查询组织关系
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.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) {
if (res?.data) {
// this.chooseCandidateList = res.data.candidateUsers
// this.chooseVoteList = res.data.voteUsers
console.log(res);
@@ -169,27 +166,27 @@ export default {
this.form.voteUsers = e
},
handlePartyOrgSelect(v) {
if(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);
})
}
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);
})
}
})
},
},
@@ -216,4 +213,4 @@ export default {
font-size: 13px;
}
}
</style>
</style>