pref#ncu_优化民主管理、更新时冲掉单位问题、工会干部设置时展示多条成员数据等其他bug

This commit is contained in:
Paidax
2025-12-10 14:23:24 +08:00
parent 54affda864
commit 4c8c0ca09f
83 changed files with 833 additions and 6734 deletions
@@ -51,13 +51,13 @@ const branchUnionUserManage = {
<user-select
v-model="formData.userId"
style="width: 100%"
api="/platform/sys/union/listUserSelect"
api="/platform/sys/union/listUnion"
:api_params="{ unionId: union_id }"
:option_label_func="
(item) => {
return item.username + item.loginname + '(' + item.unitName + ')'
}
"
(item) => {
return item.username + item.loginname + '(' + item.unitName + ')'
}
"
></user-select>
</el-form-item>
</el-form>
@@ -111,8 +111,8 @@ const basicForm = {
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="办单位" prop="helpUnits">
<el-select multiple filterable placeholder="请选择办单位" style="width: 100%" v-model="formData.helpUnits">
<el-form-item label="办单位" prop="helpUnits">
<el-select multiple filterable placeholder="请选择办单位" style="width: 100%" v-model="formData.helpUnits">
<el-option :label="item.name" :value="item.id" :key="item.id" v-for="item in undertakeOptions"></el-option>
</el-select>
</el-form-item>
@@ -5,10 +5,10 @@ layout("/layouts/platform.html"){
<guava ref="guava">
<el-card shadow="never">
<search @search="doSearch">
<!-- <search-item label="年度">-->
<!-- <el-date-picker v-model="pageForm.year" type="year" value-format="yyyy" placeholder="请选择年度"-->
<!-- style="width: 100%"></el-date-picker>-->
<!-- </search-item>-->
<search-item label="年度">
<el-date-picker v-model="pageForm.year" type="year" value-format="yyyy" placeholder="请选择年度"
style="width: 100%"></el-date-picker>
</search-item>
<search-item label="姓名/工号">
<el-input v-model="pageForm.searchKeyword" placeholder="请输入姓名或工号"
clearable></el-input>
@@ -172,12 +172,7 @@ layout("/layouts/platform.html"){
// 导出登记汇总表
exportExcel() {
if (!this.pageForm.year) {
this.$message.error('请选择年度再导出')
return
}
this.$downLoad('/platform/fundMember/query/exportExcel', {
year: this.pageForm.year,
unionId: this.pageForm.unionId
})
},
@@ -14,7 +14,7 @@ layout("/layouts/platform.html"){
</el-select>
</search-item>
<search-item label="分工会" v-if="$auth.hasRole('SYSADMIN') || $auth.hasRole('SCHOOL_UNION_ADMIN')">
<el-select v-model="pageForm.unionId" filterable @change="listUnit" clearable style="width: 100%">
<el-select v-model="pageForm.unionId" filterable clearable style="width: 100%">
<el-option v-for="i in unionOptions" :label="i.name" :key="i.id" :value="i.id"></el-option>
</el-select>
</search-item>
@@ -133,6 +133,15 @@ layout("/layouts/platform.html"){
></el-checkbox>
</template>
</el-table-column>
<el-table-column label="聘用制" prop="employ" width="80">
<template v-slot="{row}">
<el-checkbox
v-if="row"
v-model="row.employ"
style="pointer-events:none"
></el-checkbox>
</template>
</el-table-column>
<el-table-column label="教代会代表" prop="isJdh" min-width="100">
<template v-slot="{row}">
<el-checkbox
@@ -247,7 +247,7 @@ const pushProgress = {
</div>
<!-- 45岁以下代表数 -->
<div class="metric-card">
<!--<div class="metric-card">
<div class="metric-header">
<div>
<div class="metric-title">45岁以下代表</div>
@@ -275,8 +275,41 @@ const pushProgress = {
metrics.under45.remaining
}} 人</span>
</div>
</div>
</div>-->
<!-- 聘用制代表数 -->
<div class="metric-card">
<div class="metric-header">
<div>
<div class="metric-title">聘用制代表</div>
<div class="metric-value">{{ metrics.employ.current }}<span
class="metric-target"
>/ {{ metrics.employ.target }}</span></div>
</div>
<div class="metric-icon bg-primary-light">
<i class="fas fa-user-graduate text-primary"></i>
</div>
</div>
<div class="progress-bar">
<div class="progress-bar-inner bg-primary"
:style="{width: metrics.employ.progress * 100 + '%'}"></div>
</div>
<div class="progress-info">
<span v-if="metrics.employ.progress>=1 || metrics.employ.target===0"
class="text-success">
已达标
</span>
<span v-else-if="metrics.employ.progress<1" class="text-primary">
未达标
</span>
<span v-if="metrics.employ.remaining>0" class="text-gray-500">剩余 {{
metrics.employ.remaining
}} 人</span>
</div>
</div>
<!-- &lt;!&ndash; 少数民族数 &ndash;&gt;
<div class="metric-card">
<div class="metric-header">
@@ -464,11 +497,17 @@ const pushProgress = {
progress: 71.4,
remaining: 2
},
employ: {
current: 5,
target: 7,
progress: 71.4,
remaining: 2
},
ethnicMinority:{
current: 1,
target: 2,
progress: 50,
remaining: 1
current: 1,
target: 2,
progress: 50,
remaining: 1
},
schoolLeader:{
current: 2,
@@ -52,7 +52,8 @@ layout("/layouts/platform.html"){
<el-table-column prop="workerNum" label="工人代表数"></el-table-column>
<!-- <el-table-column prop="ordinaryTeaNum" label="专任教师代表数"></el-table-column>-->
<el-table-column prop="femaleNum" label="女代表数"></el-table-column>
<el-table-column prop="less45Num" label="45岁以下代表数"></el-table-column>
<!-- <el-table-column prop="less45Num" label="45岁以下代表数"></el-table-column>-->
<el-table-column prop="employNum" label="聘用制代表数"></el-table-column>
</el-table>
</el-card>
@@ -72,11 +72,11 @@ const MANUAL_ALLOCATION_DIALOG = {
</table-tool>
<el-table :data="unionLimit" max-height="500" :summary-method="getSummaries"
show-summary>
width="100%" show-summary>
<el-table-column prop="unionName" label="分工会"></el-table-column>
<el-table-column prop="memberCount" label="会员人数"></el-table-column>
<el-table-column align="center" prop="ratio" label="比例(%)">
<template v-slot="{$index,row}">
<template v-slot="{$index, row}">
<el-input-number
style="width: 100%"
v-model="row.ratio"
@@ -172,11 +172,23 @@ const MANUAL_ALLOCATION_DIALOG = {
></el-input-number>
</template>
</el-table-column>
<el-table-column prop="less45Num" label="45岁以下代表数">
<!-- <el-table-column prop="less45Num" label="45岁以下代表数">-->
<!-- <template v-slot="{row}">-->
<!-- <el-input-number-->
<!-- style="width: 100%"-->
<!-- v-model="row.less45Num"-->
<!-- :precision="0"-->
<!-- :step="1"-->
<!-- :min="0"-->
<!-- :max="row.allocationNum"-->
<!-- ></el-input-number>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column prop="employNum" label="聘用制代表数">
<template v-slot="{row}">
<el-input-number
style="width: 100%"
v-model="row.less45Num"
v-model="row.employNum"
:precision="0"
:step="1"
:min="0"
@@ -212,10 +224,33 @@ const MANUAL_ALLOCATION_DIALOG = {
{label: "干部代表数", value: "cadreNum"},
{label: "工人代表数", value: "workerNum"},
{label: "女代表数", value: "femaleNum"},
{label: "45岁以下代表数", value: "less45Num"},
// {label: "45岁以下代表数", value: "less45Num"},
{label: "聘用制代表数", value: "employNum"},
]
}
},
// watch: {
// unionLimit: {
// handler(list) {
// list.forEach(row => {
// const keys = [
// 'seniorTeaNum',
// 'intermediateBelowNum',
// 'cadreNum',
// 'workerNum',
// 'femaleNum',
// 'employNum'
// ]
// const sum = keys.reduce((s, k) => s + (row[k] || 0), 0)
// if (sum > row.allocationNum) {
// const excess = sum - row.allocationNum
// row.seniorTeaNum = Math.max(0, row.seniorTeaNum - excess)
// }
// })
// },
// deep: true
// }
// },
methods: {
getSummaries(param) {
const {columns, data} = param;
@@ -270,6 +305,7 @@ const MANUAL_ALLOCATION_DIALOG = {
},
unionLimitQuickSetting() {
this.unionUserNumCalc.forEach((v, i) => {
const that = this
const startNum = v.startNum
const endNum = v.endNum
const resultNum = v.resultNum
@@ -279,8 +315,10 @@ const MANUAL_ALLOCATION_DIALOG = {
this.unionLimit.forEach((x) => {
if (x.memberCount >= startNum && x.memberCount <= endNum) {
x.ratio = resultNum
const num = parseFloat((v.memberCount * x.ratio / 100).toFixed(0))
v.allocationNum = (num === 0 ? 1 : num)
const num = parseFloat((x.memberCount * resultNum / 100).toFixed(0))
debugger
that.$set(x, "allocationNum", (num ? num : 0))
// v.allocationNum = num ? num : 0
}
})
this.$forceUpdate()
@@ -321,9 +359,17 @@ const MANUAL_ALLOCATION_DIALOG = {
type: 'warning'
}).catch(err => err)
if (confirm === 'confirm') {
this.unionLimit = []
// this.unionLimit = []
this.unionUserNumOneKeyRatio = null
await this.getUnionUsers()
// await this.getUnionUsers()
// 除了工会和会员数据,其他设置为0
this.unionLimit.forEach(v => {
v.ratio = 0
this.settingsTypeOptions.forEach( item => {
v[item.value] = 0
})
})
}
},
applyScaleSettings() {
@@ -1,7 +1,7 @@
const userInfo = {
template: /*language=HTML*/ `
<div>
<table-tool label="人员信息"></table-tool>
<table-tool label="申请信息"></table-tool>
<el-descriptions :column="2" border class="flow-task-form">
<el-descriptions-item label="所属事项">{{viewData.projectName}}</el-descriptions-item>
<el-descriptions-item label="申请模式">{{ viewData.mode}}</el-descriptions-item>
@@ -26,7 +26,9 @@ const userInfo = {
<el-descriptions-item label="开户支行">{{viewData.bankOfDeposit}}</el-descriptions-item>
<el-descriptions-item label="银行卡账号" >{{viewData.bankCardNumber}}</el-descriptions-item>
<el-descriptions-item label="赔付金额" :span="2">{{viewData.amount}}</el-descriptions-item>
<el-descriptions-item label="出险原因、经过、结果" :span="2">{{viewData.dangerEvent}}</el-descriptions-item>
<el-descriptions-item label="出险原因、经过、结果" :span="2">
<div v-html="viewData.dangerEvent"></div>
</el-descriptions-item>
<el-descriptions-item :span="3" label="附件">
<file-preview :files="viewData.files" complete_result></file-preview>
</el-descriptions-item>
@@ -60,7 +62,6 @@ const userInfo = {
this.row = row
this.visible = true
this.getInfo()
this.getDoneTasks()
},
// 获取申请信息
@@ -69,16 +70,12 @@ const userInfo = {
if (res.code === 0) {
this.viewData = res.data
// 格式化日期只显示年月日
if (this.viewData.guaranteedStartTime) {
this.viewData.guaranteedStartTime = this.viewData.guaranteedStartTime.substring(0, 10);
}
if (this.viewData.guaranteedEndTime) {
this.viewData.guaranteedEndTime = this.viewData.guaranteedEndTime.substring(0, 10);
}
// 去除 dangerEvent 字段的 <p> 标签
if (this.viewData.dangerEvent) {
this.viewData.dangerEvent = this.viewData.dangerEvent.replace(/^<p>/, '').replace(/<\/p>$/, '');
}
// if (this.viewData.guaranteedStartTime) {
// this.viewData.guaranteedStartTime = $moment(this.viewData.guaranteedStartTime).format('YYYY-MM-DD');
// }
// if (this.viewData.guaranteedEndTime) {
// this.viewData.guaranteedEndTime = $moment(this.viewData.guaranteedEndTime).format('YYYY-MM-DD');
// }
}
})
},