29 changed files with 6043 additions and 161 deletions
@ -0,0 +1,75 @@ |
|||
<template> |
|||
<el-table-column :prop="prop" v-bind="$attrs"> |
|||
<template slot-scope="scope"> |
|||
<span @click.prevent="toggleHandle(scope.$index, scope.row)" :style="{ 'padding-left': ((scope.row._level || 0) * 10) + 'px' }"> |
|||
<i :class="[ scope.row._expanded ? 'el-icon-caret-bottom' : 'el-icon-caret-right' ]" :style="{ 'visibility': hasChild(scope.row) ? 'visible' : 'hidden' }"></i> |
|||
{{ scope.row[prop] }} |
|||
</span> |
|||
</template> |
|||
</el-table-column> |
|||
</template> |
|||
|
|||
<script> |
|||
import isArray from 'lodash/isArray' |
|||
export default { |
|||
name: 'table-tree-column', |
|||
props: { |
|||
prop: { |
|||
type: String |
|||
}, |
|||
treeKey: { |
|||
type: String, |
|||
default: 'id' |
|||
}, |
|||
parentKey: { |
|||
type: String, |
|||
default: 'pid' |
|||
}, |
|||
childKey: { |
|||
type: String, |
|||
default: 'children' |
|||
} |
|||
}, |
|||
methods: { |
|||
hasChild (row) { |
|||
return (isArray(row[this.childKey]) && row[this.childKey].length >= 1) || false |
|||
}, |
|||
// 切换处理 |
|||
toggleHandle (index, row) { |
|||
if (!this.hasChild(row)) { |
|||
return false |
|||
} |
|||
var data = this.$parent.store.states.data.slice(0) |
|||
data[index]._expanded = !data[index]._expanded |
|||
if (data[index]._expanded) { |
|||
row[this.childKey].forEach(item => { |
|||
item._level = (row._level || 0) + 1 |
|||
item._expanded = false |
|||
}) |
|||
data = data.splice(0, index + 1).concat(row[this.childKey]).concat(data) |
|||
} else { |
|||
data = this.removeChildNode(data, row[this.treeKey]) |
|||
} |
|||
this.$parent.store.commit('setData', data) |
|||
this.$nextTick(() => { |
|||
this.$parent.doLayout() |
|||
}) |
|||
}, |
|||
// 移除子节点 |
|||
removeChildNode (data, pid) { |
|||
var pids = isArray(pid) ? pid : [pid] |
|||
if (pid.length <= 0) { |
|||
return data |
|||
} |
|||
var ids = [] |
|||
for (var i = 0; i < data.length; i++) { |
|||
if (pids.indexOf(data[i][this.parentKey]) !== -1 && pids.indexOf(data[i][this.treeKey]) === -1) { |
|||
ids.push(data.splice(i, 1)[0][this.treeKey]) |
|||
i-- |
|||
} |
|||
} |
|||
return this.removeChildNode(data, ids) |
|||
} |
|||
} |
|||
} |
|||
</script> |
@ -0,0 +1,344 @@ |
|||
<template> |
|||
<div class="p-wr"> |
|||
|
|||
<el-form label-width="140px" :model="form" :inline="true" |
|||
:disabled="disabled" :rules="rules" ref="ruleForm" |
|||
class="form-wr"> |
|||
<el-form-item label="评分周期" prop="year"> |
|||
<div class="flex-div"> |
|||
<!-- <div class="mr10">评分周期</div> --> |
|||
<div class="mr10"> |
|||
<el-date-picker |
|||
v-model="form.year" |
|||
type="year" |
|||
value-format="yyyy" |
|||
placeholder="选择年" |
|||
@change="handleYearChange"> |
|||
</el-date-picker> |
|||
</div> |
|||
<div class="mr10"> |
|||
<el-form-item prop="quarter"> |
|||
<el-select v-model="form.quarter" placeholder="请选择" class="input-width" clearable |
|||
@change="handleQuaterChange"> |
|||
<el-option |
|||
v-for="item in quarterList" |
|||
:key="item.value" |
|||
:label="item.label" |
|||
:value="item.value"> |
|||
</el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
</div> |
|||
<div> |
|||
<el-button |
|||
type="primary" |
|||
size="small" |
|||
:disabled="btnDisabled" |
|||
@click="hadnleSubmitbase" |
|||
>保存</el-button> |
|||
</div> |
|||
</div> |
|||
</el-form-item> |
|||
<el-form-item label="基础积分分值" prop="basePoint"> |
|||
<el-input v-model="form.basePoint" type="number" placeholder="请输入" class="input-width" clearable /> |
|||
</el-form-item> |
|||
<el-form-item label="基础积分选项" prop="baseOptions" class="wd-wr" :style="'width:' + formItemWd"> |
|||
<el-checkbox-group v-model="form.baseOptions"> |
|||
<el-checkbox v-for="item in baseOptions" :key="item.value" :label="item.value"> |
|||
{{ item.label }} |
|||
</el-checkbox> |
|||
</el-checkbox-group> |
|||
</el-form-item> |
|||
<div> |
|||
<el-form-item label="民主评议积分分值" prop="reviewPoint"> |
|||
<el-input v-model="form.reviewPoint" type="number" placeholder="请输入" class="input-width" clearable></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="民主评议积分选项" prop="reviewOptions" class="wd-wr" :style="'width:' + formItemWd"> |
|||
<el-checkbox-group v-model="form.reviewOptions"> |
|||
<el-checkbox v-for="item in pyiOptions" :key="item.value" :label="item.value"> |
|||
{{ item.label }} |
|||
</el-checkbox> |
|||
</el-checkbox-group> |
|||
</el-form-item> |
|||
</div> |
|||
<div> |
|||
<el-form-item label="激励积分分值" prop="inspirePoint"> |
|||
<el-input v-model="form.inspirePoint" type="number" placeholder="请输入" class="input-width" clearable /> |
|||
</el-form-item> |
|||
<el-form-item label="激励积分选项" prop="inspireOptions" class="wd-wr" :style="'width:' + formItemWd"> |
|||
<el-checkbox-group v-model="form.inspireOptions"> |
|||
<el-checkbox v-for="item in jiliOptions" :key="item.value" :label="item.value"> |
|||
{{ item.label }} |
|||
</el-checkbox> |
|||
</el-checkbox-group> |
|||
</el-form-item> |
|||
</div> |
|||
<div> |
|||
<el-form-item label="警示扣分分值" prop="warnPoint"> |
|||
<el-input v-model="form.warnPoint" type="number" placeholder="请输入" class="input-width" clearable /> |
|||
</el-form-item> |
|||
<el-form-item label="警示扣分选项" prop="warnOptions" class="wd-wr" :style="'width:' + formItemWd"> |
|||
<el-checkbox-group v-model="form.warnOptions"> |
|||
<el-checkbox v-for="item in jinshiOptions" :key="item.value" :label="item.value"> |
|||
{{ item.label }} |
|||
</el-checkbox> |
|||
</el-checkbox-group> |
|||
</el-form-item> |
|||
</div> |
|||
</el-form> |
|||
</div> |
|||
|
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
props: { |
|||
partyId: { |
|||
type: String, |
|||
default: '' |
|||
}, |
|||
disabled: { |
|||
type: Boolean, |
|||
default: false |
|||
} |
|||
}, |
|||
data() { |
|||
return { |
|||
btnDisabled: false, |
|||
year: '', |
|||
quarter: '', |
|||
form: { |
|||
partyMemberId: '', |
|||
year: '', |
|||
quarter: '', |
|||
basePoint: '', |
|||
baseOptions: [], |
|||
reviewPoint: '', |
|||
reviewOptions: [], |
|||
inspirePoint: '', |
|||
inspireOptions: [], |
|||
warnPoint: '', |
|||
warnOptions: [], |
|||
}, |
|||
rules: { |
|||
year: [{ required: true, message: '年度不能为空', trigger: 'blur' }], |
|||
quarter: [{ required: true, message: '季度不能为空', trigger: 'blur' }] |
|||
}, |
|||
formItemWd: '500px', |
|||
quarterList: [ |
|||
{ |
|||
label: '第一季度', |
|||
value: '1' |
|||
}, |
|||
{ |
|||
label: '第二季度', |
|||
value: '2' |
|||
}, |
|||
|
|||
{ |
|||
label: '第三季度', |
|||
value: '3' |
|||
}, |
|||
{ |
|||
label: '第四季度', |
|||
value: '4' |
|||
} |
|||
], |
|||
baseOptions: [ |
|||
{ |
|||
label: '参加三会一课', |
|||
value: '1' |
|||
}, |
|||
{ |
|||
label: '参加主题党日', |
|||
value: '2' |
|||
}, |
|||
|
|||
{ |
|||
label: '足额缴纳党费', |
|||
value: 3 |
|||
}, |
|||
{ |
|||
label: '积极参加学习培训', |
|||
value: '4' |
|||
}, |
|||
{ |
|||
label: '自觉执行党组织会议', |
|||
value: '5' |
|||
}, |
|||
{ |
|||
label: '严守党的政治纪律和政治规矩', |
|||
value: '6' |
|||
}, |
|||
], |
|||
jiliOptions: [ |
|||
{ |
|||
label: '发挥先锋模范作用', |
|||
value: '1' |
|||
}, |
|||
{ |
|||
label: '维护社会和谐稳定', |
|||
value: '2' |
|||
}, |
|||
|
|||
{ |
|||
label: '参与社会治理', |
|||
value: '3' |
|||
}, |
|||
{ |
|||
label: '联系服务群众', |
|||
value: '4' |
|||
} |
|||
], |
|||
jinshiOptions: [ |
|||
{ |
|||
label: '不服从党组织安排', |
|||
value: '1' |
|||
}, |
|||
{ |
|||
label: '不按时足额缴纳党费', |
|||
value: '2' |
|||
}, |
|||
|
|||
{ |
|||
label: '无故长期脱离组织管理', |
|||
value: '3' |
|||
}, |
|||
{ |
|||
label: '在工作中出现不良影响', |
|||
value: '4' |
|||
}, |
|||
{ |
|||
label: '违反党的纪律', |
|||
value: '5' |
|||
} |
|||
], |
|||
pyiOptions: [ |
|||
{ |
|||
label: '个人自评', |
|||
value: '1' |
|||
}, |
|||
{ |
|||
label: '党员互评', |
|||
value: '2' |
|||
}, |
|||
|
|||
{ |
|||
label: '民主测评', |
|||
value: '3' |
|||
} |
|||
] |
|||
} |
|||
}, |
|||
watch: { |
|||
partyId: { |
|||
handler(val) { |
|||
console.log('val------points', val) |
|||
if (val.length > 0) this.btnDisabled = false |
|||
else this.btnDisabled = true |
|||
}, |
|||
immediate: true |
|||
} |
|||
}, |
|||
mounted() { |
|||
const w = document.getElementsByClassName('p-wr')[0] |
|||
this.formItemWd = w.clientWidth - 360 + 'px' |
|||
console.log('www----', w) |
|||
}, |
|||
methods: { |
|||
handleQuaterChange(val) { |
|||
if (this.form.year) { |
|||
this.getInfo() |
|||
} |
|||
this.quarter = val |
|||
}, |
|||
handleYearChange(val) { |
|||
this.year = val |
|||
}, |
|||
hadnleSubmitbase() { |
|||
if (!this.partyId) return |
|||
this.$refs['ruleForm'].validate((valid) => { |
|||
if (valid) { |
|||
this.$emit('save', { ...this.form, partyMemberId: this.partyId }) |
|||
} else { |
|||
console.log('error submit!!'); |
|||
return false; |
|||
} |
|||
}); |
|||
|
|||
}, |
|||
async getInfo() { |
|||
const params = { |
|||
year: this.form.year, |
|||
quarter: this.form.quarter, |
|||
partyMemberId: this.partyId |
|||
} |
|||
await this.$http |
|||
.post('/resi/partymember/icPartyMemberPoint/echoPartyMemberPoint', params) |
|||
.then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} else { |
|||
if (res.data.length > 0) { |
|||
let _info = res.data[0] |
|||
const info = { |
|||
..._info, |
|||
baseOptions: _info.baseOptions.length > 0 ? _info.baseOptions.split(','): [], |
|||
reviewOptions: _info.reviewOptions.length > 0 ? _info.reviewOptions.split(',') : [], |
|||
inspireOptions: _info.inspireOptions.length > 0 ? _info.inspireOptions.split(',') : [], |
|||
warnOptions: _info.warnOptions.length > 0 ? _info.warnOptions.split(',') : [] |
|||
} |
|||
for(const n in info) { |
|||
this.form[n] = info[n] |
|||
} |
|||
} else { |
|||
this.$refs['ruleForm'].resetFields() |
|||
this.form.quarter = this.quarter |
|||
this.form.year = this.year |
|||
|
|||
} |
|||
} |
|||
}) |
|||
.catch(err => { |
|||
console.log('err', err) |
|||
return this.$message.error('网络错误') |
|||
}) |
|||
}, |
|||
|
|||
|
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.flex-div { |
|||
display: flex; |
|||
align-items: center; |
|||
} |
|||
.mb20 { |
|||
margin-bottom: 20px; |
|||
} |
|||
.mr10 { |
|||
margin-right: 10px; |
|||
} |
|||
.pdl74 { |
|||
padding-left: 74px; |
|||
} |
|||
.wd-wr { |
|||
/deep/ .el-form-item__content { |
|||
width: calc(100% - 140px); |
|||
} |
|||
|
|||
/deep/ .el-checkbox { |
|||
margin-right: 10px; |
|||
font-weight: 400; |
|||
// line-height: 20px; |
|||
.el-checkbox__label { |
|||
padding-left: 5px; |
|||
} |
|||
} |
|||
} |
|||
.input-width { |
|||
width: 160px; |
|||
} |
|||
</style> |
@ -0,0 +1,305 @@ |
|||
<template> |
|||
<div style="padding-right: 20px;"> |
|||
<div class="mt10"> |
|||
<el-button size="small" class="diy-button--add" :disabled="btnDisabled || disabled" |
|||
@click="handleAdd">新增</el-button> |
|||
</div> |
|||
<el-table |
|||
:data="tableData" |
|||
row-key="id" |
|||
border |
|||
style="width: 100%" |
|||
class="resi-table" |
|||
height="400px" |
|||
:header-cell-style="getRowClass" |
|||
> |
|||
<el-table-column label="序号" type="index" align="center" width="50"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="name" |
|||
label="缴费日期" |
|||
align="center" |
|||
width="250px" |
|||
> |
|||
<template slot-scope="scope"> |
|||
<el-date-picker |
|||
v-if="scope.row.isEdit" |
|||
v-model="scope.row.payDate" |
|||
type="date" |
|||
value-format="yyyy-MM-dd" |
|||
placeholder="选择日期"> |
|||
</el-date-picker> |
|||
<div v-else class="div-content">{{ scope.row.payDate }}</div> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="name" |
|||
label="缴费金额" |
|||
align="center" |
|||
width="180px" |
|||
> |
|||
<template slot-scope="scope"> |
|||
<el-input v-if="scope.row.isEdit" type="number" v-model="scope.row.money" placeholder="请输入" |
|||
class="input-width" clearable></el-input> |
|||
<div v-else class="div-content">{{ scope.row.money }}</div> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="name" |
|||
label="缴费年度" |
|||
align="center" |
|||
min-width="250px" |
|||
> |
|||
<template slot-scope="scope"> |
|||
<el-date-picker |
|||
v-if="scope.row.isEdit" |
|||
v-model="scope.row.timeRange" |
|||
type="daterange" |
|||
value-format="yyyy-MM-dd" |
|||
range-separator="至" |
|||
start-placeholder="开始日期" |
|||
end-placeholder="结束日期" |
|||
@change="handleTimeChangePay($event, scope.row)"> |
|||
</el-date-picker> |
|||
<div v-else class="div-content">{{ scope.row.startDate + ' - ' + scope.row.endDate }}</div> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column label="操作" align="center" width="120"> |
|||
<template slot-scope="scope"> |
|||
<template v-if="scope.row.isEdit"> |
|||
<el-button |
|||
@click="handleEdit(scope.row)" |
|||
type="text" |
|||
size="small" |
|||
class="btn-color-edit" |
|||
>保存</el-button> |
|||
<el-button |
|||
@click="handleChange(scope.row, 'cancle')" |
|||
type="text" |
|||
size="small" |
|||
class="btn-color-edit" |
|||
>取消</el-button> |
|||
</template> |
|||
<template v-else> |
|||
<el-button |
|||
@click="handleChange(scope.row, 'edit')" |
|||
type="text" |
|||
size="small" |
|||
:disabled="disabled" |
|||
class="btn-color-edit" |
|||
>修改</el-button> |
|||
<el-popconfirm |
|||
title="删除之后无法恢复,确认删除?" |
|||
@onConfirm="del(scope.row)" |
|||
> |
|||
<el-button |
|||
slot="reference" |
|||
type="text" |
|||
size="small" |
|||
class="btn-color-del" |
|||
style="margin-left: 10px;" |
|||
>删除</el-button |
|||
> |
|||
</el-popconfirm> |
|||
<!-- <el-button type="text" size="small" :disabled="disabled" class="btn-color-del" |
|||
@click="del(scope.row)">删除</el-button> --> |
|||
</template> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
props: { |
|||
partyId: { |
|||
type: String, |
|||
default: '' |
|||
}, |
|||
disabled: { |
|||
type: Boolean, |
|||
default: false |
|||
} |
|||
}, |
|||
data() { |
|||
return { |
|||
btnDisabled: false, |
|||
btnType: 'add', |
|||
isEdit: false, |
|||
tableData: [], |
|||
tempRow: {} |
|||
} |
|||
}, |
|||
watch: { |
|||
partyId: { |
|||
handler(val) { |
|||
console.log('val------points', val) |
|||
if (val.length > 0) { |
|||
this.btnDisabled = false |
|||
this.getList() |
|||
} else this.btnDisabled = true |
|||
|
|||
}, |
|||
immediate: true |
|||
} |
|||
}, |
|||
created() { |
|||
// if (this.partyId) this.getList() |
|||
}, |
|||
methods: { |
|||
getRowClass({ rowIndex, columnIndex }) { |
|||
if (rowIndex === 0) { |
|||
return 'background: #2195fe; color: #fff;' |
|||
} |
|||
}, |
|||
handleChange(row, type) { |
|||
console.log('type----', type) |
|||
if (type == 'cancle') { |
|||
|
|||
row = { ...this.tempRow } |
|||
row.isEdit = false |
|||
row.timeRange = [] |
|||
if (this.btnType == 'add') this.tableData.pop() |
|||
this.getList() |
|||
console.log('row----', row) |
|||
} else { |
|||
this.tempRow = { ...row } |
|||
row.isEdit = true |
|||
row.timeRange = [row.startDate, row.endDate] |
|||
} |
|||
this.btnType = type |
|||
this.isEdit = !this.isEdit |
|||
|
|||
}, |
|||
handleTimeChangePay(val, row) { |
|||
console.log('vall', val) |
|||
console.log('varowll', row) |
|||
if (val != null && val.length > 0) { |
|||
row.startDate = val[0] |
|||
row.endDate = val[1] |
|||
} else { |
|||
row.startDate = '' |
|||
row.endDate = '' |
|||
row.timeRange = [] |
|||
} |
|||
}, |
|||
async handleEdit(row) { |
|||
if (this.btnType == 'add') this.save(row) |
|||
else this.edit(row) |
|||
}, |
|||
handleAdd() { |
|||
this.btnType = 'add' |
|||
this.isEdit = true |
|||
const item = { |
|||
isEdit: true, |
|||
partyMemberId: this.partyId, |
|||
payDate: '', |
|||
money: '', |
|||
startDate: '', |
|||
endDate: '', |
|||
timeRange: '' |
|||
} |
|||
this.tableData.push(item) |
|||
}, |
|||
async save(row) { |
|||
const params = { |
|||
partyMemberId: this.partyId, |
|||
payDate: row.payDate, |
|||
money: row.money, |
|||
startDate: row.startDate, |
|||
endDate: row.endDate, |
|||
} |
|||
await this.$http |
|||
.post('/resi/partymember/icPartyMemberPayRecord/save', params) |
|||
.then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} else { |
|||
this.$message.success('保存成功') |
|||
row.isEdit = false |
|||
this.isEdit = false |
|||
this.getList() |
|||
} |
|||
}) |
|||
.catch(err => { |
|||
console.log('err', err) |
|||
return this.$message.error('网络错误') |
|||
}) |
|||
}, |
|||
async edit(row) { |
|||
const params = { |
|||
...row |
|||
} |
|||
await this.$http |
|||
.post('/resi/partymember/icPartyMemberPayRecord/update', params) |
|||
.then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} else { |
|||
this.$message.success('保存成功') |
|||
row.isEdit = false |
|||
this.isEdit = false |
|||
this.getList() |
|||
} |
|||
}) |
|||
.catch(err => { |
|||
console.log('err', err) |
|||
return this.$message.error('网络错误') |
|||
}) |
|||
}, |
|||
async del(row) { |
|||
const params = { |
|||
...row |
|||
} |
|||
await this.$http |
|||
.post('/resi/partymember/icPartyMemberPayRecord/delete', [row.id]) |
|||
.then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} else { |
|||
this.$message.success('删除成功') |
|||
this.getList() |
|||
} |
|||
}) |
|||
.catch(err => { |
|||
console.log('err', err) |
|||
return this.$message.error('网络错误') |
|||
}) |
|||
}, |
|||
async getList() { |
|||
const params = { |
|||
page: 1, |
|||
limit: 9999, |
|||
partyMemberId: this.partyId |
|||
|
|||
} |
|||
await this.$http |
|||
.get('/resi/partymember/icPartyMemberPayRecord/page', { params: params, } ) |
|||
.then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} else { |
|||
this.tableData = res.data.list.map(item => { |
|||
return { |
|||
...item, |
|||
isEdit: false, |
|||
timeRange: [] |
|||
} |
|||
}) |
|||
} |
|||
}) |
|||
.catch(err => { |
|||
console.log('err', err) |
|||
return this.$message.error('网络错误') |
|||
}) |
|||
}, |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.mt10 { |
|||
margin-bottom: 10px; |
|||
} |
|||
</style> |
@ -0,0 +1,449 @@ |
|||
<template> |
|||
<div class="dialog-h-content scroll-h pd0"> |
|||
<el-form label-width="120px" :model="form" :inline="true" |
|||
:disabled="disabled":rules="rules" ref="ruleForm" |
|||
class="form-wr"> |
|||
<div class="flex-div"> |
|||
<el-form-item label="所属党组织" prop="sszb" class="wd50"> |
|||
<el-cascader |
|||
v-model="partyOrgs" |
|||
:options="partyList" |
|||
:props="partyProps" |
|||
clearable |
|||
class="input-width" |
|||
@change="handlePartyChange"></el-cascader> |
|||
</el-form-item> |
|||
<el-form-item label="党员中心户" prop="isDyzxh" class="wd50"> |
|||
<el-radio-group v-model="form.isDyzxh"> |
|||
<el-radio label="1">是</el-radio> |
|||
<el-radio label="0">否</el-radio> |
|||
</el-radio-group> |
|||
</el-form-item> |
|||
</div> |
|||
<div class="flex-div"> |
|||
<el-form-item label="姓名" prop="name" class="wd50"> |
|||
<el-input v-model="form.name" placeholder="请输入" :disabled="disabled" class="input-width" clearable></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="免学习" prop="isMxx" class="wd50"> |
|||
<el-radio-group v-model="form.isMxx"> |
|||
<el-radio label="1">是</el-radio> |
|||
<el-radio label="0">否</el-radio> |
|||
</el-radio-group> |
|||
</el-form-item> |
|||
</div> |
|||
<div class="flex-div"> |
|||
<el-form-item label="手机号" prop="mobile" class="wd50"> |
|||
<el-input v-model="form.mobile" placeholder="请输入" :disabled="disabled" class="input-width" clearable /> |
|||
</el-form-item> |
|||
<el-form-item label="职务" prop="partyZw" class="wd50"> |
|||
<el-select v-model="form.partyZw" filterable :disabled="disabled" placeholder="请选择" class="input-width" clearable> |
|||
<el-option |
|||
v-for="item in zwList" |
|||
:key="item.value" |
|||
:label="item.label" |
|||
:value="item.value"> |
|||
</el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
</div> |
|||
<div class="flex-div"> |
|||
<el-form-item label="身份证" prop="idCard" class="wd50"> |
|||
<el-input v-model="form.idCard" placeholder="请输入" :disabled="disabled" |
|||
class="input-width" clearable @blur="handleValidBlur" /> |
|||
</el-form-item> |
|||
<el-form-item label="文化程度" prop="culture" class="wd50"> |
|||
<el-select v-model="form.culture" filterable :disabled="disabled" placeholder="请选择" class="input-width" clearable> |
|||
<el-option |
|||
v-for="item in eduList" |
|||
:key="item.value" |
|||
:label="item.label" |
|||
:value="item.value"> |
|||
</el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
</div> |
|||
<div class="flex-div"> |
|||
<el-form-item label="地址" prop="address" class="wd50"> |
|||
<el-input v-model="form.address" placeholder="请输入" :disabled="disabled || isAuto" class="input-width" clearable></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="入党时间" prop="rdsj" class="wd50"> |
|||
<el-date-picker |
|||
v-model="form.rdsj" |
|||
:disabled="disabled" |
|||
type="date" |
|||
class="input-width" |
|||
clearable |
|||
placeholder="选择日期" |
|||
format="yyyy 年 MM 月 dd 日" |
|||
value-format="yyyy-MM-dd"> |
|||
</el-date-picker> |
|||
</el-form-item> |
|||
</div> |
|||
<div class="flex-div"> |
|||
<el-form-item label="流动党员" prop="isLd" class="wd50"> |
|||
<el-radio-group v-model="form.isLd" class="input-width"> |
|||
<el-radio label="1">是</el-radio> |
|||
<el-radio label="0">否</el-radio> |
|||
</el-radio-group> |
|||
</el-form-item> |
|||
<el-form-item label="流动党员号" prop="ldzh" class="wd50"> |
|||
<el-input v-model="form.ldzh" placeholder="请输入" :disabled="disabled" class="input-width" clearable></el-input> |
|||
</el-form-item> |
|||
</div> |
|||
<el-form-item label="备注" prop="remark"> |
|||
<el-input v-model="form.remark" :autosize="{ minRows: 4, maxRows: 10}" :disabled="disabled" type="textarea" clearable class="input-width-textarea" placeholder="请输入内容"></el-input> |
|||
</el-form-item> |
|||
<div :style="'width:' + formItemWd" > |
|||
<div style="margin-top: 20px; text-align: center;"> |
|||
<el-button size="small" @click="handleCancle">取消</el-button> |
|||
<el-button |
|||
v-if="!disabled" |
|||
type="primary" |
|||
size="small" |
|||
@click="hadnleSubmitbase" |
|||
>提交</el-button> |
|||
</div> |
|||
</div> |
|||
|
|||
</el-form> |
|||
<div class="pdl40"> |
|||
<el-tabs v-model="activesName"> |
|||
<el-tab-pane label="量化积分" name="first"> |
|||
<pointsInfo :partyId="partymenberid" :disabled="disabled" @save="handleSavePoints" /> |
|||
</el-tab-pane> |
|||
<el-tab-pane label="缴费记录" name="second"> |
|||
<record :partyId="partymenberid" :disabled="disabled" /> |
|||
</el-tab-pane> |
|||
</el-tabs> |
|||
<!-- <el-button-group> |
|||
<el-button class="diy-button--add" size="small">量化积分</el-button> |
|||
<el-button size="small">缴费记录</el-button> |
|||
</el-button-group> --> |
|||
</div> |
|||
<!-- <div class="resi-btns"> |
|||
<el-button size="small" @click="handlerCancle">取消</el-button> |
|||
<el-button |
|||
v-if="!disabled" |
|||
type="primary" |
|||
size="small" |
|||
:loading="btnLoading" |
|||
@click="handleSUbmit" |
|||
>提交</el-button |
|||
> |
|||
</div> --> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import { isCard, isMobile } from '@/utils/validate' |
|||
import { computedCard } from '@/utils/index' |
|||
|
|||
import pointsInfo from './cpts/points.vue' |
|||
import record from './cpts/record.vue' |
|||
|
|||
export default { |
|||
components: { |
|||
pointsInfo, |
|||
record |
|||
}, |
|||
props: { |
|||
partyList: { |
|||
type: Array, |
|||
default: () => [] |
|||
}, |
|||
info: { |
|||
type: Object, |
|||
default: () => {} |
|||
}, |
|||
disabled: { |
|||
type: Boolean, |
|||
default: false |
|||
} |
|||
}, |
|||
data() { |
|||
let checkMObile = (rule, value, callback) => { |
|||
if (value === '') { |
|||
callback(new Error('请输入手机号')) |
|||
} else { |
|||
if (!isMobile(value)) { |
|||
callback(new Error('手机号格式不正确')) |
|||
} |
|||
callback() |
|||
} |
|||
} |
|||
let checkIdCard = (rule, value, callback) => { |
|||
if (value === '') { |
|||
callback(new Error('请输入身份证')) |
|||
} else { |
|||
if (!isCard(value)) { |
|||
callback(new Error('身份证号格式不正确')) |
|||
} |
|||
callback() |
|||
} |
|||
} |
|||
return { |
|||
activesName: 'first', |
|||
isAuto: false, |
|||
formItemWd: '100%', |
|||
partymenberid: '', |
|||
partyProps: { |
|||
label: 'partyOrgName', |
|||
value: 'id' |
|||
}, |
|||
zwList: [ |
|||
{ |
|||
label: '普通党员', |
|||
value: '0' |
|||
}, |
|||
{ |
|||
label: '支部书记', |
|||
value: '1' |
|||
}, |
|||
{ |
|||
label: '支部委员', |
|||
value: '2' |
|||
}, |
|||
{ |
|||
label: '党委委员', |
|||
value: '3' |
|||
}, |
|||
], |
|||
form: { |
|||
icResiUser: '', |
|||
name: '', |
|||
mobile: '', |
|||
idCard: '', |
|||
address: '', |
|||
rdsj: '', |
|||
sszb: '', |
|||
isLd: '', |
|||
ldzh: '', |
|||
partyZw: '', |
|||
isDyzxh: '', |
|||
isMxx: '', |
|||
culture: '', |
|||
remark: '' |
|||
}, |
|||
eduList: [], |
|||
rules: { |
|||
sszb: [{ required: true, message: '所属党组织不能为空', trigger: 'blur' }], |
|||
name: [{ required: true, message: '姓名不能为空', trigger: 'blur' }], |
|||
mobile: [{ required: true, validator: checkMObile, trigger: 'blur' }], |
|||
idCard: [{ required: true, validator: checkIdCard, trigger: 'blur' }], |
|||
}, |
|||
partyOrgs: [] |
|||
} |
|||
}, |
|||
watch: { |
|||
info: { |
|||
handler(val) { |
|||
if (Object.keys(val).length > 0) { |
|||
this.form = { ...val } |
|||
console.log('val----------in', val) |
|||
this.partyOrgs = val.orgPids.split(':') |
|||
this.partymenberid = val.id |
|||
} |
|||
}, |
|||
immediate: true |
|||
} |
|||
}, |
|||
created() { |
|||
this.getEduList() |
|||
}, |
|||
mounted() { |
|||
const w = document.getElementsByClassName('dialog-h-content')[0] |
|||
this.formItemWd = w.clientWidth + 'px' |
|||
}, |
|||
destroyed() { |
|||
// this.$refs['ruleForm'].resetFields() |
|||
}, |
|||
methods: { |
|||
handleCancle() { |
|||
this.$refs['ruleForm'].resetFields() |
|||
this.$emit('cancle') |
|||
}, |
|||
handlePartyChange(val) { |
|||
console.log('val------pp', val) |
|||
if (val.length > 0) { |
|||
const i = val.length - 1 |
|||
this.form.sszb = val[i] |
|||
} else this.form.sszb = '' |
|||
}, |
|||
handleValidBlur(n) { |
|||
if (!isCard(this.form.idCard)) return |
|||
const { age } = computedCard(this.form.idCard) |
|||
this.form.isMxx = age >= 70 ? '1' : '0' |
|||
this.validateResi() |
|||
}, |
|||
async getEduList() { |
|||
await this.$http |
|||
.post('/sys/dict/data/education') |
|||
.then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} else { |
|||
this.eduList = res.data |
|||
} |
|||
}) |
|||
.catch(err => { |
|||
console.log('err', err) |
|||
return this.$message.error('网络错误') |
|||
}) |
|||
}, |
|||
async validateResi() { |
|||
const params = { |
|||
idCard: this.form.idCard, |
|||
agencyId: this.$store.state.user.agencyId |
|||
} |
|||
await this.$http |
|||
.post('/epmetuser/icresiuser/getUserByIdCard', params) |
|||
.then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} else { |
|||
const { address, icResiUserId } = res.data |
|||
if (icResiUserId) { |
|||
this.form.address = address |
|||
this.isAuto = true |
|||
} |
|||
|
|||
} |
|||
}) |
|||
.catch(err => { |
|||
console.log('err', err) |
|||
return this.$message.error('网络错误') |
|||
}) |
|||
}, |
|||
hadnleSubmitbase() { |
|||
this.$refs['ruleForm'].validate((valid) => { |
|||
if (valid) { |
|||
if (Object.keys(this.info).length > 0) this.editBase() |
|||
else this.saveBase() |
|||
} else { |
|||
console.log('error submit!!'); |
|||
return false; |
|||
} |
|||
}); |
|||
}, |
|||
handleSavePoints(data) { |
|||
|
|||
const _data = { ...data } |
|||
const params = { |
|||
..._data, |
|||
baseOptions: data.baseOptions.length > 0 ? data.baseOptions.toString() : '', |
|||
reviewOptions: data.reviewOptions.length > 0 ? data.reviewOptions.toString() : '', |
|||
inspireOptions: data.inspireOptions.length > 0 ? data.inspireOptions.toString() : '', |
|||
warnOptions: data.warnOptions.length > 0 ? data.warnOptions.toString() : '' |
|||
} |
|||
this.savePoints(params) |
|||
}, |
|||
async saveBase() { |
|||
const params = { |
|||
...this.form |
|||
} |
|||
await this.$http |
|||
.post('/resi/partymember/icPartyMember/save', params) |
|||
.then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} else { |
|||
this.$message.success('保存成功') |
|||
this.partymenberid = res.data |
|||
this.$emit('saveBase', true) |
|||
|
|||
} |
|||
}) |
|||
.catch(err => { |
|||
console.log('err', err) |
|||
return this.$message.error('网络错误') |
|||
}) |
|||
}, |
|||
async editBase() { |
|||
const params = { |
|||
...this.form |
|||
} |
|||
await this.$http |
|||
.post('/resi/partymember/icPartyMember/update', params) |
|||
.then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} else { |
|||
this.$message.success('保存成功') |
|||
this.partymenberid = res.data |
|||
this.$emit('saveBase', true) |
|||
|
|||
} |
|||
}) |
|||
.catch(err => { |
|||
console.log('err', err) |
|||
return this.$message.error('网络错误') |
|||
}) |
|||
}, |
|||
async savePoints(form) { |
|||
const params = { |
|||
...form, |
|||
partyMemberId: this.partymenberid |
|||
} |
|||
let url = '' |
|||
if (form.id) url = '/resi/partymember/icPartyMemberPoint/update' |
|||
else url = '/resi/partymember/icPartyMemberPoint/save' |
|||
await this.$http |
|||
.post(url, params) |
|||
.then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} else { |
|||
this.$message.success('保存成功') |
|||
|
|||
} |
|||
}) |
|||
.catch(err => { |
|||
console.log('err', err) |
|||
return this.$message.error('网络错误') |
|||
}) |
|||
}, |
|||
async saveRecord(form) { |
|||
const params = { |
|||
...form, |
|||
partyMemberId: this.partymenberid |
|||
} |
|||
await this.$http |
|||
.post('/resi/partymember/icPartyMemberPoint/save', params) |
|||
.then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} else { |
|||
this.$message.success('保存成功') |
|||
|
|||
} |
|||
}) |
|||
.catch(err => { |
|||
console.log('err', err) |
|||
return this.$message.error('网络错误') |
|||
}) |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.input-width-textarea { |
|||
width: 400px; |
|||
} |
|||
.input-width { |
|||
width: 220px; |
|||
} |
|||
.flex-div { |
|||
display: flex; |
|||
// justify-content: space-between; |
|||
} |
|||
.wd50 { |
|||
width: 50%; |
|||
} |
|||
.pdl40 { |
|||
padding-left: 40px; |
|||
} |
|||
.pd0 { |
|||
padding: 0 !important; |
|||
} |
|||
</style> |
@ -0,0 +1,945 @@ |
|||
<template> |
|||
<div v-if="pageLoading" class="resi-container"> |
|||
<el-card ref="searchCard" class="search-card"> |
|||
<div class=""> |
|||
<el-form ref="searchForm" :inline="true" :model="searchForm" size="small" label-width="100px" class="demo-form-inline"> |
|||
<div> |
|||
<el-form-item label="所属党组织" prop="partyOrgId"> |
|||
<!-- <el-select v-model="searchForm.partyOrgId" filterable placeholder="请选择" clearable> |
|||
<el-option |
|||
v-for="item in optionsG" |
|||
:key="item.value" |
|||
:label="item.label" |
|||
:value="item.value"> |
|||
</el-option> --> |
|||
<!-- </el-select> --> |
|||
<el-cascader |
|||
v-model="partyOrgRange" |
|||
:options="optionsG" |
|||
:props="partyProps" |
|||
clearable |
|||
@change="handlePartyChange"></el-cascader> |
|||
</el-form-item> |
|||
<el-form-item label="姓名" prop="name"> |
|||
<el-input v-model="searchForm.name" placeholder="请输入" class="input-width" clearable></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="手机号" prop="mobile"> |
|||
<el-input v-model="searchForm.mobile" placeholder="请输入" class="input-width" clearable></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="身份证" prop="idCard"> |
|||
<el-input v-model="searchForm.idCard" placeholder="请输入" class="input-width" clearable></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="地址" prop="address"> |
|||
<el-input v-model="searchForm.address" placeholder="请输入" class="input-width" clearable></el-input> |
|||
</el-form-item> |
|||
</div> |
|||
<div> |
|||
<el-form-item label="流动党员" prop="isLd"> |
|||
<el-select v-model="searchForm.isLd" filterable placeholder="请选择" clearable> |
|||
<el-option label="是" value="1" /> |
|||
<el-option label="否" value="0" /> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="流动党员证号" prop="ldzh"> |
|||
<el-input v-model="searchForm.ldzh" placeholder="请输入" class="input-width" clearable></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="职务" prop="partyZw"> |
|||
<el-select v-model="searchForm.partyZw" filterable placeholder="请选择" clearable> |
|||
<el-option |
|||
v-for="item in zwList" |
|||
:key="item.value" |
|||
:label="item.label" |
|||
:value="item.value"> |
|||
</el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="是否缴费" prop="isPay"> |
|||
<el-select v-model="searchForm.isPay" filterable placeholder="请选择" clearable> |
|||
<el-option label="是" value="1" /> |
|||
<el-option label="否" value="0" /> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="党员中心户" prop="isDyzxh"> |
|||
<el-select v-model="searchForm.isDyzxh" filterable placeholder="请选择" clearable> |
|||
<el-option label="是" value="1" /> |
|||
<el-option label="否" value="0" /> |
|||
</el-select> |
|||
</el-form-item> |
|||
</div> |
|||
<el-form-item label="免学习" prop="isMxx"> |
|||
<el-select v-model="searchForm.isMxx" filterable placeholder="请选择" clearable> |
|||
<el-option label="是" value="1" /> |
|||
<el-option label="否" value="0" /> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="最近一次缴费时间" |
|||
label-width="130px" |
|||
prop="startTime"> |
|||
<el-date-picker v-model="timeRangePay" |
|||
size="small" |
|||
type="daterange" |
|||
value-format="yyyy-MM-dd HH:mm:ss" |
|||
@change="handleTimeChangePay" |
|||
range-separator="至" |
|||
start-placeholder="开始时间" |
|||
end-placeholder="结束时间"> |
|||
</el-date-picker> |
|||
|
|||
</el-form-item> |
|||
<el-form-item label="入党时间" |
|||
prop="startTime"> |
|||
<el-date-picker v-model="timeRange" |
|||
size="small" |
|||
type="daterange" |
|||
value-format="yyyy-MM-dd HH:mm:ss" |
|||
@change="handleTimeChange" |
|||
range-separator="至" |
|||
start-placeholder="开始时间" |
|||
end-placeholder="结束时间"> |
|||
</el-date-picker> |
|||
|
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button class="diy-button--search" size="small" @click="handleSearch">查询</el-button> |
|||
<el-button class="diy-button--reset" size="small" @click="resetForm('searchForm')">重置</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
</div> |
|||
</el-card> |
|||
<el-card class="resi-card-table"> |
|||
|
|||
<div class="resi-row-btn"> |
|||
<el-button class="diy-button--add" size="small" @click="handleAdd">新增</el-button> |
|||
<!-- <el-button |
|||
class="diy-button--export" |
|||
size="small" |
|||
@click="handleExportModule('room')">下载模板</el-button> |
|||
<el-upload |
|||
ref="upload" |
|||
class="upload-demo" |
|||
action="uploadUlr" |
|||
:limit="1" |
|||
:accept="'.xls,.xlsx'" |
|||
:with-credentials="true" |
|||
:show-file-list="false" |
|||
:auto-upload="true" |
|||
:on-success="handleExcelSuccess" |
|||
:before-upload="beforeExcelUpload" |
|||
:http-request="uploadHttpRequest" |
|||
> |
|||
<el-button size="small" class="diy-button--delete" :loading="importLoading">{{importBtnTitle}}</el-button> |
|||
</el-upload> |
|||
<el-button class="diy-button--reset" size="small" :loading="exportBtn" @click="handleExport">{{ exportBtnTitle }}</el-button> --> |
|||
|
|||
</div> |
|||
|
|||
<el-table |
|||
:data="tableData" |
|||
row-key="id" |
|||
v-loading="tableLoading" |
|||
border |
|||
:height="tableHeight" |
|||
style="width: 100%" |
|||
class="resi-table" |
|||
> |
|||
<el-table-column label="序号" type="index" align="center" width="50"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="name" |
|||
label="姓名" |
|||
align="center" |
|||
width="100" |
|||
/> |
|||
<el-table-column |
|||
prop="idCard" |
|||
label="身份证号" |
|||
align="center" |
|||
min-width="180" |
|||
/> |
|||
<el-table-column |
|||
prop="mobile" |
|||
label="手机号" |
|||
align="center" |
|||
min-width="160" |
|||
/> |
|||
<el-table-column |
|||
prop="rdsj" |
|||
label="入党时间" |
|||
align="center" |
|||
min-width="160" |
|||
/> |
|||
<el-table-column |
|||
prop="sszb" |
|||
label="所属党组织" |
|||
align="center" |
|||
min-width="160" |
|||
/> |
|||
<el-table-column |
|||
prop="ldzh" |
|||
label="流动党员证号" |
|||
align="center" |
|||
min-width="160" |
|||
/> |
|||
<el-table-column |
|||
prop="partyZw" |
|||
label="职务" |
|||
align="center" |
|||
width="100" |
|||
/> |
|||
<el-table-column |
|||
prop="address" |
|||
label="地址" |
|||
align="center" |
|||
show-overflow-tooltip |
|||
min-width="180" |
|||
/> |
|||
<el-table-column |
|||
prop="isPay" |
|||
label="是否缴费" |
|||
align="center" |
|||
width="100" |
|||
/> |
|||
<el-table-column |
|||
prop="payDate" |
|||
label="最近一次缴费时间" |
|||
align="center" |
|||
min-width="160" |
|||
/> |
|||
<el-table-column |
|||
prop="culture" |
|||
label="文化程度" |
|||
align="center" |
|||
width="100" |
|||
/> |
|||
<el-table-column |
|||
prop="point" |
|||
label="量化积分" |
|||
align="center" |
|||
width="100" |
|||
/> |
|||
<el-table-column |
|||
prop="activityPoint" |
|||
label="活跃积分" |
|||
align="center" |
|||
width="100" |
|||
/> |
|||
<el-table-column |
|||
prop="volunteerCategory" |
|||
label="志愿者类别" |
|||
align="center" |
|||
width="100" |
|||
/> |
|||
<el-table-column |
|||
prop="remark" |
|||
label="备注" |
|||
align="center" |
|||
min-width="180" |
|||
/> |
|||
<!-- <template slot-scope="scope"> |
|||
<div class="div-content">{{ handleFilterSpan(scope.row, item) }}</div> |
|||
</template> --> |
|||
<!-- </el-table-column> --> |
|||
<el-table-column fixed="right" label="操作" align="center" width="200"> |
|||
<template slot-scope="scope"> |
|||
<el-button |
|||
@click="handleLook(scope.row)" |
|||
type="text" |
|||
size="small" |
|||
class="btn-color-look" |
|||
>查看</el-button |
|||
> |
|||
<el-button |
|||
@click="handleEdit(scope.row, 'edit')" |
|||
type="text" |
|||
size="small" |
|||
class="btn-color-edit" |
|||
>修改</el-button |
|||
> |
|||
<el-popconfirm |
|||
title="删除之后无法恢复,确认删除?" |
|||
@onConfirm="handleDel(scope.row)" |
|||
> |
|||
<el-button |
|||
slot="reference" |
|||
type="text" |
|||
size="small" |
|||
class="btn-color-del" |
|||
>删除</el-button |
|||
> |
|||
</el-popconfirm> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
<div> |
|||
<el-pagination |
|||
@size-change="handleSizeChange" |
|||
@current-change="handleCurrentChange" |
|||
:current-page.sync="currentPage" |
|||
:page-sizes="[20, 50, 100, 200]" |
|||
:page-size="pageSize" |
|||
layout="sizes, prev, pager, next, total" |
|||
:total="total" |
|||
> |
|||
</el-pagination> |
|||
</div> |
|||
</el-card> |
|||
|
|||
<el-dialog |
|||
title="党员信息" |
|||
:visible.sync="dialogVisible" |
|||
width="60%" |
|||
top="5vh" |
|||
class="dialog-h" |
|||
append-to-body |
|||
:close-on-click-modal="false" |
|||
:before-close="handlerCancle" |
|||
> |
|||
<crate-form v-if="dialogVisible" :info="detailInfo" :partyList="optionsG" |
|||
:disabled="disabled" |
|||
@saveBase="handleSearch" @cancle="handlerCancle" /> |
|||
</el-dialog> |
|||
|
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import axios from 'axios' |
|||
import { mapGetters } from 'vuex' |
|||
import crateForm from './crateForm.vue' |
|||
export default { |
|||
components: { |
|||
crateForm |
|||
}, |
|||
data() { |
|||
return { |
|||
uploadUlr: window.SITE_CONFIG['apiURL'] + '/oss/file/uploadqrcodeV2', |
|||
importBtnTitle: '导入', |
|||
importLoading: false, |
|||
exportBtn: false, |
|||
exportBtnTitle: '导出', |
|||
tableLoading: false, |
|||
btnLoading: false, |
|||
uploading: false, |
|||
disabled: false, |
|||
pageLoading: false, |
|||
dialogVisible: false, |
|||
currentPage: 1, |
|||
pageSize: 20, |
|||
total: null, |
|||
tableData: [], |
|||
searchH: 0, |
|||
unloadPencent: 0, |
|||
addLevel: '1', |
|||
addType: 'add', |
|||
value: '', |
|||
optionsEditG: [], |
|||
optionsG: [], |
|||
optionsC: [], |
|||
optionsEditC: [], |
|||
options: [ |
|||
{ |
|||
label: '是', |
|||
value: 1 |
|||
},{ |
|||
label: '否', |
|||
value: 2 |
|||
} |
|||
], |
|||
zwList: [ |
|||
{ |
|||
label: '普通党员', |
|||
value: '0' |
|||
}, |
|||
{ |
|||
label: '支部书记', |
|||
value: '1' |
|||
}, |
|||
{ |
|||
label: '支部委员', |
|||
value: '2' |
|||
}, |
|||
{ |
|||
label: '党委委员', |
|||
value: '3' |
|||
}, |
|||
], |
|||
demandOptions: [], |
|||
tableHeader: [ |
|||
{ |
|||
label: '党员姓名', |
|||
columnName: 'name', |
|||
align: 'center', |
|||
width: '160', |
|||
options: [] |
|||
}, { |
|||
label: '所属网格', |
|||
align: 'center', |
|||
columnName: 'gridName', |
|||
width: '200', |
|||
options: [] |
|||
}, { |
|||
label: '分类类别', |
|||
align: 'center', |
|||
columnName: 'categoryName', |
|||
width: '160', |
|||
options: [] |
|||
}, { |
|||
label: '主要事迹', |
|||
columnName: 'mainDeed', |
|||
align: 'center', |
|||
width: '', |
|||
options: [] |
|||
} |
|||
], |
|||
partyOrgRange: [], |
|||
timeRangePay: [], |
|||
timeRange: [], |
|||
customerId: '', |
|||
searchForm: { |
|||
partyOrgId: '', |
|||
mobile: '', |
|||
idCard: '', |
|||
name: '', |
|||
address: '', |
|||
isLd: '', |
|||
ldzh: '', |
|||
partyZw: '', |
|||
isDyzxh: '', |
|||
isMxx: '', |
|||
culture: '', |
|||
isPay: '', |
|||
rdsjStartDate: '', |
|||
rdsjEndDate: '', |
|||
payStatrDate: '', |
|||
payEndDate: '' |
|||
}, |
|||
detailInfo: {}, |
|||
partyProps: { |
|||
label: 'partyOrgName', |
|||
value: 'id', |
|||
checkStrictly: true |
|||
} |
|||
} |
|||
}, |
|||
computed: { |
|||
...mapGetters(['clientHeight', 'iframeHeight']), |
|||
tableHeight() { |
|||
const h = this.clientHeight - this.searchH - 280 + this.iframeHeigh |
|||
const _h = this.clientHeight - 280 - this.searchH |
|||
return this.$store.state.inIframe ? h : _h |
|||
} |
|||
}, |
|||
async created() { |
|||
this.customerId = localStorage.getItem('customerId') |
|||
// setTimeout(() => { |
|||
// this.getTableData() |
|||
// this.getGridList('query') |
|||
// this.getGridList('addorupdate') |
|||
// this.getCateList('query') |
|||
// this.getCateList('addorupdate') |
|||
// }, 200) |
|||
this.getTableData() |
|||
this.getGridList('query') |
|||
// this.getGridList('addorupdate') |
|||
// this.getCateList('query') |
|||
// this.getCateList('addorupdate') |
|||
this.pageLoading = true |
|||
|
|||
// this.tableHeight = document.documentElement.clientHeight - this.$refs.searchCard.$el.offsetHeight - 280 + 'px' |
|||
}, |
|||
|
|||
mounted() { |
|||
|
|||
this.$nextTick(() => { |
|||
this.searchH = this.$refs.searchCard.$el.offsetHeight |
|||
console.log('tableHeight', this.tableHeight) |
|||
}) |
|||
|
|||
}, |
|||
methods: { |
|||
handleSizeChange(val) { |
|||
console.log(`每页 ${val} 条`) |
|||
this.pageSize = val |
|||
this.getTableData() |
|||
}, |
|||
handleCurrentChange(val) { |
|||
console.log(`当前页: ${val}`) |
|||
this.currentPage = val |
|||
this.getTableData() |
|||
}, |
|||
handlePartyChange(val) { |
|||
console.log('val------pp', val) |
|||
this.searchForm.partyOrgId = val[val.length - 1] |
|||
}, |
|||
handleFilterSpan(row, item) { |
|||
let _val = '' |
|||
if (item.options && item.options.length > 0) { |
|||
item.options.forEach((n) => { |
|||
if (n.value === row[item.columnName]) _val = n.label |
|||
}) |
|||
} |
|||
return _val || row[item.columnName] |
|||
}, |
|||
handleTimeChange (val) { |
|||
if (val.length > 0) { |
|||
this.searchForm.rdsjStartDate = val[0] |
|||
this.searchForm.rdsjEndDate = val[0] |
|||
} else { |
|||
this.searchForm.rdsjStartDate = '' |
|||
this.searchForm.rdsjEndDate = '' |
|||
} |
|||
|
|||
}, |
|||
handleTimeChangePay (timvale) { |
|||
if (val.length > 0) { |
|||
this.searchForm.payStatrDate = val[0] |
|||
this.searchForm.payEndDate = val[0] |
|||
} else { |
|||
this.searchForm.payStatrDate = '' |
|||
this.searchForm.payEndDate = '' |
|||
} |
|||
|
|||
}, |
|||
// 上传大图标成功 |
|||
handleExcelSuccess (res, file) { |
|||
if (res.code === 0 && res.msg === 'success') { |
|||
|
|||
console.log('resss---ppp', res) |
|||
|
|||
} else { |
|||
this.$message.error(res.msg) |
|||
} |
|||
}, |
|||
handleProgress(event, file, fileList) { |
|||
console.log('percentage', event, file.percentage) |
|||
this.uploading = true |
|||
this.unloadPencent = Number(file.percentage.toFixed(0)) |
|||
}, |
|||
download (data, fileName) { |
|||
console.log('data', data) |
|||
if (!data) { |
|||
return |
|||
} |
|||
|
|||
var csvData = new Blob([data]) |
|||
|
|||
if (window.navigator && window.navigator.msSaveOrOpenBlob) { |
|||
window.navigator.msSaveOrOpenBlob(csvData, fileName) |
|||
} |
|||
// for Non-IE (chrome, firefox etc.) |
|||
else { |
|||
var a = document.createElement('a') |
|||
document.body.appendChild(a) |
|||
a.style = 'display: none' |
|||
var url = window.URL.createObjectURL(csvData) |
|||
a.href = url |
|||
a.download = fileName |
|||
a.click() |
|||
a.remove() |
|||
window.URL.revokeObjectURL(url) |
|||
} |
|||
}, |
|||
async handleExportModule () { |
|||
let url = "/resi/partymember/icpartymemberstyle/import/template-download" |
|||
|
|||
|
|||
let params = {} |
|||
|
|||
await this.$http({ |
|||
method: 'POST', |
|||
url, |
|||
responseType: 'blob', |
|||
data: params |
|||
}) |
|||
.then(res => { |
|||
console.log('res-------dd', res) |
|||
if (res.headers["content-disposition"]) { |
|||
let fileName = window.decodeURI(res.headers["content-disposition"].split(";")[1].split("=")[1]) |
|||
this.download(res.data, fileName) |
|||
|
|||
} else this.$message.error('下载失败') |
|||
}) |
|||
.catch(err => { |
|||
console.log('err', err) |
|||
return this.$message.error('网络错误') |
|||
}) |
|||
}, |
|||
beforeExcelUpload (file) { |
|||
console.log('file', file) |
|||
const isType = file.type === 'application/vnd.ms-excel' |
|||
const isTypeComputer = file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' |
|||
const fileType = isType || isTypeComputer |
|||
const isLt1M = (file.size / 1024 / 1024) < 10 |
|||
if(!fileType) { |
|||
this.$message.error('上传文件只能是xls/xlsx格式!') |
|||
} |
|||
|
|||
if (!isLt1M) { |
|||
this.$message.error('上传文件大小不能超过 10MB!') |
|||
} |
|||
return fileType && isLt1M |
|||
}, |
|||
async uploadHttpRequest(file) { |
|||
this.importLoading = true |
|||
this.importBtnTitle = '正在上传中...' |
|||
this.$message({ |
|||
showClose: true, |
|||
message: '导入中,请到系统管理-导入记录中查看进度', |
|||
duration: 0 |
|||
}) |
|||
const formData = new FormData() //FormData对象,添加参数只能通过append('key', value)的形式添加 |
|||
formData.append('file', file.file) //添加文件对象 |
|||
this.$http |
|||
.post('/resi/partymember/icpartymemberstyle/import', formData).then(res => { |
|||
console.log('res-up', res) |
|||
if (res.data.code == 0 && res.data.msg == 'success') { |
|||
// this.$message.success('导入成功') |
|||
this.getTableData() |
|||
} 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 handleExport() { |
|||
this.exportBtn = true |
|||
this.exportBtnTitle = '正在导出...' |
|||
let params = { |
|||
agencyId: this.$store.state.user.agencyId, |
|||
pageSize: 9999, |
|||
pageNo: this.currentPage |
|||
} |
|||
// .post('epmetuser/icresiuser/exportExcel', params) |
|||
await axios({ |
|||
url: window.SITE_CONFIG['apiURL'] + '/resi/partymember/icpartymemberstyle/export', |
|||
// url: 'epmetuser/icresiuser/exportExcel', |
|||
method: 'post', |
|||
data: params, |
|||
responseType: 'blob' |
|||
}) |
|||
.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.exportBtn = false |
|||
this.exportBtnTitle = '导出' |
|||
}, |
|||
beforeImgUpload (file) { |
|||
const isPNG = (file.type === 'image/png') || (file.type === 'image/jpeg') |
|||
const isLt1M = file.size / 1024 / 1024 < 10 |
|||
|
|||
if (!isPNG) { |
|||
this.$message.error('上传图片只能是 PNG 或 JPEG 格式!') |
|||
} |
|||
if (!isLt1M) { |
|||
this.$message.error('上传图片大小不能超过 10MB!') |
|||
} |
|||
return isPNG && isLt1M |
|||
}, |
|||
handleImgSuccess (res, file) { |
|||
if (res.code === 0 && res.msg === 'success') { |
|||
|
|||
console.log('res.data.url', res.data.url) |
|||
this.uploading = false |
|||
this.unloadPencent = 0 |
|||
this.form.imageList.push(res.data.url) |
|||
|
|||
} else { |
|||
this.$message.error(res.msg) |
|||
} |
|||
}, |
|||
handleDelimg(item, index) { |
|||
this.form.imageList.splice(index, 1) |
|||
}, |
|||
handleSearch(val) { |
|||
console.log('searchhh--', val) |
|||
this.currentPage = 1 |
|||
this.getTableData() |
|||
}, |
|||
resetForm(formName) { |
|||
this.timeRangePay = [] |
|||
this.timeRange = [] |
|||
this.$refs[formName].resetFields() |
|||
this.handleSearch() |
|||
}, |
|||
handleAdd() { |
|||
|
|||
this.dialogVisible = true |
|||
}, |
|||
|
|||
handlerCancle() { |
|||
this.detailInfo = {} |
|||
this.disabled = false |
|||
this.dialogVisible = false |
|||
}, |
|||
async handleLook(row) { |
|||
this.disabled = true |
|||
await this.getDetail(row.id) |
|||
}, |
|||
async handleEdit(row, addType) { |
|||
// this.form = { ...row } |
|||
await this.getDetail(row.id) |
|||
this.dialogVisible = true |
|||
}, |
|||
|
|||
handleDel(row) { |
|||
let params = { |
|||
ids: [row.id] |
|||
} |
|||
console.log('row1', row) |
|||
this.$http |
|||
.post('/resi/partymember/icPartyMember/delete', [row.id]) |
|||
.then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} else { |
|||
this.$message.success('删除成功') |
|||
this.getTableData() |
|||
} |
|||
}) |
|||
.catch((err) => { |
|||
return this.$message.error('网络错误') |
|||
}) |
|||
}, |
|||
async getDetail(id) { |
|||
let params = { |
|||
id, |
|||
} |
|||
this.$http |
|||
.post(`/resi/partymember/icPartyMember/${id}`) |
|||
.then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} else { |
|||
this.detailInfo = { ...res.data } |
|||
this.dialogVisible = true |
|||
} |
|||
}) |
|||
.catch((err) => { |
|||
console.log('row4', err) |
|||
return this.$message.error('网络错误') |
|||
}) |
|||
}, |
|||
async getGridList(type, agencyId) { |
|||
const { user } = await this.$store.state |
|||
console.log('user---ppp', user) |
|||
// addorupdate query |
|||
await this.$http |
|||
.get('/resi/partymember/icPartyOrg/getTreelist', { params: {agencyId: agencyId || user.agencyId} }) |
|||
.then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} else { |
|||
console.log('获取查询详情成功', res.data) |
|||
|
|||
this.optionsG = this.deepArrTOnull(res.data) |
|||
} |
|||
}) |
|||
.catch(() => { |
|||
return this.$message.error('网络错误') |
|||
}) |
|||
}, |
|||
deepArrTOnull(arr) { |
|||
let a = [] |
|||
a = arr.map(item => { |
|||
return { |
|||
...item, |
|||
children: (item.children.length > 0 && this.deepArrTOnull(item.children) )|| null |
|||
} |
|||
}) |
|||
return a |
|||
}, |
|||
async getCateList(type) { |
|||
const { user } = await this.$store.state |
|||
console.log('user---ppp', user) |
|||
const params = { |
|||
customerId: this.customerId, |
|||
type |
|||
} |
|||
// addorupdate query |
|||
await this.$http |
|||
.post('/resi/partymember/stylecategorydict/select-list', params) |
|||
.then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} else { |
|||
console.log('获取查询详情成功', res.data) |
|||
|
|||
if (type === 'query') this.optionsC = res.data |
|||
else this.optionsEditC = res.data |
|||
} |
|||
}) |
|||
.catch(() => { |
|||
return this.$message.error('网络错误') |
|||
}) |
|||
}, |
|||
async getTableData() { |
|||
this.tableLoading = true |
|||
const { user } = await this.$store.state |
|||
let params = { |
|||
...this.searchForm, |
|||
agencyId: user.agencyId, |
|||
pageNo: this.currentPage, |
|||
pageSize: this.pageSize |
|||
} |
|||
await this.$http |
|||
.post('/resi/partymember/icPartyMember/page', params) |
|||
.then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} else { |
|||
this.tableData = res.data.list |
|||
this.total = res.data.total |
|||
} |
|||
}) |
|||
.catch(() => { |
|||
return this.$message.error('网络错误') |
|||
}) |
|||
this.tableLoading = false |
|||
} |
|||
|
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
@import "@/assets/scss/buttonstyle.scss"; |
|||
|
|||
.resi-container .resi-card-table { |
|||
::v-deep .el-table th { |
|||
color: #fff; |
|||
background-color: rgba(33, 149, 254, 1); |
|||
// border-right: 1px solid rgba(33, 149, 254, 1); |
|||
} |
|||
} |
|||
.resi-table { |
|||
::v-deep .el-button--text { |
|||
text-decoration: underline; |
|||
} |
|||
::v-deep .btn-color-del { |
|||
margin-left: 10px; |
|||
color: rgba(213, 16, 16, 1); |
|||
} |
|||
::v-deep .btn-color-edit { |
|||
color: rgba(0, 167, 169, 1); |
|||
} |
|||
} |
|||
.form-wr { |
|||
.input-width { |
|||
width: 260px; |
|||
|
|||
} |
|||
.input-width-textarea { |
|||
width: 500px; |
|||
} |
|||
.imsg-list { |
|||
display: flex; |
|||
align-items: center; |
|||
.imgs-item { |
|||
position: relative; |
|||
margin-right: 10px; |
|||
.el-icon-delete { |
|||
position: absolute; |
|||
top: 0; |
|||
right: 0; |
|||
font-size: 18px; |
|||
color: red; |
|||
z-index: 3; |
|||
cursor: pointer; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
.div-content { |
|||
width: 100%; |
|||
overflow: hidden; |
|||
text-overflow: ellipsis; |
|||
white-space: nowrap; |
|||
} |
|||
</style> |
|||
|
|||
<style lang="scss" scoped> |
|||
|
|||
.resi-row-btn { |
|||
display: flex; |
|||
margin-bottom: 13px; |
|||
::v-deep .el-button { |
|||
// margin-left: 10px; |
|||
border: 0; |
|||
} |
|||
::v-deep .el-select { |
|||
margin-right: 10px; |
|||
} |
|||
.el-button--success { |
|||
background: rgba(34, 193, 195, 1); |
|||
} |
|||
.el-button { |
|||
margin-left: 10px; |
|||
border: 0; |
|||
} |
|||
.el-button--success { |
|||
background: rgba(34, 193, 195, 1); |
|||
} |
|||
.el-button--warning { |
|||
background: rgba(254, 179, 73, 1); |
|||
} |
|||
.el-button--danger { |
|||
background: rgba(254, 98, 82, 1); |
|||
} |
|||
} |
|||
.avatar-uploader { |
|||
::v-deep |
|||
.el-upload { |
|||
cursor: pointer; |
|||
position: relative; |
|||
overflow: hidden; |
|||
} |
|||
.el-upload:hover { |
|||
border-color: #409EFF; |
|||
} |
|||
.avatar { |
|||
width: 100px; |
|||
height: 100px; |
|||
display: block; |
|||
} |
|||
.avatar-uploader-icon { |
|||
border: 1px dashed #d9d9d9; |
|||
border-radius: 6px; |
|||
font-size: 28px; |
|||
color: #8c939d; |
|||
width: 100px; |
|||
height: 100px; |
|||
line-height: 100px; |
|||
text-align: center; |
|||
} |
|||
} |
|||
|
|||
|
|||
|
|||
.resi-btns { |
|||
margin-top: 20px; |
|||
text-align: center; |
|||
} |
|||
</style> |
@ -0,0 +1,160 @@ |
|||
<template> |
|||
<el-dialog :visible.sync="visible" :title="!dataForm.id ? $t('add') : $t('update')" :close-on-click-modal="false" :close-on-press-escape="false"> |
|||
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" :label-width="$i18n.locale === 'en-US' ? '120px' : '80px'"> |
|||
<el-form-item label="客户Id (customer.id)" prop="customerId"> |
|||
<el-input v-model="dataForm.customerId" placeholder="客户Id (customer.id)"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="党员ID" prop="partyMemberId"> |
|||
<el-input v-model="dataForm.partyMemberId" placeholder="党员ID"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="缴费日期" prop="payDate"> |
|||
<el-input v-model="dataForm.payDate" placeholder="缴费日期"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="缴费金额" prop="money"> |
|||
<el-input v-model="dataForm.money" placeholder="缴费金额"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="缴费开始时间" prop="startDate"> |
|||
<el-input v-model="dataForm.startDate" placeholder="缴费开始时间"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="缴费结束时间" prop="endDate"> |
|||
<el-input v-model="dataForm.endDate" placeholder="缴费结束时间"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="删除标识:0.未删除 1.已删除" prop="delFlag"> |
|||
<el-input v-model="dataForm.delFlag" placeholder="删除标识:0.未删除 1.已删除"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="乐观锁" prop="revision"> |
|||
<el-input v-model="dataForm.revision" placeholder="乐观锁"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="创建人" prop="createdBy"> |
|||
<el-input v-model="dataForm.createdBy" placeholder="创建人"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="创建时间" prop="createdTime"> |
|||
<el-input v-model="dataForm.createdTime" placeholder="创建时间"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="更新人" prop="updatedBy"> |
|||
<el-input v-model="dataForm.updatedBy" placeholder="更新人"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="更新时间" prop="updatedTime"> |
|||
<el-input v-model="dataForm.updatedTime" placeholder="更新时间"></el-input> |
|||
</el-form-item> |
|||
</el-form> |
|||
<template slot="footer"> |
|||
<el-button @click="visible = false">{{ $t('cancel') }}</el-button> |
|||
<el-button type="primary" @click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button> |
|||
</template> |
|||
</el-dialog> |
|||
</template> |
|||
|
|||
<script> |
|||
import debounce from 'lodash/debounce' |
|||
|
|||
export default { |
|||
data () { |
|||
return { |
|||
visible: false, |
|||
dataForm: { |
|||
id: '', |
|||
customerId: '', |
|||
partyMemberId: '', |
|||
payDate: '', |
|||
money: '', |
|||
startDate: '', |
|||
endDate: '', |
|||
delFlag: '', |
|||
revision: '', |
|||
createdBy: '', |
|||
createdTime: '', |
|||
updatedBy: '', |
|||
updatedTime: '' |
|||
} |
|||
} |
|||
}, |
|||
computed: { |
|||
dataRule () { |
|||
return { |
|||
customerId: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
partyMemberId: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
payDate: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
money: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
startDate: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
endDate: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
delFlag: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
revision: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
createdBy: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
createdTime: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
updatedBy: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
updatedTime: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
] |
|||
} |
|||
} |
|||
}, |
|||
methods: { |
|||
init () { |
|||
this.visible = true; |
|||
this.$nextTick(() => { |
|||
this.$refs['dataForm'].resetFields() |
|||
if (this.dataForm.id); { |
|||
this.getInfo() |
|||
} |
|||
}) |
|||
}, |
|||
// 获取信息 |
|||
getInfo () { |
|||
this.$http.get(`/${moduleName}/${pathName}/#[[${this.dataForm.id}`).then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
;return this.$message.error(res.msg); |
|||
} |
|||
this.dataForm = { |
|||
...this.dataForm, |
|||
...res.data |
|||
} |
|||
}).catch(() => {}) |
|||
}, |
|||
// 表单提交 |
|||
dataFormSubmitHandle: debounce(function () { |
|||
this.$refs['dataForm'].validate((valid) => { |
|||
if (!valid); { |
|||
return false |
|||
} |
|||
this.$http[!this.dataForm.id ? 'post' : 'put']('/${moduleName}/${pathName}/', this.dataForm).then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg); |
|||
} |
|||
this.$message({ |
|||
message: this.$t('prompt.success'), |
|||
type: 'success', |
|||
duration: 500, |
|||
onClose: () => { |
|||
this.visible = false; |
|||
this.$emit('refreshDataList') |
|||
} |
|||
}) |
|||
}).catch(() => {}) |
|||
}) |
|||
}, 1000, { 'leading': true, 'trailing': false }) |
|||
} |
|||
} |
|||
</script> |
@ -0,0 +1,78 @@ |
|||
<template> |
|||
<el-card shadow="never" class="aui-card--fill"> |
|||
<div class="mod-partymember__icPartyMemberPayRecord}"> |
|||
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()"> |
|||
<el-form-item> |
|||
<el-input v-model="dataForm.id" placeholder="id" clearable></el-input> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button @click="getDataList()">{{ $t('query') }}</el-button> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button v-if="$hasPermission('partymember:icPartyMemberPayRecord:save')" type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}</el-button> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button v-if="$hasPermission('partymember:icPartyMemberPayRecord:delete')" type="danger" @click="deleteHandle()">{{ $t('deleteBatch') }}</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%;"> |
|||
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column> |
|||
<el-table-column prop="id" label="唯一标识" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="customerId" label="客户Id (customer.id)" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="partyMemberId" label="党员ID" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="payDate" label="缴费日期" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="money" label="缴费金额" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="startDate" label="缴费开始时间" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="endDate" label="缴费结束时间" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="delFlag" label="删除标识:0.未删除 1.已删除" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="revision" label="乐观锁" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="createdBy" label="创建人" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="createdTime" label="创建时间" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="updatedBy" label="更新人" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="updatedTime" label="更新时间" header-align="center" align="center"></el-table-column> |
|||
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150"> |
|||
<template slot-scope="scope"> |
|||
<el-button v-if="$hasPermission('partymember:icPartyMemberPayRecord:update')" type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button> |
|||
<el-button v-if="$hasPermission('partymember:icPartyMemberPayRecord:delete')" type="text" size="small" @click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
<el-pagination |
|||
:current-page="page" |
|||
:page-sizes="[10, 20, 50, 100]" |
|||
:page-size="limit" |
|||
:total="total" |
|||
layout="total, sizes, prev, pager, next, jumper" |
|||
@size-change="pageSizeChangeHandle" |
|||
@current-change="pageCurrentChangeHandle"> |
|||
</el-pagination> |
|||
<!-- 弹窗, 新增 / 修改 --> |
|||
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update> |
|||
</div> |
|||
</el-card> |
|||
</template> |
|||
|
|||
<script> |
|||
import mixinViewModule from '@/mixins/view-module' |
|||
import AddOrUpdate from './icpartymemberpayrecord-add-or-update' |
|||
|
|||
export default { |
|||
mixins: [mixinViewModule], |
|||
data () { |
|||
return { |
|||
mixinViewModuleOptions: { |
|||
getDataListURL: '/partymember/icPartyMemberPayRecord/page', |
|||
getDataListIsPage: true, |
|||
deleteURL: '/partymember/icPartyMemberPayRecord', |
|||
deleteIsBatch: true |
|||
}, |
|||
dataForm: { |
|||
id: '' |
|||
} |
|||
} |
|||
}, |
|||
components: { |
|||
AddOrUpdate |
|||
} |
|||
} |
|||
</script> |
@ -0,0 +1,160 @@ |
|||
<template> |
|||
<el-dialog :visible.sync="visible" :title="!dataForm.id ? $t('add') : $t('update')" :close-on-click-modal="false" :close-on-press-escape="false"> |
|||
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" :label-width="$i18n.locale === 'en-US' ? '120px' : '80px'"> |
|||
<el-form-item label="客户Id (customer.id)" prop="customerId"> |
|||
<el-input v-model="dataForm.customerId" placeholder="客户Id (customer.id)"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="党员ID" prop="partyMemberId"> |
|||
<el-input v-model="dataForm.partyMemberId" placeholder="党员ID"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="党员缴费记录表ID" prop="recordId"> |
|||
<el-input v-model="dataForm.recordId" placeholder="党员缴费记录表ID"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="缴费年度" prop="year"> |
|||
<el-input v-model="dataForm.year" placeholder="缴费年度"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="缴费季度" prop="quarter"> |
|||
<el-input v-model="dataForm.quarter" placeholder="缴费季度"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="缴费金额" prop="money"> |
|||
<el-input v-model="dataForm.money" placeholder="缴费金额"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="删除标识:0.未删除 1.已删除" prop="delFlag"> |
|||
<el-input v-model="dataForm.delFlag" placeholder="删除标识:0.未删除 1.已删除"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="乐观锁" prop="revision"> |
|||
<el-input v-model="dataForm.revision" placeholder="乐观锁"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="创建人" prop="createdBy"> |
|||
<el-input v-model="dataForm.createdBy" placeholder="创建人"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="创建时间" prop="createdTime"> |
|||
<el-input v-model="dataForm.createdTime" placeholder="创建时间"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="更新人" prop="updatedBy"> |
|||
<el-input v-model="dataForm.updatedBy" placeholder="更新人"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="更新时间" prop="updatedTime"> |
|||
<el-input v-model="dataForm.updatedTime" placeholder="更新时间"></el-input> |
|||
</el-form-item> |
|||
</el-form> |
|||
<template slot="footer"> |
|||
<el-button @click="visible = false">{{ $t('cancel') }}</el-button> |
|||
<el-button type="primary" @click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button> |
|||
</template> |
|||
</el-dialog> |
|||
</template> |
|||
|
|||
<script> |
|||
import debounce from 'lodash/debounce' |
|||
|
|||
export default { |
|||
data () { |
|||
return { |
|||
visible: false, |
|||
dataForm: { |
|||
id: '', |
|||
customerId: '', |
|||
partyMemberId: '', |
|||
recordId: '', |
|||
year: '', |
|||
quarter: '', |
|||
money: '', |
|||
delFlag: '', |
|||
revision: '', |
|||
createdBy: '', |
|||
createdTime: '', |
|||
updatedBy: '', |
|||
updatedTime: '' |
|||
} |
|||
} |
|||
}, |
|||
computed: { |
|||
dataRule () { |
|||
return { |
|||
customerId: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
partyMemberId: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
recordId: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
year: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
quarter: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
money: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
delFlag: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
revision: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
createdBy: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
createdTime: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
updatedBy: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
], |
|||
updatedTime: [ |
|||
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } |
|||
] |
|||
} |
|||
} |
|||
}, |
|||
methods: { |
|||
init () { |
|||
this.visible = true; |
|||
this.$nextTick(() => { |
|||
this.$refs['dataForm'].resetFields() |
|||
if (this.dataForm.id); { |
|||
this.getInfo() |
|||
} |
|||
}) |
|||
}, |
|||
// 获取信息 |
|||
getInfo () { |
|||
this.$http.get(`/${moduleName}/${pathName}/#[[${this.dataForm.id}`).then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
;return this.$message.error(res.msg); |
|||
} |
|||
this.dataForm = { |
|||
...this.dataForm, |
|||
...res.data |
|||
} |
|||
}).catch(() => {}) |
|||
}, |
|||
// 表单提交 |
|||
dataFormSubmitHandle: debounce(function () { |
|||
this.$refs['dataForm'].validate((valid) => { |
|||
if (!valid); { |
|||
return false |
|||
} |
|||
this.$http[!this.dataForm.id ? 'post' : 'put']('/${moduleName}/${pathName}/', this.dataForm).then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg); |
|||
} |
|||
this.$message({ |
|||
message: this.$t('prompt.success'), |
|||
type: 'success', |
|||
duration: 500, |
|||
onClose: () => { |
|||
this.visible = false; |
|||
this.$emit('refreshDataList') |
|||
} |
|||
}) |
|||
}).catch(() => {}) |
|||
}) |
|||
}, 1000, { 'leading': true, 'trailing': false }) |
|||
} |
|||
} |
|||
</script> |
@ -0,0 +1,284 @@ |
|||
<template> |
|||
<el-card shadow="never" class="aui-card--fill"> |
|||
<div class="mod-rent__rentDeath} resi-container"> |
|||
<el-card ref="searchCard" class="search-card"> |
|||
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()"> |
|||
<el-form-item prop="mySelectOrg" label="所属党组织"> |
|||
<el-cascader |
|||
v-model="mySelectOrg" |
|||
:options="orgList" |
|||
placeholder="请选择党组织" |
|||
:props="{ label: 'partyOrgName', value: 'id' }" |
|||
@change="handleChangeOrg" |
|||
clearable /> |
|||
</el-form-item> |
|||
<el-form-item label="姓名" |
|||
prop="name"> |
|||
<el-input v-model="dataForm.name" |
|||
size="small" |
|||
class="list_item_width_1" |
|||
clearable |
|||
placeholder="请输入姓名"> |
|||
</el-input> |
|||
</el-form-item> |
|||
<el-form-item label="身份证" |
|||
prop="idCard"> |
|||
<el-input v-model="dataForm.idCard" |
|||
size="small" |
|||
class="list_item_width_1" |
|||
clearable |
|||
placeholder="请输入身份证"> |
|||
</el-input> |
|||
</el-form-item> |
|||
<el-form-item label="手机" |
|||
prop="mobile"> |
|||
<el-input v-model="dataForm.mobile" |
|||
size="small" |
|||
class="list_item_width_1" |
|||
clearable |
|||
placeholder="请输入手机"> |
|||
</el-input> |
|||
</el-form-item> |
|||
<br/> |
|||
<el-form-item label="缴费年度" prop="year"> |
|||
<el-date-picker |
|||
v-model="dataForm.year" |
|||
type="year" |
|||
placeholder="选择年" |
|||
value-format="yyyy" |
|||
@change="yearChangeHandler"> |
|||
</el-date-picker> |
|||
</el-form-item> |
|||
<el-form-item label="" prop="month"> |
|||
<el-select v-model="dataForm.month" placeholder="选择月份" clearable :disabled="dataForm.year === '' || dataForm.year === null"> |
|||
<el-option v-for="item in monthArr" :key="item.dictValue" :label="item.dictName" :value="item.dictValue"> |
|||
</el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button @click="getDataList()" size="small">{{ $t('query') }}</el-button> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button class="diy-button--reset" size="small" @click="resetForm">重置</el-button> |
|||
</el-form-item> |
|||
<!--<el-form-item>--> |
|||
<!--<el-button type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}</el-button>--> |
|||
<!--</el-form-item>--> |
|||
<!--<el-form-item>--> |
|||
<!--<el-button type="danger" @click="deleteHandle()">{{ $t('deleteBatch') }}</el-button>--> |
|||
<!--</el-form-item>--> |
|||
</el-form> |
|||
</el-card> |
|||
<el-card class="resi-card-table"> |
|||
<div class="resi-row-btn"> |
|||
<el-button type="warning" size="small" class="diy-button--reset" @click="exportHandle()">{{ $t('export') }}</el-button> |
|||
</div> |
|||
<el-table class="resi-table" v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%;"> |
|||
<!--<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>--> |
|||
<el-table-column label="序号" header-align="center" align="center" width="50px"> |
|||
<template slot-scope="scope"> |
|||
{{scope.$index+1}} |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column prop="orgName" label="所属党组织" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="name" label="姓名" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="idCard" label="身份证" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="mobile" label="手机号" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="times" label="缴费次数" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="money" label="缴费金额" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="remark" label="备注" header-align="center" align="center"></el-table-column> |
|||
<!--<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">--> |
|||
<!--<template slot-scope="scope">--> |
|||
<!--<el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button>--> |
|||
<!--<el-button type="text" size="small" @click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button>--> |
|||
<!--</template>--> |
|||
<!--</el-table-column>--> |
|||
</el-table> |
|||
<el-pagination |
|||
:current-page="page" |
|||
:page-sizes="[10, 20, 50, 100]" |
|||
:page-size="limit" |
|||
:total="total" |
|||
layout="total, sizes, prev, pager, next, jumper" |
|||
@size-change="pageSizeChangeHandle" |
|||
@current-change="pageCurrentChangeHandle"> |
|||
</el-pagination> |
|||
</el-card> |
|||
<!-- 弹窗, 新增 / 修改 --> |
|||
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update> |
|||
</div> |
|||
</el-card> |
|||
</template> |
|||
|
|||
<script> |
|||
import mixinViewModule from '@/mixins/view-module' |
|||
import AddOrUpdate from './icpartymemberpayrecorddetail-add-or-update' |
|||
|
|||
export default { |
|||
mixins: [mixinViewModule], |
|||
data () { |
|||
return { |
|||
mixinViewModuleOptions: { |
|||
getDataListURL: '/resi/partymember/icPartyMemberPayRecordDetail/page', |
|||
getDataListIsPage: true, |
|||
deleteURL: '/resi/partymember/icPartyMemberPayRecordDetail', |
|||
deleteIsBatch: true |
|||
}, |
|||
dataForm: { |
|||
id: '', |
|||
name: '', |
|||
idCard: '', |
|||
mobile: '', |
|||
year: '', |
|||
month: '', |
|||
orgId: '' |
|||
}, |
|||
monthArr: [ |
|||
{ dictValue: '01', dictName: '一月' }, |
|||
{ dictValue: '02', dictName: '二月' }, |
|||
{ dictValue: '03', dictName: '三月' }, |
|||
{ dictValue: '04', dictName: '四月' }, |
|||
{ dictValue: '05', dictName: '五月' }, |
|||
{ dictValue: '06', dictName: '六月' }, |
|||
{ dictValue: '07', dictName: '七月' }, |
|||
{ dictValue: '08', dictName: '八月' }, |
|||
{ dictValue: '09', dictName: '九月' }, |
|||
{ dictValue: '10', dictName: '十月' }, |
|||
{ dictValue: '11', dictName: '十一月' }, |
|||
{ dictValue: '12', dictName: '十二月' } |
|||
], |
|||
mySelectOrg: '', |
|||
orgList: [], |
|||
} |
|||
}, |
|||
components: { |
|||
AddOrUpdate |
|||
}, |
|||
created() { |
|||
this.getOrgList() |
|||
}, |
|||
methods: { |
|||
resetForm(formName) { |
|||
for(const n in this.dataForm) { |
|||
this.dataForm[n] = '' |
|||
} |
|||
this.getDataList() |
|||
this.mySelectOrg = '' |
|||
}, |
|||
yearChangeHandler(){ |
|||
if(this.dataForm.year === '' || this.dataForm.year === null){ |
|||
this.dataForm.month = '' |
|||
} |
|||
}, |
|||
handleSizeChange (val) { |
|||
console.log(`每页 ${val} 条`) |
|||
this.pageSize = val |
|||
this.getDataList() |
|||
}, |
|||
handleCurrentChange (val) { |
|||
console.log(`当前页: ${val}`) |
|||
this.currentPage = val |
|||
this.getDataList() |
|||
}, |
|||
// 获取党组织列表 |
|||
getOrgList() { |
|||
return this.$http.get('/resi/partymember/icPartyOrg/getTreelist', {params: {agencyId: localStorage.getItem('agencyId')}}).then(({data: res}) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} |
|||
this.orgList = this.deepArrTOnull(res.data) |
|||
}).catch(() => {}) |
|||
}, |
|||
// 党组织选中事件 |
|||
handleChangeOrg(e) { |
|||
if (this.mySelectOrg.length > 0 && this.mySelectOrg) { |
|||
this.dataForm.orgId = this.mySelectOrg[this.mySelectOrg.length - 1] |
|||
} else { |
|||
this.dataForm.orgId = '' |
|||
} |
|||
}, |
|||
deepArrTOnull(arr) { |
|||
let a = [] |
|||
a = arr.map(item => { |
|||
return { |
|||
...item, |
|||
children: (item.children.length > 0 && this.deepArrTOnull(item.children) )|| null |
|||
} |
|||
}) |
|||
return a |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
<style lang="scss" scoped> |
|||
@import "@/assets/scss/buttonstyle.scss"; |
|||
|
|||
.resi-container .resi-card-table { |
|||
::v-deep .el-table th { |
|||
color: #fff; |
|||
background-color: rgba(33, 149, 254, 1); |
|||
// border-right: 1px solid rgba(33, 149, 254, 1); |
|||
} |
|||
} |
|||
.resi-table { |
|||
::v-deep .el-button--text { |
|||
text-decoration: underline; |
|||
} |
|||
::v-deep .btn-color-del { |
|||
margin-left: 10px; |
|||
color: rgba(213, 16, 16, 1); |
|||
} |
|||
::v-deep .btn-color-edit { |
|||
color: rgba(0, 167, 169, 1); |
|||
} |
|||
} |
|||
.form-wr { |
|||
.input-width { |
|||
width: 260px; |
|||
|
|||
} |
|||
.input-width-textarea { |
|||
width: 500px; |
|||
} |
|||
.imsg-list { |
|||
display: flex; |
|||
align-items: center; |
|||
.imgs-item { |
|||
position: relative; |
|||
margin-right: 10px; |
|||
.el-icon-delete { |
|||
position: absolute; |
|||
top: 0; |
|||
right: 0; |
|||
font-size: 18px; |
|||
color: red; |
|||
z-index: 3; |
|||
cursor: pointer; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
.div-content { |
|||
width: 100%; |
|||
overflow: hidden; |
|||
text-overflow: ellipsis; |
|||
white-space: nowrap; |
|||
} |
|||
.resi-row-btn { |
|||
display: flex; |
|||
margin-bottom: 13px; |
|||
.el-button { |
|||
margin-left: 10px; |
|||
border: 0; |
|||
} |
|||
// .el-button--success { |
|||
// background: rgba(34, 193, 195, 1); |
|||
// } |
|||
// .el-button--warning { |
|||
// background: rgba(254, 179, 73, 1); |
|||
// } |
|||
// .el-button--danger { |
|||
// background: rgba(254, 98, 82, 1); |
|||
// } |
|||
} |
|||
</style> |
@ -0,0 +1,228 @@ |
|||
<template> |
|||
<el-card shadow="never" class="aui-card--fill"> |
|||
<div class="mod-rent__rentDeath} resi-container"> |
|||
<el-card ref="searchCard" class="search-card"> |
|||
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()"> |
|||
<el-form-item prop="mySelectOrg" label="所属党组织"> |
|||
<el-cascader |
|||
style="width:300px" |
|||
v-model="mySelectOrg" |
|||
:options="orgList" |
|||
placeholder="请选择党组织" |
|||
:props="{ checkStrictly: true, label: 'partyOrgName', value: 'id', children: 'children' }" |
|||
@change="handleChangeOrg" |
|||
clearable /> |
|||
</el-form-item> |
|||
<el-form-item label="姓名" |
|||
prop="name"> |
|||
<el-input v-model="dataForm.name" |
|||
size="small" |
|||
class="list_item_width_1" |
|||
clearable |
|||
placeholder="请输入姓名"> |
|||
</el-input> |
|||
</el-form-item> |
|||
<el-form-item label="手机" |
|||
prop="mobile"> |
|||
<el-input v-model="dataForm.mobile" |
|||
size="small" |
|||
class="list_item_width_1" |
|||
clearable |
|||
placeholder="请输入手机"> |
|||
</el-input> |
|||
</el-form-item> |
|||
<el-form-item label="身份证" |
|||
prop="idCard"> |
|||
<el-input v-model="dataForm.idCard" |
|||
size="small" |
|||
class="list_item_width_1" |
|||
clearable |
|||
placeholder="请输入身份证"> |
|||
</el-input> |
|||
</el-form-item> |
|||
<br/> |
|||
<el-form-item label="评分年度" prop="year"> |
|||
<el-date-picker |
|||
v-model="dataForm.year" |
|||
type="year" |
|||
placeholder="选择年" |
|||
value-format="yyyy"> |
|||
</el-date-picker> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button @click="getDataList()" size="small">{{ $t('query') }}</el-button> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button class="diy-button--reset" size="small" @click="resetForm">重置</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
</el-card> |
|||
<el-card class="resi-card-table"> |
|||
<el-table class="resi-table" v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%;"> |
|||
<!--<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>--> |
|||
<el-table-column label="序号" header-align="center" align="center" width="50px"> |
|||
<template slot-scope="scope"> |
|||
{{scope.$index+1}} |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column prop="year" label="年度" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="partyOrg" label="所属党组织" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="name" label="姓名" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="idCard" label="身份证" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="mobile" label="手机号" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="totalScore" label="总分" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="basePoint" label="基础积分分值" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="reviewPoint" label="民主评议积分分值" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="inspirePoint" label="激励积分分值" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="warnPoint" label="警示扣分分值" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="remark" label="备注" header-align="center" align="center"></el-table-column> |
|||
</el-table> |
|||
<el-pagination |
|||
:current-page="page" |
|||
:page-sizes="[10, 20, 50, 100]" |
|||
:page-size="limit" |
|||
:total="total" |
|||
layout="total, sizes, prev, pager, next, jumper" |
|||
@size-change="pageSizeChangeHandle" |
|||
@current-change="pageCurrentChangeHandle"> |
|||
</el-pagination> |
|||
</el-card> |
|||
</div> |
|||
</el-card> |
|||
</template> |
|||
|
|||
<script> |
|||
import mixinViewModule from '@/mixins/view-module' |
|||
export default { |
|||
mixins: [mixinViewModule], |
|||
data () { |
|||
return { |
|||
mixinViewModuleOptions: { |
|||
getDataListURL: '/resi/partymember/icPartyMemberPoint/getList', |
|||
getDataListIsPage: true |
|||
}, |
|||
mySelectOrg: '', |
|||
orgList: [], |
|||
dataForm: { |
|||
id: '', |
|||
orgId: '', |
|||
name: '', |
|||
idCard: '', |
|||
mobile: '', |
|||
year: '' |
|||
} |
|||
} |
|||
}, |
|||
created() { |
|||
this.getOrgList() |
|||
}, |
|||
methods: { |
|||
resetForm(formName) { |
|||
for(const n in this.dataForm) { |
|||
this.dataForm[n] = '' |
|||
} |
|||
this.getDataList() |
|||
this.mySelectOrg = '' |
|||
}, |
|||
handleSizeChange (val) { |
|||
console.log(`每页 ${val} 条`) |
|||
this.pageSize = val |
|||
this.getDataList() |
|||
}, |
|||
handleCurrentChange (val) { |
|||
console.log(`当前页: ${val}`) |
|||
this.currentPage = val |
|||
this.getDataList() |
|||
}, |
|||
// 获取党组织列表 |
|||
getOrgList() { |
|||
return this.$http.get('/resi/partymember/icPartyOrg/getTreelist', {params: {agencyId: localStorage.getItem('agencyId')}}).then(({data: res}) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} |
|||
this.orgList = res.data |
|||
}).catch(() => {}) |
|||
}, |
|||
// 党组织选中事件 |
|||
handleChangeOrg(e) { |
|||
if (this.mySelectOrg.length > 0 && this.mySelectOrg) { |
|||
this.dataForm.orgId = this.mySelectOrg[this.mySelectOrg.length - 1] |
|||
} else { |
|||
this.dataForm.orgId = '' |
|||
} |
|||
}, |
|||
} |
|||
} |
|||
</script> |
|||
<style lang="scss" scoped> |
|||
@import "@/assets/scss/buttonstyle.scss"; |
|||
|
|||
.resi-container .resi-card-table { |
|||
::v-deep .el-table th { |
|||
color: #fff; |
|||
background-color: rgba(33, 149, 254, 1); |
|||
// border-right: 1px solid rgba(33, 149, 254, 1); |
|||
} |
|||
} |
|||
.resi-table { |
|||
::v-deep .el-button--text { |
|||
text-decoration: underline; |
|||
} |
|||
::v-deep .btn-color-del { |
|||
margin-left: 10px; |
|||
color: rgba(213, 16, 16, 1); |
|||
} |
|||
::v-deep .btn-color-edit { |
|||
color: rgba(0, 167, 169, 1); |
|||
} |
|||
} |
|||
.form-wr { |
|||
.input-width { |
|||
width: 260px; |
|||
|
|||
} |
|||
.input-width-textarea { |
|||
width: 500px; |
|||
} |
|||
.imsg-list { |
|||
display: flex; |
|||
align-items: center; |
|||
.imgs-item { |
|||
position: relative; |
|||
margin-right: 10px; |
|||
.el-icon-delete { |
|||
position: absolute; |
|||
top: 0; |
|||
right: 0; |
|||
font-size: 18px; |
|||
color: red; |
|||
z-index: 3; |
|||
cursor: pointer; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
.div-content { |
|||
width: 100%; |
|||
overflow: hidden; |
|||
text-overflow: ellipsis; |
|||
white-space: nowrap; |
|||
} |
|||
.resi-row-btn { |
|||
display: flex; |
|||
margin-bottom: 13px; |
|||
.el-button { |
|||
margin-left: 10px; |
|||
border: 0; |
|||
} |
|||
// .el-button--success { |
|||
// background: rgba(34, 193, 195, 1); |
|||
// } |
|||
// .el-button--warning { |
|||
// background: rgba(254, 179, 73, 1); |
|||
// } |
|||
// .el-button--danger { |
|||
// background: rgba(254, 98, 82, 1); |
|||
// } |
|||
} |
|||
</style> |
@ -0,0 +1,496 @@ |
|||
<template> |
|||
<el-dialog :visible.sync="visible" :title="!dataForm.id ? '新增党组织' : '更新党组织'" :close-on-click-modal="false" |
|||
:close-on-press-escape="false"> |
|||
<el-form class="form" |
|||
:model="dataForm" |
|||
:rules="dataRule" |
|||
ref="dataForm" |
|||
@keyup.enter.native="dataFormSubmitHandle()" |
|||
:label-width="$i18n.locale === 'en-US' ? '120px' : '100px'"> |
|||
<el-form-item prop="partyOrgType" label="组织类型"> |
|||
<el-select v-model="dataForm.partyOrgType" @change="changePartyOrgType" clearable placeholder="请选择组织类型"> |
|||
<el-option |
|||
v-for="item in partyOrgTypeList" |
|||
:key="item.value" |
|||
:label="item.name" |
|||
:value="item.value"> |
|||
</el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item prop="partyOrgName" label="组织名称"> |
|||
<el-input v-model="dataForm.partyOrgName" placeholder="请输入组织名称" style="width:300px"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="组织编码" prop="partyOrgCode"> |
|||
<el-input v-model="dataForm.partyOrgCode" placeholder="组织编码" style="width:300px"></el-input> |
|||
</el-form-item> |
|||
<el-form-item v-if="dataForm.partyOrgType != '5'" prop="maSelectAgency" label="行政组织"> |
|||
<el-cascader |
|||
style="width:300px" |
|||
v-model="dataForm.maSelectAgency" |
|||
:options="agencyOrgList" |
|||
placeholder="请选择行政组织" |
|||
:props="{ checkStrictly: true, label: 'name', value: 'id', children: 'children' }" |
|||
@change="handleChangeAgency" |
|||
clearable /> |
|||
</el-form-item> |
|||
<el-form-item prop="mySelectOrg" label="上级组织"> |
|||
<el-cascader |
|||
style="width:300px" |
|||
v-model="dataForm.mySelectOrg" |
|||
:options="orgList" |
|||
placeholder="请选择上级组织" |
|||
:props="{ checkStrictly: true, label: 'partyOrgName', value: 'id', children: 'children' }" |
|||
@change="handleChangeOrg" |
|||
clearable /> |
|||
</el-form-item> |
|||
<el-form-item label="党组织介绍" prop="introduction"> |
|||
<el-input style="width:300px" v-model="dataForm.introduction" type="textarea" maxlength="500" placeholder="党组织介绍"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="位置坐标" |
|||
prop="longitude" |
|||
style="display: block"> |
|||
<div class="item_width_1"> |
|||
|
|||
<div class="div_map"> |
|||
<div id="app"> |
|||
|
|||
</div> |
|||
<div style="display: none" id="mapSeach_id" class="div_searchmap"> |
|||
<el-input class="item_width_4" |
|||
maxlength="50" |
|||
size="mini" |
|||
placeholder="请输入关键字" |
|||
v-model="keyWords"> |
|||
</el-input> |
|||
<el-button style="margin-left: 10px" |
|||
type="primary" |
|||
size="mini" |
|||
@click="handleSearchMap">查询</el-button> |
|||
</div> |
|||
</div> |
|||
|
|||
<div id="lon_lat_id" style="margin-top: 10px; display: none"> |
|||
<span>经度</span> |
|||
<el-input class="item_width_3" |
|||
maxlength="50" |
|||
placeholder="请输入经度" |
|||
:readonly="true" |
|||
v-model="dataForm.longitude"> |
|||
</el-input> |
|||
<span style="margin-left: 20px">纬度</span> |
|||
<el-input class="item_width_3" |
|||
maxlength="50" |
|||
placeholder="请输入纬度" |
|||
:readonly="true" |
|||
v-model="dataForm.latitude"> |
|||
</el-input> |
|||
</div> |
|||
</div> |
|||
</el-form-item> |
|||
</el-form> |
|||
<template slot="footer"> |
|||
<el-button @click="visible = false">{{ $t('cancel') }}</el-button> |
|||
<el-button type="primary" @click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button> |
|||
</template> |
|||
</el-dialog> |
|||
</template> |
|||
|
|||
<script> |
|||
var map |
|||
var search |
|||
var markers |
|||
var infoWindowList |
|||
var geocoder // 新建一个正逆地址解析类 |
|||
import debounce from 'lodash/debounce' |
|||
|
|||
export default { |
|||
data() { |
|||
return { |
|||
visible: false, |
|||
keyWords: '', |
|||
dataForm: { |
|||
id: '', |
|||
partyOrgType: '', // 党组织类型 0省委,1市委,2区委,3党工委,4党委,5支部 |
|||
partyOrgName: '', // 组织名称 |
|||
partyOrgCode: '', // 组织编码 |
|||
mySelectOrg:'', // 我选中的当前党组织 |
|||
orgPid: '', // 党组织的上级ID,没有上级时为0 |
|||
orgPids: '', // 党组织的所有上级ID,没有上级时为0 |
|||
maSelectAgency: '', // 我选中的当前行政组织 |
|||
agencyId: '', // 行政组织id |
|||
agencyPids:'', // 行政组织父ids(英文逗号隔开) |
|||
longitude: 36.0722275, //经度 |
|||
latitude: 120.38945519, //纬度 |
|||
address: '', |
|||
introduction: '', // 党组织介绍 |
|||
|
|||
customerId: '', |
|||
staffId:'', |
|||
orgPidName: '', |
|||
agencyName:'' |
|||
}, |
|||
orgListVisible: false, |
|||
agencyListVisible:false, |
|||
orgList: [], |
|||
agencyId: '', |
|||
partyOrgTypeList: [], |
|||
agencyOrgList:[] |
|||
} |
|||
}, |
|||
mounted () { |
|||
setTimeout(() => { |
|||
this.initMap() |
|||
}, 800); |
|||
}, |
|||
methods: { |
|||
init() { |
|||
this.visible = true |
|||
this.agencyId = localStorage.getItem('agencyId') |
|||
this.dataForm.customerId = localStorage.getItem('customerId') |
|||
this.dataForm.staffId = localStorage.getItem('staffId') |
|||
this.$nextTick(() => { |
|||
this.$refs['dataForm'].resetFields() |
|||
//设置党组织类型 |
|||
this.setPartyOrgType() |
|||
this.getOrgList().then(() => { |
|||
if (this.dataForm.id) { |
|||
this.getInfo() |
|||
} else { |
|||
if(this.dataForm.orgPids) { |
|||
this.dataForm.mySelectOrg = this.dataForm.orgPids.split(':') |
|||
} else { |
|||
this.dataForm.mySelectOrg = '' |
|||
} |
|||
|
|||
this.orgListTreeSetDefaultHandle() |
|||
} |
|||
}) |
|||
}) |
|||
}, |
|||
//设置组织类型 |
|||
setPartyOrgType() { |
|||
// 社区级:community,街道级:street,区县级: district,市级: city 省级:province |
|||
// 党组织类型 0省委,1市委,2区委,3党工委,4党委,5支部 |
|||
this.level = localStorage.getItem('level') |
|||
if (this.level == 'province') { |
|||
this.partyOrgTypeList = [ |
|||
{value: '0', name: '省委'}, |
|||
{value: '1', name: '市委'}, |
|||
{value: '2', name: '区委'}, |
|||
{value: '3', name: '党工委'}, |
|||
{value: '4', name: '党委'}, |
|||
{value: '5', name: '支部'} |
|||
] |
|||
}else if(this.level == 'city'){ |
|||
this.partyOrgTypeList = [ |
|||
{value: '1', name: '市委'}, |
|||
{value: '2', name: '区委'}, |
|||
{value: '3', name: '党工委'}, |
|||
{value: '4', name: '党委'}, |
|||
{value: '5', name: '支部'} |
|||
] |
|||
}else if(this.level == 'district'){ |
|||
this.partyOrgTypeList = [ |
|||
{value: '2', name: '区委'}, |
|||
{value: '3', name: '党工委'}, |
|||
{value: '4', name: '党委'}, |
|||
{value: '5', name: '支部'} |
|||
] |
|||
}else if(this.level == 'street'){ |
|||
this.partyOrgTypeList = [ |
|||
{value: '3', name: '党工委'}, |
|||
{value: '4', name: '党委'}, |
|||
{value: '5', name: '支部'} |
|||
] |
|||
}else if(this.level == 'community'){ |
|||
this.partyOrgTypeList = [ |
|||
{value: '4', name: '党委'}, |
|||
{value: '5', name: '支部'} |
|||
] |
|||
} |
|||
}, |
|||
// 选中组织类型 组织类型为支部时不需要选择行政组织 |
|||
changePartyOrgType(value){ |
|||
if(value != '5'){ // 支部 |
|||
this.dataForm.agencyId = '' |
|||
this.dataForm.agencyPids = '' |
|||
this.dataForm.maSelectAgency = '' |
|||
} |
|||
this.$http.get('/gov/org/customeragency/getOrgTreeByUserAndType', {params: {agencyId: this.agencyId, orgType:value}}).then(({data: res}) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} |
|||
this.agencyOrgList = res.data |
|||
}).catch(() => {}) |
|||
}, |
|||
// 获取党组织列表 |
|||
getOrgList() { |
|||
return this.$http.get('/resi/partymember/icPartyOrg/getTreelist', {params: {agencyId: this.agencyId}}).then(({data: res}) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} |
|||
this.orgList = res.data |
|||
this.orgList.unshift({ |
|||
partyOrgName: '一级组织', |
|||
id: '0' |
|||
}); |
|||
}).catch(() => { |
|||
}) |
|||
}, |
|||
// 党组织选中事件 |
|||
handleChangeOrg(e) { |
|||
if (this.dataForm.mySelectOrg.length > 0 && this.dataForm.mySelectOrg) { |
|||
this.dataForm.orgPid = this.dataForm.mySelectOrg[this.dataForm.mySelectOrg.length - 1] |
|||
this.dataForm.orgPids = '' |
|||
this.dataForm.mySelectOrg.forEach(element => { |
|||
this.dataForm.orgPids = this.dataForm.orgPids ? this.dataForm.orgPids + ':' + element : element |
|||
}); |
|||
} else { |
|||
this.dataForm.orgPid = '' |
|||
this.dataForm.orgPids = '' |
|||
} |
|||
}, |
|||
// 行政组织选中事件 |
|||
handleChangeAgency(e){ |
|||
console.log(this.dataForm.maSelectAgency) |
|||
if (this.dataForm.maSelectAgency.length > 0 && this.dataForm.maSelectAgency) { |
|||
this.dataForm.agencyId = this.dataForm.maSelectAgency[this.dataForm.maSelectAgency.length - 1] |
|||
this.dataForm.agencyPids = '' |
|||
this.dataForm.maSelectAgency.forEach(element => { |
|||
this.dataForm.agencyPids = this.dataForm.agencyPids ? this.dataForm.agencyPids + ':' + element : element |
|||
}); |
|||
} else { |
|||
this.dataForm.agencyId = '' |
|||
this.dataForm.agencyPids = '' |
|||
} |
|||
}, |
|||
// 获取信息 |
|||
getInfo() { |
|||
this.$http.get(`/resi/partymember/icPartyOrg/${this.dataForm.id}`).then(({data: res}) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} |
|||
this.dataForm = { |
|||
...this.dataForm, |
|||
...res.data |
|||
} |
|||
// 党组织组织 |
|||
this.dataForm.mySelectOrg = this.dataForm.orgPids |
|||
// 行政组织 |
|||
this.dataForm.maSelectAgency = this.dataForm.agencyId |
|||
|
|||
}).catch(() => { |
|||
}) |
|||
|
|||
//根据组织类型获取行政组织 |
|||
this.getInfoAgencyLisy() |
|||
}, |
|||
getInfoAgencyLisy(){ |
|||
this.$http.get('/gov/org/customeragency/getOrgTreeByUserAndType', |
|||
{params: |
|||
{agencyId: this.agencyId, |
|||
orgType:this.dataForm.partyOrgType} |
|||
}).then(({data: res}) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} |
|||
this.agencyOrgList = res.data |
|||
}).catch(() => { |
|||
}) |
|||
}, |
|||
// 上级党组织树, 设置默认值 |
|||
orgListTreeSetDefaultHandle() { |
|||
this.dataForm.orgPid = '0' |
|||
this.dataForm.orgPidName = '一级组织' |
|||
}, |
|||
// 地图初始化函数,本例取名为init,开发者可根据实际情况定义 |
|||
initMap () { |
|||
if (document.getElementById('app')) { |
|||
document.getElementById('mapSeach_id').style.display = "block" |
|||
document.getElementById('lon_lat_id').style.display = "block" |
|||
} |
|||
|
|||
// 定义地图中心点坐标 |
|||
var center = new window.TMap.LatLng(36.0722275, 120.38945519) |
|||
// 定义map变量,调用 TMap.Map() 构造函数创建地图 |
|||
map = new window.TMap.Map(document.getElementById('app'), { |
|||
center: center, // 设置地图中心点坐标 |
|||
zoom: 17.2, // 设置地图缩放级别 |
|||
pitch: 43.5, // 设置俯仰角 |
|||
rotation: 45 // 设置地图旋转角度 |
|||
}) |
|||
|
|||
search = new window.TMap.service.Search({ pageSize: 10 }) |
|||
// 新建一个地点搜索类 |
|||
markers = new TMap.MultiMarker({ |
|||
map: map, |
|||
geometries: [] |
|||
}) |
|||
infoWindowList = Array(10) |
|||
|
|||
geocoder = new TMap.service.Geocoder(); // 新建一个正逆地址解析类 |
|||
|
|||
// 监听地图平移结束 |
|||
map.on('panend', () => { |
|||
this.handleMoveCenter() |
|||
}) |
|||
this.handleMoveCenter() |
|||
this.convert() |
|||
}, |
|||
setMarker (lat, lng) { |
|||
markers.setGeometries([]) |
|||
markers.add([ |
|||
{ |
|||
id: '4', |
|||
styleId: 'marker', |
|||
position: new TMap.LatLng(lat, lng), |
|||
properties: { |
|||
title: 'marker4' |
|||
} |
|||
} |
|||
]) |
|||
}, |
|||
|
|||
handleSearchMap () { |
|||
infoWindowList.forEach((infoWindow) => { |
|||
infoWindow.close() |
|||
}) |
|||
infoWindowList.length = 0 |
|||
markers.setGeometries([]) |
|||
// 在地图显示范围内以给定的关键字搜索地点 |
|||
search.searchRectangle({ keyword: this.keyWords, bounds: map.getBounds()}).then((result) => { |
|||
let { data } = result |
|||
if (Array.isArray(data) && data.length > 0) { |
|||
const { |
|||
location: { lat, lng } |
|||
} = data[0] |
|||
map.setCenter(new TMap.LatLng(lat, lng)) |
|||
this.setMarker(lat, lng) |
|||
this.dataForm.latitude = lat |
|||
this.dataForm.longitude = lng |
|||
this.convert() |
|||
} else { |
|||
this.$message.error('未检索到相关位置坐标') |
|||
} |
|||
}) |
|||
}, |
|||
|
|||
handleMoveCenter () { |
|||
//修改地图中心点 |
|||
const center = map.getCenter() |
|||
const lat = center.getLat() |
|||
const lng = center.getLng() |
|||
this.dataForm.latitude = lat |
|||
this.dataForm.longitude = lng |
|||
this.setMarker(lat, lng) |
|||
this.convert(lat, lng) |
|||
}, |
|||
|
|||
convert (lat, lng) { |
|||
markers.setGeometries([]); |
|||
// var input = document.getElementById('location').value.split(':'); |
|||
let location |
|||
if (lat && lng) { |
|||
location = new TMap.LatLng(lat, lng); |
|||
} else { |
|||
location = new TMap.LatLng(this.dataForm.latitude, this.dataForm.longitude); |
|||
} |
|||
// map.setCenter(location); |
|||
markers.updateGeometries([ |
|||
{ |
|||
id: 'main', // 点标注数据数组 |
|||
position: location, |
|||
}, |
|||
]); |
|||
// 将给定的坐标位置转换为地址 |
|||
geocoder.getAddress({ location: location }).then((result) => { |
|||
this.dataForm.address = result.result.address |
|||
// 显示搜索到的地址 |
|||
}); |
|||
}, |
|||
// 表单提交 |
|||
dataFormSubmitHandle: debounce(function () { |
|||
this.$refs['dataForm'].validate((valid) => { |
|||
if (!valid) { |
|||
return false |
|||
} |
|||
this.$http[!this.dataForm.id ? 'post' : 'put']('/resi/partymember/icPartyOrg/', this.dataForm).then(({data: res}) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} |
|||
this.$message({ |
|||
message: this.$t('prompt.success'), |
|||
type: 'success', |
|||
duration: 500, |
|||
onClose: () => { |
|||
this.visible = false |
|||
this.$emit('refreshDataList') |
|||
} |
|||
}) |
|||
}).catch(() => { |
|||
}) |
|||
}) |
|||
}, 1000, {'leading': true, 'trailing': false}) |
|||
}, |
|||
computed: { |
|||
dataRule() { |
|||
return { |
|||
mySelectOrg: [ |
|||
{required: true, message: this.$t('validate.required'), trigger: 'blur'} |
|||
], |
|||
partyOrgType: [ |
|||
{required: true, message: this.$t('validate.required'), trigger: 'blur'} |
|||
], |
|||
|
|||
longitude: [ |
|||
{required: true, message: this.$t('validate.required'), trigger: 'blur'} |
|||
], |
|||
latitude: [ |
|||
{required: true, message: this.$t('validate.required'), trigger: 'blur'} |
|||
], |
|||
maSelectAgency: [ |
|||
{required: true, message: this.$t('validate.required'), trigger: 'blur'} |
|||
] |
|||
} |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped > |
|||
@import "@/assets/scss/modules/visual/communityManageForm.scss"; |
|||
</style> |
|||
<style lang="scss" scoped> |
|||
.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; |
|||
} |
|||
} |
|||
</style> |
@ -0,0 +1,84 @@ |
|||
<template> |
|||
<el-card shadow="never" class="aui-card--fill"> |
|||
<div class="mod-partymember__icPartyOrg}"> |
|||
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()"> |
|||
<el-form-item> |
|||
<el-input v-model="dataForm.id" placeholder="id" clearable></el-input> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button @click="getDataList()">{{ $t('query') }}</el-button> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button v-if="$hasPermission('partymember:icPartyOrg:save')" type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}</el-button> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button v-if="$hasPermission('partymember:icPartyOrg:delete')" type="danger" @click="deleteHandle()">{{ $t('deleteBatch') }}</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%;"> |
|||
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column> |
|||
<el-table-column prop="id" label="唯一标识" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="customerId" label="客户Id (customer.id)" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="orgPid" label="党组织的上级ID,没有上级时为0" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="orgPids" label="党组织的所有上级ID,没有上级时为0" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="agencyId" label="行政组织 机关ID" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="agencyPids" label="行政组织 机关ID" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="partyOrgType" label="党组织类型 0省委,1市委,2区委,3党工委,4党委,5支部" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="partyOrgName" label="组织名称" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="partyOrgCode" label="组织编码" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="longitude" label="经度" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="latitude" label="纬度" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="address" label="地址" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="introduction" label="党组织介绍" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="delFlag" label="删除标识:0.未删除 1.已删除" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="revision" label="乐观锁" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="createdBy" label="创建人" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="createdTime" label="创建时间" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="updatedBy" label="更新人" header-align="center" align="center"></el-table-column> |
|||
<el-table-column prop="updatedTime" label="更新时间" header-align="center" align="center"></el-table-column> |
|||
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150"> |
|||
<template slot-scope="scope"> |
|||
<el-button v-if="$hasPermission('partymember:icPartyOrg:update')" type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button> |
|||
<el-button v-if="$hasPermission('partymember:icPartyOrg:delete')" type="text" size="small" @click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
<el-pagination |
|||
:current-page="page" |
|||
:page-sizes="[10, 20, 50, 100]" |
|||
:page-size="limit" |
|||
:total="total" |
|||
layout="total, sizes, prev, pager, next, jumper" |
|||
@size-change="pageSizeChangeHandle" |
|||
@current-change="pageCurrentChangeHandle"> |
|||
</el-pagination> |
|||
<!-- 弹窗, 新增 / 修改 --> |
|||
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update> |
|||
</div> |
|||
</el-card> |
|||
</template> |
|||
|
|||
<script> |
|||
import mixinViewModule from '@/mixins/view-module' |
|||
import AddOrUpdate from './icpartyorg-add-or-update' |
|||
|
|||
export default { |
|||
mixins: [mixinViewModule], |
|||
data () { |
|||
return { |
|||
mixinViewModuleOptions: { |
|||
getDataListURL: '/partymember/icPartyOrg/page', |
|||
getDataListIsPage: true, |
|||
deleteURL: '/partymember/icPartyOrg', |
|||
deleteIsBatch: true |
|||
}, |
|||
dataForm: { |
|||
id: '' |
|||
} |
|||
} |
|||
}, |
|||
components: { |
|||
AddOrUpdate |
|||
} |
|||
} |
|||
</script> |
@ -0,0 +1,235 @@ |
|||
<template> |
|||
<el-card class="resi-card-table"> |
|||
<div class="resi-row-btn"> |
|||
<el-button class="diy-button--add" |
|||
size="small" |
|||
@click="addOrUpdateHandle()">新增</el-button> |
|||
</div> |
|||
<!-- 列表表格 --> |
|||
<el-table |
|||
class="table" |
|||
v-loading="tableLoading" |
|||
:data="tableData" |
|||
:default-expand-all="true" |
|||
row-key="id" |
|||
border |
|||
:tree-props="{children: 'children', hasChildren: 'hasChildren'}" |
|||
:header-cell-style="{background:'#2195FE',color:'#FFFFFF'}"> |
|||
<el-table-column prop="partyOrgName" label="党组织名称"></el-table-column> |
|||
<el-table-column label="操作" align="center" width="300"> |
|||
<template slot-scope="scope"> |
|||
<el-button v-if="scope.row.agencyId == agencyId || scope.row.agencyPids.includes(agencyId)" |
|||
@click="handleLook(scope.row.agencyId)" |
|||
type="text" |
|||
size="small" |
|||
class="div-table-button--detail">{{'查看党员'}}</el-button> |
|||
<el-button v-if="scope.row.agencyId == agencyId || scope.row.agencyPids.includes(agencyId)" |
|||
@click="addOrUpdateHandle('', scope.row.orgPids)" |
|||
type="text" |
|||
size="small" |
|||
class="div-table-button--add">新增下级</el-button> |
|||
<el-button v-if="scope.row.agencyId == agencyId || scope.row.agencyPids.includes(agencyId)" |
|||
@click="addOrUpdateHandle(scope.row.id)" |
|||
type="text" |
|||
size="small" |
|||
class="div-table-button--edit">修改</el-button> |
|||
<el-button v-if="scope.row.agencyId == agencyId || scope.row.agencyPids.includes(agencyId)" |
|||
@click="deleteAgency(scope.row.id)" |
|||
type="text" |
|||
size="small" |
|||
class="div-table-button--edit">删除</el-button> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getTableData"></add-or-update> |
|||
<!-- 查看党员 --> |
|||
<el-dialog :visible.sync="lookMemberShow" |
|||
:close-on-click-modal="false" |
|||
:close-on-press-escape="false" |
|||
:title="memberTitle" |
|||
width="850px" |
|||
top="5vh" |
|||
class="dialog-h" |
|||
@closed="lookMemberClose"> |
|||
<look-Member ref="ref_table_Member" |
|||
@lookMemberCancle="lookMemberCancle" |
|||
@lookMemberOk="lookMemberOk"></look-Member> |
|||
</el-dialog> |
|||
</el-card> |
|||
</template> |
|||
|
|||
<script> |
|||
import AddOrUpdate from './icpartyorg-add-or-update' |
|||
import TableTreeColumn from '@/components/table-tree-column' |
|||
import lookMember from './lookMember' |
|||
export default { |
|||
data () { |
|||
return { |
|||
dataForm: { |
|||
id: '', |
|||
customerId: '', |
|||
orgPids: '' |
|||
}, |
|||
tableLoading: false, |
|||
tableData: [], |
|||
agencyId: '', |
|||
addOrUpdateVisible: false, |
|||
lookMemberShow: false, |
|||
memberTitle: '查看党员' |
|||
} |
|||
}, |
|||
components: { |
|||
AddOrUpdate, |
|||
TableTreeColumn, |
|||
lookMember |
|||
}, |
|||
async created () { |
|||
this.agencyId = localStorage.getItem('agencyId') |
|||
this.dataForm.customerId = localStorage.getItem('customerId') |
|||
this.getTableData() |
|||
// this.pageLoading = true |
|||
}, |
|||
methods:{ |
|||
// 查询列表 |
|||
async getTableData () { |
|||
this.tableLoading = true |
|||
let params = { |
|||
customerId: localStorage.getItem('customerId') |
|||
} |
|||
await this.$http.get('/resi/partymember/icPartyOrg/getTreelist', {params: this.dataForm}).then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} else { |
|||
this.tableData = res.data |
|||
} |
|||
}).catch(() => {}) |
|||
this.tableLoading = false |
|||
}, |
|||
// 新增 / 修改 |
|||
addOrUpdateHandle (id, orgPids) { |
|||
this.addOrUpdateVisible = true |
|||
this.$nextTick(() => { |
|||
this.$refs.addOrUpdate.dataForm.id = id |
|||
// 新增下级需要传 |
|||
this.$refs.addOrUpdate.dataForm.orgPids = orgPids // 党组织 |
|||
|
|||
this.$refs.addOrUpdate.init() |
|||
}) |
|||
}, |
|||
// 删除 |
|||
deleteAgency (id) { |
|||
this.$confirm(this.$t('prompt.info', { 'handle': this.$t('delete') }), this.$t('prompt.title'), { |
|||
confirmButtonText: this.$t('confirm'), |
|||
cancelButtonText: this.$t('cancel'), |
|||
type: 'warning' |
|||
}).then(() => { |
|||
this.$http.delete('/resi/partymember/icPartyOrg/delete', {'data': [id]}).then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} |
|||
this.$message({ |
|||
message: this.$t('prompt.success'), |
|||
type: 'success', |
|||
duration: 500, |
|||
onClose: () => { |
|||
this.getTableData() |
|||
} |
|||
}) |
|||
}).catch(() => {}) |
|||
}).catch(() => {}) |
|||
}, |
|||
// 查看党员 |
|||
handleLook(agencyId) { |
|||
this.lookMemberShow = true |
|||
this.$nextTick(() => { |
|||
this.$refs.ref_table_Member.initForm(agencyId) |
|||
}) |
|||
}, |
|||
lookMemberClose () { |
|||
this.lookMemberShow = false |
|||
}, |
|||
lookMemberCancle () { |
|||
this.lookMemberShow = false |
|||
}, |
|||
lookMemberOk () { |
|||
this.lookMemberShow = false |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
<style lang="scss" scoped> |
|||
.resi-container .resi-card-table { |
|||
::v-deep .el-table { |
|||
th { |
|||
color: #fff; |
|||
background-color: rgba(33, 149, 254, 1); |
|||
} |
|||
|
|||
.cell { |
|||
span:nth-of-type(3) { |
|||
display: inline-block; |
|||
width: 90%; |
|||
word-break: break-all; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
.resi-table { |
|||
::v-deep .el-button--text { |
|||
text-decoration: underline; |
|||
} |
|||
::v-deep .btn-color-del { |
|||
margin-left: 10px; |
|||
color: rgba(213, 16, 16, 1); |
|||
} |
|||
::v-deep .btn-color-edit { |
|||
color: rgba(0, 167, 169, 1); |
|||
} |
|||
} |
|||
</style> |
|||
<style lang="scss" scoped> |
|||
.resi-row-btn { |
|||
display: flex; |
|||
margin-bottom: 13px; |
|||
::v-deep .el-button { |
|||
// margin-left: 10px; |
|||
border: 0; |
|||
} |
|||
::v-deep .el-select { |
|||
margin-right: 10px; |
|||
} |
|||
.el-button--success { |
|||
background: rgba(34, 193, 195, 1); |
|||
} |
|||
} |
|||
.avatar-uploader { |
|||
::v-deep .el-upload { |
|||
cursor: pointer; |
|||
position: relative; |
|||
overflow: hidden; |
|||
} |
|||
.el-upload:hover { |
|||
border-color: #409eff; |
|||
} |
|||
.avatar { |
|||
width: 70px; |
|||
height: 70px; |
|||
display: block; |
|||
} |
|||
.avatar-uploader-icon { |
|||
border: 1px dashed #d9d9d9; |
|||
border-radius: 6px; |
|||
font-size: 28px; |
|||
color: #8c939d; |
|||
width: 70px; |
|||
height: 70px; |
|||
line-height: 70px; |
|||
text-align: center; |
|||
} |
|||
} |
|||
|
|||
.resi-btns { |
|||
margin-top: 20px; |
|||
text-align: center; |
|||
} |
|||
</style> |
@ -0,0 +1,95 @@ |
|||
<template> |
|||
<div> |
|||
<div class="dialog-h-content scroll-h"> |
|||
<div> |
|||
<div class="div_table"> |
|||
<el-table ref="ref_table" |
|||
:data="tableData" |
|||
border |
|||
:height="tableHeight" |
|||
v-loading="tableLoading" |
|||
:header-cell-style="{background:'#2195FE',color:'#FFFFFF'}" |
|||
style="width: 100%" |
|||
highlight-current-row> |
|||
<el-table-column prop="name" |
|||
label="姓名"> |
|||
</el-table-column> |
|||
<el-table-column prop="mobile" |
|||
label="联系方式"> |
|||
</el-table-column> |
|||
<el-table-column prop="idCard" |
|||
label="身份证号"> |
|||
</el-table-column> |
|||
</el-table> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<div class="div_btn"> |
|||
<el-button size="small" |
|||
@click="handleCancle">取 消</el-button> |
|||
</div> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import { mapGetters } from 'vuex' |
|||
import { requestPost } from "@/js/dai/request"; |
|||
export default { |
|||
data () { |
|||
return { |
|||
btnDisable: false, |
|||
// 列表相关 |
|||
tableData: [], |
|||
tableLoading: false, |
|||
orgPids: '' |
|||
} |
|||
}, |
|||
props: { |
|||
}, |
|||
computed: { |
|||
tableHeight () { |
|||
return this.$store.state.inIframe ? this.clientHeight - 410 + this.iframeHeight : this.clientHeight - 410 |
|||
}, |
|||
...mapGetters(['clientHeight', 'iframeHeight']) |
|||
}, |
|||
components: {}, |
|||
methods: { |
|||
initForm (agencyId) { |
|||
this.orgPids = agencyId |
|||
this.tableLoading = true |
|||
this.loadTable() |
|||
}, |
|||
// 取消 |
|||
handleCancle () { |
|||
this.$emit('lookMemberCancle') |
|||
}, |
|||
// 查询列表 |
|||
async loadTable () { |
|||
let params = { |
|||
partyOrgId: this.orgPids, |
|||
pageNo: 1, |
|||
pageSize: 10000000 |
|||
} |
|||
const url = `/resi/partymember/icPartyMember/page` |
|||
const { data, code, msg } = await requestPost(url, params) |
|||
this.tableLoading = false |
|||
if (code === 0) { |
|||
this.tableData = data.list ? data.list : [] |
|||
} |
|||
} |
|||
}, |
|||
} |
|||
</script> |
|||
<style lang="scss" scoped > |
|||
@import "@/assets/scss/modules/visual/communityManage.scss"; |
|||
</style> |
|||
<style lang="scss" scoped> |
|||
.div_btn{ |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: center; |
|||
} |
|||
</style> |
|||
|
|||
|
|||
|
@ -0,0 +1,736 @@ |
|||
<template> |
|||
<div class="warning-box"> |
|||
<cpt-card> |
|||
<div class="card-title"> |
|||
<img class="title-icon" src="../../../../assets/img/shuju/title-tip.png" /> |
|||
<div class="title-label"> |
|||
网格党建平面图 |
|||
<el-cascader |
|||
v-model="selectAgency" |
|||
:options="propTree" |
|||
:props="{ checkStrictly: true }" |
|||
:show-all-levels="false" |
|||
:getCheckedNodes="getCheckedNodes" |
|||
clearable |
|||
@change="handleCascader"> |
|||
</el-cascader> |
|||
</div> |
|||
</div> |
|||
<div class="card-echart"> |
|||
<div class="card-left"> |
|||
<!-- <div class="card-left-title">党员学历统计</div> --> |
|||
<div class="card-flex"> |
|||
<div class="echart-wr echart-wr100"> |
|||
<screen-echarts-frame class="echart-org" |
|||
@myChartMethod="pieInitOks" |
|||
ref="eduChart"></screen-echarts-frame> |
|||
</div> |
|||
</div> |
|||
<div class="warning-box-bottom"> |
|||
<screen-table |
|||
:headerList="headerEduList" |
|||
:tableData="eduList" |
|||
:headerStyle="headerStyle" |
|||
:tableContentStyle="headerStyle" |
|||
:visibleLoading="visibleLoading" |
|||
:operate="false" |
|||
@row="handleClickRow" |
|||
></screen-table> |
|||
<div class="pagination"> |
|||
<el-pagination |
|||
:current-page="pageNo" |
|||
:page-size="pageSize" |
|||
background |
|||
layout="prev, pager, next" |
|||
@size-change="pageSizeChangeHandle" |
|||
@current-change="pageCurrentChangeHandle" |
|||
:total="total" |
|||
> |
|||
</el-pagination> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<div class="card-right"> |
|||
<screen-map class="map" |
|||
ref="map" |
|||
@clickFeature="clickProject" |
|||
@lookMore="lookMore" |
|||
:showPolygonLayer="true" |
|||
:isAddOpenlay="true" |
|||
:clickType="'popup'" |
|||
:showIconLayer="true" |
|||
:showPolIconLayer="true" |
|||
:areaScale="0.1"></screen-map> |
|||
</div> |
|||
</div> |
|||
</cpt-card> |
|||
<member-info v-if="showedUnitMoreInfo" |
|||
:list="unitAclist" |
|||
ref="unitdetailInfo" |
|||
@close="showedUnitMoreInfo = false" /> |
|||
<people-more v-show="showedMoreInfo" |
|||
v-if="userId" |
|||
:userId="userId" |
|||
:gridName="''" |
|||
@close="showedMoreInfo = false" /> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import { requestPost } from "@/js/dai/request"; |
|||
import screenTable from "../components/screen-table/index"; |
|||
import cptCard from "@/views/modules/visual/cpts/card"; |
|||
import nextTick from "dai-js/tools/nextTick"; |
|||
import screenEchartsFrame from "../components/screen-echarts-frame"; |
|||
import { pieOption } from './options' |
|||
import * as echarts from 'echarts'; |
|||
import screenMap from "@/views/modules/visual/components/screen-map"; |
|||
import memberInfo from './memberInfo.vue' |
|||
import peopleMore from "@/views/modules/visual/basicinfo/cpts/people-more"; |
|||
|
|||
export default { |
|||
name: "gridParty", |
|||
components: { |
|||
cptCard, |
|||
screenTable, |
|||
screenEchartsFrame, |
|||
screenMap, |
|||
memberInfo, |
|||
peopleMore |
|||
}, |
|||
data() { |
|||
return { |
|||
headerStyle: [ |
|||
{ |
|||
'max-width': '60px' |
|||
}, |
|||
{ |
|||
'min-width': '100px' |
|||
}, |
|||
{ |
|||
'min-width': '100px' |
|||
}, |
|||
{ |
|||
'min-width': '160px' |
|||
} |
|||
], |
|||
headerEduList: [ |
|||
{ title: "序号", coulmn: 'index' }, |
|||
{ title: "姓名", coulmn: 'name' }, |
|||
{ title: "手机号码", coulmn: 'mobile' } |
|||
], |
|||
noEduInit: false, |
|||
selectAgency: null, |
|||
eduTotalCount: 0, |
|||
propTree: [], |
|||
visibleLoading: true, |
|||
agencyId: '', |
|||
orgType: '', |
|||
eduCode: '', // 点击饼状图 查询列表,查询地图 |
|||
pageNo: 1, |
|||
pageSize: 10, |
|||
total: 0, |
|||
eduItem: [], |
|||
eduList: [], |
|||
pieEduOptions: null, |
|||
showedUnitMoreInfo: false, |
|||
unitAclist: [], |
|||
// 地图相关*********************************************start |
|||
isfirstInit: true, |
|||
agencyInfo: {},//登陆者的组织信息:主要为了获取地图中心点和level |
|||
iconUrlArray: [], |
|||
parentPolygon: [], |
|||
orgId: '', |
|||
unitMapList: [], |
|||
showedMoreInfo: false, |
|||
userId:"", |
|||
// 地图相关*********************************************end |
|||
}; |
|||
}, |
|||
async mounted() { |
|||
await nextTick(100); |
|||
await this.getAgencyList() |
|||
this.agencyId = this.$store.state.user.agencyId |
|||
this.getEduCount(this.$store.state.user.agencyId) // 饼状统计图 |
|||
this.getEduList() // 左下角列表数据 |
|||
// 地图相关start |
|||
this.iconUrlArray = [ |
|||
require('../../../../assets/img/shuju/measure/lxdj.png'), |
|||
require('../../../../assets/img/shuju/measure/lxzz.png'), |
|||
require('../../../../assets/img/shuju/measure/qydw.png'), |
|||
require('../../../../assets/img/shuju/measure/jgzs.png'), |
|||
require('../../../../assets/img/shuju/measure/qita.png'), |
|||
require('../../../../assets/img/shuju/measure/minban.png'), |
|||
require('../../../../assets/img/shuju/measure/jijin.png'), |
|||
require('../../../../assets/img/shuju/measure/other.png') |
|||
] |
|||
await this.loadOrgData() |
|||
await this.getWorkUserInfo() |
|||
this.loadMap() |
|||
this.isfirstInit = false |
|||
// 地图相关end |
|||
}, |
|||
methods: { |
|||
loadMap () { |
|||
if (this.isfirstInit) { |
|||
const polIconUrlArray = [ |
|||
'https://elink-esua-epdc.oss-cn-qingdao.aliyuncs.com/epmet/test/20211116/a219130b6bc74b0b80b5ddb0fce0892a.png' |
|||
] |
|||
this.$refs.map.loadMap(this.agencyInfo, this.parentPolygon, polIconUrlArray, this.unitMapList, this.iconUrlArray, null,) |
|||
} else { |
|||
this.$refs.map.refreshMap(this.agencyInfo, this.parentPolygon, this.unitMapList) |
|||
} |
|||
}, |
|||
// 加载组织树 |
|||
async getAgencyList(node, resolve) { |
|||
const url = '/gov/org/customeragency/agencygridtree' |
|||
// let params = { |
|||
// agencyId: this.$store.state.user.agencyId, |
|||
// }; |
|||
const { data, code, msg } = await requestPost(url); |
|||
if (code === 0) { |
|||
console.log('data-org----o', data) |
|||
this.selectAgency = [`${data.agencyId}-${data.level}`] |
|||
this.orgType = data.level |
|||
this.agencyId = data.agencyId |
|||
let arr = [] |
|||
arr.push(data) |
|||
this.propTree = arr && this.getTreeData(arr) |
|||
} else { |
|||
} |
|||
}, |
|||
// 组织树相关方法 |
|||
getTreeData(data){ |
|||
if (!Array.isArray(data)) return [] |
|||
let arr = data.map(item => { |
|||
let _item = {} |
|||
if (item.subAgencyList) { |
|||
if (item.subAgencyList.length === 0) { |
|||
_item = { |
|||
label: item.agencyName, |
|||
value: item.agencyId + '-' + item.level, |
|||
level: item.level, |
|||
children: undefined |
|||
} |
|||
} else _item = { |
|||
label: item.agencyName, |
|||
value: item.agencyId + '-' + item.level, |
|||
level: item.level, |
|||
children: this.getTreeData(item.subAgencyList)} |
|||
} else { |
|||
_item = { |
|||
label: item.agencyName, |
|||
value: item.agencyId + '-' + item.level, |
|||
level: item.level, |
|||
} |
|||
} |
|||
return _item |
|||
}) |
|||
return arr |
|||
}, |
|||
// 组织点击事件 |
|||
async handleCascader(val) { |
|||
console.log('val-vvv', val) |
|||
const _arr = val[val.length - 1].split('-') |
|||
const orgType = _arr[1] !== 'grid' ? 'agency': 'grid' |
|||
this.agencyId = _arr[0] |
|||
this.orgId = _arr[0] |
|||
this.orgType = orgType |
|||
this.noEduInit = false |
|||
this.agencyInfo = { ...this.orgData } |
|||
console.log('agencyInfo-----', this.agencyInfo) |
|||
this.eduCode = '' |
|||
await this.loadOrgData() |
|||
this.getEduCount(_arr[0]) |
|||
this.eduList = [] |
|||
this.pageNo = 1; |
|||
this.pageSize = 10; |
|||
await this.getEduList() |
|||
this.getMapData() |
|||
}, |
|||
// 图标相关********************************* |
|||
// 饼状统计 |
|||
async getEduCount(agencyId) { |
|||
const url = "/epmetuser/icVolunteerPoly/statistics"; |
|||
let params = { |
|||
agencyId |
|||
}; |
|||
const { data, code, msg } = await requestPost(url, params); |
|||
if (code === 0) { |
|||
this.eduItem = data.map(item => { |
|||
return { |
|||
...item, |
|||
name: item.label, |
|||
isClick: false |
|||
} |
|||
}) |
|||
|
|||
this.eduTotalCount = 0 |
|||
data.forEach(item => { |
|||
this.eduTotalCount += Number(item.value) |
|||
}) |
|||
this.initEduCharts() |
|||
} else { |
|||
} |
|||
}, |
|||
initEduCharts() { |
|||
// const eId = document.getElementById('echartOrg') |
|||
// let _charts = echarts.init(eId) |
|||
let option = { |
|||
|
|||
} |
|||
let legend = { |
|||
show: true, |
|||
orient: 'vertical', |
|||
top: '20%', |
|||
right: 0, |
|||
textStyle: { |
|||
width: 90, |
|||
color: '#fff', |
|||
rich: { |
|||
a: { |
|||
width: 90 |
|||
} |
|||
} |
|||
}, |
|||
formatter: name => { |
|||
for (let a = 0; a < this.eduItem.length; a++) { |
|||
// this.data 这个数据中有名称和次数 |
|||
if (this.eduItem[a].name === name) { |
|||
//两个名称进行对比,取出对应的次数 |
|||
let params1 = name + "\n"; //然后return你需要的legend格式即可 |
|||
let tmp = params1.split("\n"); |
|||
let res = "" + params1; |
|||
for (let i in tmp) { |
|||
res = res.replace(tmp[i], ""); |
|||
} |
|||
return res + params1; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
this.pieEduOptions = pieOption(this.pieEduChartS) |
|||
this.pieEduOptions.legend = { ...legend } |
|||
this.clickEduPie(0) |
|||
let fun = params => { |
|||
this.clickEduPie(params.dataIndex) |
|||
} |
|||
this.$refs.eduChart.handleClick(fun) |
|||
}, |
|||
// 点击饼状图 |
|||
clickEduPie (seriesIndex) { |
|||
let _code = '' |
|||
let isClick = false |
|||
this.eduItem.forEach((element, index) => { |
|||
if (index === seriesIndex) { |
|||
_code = element.code |
|||
|
|||
if (!this.noEduInit) isClick = false |
|||
else { |
|||
element.isClick = !element.isClick |
|||
isClick = element.isClick |
|||
} |
|||
|
|||
element.label = { |
|||
show: true, |
|||
|
|||
}; |
|||
element.labelLine = { |
|||
show: true, |
|||
lineStyle: { |
|||
opacity: 1, |
|||
} |
|||
|
|||
}; |
|||
console.log('zlcm') |
|||
} else { |
|||
element.isClick = false |
|||
element.label = { |
|||
show: false, |
|||
|
|||
}; |
|||
element.labelLine = { |
|||
show: false, |
|||
lineStyle: { |
|||
opacity: 0, |
|||
color: 'rgba(255,255,255,0)' |
|||
} |
|||
|
|||
}; |
|||
|
|||
} |
|||
}); |
|||
this.eduCode = isClick && _code || '' |
|||
this.pieEduOptions.title.text = this.eduTotalCount |
|||
this.pieEduOptions.series[1].data = this.eduItem |
|||
// this.$refs.pieChart.hideLoading() |
|||
this.$refs.eduChart.setOption(this.pieEduOptions) |
|||
if (this.noEduInit) { |
|||
const _arr = this.selectAgency[this.selectAgency.length - 1].split('-') |
|||
const orgType = _arr[1] !== 'grid' ? 'agency': 'grid' |
|||
this.pageNo = 1 |
|||
this.getEduList(isClick && _code || '') |
|||
this.getMapData(isClick && _code || '') |
|||
} |
|||
this.noEduInit = true |
|||
}, |
|||
// 列表相关************************************* |
|||
// 请求列表数据 |
|||
async getEduList(_code) { |
|||
this.visibleLoading = true |
|||
const url = "/epmetuser/icVolunteerPoly/list"; |
|||
let params = { |
|||
code: this.eduCode, |
|||
agencyId: this.agencyId, |
|||
pageNo: this.pageNo, |
|||
pageSize: this.pageSize |
|||
}; |
|||
const { data, code, msg } = await requestPost(url, params); |
|||
if (code === 0) { |
|||
this.eduList = data.list.map((item, index) => { |
|||
return { |
|||
...item, |
|||
index: index + 1 |
|||
} |
|||
}) |
|||
this.total = data.total |
|||
} else { |
|||
this.$message.error(msg) |
|||
} |
|||
this.visibleLoading = false |
|||
}, |
|||
pieInitOks (dom) { |
|||
console.log('pies准备好了', dom) |
|||
this.pieEduChartS = dom |
|||
// this.pieInitState = true |
|||
}, |
|||
// 点击列表 |
|||
handleClickRow(val) { |
|||
this.servicelist(val.idCard) |
|||
}, |
|||
// 多元-社区自组织服务需求分页列表 |
|||
async servicelist (idCard) { |
|||
const url = "/heart/residemand/service-list"; |
|||
let params = { |
|||
pageNo: 1, |
|||
pageSize: 1000, |
|||
type: 'volunteer', // 志愿者:volunteer;社区自组织:community_org; |
|||
idCard: idCard, // volunteer时传入此参数。 |
|||
serverId: '' |
|||
}; |
|||
const { data, code, msg } = await requestPost(url, params); |
|||
if (code === 0) { |
|||
if (data.list.length > 0) { |
|||
this.showedUnitMoreInfo = true |
|||
this.unitAclist = data.list |
|||
this.$nextTick(() => { |
|||
console.log(this.unitAclist[0].demandRecId) |
|||
this.$refs['unitdetailInfo'].getDetail(this.unitAclist[0].demandRecId) |
|||
}) |
|||
} else { |
|||
this.showedUnitMoreInfo = false |
|||
this.unitAclist = [] |
|||
this.$message.warning('该志愿者还没有需求') |
|||
} |
|||
} else { |
|||
} |
|||
}, |
|||
getCheckedNodes(val) { |
|||
console.log('val-nnn', val) |
|||
}, |
|||
pageSizeChangeHandle(val) { |
|||
this.pageNo = 1; |
|||
this.pageSize = val; |
|||
this.getEduList(this.eduCode) |
|||
}, |
|||
pageCurrentChangeHandle(val) { |
|||
this.pageNo = val; |
|||
this.getEduList(this.eduCode) |
|||
}, |
|||
async loadOrgData () { |
|||
const url = "/gov/org/agency/maporg" |
|||
let params = { |
|||
orgId: this.orgId, |
|||
level: this.orgLevel |
|||
} |
|||
|
|||
const { data, code, msg } = await requestPost(url, params) |
|||
|
|||
if (code === 0) { |
|||
|
|||
this.orgData = data |
|||
this.orgId = this.orgData.id |
|||
this.orgLevel = this.orgData.level |
|||
this.parentPolygon = [] |
|||
this.parentPolygon = data.children.map(item => { |
|||
return { |
|||
...item, |
|||
color: "#00E5ED", |
|||
fillColor: "rgba(0, 229, 237, 0.16)" |
|||
} |
|||
}) |
|||
|
|||
} else { |
|||
this.$message.error(msg) |
|||
} |
|||
|
|||
}, |
|||
// 获取当前管理员信息 |
|||
getWorkUserInfo () { |
|||
const url = '/epmetuser/customerstaff/staffbasicinfo' |
|||
let params = {} |
|||
window.app.ajax.post( |
|||
url, |
|||
params, |
|||
(data, rspMsg) => { |
|||
this.agencyInfo = data |
|||
if (!data.latitude) { |
|||
this.agencyInfo.latitude = 36.072227 |
|||
} |
|||
if (!data.longitude) { |
|||
this.agencyInfo.longitude = 120.389455 |
|||
} |
|||
if (!data.level) { |
|||
this.agencyInfo.level = 'street' |
|||
} |
|||
|
|||
}, |
|||
(rspMsg, data) => { |
|||
this.$message.error(rspMsg) |
|||
} |
|||
) |
|||
|
|||
}, |
|||
// 获取位置信息 |
|||
getMapData () { |
|||
const url = '/epmetuser/icVolunteerPoly/mapData' |
|||
let params = { |
|||
agencyId: this.agencyId, |
|||
code: this.eduCode |
|||
} |
|||
window.app.ajax.post( |
|||
url, |
|||
params, |
|||
(data, rspMsg) => { |
|||
this.unitMapList = data |
|||
this.isfirstInit = false |
|||
this.loadMap() |
|||
}, |
|||
(rspMsg, data) => { |
|||
this.$message.error(rspMsg) |
|||
} |
|||
) |
|||
}, |
|||
//点击项目 |
|||
async clickProject (feature) { |
|||
this.userId = '' |
|||
const featureInfo = feature.values_.properties.info |
|||
this.userId = feature.values_.properties.info.id |
|||
console.log('feature.values_.properties.info:::', JSON.stringify(feature.values_.properties.info)) |
|||
let coordinate = [featureInfo.longitude, featureInfo.latitude] |
|||
console.log(feature.values_.properties.info) |
|||
let showData = ` |
|||
<div style='font-size:16px; color:#FFFFFF;'>个人信息</div> |
|||
<div style='font-size:12px; color:#FFFFFF;margin-top:10px'>姓名: |
|||
<span>`+ feature.values_.properties.info.name + `</span> |
|||
</div> |
|||
<div style='font-size:12px; color:#FFFFFF;margin-top:10px'>所属网格: |
|||
<span>`+ feature.values_.properties.info.gridName + `</span> |
|||
</div> |
|||
<div style='font-size:12px; color:#FFFFFF;margin-top:5px'>所属房屋: |
|||
<span>`+ feature.values_.properties.info.houseName + `</span> |
|||
</div> |
|||
<div style='font-size:12px; color:#FFFFFF;margin-top:5px'>手机号: |
|||
<span>`+ feature.values_.properties.info.mobile + `</span> |
|||
</div> |
|||
<div style='font-size:12px; color:#FFFFFF;margin-top:5px'>身份证号: |
|||
<span>`+ feature.values_.properties.info.idCard + `</span> |
|||
</div> |
|||
<div style='font-size:12px; color:#FFFFFF;margin-top:5px'>工作单位: |
|||
<span>`+ feature.values_.properties.info.gzdw + `</span> |
|||
</div> |
|||
<div style='font-size:12px; color:#FFFFFF;margin-top:5px'>人户状况: |
|||
<span>`+ feature.values_.properties.info.rhzk + `</span> |
|||
</div> |
|||
` |
|||
this.$refs.map.handleShowPopup(showData, coordinate, true) |
|||
}, |
|||
lookMore(e) { |
|||
this.userId = this.userId |
|||
console.log('userId:', this.userId) |
|||
this.showedMoreInfo = true |
|||
} |
|||
}, |
|||
}; |
|||
</script> |
|||
|
|||
<style |
|||
lang="scss" |
|||
src="@/assets/scss/modules/visual/warning.scss" |
|||
scoped |
|||
></style> |
|||
<style |
|||
lang="scss" |
|||
src="@/assets/scss/modules/visual/basicInfoMain.scss" |
|||
scoped |
|||
></style> |
|||
<style lang="scss" scoped> |
|||
.card-title { |
|||
display: flex; |
|||
align-items: center; |
|||
cursor: pointer; |
|||
.title-icon { |
|||
display: block; |
|||
width: 46px; |
|||
height: 34px; |
|||
box-sizing: border-box; |
|||
margin-right: 6px; |
|||
} |
|||
::v-deep .el-dropdown { |
|||
font-size: 18px; |
|||
color: #fff; |
|||
font-weight: 800; |
|||
} |
|||
.title-time { |
|||
display: flex; |
|||
align-items: center; |
|||
box-sizing: border-box; |
|||
margin-left: 30px; |
|||
font-size: 14px; |
|||
color: #fff; |
|||
.title-time-label { |
|||
margin-right: 10px; |
|||
} |
|||
::v-deep .el-date-editor--month { |
|||
width: 100px; |
|||
.el-input__inner { |
|||
width: 100px; |
|||
height: 24px; |
|||
box-sizing: border-box; |
|||
padding: 0; |
|||
font-size: 14px; |
|||
color: #fff; |
|||
line-height: 24px; |
|||
text-align: center; |
|||
background: #06186D; |
|||
border: 1px solid #1A64CC; |
|||
border-radius: 2px; |
|||
} |
|||
.el-input__prefix { |
|||
display: none; |
|||
} |
|||
.el-input__suffix { |
|||
right: 0; |
|||
.el-input__icon { |
|||
line-height: 24px; |
|||
} |
|||
} |
|||
|
|||
} |
|||
} |
|||
.title-label { |
|||
font-size: 20px; |
|||
font-weight: 800; |
|||
::v-deep .el-input { |
|||
|
|||
width: 180px; |
|||
.el-input__inner { |
|||
font-size: 18px; |
|||
// font-weight: 800; |
|||
color: #fff; |
|||
background: #06186d; |
|||
border: 1px solid #1a64cc; |
|||
} |
|||
.el-icon-arrow-down::before { |
|||
content: "\e790"; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
.card-echart { |
|||
display: flex; |
|||
margin-top: 40px; |
|||
height: 100%; |
|||
.card-left { |
|||
position: relative; |
|||
flex: 1; |
|||
height: 100%; |
|||
width: 50%; |
|||
.card-flex { |
|||
width: 100%; |
|||
display: flex; |
|||
} |
|||
} |
|||
.card-right { |
|||
position: relative; |
|||
flex: 1; |
|||
height: 790px; |
|||
width: 50%; |
|||
.map { |
|||
height: 100%; |
|||
width: 100%; |
|||
} |
|||
.div_map { |
|||
box-sizing: border-box; |
|||
height: 100%; |
|||
color: #fff; |
|||
} |
|||
} |
|||
} |
|||
.card-left-title { |
|||
position: relative; |
|||
padding-left: 40px; |
|||
font-size: 16px; |
|||
font-weight: 500; |
|||
color: #fff; |
|||
} |
|||
.card-left-title::after { |
|||
content: ''; |
|||
position: absolute; |
|||
top: 50%; |
|||
left: 20px; |
|||
width: 12px; |
|||
height: 12px; |
|||
box-sizing: border-box; |
|||
margin-top: -6px; |
|||
background: #2865FA; |
|||
border-radius: 50%; |
|||
} |
|||
.echart-wr { |
|||
position: relative; |
|||
flex-shrink: 0; |
|||
width: 50%; |
|||
height: 320px; |
|||
box-sizing: border-box; |
|||
.echart-org { |
|||
width: 100%; |
|||
height: 100%; |
|||
} |
|||
.echart-cicle { |
|||
position: absolute; |
|||
top: 50%; |
|||
left: 50%; |
|||
width: 240px; |
|||
height: 240px; |
|||
box-sizing: border-box; |
|||
margin-top: -120px; |
|||
margin-left: -120px; |
|||
border: 1px dashed rgba(0, 96, 240, 1); |
|||
border-radius: 50%; |
|||
} |
|||
.echart-cicle0 { |
|||
left: 80px; |
|||
margin-left: 0; |
|||
} |
|||
} |
|||
.echart-wr100 { |
|||
width: 70%; |
|||
} |
|||
.warning-box-bottom { |
|||
height: calc(100% - 500px); |
|||
box-sizing: border-box; |
|||
margin: 0; |
|||
padding: 0 30px; |
|||
// overflow-y: scroll; |
|||
} |
|||
</style> |
@ -0,0 +1,251 @@ |
|||
<template> |
|||
<div class="m-pop"> |
|||
<div class="wrap"> |
|||
<cpt-card> |
|||
<div class="title"> |
|||
<img src="@/assets/img/shuju/title-tip.png" /> |
|||
<span>需求内容</span> |
|||
</div> |
|||
|
|||
<div class="btn-close" @click="handleClose"> |
|||
<img src="@/assets/img/shuju/people/close.png" /> |
|||
</div> |
|||
<div class="list-wr info-h"> |
|||
<div class="list-left info-scroll"> |
|||
<div v-for="(item, index) in list" :key="item.id" class="left-item" |
|||
:class="current == index &&'left-item-on'" @click="handleTabs(item, index)"> |
|||
<div class="item-title">{{ item.content }}</div> |
|||
<div class="item-time">{{ item.reportTime }}</div> |
|||
</div> |
|||
</div> |
|||
<div class="list-right list-wr info-scroll"> |
|||
<div class="list"> |
|||
|
|||
<div class="item"> |
|||
<span class="item-field">所属网格:</span> |
|||
<span v-if="info.gridName">{{ info.gridName }}</span> |
|||
</div> |
|||
<div class="item"> |
|||
<span class="item-field">需求类型:</span> |
|||
<span v-if="info.categoryName">{{ info.categoryName }}</span> |
|||
</div> |
|||
<div class="item"> |
|||
<span class="item-field">上报人:</span> |
|||
<span v-if="info.reportUserName">{{ info.reportUserName }}</span> |
|||
</div> |
|||
<div class="item"> |
|||
<span class="item-field">上报人手机:</span> |
|||
<span v-if="info.reportUserMobile">{{ info.reportUserMobile }}</span> |
|||
</div> |
|||
<div class="item"> |
|||
<span class="item-field">上报时间:</span> |
|||
<span v-if="info.reportTime">{{ info.reportTime }}</span> |
|||
</div> |
|||
<div class="item"> |
|||
<span class="item-field">需求人:</span> |
|||
<span v-if="info.demandUserName">{{ info.demandUserName }}</span> |
|||
</div> |
|||
<div class="item"> |
|||
<span class="item-field">服务时间:</span> |
|||
<span v-if="info.wantServiceTime">{{ info.wantServiceTime }}</span> |
|||
</div> |
|||
<div class="item"> |
|||
<span class="item-field">需求内容:</span> |
|||
<span v-if="info.content">{{ info.content }}</span> |
|||
</div> |
|||
<div class="item"> |
|||
<span class="item-field">服务方:</span> |
|||
<span v-if="info.serviceShowName">{{ info.serviceShowName }}</span> |
|||
</div> |
|||
<div class="item"> |
|||
<span class="item-field">实际服务时间:</span> |
|||
<span v-if="info.categoryName">{{ info.serviceStartTime }} 至 {{ info.serviceEndTime }}</span> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
|
|||
<!-- <div class="tabs"> |
|||
<div |
|||
class="tab-btn" |
|||
> |
|||
<img src="@/assets/img/shuju/people/arrow-double-left.png" /> |
|||
</div> |
|||
<div |
|||
class="tab z-on" |
|||
> |
|||
研判分析 |
|||
</div> |
|||
<div |
|||
class="tab-btn" |
|||
> |
|||
<img src="@/assets/img/shuju/people/arrow-double-right.png" /> |
|||
</div> |
|||
</div> |
|||
|
|||
<div style="padding: 30px 0;"> |
|||
<analyse :single-list="demandList" :single-title="'需求上报'" :more-title="'事件上报'" :user-list="userLists" |
|||
:user-name="userName" :has-event="false" :more-list="eventList" /> |
|||
</div> --> |
|||
|
|||
|
|||
</cpt-card> |
|||
</div> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import cptCard from "@/views/modules/visual/cpts/card"; |
|||
import analyse from '../cpts/analyse.vue' |
|||
import { requestPost } from "@/js/dai/request"; |
|||
|
|||
export default { |
|||
name: "dialogInfo", |
|||
props: { |
|||
list: { |
|||
type: Array, |
|||
default: () => [], |
|||
}, |
|||
type: { |
|||
type: String, |
|||
default: "", |
|||
}, |
|||
agencyId: { |
|||
type: String, |
|||
default: "", |
|||
}, |
|||
}, |
|||
|
|||
components: { |
|||
cptCard, |
|||
analyse |
|||
}, |
|||
|
|||
data() { |
|||
return { |
|||
list: [], |
|||
current: 0, |
|||
info: {} |
|||
}; |
|||
}, |
|||
|
|||
|
|||
mounted() { |
|||
}, |
|||
|
|||
methods: { |
|||
handleClose() { |
|||
this.$emit("close"); |
|||
}, |
|||
handleTabs(item, index) { |
|||
this.current = index |
|||
this.getDetail(item.demandRecId) |
|||
}, |
|||
async getDetail (id) { |
|||
this.info = {} |
|||
const _id = this.list[0].id |
|||
const url = "/heart/userdemand/demandDetail" |
|||
let params = { |
|||
demandRecId: id || _id |
|||
} |
|||
|
|||
const { data, code, msg } = await requestPost(url, params) |
|||
|
|||
if (code === 0) { |
|||
this.info = data |
|||
// this.info.serviceMatterNameShow = data.serviceMatterNameList.join(',') |
|||
// this.info.unitNameShow = data.unitNameList.join(',') |
|||
} else { |
|||
this.$message.error(msg) |
|||
} |
|||
}, |
|||
|
|||
} |
|||
}; |
|||
</script> |
|||
|
|||
<style lang="scss" src="@/assets/scss/modules/visual/people.scss" scoped></style> |
|||
<style lang="scss" scoped> |
|||
.m-pop { |
|||
.wrap { |
|||
margin-bottom: 0; |
|||
.list { |
|||
display: block; |
|||
width: 50%; |
|||
.item { |
|||
display: flex; |
|||
width: 100%; |
|||
box-sizing: border-box; |
|||
margin-top: 0; |
|||
margin-bottom: 15px; |
|||
font-size: 16px; |
|||
cursor: pointer; |
|||
.item-field { |
|||
// width: 100px; |
|||
flex-shrink: 0; |
|||
} |
|||
.item-content { |
|||
width: 100%; |
|||
max-height: 420px; |
|||
overflow-y: auto; |
|||
|
|||
} |
|||
::v-deep p { |
|||
margin: 0; |
|||
img { |
|||
width: 100%; |
|||
height: 100%; |
|||
} |
|||
} |
|||
} |
|||
.item-desc { |
|||
font-size: 16px; |
|||
margin-bottom: 10px; |
|||
line-height: 24px; |
|||
} |
|||
} |
|||
} |
|||
.list-title { |
|||
width: 100%; |
|||
box-sizing: border-box; |
|||
padding: 20px 0 10px 62px; |
|||
font-size: 20px; |
|||
cursor: pointer; |
|||
} |
|||
} |
|||
.list-wr { |
|||
display: flex; |
|||
padding: 0 32px; |
|||
|
|||
} |
|||
.list-left { |
|||
width: 180px; |
|||
height: 100%; |
|||
box-sizing: border-box; |
|||
padding-right: 20px; |
|||
flex-shrink: 0; |
|||
border-right: 1px dashed #1257c9; |
|||
overflow: auto; |
|||
.left-item { |
|||
padding: 10px 0; |
|||
cursor: pointer; |
|||
.item-title { |
|||
font-size: 16px; |
|||
overflow: hidden; |
|||
text-overflow: ellipsis; |
|||
white-space: nowrap; |
|||
margin-bottom: 5px; |
|||
} |
|||
} |
|||
.left-item-on { |
|||
color: #0095FF; |
|||
} |
|||
} |
|||
.list-right { |
|||
flex: 1; |
|||
height: 100%; |
|||
overflow: auto; |
|||
} |
|||
|
|||
|
|||
</style> |
@ -0,0 +1,257 @@ |
|||
<template> |
|||
<div class="m-pop"> |
|||
<div class="wrap"> |
|||
<cpt-card> |
|||
<div class="title"> |
|||
<img src="@/assets/img/shuju/title-tip.png" /> |
|||
<span>单位活动</span> |
|||
</div> |
|||
|
|||
<div class="btn-close" @click="handleClose"> |
|||
<img src="@/assets/img/shuju/people/close.png" /> |
|||
</div> |
|||
<!-- <div class="list-title">需求内容</div> --> |
|||
<div class="list-wr info-h"> |
|||
<div class="list-left info-scroll"> |
|||
<div v-for="(item, index) in list" :key="item.id" class="left-item" |
|||
:class="current == index &&'left-item-on'" @click="handleTabs(item, index)"> |
|||
<div class="item-title">{{ item.title }}</div> |
|||
<div class="item-time">{{ item.activityTime }}</div> |
|||
</div> |
|||
<!-- <div class="left-item"> |
|||
<div class="item-title">帮扶老人帮扶老人</div> |
|||
<div class="item-time">2022-05-20 09:09</div> |
|||
</div> --> |
|||
</div> |
|||
<div class="list-right list-wr info-scroll"> |
|||
<div class="list"> |
|||
|
|||
<!-- <div class="item-desc"> |
|||
<span>市北区同德花园小区物业管理服务,公司的同志每天对该小区 公共部位,喷洒消毒液进行消毒。为杀灭新型冠状病毒,近几 天以来,市北区</span> |
|||
</div> --> |
|||
<div class="item"> |
|||
<span class="item-field">服务事项:</span> |
|||
<span>{{ info.serviceMatterNameShow }}</span> |
|||
</div> |
|||
<div class="item"> |
|||
<span class="item-field">单位名称:</span> |
|||
<span>{{ info.unitNameShow }}</span> |
|||
</div> |
|||
<div class="item"> |
|||
<span class="item-field">活动标题:</span> |
|||
<span>{{ info.title }}</span> |
|||
</div> |
|||
<div class="item"> |
|||
<span class="item-field">活动内容:</span> |
|||
<span class="item-content" v-html="info.content"></span> |
|||
</div> |
|||
<div class="item"> |
|||
<span class="item-field">服务人数:</span> |
|||
<span>{{ info.peopleCount }}</span> |
|||
</div> |
|||
<div class="item"> |
|||
<span class="item-field">活动时间:</span> |
|||
<span>{{ info.activityTime }}</span> |
|||
</div> |
|||
<!-- <div class="item"> |
|||
<span class="item-field">活动坐标:</span> |
|||
<span>经度:{{ info.latitude }} <br /> |
|||
纬度:{{ info.longitude }}</span> |
|||
</div> --> |
|||
<div class="item"> |
|||
<span class="item-field">活动地址:</span> |
|||
<span>{{ info.address }}</span> |
|||
</div> |
|||
</div> |
|||
<div class="list"> |
|||
<div class="item"> |
|||
<span class="item-field">活动成果:</span> |
|||
<span class="item-content info-scroll" v-html="info.result"></span> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
|
|||
<!-- <div class="tabs"> |
|||
<div |
|||
class="tab-btn" |
|||
> |
|||
<img src="@/assets/img/shuju/people/arrow-double-left.png" /> |
|||
</div> |
|||
<div |
|||
class="tab z-on" |
|||
> |
|||
研判分析 |
|||
</div> |
|||
<div |
|||
class="tab-btn" |
|||
> |
|||
<img src="@/assets/img/shuju/people/arrow-double-right.png" /> |
|||
</div> |
|||
</div> |
|||
|
|||
<div style="padding: 30px 0;"> |
|||
<analyse :single-list="demandList" :single-title="'需求上报'" :more-title="'事件上报'" :user-list="userLists" |
|||
:user-name="userName" :has-event="false" :more-list="eventList" /> |
|||
</div> --> |
|||
|
|||
|
|||
</cpt-card> |
|||
</div> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import cptCard from "@/views/modules/visual/cpts/card"; |
|||
import analyse from '../cpts/analyse.vue' |
|||
import { requestPost } from "@/js/dai/request"; |
|||
|
|||
export default { |
|||
name: "dialogInfo", |
|||
props: { |
|||
list: { |
|||
type: Array, |
|||
default: () => [], |
|||
}, |
|||
type: { |
|||
type: String, |
|||
default: "", |
|||
}, |
|||
agencyId: { |
|||
type: String, |
|||
default: "", |
|||
}, |
|||
}, |
|||
|
|||
components: { |
|||
cptCard, |
|||
analyse |
|||
}, |
|||
|
|||
data() { |
|||
return { |
|||
list: [], |
|||
current: 0, |
|||
info: {} |
|||
}; |
|||
}, |
|||
|
|||
|
|||
mounted() { |
|||
}, |
|||
|
|||
methods: { |
|||
handleClose() { |
|||
this.$emit("close"); |
|||
}, |
|||
handleTabs(item, index) { |
|||
this.current = index |
|||
this.getDetail(item.id) |
|||
}, |
|||
async getDetail (id) { |
|||
const _id = this.list[0].id |
|||
const url = "/heart/icpartyactivity/detail" |
|||
let params = { |
|||
id: id || _id |
|||
} |
|||
|
|||
const { data, code, msg } = await requestPost(url, params) |
|||
|
|||
if (code === 0) { |
|||
this.info = data |
|||
this.info.serviceMatterNameShow = data.serviceMatterNameList.join(',') |
|||
this.info.unitNameShow = data.unitNameList.join(',') |
|||
} else { |
|||
this.$message.error(msg) |
|||
} |
|||
}, |
|||
|
|||
} |
|||
}; |
|||
</script> |
|||
|
|||
<style lang="scss" src="@/assets/scss/modules/visual/people.scss" scoped></style> |
|||
<style lang="scss" scoped> |
|||
.m-pop { |
|||
.wrap { |
|||
margin-bottom: 0; |
|||
.list { |
|||
display: block; |
|||
width: 50%; |
|||
.item { |
|||
display: flex; |
|||
width: 100%; |
|||
box-sizing: border-box; |
|||
margin-top: 0; |
|||
margin-bottom: 15px; |
|||
font-size: 16px; |
|||
cursor: pointer; |
|||
.item-field { |
|||
// width: 100px; |
|||
flex-shrink: 0; |
|||
} |
|||
.item-content { |
|||
width: 100%; |
|||
max-height: 420px; |
|||
overflow-y: auto; |
|||
|
|||
} |
|||
::v-deep p { |
|||
margin: 0; |
|||
img { |
|||
width: 100%; |
|||
height: 100%; |
|||
} |
|||
} |
|||
} |
|||
.item-desc { |
|||
font-size: 16px; |
|||
margin-bottom: 10px; |
|||
line-height: 24px; |
|||
} |
|||
} |
|||
} |
|||
.list-title { |
|||
width: 100%; |
|||
box-sizing: border-box; |
|||
padding: 20px 0 10px 62px; |
|||
font-size: 20px; |
|||
cursor: pointer; |
|||
} |
|||
} |
|||
.list-wr { |
|||
display: flex; |
|||
padding: 0 32px; |
|||
|
|||
} |
|||
.list-left { |
|||
width: 180px; |
|||
height: 100%; |
|||
box-sizing: border-box; |
|||
padding-right: 20px; |
|||
flex-shrink: 0; |
|||
border-right: 1px dashed #1257c9; |
|||
overflow: auto; |
|||
.left-item { |
|||
padding: 10px 0; |
|||
cursor: pointer; |
|||
.item-title { |
|||
font-size: 16px; |
|||
overflow: hidden; |
|||
text-overflow: ellipsis; |
|||
white-space: nowrap; |
|||
margin-bottom: 5px; |
|||
} |
|||
} |
|||
.left-item-on { |
|||
color: #0095FF; |
|||
} |
|||
} |
|||
.list-right { |
|||
flex: 1; |
|||
height: 100%; |
|||
overflow: auto; |
|||
} |
|||
|
|||
|
|||
</style> |
Loading…
Reference in new issue