Browse Source

【党员管理】完成增删改查。

feature
wxz 2 years ago
parent
commit
4dacd289cf
  1. 15
      src/views/modules/communityParty/members/create.vue
  2. 614
      src/views/modules/communityParty/members/detail.vue
  3. 428
      src/views/modules/communityParty/members/memberList.vue
  4. 606
      src/views/modules/communityParty/members/update.vue
  5. 2
      src/views/modules/communityParty/partyOrg/orgTree.vue

15
src/views/modules/communityParty/members/create.vue

@ -318,7 +318,7 @@ export default {
centerFlagOptions: [{ 'label': '是', 'value': 1 }, { 'label': '否', 'value': 0 }], //
flowFlagOptions: [{ 'label': '是', 'value': 1 }, { 'label': '否', 'value': 0 }], //
studyNotNeedOptions: [{ 'label': '是', 'value': 1 }, { 'label': '否', 'value': 0 }], //
retiredFlagOptions: [{ 'label': '是', 'value': 1 }, { 'label': '否', 'value': 0 }], //
retiredFlagOptions: [{ 'label': '是', 'value': 1 }, { 'label': '否', 'value': 0 }], // 退
dataFormClear: null,
dataForm: {
partyOrgId: null,
@ -380,7 +380,7 @@ export default {
* 加载树根
*/
async handleLoadPartyOrgTreeRoot () {
let url = '/actual/base/party/org/loadPartyOrgTreeRoot'
let url = '/actual/base/party/org/listPartyOrgTreeRoot4Select'
let rst = await requestGet(url, {})
@ -404,11 +404,11 @@ export default {
*/
async handleNextOrgTreeClick (node, resolve) {
if (node.level === 1) {
// loadPartyOrgTreeRoot121
resolve(null)
return
}
// if (node.level === 1) {
// // loadPartyOrgTreeRoot121
// resolve(null)
// return
// }
let url = '/actual/base/party/org/listNextLevelPartyOrgTreeNodesByPid'
@ -432,6 +432,7 @@ export default {
this.epmetResultResolver.success((data) => {
this.$message.success('提交成功');
this.handleDlgClose();
this.$emit("finishUpdate");
}).parse(rst);
}
});

614
src/views/modules/communityParty/members/detail.vue

@ -0,0 +1,614 @@
<template>
<el-dialog :visible="visible"
:title="'新增党员'"
:close-on-click-modal="false"
:close-on-press-escape="true"
@close="handleDlgClose">
<el-form class="form"
:model="dataForm"
:rules="dataRule"
ref="dataForm"
@keyup.enter.native=""
:label-width="'130px'">
<el-row :gutter="5">
<el-col :span="12">
<el-form-item prop="partyOrgId"
label="所属党组织">
<el-cascader
style="width: 300px"
v-model="dataForm.partyOrgId"
clearable
disabled
:show-all-levels="false"
@change="handlePartyOrgCascadarChange"
:props="partyOrgTreeCascadarProps"
:options="partyOrgTree"></el-cascader>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="name"
label="党员姓名">
<el-input
v-model="dataForm.name"
style="width: 300px"
clearable
disabled
placeholder="请输入党员姓名"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="5">
<el-col :span="12">
<el-form-item prop="mobile"
label="联系电话">
<el-input
v-model="dataForm.mobile"
style="width: 300px"
clearable
disabled
placeholder="请输入联系电话"
></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="idCard"
label="身份证号">
<el-input
v-model="dataForm.idCard"
style="width: 300px"
clearable
disabled
placeholder="请输入身份证号"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="5">
<el-col :span="12">
<el-form-item prop="birthday"
label="出生日期">
<el-date-picker
v-model="dataForm.birthday"
value-format="yyyy-MM-dd"
style="width: 300px"
type="date"
disabled
placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<!--1 2 0未知-->
<el-form-item prop="gender"
label="性别">
<el-select v-model="dataForm.gender" placeholder="性别" style="width: 300px" disabled>
<el-option
v-for="item in genderOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="5">
<el-col :span="12">
<!--民族-->
<el-form-item prop="nation" label="民族">
<el-select v-model="dataForm.nation" placeholder="请选择" style="width: 300px" disabled>
<el-option v-for="n in nationOptions"
:key="n.value"
:value="n.value"
:label="n.label">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<!--本地户籍-->
<el-form-item prop="localResidenceFlag" label="本地户籍">
<el-select v-model="dataForm.localResidenceFlag" placeholder="请选择" style="width: 300px" disabled>
<el-option v-for="n in localResidenceFlagOptions"
:key="n.value"
:value="n.value"
:label="n.label">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="5">
<el-col :span="24">
<!--户籍地址-->
<el-form-item prop="hjAddress" label="户籍地址">
<el-input v-model="dataForm.hjAddress" style="width: 100%" disabled>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="5">
<el-col :span="24">
<!--居住地址-->
<el-form-item prop="jzAddress" label="居住地址" style="width: 100%" >
<el-input v-model="dataForm.jzAddress" disabled>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="5">
<el-col :span="12">
<!--文化程度-->
<el-form-item prop="cultureLevel" label="文化程度">
<el-select v-model="dataForm.cultureLevel" placeholder="请选择" style="width: 300px" disabled>
<el-option v-for="e in cultureLevelOptions"
:key="e.value"
:value="e.value"
:label="e.label"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<!--党组织职务-->
<el-form-item prop="partyJob" label="党组织职务">
<el-select v-model="dataForm.partyJob" placeholder="请选择" style="width: 300px" disabled>
<el-option v-for="e in partyJobOptions"
:key="e.value"
:value="e.value"
:label="e.label"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="5">
<el-col :span="24">
<!--工作职责-->
<el-form-item prop="duty" label="工作职责" style="width: 100%">
<el-input v-model="dataForm.duty" disabled>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="5">
<el-col :span="12">
<!--入党日期-->
<el-form-item prop="joinTime" label="入党日期" style="width: 100%">
<el-date-picker
v-model="dataForm.joinTime"
style="width: 300px"
value-format="yyyy-MM-dd"
type="date"
disabled
placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<!--positiveTime-->
<el-form-item prop="positiveTime" label="转正日期" style="width: 100%">
<el-date-picker
v-model="dataForm.positiveTime"
value-format="yyyy-MM-dd"
style="width: 300px"
type="date"
disabled
placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="5">
<!--党员中心户-->
<el-form-item prop="centerFlag" label="党员中心户" style="width: 100%">
<el-select v-model="dataForm.centerFlag" placeholder="请选择" style="width: 300px" disabled>
<el-option v-for="e in centerFlagOptions"
:key="e.value"
:value="e.value"
:label="e.label"></el-option>
</el-select>
</el-form-item>
</el-row>
<el-row :gutter="5">
<el-col :span="12">
<!--流动党员-->
<el-form-item prop="flowFlag" label="流动党员">
<el-select v-model="dataForm.flowFlag" placeholder="请选择" style="width: 300px" disabled>
<el-option v-for="e in flowFlagOptions"
:key="e.value"
:value="e.value"
:label="e.label"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<!--流动党员证号-->
<el-form-item prop="flowActNum" label="流动党员证号">
<el-input v-model="dataForm.flowActNum" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="5">
<el-col :span="12">
<!--免学习-->
<el-form-item prop="studyNotNeed" label="免学习">
<el-select v-model="dataForm.studyNotNeed" placeholder="请选择" style="width: 300px" disabled>
<el-option v-for="e in studyNotNeedOptions"
:key="e.value"
:value="e.value"
:label="e.label"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<!--是否退休-->
<el-form-item prop="retiredFlag" label="是否退休">
<el-select v-model="dataForm.retiredFlag" placeholder="请选择" style="width: 300px" disabled>
<el-option v-for="e in retiredFlagOptions"
:key="e.value"
:value="e.value"
:label="e.label"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="5">
<el-col :span="12">
<!--入党时所在党支部-->
<el-form-item prop="joinBranchName" label="入党时所在党支部">
<el-input v-model="dataForm.joinBranchName" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<!--组织关系转入社区时间-->
<el-form-item prop="joinCommunityTime" label="组织关系转入社区时间" style="width: 100%">
<el-date-picker
v-model="dataForm.joinCommunityTime"
value-format="yyyy-MM-dd"
style="width: 300px"
type="date"
disabled
placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="5">
<el-col :span="24">
<!--备注-->
<el-form-item prop="remark" label="备注">
<el-input v-model="dataForm.remark" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<template slot="footer">
<!--<el-button @click="handleDlgClose">取消</el-button>-->
<el-button type="primary" @click="handleSubmitCreate">确定</el-button>
<el-button type="primary" @click="handleDlgClose">取消</el-button>
</template>
</el-dialog>
</template>
<script>
import { requestGet, requestPost } from '@/js/dai/request'
import { EpmetResultResolver } from '@/js/epmet-result-resolver'
export default {
data () {
return {
epmetResultResolver: null,
visible: false,
partyOrgTree: [], //
genderOptions: [{ 'label': '男', 'value': '1' }, { 'label': '女', 'value': '2' }, { 'label': '未知', 'value': '0' }],
nationOptions: [], //
localResidenceFlagOptions: [{ 'label': '是', 'value': 1 }, { 'label': '否', 'value': 0 }], //
cultureLevelOptions: [], //
partyJobOptions: [], //
centerFlagOptions: [{ 'label': '是', 'value': 1 }, { 'label': '否', 'value': 0 }], //
flowFlagOptions: [{ 'label': '是', 'value': 1 }, { 'label': '否', 'value': 0 }], //
studyNotNeedOptions: [{ 'label': '是', 'value': 1 }, { 'label': '否', 'value': 0 }], //
retiredFlagOptions: [{ 'label': '是', 'value': 1 }, { 'label': '否', 'value': 0 }], // 退
dataFormClear: null,
dataForm: {
partyOrgId: null,
name: null,
mobile: null,
idCard: null,
birthday: null,
gender: null,
nation: null,
localResidenceFlag: null,
hjAddress: null,
jzAddress: null,
cultureLevel: null,
partyJob: null,
duty: null,
joinTime: null,
positiveTime: null,
centerFlag: null,
flowFlag: null,
flowActNum: null,
studyNotNeed: null,
retiredFlag: null,
joinBranchName: null,
joinCommunityTime: null,
remark: null,
},
partyOrgTreeCascadarProps: {
lazy: true,
lazyLoad: ((node, resolve) => {
this.handleNextOrgTreeClick(node, resolve)
}),
value: 'id',
label: 'partyOrgName',
checkStrictly: true,
multiple: false
}
}
},
mounted () {
this.epmetResultResolver = new EpmetResultResolver(this);
// dataForm
// this.dataFormClear = Object.create(this.dataForm);
this.dataFormClear = JSON.parse(JSON.stringify(this.dataForm));
},
methods: {
/** ● ====================事件列表====================== **/
/**
* 对话框关闭事件
*/
handleDlgClose () {
this.resetForm();//
this.visible = false;
},
/**
* 加载树根
*/
async handleLoadPartyOrgTreeRoot () {
let url = '/actual/base/party/org/listPartyOrgTreeRoot4Select'
let rst = await requestGet(url, { depth: 8 })
this.epmetResultResolver.success((data) => {
this.setDisableStatus4TreeNode([data]);
this.partyOrgTree.length = 0;
this.partyOrgTree.push(data);
}).parse(rst)
},
/**
* 党组织树选中事件
*/
handlePartyOrgCascadarChange(selectedNode) {
this.dataForm.partyOrgId = selectedNode[selectedNode.length - 1];
},
/**
* 组织树加载下一级
* @returns {Promise<void>}
*/
async handleNextOrgTreeClick (node, resolve) {
// if (node.level === 1) {
// // loadPartyOrgTreeRoot121
// resolve(null)
// return
// }
let url = '/actual/base/party/org/listNextLevelPartyOrgTreeNodesByPid'
let rst = await requestGet(url, {
partyOrgPid: node.data.id
})
this.epmetResultResolver.success((data) => {
this.setDisableStatus4TreeNode([data]);
resolve(data)
}).parse(rst)
},
/**
* 提交创建动作
*/
async handleSubmitCreate () {
this.$refs.dataForm.validate(async (success) => {
if (success) {
let rst = await requestPost("/actual/base/party/member/create", this.dataForm);
this.epmetResultResolver.success((data) => {
this.$message.success('提交成功');
this.handleDlgClose();
}).parse(rst);
}
});
},
/**
* 对话框关闭
* @returns {Promise<void>}
*/
resetForm() {
this.dataForm = this.dataFormClear;
},
/** ● ==================方法列表===================== **/
/**
* 初始化方法
*/
init (partymemberId) {
this.visible = true
//
this.handleLoadPartyOrgTreeRoot()
//
this.loadNations()
//
this.loadCultureLevelOptions()
//
this.loadPartyJobOptions()
this.loadPartymemberDetail(partymemberId)
},
/**
* 加载民族列表
*/
async loadNations () {
let url = '/sys/dict/data/nation'
let rst = await requestPost(url, {})
this.epmetResultResolver.success((data) => {
this.nationOptions = data
}).parse(rst)
},
/**
* 文化程度
* @returns {Promise<void>}
*/
async loadCultureLevelOptions () {
let url = '/sys/dict/data/education'
let rst = await requestPost(url, {})
this.epmetResultResolver.success((data) => {
this.cultureLevelOptions = data
}).parse(rst)
},
//
async loadPartyJobOptions () {
let url = '/sys/dict/data/dictlist'
let rst = await requestPost(url, { 'dictType': 'party_job' })
this.epmetResultResolver.success((data) => {
this.partyJobOptions = data
}).parse(rst)
},
/**
* 为党组织树设置可选状态
* @param treeArray
*/
setDisableStatus4TreeNode(treeArray) {
for (let e of treeArray) {
if (e.partyOrgLevel === 5 || e.partyOrgLevel === 6) {
e.disabled = true;
}
if (e.children && e.children.length > 0) {
this.setDisableStatus4TreeNode(e.children);
}
}
},
/**
* 加载详情
* @returns {Promise<void>}
*/
async loadPartymemberDetail(partymemberId) {
let rst = await requestGet("/actual/base/party/member/detail/" + partymemberId, {})
this.epmetResultResolver.success((detail) => {
this.dataForm = detail;
}).parse(rst);
}
},
computed: {
dataRule () {
return {
partyOrgId: [
{ required: true, message: '请选择党组织', trigger: 'blur' },
],
name: [
{ required: true, message: '请输入党员姓名', trigger: 'blur' },
],
mobile: [
{ required: true, message: '请输入电话', trigger: 'blur' },
],
idCard: [
{ required: true, message: '请输入身份证号', trigger: 'blur' },
],
}
},
},
props: {
// visible: {
// defult: false,
// type: Boolean
// }
}
}
</script>
<style lang="scss" scoped>
@import "@/assets/scss/modules/visual/communityManageForm.scss";
.item_width_1 {
width: 560px;
/deep/ .tox .tox-dialog {
z-index: 20000;
}
}
.div_map {
position: relative;
}
.div_searchmap {
z-index: 5000;
position: absolute;
top: 5px;
left: 5px;
}
.tinymce_view {
height: 400px;
overflow: auto;
}
.text_p {
margin: 0;
padding: 0 10px;
border: 1px solid #d9d9d9;
border-radius: 5px;
> p {
margin: 0;
}
}
.el-row {
margin-bottom: 20px;
&:last-child {
margin-bottom: 0;
}
}
.el-col {
border-radius: 4px;
}
</style>

428
src/views/modules/communityParty/members/memberList.vue

@ -1,4 +1,87 @@
<template>
<div>
<el-card ref="searchConditions">
<el-form class="header_form_box" ref="searchForm" :model="searchForm" :inline="true" :label-width="'110px'">
<el-form-item label="所属党组织">
<el-cascader :options="partyOrgTree"
clearable
placeholder="请选择"
v-model="searchForm.partyOrgId"
@change="handlePartyOrgCascadarChange"
:props="partyOrgTreeCascadarProps">
</el-cascader>
</el-form-item>
<el-form-item label="党员姓名">
<el-input v-model="searchForm.name" placeholder="请输入" clearable></el-input>
</el-form-item>
<el-form-item label="联系电话">
<el-input v-model="searchForm.mobile" placeholder="请输入" clearable></el-input>
</el-form-item>
<el-form-item label="身份证号">
<el-input v-model="searchForm.idCard" placeholder="请输入" clearable></el-input>
</el-form-item>
<el-form-item label="居住地址">
<el-input v-model="searchForm.jzAddress" placeholder="请输入" clearable></el-input>
</el-form-item>
<el-form-item label="职务">
<el-select v-model="searchForm.partyJob" placeholder="请选择">
<el-option v-for="e in partyJobOptions"
:key="e.value"
:value="e.value"
:label="e.label"></el-option>
</el-select>
</el-form-item>
<el-form-item label="入党日期">
<el-date-picker
type="daterange"
clearable
@change="handleJoinTimeChange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
<!--党员中心户-->
<el-form-item prop="centerFlag" label="党员中心户">
<el-select v-model="searchForm.centerFlag" placeholder="请选择" clearable>
<el-option v-for="e in centerFlagOptions"
:key="e.value"
:value="e.value"
:label="e.label"></el-option>
</el-select>
</el-form-item>
<!--流动党员-->
<el-form-item prop="flowFlag" label="流动党员">
<el-select v-model="searchForm.flowFlag" placeholder="请选择" clearable>
<el-option v-for="e in flowFlagOptions"
:key="e.value"
:value="e.value"
:label="e.label"></el-option>
</el-select>
</el-form-item>
<!--流动党员证号-->
<el-form-item prop="flowActNum" label="流动党员证号">
<el-input v-model="searchForm.flowActNum" clearable></el-input>
</el-form-item>
<!--免学习-->
<el-form-item prop="studyNotNeed" label="免学习">
<el-select v-model="searchForm.studyNotNeed" placeholder="请选择" style="width: 300px" clearable>
<el-option v-for="e in studyNotNeedOptions"
:key="e.value"
:value="e.value"
:label="e.label"></el-option>
</el-select>
</el-form-item>
</el-form>
<div>
<el-button type="primary" @click="handleReset">重置</el-button>
<el-button type="primary" @click="handleSearch">查询</el-button>
</div>
</el-card>
<el-card ref="memberList">
<div>
<el-button type="primary"
@ -14,40 +97,364 @@
@click="handleCreateBtnClick">下载模板
</el-button>
<el-button type="primary"
@click="handleCreateBtnClick">批量删除
@click="handleDeleteBatchBtnClick">批量删除
</el-button>
</div>
<div style="margin-top: 10px;margin-bottom: 10px">
<el-table
:data="partymemberList"
border
v-loading="loading"
@select-all="handleMultiSelect"
@selection-change="handleMultiSelect"
style="width: 100%">
<el-table-column
type="selection"
width="55">
</el-table-column>
<el-table-column
prop="partyOrgName"
label="党组织名称"
width="180">
</el-table-column>
<el-table-column
prop="name"
label="姓名"
width="180">
</el-table-column>
<el-table-column
prop="mobile"
label="联系电话">
</el-table-column>
<el-table-column
prop="idCard"
label="身份证号">
</el-table-column>
<el-table-column
prop="jzAddress"
label="居住地址">
</el-table-column>
<el-table-column
prop="partyJobName"
label="职务">
</el-table-column>
<el-table-column
prop="joinTime"
label="入党日期">
</el-table-column>
<el-table-column
prop="centerFlag"
label="党员中心户">
<template slot-scope="scope">
{{ scope.row.centerFlag == null ? null : (scope.row.centerFlag === 1 ? '是' : '否') }}
</template>
</el-table-column>
<el-table-column
prop="flowFlag"
label="流动党员">
<template slot-scope="scope">
{{ scope.row.flowFlag == null ? null : (scope.row.flowFlag === 1 ? '是' : '否') }}
</template>
</el-table-column>
<el-table-column
prop="studyNotNeed"
label="免学习">
<template slot-scope="scope">
{{ scope.row.studyNotNeed == null ? null : scope.row.studyNotNeed === 1 ? '是' : '否' }}
</template>
</el-table-column>
<el-table-column
label="操作"
width="180">
<template slot-scope="scope">
<el-button type="text"
@click="handleDetailBtnClick(scope.row)"
size="small"
class="div-table-button--detail">查看</el-button>
<el-button type="text"
@click="handleUpdateBtnClick(scope.row)"
size="small"
class="div-table-button--detail">编辑</el-button>
<el-button type="text"
@click="handleDeleteSingleBtnClick(scope.row)"
size="small"
class="div-table-button--detail">删除</el-button>
</template>
</el-table-column>
</el-table>
</div>
<Create ref="create" ></Create>
<div>
<el-pagination
background
layout="sizes, prev, pager, next"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="searchForm.pageNo"
:page-sizes="pageSizes"
:page-size="searchForm.pageSize"
:total="total">
</el-pagination>
</div>
</el-card>
<Create ref="create" @finishUpdate="search"></Create>
<Detail ref="detail" @finishUpdate="search"></Detail>
<Update ref="update" @finishUpdate="search"></Update>
</div>
</template>
<script>
import { defineComponent } from 'vue'
import { Loading } from 'element-ui';
import Create from './create'
import Detail from './detail'
import Update from './update'
// import Update from '@/views/modules/communityParty/members/update.vue'
import SelectPrincipal from '@/views/modules/communityParty/partyOrg/select_principal.vue'
import { requestGet, requestPost } from '@/js/dai/request'
import { EpmetResultResolver } from '@/js/epmet-result-resolver'
export default {
components: { Create },
components: { Create, Detail, Update },
mounted () {
this.epmetResultResolver = new EpmetResultResolver(this)
// dataForm
this.searchFormClear = JSON.parse(JSON.stringify(this.searchForm))
//
this.loadPartyOrgOptions()
//
this.loadPartyJobOptions();
//
this.search();
},
data () {
return {
createDlgShow: false
loading: false,
epmetResultResolver: null,
createDlgShow: false,
detailDlgShow: false,
updateDlgShow: false,
total: 0, //
multiSelectedRows: [], //
pageSizes: [20, 50, 100], //
partymemberList: [],//
partyOrgTree: [],//
partyJobOptions: [],//
centerFlagOptions: [{ 'label': '是', 'value': 1 }, { 'label': '否', 'value': 0 }], //
flowFlagOptions: [{ 'label': '是', 'value': 1 }, { 'label': '否', 'value': 0 }], //
studyNotNeedOptions: [{ 'label': '是', 'value': 1 }, { 'label': '否', 'value': 0 }], //
searchFormClear: null,
//
searchForm: {
partyOrgId: null,
name: null,
mobile: null,
idCard: null,
jzAddress: null,
partyJob: null,
joinTimeStart: null,
joinTimeEnd: null,
centerFlag: null,
flowFlag: null,
flowActNum: null,
studyNotNeed: null,
pageNo: 0, //
pageSize: 0, //
},
partyOrgTreeCascadarProps: {
lazy: true,
lazyLoad: ((node, resolve) => {
this.handleNextOrgTreeClick(node, resolve)
}),
value: 'id',
label: 'partyOrgName',
checkStrictly: true,
multiple: false
}
}
},
methods: {
/** ● ==================事件================ **/
handleMultiSelect(selectedRows) {
this.multiSelectedRows = selectedRows;
},
/**
* 新增按钮点击
*/
handleCreateBtnClick() {
this.createDlgShow = true;
this.$refs['create'].init();
}
handleCreateBtnClick () {
this.createDlgShow = true
this.$refs['create'].init()
},
/**
* 查看详情
*/
handleDetailBtnClick(row) {
this.detailDlgShow = true;
this.$refs['detail'].init(row.id);
},
/**
* 更新按钮点击
* @param row
*/
handleUpdateBtnClick(row) {
this.detailDlgShow = true;
this.$refs['update'].init(row.id);
},
/**
* 单个删除
*/
handleDeleteSingleBtnClick(row) {
this.$confirm('记录删除后无法恢复,是否确认继续?', '警告').then(async () => {
let rst = await requestPost("/actual/base/party/member/deleteSingle/" + row.id, {})
this.epmetResultResolver.success((data) => {
this.$message.success('删除成功');
this.search();
}).parse(rst);
})
},
/**
* 批量删除
*/
handleDeleteBatchBtnClick() {
if (this.multiSelectedRows.length == 0) {
this.$message.warning('请选中至少一条记录');
return;
}
this.$confirm('记录删除后无法恢复,是否确认继续?', '警告').then(async () => {
let rst = await requestPost("/actual/base/party/member/deleteBatch", this.multiSelectedRows.map(item => item.id));
this.epmetResultResolver.success((data) => {
this.$message.success('删除成功');
this.search();
}).parse(rst);
})
},
/**
* 组织树加载下一级
* @returns {Promise<void>}
*/
async handleNextOrgTreeClick (node, resolve) {
if (node.level === 1) {
// loadPartyOrgTreeRoot121
resolve(null)
return
}
let url = '/actual/base/party/org/listNextLevelPartyOrgTreeNodesByPid'
let rst = await requestGet(url, {
partyOrgPid: node.data.id
})
this.epmetResultResolver.success((data) => {
// this.setDisableStatus4TreeNode([data]);
resolve(data)
}).parse(rst)
},
/**
* 党组织级联框变更事件
*/
handlePartyOrgCascadarChange (selectedNode) {
this.searchForm.partyOrgId = selectedNode[selectedNode.length - 1]
},
/**
* 入党时间选择框
*/
handleJoinTimeChange(dateRange) {
this.searchForm.joinTimeStart = dateRange[0];
this.searchForm.joinTimeEnd = dateRange[1];
},
/**
* 搜索
*/
handleSearch() {
this.search();
},
/**
* 重置表单
*/
handleReset() {
this.searchForm = this.searchFormClear;
},
/** ● ========================方法======================== **/
async loadPartyOrgOptions () {
let url = '/actual/base/party/org/listPartyOrgTreeRoot'
let rst = await requestGet(url, {})
this.epmetResultResolver.success((data) => {
// this.setDisableStatus4TreeNode([data]);
this.partyOrgTree.length = 0
this.partyOrgTree.push(data)
}).parse(rst)
},
//
async loadPartyJobOptions () {
let url = '/sys/dict/data/dictlist'
let rst = await requestPost(url, { 'dictType': 'party_job' })
this.epmetResultResolver.success((data) => {
this.partyJobOptions = data
}).parse(rst)
},
/**
* 搜索
* @returns {Promise<void>}
*/
async search() {
this.loading = true;
let rst = await requestPost("/actual/base/party/member/search", { ...this.searchForm });
this.epmetResultResolver.success((data) => {
this.partymemberList = data.list;
this.total = data.total;
this.loading = false;
}).parse(rst);
},
/**
* 每页条数变化
* @param pageSize
*/
handleSizeChange(pageSize) {
this.searchForm.pageSize = pageSize;
this.search();
},
/**
* 翻页
* @param pageNo
*/
handleCurrentChange(pageNo) {
this.searchForm.pageNo = pageNo;
this.search();
},
}
}
@ -138,4 +545,9 @@ export default {
margin-top: 20px;
text-align: center;
}
.header_form_box {
display: flex;
flex-wrap: wrap;
}
</style>

606
src/views/modules/communityParty/members/update.vue

@ -0,0 +1,606 @@
<template>
<el-dialog :visible="visible"
:title="'新增党员'"
:close-on-click-modal="false"
:close-on-press-escape="true"
@close="handleDlgClose">
<el-form class="form"
:model="dataForm"
:rules="dataRule"
ref="dataForm"
@keyup.enter.native=""
:label-width="'130px'">
<el-row :gutter="5">
<el-col :span="12">
<el-form-item prop="partyOrgId"
label="所属党组织">
<el-cascader
style="width: 300px"
v-model="dataForm.partyOrgId"
clearable
@change="handlePartyOrgCascadarChange"
:props="partyOrgTreeCascadarProps"
:options="partyOrgTree"></el-cascader>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="name"
label="党员姓名">
<el-input
v-model="dataForm.name"
style="width: 300px"
clearable
placeholder="请输入党员姓名"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="5">
<el-col :span="12">
<el-form-item prop="mobile"
label="联系电话">
<el-input
v-model="dataForm.mobile"
style="width: 300px"
clearable
placeholder="请输入联系电话"
></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="idCard"
label="身份证号">
<el-input
v-model="dataForm.idCard"
style="width: 300px"
clearable
placeholder="请输入身份证号"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="5">
<el-col :span="12">
<el-form-item prop="birthday"
label="出生日期">
<el-date-picker
v-model="dataForm.birthday"
value-format="yyyy-MM-dd"
style="width: 300px"
type="date"
placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<!--1 2 0未知-->
<el-form-item prop="gender"
label="性别">
<el-select v-model="dataForm.gender" placeholder="性别" style="width: 300px" >
<el-option
v-for="item in genderOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="5">
<el-col :span="12">
<!--民族-->
<el-form-item prop="nation" label="民族">
<el-select v-model="dataForm.nation" placeholder="请选择" style="width: 300px" >
<el-option v-for="n in nationOptions"
:key="n.value"
:value="n.value"
:label="n.label">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<!--本地户籍-->
<el-form-item prop="localResidenceFlag" label="本地户籍">
<el-select v-model="dataForm.localResidenceFlag" placeholder="请选择" style="width: 300px" >
<el-option v-for="n in localResidenceFlagOptions"
:key="n.value"
:value="n.value"
:label="n.label">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="5">
<el-col :span="24">
<!--户籍地址-->
<el-form-item prop="hjAddress" label="户籍地址">
<el-input v-model="dataForm.hjAddress" style="width: 100%" >
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="5">
<el-col :span="24">
<!--居住地址-->
<el-form-item prop="jzAddress" label="居住地址" style="width: 100%" >
<el-input v-model="dataForm.jzAddress" >
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="5">
<el-col :span="12">
<!--文化程度-->
<el-form-item prop="cultureLevel" label="文化程度">
<el-select v-model="dataForm.cultureLevel" placeholder="请选择" style="width: 300px" >
<el-option v-for="e in cultureLevelOptions"
:key="e.value"
:value="e.value"
:label="e.label"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<!--党组织职务-->
<el-form-item prop="partyJob" label="党组织职务">
<el-select v-model="dataForm.partyJob" placeholder="请选择" style="width: 300px" >
<el-option v-for="e in partyJobOptions"
:key="e.value"
:value="e.value"
:label="e.label"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="5">
<el-col :span="24">
<!--工作职责-->
<el-form-item prop="duty" label="工作职责" style="width: 100%">
<el-input v-model="dataForm.duty" >
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="5">
<el-col :span="12">
<!--入党日期-->
<el-form-item prop="joinTime" label="入党日期" style="width: 100%">
<el-date-picker
v-model="dataForm.joinTime"
style="width: 300px"
value-format="yyyy-MM-dd"
type="date"
placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<!--positiveTime-->
<el-form-item prop="positiveTime" label="转正日期" style="width: 100%">
<el-date-picker
v-model="dataForm.positiveTime"
value-format="yyyy-MM-dd"
style="width: 300px"
type="date"
placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="5">
<!--党员中心户-->
<el-form-item prop="centerFlag" label="党员中心户" style="width: 100%">
<el-select v-model="dataForm.centerFlag" placeholder="请选择" style="width: 300px" >
<el-option v-for="e in centerFlagOptions"
:key="e.value"
:value="e.value"
:label="e.label"></el-option>
</el-select>
</el-form-item>
</el-row>
<el-row :gutter="5">
<el-col :span="12">
<!--流动党员-->
<el-form-item prop="flowFlag" label="流动党员">
<el-select v-model="dataForm.flowFlag" placeholder="请选择" style="width: 300px" >
<el-option v-for="e in flowFlagOptions"
:key="e.value"
:value="e.value"
:label="e.label"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<!--流动党员证号-->
<el-form-item prop="flowActNum" label="流动党员证号">
<el-input v-model="dataForm.flowActNum" ></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="5">
<el-col :span="12">
<!--免学习-->
<el-form-item prop="studyNotNeed" label="免学习">
<el-select v-model="dataForm.studyNotNeed" placeholder="请选择" style="width: 300px" >
<el-option v-for="e in studyNotNeedOptions"
:key="e.value"
:value="e.value"
:label="e.label"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<!--是否退休-->
<el-form-item prop="retiredFlag" label="是否退休">
<el-select v-model="dataForm.retiredFlag" placeholder="请选择" style="width: 300px" >
<el-option v-for="e in retiredFlagOptions"
:key="e.value"
:value="e.value"
:label="e.label"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="5">
<el-col :span="12">
<!--入党时所在党支部-->
<el-form-item prop="joinBranchName" label="入党时所在党支部">
<el-input v-model="dataForm.joinBranchName" ></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<!--组织关系转入社区时间-->
<el-form-item prop="joinCommunityTime" label="组织关系转入社区时间" style="width: 100%">
<el-date-picker
v-model="dataForm.joinCommunityTime"
value-format="yyyy-MM-dd"
style="width: 300px"
type="date"
placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="5">
<el-col :span="24">
<!--备注-->
<el-form-item prop="remark" label="备注">
<el-input v-model="dataForm.remark" ></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<template slot="footer">
<!--<el-button @click="handleDlgClose">取消</el-button>-->
<el-button type="primary" @click="handleSubmitUpdate">确定</el-button>
<el-button type="primary" @click="handleDlgClose">取消</el-button>
</template>
</el-dialog>
</template>
<script>
import { requestGet, requestPost } from '@/js/dai/request'
import { EpmetResultResolver } from '@/js/epmet-result-resolver'
export default {
data () {
return {
epmetResultResolver: null,
visible: false,
partyOrgTree: [], //
genderOptions: [{ 'label': '男', 'value': '1' }, { 'label': '女', 'value': '2' }, { 'label': '未知', 'value': '0' }],
nationOptions: [], //
localResidenceFlagOptions: [{ 'label': '是', 'value': 1 }, { 'label': '否', 'value': 0 }], //
cultureLevelOptions: [], //
partyJobOptions: [], //
centerFlagOptions: [{ 'label': '是', 'value': 1 }, { 'label': '否', 'value': 0 }], //
flowFlagOptions: [{ 'label': '是', 'value': 1 }, { 'label': '否', 'value': 0 }], //
studyNotNeedOptions: [{ 'label': '是', 'value': 1 }, { 'label': '否', 'value': 0 }], //
retiredFlagOptions: [{ 'label': '是', 'value': 1 }, { 'label': '否', 'value': 0 }], // 退
dataFormClear: null,
dataForm: {
partyOrgId: null,
name: null,
mobile: null,
idCard: null,
birthday: null,
gender: null,
nation: null,
localResidenceFlag: null,
hjAddress: null,
jzAddress: null,
cultureLevel: null,
partyJob: null,
duty: null,
joinTime: null,
positiveTime: null,
centerFlag: null,
flowFlag: null,
flowActNum: null,
studyNotNeed: null,
retiredFlag: null,
joinBranchName: null,
joinCommunityTime: null,
remark: null,
},
partyOrgTreeCascadarProps: {
lazy: true,
lazyLoad: ((node, resolve) => {
this.handleNextOrgTreeClick(node, resolve)
}),
value: 'id',
label: 'partyOrgName',
checkStrictly: true,
multiple: false
}
}
},
mounted () {
this.epmetResultResolver = new EpmetResultResolver(this);
// dataForm
// this.dataFormClear = Object.create(this.dataForm);
this.dataFormClear = JSON.parse(JSON.stringify(this.dataForm));
},
methods: {
/** ● ====================事件列表====================== **/
/**
* 对话框关闭事件
*/
handleDlgClose () {
this.resetForm();//
this.visible = false;
},
/**
* 加载树根
*/
async handleLoadPartyOrgTreeRoot () {
let url = '/actual/base/party/org/listPartyOrgTreeRoot4Select'
let rst = await requestGet(url, { depth: 8 })
this.epmetResultResolver.success((data) => {
this.setDisableStatus4TreeNode([data]);
this.partyOrgTree.length = 0;
this.partyOrgTree.push(data);
}).parse(rst)
},
/**
* 党组织树选中事件
*/
handlePartyOrgCascadarChange(selectedNode) {
this.dataForm.partyOrgId = selectedNode[selectedNode.length - 1];
},
/**
* 组织树加载下一级
* @returns {Promise<void>}
*/
async handleNextOrgTreeClick (node, resolve) {
// if (node.level === 1) {
// // loadPartyOrgTreeRoot121
// resolve(null)
// return
// }
let url = '/actual/base/party/org/listNextLevelPartyOrgTreeNodesByPid'
let rst = await requestGet(url, {
partyOrgPid: node.data.id
})
this.epmetResultResolver.success((data) => {
this.setDisableStatus4TreeNode([data]);
resolve(data)
}).parse(rst)
},
/**
* 提交更新动作
*/
async handleSubmitUpdate () {
this.$refs.dataForm.validate(async (success) => {
if (success) {
let rst = await requestPost("/actual/base/party/member/update", this.dataForm);
this.epmetResultResolver.success((data) => {
this.$message.success('提交成功');
this.handleDlgClose();
this.$emit("finishUpdate");
}).parse(rst);
}
});
},
/**
* 对话框关闭
* @returns {Promise<void>}
*/
resetForm() {
this.dataForm = this.dataFormClear;
},
/** ● ==================方法列表===================== **/
/**
* 初始化方法
*/
init (partymemberId) {
this.visible = true
//
this.handleLoadPartyOrgTreeRoot()
//
this.loadNations()
//
this.loadCultureLevelOptions()
//
this.loadPartyJobOptions()
this.loadPartymemberDetail(partymemberId)
},
/**
* 加载民族列表
*/
async loadNations () {
let url = '/sys/dict/data/nation'
let rst = await requestPost(url, {})
this.epmetResultResolver.success((data) => {
this.nationOptions = data
}).parse(rst)
},
/**
* 文化程度
* @returns {Promise<void>}
*/
async loadCultureLevelOptions () {
let url = '/sys/dict/data/education'
let rst = await requestPost(url, {})
this.epmetResultResolver.success((data) => {
this.cultureLevelOptions = data
}).parse(rst)
},
//
async loadPartyJobOptions () {
let url = '/sys/dict/data/dictlist'
let rst = await requestPost(url, { 'dictType': 'party_job' })
this.epmetResultResolver.success((data) => {
this.partyJobOptions = data
}).parse(rst)
},
/**
* 为党组织树设置可选状态
* @param treeArray
*/
setDisableStatus4TreeNode(treeArray) {
for (let e of treeArray) {
if (e.partyOrgLevel === 5 || e.partyOrgLevel === 6) {
e.disabled = true;
}
if (e.children && e.children.length > 0) {
this.setDisableStatus4TreeNode(e.children);
}
}
},
/**
* 加载详情
* @returns {Promise<void>}
*/
async loadPartymemberDetail(partymemberId) {
let rst = await requestGet("/actual/base/party/member/detail/" + partymemberId, {})
this.epmetResultResolver.success((detail) => {
this.dataForm = detail;
}).parse(rst);
}
},
computed: {
dataRule () {
return {
partyOrgId: [
{ required: true, message: '请选择党组织', trigger: 'blur' },
],
name: [
{ required: true, message: '请输入党员姓名', trigger: 'blur' },
],
mobile: [
{ required: true, message: '请输入电话', trigger: 'blur' },
],
idCard: [
{ required: true, message: '请输入身份证号', trigger: 'blur' },
],
}
},
},
props: {
// visible: {
// defult: false,
// type: Boolean
// }
}
}
</script>
<style lang="scss" scoped>
@import "@/assets/scss/modules/visual/communityManageForm.scss";
.item_width_1 {
width: 560px;
/deep/ .tox .tox-dialog {
z-index: 20000;
}
}
.div_map {
position: relative;
}
.div_searchmap {
z-index: 5000;
position: absolute;
top: 5px;
left: 5px;
}
.tinymce_view {
height: 400px;
overflow: auto;
}
.text_p {
margin: 0;
padding: 0 10px;
border: 1px solid #d9d9d9;
border-radius: 5px;
> p {
margin: 0;
}
}
.el-row {
margin-bottom: 20px;
&:last-child {
margin-bottom: 0;
}
}
.el-col {
border-radius: 4px;
}
</style>

2
src/views/modules/communityParty/partyOrg/orgTree.vue

@ -217,7 +217,7 @@ export default {
* 加载树根
*/
async handleLoadTreeRoot() {
let url = "/actual/base/party/org/loadPartyOrgTreeRoot";
let url = "/actual/base/party/org/listPartyOrgTreeRoot";
let rst = await requestGet(url, {})

Loading…
Cancel
Save