提案整改
This commit is contained in:
@@ -82,6 +82,7 @@ layout("/layouts/platform.html"){
|
||||
:expand-on-click-node="false"
|
||||
:props="{ children: 'children', label: 'name' }"
|
||||
node-key="id"
|
||||
:default-expanded-keys="defaultExpandedKeys"
|
||||
@node-click="treeNodeClick"
|
||||
:filter-node-method="filterNode"
|
||||
highlight-current
|
||||
@@ -156,6 +157,7 @@ layout("/layouts/platform.html"){
|
||||
filterText: null,
|
||||
currentTreeNode: null,
|
||||
currentTreeData: null,
|
||||
defaultExpandedKeys: [],
|
||||
treeData: []
|
||||
}
|
||||
},
|
||||
@@ -175,6 +177,7 @@ layout("/layouts/platform.html"){
|
||||
this.treeData = res.data
|
||||
if (this.treeData) {
|
||||
this.currentTreeData = this.treeData[0]
|
||||
this.defaultExpandedKeys = this.treeData.length > 0 ? [this.treeData[0].id] : []
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
+6
-2
@@ -232,7 +232,7 @@ layout("/layouts/platform.html"){
|
||||
return masterUnitNames || slaveUnitNames
|
||||
}
|
||||
if (row.caseFilingResult === "CONFIRM_FILING") {
|
||||
return [masterUnitNames ? "主办:" + masterUnitNames : "", slaveUnitNames ? "协办:" + slaveUnitNames : ""].filter(function(item) {
|
||||
return [masterUnitNames ? "主办:" + masterUnitNames : "", slaveUnitNames ? "协办:" + slaveUnitNames : ""].filter(function (item) {
|
||||
return item
|
||||
}).join(";")
|
||||
}
|
||||
@@ -243,7 +243,7 @@ layout("/layouts/platform.html"){
|
||||
return ""
|
||||
}
|
||||
if (Array.isArray(unitNames)) {
|
||||
return unitNames.filter(function(item) {
|
||||
return unitNames.filter(function (item) {
|
||||
return item
|
||||
}).join(",")
|
||||
}
|
||||
@@ -363,6 +363,10 @@ layout("/layouts/platform.html"){
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
res.data.list.map((item) => {
|
||||
item.brief = removeHTMLTag(item.brief)
|
||||
item.measures = removeHTMLTag(item.measures)
|
||||
})
|
||||
this.tableData = res.data.list
|
||||
this.pageForm.totalCount = res.data.totalCount
|
||||
}
|
||||
|
||||
+105
-32
@@ -25,9 +25,56 @@ layout("/layouts/platform.html"){
|
||||
.dimension-pills {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
}
|
||||
|
||||
.analysis-toolbar {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
flex-wrap: wrap;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.analysis-toolbar-main {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
gap: 12px 18px;
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.analysis-field {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
min-width: 330px;
|
||||
}
|
||||
|
||||
.analysis-field-label {
|
||||
flex: 0 0 auto;
|
||||
color: #4b617f;
|
||||
font-size: 13px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.analysis-field-select {
|
||||
width: 240px;
|
||||
}
|
||||
|
||||
.analysis-dimension-box {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
min-width: 420px;
|
||||
}
|
||||
|
||||
.analysis-view-switch {
|
||||
flex: 0 0 auto;
|
||||
}
|
||||
|
||||
.dimension-pill {
|
||||
padding: 3px 10px;
|
||||
border-radius: 999px;
|
||||
@@ -36,6 +83,14 @@ layout("/layouts/platform.html"){
|
||||
background: #edf4ff;
|
||||
border: 1px solid #cfe1ff;
|
||||
line-height: 1.4;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.dimension-pill.is-active {
|
||||
color: #ffffff;
|
||||
background: #2f7df6;
|
||||
border-color: #2f7df6;
|
||||
}
|
||||
|
||||
.analysis-tip {
|
||||
@@ -112,15 +167,28 @@ layout("/layouts/platform.html"){
|
||||
</style>
|
||||
<div id="app" v-cloak>
|
||||
<el-card shadow="never">
|
||||
<div style="display:flex;justify-content:space-between;align-items:center;gap:12px;">
|
||||
<search @search="doSearch" style="flex:1;">
|
||||
<search-item label="教代会届次">
|
||||
<el-select @change="doSearch" clearable filterable placeholder="请选择教代会届次" v-model="pageForm.sessionId">
|
||||
<div class="analysis-toolbar">
|
||||
<div class="analysis-toolbar-main">
|
||||
<div class="analysis-field">
|
||||
<span class="analysis-field-label">教代会届次</span>
|
||||
<el-select class="analysis-field-select" @change="doSearch" clearable filterable placeholder="请选择教代会届次" v-model="pageForm.sessionId">
|
||||
<el-option :key="item.id" :label="item.fullName" :value="item.id" v-for="item in sessionOptions"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
</search>
|
||||
<el-button size="mini" type="primary" @click="toggleChartView">
|
||||
</div>
|
||||
<div class="analysis-dimension-box">
|
||||
<span class="analysis-field-label">统计维度</span>
|
||||
<div class="dimension-pills">
|
||||
<span
|
||||
class="dimension-pill"
|
||||
:class="{'is-active': pageForm.dimension === item.value}"
|
||||
@click="toggleDimension(item.value)"
|
||||
v-for="item in dimensionOptions"
|
||||
:key="item.value"
|
||||
>{{ item.label }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<el-button class="analysis-view-switch" size="mini" type="primary" @click="toggleChartView">
|
||||
{{ showChart ? '切换表格展示' : '切换图形化展示' }}
|
||||
</el-button>
|
||||
</div>
|
||||
@@ -133,17 +201,10 @@ layout("/layouts/platform.html"){
|
||||
<span class="page-title-accent"></span>
|
||||
<span class="page-title-text">统计数据</span>
|
||||
</div>
|
||||
<div class="dimension-pills mt10">
|
||||
<span class="dimension-pill">提案人单位</span>
|
||||
<span class="dimension-pill">提案类型</span>
|
||||
<span class="dimension-pill">代表团</span>
|
||||
<span class="dimension-pill">立案结果</span>
|
||||
<span class="dimension-pill">满意度</span>
|
||||
</div>
|
||||
</div>
|
||||
<el-button size="mini" type="primary" @click="exportStatistics">导出统计数据</el-button>
|
||||
</div>
|
||||
<el-table :data="statisticsRows" border stripe style="width: 100%">
|
||||
<el-table :data="statisticsRows" border stripe style="width: 100%" v-loading="tableLoading">
|
||||
<el-table-column prop="dimension" label="统计维度" width="180"></el-table-column>
|
||||
<el-table-column prop="itemName" label="分类项" min-width="260" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column prop="count" label="数量" width="120"></el-table-column>
|
||||
@@ -159,7 +220,7 @@ layout("/layouts/platform.html"){
|
||||
</div>
|
||||
<el-button size="mini" type="primary" @click="exportAnalysis">导出分析数据</el-button>
|
||||
</div>
|
||||
<el-table :data="analysisRows" border stripe style="width: 100%">
|
||||
<el-table :data="analysisRows" border stripe style="width: 100%" v-loading="tableLoading">
|
||||
<el-table-column prop="dimension" label="统计维度" width="160"></el-table-column>
|
||||
<el-table-column prop="total" label="总量" width="100"></el-table-column>
|
||||
<el-table-column prop="categoryCount" label="分类数量" width="120"></el-table-column>
|
||||
@@ -177,13 +238,6 @@ layout("/layouts/platform.html"){
|
||||
<span class="page-title-accent"></span>
|
||||
<span class="page-title-text">图形化统计展示(混合图)</span>
|
||||
</div>
|
||||
<div class="mt10">
|
||||
<span class="keyword-tag">提案人单位</span>
|
||||
<span class="keyword-tag">提案类型</span>
|
||||
<span class="keyword-tag">代表团</span>
|
||||
<span class="keyword-tag">立案结果</span>
|
||||
<span class="keyword-tag">满意度</span>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<el-button size="mini" type="primary" @click="exportStatistics">导出统计数据</el-button>
|
||||
@@ -228,11 +282,20 @@ layout("/layouts/platform.html"){
|
||||
data() {
|
||||
return {
|
||||
pageForm: {
|
||||
sessionId: ""
|
||||
sessionId: "",
|
||||
dimension: ""
|
||||
},
|
||||
dimensionOptions: [
|
||||
{label: "提案人单位", value: "提案人单位"},
|
||||
{label: "提案类型", value: "提案类型"},
|
||||
{label: "代表团", value: "代表团"},
|
||||
{label: "立案结果", value: "立案结果"},
|
||||
{label: "满意度", value: "满意度"}
|
||||
],
|
||||
sessionOptions: [],
|
||||
statisticsRows: [],
|
||||
analysisRows: [],
|
||||
tableLoading: false,
|
||||
showChart: false,
|
||||
chartMap: {}
|
||||
}
|
||||
@@ -276,6 +339,10 @@ layout("/layouts/platform.html"){
|
||||
isPieDimension(dimension) {
|
||||
return ["立案结果", "满意度"].includes(dimension)
|
||||
},
|
||||
toggleDimension(dimension) {
|
||||
this.pageForm.dimension = this.pageForm.dimension === dimension ? "" : dimension
|
||||
this.doSearch()
|
||||
},
|
||||
renderCharts() {
|
||||
this.destroyCharts()
|
||||
this.chartGroups.forEach(group => {
|
||||
@@ -343,18 +410,24 @@ layout("/layouts/platform.html"){
|
||||
this.destroyCharts()
|
||||
return
|
||||
}
|
||||
this.$axios.post(loc() + "/statisticsData", this.pageForm).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.statisticsRows = res.data || []
|
||||
this.tableLoading = true
|
||||
Promise.all([
|
||||
this.$axios.post(loc() + "/statisticsData", this.pageForm),
|
||||
this.$axios.post(loc() + "/analysisData", this.pageForm)
|
||||
]).then((resList) => {
|
||||
const statisticsRes = resList[0]
|
||||
const analysisRes = resList[1]
|
||||
if (statisticsRes.code === 0) {
|
||||
this.statisticsRows = statisticsRes.data || []
|
||||
if (this.showChart) {
|
||||
this.$nextTick(() => this.renderCharts())
|
||||
}
|
||||
}
|
||||
})
|
||||
this.$axios.post(loc() + "/analysisData", this.pageForm).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.analysisRows = res.data || []
|
||||
if (analysisRes.code === 0) {
|
||||
this.analysisRows = analysisRes.data || []
|
||||
}
|
||||
}).finally(() => {
|
||||
this.tableLoading = false
|
||||
})
|
||||
},
|
||||
exportStatistics() {
|
||||
@@ -376,4 +449,4 @@ layout("/layouts/platform.html"){
|
||||
</script>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
#-->
|
||||
|
||||
+1
-1
@@ -368,7 +368,7 @@ layout("/layouts/platform.html"){
|
||||
},
|
||||
listSession() {
|
||||
this.$axios.post("/platform/proposal/common/listSession", {
|
||||
orderBy: "asc"
|
||||
orderBy: "desc"
|
||||
}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.sessionOptions = res.data
|
||||
|
||||
+6
@@ -15,6 +15,11 @@ layout("/layouts/platform.html"){
|
||||
<el-option :key="item.code" :label="item.name" :value="item.id" v-for="item in underTakeOptions"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="立案结果">
|
||||
<el-select clearable filterable placeholder="立案结果" v-model="pageForm.caseFilingResult">
|
||||
<el-option :key="item.code" :label="item.label" :value="item.code" v-for="item in dict.type.PROPOSAL_CASE_FILING_RESULT"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
</search>
|
||||
</el-card>
|
||||
|
||||
@@ -42,6 +47,7 @@ layout("/layouts/platform.html"){
|
||||
|
||||
new Vue({
|
||||
el: "#app",
|
||||
dicts: ["PROPOSAL_CASE_FILING_RESULT"],
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
"proposal-info": PROPOSAL_INFO
|
||||
|
||||
+48
-3
@@ -12,6 +12,18 @@ layout("/layouts/platform.html"){
|
||||
v-for="item in sessionOptions"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="代表团">
|
||||
<el-select clearable filterable placeholder="所属代表团" v-model="pageForm.delegationId">
|
||||
<el-option :key="item.id" :label="item.name" :value="item.id"
|
||||
v-for="item in delegationOptions"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="工会">
|
||||
<el-select clearable filterable placeholder="所属工会" v-model="pageForm.unionId">
|
||||
<el-option :key="item.id" :label="item.name" :value="item.id"
|
||||
v-for="item in unionOptions"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="提案名称">
|
||||
<el-input v-model="pageForm.name" placeholder="提案名称" @keyup.enter.native="doSearch" clearable
|
||||
style="width: 100%"></el-input>
|
||||
@@ -149,11 +161,14 @@ layout("/layouts/platform.html"){
|
||||
showApprovalForm: false,
|
||||
replyUnitOptions: [],
|
||||
sessionOptions: [],
|
||||
delegationOptions: [],
|
||||
unionOptions: [],
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.pageData()
|
||||
this.listOpenSession()
|
||||
this.listUnion()
|
||||
},
|
||||
methods: {
|
||||
openView(row) {
|
||||
@@ -179,10 +194,40 @@ layout("/layouts/platform.html"){
|
||||
this.$refs.proposalInfoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
// 教代会
|
||||
async meetingChange(val) {
|
||||
/**
|
||||
* 教代会切换后需要同步刷新代表团下拉,避免上一届次代表团条件残留。
|
||||
*/
|
||||
meetingChange() {
|
||||
this.listDelegation()
|
||||
this.doSearch()
|
||||
},
|
||||
|
||||
/**
|
||||
* 根据当前教代会加载代表团筛选项,没有选教代会时代表团下拉置空。
|
||||
*/
|
||||
listDelegation() {
|
||||
this.delegationOptions = []
|
||||
this.$set(this.pageForm, "delegationId", null)
|
||||
if (!this.pageForm.sessionId) {
|
||||
return
|
||||
}
|
||||
this.$axios.post("/platform/proposal/common/listDelegation", {
|
||||
sessionId: this.pageForm.sessionId
|
||||
}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.delegationOptions = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* 工会下拉按系统分工会列表加载,用于按提案人所属工会筛选当前页面列表。
|
||||
*/
|
||||
listUnion() {
|
||||
this.$businessTool.listUnion().then((res) => {
|
||||
this.unionOptions = res
|
||||
})
|
||||
},
|
||||
// 查询开启的教代会
|
||||
listOpenSession() {
|
||||
this.$axios.post("/platform/proposal/common/listOpenSession").then((res) => {
|
||||
@@ -190,8 +235,8 @@ layout("/layouts/platform.html"){
|
||||
this.sessionOptions = res.data
|
||||
if (this.sessionOptions) {
|
||||
this.$set(this.pageForm, "sessionId", this.sessionOptions[0].id)
|
||||
this.pageData()
|
||||
this.listDelegation()
|
||||
this.pageData()
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
+66
-4
@@ -13,6 +13,18 @@ layout("/layouts/platform.html"){
|
||||
v-for="item in sessionOptions"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="代表团">
|
||||
<el-select clearable filterable placeholder="所属代表团" v-model="pageForm.delegationId">
|
||||
<el-option :key="item.id" :label="item.name" :value="item.id"
|
||||
v-for="item in delegationOptions"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="工会">
|
||||
<el-select clearable filterable placeholder="所属工会" v-model="pageForm.unionId">
|
||||
<el-option :key="item.id" :label="item.name" :value="item.id"
|
||||
v-for="item in unionOptions"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="提案编号">
|
||||
<el-input v-model="pageForm.code" placeholder="提案编号" @keyup.enter.native="doSearch" clearable
|
||||
style="width: 100%"></el-input>
|
||||
@@ -53,7 +65,7 @@ layout("/layouts/platform.html"){
|
||||
<el-radio-button :label="false">未审核</el-radio-button>
|
||||
</el-radio-group>
|
||||
</table-tool>
|
||||
<el-table :data="tableData" @sort-change="pageOrder" ref="tableRef" row-key="id" style="width: 100%">
|
||||
<el-table :data="tableData" @sort-change="pageOrder" ref="tableRef" row-key="id" style="width: 100%" v-loading="tableLoading">
|
||||
<el-table-column type="selection" width="50" fixed="left" v-if="!pageForm.approval"></el-table-column>
|
||||
<el-table-column label="序号" width="50" type="index" :index="indexMethod"
|
||||
fixed="left"></el-table-column>
|
||||
@@ -164,7 +176,7 @@ layout("/layouts/platform.html"){
|
||||
</template>
|
||||
|
||||
<template #public>
|
||||
<merge ref="mergeRef" @close="$refs.guava.index()"></merge>
|
||||
<merge ref="mergeRef" @close="handleMergeClose"></merge>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
@@ -210,6 +222,7 @@ layout("/layouts/platform.html"){
|
||||
showApprovalForm: false,
|
||||
sessionOptions: [],
|
||||
delegationOptions: [],
|
||||
unionOptions: [],
|
||||
underTakeOptions: []
|
||||
}
|
||||
},
|
||||
@@ -316,6 +329,22 @@ layout("/layouts/platform.html"){
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* 并案审核完成后由父页面统一收口处理:
|
||||
* 1. 关闭弹层
|
||||
* 2. 清空左侧勾选框
|
||||
* 3. 刷新父列表,避免仍显示审核前数据
|
||||
*/
|
||||
handleMergeClose() {
|
||||
this.$refs.guava.index()
|
||||
this.$nextTick(() => {
|
||||
if (this.$refs.tableRef) {
|
||||
this.$refs.tableRef.clearSelection()
|
||||
}
|
||||
})
|
||||
this.doSearch()
|
||||
},
|
||||
|
||||
onRevoke(row) {
|
||||
this.$confirm("您确定要撤回吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
@@ -332,11 +361,42 @@ layout("/layouts/platform.html"){
|
||||
})
|
||||
},
|
||||
|
||||
// 教代会
|
||||
async meetingChange(val) {
|
||||
/**
|
||||
* 教代会切换后重新加载当前届次代表团,并清空旧的代表团筛选条件,
|
||||
* 避免跨届次继续沿用旧代表团数据。
|
||||
*/
|
||||
meetingChange() {
|
||||
this.listDelegation()
|
||||
this.doSearch()
|
||||
},
|
||||
|
||||
/**
|
||||
* 代表团下拉按教代会联动查询,没有选教代会时保持空列表。
|
||||
*/
|
||||
listDelegation() {
|
||||
this.delegationOptions = []
|
||||
this.$set(this.pageForm, "delegationId", null)
|
||||
if (!this.pageForm.sessionId) {
|
||||
return
|
||||
}
|
||||
this.$axios.post("/platform/proposal/common/listDelegation", {
|
||||
sessionId: this.pageForm.sessionId
|
||||
}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.delegationOptions = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* 工会下拉按系统分工会列表加载,用于按提案人所属工会筛选当前页面列表。
|
||||
*/
|
||||
listUnion() {
|
||||
this.$businessTool.listUnion().then((res) => {
|
||||
this.unionOptions = res
|
||||
})
|
||||
},
|
||||
|
||||
// 查询开启的教代会
|
||||
listOpenSession() {
|
||||
this.$axios.post("/platform/proposal/common/listOpenSession").then((res) => {
|
||||
@@ -344,6 +404,7 @@ layout("/layouts/platform.html"){
|
||||
this.sessionOptions = res.data
|
||||
if (this.sessionOptions) {
|
||||
this.$set(this.pageForm, "sessionId", this.sessionOptions[0].id)
|
||||
this.listDelegation()
|
||||
this.pageData()
|
||||
}
|
||||
}
|
||||
@@ -362,6 +423,7 @@ layout("/layouts/platform.html"){
|
||||
created() {
|
||||
this.pageData()
|
||||
this.listOpenSession()
|
||||
this.listUnion()
|
||||
this.listUnderTake()
|
||||
}
|
||||
})
|
||||
|
||||
-1
@@ -180,7 +180,6 @@ const merge = {
|
||||
if (res.code === 0) {
|
||||
this.$emit('close')
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
}).finally(() => {
|
||||
loading.close()
|
||||
|
||||
+48
-2
@@ -13,6 +13,18 @@ layout("/layouts/platform.html"){
|
||||
v-for="item in sessionOptions"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="代表团">
|
||||
<el-select clearable filterable placeholder="所属代表团" v-model="pageForm.delegationId">
|
||||
<el-option :key="item.id" :label="item.name" :value="item.id"
|
||||
v-for="item in delegationOptions"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="工会">
|
||||
<el-select clearable filterable placeholder="所属工会" v-model="pageForm.unionId">
|
||||
<el-option :key="item.id" :label="item.name" :value="item.id"
|
||||
v-for="item in unionOptions"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="提案编号">
|
||||
<el-input v-model="pageForm.code" placeholder="提案编号" @keyup.enter.native="doSearch" clearable
|
||||
style="width: 100%"></el-input>
|
||||
@@ -205,6 +217,7 @@ layout("/layouts/platform.html"){
|
||||
showApprovalForm: false,
|
||||
sessionOptions: [],
|
||||
delegationOptions: [],
|
||||
unionOptions: [],
|
||||
underTakeOptions: [],
|
||||
}
|
||||
},
|
||||
@@ -373,11 +386,42 @@ layout("/layouts/platform.html"){
|
||||
})
|
||||
},
|
||||
|
||||
// 教代会
|
||||
async meetingChange(val) {
|
||||
/**
|
||||
* 教代会变更后,按当前届次联动刷新代表团下拉并清空旧值,
|
||||
* 避免查询条件串到其他届次。
|
||||
*/
|
||||
meetingChange() {
|
||||
this.listDelegation()
|
||||
this.doSearch()
|
||||
},
|
||||
|
||||
/**
|
||||
* 根据教代会查询代表团列表,未选教代会时不加载代表团数据。
|
||||
*/
|
||||
listDelegation() {
|
||||
this.delegationOptions = []
|
||||
this.$set(this.pageForm, "delegationId", null)
|
||||
if (!this.pageForm.sessionId) {
|
||||
return
|
||||
}
|
||||
this.$axios.post("/platform/proposal/common/listDelegation", {
|
||||
sessionId: this.pageForm.sessionId
|
||||
}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.delegationOptions = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* 工会下拉按系统分工会列表加载,用于按提案人所属工会筛选当前页面列表。
|
||||
*/
|
||||
listUnion() {
|
||||
this.$businessTool.listUnion().then((res) => {
|
||||
this.unionOptions = res
|
||||
})
|
||||
},
|
||||
|
||||
// 查询开启的教代会
|
||||
listOpenSession() {
|
||||
this.$axios.post("/platform/proposal/common/listOpenSession").then((res) => {
|
||||
@@ -385,6 +429,7 @@ layout("/layouts/platform.html"){
|
||||
this.sessionOptions = res.data
|
||||
if (this.sessionOptions) {
|
||||
this.$set(this.pageForm, "sessionId", this.sessionOptions[0].id)
|
||||
this.listDelegation()
|
||||
this.pageData()
|
||||
}
|
||||
}
|
||||
@@ -403,6 +448,7 @@ layout("/layouts/platform.html"){
|
||||
created() {
|
||||
this.pageData()
|
||||
this.listOpenSession()
|
||||
this.listUnion()
|
||||
this.listUnderTake()
|
||||
}
|
||||
})
|
||||
|
||||
+54
-1
@@ -12,6 +12,18 @@ layout("/layouts/platform.html"){
|
||||
v-for="item in sessionOptions"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="代表团">
|
||||
<el-select clearable filterable placeholder="所属代表团" v-model="pageForm.delegationId">
|
||||
<el-option :key="item.id" :label="item.name" :value="item.id"
|
||||
v-for="item in delegationOptions"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="工会">
|
||||
<el-select clearable filterable placeholder="所属工会" v-model="pageForm.unionId">
|
||||
<el-option :key="item.id" :label="item.name" :value="item.id"
|
||||
v-for="item in unionOptions"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="提案名称">
|
||||
<el-input v-model="pageForm.name" placeholder="提案名称" @keyup.enter.native="doSearch" clearable
|
||||
style="width: 100%"></el-input>
|
||||
@@ -109,12 +121,16 @@ layout("/layouts/platform.html"){
|
||||
pageForm: {
|
||||
approval: false
|
||||
},
|
||||
showApprovalForm: false
|
||||
showApprovalForm: false,
|
||||
sessionOptions: [],
|
||||
delegationOptions: [],
|
||||
unionOptions: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.pageData()
|
||||
this.listOpenSession()
|
||||
this.listUnion()
|
||||
},
|
||||
methods: {
|
||||
openView(row) {
|
||||
@@ -143,12 +159,49 @@ layout("/layouts/platform.html"){
|
||||
this.sessionOptions = res.data
|
||||
if (this.sessionOptions) {
|
||||
this.$set(this.pageForm, "sessionId", this.sessionOptions[0].id)
|
||||
this.listDelegation()
|
||||
this.pageData()
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* 根据当前教代会加载代表团下拉,切换教代会时同步清空已选代表团,
|
||||
* 避免把上一届教代会的代表团条件带到当前查询里。
|
||||
*/
|
||||
listDelegation() {
|
||||
this.delegationOptions = []
|
||||
this.$set(this.pageForm, "delegationId", null)
|
||||
if (!this.pageForm.sessionId) {
|
||||
return
|
||||
}
|
||||
this.$axios.post("/platform/proposal/common/listDelegation", {
|
||||
sessionId: this.pageForm.sessionId
|
||||
}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.delegationOptions = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* 教代会切换后,先联动刷新代表团下拉,再按新的筛选条件重新查询列表。
|
||||
*/
|
||||
meetingChange() {
|
||||
this.listDelegation()
|
||||
this.doSearch()
|
||||
},
|
||||
|
||||
/**
|
||||
* 工会下拉按系统分工会列表加载,用于按提案人所属工会筛选当前页面列表。
|
||||
*/
|
||||
listUnion() {
|
||||
this.$businessTool.listUnion().then((res) => {
|
||||
this.unionOptions = res
|
||||
})
|
||||
},
|
||||
|
||||
handleTaskAction(val) {
|
||||
this.$refs.formRef.validate(valid => {
|
||||
if (!valid) return
|
||||
|
||||
+48
-2
@@ -13,6 +13,18 @@ layout("/layouts/platform.html"){
|
||||
v-for="item in sessionOptions"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="代表团">
|
||||
<el-select clearable filterable placeholder="所属代表团" v-model="pageForm.delegationId">
|
||||
<el-option :key="item.id" :label="item.name" :value="item.id"
|
||||
v-for="item in delegationOptions"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="工会">
|
||||
<el-select clearable filterable placeholder="所属工会" v-model="pageForm.unionId">
|
||||
<el-option :key="item.id" :label="item.name" :value="item.id"
|
||||
v-for="item in unionOptions"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="提案编号">
|
||||
<el-input v-model="pageForm.code" placeholder="提案编号" @keyup.enter.native="doSearch" clearable
|
||||
style="width: 100%"></el-input>
|
||||
@@ -147,6 +159,7 @@ layout("/layouts/platform.html"){
|
||||
showApprovalForm: false,
|
||||
sessionOptions: [],
|
||||
delegationOptions: [],
|
||||
unionOptions: [],
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@@ -242,11 +255,42 @@ layout("/layouts/platform.html"){
|
||||
})
|
||||
},
|
||||
|
||||
// 教代会
|
||||
async meetingChange(val) {
|
||||
/**
|
||||
* 教代会切换时重新联动查询代表团,并清空上一届次已选代表团,
|
||||
* 保证列表始终按当前教代会范围查询。
|
||||
*/
|
||||
meetingChange() {
|
||||
this.listDelegation()
|
||||
this.doSearch()
|
||||
},
|
||||
|
||||
/**
|
||||
* 代表团下拉只展示当前教代会下的数据,未选教代会时保持空列表。
|
||||
*/
|
||||
listDelegation() {
|
||||
this.delegationOptions = []
|
||||
this.$set(this.pageForm, "delegationId", null)
|
||||
if (!this.pageForm.sessionId) {
|
||||
return
|
||||
}
|
||||
this.$axios.post("/platform/proposal/common/listDelegation", {
|
||||
sessionId: this.pageForm.sessionId
|
||||
}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.delegationOptions = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* 工会下拉按系统分工会列表加载,用于按提案人所属工会筛选当前页面列表。
|
||||
*/
|
||||
listUnion() {
|
||||
this.$businessTool.listUnion().then((res) => {
|
||||
this.unionOptions = res
|
||||
})
|
||||
},
|
||||
|
||||
// 查询开启的教代会
|
||||
listOpenSession() {
|
||||
this.$axios.post("/platform/proposal/common/listOpenSession").then((res) => {
|
||||
@@ -254,6 +298,7 @@ layout("/layouts/platform.html"){
|
||||
this.sessionOptions = res.data
|
||||
if (this.sessionOptions) {
|
||||
this.$set(this.pageForm, "sessionId", this.sessionOptions[0].id)
|
||||
this.listDelegation()
|
||||
this.pageData()
|
||||
}
|
||||
}
|
||||
@@ -263,6 +308,7 @@ layout("/layouts/platform.html"){
|
||||
created() {
|
||||
this.pageData()
|
||||
this.listOpenSession()
|
||||
this.listUnion()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
+46
-28
@@ -28,7 +28,8 @@ layout("/layouts/platform.html"){
|
||||
</el-radio-group>
|
||||
</table-tool>
|
||||
<el-table :data="tableData" @sort-change="pageOrder" style="width: 100%">
|
||||
<el-table-column label="序号" width="50" type="index" :index="indexMethod" fixed="left"></el-table-column>
|
||||
<el-table-column label="序号" width="50" type="index" :index="indexMethod"
|
||||
fixed="left"></el-table-column>
|
||||
<el-table-column
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
@@ -54,10 +55,11 @@ layout("/layouts/platform.html"){
|
||||
<el-table-column label="操作" fixed="right" width="300px">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
|
||||
<el-button v-if="row.taskState === 10 || row.count <= 0" @click="openAudit(row)" size="mini" type="primary">附议
|
||||
<el-button v-if="showSecondAction(row)"
|
||||
@click="openAudit(row)" size="mini" type="primary">附议
|
||||
</el-button>
|
||||
<!-- <el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回-->
|
||||
<!-- </el-button>-->
|
||||
<!-- <el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回-->
|
||||
<!-- </el-button>-->
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -68,7 +70,8 @@ layout("/layouts/platform.html"){
|
||||
<proposal-info ref="proposalInfoRef">
|
||||
<div v-if="showApprovalForm">
|
||||
<div class="process-title">
|
||||
{{formData.taskName}}
|
||||
<!-- {{formData.taskName}}-->
|
||||
提案附议
|
||||
</div>
|
||||
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix=":"
|
||||
class="flow-task-form">
|
||||
@@ -77,16 +80,16 @@ layout("/layouts/platform.html"){
|
||||
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row type="flex" justify="end" v-if="row.taskKey ==='second'">
|
||||
<el-row type="flex" justify="end" v-if="row.curTaskCode ==='second'">
|
||||
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
|
||||
<el-button @click="handleTaskAction(20)" size="small" type="danger">不同意</el-button>
|
||||
<el-button @click="handleTaskAction(1)" size="small" type="primary">同意</el-button>
|
||||
</el-row>
|
||||
<el-row type="flex" justify="end" v-else>
|
||||
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
|
||||
<el-button @click="updateSecond(2)" size="small" type="danger">不同意</el-button>
|
||||
<el-button @click="updateSecond(1)" size="small" type="primary">同意</el-button>
|
||||
</el-row>
|
||||
<el-row type="flex" justify="end" v-else>
|
||||
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
|
||||
<el-button @click="updateSecond(2)" size="small" type="danger">不同意</el-button>
|
||||
<el-button @click="updateSecond(1)" size="small" type="primary">同意</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
</proposal-info>
|
||||
</template>
|
||||
@@ -124,6 +127,12 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 附议按钮显示规则:
|
||||
// 1. 当前任务进行中(taskState=10)时显示
|
||||
// 2. 当前任务已废弃(taskState=99)时,仅 invite、second、delegation、committee 节点显示
|
||||
showSecondAction(row) {
|
||||
return row.taskState === 10 || (row.taskState === 99 && ["invite", "second", "delegation", "preAudit", "committee"].includes(row.taskKey))
|
||||
},
|
||||
openView(row) {
|
||||
this.$refs.guava.edit(() => {
|
||||
this.showApprovalForm = false
|
||||
@@ -131,11 +140,13 @@ layout("/layouts/platform.html"){
|
||||
})
|
||||
},
|
||||
openAudit(row) {
|
||||
this.row = row
|
||||
this.row = row
|
||||
this.$refs.guava.edit(() => {
|
||||
this.showApprovalForm = true
|
||||
this.formData = {
|
||||
processTaskId: row.taskId,
|
||||
proposalId: row.id,
|
||||
taskActorUserId: row.taskActorUserId,
|
||||
taskName: row.curTaskName,
|
||||
tf_opinion: "同意该提案"
|
||||
}
|
||||
@@ -151,7 +162,7 @@ layout("/layouts/platform.html"){
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
this.$axios.post("/flow/common/executeTask", {
|
||||
this.$axios.post("/platform/proposal/seconded/executeTask", {
|
||||
data: JSON.stringify({
|
||||
...this.formData,
|
||||
submitType: val
|
||||
@@ -161,27 +172,34 @@ layout("/layouts/platform.html"){
|
||||
this.$refs.guava.index()
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
this.updateSecond(val, false)
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
updateSecond(submitType, flag = true) {
|
||||
this.$axios.post("/platform/proposal/seconded/updateInfo", {
|
||||
proposalId: this.row.id,
|
||||
taskActorUserId: this.row.taskActorUserId,
|
||||
opinion: this.formData.tf_opinion,
|
||||
submitType: submitType,
|
||||
}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
if(flag) this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
},
|
||||
updateSecond(submitType) {
|
||||
this.$confirm("您确定要提交吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
this.$axios.post("/platform/proposal/seconded/updateInfo", {
|
||||
proposalId: this.row.id,
|
||||
taskId: this.row.taskId,
|
||||
taskActorUserId: this.row.taskActorUserId,
|
||||
opinion: this.formData.tf_opinion,
|
||||
submitType: submitType,
|
||||
}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
},
|
||||
|
||||
onRevoke(row) {
|
||||
this.$confirm("您确定要撤回吗?", "提示", {
|
||||
|
||||
+1
-1
@@ -144,7 +144,7 @@ layout("/layouts/platform.html"){
|
||||
</el-button>
|
||||
<!--历史答复内容只允许超级管理员修改,且只在已审核数据中开放入口。-->
|
||||
<el-button v-if="pageForm.approval && row.taskState === 20 && $auth.hasRole('SYSADMIN')"
|
||||
@click="openReplyEdit(row)" size="mini" type="warning">编辑答复
|
||||
@click="openReplyEdit(row)" size="mini" type="primary">编辑答复
|
||||
</el-button>
|
||||
<el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回
|
||||
</el-button>
|
||||
|
||||
+4
@@ -9,6 +9,10 @@ const APPLY_INFO = {
|
||||
<el-descriptions-item label="工号">{{viewData.loginname}}</el-descriptions-item>
|
||||
<el-descriptions-item label="联系方式">{{viewData.mobile}}</el-descriptions-item>
|
||||
<el-descriptions-item label="性别">{{viewData.sex}}</el-descriptions-item>
|
||||
<el-descriptions-item label="基金会员类型">
|
||||
<dict-tag :options="dict.type.AIDFUND_MEMBER_USER_TYPE"
|
||||
:value="viewData.aidFundMemberUserType"></dict-tag>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="入校时间">{{$moment(viewData.arrivalAtSchoolDate).format('YYYY-MM-DD')}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="所在单位">{{viewData.unitName}}</el-descriptions-item>
|
||||
|
||||
+154
-13
@@ -60,6 +60,16 @@ layout("/layouts/platform.html"){
|
||||
|
||||
<el-card shadow="never" class="mt10">
|
||||
<table-tool label="申请记录">
|
||||
<el-button @click="openBatchAudit"
|
||||
:disabled="pageForm.approval===true||pageForm.approval==='true'"
|
||||
size="small"
|
||||
type="primary">批量审核
|
||||
</el-button>
|
||||
<el-button @click="exportApplyRecord"
|
||||
icon="el-icon-download"
|
||||
size="small"
|
||||
type="primary">导出
|
||||
</el-button>
|
||||
<el-radio-group @change="doSearch" class="mr5" size="small" v-model="pageForm.approval">
|
||||
<el-radio-button label="true">已审核</el-radio-button>
|
||||
<el-radio-button label="false">未审核</el-radio-button>
|
||||
@@ -68,6 +78,11 @@ layout("/layouts/platform.html"){
|
||||
|
||||
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
|
||||
ref="table" row-key="id" style="width: 100%">
|
||||
<el-table-column
|
||||
:reserve-selection="true"
|
||||
type="selection"
|
||||
width="55">
|
||||
</el-table-column>
|
||||
<el-table-column :index="indexMethod" header-align="center" label="序号"
|
||||
type="index" width="60px"></el-table-column>
|
||||
<el-table-column
|
||||
@@ -90,19 +105,8 @@ layout("/layouts/platform.html"){
|
||||
:value="row.aidFundMemberUserType"></dict-tag>
|
||||
</template>
|
||||
<template scope="{row}" v-else-if="column.prop=='changeType'">
|
||||
<template v-if="row.changeType==='AIDFUND_MEMBER_CHANGE_TYPE_ONE'">
|
||||
<el-tag type="success">
|
||||
<dict-tag :options="dict.type.AIDFUND_MEMBER_CHANGE_TYPE"
|
||||
:value="row.changeType"></dict-tag>
|
||||
</el-tag>
|
||||
</template>
|
||||
<template v-else>
|
||||
<el-tag type="danger">
|
||||
<dict-tag :options="dict.type.AIDFUND_MEMBER_CHANGE_TYPE"
|
||||
:value="row.changeType"></dict-tag>
|
||||
</el-tag>
|
||||
</template>
|
||||
|
||||
<dict-tag :options="dict.type.AIDFUND_MEMBER_CHANGE_TYPE"
|
||||
:value="row.changeType"></dict-tag>
|
||||
</template>
|
||||
<template scope="{row}" v-else-if="column.prop=='money'">
|
||||
<template v-if="row.changeType==='AIDFUND_MEMBER_CHANGE_TYPE_ONE'">
|
||||
@@ -124,6 +128,43 @@ layout("/layouts/platform.html"){
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
|
||||
<el-dialog
|
||||
:visible.sync="batchAuditVisible"
|
||||
title="批量审核"
|
||||
width="40%">
|
||||
<el-form :model="batchForm" :rules="batchFormRules" label-width="100px" ref="batchFormRef">
|
||||
<el-form-item label="审核状态" prop="submitType">
|
||||
<el-radio-group v-model="batchForm.submitType">
|
||||
<el-radio-button :label="2">拒绝</el-radio-button>
|
||||
<el-radio-button :label="1">通过</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="审核名单">
|
||||
<el-table :data="batchAuditTableData" row-key="id" style="width: 100%" max-height="300">
|
||||
<el-table-column label="姓名" prop="userName" min-width="100"></el-table-column>
|
||||
<el-table-column label="工号" prop="loginName" min-width="120"></el-table-column>
|
||||
<el-table-column label="单位" prop="unitName" min-width="140" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="入校时间" prop="arrivalAtSchoolDate" min-width="110"></el-table-column>
|
||||
<el-table-column label="缴费金额" prop="money" min-width="100"></el-table-column>
|
||||
</el-table>
|
||||
</el-form-item>
|
||||
<el-alert
|
||||
:closable="false"
|
||||
class="mb10"
|
||||
title="批量通过时,将按人员当前入校时间自动提交;缺少入校时间的记录会审核失败。"
|
||||
type="warning"
|
||||
v-if="batchForm.submitType===1">
|
||||
</el-alert>
|
||||
<el-form-item label="审批意见" prop="tf_opinion">
|
||||
<user-opinion-textarea v-model="batchForm.tf_opinion"></user-opinion-textarea>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span class="dialog-footer" slot="footer">
|
||||
<el-button @click="batchAuditVisible = false">取 消</el-button>
|
||||
<el-button @click="submitBatchAudit" type="primary">提 交</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
<template #edit>
|
||||
<info ref="infoRef">
|
||||
<div v-if="showApprovalForm">
|
||||
@@ -202,12 +243,27 @@ layout("/layouts/platform.html"){
|
||||
{prop: "unitName", label: "所属单位"},
|
||||
{prop: "unionName", label: "所属工会"},
|
||||
{prop: "aidFundMemberUserType", label: "基金会员类型"},
|
||||
{prop: "money", label: "缴费金额"},
|
||||
{prop: "changeType", label: "变更类型"},
|
||||
{prop: "applyTime", label: "申请日期"},
|
||||
{prop: "curTaskName", label: "当前节点"},
|
||||
{prop: "instanceState", label: "流程状态"}
|
||||
],
|
||||
showApprovalForm: false,
|
||||
batchAuditVisible: false,
|
||||
batchAuditTableData: [],
|
||||
batchForm: {
|
||||
submitType: 1,
|
||||
tf_opinion: ""
|
||||
},
|
||||
batchFormRules: {
|
||||
submitType: [
|
||||
{required: true, message: "必填", trigger: ["change", "blur"]}
|
||||
],
|
||||
tf_opinion: [
|
||||
{required: true, message: "必填", trigger: ["change", "blur"]}
|
||||
]
|
||||
},
|
||||
unionOptions: [],
|
||||
unitOptions: [],
|
||||
pickerOptions: {
|
||||
@@ -221,6 +277,91 @@ layout("/layouts/platform.html"){
|
||||
'info': APPLY_INFO,
|
||||
},
|
||||
methods: {
|
||||
openBatchAudit() {
|
||||
const selection = this.$refs.table.selection
|
||||
if (!selection || selection.length === 0) {
|
||||
this.$message.warning("请先勾选需要审核的记录")
|
||||
return
|
||||
}
|
||||
this.$set(this, "batchForm", {
|
||||
submitType: 1,
|
||||
tf_opinion: ""
|
||||
})
|
||||
this.$set(this, "batchAuditTableData", selection.map(row => {
|
||||
return {
|
||||
id: row.id,
|
||||
userName: row.userName,
|
||||
loginName: row.loginName,
|
||||
unitName: row.unitName,
|
||||
arrivalAtSchoolDate: row.arrivalAtSchoolDate,
|
||||
money: row.money
|
||||
}
|
||||
}))
|
||||
this.$set(this, "batchAuditVisible", true)
|
||||
this.$nextTick(() => {
|
||||
if (this.$refs.batchFormRef) {
|
||||
this.$refs.batchFormRef.clearValidate()
|
||||
}
|
||||
})
|
||||
},
|
||||
submitBatchAudit() {
|
||||
const selection = this.$refs.table.selection
|
||||
if (!selection || selection.length === 0) {
|
||||
this.$message.warning("请先勾选需要审核的记录")
|
||||
return
|
||||
}
|
||||
this.$refs.batchFormRef.validate((valid) => {
|
||||
if (!valid) {
|
||||
return
|
||||
}
|
||||
let message = "确定要审核这 " + selection.length + " 条记录吗?"
|
||||
const joinCount = selection.filter(row => row.changeType === "AIDFUND_MEMBER_CHANGE_TYPE_ONE").length
|
||||
if (this.batchForm.submitType === 1 && joinCount > 0) {
|
||||
message = "确定要批量通过这 " + selection.length + " 条记录吗?其中有 " + joinCount + " 条加入基金记录将按当前人员入校时间自动审核。"
|
||||
}
|
||||
this.$confirm(message, "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
const ids = selection.map(row => row.id)
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: "正在批量审核...",
|
||||
spinner: "el-icon-loading",
|
||||
background: "rgba(0, 0, 0, 0.7)"
|
||||
})
|
||||
this.$axios.post("/platform/medicalMutualAid/aidFund/foundationAudit/batchExecuteTask", {
|
||||
ids: JSON.stringify(ids),
|
||||
data: JSON.stringify(this.batchForm)
|
||||
}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
const result = res.data || {}
|
||||
const successCount = result.successCount || 0
|
||||
const failCount = result.failCount || 0
|
||||
const failMessages = result.failMessages || []
|
||||
if (failCount > 0) {
|
||||
let failText = failMessages.slice(0, 3).join(";")
|
||||
if (failMessages.length > 3) {
|
||||
failText = failText + ";其余记录请查看列表后重试"
|
||||
}
|
||||
this.$message.warning("批量审核完成:成功 " + successCount + " 条,失败 " + failCount + " 条。" + failText)
|
||||
} else {
|
||||
this.$message.success("批量审核完成:成功 " + successCount + " 条")
|
||||
}
|
||||
this.$set(this, "batchAuditVisible", false)
|
||||
this.doSearch()
|
||||
this.$refs.table.clearSelection()
|
||||
}
|
||||
}).finally(() => {
|
||||
loading.close()
|
||||
})
|
||||
})
|
||||
})
|
||||
},
|
||||
exportApplyRecord() {
|
||||
this.$downLoad("/platform/medicalMutualAid/aidFund/foundationAudit/exportApplyRecord", this.pageForm)
|
||||
},
|
||||
getPayMoney() {
|
||||
this.$axios.post('/platform/medicalMutualAid/aidFund/foundationAudit/getPayMoney', {
|
||||
arrivalAtSchoolDate: this.formData.arrivalAtSchoolDate,
|
||||
|
||||
+8
@@ -56,6 +56,11 @@ layout("/layouts/platform.html"){
|
||||
批量变更
|
||||
</el-button>
|
||||
|
||||
<el-button @click="exportMemberList" icon="el-icon-download" size="small" type="primary"
|
||||
v-if="$auth.hasPermission('medicalMutualAid.aidFund.manage')">
|
||||
导出会员名单
|
||||
</el-button>
|
||||
|
||||
<el-button @click="exportNewMember" icon="el-icon-download" size="small" type="primary"
|
||||
v-if="$auth.hasPermission('medicalMutualAid.aidFund.manage.exportNewMember')" class="mr10">
|
||||
导出{{new
|
||||
@@ -448,6 +453,9 @@ layout("/layouts/platform.html"){
|
||||
exportNewMember() {
|
||||
this.$downLoad(loc() + "/exportNewMember")
|
||||
},
|
||||
exportMemberList() {
|
||||
this.$downLoad(loc() + "/exportMemberList", this.pageForm)
|
||||
},
|
||||
getYearOptions() {
|
||||
let year = new Date().getFullYear();
|
||||
let arr = []
|
||||
|
||||
+1
@@ -534,6 +534,7 @@ layout("/layouts/platform.html"){
|
||||
} else {
|
||||
await this.createRemoteMethod(this.$store.state.user.id)
|
||||
this.$set(this.formData, 'sex', this.$store.state.user.sex)
|
||||
this.$set(this.formData, 'userName', this.$store.state.user.username)
|
||||
if (this.$store.state.user.birthday) {
|
||||
this.$set(this.formData, 'age', this.$moment().diff(this.$store.state.user.birthday, 'years'))
|
||||
}
|
||||
|
||||
+11
@@ -216,6 +216,7 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
|
||||
//申请费用总额
|
||||
applyLoveSum() {
|
||||
const {applySum, loveSubsidyMoney} = this.calcData
|
||||
@@ -244,6 +245,16 @@ layout("/layouts/platform.html"){
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
async grantOrIntoChange(key, val) {
|
||||
if (val === '') {
|
||||
if (key === 'grants') {
|
||||
this.calcData.schoolGrants = 0
|
||||
} else if (key === 'into') {
|
||||
this.calcData.unionInto = 0
|
||||
}
|
||||
}
|
||||
const resp = await this.$axios.post(loc() + '/setGrantsOrUnionInto', {keys: key, value: val})
|
||||
},
|
||||
getSummaries(param) {
|
||||
const {columns, data} = param
|
||||
const sums = []
|
||||
|
||||
+418
@@ -0,0 +1,418 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
.medical-dashboard {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
grid-template-rows: 180px 1fr 1fr;
|
||||
gap: 20px;
|
||||
width: 100%;
|
||||
min-height: calc(100vh - 126px);
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.dashboard-card {
|
||||
background: #ffffff;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
border: 1px solid #eef1f6;
|
||||
}
|
||||
|
||||
.dashboard-title {
|
||||
padding: 16px 20px 8px;
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
color: #333333;
|
||||
border-bottom: 1px solid #f0f2f5;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.overview-card {
|
||||
padding: 20px;
|
||||
box-sizing: border-box;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.overview-label {
|
||||
font-size: 14px;
|
||||
color: #7a7f87;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.overview-value {
|
||||
font-size: 34px;
|
||||
font-weight: 700;
|
||||
color: #1f6f5f;
|
||||
line-height: 1.2;
|
||||
margin-top: 18px;
|
||||
}
|
||||
|
||||
.overview-sub {
|
||||
font-size: 13px;
|
||||
color: #949aa3;
|
||||
line-height: 1.6;
|
||||
margin-top: auto;
|
||||
}
|
||||
|
||||
.wide-panel {
|
||||
grid-column: span 2;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
.full-panel {
|
||||
grid-column: 1 / -1;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
.chart-panel {
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
.table-panel {
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
.panel-body {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
padding: 12px 16px 16px;
|
||||
}
|
||||
|
||||
.chart-box {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
min-height: 260px;
|
||||
}
|
||||
|
||||
.money-text {
|
||||
color: #cf6a32;
|
||||
}
|
||||
|
||||
@media (max-width: 1400px) {
|
||||
.medical-dashboard {
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
grid-template-rows: repeat(2, 180px) auto auto auto;
|
||||
}
|
||||
|
||||
.wide-panel {
|
||||
grid-column: span 2;
|
||||
}
|
||||
|
||||
.full-panel {
|
||||
grid-column: 1 / -1;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.medical-dashboard {
|
||||
grid-template-columns: 1fr;
|
||||
grid-template-rows: repeat(4, 160px) auto auto auto;
|
||||
gap: 15px;
|
||||
}
|
||||
|
||||
.wide-panel {
|
||||
grid-column: span 1;
|
||||
}
|
||||
|
||||
.full-panel {
|
||||
grid-column: span 1;
|
||||
}
|
||||
|
||||
.overview-value {
|
||||
font-size: 28px;
|
||||
}
|
||||
|
||||
.chart-box {
|
||||
min-height: 220px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<div class="medical-dashboard">
|
||||
<div class="dashboard-card overview-card" v-loading="loading.overview">
|
||||
<div class="overview-label">基金会员总数</div>
|
||||
<div class="overview-value">{{ overview.fundMemberCount || 0 }}</div>
|
||||
<div class="overview-sub">
|
||||
本年度申请数:{{ overview.currentYearApplyCount || 0 }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="dashboard-card overview-card" v-loading="loading.overview">
|
||||
<div class="overview-label">重疾 / 普疾申请数</div>
|
||||
<div class="overview-value">{{ overview.majorDiseaseApplyCount || 0 }} / {{ overview.commonDiseaseApplyCount || 0 }}</div>
|
||||
<div class="overview-sub">
|
||||
统计口径:流程已办结
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="dashboard-card overview-card" v-loading="loading.overview">
|
||||
<div class="overview-label">补助金额合计</div>
|
||||
<div class="overview-value money-text">{{ formatMoney(overview.totalSubsidyMoney) }}</div>
|
||||
<div class="overview-sub">
|
||||
单位:元
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="dashboard-card overview-card" v-loading="loading.overview">
|
||||
<div class="overview-label">爱心基金合计</div>
|
||||
<div class="overview-value money-text">{{ formatMoney(overview.totalLoveSubsidyMoney) }}</div>
|
||||
<div class="overview-sub">
|
||||
单位:元
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="dashboard-card wide-panel table-panel">
|
||||
<div class="dashboard-title">各工会医疗互助统计表</div>
|
||||
<div class="panel-body" v-loading="loading.unionStat">
|
||||
<el-table
|
||||
:data="unionTableData"
|
||||
:header-cell-style="{background:'#FAFAFA'}"
|
||||
height="100%"
|
||||
style="width: 100%">
|
||||
<el-table-column type="index" label="序号" width="70" align="center"></el-table-column>
|
||||
<el-table-column prop="unionName" label="工会名称" min-width="180" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column prop="applyCount" label="申请数" width="100" align="center"></el-table-column>
|
||||
<el-table-column label="补助金额" min-width="140" align="right">
|
||||
<template slot-scope="{row}">
|
||||
{{ formatMoney(row.subsidyMoney) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="dashboard-card wide-panel chart-panel">
|
||||
<div class="dashboard-title">在职状态分布</div>
|
||||
<div class="panel-body" v-loading="loading.userStateStat">
|
||||
<div id="userStateChart" class="chart-box"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="dashboard-card full-panel chart-panel">
|
||||
<div class="dashboard-title">人员类型统计</div>
|
||||
<div class="panel-body" v-loading="loading.personTypeStat">
|
||||
<div id="personTypeChart" class="chart-box"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="dashboard-card full-panel">
|
||||
<div class="dashboard-title">疾病类型统计</div>
|
||||
<div class="panel-body" v-loading="loading.diseaseTypeStat">
|
||||
<div id="diseaseTypeChart" class="chart-box"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script nonce="${cspNonce!}">
|
||||
const chartMap = {
|
||||
userStateChart: null,
|
||||
personTypeChart: null,
|
||||
diseaseTypeChart: null
|
||||
}
|
||||
|
||||
new Vue({
|
||||
el: "#app",
|
||||
data() {
|
||||
return {
|
||||
loading: {
|
||||
overview: false,
|
||||
unionStat: false,
|
||||
userStateStat: false,
|
||||
personTypeStat: false,
|
||||
diseaseTypeStat: false
|
||||
},
|
||||
overview: {
|
||||
fundMemberCount: 0,
|
||||
currentYearApplyCount: 0,
|
||||
majorDiseaseApplyCount: 0,
|
||||
commonDiseaseApplyCount: 0,
|
||||
totalSubsidyMoney: 0,
|
||||
totalLoveSubsidyMoney: 0
|
||||
},
|
||||
unionTableData: [],
|
||||
userStateData: [],
|
||||
personTypeData: [],
|
||||
diseaseTypeData: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
formatMoney(value) {
|
||||
if (value === null || value === undefined || value === "") {
|
||||
return "0.00"
|
||||
}
|
||||
const num = Number(value)
|
||||
if (isNaN(num)) {
|
||||
return "0.00"
|
||||
}
|
||||
return num.toFixed(2)
|
||||
},
|
||||
getOverview() {
|
||||
this.$set(this.loading, "overview", true)
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/dashboard/overview").then((res) => {
|
||||
this.$set(this.loading, "overview", false)
|
||||
if (res.code === 0) {
|
||||
this.$set(this, "overview", res.data || {})
|
||||
} else {
|
||||
this.$message.warning(res.msg)
|
||||
}
|
||||
})
|
||||
},
|
||||
getUnionStat() {
|
||||
this.$set(this.loading, "unionStat", true)
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/dashboard/unionStat").then((res) => {
|
||||
this.$set(this.loading, "unionStat", false)
|
||||
if (res.code === 0) {
|
||||
const tableData = res.data && res.data.tableData ? res.data.tableData : []
|
||||
this.$set(this, "unionTableData", tableData)
|
||||
} else {
|
||||
this.$message.warning(res.msg)
|
||||
}
|
||||
})
|
||||
},
|
||||
getUserStateStat() {
|
||||
this.$set(this.loading, "userStateStat", true)
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/dashboard/userStateStat").then((res) => {
|
||||
this.$set(this.loading, "userStateStat", false)
|
||||
if (res.code === 0) {
|
||||
this.$set(this, "userStateData", res.data || [])
|
||||
this.renderUserStateChart()
|
||||
} else {
|
||||
this.$message.warning(res.msg)
|
||||
}
|
||||
})
|
||||
},
|
||||
getPersonTypeStat() {
|
||||
this.$set(this.loading, "personTypeStat", true)
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/dashboard/personTypeStat").then((res) => {
|
||||
this.$set(this.loading, "personTypeStat", false)
|
||||
if (res.code === 0) {
|
||||
this.$set(this, "personTypeData", res.data || [])
|
||||
this.renderPersonTypeChart()
|
||||
} else {
|
||||
this.$message.warning(res.msg)
|
||||
}
|
||||
})
|
||||
},
|
||||
getDiseaseTypeStat() {
|
||||
this.$set(this.loading, "diseaseTypeStat", true)
|
||||
this.$axios.post("/platform/medicalMutualAid/medical/dashboard/diseaseTypeStat").then((res) => {
|
||||
this.$set(this.loading, "diseaseTypeStat", false)
|
||||
if (res.code === 0) {
|
||||
this.$set(this, "diseaseTypeData", res.data || [])
|
||||
this.renderDiseaseTypeChart()
|
||||
} else {
|
||||
this.$message.warning(res.msg)
|
||||
}
|
||||
})
|
||||
},
|
||||
renderUserStateChart() {
|
||||
if (chartMap.userStateChart) {
|
||||
chartMap.userStateChart.destroy()
|
||||
}
|
||||
chartMap.userStateChart = new G2Plot.Pie("userStateChart", {
|
||||
data: this.userStateData,
|
||||
angleField: "applyCount",
|
||||
colorField: "name",
|
||||
radius: 0.85,
|
||||
label: {
|
||||
type: "outer",
|
||||
content: "{name} {percentage}"
|
||||
},
|
||||
legend: {
|
||||
position: "bottom"
|
||||
},
|
||||
color: ["#1f6f5f", "#f59f45", "#5b8ff9", "#9270ca"]
|
||||
})
|
||||
chartMap.userStateChart.render()
|
||||
},
|
||||
renderPersonTypeChart() {
|
||||
if (chartMap.personTypeChart) {
|
||||
chartMap.personTypeChart.destroy()
|
||||
}
|
||||
chartMap.personTypeChart = new G2Plot.Column("personTypeChart", {
|
||||
data: this.personTypeData,
|
||||
autoFit: true,
|
||||
xField: "name",
|
||||
yField: "applyCount",
|
||||
color: "#4e8f81",
|
||||
columnStyle: {
|
||||
radius: [6, 6, 0, 0]
|
||||
},
|
||||
label: {
|
||||
position: "top",
|
||||
style: {
|
||||
fill: "#1f2d3d"
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
label: {
|
||||
autoHide: true,
|
||||
autoRotate: false
|
||||
}
|
||||
},
|
||||
meta: {
|
||||
name: {
|
||||
alias: "人员类型"
|
||||
},
|
||||
applyCount: {
|
||||
alias: "申请数"
|
||||
}
|
||||
}
|
||||
})
|
||||
chartMap.personTypeChart.render()
|
||||
},
|
||||
renderDiseaseTypeChart() {
|
||||
if (chartMap.diseaseTypeChart) {
|
||||
chartMap.diseaseTypeChart.destroy()
|
||||
}
|
||||
chartMap.diseaseTypeChart = new G2Plot.Bar("diseaseTypeChart", {
|
||||
data: this.diseaseTypeData,
|
||||
autoFit: true,
|
||||
xField: "applyCount",
|
||||
yField: "name",
|
||||
legend: false,
|
||||
color: "#cf6a32",
|
||||
barStyle: {
|
||||
radius: [0, 6, 6, 0]
|
||||
},
|
||||
label: {
|
||||
position: "right",
|
||||
style: {
|
||||
fill: "#1f2d3d"
|
||||
}
|
||||
},
|
||||
meta: {
|
||||
name: {
|
||||
alias: "疾病类型"
|
||||
},
|
||||
applyCount: {
|
||||
alias: "申请数"
|
||||
}
|
||||
}
|
||||
})
|
||||
chartMap.diseaseTypeChart.render()
|
||||
},
|
||||
initData() {
|
||||
this.getOverview()
|
||||
this.getUnionStat()
|
||||
this.getUserStateStat()
|
||||
this.getPersonTypeStat()
|
||||
this.getDiseaseTypeStat()
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.initData()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
+48
-8
@@ -38,20 +38,21 @@ layout("/layouts/platform_h5.html"){
|
||||
<i class="fa fa-eye"></i>
|
||||
<span>查看</span>
|
||||
</div>
|
||||
<div class="action-btn" v-if="row.taskState === 10" @click="onApproval(row)">
|
||||
<div class="action-btn" v-if="showSecondAction(row)" @click="onApproval(row)">
|
||||
<i class="fa fa-edit"></i>
|
||||
<span>附议</span>
|
||||
</div>
|
||||
<!-- <div class="action-btn delete" v-if="row.canRevoke" @click="onRevoke(row)">-->
|
||||
<!-- <i class="fa fa-reply"></i>-->
|
||||
<!-- <span>撤回</span>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="action-btn delete" v-if="row.canRevoke" @click="onRevoke(row)">-->
|
||||
<!-- <i class="fa fa-reply"></i>-->
|
||||
<!-- <span>撤回</span>-->
|
||||
<!-- </div>-->
|
||||
</template>
|
||||
</table-list>
|
||||
|
||||
<proposal-info ref="proposalInfoRef">
|
||||
<div v-if="showApprovalForm">
|
||||
<div class="process-title">{{formData.taskName}}</div>
|
||||
<div class="process-title">提案附议</div>
|
||||
<!-- <div class="process-title">{{formData.taskName}}</div>-->
|
||||
<van-form ref="formRef">
|
||||
<van-field
|
||||
v-model="formData.tf_opinion"
|
||||
@@ -67,10 +68,15 @@ layout("/layouts/platform_h5.html"){
|
||||
<!-- <h5-signature v-model="formData.approvalSignature" slot="input"></h5-signature>-->
|
||||
<!-- </van-field>-->
|
||||
</van-form>
|
||||
<div style="display: flex; justify-content: space-between; column-gap: 10px; padding: 10px">
|
||||
<div v-if="row && row.curTaskCode === 'second'"
|
||||
style="display: flex; justify-content: space-between; column-gap: 10px; padding: 10px">
|
||||
<van-button type="danger" block @click="handleTaskAction(20)">不同意</van-button>
|
||||
<van-button type="primary" block @click="handleTaskAction(1)">同意</van-button>
|
||||
</div>
|
||||
<div v-else style="display: flex; justify-content: space-between; column-gap: 10px; padding: 10px">
|
||||
<van-button type="danger" block @click="updateSecond(2)">不同意</van-button>
|
||||
<van-button type="primary" block @click="updateSecond(1)">同意</van-button>
|
||||
</div>
|
||||
</div>
|
||||
</proposal-info>
|
||||
|
||||
@@ -94,6 +100,7 @@ layout("/layouts/platform_h5.html"){
|
||||
},
|
||||
|
||||
sessionOptions: [],
|
||||
row: null,
|
||||
formData: {},
|
||||
showApprovalForm: false,
|
||||
rules: {
|
||||
@@ -105,6 +112,12 @@ layout("/layouts/platform_h5.html"){
|
||||
"proposal-info": PROPOSAL_INFO
|
||||
},
|
||||
methods: {
|
||||
// 附议按钮显示规则:
|
||||
// 1. 当前任务进行中(taskState=10)时显示
|
||||
// 2. 当前任务已废弃(taskState=99)时,仅 invite、second、delegation、committee 节点显示
|
||||
showSecondAction(row) {
|
||||
return row.taskState === 10 || (row.taskState === 99 && ["invite", "second", "preAudit", "delegation", "committee"].includes(row.taskKey))
|
||||
},
|
||||
onReady() {
|
||||
this.listSession()
|
||||
},
|
||||
@@ -131,10 +144,14 @@ layout("/layouts/platform_h5.html"){
|
||||
},
|
||||
|
||||
onApproval(row) {
|
||||
this.row = row
|
||||
this.showApprovalForm = true
|
||||
this.$refs.proposalInfoRef.onOpen(row)
|
||||
this.formData = {
|
||||
processTaskId: row.taskId,
|
||||
taskId: row.taskId,
|
||||
proposalId: row.id,
|
||||
taskActorUserId: row.taskActorUserId,
|
||||
taskName: row.curTaskName,
|
||||
tf_opinion: "同意该提案"
|
||||
}
|
||||
@@ -147,7 +164,7 @@ layout("/layouts/platform_h5.html"){
|
||||
title: "提示",
|
||||
message: "您确定要提交吗?"
|
||||
}).then(() => {
|
||||
this.$axios.post("/flow/common/executeTask", {
|
||||
this.$axios.post("/platform/proposal/seconded/executeTask", {
|
||||
data: JSON.stringify({
|
||||
...this.formData,
|
||||
submitType: val
|
||||
@@ -167,6 +184,29 @@ layout("/layouts/platform_h5.html"){
|
||||
}
|
||||
},
|
||||
|
||||
updateSecond(submitType) {
|
||||
this.$dialog.confirm({
|
||||
title: "提示",
|
||||
message: "您确定要提交吗?"
|
||||
}).then(() => {
|
||||
this.$axios.post("/platform/proposal/seconded/updateInfo", {
|
||||
proposalId: this.formData.proposalId,
|
||||
taskId: this.formData.taskId,
|
||||
taskActorUserId: this.formData.taskActorUserId,
|
||||
opinion: this.formData.tf_opinion,
|
||||
submitType: submitType,
|
||||
}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$refs.proposalInfoRef.onClose()
|
||||
this.$toast.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
}).catch(() => {
|
||||
|
||||
})
|
||||
},
|
||||
|
||||
doSearch() {
|
||||
this.$nextTick(() => {
|
||||
this.pageForm.pageNumber = 1
|
||||
|
||||
+4
-2
@@ -225,7 +225,7 @@ layout("/layouts/platform_h5.html"){
|
||||
></van-picker>
|
||||
</van-popup>
|
||||
|
||||
<van-field
|
||||
<!-- <van-field
|
||||
:value="formData.suggestUnits.length > 0 ? formData.suggestUnits.join(', ') : ''"
|
||||
is-link
|
||||
readonly
|
||||
@@ -235,7 +235,7 @@ layout("/layouts/platform_h5.html"){
|
||||
@click="showSuggestionUnitPicker = true"
|
||||
:rules="[{ required: true, message: '请选择建议承办单位' }]"
|
||||
required
|
||||
></van-field>
|
||||
></van-field>-->
|
||||
<van-popup v-model="showSuggestionUnitPicker" position="bottom" :style="{ height: '70%' }">
|
||||
<div class="suggestion-unit-picker">
|
||||
<!-- 头部工具栏 -->
|
||||
@@ -719,6 +719,8 @@ layout("/layouts/platform_h5.html"){
|
||||
if (this.bizId) {
|
||||
this.$axios.post("/platform/proposal/write/detail", {id: this.bizId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
res.data.brief=removeHTMLTag(res.data.brief)
|
||||
res.data.measures=removeHTMLTag(res.data.measures)
|
||||
this.formData = res.data;
|
||||
this.listOpenSession(true);
|
||||
}
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ layout("/layouts/platform_h5.html"){
|
||||
<i class="fa fa-mail-forward"></i>
|
||||
<span>提交</span>
|
||||
</div>
|
||||
<div class="action-btn delete" @click="onDelete(row)"
|
||||
<div class="action-btn delete" @click="onDelete(row.id)"
|
||||
v-if="row.taskKey === 'startTask' || !row.instanceId">
|
||||
<i class="fa fa-trash"></i>
|
||||
<span>删除</span>
|
||||
|
||||
Reference in New Issue
Block a user