Merge remote-tracking branch 'origin/main'

This commit is contained in:
2026-07-04 01:18:28 +08:00
8 changed files with 419 additions and 18 deletions
@@ -22,6 +22,7 @@ layout("/layouts/platform.html"){
<el-card shadow="never" style="border: 1px solid var(--border-color-lighter);flex: 1;" :body-style="{ height: '100%', display: 'flex' , 'flex-direction': 'column' }">
<table-tool>
<el-button type="primary" size="small" icon="el-icon-refresh" @click="syncSysUnit">同步系统单位</el-button>
<el-button type="primary" size="small" icon="el-icon-refresh" :loading="syncUnitReplyActorsLoading" @click="syncUnitReplyActors">同步承办单位答复人</el-button>
</table-tool>
<el-table :data="tableData" border ref="tableRef" height="100%">
<el-table-column label="序号" type="index" :index="indexMethod" width="60"></el-table-column>
@@ -69,7 +70,8 @@ layout("/layouts/platform.html"){
data() {
return {
currentTreeNode: null,
currentTreeData: null
currentTreeData: null,
syncUnitReplyActorsLoading: false
}
},
methods: {
@@ -85,6 +87,23 @@ layout("/layouts/platform.html"){
this.$refs.treeRef.listTree()
}
})
},
syncUnitReplyActors() {
this.$confirm("确定要按当前单位领导配置同步进行中的承办单位答复待办吗?", "提示", {
type: "warning"
}).then(() => {
this.syncUnitReplyActorsLoading = true
this.$axios.post(loc() + "/syncUnitReplyActors")
.then((res) => {
if (res.code === 0) {
this.$message.success(res.msg)
}
})
.finally(() => {
this.syncUnitReplyActorsLoading = false
})
})
}
},
created() {
@@ -21,7 +21,11 @@ layout("/layouts/platform.html"){
<el-card shadow="never">
<el-table :data="tableData">
<el-table-column label="序号" type="index" width="50"></el-table-column>
<el-table-column label="单位名称" prop="unitName" width="400" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="单位名称" prop="unitName" width="400" sortable show-overflow-tooltip>
<template slot-scope="{row}">
<el-link type="primary" @click="openUnitProposals(row)">{{row.unitName}}</el-link>
</template>
</el-table-column>
<el-table-column label="提案总数" prop="sum" sortable></el-table-column>
<el-table-column label="主办提案">
<el-table-column label="提案数量" prop="masterSum" sortable></el-table-column>
@@ -35,6 +39,40 @@ layout("/layouts/platform.html"){
</el-table-column>
</el-table>
</el-card>
<el-dialog :title="detailDialogTitle" :visible.sync="detailDialogVisible" width="80%" :close-on-click-modal="false">
<el-table :data="detailTableData" v-loading="detailLoading" row-key="id">
<el-table-column label="序号" type="index" width="60"></el-table-column>
<el-table-column label="提案编号" prop="code" width="160" show-overflow-tooltip></el-table-column>
<el-table-column label="提案名称" prop="name" min-width="260" show-overflow-tooltip></el-table-column>
<el-table-column label="提案人" prop="createUserName" width="120" show-overflow-tooltip></el-table-column>
<el-table-column label="提案类别" prop="typeName" width="140" show-overflow-tooltip></el-table-column>
<el-table-column label="承办类型" prop="underTakeType" width="100"></el-table-column>
<el-table-column label="当前节点" prop="curTaskName" width="160" show-overflow-tooltip></el-table-column>
<el-table-column label="操作" width="100" fixed="right">
<template slot-scope="{row}">
<el-button size="mini" type="primary" @click="viewSingleProposal(row)">查看</el-button>
</template>
</el-table-column>
</el-table>
<el-row class="el-pagination-container" style="margin-top: 20px">
<el-pagination
@size-change="detailPageSizeChange"
@current-change="detailPageNumberChange"
:current-page="detailPageForm.pageNumber"
:page-sizes="[5,10, 20, 30, 50]"
:page-size="detailPageForm.pageSize"
layout="total, sizes, prev, pager, next"
:total="detailPageForm.totalCount"
></el-pagination>
</el-row>
</el-dialog>
<el-dialog title="提案详情" :visible.sync="proposalInfoVisible" width="1200px" append-to-body top="5vh">
<div style="max-height: 80vh;overflow-y: auto">
<proposal-info ref="infoRef"></proposal-info>
</div>
</el-dialog>
</div>
<script>
@@ -50,7 +88,19 @@ layout("/layouts/platform.html"){
return {
sessionOptions: [],
underTakeOptions: [],
slaveNeedReply: false
slaveNeedReply: false,
detailDialogVisible: false,
detailDialogTitle: "",
detailLoading: false,
detailTableData: [],
detailPageForm: {
pageNumber: 1,
pageSize: 10,
totalCount: 0,
sessionId: "",
unitCode: ""
},
proposalInfoVisible: false
}
},
methods: {
@@ -82,6 +132,40 @@ layout("/layouts/platform.html"){
this.slaveNeedReply = res.data.slaveNeedReply
}
})
},
openUnitProposals(row) {
this.detailDialogTitle = row.unitName + "承办提案"
this.detailDialogVisible = true
this.$set(this.detailPageForm, "unitCode", row.unitCode)
this.$set(this.detailPageForm, "sessionId", this.pageForm.sessionId)
this.$set(this.detailPageForm, "pageNumber", 1)
this.loadUnitProposals()
},
loadUnitProposals() {
this.detailLoading = true
this.$axios.post(loc() + "/getProposalsByUnit", this.detailPageForm).then((res) => {
if (res.code === 0) {
this.$set(this, "detailTableData", res.data.list)
this.$set(this.detailPageForm, "totalCount", res.data.totalCount)
}
}).finally(() => {
this.detailLoading = false
})
},
detailPageSizeChange(val) {
this.$set(this.detailPageForm, "pageSize", val)
this.$set(this.detailPageForm, "pageNumber", 1)
this.loadUnitProposals()
},
detailPageNumberChange(val) {
this.$set(this.detailPageForm, "pageNumber", val)
this.loadUnitProposals()
},
viewSingleProposal(row) {
this.proposalInfoVisible = true
this.$nextTick(() => {
this.$refs.infoRef.onOpen(row)
})
}
},
created() {
@@ -305,11 +305,13 @@ layout("/layouts/platform.html"){
getDefaultReplyOpinion(row) {
const contentPlaceholder = "<p>&nbsp;&nbsp;&nbsp;&nbsp;【请在此处填写答复内容】</p><br/>"
const proposalUserName = this.escapeHtml(row.createUserName || "×××")
const proposalName = this.escapeHtml(row.name || "……")
if (row.underTakeIsMaster) {
return [
"<p>×××代表(仅写第一提案人姓名)</p>",
"<p>&nbsp;&nbsp;&nbsp;&nbsp;您提出的关于“……”的提案收悉,现答复如下:</p>",
"<p>" + proposalUserName + "代表</p>",
"<p>&nbsp;&nbsp;&nbsp;&nbsp;您提出的关于“" + proposalName + "”的提案收悉,现答复如下:</p>",
contentPlaceholder,
"<p>&nbsp;&nbsp;&nbsp;&nbsp;感谢您对学校工作的关心和支持。</p>"
].join("")
@@ -324,6 +326,15 @@ layout("/layouts/platform.html"){
].join("")
},
escapeHtml(value) {
return String(value)
.replace(/&/g, "&amp;")
.replace(/</g, "&lt;")
.replace(/>/g, "&gt;")
.replace(/"/g, "&quot;")
.replace(/'/g, "&#39;")
},
handleTaskAction(val) {
this.$refs.formRef.validate(valid => {
if (!valid) return
@@ -445,7 +456,6 @@ layout("/layouts/platform.html"){
}
},
created() {
this.pageData()
this.listOpenSession()
}
})