Merge branch 'refs/heads/dev'

This commit is contained in:
Paidax
2024-08-02 08:49:24 +08:00
65 changed files with 8291 additions and 14 deletions
@@ -0,0 +1,81 @@
/**
*Desc:
*Create by: jug
*Create time:2023/11/10/11:07
*/
<template>
<div class="el-descriptions">
<div class="el-descriptions__body">
<slot></slot>
</div>
</div>
</template>
<script>
module.exports = {}
</script>
<style scoped>
.el-descriptions__table {
table-layout: fixed !important;
}
.el-descriptions table {
table-layout: auto;
}
.el-descriptions__body table {
border-collapse: collapse;
width: 100%;
table-layout: fixed;
}
.el-descriptions :not(.is-bordered) th, td {
padding-bottom: 12px;
}
.el-descriptions .is-bordered th, td {
border: 1px solid #ebeef5;
padding: 12px 10px;
}
.el-descriptions__body table th, td {
-webkit-box-sizing: border-box;
box-sizing: border-box;
text-align: left;
font-weight: 400;
line-height: 1.5;
}
.el-descriptions__body table th {
font-weight: 400;
color: #909399;
background: #fafafa;
border: 1px solid #ebeef5;
padding: 12px 10px;
min-width: 180px;
}
.el-descriptions__body table td .el-form-item {
margin-bottom: 0;
}
.el-descriptions__body table td .is-required .el-form-item__error {
background: #303133;
color: #fff;
position: absolute;
border-radius: 4px;
padding: 10px;
z-index: 2000;
font-size: 12px;
line-height: 1.2;
min-width: 10px;
word-wrap: break-word;
}
.el-descriptions .el-date-editor.el-input, .el-date-editor.el-input__inner {
width: 100%;
}
</style>
@@ -0,0 +1,132 @@
<template>
<el-tabs v-model="activeName" tab-position="top">
<el-tab-pane label="基本信息" name="1">
<border-table>
<table>
<tr>
<th>填报人</th>
<td>{{ viewData.username }}</td>
<th>填报工号</th>
<td>{{ viewData.loginName }}</td>
<th>联系方式</th>
<td>{{ viewData.mobile }}</td>
</tr>
<tr>
<th>填报单位</th>
<td>{{ viewData.unionName }}</td>
<th>填报时间</th>
<td colspan="3">{{ moment(viewData.applyDate).format('YYYY年MM月DD日') }}</td>
</tr>
<tr>
<th>基本情况简介</th>
<td colspan="5">{{ viewData.basicInformation }}</td>
</tr>
<tr>
<th>建设方案</th>
<td colspan="5">
<div class="text-left" v-html="viewData.constructionPlan"></div>
</td>
</tr>
</table>
</border-table>
</el-tab-pane>
<el-tab-pane label="基层党组织审核信息" v-if="organizationAudit" name="2">
<border-table>
<table>
<tr>
<th>审核人</th>
<td>{{ organizationAudit.username }}--{{ organizationAudit.loginname }}</td>
<th>审核时间</th>
<td>{{ organizationAudit.auditTime }}</td>
</tr>
<tr>
<th>审核意见</th>
<td colspan="3">{{ organizationAudit.auditOpinion }}</td>
</tr>
<tr>
<th>签字</th>
<td colspan="3">
<div>
<el-image :src="organizationAudit.auditSign" style="width: 200px;height:auto"
v-if="organizationAudit.auditSign"></el-image>
<span v-else>暂无</span>
</div>
</td>
</tr>
</table>
</border-table>
</el-tab-pane>
<el-tab-pane label="校工会审核信息" v-if="schoolAudit" name="3">
<border-table>
<table>
<tr>
<th>审核人</th>
<td>{{ schoolAudit.username }}--{{ schoolAudit.loginname }}</td>
<th>审核时间</th>
<td>{{ schoolAudit.auditTime }}</td>
</tr>
<tr>
<th>审核意见</th>
<td colspan="3">{{ schoolAudit.auditOpinion }}</td>
</tr>
<tr>
<th>签字</th>
<td colspan="3">
<div>
<el-image :src="schoolAudit.auditSign" style="width: 200px;height:auto"
v-if="schoolAudit.auditSign"></el-image>
<span v-else>暂无</span>
</div>
</td>
</tr>
</table>
</border-table>
</el-tab-pane>
<slot name="handle"></slot>
</el-tabs>
</template>
<script>
module.exports = {
props: {
activeName: {
type: String,
default: '1'
}
},
data() {
return {
activeName: '1',
viewData: {},
organizationAudit: {},
schoolAudit: {},
}
},
methods: {
async openView(id) {
const resp = await $.get('/platform/wakeshome/declaration/apply/getInfoById', {id: id})
if (resp.code === 0) {
this.viewData = resp.data
this.organizationAudit = resp.data.organizationAudit
this.schoolAudit = resp.data.schoolAudit
}
}
}
}
</script>
<style scoped>
</style>
@@ -0,0 +1,151 @@
<template>
<el-tabs v-model="activeName" tab-position="top">
<el-tab-pane label="基本信息" name="1">
<border-table>
<vi-title title="职工之家申请信息"></vi-title>
<table>
<tr>
<th>填报人</th>
<td>{{ viewData.username }}</td>
<th>联系方式</th>
<td>{{ viewData.mobile }}</td>
<th>填报人</th>
<td>{{ viewData.applyTime }}</td>
</tr>
<tr>
<th>填报单位</th>
<td colspan="5">{{ viewData.unionName }}</td>
</tr>
</table>
<vi-title style="margin-top: 25px" title="职工之家详细信息"></vi-title>
<table>
<tr>
<th>单位位置</th>
<td>{{ viewData.position }}</td>
<th>单位面积</th>
<td>{{ viewData.area }}</td>
<th>创办时间</th>
<td>{{ viewData.foundTime }}</td>
</tr>
<tr>
<th>单位信息</th>
<td colspan="5">{{ viewData.details }}</td>
</tr>
</table>
</border-table>
<vi-title style="margin-top: 25px" title="职工之家荣誉信息"></vi-title>
<el-table :data="viewData.awardInfo" style="width: 100%">
<el-table-column prop="awardTime" label="获奖日期"></el-table-column>
<el-table-column prop="awardUnit" label="获奖单位"></el-table-column>
<el-table-column prop="awardName" label="奖项名称"></el-table-column>
<el-table-column prop="awardPic" label="获奖图片">
<template scope="{row,$index}">
<div v-if="row.awardPic != null && row.awardPic !== ''">
<image-upload :view="true" :limit="1" v-model="row.awardPic"></image-upload>
</div>
<div v-else>暂无</div>
</template>
</el-table-column>
</el-table>
<vi-title style="margin-top: 25px" title="职工之家材料上传"></vi-title>
<border-table>
<table>
<tr>
<th>图片</th>
<td colspan="6">
<file-upload v-if="viewData.picFiles && viewData.picFiles.length > 0"
:files="viewData.picFiles"
:view="true"></file-upload>
</td>
</tr>
<tr>
<th>附件</th>
<td colspan="6">
<file-upload v-if="viewData.files && viewData.files.length > 0"
:files="viewData.files"
:view="true"></file-upload>
</td>
</tr>
</table>
</border-table>
</el-tab-pane>
<el-tab-pane label="校工会审核信息" v-if="schoolAudit" name="2">
<border-table>
<table>
<tr>
<th>审核人</th>
<td>{{ schoolAudit.username }}--{{ schoolAudit.loginname }}</td>
<th>审核时间</th>
<td>{{ schoolAudit.auditTime }}</td>
</tr>
<tr>
<th>审核意见</th>
<td colspan="3">{{ schoolAudit.auditOpinion }}</td>
</tr>
<tr>
<th>签字</th>
<td colspan="3">
<div>
<el-image :src="schoolAudit.auditSign" style="width: 200px;height:auto"
v-if="schoolAudit.auditSign"></el-image>
<span v-else>暂无</span>
</div>
</td>
</tr>
</table>
</border-table>
</el-tab-pane>
<slot name="handle"></slot>
</el-tabs>
</template>
<script>
module.exports = {
props: {
activeName: {
type: String,
default: '1'
}
},
data() {
return {
activeName: '1',
viewData: {},
schoolAudit: {},
}
},
methods: {
async openView(id) {
console.log(id)
const resp = await $.get('/platform/wakeshome/mine/getInfoById', {id: id})
if (resp.code === 0) {
this.viewData = resp.data
this.schoolAudit = resp.data.schoolAudit
}
}
}
}
</script>
<style scoped>
.el-upload__tip {
display: none;
text-align: left;
}
</style>
@@ -0,0 +1,506 @@
<template>
<el-form class="el_form" :model="data" ref="addForm" :rules="formRules" label-width="120px">
<vi-title title="指标信息"></vi-title>
<el-row gutter="20">
<el-col :span="8">
<el-form-item prop="annual" label="年&emsp;&emsp;度" class="is-required">
<el-date-picker
style="width: 100%"
:disabled="is_view"
:picker-options="pickerOptions"
v-model="data.annual"
type="year"
value-format="yyyy"
placeholder="选择年度">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="assessment" label="评测名称" class="is-required">
<el-input maxlength="30" :disabled="is_view" v-model="data.assessment"
placeholder="请填写评测名称"
type="text">
</el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="assessment" label="">
<el-checkbox v-model="data.isEvaluationIndex" :disabled="is_view">是否采用以往评议指标</el-checkbox>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="zbId" label="以往评议指标" v-if="data.isEvaluationIndex">
<el-select v-model="data.zbId" placeholder="请选择" filterable clearable
style="width: 100%" @change="getByZbData">
<el-option
v-for="item in zbList"
:key="item.id"
:label="item.annual+item.assessment"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row gutter="20">
<el-col :span="8">
<el-form-item prop="assessmentMode" label="评议选项" class="is-required">
<el-radio-group v-model="data.assessmentMode" :disabled="is_view">
<el-radio-button :label="1">工会评议</el-radio-button>
<el-radio-button :label="2">主席/副主席评议</el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="reviewMode" label="评议模式" class="is-required">
<el-radio-group v-model="data.reviewMode" :disabled="is_view">
<el-tooltip content="由校工会/分工会管理员自我测评"
placement="top">
<el-radio-button :label="1">自我评议</el-radio-button>
</el-tooltip>
<el-tooltip content="由教职工对选择的工会/主席进行评议"
placement="top">
<el-radio-button :label="2">教工评议</el-radio-button>
</el-tooltip>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="scoringMode" label="打分模式" class="is-required">
<el-radio-group v-model="data.scoringMode" :disabled="is_view">
<el-radio-button :label="1">评分模式</el-radio-button>
<el-radio-button :label="2">满意度模式</el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row gutter="20">
<el-col :span="8" v-if="data.assessmentMode">
<el-form-item prop="scoringMode" label="评议范围" class="is-required">
<el-radio-group v-model="data.commentTarget" :disabled="is_view">
<el-tooltip :content="schoolContent" placement="top">
<el-radio-button :disabled="!(A06 || sysadmin)" :label="1">校工会</el-radio-button>
</el-tooltip>
<el-tooltip :content="allUnionContent" placement="top">
<el-radio-button :disabled="!(A06 || sysadmin)" :label="2">全部分工会</el-radio-button>
</el-tooltip>
<el-tooltip :content="selectUnionContent" placement="top">
<el-radio-button :label="3">自选分工会</el-radio-button>
</el-tooltip>
</el-radio-group>
</el-form-item>
</el-col>
<template v-if="data.commentTarget && data.reviewMode == 2 && data.commentTarget == 1">
<el-col :span="8">
<el-form-item prop="activityGroupId" label="可评议人员" class="is-required">
<div style="display: flex; justify-content: space-between">
<div style="width: 99%">
<el-select clearable filterable placeholder="请选择可评议人员"
style="width: 99%" v-model="data.activityGroupId" :disabled="is_view">
<el-option :key="item.groupId"
:label="item.groupName"
:value="item.groupId"
v-for="item in activityGroupList"></el-option>
</el-select>
</div>
<div>
<el-button
@click="$refs.drawerUserScope.userScopeDialog = true"
:disabled="is_view"
type="primary">设置
</el-button>
</div>
</div>
</el-form-item>
</el-col>
</template>
<template v-if="data.commentTarget && data.commentTarget == 3">
<el-col :span="8">
<el-form-item prop="unionIds" label="自选分工会" class="is-required">
<el-select v-model="data.unionIds" style="width: 100%"
multiple clearable filterable
placeholder="请选择分工会">
<el-option
v-for="item in reviewUnions"
:key="item.id"
:label="item.unionname"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
</template>
<el-col :span="8">
<el-form-item prop="applyTime" label="评议时间" class="is-required">
<el-date-picker
end-placeholder="结束时间"
range-separator="-"
start-placeholder="开始时间"
style="width: 100%"
type="datetimerange"
v-model="data.applyTime"
value-format="yyyy-MM-dd HH:mm:ss">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<vi-title2 title="测评内容"></vi-title2>
<el-form-item label="" label-width="0" v-for="(nr,idx) in data.nrs">
<el-row type="flex" align="middle" justify="space-between">
<el-input v-model="nr.content" :disabled="is_view" maxlength="30" style="width: 50%"
placeholder="请填写测评内容">
<template slot="prepend"><span v-model="nr.contentNumber">
{{ nr.contentNumber = idx + 1 }}</span></template>
</el-input>
<el-button v-if="!is_view" size="medium" :disabled="data.nrs.length<=1" type="danger"
@click="data.nrs.splice(idx,1)"
icon="el-icon-delete"></el-button>
</el-row>
<el-row style="margin-top: 20px">
<el-table :data="nr.bzs" style="width: 100%" border show-summary
:summary-method="getSummaries" size="small">
<el-table-column align="center" header-align="center" label="序号" type="index"
width="100px">
<template scope="{$index,row}">
{{ row.contentNumber = $index + 1 }}
</template>
</el-table-column>
<el-table-column label="测评标准" prop="inspection" header-align="center" align="center">
<template scope="{row}">
<el-input v-if="!is_view" v-model="row.inspection" placeholder="请填写测评标准"></el-input>
<span v-else>{{ row.inspection }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="单项分" prop="single_score" header-align="center" align="center" width="100px">
<template scope="{row}">
<el-input v-if="!is_view" v-model="row.single_score" placeholder="请填写单项分"></el-input>
<span v-else>{{ row.single_score }}</span>
</template>
</el-table-column>-->
<el-table-column label="标准分" prop="score" header-align="center" align="center"
width="100px" v-if="data.scoringMode===1">
<template scope="{row}">
<el-input v-if="!is_view" v-model.number="row.score" maxlength="4"
placeholder="请填写标准分"></el-input>
<span v-else>{{ row.score }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="能否超过标准分" prop="beyond_highestscore" header-align="center" align="center" width="120px">
<template scope="{row}">
<el-switch
v-if="!is_view"
v-model="row.beyond_highestscore"
active-color="#13ce66"
inactive-color="#ff4949">
</el-switch>
<el-switch
v-else
disabled
v-model="row.beyond_highestscore">
</el-switch>
</template>
</el-table-column>-->
<el-table-column label="是否填写意见" prop="isEvidence" header-align="center" align="center"
width="120px" v-if="data.scoringMode===1">
<template scope="{row}">
<el-switch
:disabled="is_view"
v-model="row.isEvidence"
active-color="#13ce66"
inactive-color="#ff4949">
</el-switch>
</template>
</el-table-column>
<!--
<el-table-column label="关联模块" prop="associatedmodule" header-align="center" align="center" width="200px">
<template scope="{row}">
<el-input v-if="!is_view" v-model="row.associatedmodule" maxlength="10" placeholder="请填写关联模块"></el-input>
<span v-else>{{ row.associatedmodule }}</span>
</template>
</el-table-column>
<el-table-column label="关联标识" prop="bz_relation_id" header-align="center" align="center" width="100px">
<template scope="{row}">
<el-input v-if="!is_view" v-model="row.bz_relation_id" maxlength="20" placeholder="请填写关联标识,该标识唯一"></el-input>
<span v-else>{{ row.bz_relation_id }}</span>
</template>
</el-table-column>
-->
<!-- <el-table-column label="能否删除" prop="canDelete" header-align="center" align="center" width="100px">-->
<!-- <template scope="{row}">-->
<!-- <el-switch-->
<!-- v-if="!is_view"-->
<!-- :disabled="row.canDelete==false"-->
<!-- v-model="row.canDelete"-->
<!-- active-color="#13ce66"-->
<!-- inactive-color="#ff4949">-->
<!-- </el-switch>-->
<!-- <el-switch-->
<!-- v-else-->
<!-- :disabled="!row.canDelete && row.id"-->
<!-- v-model="row.canDelete">-->
<!-- </el-switch>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column v-if="!is_view" label="操作" header-align="center" align="center"
width="200px">
<template scope="{row,$index}">
<el-button size="mini" :disabled="nr.bzs.length<=1 || (!row.canDelete && row.id)"
type="danger" icon="el-icon-delete"
@click="nr.bzs.splice($index,1)"></el-button>
<el-button size="mini"
type="primary" icon="el-icon-plus"
@click="nr.bzs.splice($index+1,0,{inspection:null,score:null,isEvidence:true})"></el-button>
</template>
</el-table-column>
</el-table>
</el-row>
<el-row class="mt10 mb10" style="border-top: 1px dashed rgb(229, 225, 225)"></el-row>
</el-form-item>
<el-row type="flex" justify="center">
<el-button v-if="!is_view"
type="primary"
@click="data.nrs.push({bzs:[{inspection:null,score:null,isEvidence:true}]})">
添加测评内容
</el-button>
</el-row>
<div>
<drawer-user-scope
@group_change="getActivityGroup"
ref="drawerUserScope"
:group_id.sync="data.activityGroupId"
></drawer-user-scope>
</div>
</el-form>
</template>
<script>
const METHOD_NAME = "change"
module.exports = {
props: {
is_view: {
type: Boolean,
default: false
},
data: {
type: Object,
default: {
nrs: [{
bzs: [{}]
}],
unionIds: []
}
}
},
watch: {
data: {
deep: true,
handler(val) {
this.$emit(METHOD_NAME, val)
}
}
},
data() {
return {
activityGroupList: [],
isEvaluationIndex: false,
zbList: [],
formRules: {
xxx: [{required: true, message: '请填写年度', trigger: ['blur', 'change']}],
},
pickerOptions: {
disabledDate(time) {
return (
time.getFullYear() > new Date().getFullYear()
);
}
},
relationData: [
{moduleName: '提案系统模块', id: 'proposal'},
{moduleName: '二级教代会', id: 'secteameet'},
{moduleName: '慰问/补助', id: 'ConandDif'},
],
roleDataReview: {},
reviewUnions: [],
}
},
components: {
'drawer-user-scope': httpVueLoader('/components/plugins/DrawerUserScope.vue'),
},
methods: {
async getActivityGroup() {
const {data} = await $.get('/platform/activity/basic/scope/getActivityUserScopeGroup')
this.activityGroupList = data
},
async getByZbData() {
const {
code,
data,
msg
} = await $.get('/platform/wakeshome/review/viewZb/edit', {id: this.data.zbId})
if (data) {
this.$set(this.data, "nrs", data.nrs)
} else {
this.$set(this.data, "nrs", [{bzs: [{}]}])
}
},
async getZbList() {
const res = await $.get("/platform/wakeshome/review/Xjkhzb/getZbList")
this.zbList = res.data
},
getSummaries(param) {
const {columns, data} = param;
const sums = [];
columns.forEach((column, index) => {
if (index === 0 && this.data.scoringMode === 1) {
sums[index] = '小计';
return;
} else if ([1, 3, 4].includes(index) && this.data.scoringMode === 1) {
sums[index] = '';
return;
} else if ([1, 2, 3].includes(index) && this.data.scoringMode === 2) {
sums[index] = '';
return;
}
const values = data.map(item => Number(item[column.property]));
if (!values.every(value => isNaN(value))) {
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr);
if (!isNaN(value)) {
return prev + curr;
} else {
return prev;
}
}, 0);
sums[index] += ' 分';
} else {
sums[index] = '';
}
});
return sums;
},
async getRolesAndUnion() {
const {data} = await $.post("/platform/activity/basic/scope/getRolesAndUnion")
this.roleDataReview = data
}
},
async created() {
await this.getRolesAndUnion()
await this.getActivityGroup()
await this.getZbList()
if (!this.data || !Object.keys(this.data).length) {
this.data = {
nrs: [{
bzs: [{inspection: null, score: null, isEvidence: true}]
}],
}
}
if (((this.is_sysadmin || this.is_A06 || this.is_H02) === false) && this.is_H04 === true) {
this.reviewUnions = await getUnionList(this.unionId)
this.$set(this.data, "unionIds", this.reviewUnions[0].id)
} else {
this.reviewUnions = await getUnions(null)
}
},
computed: {
H10() {
return this.roleDataReview.is_H10
},
A06() {
return this.roleDataReview.is_A06
},
H04() {
return this.roleDataReview.is_H04
},
H02() {
return this.roleDataReview.is_H02
},
sysadmin() {
return this.roleDataReview.is_sysadmin
},
unionId() {
return this.roleDataReview.unionid
},
schoolContent() {
if (this.data.reviewMode == 1) {
return '勾选后,仅校工会管理员可参加测评'
} else if (this.data.reviewMode == 2) {
return '勾选后,全校所有人员可评议校工会,也可根据右侧选框【可评议人员】指定评议人员范围'
} else {
return '请选择评议模式'
}
},
allUnionContent() {
if (this.data.reviewMode == 1) {
return '勾选后,仅各工会管理员可对本分工会进行自我评议'
} else if (this.data.reviewMode == 2) {
return '勾选后,所有分工会人员对本分工会进行评议,不可跨工会评议'
} else {
return '请选择评议模式'
}
},
selectUnionContent() {
if (this.data.reviewMode == 1) {
return '勾选后,仅右侧选择的分工会管理员可对本分工会进行自我评议'
} else if (this.data.reviewMode == 2) {
return '勾选后,可根据右侧选框【自选分工会】指定分工会评议范围'
} else {
return '请选择评议模式'
}
}
},
}
</script>
<style>
.fixedBox {
position: fixed;
top: 200px;
right: 10px;
z-index: 100;
}
.el_form {
position: relative;
}
.el-input-group__prepend {
background-color: #1867b0;
color: white;
}
</style>