commit
This commit is contained in:
@@ -1,211 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<template>
|
||||
<proposal-search :audit="false" :page="pageForm" @finished="searchFinished"
|
||||
@search="doSearch"></proposal-search>
|
||||
|
||||
<el-card class="mt10" shadow="never">
|
||||
<table-tool :app="this" label="提案重新归类"></table-tool>
|
||||
<el-table :data="tableData" :size="tableSize" :tree-props="{children: 'children'}"
|
||||
@sort-change="pageOrder"
|
||||
align="center"
|
||||
header-align="center" row-key="replyId">
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index" width="80">
|
||||
<template scope="scope">
|
||||
<span>{{ scope.$index + (pageForm.pageNumber - 1) * pageForm.pageSize + 1 }} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
:align="column.align?column.align:'center'"
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
:width="column.width"
|
||||
header-align="center"
|
||||
show-overflow-tooltip
|
||||
v-for="column in tableColumns"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="操作" fixed="right" width="200px">
|
||||
<template scope="{row}">
|
||||
<el-button size="mini" @click="openView(row)">查看</el-button>
|
||||
<el-button size="mini" type="primary" @click="openEdit(row)">修改
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
<template #view>
|
||||
<proposal-info ref="info"></proposal-info>
|
||||
</template>
|
||||
|
||||
<template #edit>
|
||||
<el-form :model="formData" :rules="formRules" label-width="120px" ref="form">
|
||||
<el-row :gutter="20" type="flex">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="代表姓名" prop="username">
|
||||
<el-input disabled type="text" v-model="formData.username"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="提案时间" prop="createTime">
|
||||
<el-input disabled type="text" v-model="formData.createTime"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20" type="flex">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="提案名称" prop="proposalName">
|
||||
<el-input maxlength="100" placeholder="提案名称"
|
||||
v-model="formData.proposalName"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="撰写提案方式" prop="mannerName">
|
||||
<el-input v-model="formData.mannerName" disabled></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item class="is-required" label="案  由" prop="brief">
|
||||
<div id="briefEditor"></div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item class="is-required" label="建议措施" prop="measures">
|
||||
<div id="measuresEditor"></div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row type="flex" justify="end">
|
||||
<el-button @click="$refs.guava.index()">取消</el-button>
|
||||
<el-button type="primary" @click="doConfirm">确定</el-button>
|
||||
</el-row>
|
||||
|
||||
</template>
|
||||
</guava>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
let briefEditor, measuresEditor = null
|
||||
var vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.0'),
|
||||
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue'),
|
||||
'proposal-search': httpVueLoader('/components/proposal/ProposalSearch.vue'),
|
||||
'proposal-table': httpVueLoader('/components/proposal/ProposalTable.vue'),
|
||||
},
|
||||
data() {
|
||||
|
||||
const validBrief = (rule, value, callback) => {
|
||||
if (!this.formData.brief || !removeHTMLTag(this.formData.brief)) {
|
||||
callback(new Error('请填写提案内容、案由和案据'));
|
||||
} else if (removeHTMLTag(this.formData.brief).length < this.config.words) {
|
||||
callback(new Error('提案内容至少需要' + this.config.words + '字'));
|
||||
// callback();
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
const validMeasures = (rule, value, callback) => {
|
||||
if (!this.formData.measures || !removeHTMLTag(this.formData.measures)) {
|
||||
callback(new Error('请填写提案实施的可行性建议'));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
return {
|
||||
tableColumns: [
|
||||
{prop: 'proposalCode', label: '提案编号', width: "120", sortable: true, disabled: true},
|
||||
{prop: 'proposalName', label: '提案名称', width: "300", disabled: true},
|
||||
{prop: 'username', label: '提案人', disabled: true},
|
||||
{prop: 'typeCode', label: '提案类型编码', sortable: true, checked: 0},
|
||||
{prop: 'typeName', label: '提案类型', sortable: true},
|
||||
{prop: 'meetingName', label: '届次', sortable: true},
|
||||
{prop: 'delegationCode', label: '代表团编码', sortable: true, checked: 0},
|
||||
{prop: 'delegationName', label: '代表团', sortable: true},
|
||||
{prop: 'stateName', label: '提案状态', sortable: true}
|
||||
],
|
||||
pageForm: {searchName: 'proposalName', meetingId: ''},
|
||||
formRules: {
|
||||
proposalName: [{required: true, message: '请填写提案名称', trigger: ['blur', 'change']}],
|
||||
brief: [{validator: validBrief, trigger: ['blur', 'change']}],
|
||||
measures: [{validator: validMeasures, trigger: ['blur', 'change']}],
|
||||
},
|
||||
formData: {},
|
||||
config: {}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
searchFinished() {
|
||||
this.pageData()
|
||||
},
|
||||
openView(row) {
|
||||
this.$refs.guava.view()
|
||||
this.$refs.info.openView(row.id)
|
||||
},
|
||||
openEdit(row) {
|
||||
this.formData = clone(row)
|
||||
this.$refs.guava.edit()
|
||||
this.$nextTick(() => {
|
||||
$("#briefEditor").html("")
|
||||
$("#measuresEditor").html("")
|
||||
|
||||
briefEditor = new wangEditor("#briefEditor")
|
||||
briefEditor.config.onchange = (html) => {
|
||||
this.formData.brief = html
|
||||
}
|
||||
measuresEditor = new wangEditor("#measuresEditor")
|
||||
measuresEditor.config.onchange = (html) => {
|
||||
this.formData.measures = html
|
||||
}
|
||||
briefEditor.create()
|
||||
measuresEditor.create()
|
||||
|
||||
briefEditor.txt.html(row.brief)
|
||||
measuresEditor.txt.html(row.measures)
|
||||
})
|
||||
},
|
||||
async doConfirm() {
|
||||
try {
|
||||
const valid = await this.$refs['form'].validate()
|
||||
if (valid) {
|
||||
const param = {
|
||||
id: this.formData.id,
|
||||
proposalName: this.formData.proposalName,
|
||||
brief: this.formData.brief,
|
||||
measures: this.formData.measures
|
||||
}
|
||||
const resp = await $.post(loc() + '/updateBasicInfo', param)
|
||||
if (resp.code === 0) {
|
||||
this.notifySuccess(resp.msg)
|
||||
this.doSearch()
|
||||
this.$refs.guava.index()
|
||||
}else{
|
||||
this.notifyError(resp.msg)
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
}
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.config = await proposal.getProposalConfig()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -1,246 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<style>
|
||||
.el-select {
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<template>
|
||||
<proposal-search :page="pageForm" @search="doSearch" :audit="false"></proposal-search>
|
||||
|
||||
<el-card class="mt10" shadow="never">
|
||||
<table-tool :app="this" label="修改反馈评价"></table-tool>
|
||||
<el-table :data="tableData" :size="tableSize" :tree-props="{children: 'children'}"
|
||||
@sort-change="pageOrder"
|
||||
align="center"
|
||||
header-align="center" row-key="replyId">
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index" width="80">
|
||||
<template scope="scope">
|
||||
<span>{{ scope.$index + (pageForm.pageNumber - 1) * pageForm.pageSize + 1 }} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
:align="column.align?column.align:'center'"
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
:width="column.width"
|
||||
header-align="center"
|
||||
show-overflow-tooltip
|
||||
v-for="column in tableColumns"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="操作" fixed="right" width="200px">
|
||||
<template scope="{row}">
|
||||
<el-button size="mini" @click="openView(row)">查看</el-button>
|
||||
<el-button size="mini" type="primary" @click="openEdit(row)">修改反馈评价
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
<template #view>
|
||||
<proposal-info ref="info"></proposal-info>
|
||||
</template>
|
||||
</guava>
|
||||
|
||||
<el-dialog title="修改反馈评价" :close-on-click-modal="false" width="70%"
|
||||
:visible.sync="feedbackDialog" custom-class="ViewDialogClass" v-loading="true">
|
||||
<el-table :data="feedbackData" max-height="300">
|
||||
<el-table-column type="username" label="反馈人">
|
||||
<template scope="{row}">
|
||||
{{row.username}}({{row.loginname}})
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="feedbackTime" label="反馈时间"></el-table-column>
|
||||
<el-table-column prop="feedbackNumber" label="反馈次数"></el-table-column>
|
||||
<el-table-column prop="feedbackResult" label="反馈结果"></el-table-column>
|
||||
<el-table-column prop="proposalName" label="反馈意见" show-overflow-tooltip>
|
||||
<template scope="{row}">
|
||||
<sapn v-html="row.feedbackOpinion"></sapn>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="操作">-->
|
||||
<!-- <template scope="{row}">-->
|
||||
<!-- <el-button size="mini" @click="choiceFeedback(row)" type="primary">选择反馈</el-button>-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-table-column>-->
|
||||
</el-table>
|
||||
|
||||
<el-form :model="formData" ref="addForm" :rules="formRules" label-width="120px" class="mt20">
|
||||
<el-form-item prop="feedbackCode" label="承办满意度">
|
||||
<el-radio-group v-model="formData.feedbackCode">
|
||||
<el-radio v-for="item in feedbackOptions" :label="item.code" border>{{item.name}}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="feedbackOpinion" label="反馈意见" class="is-required">
|
||||
<div id="feedbackEditor"></div>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
</el-form>
|
||||
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="feedbackDialog=false">取 消</el-button>
|
||||
<el-button type="primary" @click="doEdit">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
|
||||
let E = window.wangEditor
|
||||
let feedbackEditor = null
|
||||
|
||||
var vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
'guava': httpVueLoader('/components/plugins/Guava.vue'),
|
||||
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue'),
|
||||
'proposal-search': httpVueLoader('/components/proposal/ProposalSearch.vue'),
|
||||
'proposal-table': httpVueLoader('/components/proposal/ProposalTable.vue'),
|
||||
},
|
||||
data() {
|
||||
let replyContentBrief = (rule, value, callback) => {
|
||||
if (!this.formData.feedbackOpinion || !dd3s.html2txt(this.formData.feedbackOpinion)) {
|
||||
callback(new Error('请填写反馈意见'));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
return {
|
||||
tableColumns: [
|
||||
{prop: 'proposalCode', label: '提案编号', width: "120", sortable: true, disabled: true},
|
||||
{prop: 'proposalName', label: '提案名称', width: "300", disabled: true},
|
||||
{prop: 'username', label: '提案人', disabled: true},
|
||||
{prop: 'typeCode', label: '提案类型编码', sortable: true, checked: 0},
|
||||
{prop: 'typeName', label: '提案类型', sortable: true},
|
||||
{prop: 'meetingName', label: '届次', sortable: true},
|
||||
{prop: 'delegationCode', label: '代表团编码', sortable: true, checked: 0},
|
||||
{prop: 'delegationName', label: '代表团', sortable: true},
|
||||
{prop: 'stateName', label: '提案状态', sortable: true},
|
||||
{prop: 'feedBackResultName', label: '反馈结果', sortable: true},
|
||||
],
|
||||
feedbackOpinion: "",
|
||||
feedbackOptions: [],
|
||||
feedbackData: [],
|
||||
feedbackDialog: false,
|
||||
formData: {
|
||||
id: "",
|
||||
feedbackCode: ""
|
||||
},
|
||||
pageForm: {searchName: 'proposalName'},
|
||||
formRules: {
|
||||
feedbackOpinion: [{validator: replyContentBrief, trigger: ['blur', 'change']}],
|
||||
feedbackCode: [{required: true, message: '请选择承办满意度', trigger: ['blur', 'change']}],
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
dropdownCommand(command) {
|
||||
const {type, data} = command
|
||||
if (type === 'view') {
|
||||
this.openView(data)
|
||||
} else if (type === 'edit') {
|
||||
this.openEdit(data)
|
||||
}
|
||||
},
|
||||
openView(row) {
|
||||
this.$refs.guava.view()
|
||||
this.$refs.info.openView(row.id)
|
||||
},
|
||||
choiceFeedback(row) {
|
||||
this.$set(this.formData, "feedbackCode", row.feedbackCode)
|
||||
this.$set(this.formData, "id", row.id)
|
||||
this.$set(this.formData, "proposalId", row.proposalId)
|
||||
feedbackEditor.txt.html(row.feedbackOpinion)
|
||||
},
|
||||
async openEdit(row) {
|
||||
const {data} = await $.post(loc() + "/getFeedbackData", {id: row.id})
|
||||
this.feedbackData = data
|
||||
|
||||
if (this.$refs['addForm']) {
|
||||
this.$refs['addForm'].resetFields()
|
||||
}
|
||||
|
||||
this.$nextTick(() => {
|
||||
$("#feedbackEditor").html("")
|
||||
feedbackEditor = new E("#feedbackEditor")
|
||||
feedbackEditor.config.onchange = (html) => {
|
||||
this.formData.feedbackOpinion = html
|
||||
}
|
||||
feedbackEditor.create()
|
||||
//自动选择最新一条的反馈记录并赋值
|
||||
if (this.feedbackData && this.feedbackData.length > 0) {
|
||||
this.choiceFeedback(this.feedbackData[0])
|
||||
}
|
||||
})
|
||||
this.feedbackDialog = true
|
||||
},
|
||||
async doEdit() {
|
||||
this.$refs["addForm"].validate(async (valid) => {
|
||||
if (valid) {
|
||||
if (this.formData.id == "") {
|
||||
this.$notify.warning({title: '警告', message: '请先选择需要修改的反馈评价'});
|
||||
return
|
||||
}
|
||||
|
||||
const confirm = await this.$confirm('您是否确定修改反馈评价?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
if (confirm === "confirm") {
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: '正在提交...',
|
||||
spinner: 'el-icon-loading',
|
||||
background: COVER_LAYER_COLOR
|
||||
});
|
||||
|
||||
const resp = await $.post(loc() + "/doEdit", {
|
||||
id: this.formData.id,
|
||||
feedbackCode: this.formData.feedbackCode,
|
||||
feedbackOpinion: this.formData.feedbackOpinion,
|
||||
})
|
||||
if(resp.code===0){
|
||||
const {data} = await $.post(loc() + "/getFeedbackData", {id: this.formData.proposalId})
|
||||
this.feedbackData = data
|
||||
this.$refs['addForm'].resetFields()
|
||||
feedbackEditor.txt.clear()
|
||||
this.notifySuccess(resp.msg)
|
||||
}else{
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
loading.close()
|
||||
this.feedbackDialog = false
|
||||
this.pageData()
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
setTimeout(() => {
|
||||
this.pageData()
|
||||
}, 1000)
|
||||
this.feedbackOptions = await getDictByCode("proposal_feedback")
|
||||
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -1,170 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<template>
|
||||
<proposal-search :audit="false" :page="pageForm" @finished="searchFinished"
|
||||
@search="doSearch"></proposal-search>
|
||||
|
||||
<el-card class="mt10" shadow="never">
|
||||
<table-tool :app="this" label="提案列表"></table-tool>
|
||||
<el-table :data="tableData" :size="tableSize" :tree-props="{children: 'children'}"
|
||||
@sort-change="pageOrder"
|
||||
align="center"
|
||||
header-align="center" row-key="replyId">
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index" width="80">
|
||||
<template scope="scope">
|
||||
<span>{{ scope.$index + (pageForm.pageNumber - 1) * pageForm.pageSize + 1 }} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
:align="column.align?column.align:'center'"
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
:width="column.width"
|
||||
header-align="center"
|
||||
show-overflow-tooltip
|
||||
v-for="column in tableColumns"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" fixed="right" header-align="center" label="操作" width="200px">
|
||||
<template scope="{row}">
|
||||
<el-button @click="openView(row)" size="mini">查看</el-button>
|
||||
<el-button @click="openEdit(row)" size="mini" type="primary">修改
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
<template #view>
|
||||
<proposal-info ref="info"></proposal-info>
|
||||
</template>
|
||||
|
||||
|
||||
</guava>
|
||||
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
:visible.sync="dialogVisible"
|
||||
title="修改提案状态"
|
||||
width="50%">
|
||||
<el-form>
|
||||
<vi-title title="修改状态"></vi-title>
|
||||
<el-form-item label="">
|
||||
<el-radio border label="100" v-model="stateCode">未提交</el-radio>
|
||||
<el-radio border label="150" v-model="stateCode">邀请附议人</el-radio>
|
||||
<el-radio border label="200" v-model="stateCode">待团长审核</el-radio>
|
||||
<el-radio border label="250" v-model="stateCode">预审核</el-radio>
|
||||
</el-form-item>
|
||||
<vi-title title="是否删除审核信息或附议人信息"></vi-title>
|
||||
<el-form-item label="">
|
||||
<el-radio border label="true" v-model="isDelete">是</el-radio>
|
||||
<el-radio border label="false" v-model="isDelete">否</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
|
||||
<span class="dialog-footer" slot="footer">
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
<el-button @click="doConfirm" type="primary">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue'),
|
||||
'proposal-search': httpVueLoader('/components/proposal/ProposalSearch.vue'),
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
id: "",
|
||||
stateCode: "",
|
||||
oldStateCode: "",
|
||||
isDelete: "false",
|
||||
dialogVisible: false,
|
||||
tableColumns: [
|
||||
{prop: 'oldProposalCode', label: '草案编号', width: "120", checked: 0},
|
||||
{prop: 'proposalCode', label: '提案编号', width: "120", sortable: true, disabled: true},
|
||||
{prop: 'proposalName', label: '提案名称', width: "300", disabled: true},
|
||||
{prop: 'username', label: '提案人', disabled: true},
|
||||
{prop: 'typeCode', label: '提案类型编码', sortable: true, checked: 0},
|
||||
{prop: 'typeName', label: '提案类型', sortable: true},
|
||||
{prop: 'meetingName', label: '届次', sortable: true},
|
||||
{prop: 'delegationCode', label: '代表团编码', sortable: true, checked: 0},
|
||||
{prop: 'delegationName', label: '代表团', sortable: true},
|
||||
{prop: 'stateName', label: '提案状态', sortable: true}
|
||||
],
|
||||
pageForm: {searchName: 'proposalName', meetingId: ''},
|
||||
formData: {},
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
searchFinished() {
|
||||
this.pageData()
|
||||
},
|
||||
openView(row) {
|
||||
this.$refs.guava.view()
|
||||
this.$refs.info.openView(row.id)
|
||||
},
|
||||
openEdit(row) {
|
||||
this.id = row.id
|
||||
this.stateCode = row.stateCode.toString()
|
||||
this.oldStateCode = row.stateCode.toString()
|
||||
this.dialogVisible = true
|
||||
},
|
||||
async doConfirm() {
|
||||
let aa = ""
|
||||
if (this.oldStateCode === this.stateCode && this.isDelete === "true") {
|
||||
aa = "您的提案状态并没有修改,确定只删除审核记录和附议人吗?"
|
||||
} else if (this.oldStateCode === this.stateCode) {
|
||||
aa = "您的提案状态并没有修改,确定要修改吗?"
|
||||
} else if (this.oldStateCode !== this.stateCode && this.isDelete === "true") {
|
||||
aa = "您确定要修改状态并删除审核记录和附议人吗?"
|
||||
} else {
|
||||
aa = "您确定要修改吗?"
|
||||
}
|
||||
const confirm = await this.$confirm(aa, '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
if (confirm === "confirm") {
|
||||
const param = {
|
||||
id: this.id,
|
||||
stateCode: this.stateCode,
|
||||
isDelete: this.isDelete,
|
||||
}
|
||||
const resp = await $.post(loc() + '/doConfirm', param)
|
||||
if (resp.code === 0) {
|
||||
this.isDelete = "false"
|
||||
this.notifySuccess(resp.msg)
|
||||
this.doSearch()
|
||||
this.dialogVisible = false
|
||||
} else {
|
||||
this.notifyError(resp.msg)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -1,174 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<style>
|
||||
.el-select {
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<template>
|
||||
<proposal-search :audit="false" :page="pageForm" @finished="searchFinished"
|
||||
@search="doSearch"></proposal-search>
|
||||
|
||||
<el-card class="mt10" shadow="never">
|
||||
<table-tool :app="this" label="提案重新归类"></table-tool>
|
||||
<el-table :data="tableData" :size="tableSize" :tree-props="{children: 'children'}"
|
||||
@sort-change="pageOrder"
|
||||
align="center"
|
||||
header-align="center" row-key="replyId">
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index" width="80">
|
||||
<template scope="scope">
|
||||
<span>{{ scope.$index + (pageForm.pageNumber - 1) * pageForm.pageSize + 1 }} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
:align="column.align?column.align:'center'"
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
:width="column.width"
|
||||
header-align="center"
|
||||
show-overflow-tooltip
|
||||
v-for="column in tableColumns"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="操作" fixed="right" width="200px">
|
||||
<template scope="{row}">
|
||||
<el-button size="mini" @click="openView(row)">查看</el-button>
|
||||
<el-button size="mini" type="primary" @click="openEdit(row)">修改类型
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
<template #view>
|
||||
<proposal-info ref="info"></proposal-info>
|
||||
</template>
|
||||
</guava>
|
||||
|
||||
<el-dialog title="修改提案类型" :close-on-click-modal="false" width="40%"
|
||||
:visible.sync="typeDialog" custom-class="ViewDialogClass" v-loading="true">
|
||||
|
||||
<el-form :model="formData" ref="addForm" :rules="formRules" label-width="120px">
|
||||
<el-form-item prop="username" label="原类型">
|
||||
<el-input disabled v-model="formData.typeName" type="text"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="typeId" label="更改类型">
|
||||
<el-select v-model="formData.typeId" filterable clearable placeholder="提案类型">
|
||||
<el-option
|
||||
v-for="item in typeOptions"
|
||||
:key="item.id"
|
||||
:label="item.typeName"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="typeDialog=false">取 消</el-button>
|
||||
<el-button type="primary" @click="doEdit">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.0'),
|
||||
'guava': httpVueLoader('/components/plugins/Guava.vue'),
|
||||
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue'),
|
||||
'proposal-search': httpVueLoader('/components/proposal/ProposalSearch.vue'),
|
||||
'proposal-table': httpVueLoader('/components/proposal/ProposalTable.vue'),
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
tableColumns: [
|
||||
{prop: 'proposalCode', label: '提案编号', width: "120", sortable: true, disabled: true},
|
||||
{prop: 'proposalName', label: '提案名称', width: "300", disabled: true},
|
||||
{prop: 'username', label: '提案人', disabled: true},
|
||||
{prop: 'typeCode', label: '提案类型编码', sortable: true, checked: 0},
|
||||
{prop: 'typeName', label: '提案类型', sortable: true},
|
||||
{prop: 'meetingName', label: '届次', sortable: true},
|
||||
{prop: 'delegationCode', label: '代表团编码', sortable: true, checked: 0},
|
||||
{prop: 'delegationName', label: '代表团', sortable: true},
|
||||
{prop: 'stateName', label: '提案状态', sortable: true}
|
||||
],
|
||||
typeDialog: false,
|
||||
typeOptions: [],
|
||||
pageForm: {searchName: 'proposalName', meetingId: ''},
|
||||
formRules: {
|
||||
typeId: [{required: true, message: '请选择提案类型', trigger: ['blur', 'change']}],
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
dropdownCommand(command) {
|
||||
const {type, data} = command
|
||||
if (type === 'view') {
|
||||
this.openView(data)
|
||||
} else if (type === 'edit') {
|
||||
this.openEdit(data)
|
||||
}
|
||||
},
|
||||
typeChange(val) {
|
||||
this.formData.typeId = val
|
||||
},
|
||||
openView(row) {
|
||||
this.$refs.guava.view()
|
||||
this.$refs.info.openView(row.id)
|
||||
},
|
||||
openEdit(row) {
|
||||
this.formData.id = row.id
|
||||
this.formData.typeName = row.typeName
|
||||
this.typeDialog = true
|
||||
|
||||
if (this.$refs['addForm']) {
|
||||
this.$refs['addForm'].resetFields()
|
||||
}
|
||||
},
|
||||
async doEdit() {
|
||||
this.$refs["addForm"].validate(async (valid) => {
|
||||
if (valid) {
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: '正在提交...',
|
||||
spinner: 'el-icon-loading',
|
||||
background: COVER_LAYER_COLOR
|
||||
});
|
||||
|
||||
const resp = await $.post(loc() + "/reType", this.formData)
|
||||
if(resp.code===0){
|
||||
this.notifySuccess(resp.msg)
|
||||
this.pageData()
|
||||
}else{
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
loading.close()
|
||||
this.typeDialog = false
|
||||
}
|
||||
});
|
||||
},
|
||||
searchFinished() {
|
||||
this.pageData()
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.typeOptions = await proposal.getProposalType()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -1,288 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<style>
|
||||
.el-select {
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<template>
|
||||
<proposal-search :page="pageForm" @search="doSearch" :audit="false"></proposal-search>
|
||||
|
||||
<el-card class="mt10" shadow="never">
|
||||
<table-tool :app="this" label="修改立案结果">
|
||||
<template #tips>
|
||||
<span class="text-primary ml10">
|
||||
(本次变更只针对于办理答复阶段的提案)
|
||||
</span>
|
||||
</template>
|
||||
</table-tool>
|
||||
<el-table :data="tableData" :size="tableSize" :tree-props="{children: 'children'}"
|
||||
@sort-change="pageOrder"
|
||||
align="center"
|
||||
header-align="center" row-key="replyId">
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index" width="80">
|
||||
<template scope="scope">
|
||||
<span>{{ scope.$index + (pageForm.pageNumber - 1) * pageForm.pageSize + 1 }} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
:align="column.align?column.align:'center'"
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
:width="column.width"
|
||||
header-align="center"
|
||||
show-overflow-tooltip
|
||||
v-for="column in tableColumns"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="操作" fixed="right" width="200px">
|
||||
<template scope="{row}">
|
||||
<el-button size="mini" @click="openView(row)">查看</el-button>
|
||||
<el-button size="mini" type="primary" @click="openEdit(row)">修改立案结果
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
<template #view>
|
||||
<proposal-info ref="info"></proposal-info>
|
||||
</template>
|
||||
</guava>
|
||||
|
||||
<el-dialog :close-on-click-modal="false" :visible.sync="resultCodeDialog " title="修改立案结果" width="40%">
|
||||
<el-form :model="formData" ref="addForm" :rules="formRules" label-width="120px">
|
||||
<el-form-item prop="resultCode" label="立案结果">
|
||||
<el-radio-group @change="resultCodeChange" v-model="formData.resultCode">
|
||||
<el-radio v-for="item in resultOptions" :label="item.code" border>
|
||||
{{item.name}}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<!--<el-form-item label="立案类型" prop="determineTypeCode" v-if="formData.resultCode==='determine'">
|
||||
<el-radio-group v-model="formData.determineTypeCode">
|
||||
<el-radio :label="item.code" border v-for="item in determineType">
|
||||
{{item.name}}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>-->
|
||||
|
||||
<el-form-item label="理由列表" prop="noFilingReason" v-if="formData.resultCode==='notGive'">
|
||||
<el-select v-model="formData.noFilingReason" filterable clearable placeholder="请选择理由列表"
|
||||
@change="(v)=>formData.opinion=v">
|
||||
<el-option v-for="item in noFilingReason"
|
||||
:key="item"
|
||||
:label="item"
|
||||
:value="item">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<div v-if="['determine','opinion'].includes(formData.resultCode)">
|
||||
<el-form-item prop="hostUnit" label="主办单位">
|
||||
<el-select v-model="formData.hostUnit" filterable clearable placeholder="请选择主办单位">
|
||||
<el-option v-for="item in unitOptions"
|
||||
:key="item.id"
|
||||
:label="item.unitName"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="helpUnit" label="协办单位">
|
||||
<el-select v-model="formData.helpUnit" multiple filterable clearable
|
||||
placeholder="请选择协办单位">
|
||||
<el-option v-for="item in unitOptions"
|
||||
:key="item.id"
|
||||
:label="item.unitName"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<el-form-item prop="opinion" label="审核意见">
|
||||
<el-input type="textarea" v-model="formData.opinion" rows="4" maxlength="500"
|
||||
placeholder="请填写您的审核意见"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="resultCodeDialog=false">取 消</el-button>
|
||||
<el-button type="primary" @click="doEdit">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
'guava': httpVueLoader('/components/plugins/Guava.vue'),
|
||||
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue'),
|
||||
'proposal-search': httpVueLoader('/components/proposal/ProposalSearch.vue'),
|
||||
'proposal-table': httpVueLoader('/components/proposal/ProposalTable.vue'),
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
tableColumns: [
|
||||
{prop: 'proposalCode', label: '提案编号', width: "120", sortable: true, disabled: true},
|
||||
{prop: 'proposalName', label: '提案名称', width: "300", disabled: true},
|
||||
{prop: 'username', label: '提案人', disabled: true},
|
||||
{prop: 'typeCode', label: '提案类型编码', sortable: true, checked: 0},
|
||||
{prop: 'typeName', label: '提案类型', sortable: true},
|
||||
{prop: 'meetingName', label: '届次', sortable: true},
|
||||
{prop: 'delegationCode', label: '代表团编码', sortable: true, checked: 0},
|
||||
{prop: 'delegationName', label: '代表团', sortable: true},
|
||||
{prop: 'stateName', label: '提案状态', sortable: true},
|
||||
{prop: 'resultName', label: '立案结果', sortable: true},
|
||||
],
|
||||
config: {},
|
||||
resultCodeDialog: false,
|
||||
noFilingReason: [],
|
||||
resultOptions: [],
|
||||
determineType: [],
|
||||
unitOptions: [],
|
||||
pageForm: {searchName: 'proposalName'},
|
||||
formRules: {
|
||||
resultCode: [{required: true, message: '请选择立案结果', trigger: ['blur', 'change']}],
|
||||
opinion: [{required: true, message: '请输入审核意见', trigger: ['blur', 'change']}],
|
||||
hostUnit: [{required: true, message: '请选择主办单位', trigger: ['blur', 'change']}],
|
||||
determineTypeCode: [{required: true, message: '请选择', trigger: ['blur', 'change']}],
|
||||
},
|
||||
formData: {
|
||||
oldResultCode: '',
|
||||
resultCode: null,
|
||||
noFilingReason: '',
|
||||
determineTypeCode: '',
|
||||
opinion: '',
|
||||
hostUnit: '',
|
||||
helpUnit: []
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
resultCodeChange(val) {
|
||||
// this.formData.hostUnit = null
|
||||
// this.formData.helpUnit = []
|
||||
},
|
||||
openView(row) {
|
||||
this.$refs.guava.view()
|
||||
this.$refs.info.openView(row.id)
|
||||
},
|
||||
async openEdit(row) {
|
||||
this.resultCodeDialog = true
|
||||
// this.formData = {
|
||||
// oldResultCode: '',
|
||||
// resultCode: '',
|
||||
// noFilingReason: '',
|
||||
// determineTypeCode: '',
|
||||
// opinion: '',
|
||||
// hostUnit: '',
|
||||
// helpUnit: []
|
||||
// }
|
||||
|
||||
this.$nextTick(()=>{
|
||||
this.$set(this.formData,'id',row.id)
|
||||
this.$set(this.formData,'resultCode',row.resultCode)
|
||||
this.$set(this.formData,'oldResultCode',row.oldResultCode)
|
||||
this.$set(this.formData,'determineTypeCode',row.determineTypeCode)
|
||||
this.$set(this.formData,'hostUnit',null)
|
||||
this.$set(this.formData,'helpUnit',[])
|
||||
this.$set(this.formData,'noFilingReason',null)
|
||||
})
|
||||
|
||||
// this.formData.id = row.id
|
||||
// this.formData.resultCode = row.resultCode
|
||||
// this.formData.oldResultCode = row.resultCode
|
||||
// this.formData.determineTypeCode = row.determineTypeCode
|
||||
console.log(this.formData)
|
||||
|
||||
},
|
||||
async doEdit() {
|
||||
this.$refs["addForm"].validate(async (valid) => {
|
||||
if (valid) {
|
||||
|
||||
if (this.resultCode === this.formData.resultCode) {
|
||||
this.$notify.warning({title: '警告', message: '您修改的立案状态和原先的状态一致!请检查确认后提交'});
|
||||
return
|
||||
}
|
||||
|
||||
let msg = ''
|
||||
switch (this.formData.resultCode) {
|
||||
case 'notGive': {
|
||||
msg = '本提案立案结果修改为不予立案,系统自动完结,同时不在本列表中显示'
|
||||
break
|
||||
}
|
||||
default: {
|
||||
msg = '您是否确定修改立案结果,修改后将重新走流程'
|
||||
}
|
||||
}
|
||||
|
||||
const confirm = await this.$confirm(msg, '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
if (confirm === "confirm") {
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: '正在提交...',
|
||||
spinner: 'el-icon-loading',
|
||||
background: COVER_LAYER_COLOR
|
||||
});
|
||||
const resp = await $.post(loc() + "/doEdit", {
|
||||
id: this.formData.id,
|
||||
resultCode: this.formData.resultCode,
|
||||
determineTypeCode: this.formData.determineTypeCode,
|
||||
opinion: this.formData.opinion,
|
||||
hostUnit: this.formData.hostUnit,
|
||||
helpUnits: JSON.stringify(this.formData.helpUnit),
|
||||
})
|
||||
if(resp.code===0){
|
||||
this.notifySuccess(resp.msg)
|
||||
this.pageData()
|
||||
}else{
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
loading.close()
|
||||
this.resultCodeDialog = false
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
// this.pageData()
|
||||
console.log('父组件mounted执行了' + Date.now())
|
||||
},
|
||||
async created() {
|
||||
console.log('父组件created执行了' + Date.now())
|
||||
// this.pageData()
|
||||
setTimeout(() => {
|
||||
this.pageData()
|
||||
}, 1000)
|
||||
|
||||
this.resultOptions = await getDictByCode("proposal_result")
|
||||
this.determineType = await getDictByCode("proposal_determine_type")
|
||||
this.unitOptions = await proposal.getProposalUndertake()
|
||||
this.config = await proposal.getProposalConfig()
|
||||
this.noFilingReason = this.config.noFilingReason
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -1,231 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<style>
|
||||
.el-select {
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<template>
|
||||
<proposal-search :page="pageForm" @search="doSearch" :audit="false"></proposal-search>
|
||||
|
||||
<el-card class="mt10" shadow="never">
|
||||
<table-tool :app="this" label="变更承办单位">
|
||||
<template #label_end>
|
||||
<span class="text-primary ml10">
|
||||
(本次变更只针对于办理答复阶段的提案)
|
||||
</span>
|
||||
</template>
|
||||
</table-tool>
|
||||
|
||||
|
||||
<el-table :data="tableData" :size="tableSize" :tree-props="{children: 'children'}"
|
||||
@sort-change="pageOrder"
|
||||
align="center"
|
||||
header-align="center" row-key="replyId">
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index" width="80">
|
||||
<template scope="scope">
|
||||
<span>{{ scope.$index + (pageForm.pageNumber - 1) * pageForm.pageSize + 1 }} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
:align="column.align?column.align:'center'"
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
:width="column.width"
|
||||
header-align="center"
|
||||
show-overflow-tooltip
|
||||
v-for="column in tableColumns"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="操作" fixed="right" width="200px">
|
||||
<template scope="{row}">
|
||||
<el-button size="mini" @click="openView(row)">查看</el-button>
|
||||
<el-button size="mini" type="primary" @click="openEdit(row)">修改承办
|
||||
</el-button>
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
<template #view>
|
||||
<proposal-info ref="info"></proposal-info>
|
||||
</template>
|
||||
</guava>
|
||||
|
||||
<el-dialog title="修改承办单位" :close-on-click-modal="false" width="40%"
|
||||
:visible.sync="undertakeDialog" custom-class="ViewDialogClass" v-loading="true">
|
||||
|
||||
<el-form :model="formData" ref="addForm" :rules="formRules" label-width="120px">
|
||||
<el-form-item prop="hostUnit" label="主办单位">
|
||||
<el-select v-model="formData.hostUnit" filterable clearable placeholder="请选择主办单位">
|
||||
<el-option v-for="item in unitOptions"
|
||||
:key="item.id"
|
||||
:label="item.unitName"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item prop="helpUnits" label="协办单位">
|
||||
<el-select v-model="formData.helpUnits" multiple filterable placeholder="请选择协办单位"
|
||||
@remove-tag="removeUnit">
|
||||
<el-option v-for="item in unitOptions"
|
||||
:key="item.id"
|
||||
:label="item.unitName"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="修改流程" prop="isChangeProcess">
|
||||
<el-radio :label="true" v-model="formData.isChangeProcess">修改</el-radio>
|
||||
<el-radio :label="false" v-model="formData.isChangeProcess">不修改</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="undertakeDialog=false">取 消</el-button>
|
||||
<el-button type="primary" @click="doEdit">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
'guava': httpVueLoader('/components/plugins/Guava.vue'),
|
||||
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue'),
|
||||
'proposal-search': httpVueLoader('/components/proposal/ProposalSearch.vue'),
|
||||
'proposal-table': httpVueLoader('/components/proposal/ProposalTable.vue'),
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
tableColumns: [
|
||||
{prop: 'proposalCode', label: '提案编号', width: "120", sortable: true, disabled: true},
|
||||
{prop: 'proposalName', label: '提案名称', width: "300", disabled: true},
|
||||
{prop: 'username', label: '提案人', disabled: true},
|
||||
{prop: 'typeCode', label: '提案类型编码', sortable: true, checked: 0},
|
||||
{prop: 'typeName', label: '提案类型', sortable: true},
|
||||
{prop: 'meetingName', label: '届次', sortable: true},
|
||||
{prop: 'delegationCode', label: '代表团编码', sortable: true, checked: 0},
|
||||
{prop: 'delegationName', label: '代表团', sortable: true},
|
||||
{prop: 'stateName', label: '提案状态', sortable: true},
|
||||
{prop: 'pruMaster', label: '主办单位'},
|
||||
{prop: 'pruSlave', label: '协办单位'},
|
||||
],
|
||||
undertakeDialog: false,
|
||||
unitOptions: [],
|
||||
deleteIds: [],
|
||||
formData: {
|
||||
hostUnit: '',
|
||||
helpUnits: [],
|
||||
isChangeProcess: true
|
||||
},
|
||||
pageForm: {searchName: 'proposalName'},
|
||||
formRules: {
|
||||
hostUnit: [{required: true, message: '请选择主办单位', trigger: ['blur', 'change']}],
|
||||
reCircuit: [{required: true, message: '请选择是否重新走流程', trigger: ['blur', 'change']}],
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
dropdownCommand(command) {
|
||||
const {type, data} = command
|
||||
if (type === 'view') {
|
||||
this.openView(data)
|
||||
} else if (type === 'edit') {
|
||||
this.openEdit(data)
|
||||
}
|
||||
},
|
||||
removeUnit(val) {
|
||||
this.deleteIds.push(val)
|
||||
},
|
||||
openView(row) {
|
||||
this.$refs.guava.view()
|
||||
this.$refs.info.openView(row.id)
|
||||
},
|
||||
async openEdit(row) {
|
||||
this.formData = {
|
||||
hostUnit: '',
|
||||
helpUnits: [],
|
||||
isChangeProcess: false
|
||||
}
|
||||
this.formData.id = row.id
|
||||
this.$set(this.formData, "reCircuit", false)
|
||||
const data = await proposal.findOrganizer(row.id)
|
||||
if (data && data.length > 0) {
|
||||
this.formData.hostUnit = data.filter(v => v.undertakeType === 1).shift().replyUnitId
|
||||
data.forEach(v => {
|
||||
if (v.undertakeType === 2) {
|
||||
this.formData.helpUnits.push(v.replyUnitId)
|
||||
}
|
||||
})
|
||||
}
|
||||
this.undertakeDialog = true
|
||||
},
|
||||
async doEdit() {
|
||||
this.$refs["addForm"].validate(async (valid) => {
|
||||
if (valid) {
|
||||
const exist = this.formData.helpUnits.find(v => {
|
||||
return v === this.formData.hostUnit
|
||||
})
|
||||
if (exist) {
|
||||
this.$notify.warning({title: '警告', message: '协办单位中存在您已选择的主办单位!请检查确认后提交'});
|
||||
return
|
||||
}
|
||||
|
||||
// this.deleteIds = this.deleteIds.filter(v => !this.formData.helpUnits.includes(v) || v === this.formData.hostUnit)
|
||||
|
||||
this.submitDisabled = true
|
||||
const {isChangeProcess} = this.formData
|
||||
const message = isChangeProcess?'您是否确定修改承办单位?修改后将重新走流程!':'您是否确定修改承办单位?修改后流程不变!'
|
||||
|
||||
const confirm = await this.$confirm(message, '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
if (confirm === "confirm") {
|
||||
const resp = await $.post(loc() + "/doEdit", {
|
||||
id: this.formData.id,
|
||||
isChangeProcess:this.formData.isChangeProcess,
|
||||
hostUnit: this.formData.hostUnit,
|
||||
helpUnits: JSON.stringify(this.formData.helpUnits),
|
||||
// deleteIds: JSON.stringify(this.deleteIds)
|
||||
})
|
||||
|
||||
if(resp.code===0){
|
||||
this.notifySuccess(resp.msg)
|
||||
this.pageData()
|
||||
}else{
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
this.undertakeDialog = false
|
||||
this.submitDisabled = false
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
setTimeout(() => {
|
||||
|
||||
this.pageData()
|
||||
}, 500)
|
||||
this.unitOptions = await proposal.getProposalUndertake()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -1,215 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<style>
|
||||
.box-card .primary {
|
||||
border-radius: 5px;
|
||||
border-left: 7px solid #409EFF;
|
||||
}
|
||||
|
||||
.item-tip {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.text {
|
||||
line-height: 25px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<template>
|
||||
<proposal-search :page="pageForm" @search="doSearch"></proposal-search>
|
||||
|
||||
<proposal-table :loading="tableLoading" :page="pageForm" :data="tableData"
|
||||
@order="pageOrder" @view="openView">
|
||||
<template #column>
|
||||
<el-table-column align="center" header-align="center" label="审核状态">
|
||||
<template scope="{row}">
|
||||
<span class="text-success" v-if="row.stateCode!=proposal.HAS_SECOND_REPLY">已审核</span>
|
||||
<span class="text-primary" v-if="row.stateCode==proposal.HAS_SECOND_REPLY">待审核</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="操作" fixed="right" width="100px">
|
||||
<template scope="{row}">
|
||||
<el-dropdown @command="dropdownCommand">
|
||||
<el-button plain size="mini">
|
||||
<i class="ti-settings"></i>
|
||||
<span class="ti-angle-down"></span>
|
||||
</el-button>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item :command="{type:'view',data:row}">
|
||||
查看
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item v-if="[proposal.HAS_SECOND_REPLY].includes(row.stateCode)"
|
||||
:command="{type:'audit',data:row}">
|
||||
审核
|
||||
</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
</proposal-table>
|
||||
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</template>
|
||||
|
||||
<template #edit>
|
||||
<proposal-info ref="audit" label="二次答复审核" handle>
|
||||
<template #handle>
|
||||
<el-form :model="formData" ref="auditForm" :rules="formRules" label-width="120px">
|
||||
<vi-title title="审核信息"></vi-title>
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="username" label="审核人">
|
||||
<el-input v-model="formData.username" disabled></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="auditTime" label="审核时间">
|
||||
<el-input v-model="formData.auditTime" disabled></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item prop="opinion" label="审核意见">
|
||||
<el-input type="textarea" v-model="formData.opinion" rows="6" maxlength="1000"
|
||||
placeholder="请填写您的审核意见"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item v-if="isSign" prop="sign" label="签  字">
|
||||
<sign prefix="proposal" :qz.sync="formData.sign"></sign>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="温馨提示">
|
||||
<el-card class="box-card primary">
|
||||
<div class="text item">
|
||||
<p><span class="item-tip">1.确认二次答复:</span>
|
||||
<span>确认二次答复后 需要整改的单位 再次走流程</span></p>
|
||||
|
||||
<p><span class="item-tip">2.重新评价</span>
|
||||
<span>:重新评价会让反馈人重新进行评价</span></p>
|
||||
|
||||
<p><span class="item-tip">3.特殊处理:</span>
|
||||
<span>特殊处理会使需要整改的单位对答复内容进行修改,不走审核流程,然后反馈人再次反馈</span></p>
|
||||
</div>
|
||||
</el-card>
|
||||
</el-form-item>
|
||||
|
||||
<el-row style="margin: 40px 0;text-align: right">
|
||||
<el-button type="primary" :disabled="submitDisabled" @click="doAudit(0)">确认二次答复</el-button>
|
||||
<el-button type="primary" :disabled="submitDisabled" @click="doAudit(1)">重新评价</el-button>
|
||||
<el-button type="danger" :disabled="submitDisabled" @click="doAudit(2)">特殊处理</el-button>
|
||||
</el-row>
|
||||
|
||||
</el-form>
|
||||
</template>
|
||||
</proposal-info>
|
||||
</template>
|
||||
|
||||
<template #view>
|
||||
<proposal-info ref="info"></proposal-info>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.0'),
|
||||
'guava': httpVueLoader('/components/plugins/Guava.vue'),
|
||||
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue'),
|
||||
'proposal-search': httpVueLoader('/components/proposal/ProposalSearch.vue'),
|
||||
'proposal-table': httpVueLoader('/components/proposal/ProposalTable.vue'),
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isSign: false,
|
||||
auditUrl: base + '/platform/proposal/transact/audit',
|
||||
submitDisabled: false,
|
||||
pageForm: {searchName: 'proposalName', isAudit: false},
|
||||
formData: {
|
||||
username: "${@shiro.getPrincipalProperty('username')}",
|
||||
loginName: "${@shiro.getPrincipalProperty('loginname')}",
|
||||
auditTime: moment().format('YYYY-MM-DD'),
|
||||
opinion: '',
|
||||
sign: ''
|
||||
},
|
||||
formRules: {
|
||||
opinion: [{required: true, message: '请输入审核意见', trigger: ['blur', 'change']}]
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
dropdownCommand(command) {
|
||||
const {type, data} = command
|
||||
if (type === 'view') {
|
||||
this.openView(data)
|
||||
} else if (type === 'audit') {
|
||||
this.openAudit(data.id)
|
||||
}
|
||||
},
|
||||
openView(row) {
|
||||
this.$refs.guava.view()
|
||||
this.$refs.info.openView(row.id)
|
||||
},
|
||||
openAudit(id) {
|
||||
this.formData.proposalId = id
|
||||
this.$refs.guava.edit()
|
||||
this.$refs.audit.openView(id)
|
||||
|
||||
if (this.$refs['auditForm']) {
|
||||
this.$refs['auditForm'].resetFields()
|
||||
}
|
||||
},
|
||||
async doAudit(flag) {
|
||||
let title = flag === 0 ? '二次答复需要重新走流程,是否确认?' : flag === 1 ? '确认让反馈人重新评价吗?' : '确认进行特殊处理吗?'
|
||||
this.$refs["auditForm"].validate(async (valid) => {
|
||||
if (valid) {
|
||||
this.submitDisabled = true
|
||||
this.$confirm(title, '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(async () => {
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: '正在提交...',
|
||||
spinner: 'el-icon-loading',
|
||||
background: COVER_LAYER_COLOR
|
||||
});
|
||||
|
||||
const resp = await $.post(this.auditUrl + "/doAudit", {
|
||||
audit: JSON.stringify(this.formData),
|
||||
sign: this.formData.sign,
|
||||
flag: flag
|
||||
})
|
||||
if(resp.code===0){
|
||||
this.notifySuccess(resp.msg)
|
||||
this.pageData()
|
||||
this.$refs.guava.index()
|
||||
}else{
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
loading.close()
|
||||
this.submitDisabled = false
|
||||
}).catch(() => {
|
||||
this.submitDisabled = false
|
||||
});
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
await initData(proposal.HAS_SECOND_REPLY, this)
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -1,399 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
.query-row {
|
||||
height: 70px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.query-row .el-col {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.query-row:not(:last-child) {
|
||||
border-bottom: 1px dashed rgb(230, 230, 230);
|
||||
}
|
||||
|
||||
.query-row-title {
|
||||
width: 120px;
|
||||
}
|
||||
|
||||
.el-table-container {
|
||||
padding-top: 0;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<template>
|
||||
<el-card shadow="never">
|
||||
<!-- <el-row type="flex" justify="center">
|
||||
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
|
||||
style="width: 50%" @keyup.enter.native="doSearch">
|
||||
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
|
||||
style="width: 110px;">
|
||||
<el-option label="提案名称" value="proposalName"></el-option>
|
||||
<el-option label="提案编号" value="proposalCode"></el-option>
|
||||
</el-select>
|
||||
</el-input>
|
||||
</el-row>-->
|
||||
|
||||
<el-row align="middle" class="query-row" justify="center" type="flex">
|
||||
<el-col class="query-row-title">教代会:</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<!-- <span>教代会:</span>-->
|
||||
<el-select @change="meetingChange" clearable filterable
|
||||
placeholder="请选择教代会" style="width: 80%" v-model="pageForm.meetingId">
|
||||
<el-option
|
||||
|
||||
:label="item.jdhallname"
|
||||
:value="item.id"
|
||||
v-for="item in meetingOptions">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-input @keyup.enter.native="doSearch" clearable placeholder="请输入内容"
|
||||
style="width: 90%" v-model="pageForm.searchKeyword">
|
||||
<el-select placeholder="查询类型" slot="prepend" style="width: 110px;"
|
||||
v-model="pageForm.searchName">
|
||||
<el-option label="提案名称" value="proposalName"></el-option>
|
||||
<el-option label="提案编号" value="proposalCode"></el-option>
|
||||
</el-select>
|
||||
</el-input>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-input @keyup.enter.native="doSearch" clearable placeholder="请输入内容"
|
||||
style="width: 90%" v-model="pageForm.searchKeyword2">
|
||||
<el-select placeholder="查询类型" slot="prepend" style="width: 100px;"
|
||||
v-model="pageForm.searchName2">
|
||||
<el-option label="提案人" value="su.username"></el-option>
|
||||
<el-option label="附议人" value="seconded.username"></el-option>
|
||||
</el-select>
|
||||
</el-input>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never" style="margin-top: 10px">
|
||||
|
||||
<el-row align="middle" class="query-row" type="flex">
|
||||
<el-col class="query-row-title">提案状态:</el-col>
|
||||
<el-col class="query-row-content">
|
||||
<el-select @change="doSearch()" clearable filterable placeholder="请选择提案状态"
|
||||
style="width: 400px" v-model="pageForm.stateCode">
|
||||
<el-option :key="item.stateCode"
|
||||
:label="item.stateName"
|
||||
:value="item.stateCode"
|
||||
v-for="item in stateOptions">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row align="middle" class="query-row" type="flex">
|
||||
<el-col class="query-row-title">提案类型:</el-col>
|
||||
<el-col class="query-row-content">
|
||||
<el-tag
|
||||
:effect="pageForm.proposalTypes.includes(item.id)?'dark':'plain'"
|
||||
:key="item.id"
|
||||
:type="item.typeName"
|
||||
@click="checkProposalType(item.id)"
|
||||
style="margin-right: 10px;cursor: pointer;margin-bottom: 5px;"
|
||||
v-for="item in typeOptions">
|
||||
{{ item.typeName }}
|
||||
</el-tag>
|
||||
|
||||
<el-link :underline="false" @click="pageForm.proposalTypes=[];doSearch()"
|
||||
type="danger" v-if="typeOptions.length&&pageForm.proposalTypes.length">清空
|
||||
</el-link>
|
||||
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row align="middle" class="query-row" type="flex">
|
||||
<el-col class="query-row-title">立案结果:</el-col>
|
||||
<el-col class="query-row-content">
|
||||
<el-tag
|
||||
:effect="pageForm.proposalResult.includes(item.code)?'dark':'plain'"
|
||||
:key="item.code"
|
||||
:type="item.name"
|
||||
@click="checkProposalResult(item.code)"
|
||||
style="margin-right: 10px;cursor: pointer;"
|
||||
v-for="item in resultOptions">
|
||||
{{ item.name }}
|
||||
</el-tag>
|
||||
|
||||
<el-link :underline="false" @click="pageForm.proposalResult=[];doSearch()"
|
||||
type="danger"
|
||||
v-if="resultOptions.length&&pageForm.proposalResult.length">清空
|
||||
</el-link>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row align="middle" class="query-row" type="flex">
|
||||
|
||||
<el-col class="query-row-title">代 表 团:</el-col>
|
||||
|
||||
<el-col class="query-row-content">
|
||||
<el-row>
|
||||
<el-col :span="8"
|
||||
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('tamanage')||@shiro.hasRole('jdhdbt01')}">
|
||||
<!-- <span>代表团:</span>-->
|
||||
<el-select @change="delegationChange" clearable filterable placeholder="所属代表团"
|
||||
style="width: 350px" v-model="pageForm.delegationId">
|
||||
<el-option :key="item.id"
|
||||
:label="item.dbtname"
|
||||
:value="item.id"
|
||||
v-for="item in delegationOptions">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<span>所属工会:</span>
|
||||
<el-select @change="unionChange" clearable filterable
|
||||
placeholder="请选择所属工会" style="width: 350px" v-model="pageForm.unionId">
|
||||
<el-option
|
||||
:key="item.id"
|
||||
:label="item.unionname"
|
||||
:value="item.id"
|
||||
v-for="item in unionOptions">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<span>所属单位:</span>
|
||||
<el-select @change="doSearch" clearable filterable
|
||||
placeholder="请选择所属单位会" style="width: 350px" v-model="pageForm.unitId">
|
||||
<el-option
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
v-for="item in unitOptions">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never" style="margin-top: 10px">
|
||||
<table-tool :app="this" label="提案信息">
|
||||
<template #func>
|
||||
<el-button @click="doDelete" icon="el-icon-s-promotion" size="small"
|
||||
type="primary">批量删除
|
||||
</el-button>
|
||||
</template>
|
||||
</table-tool>
|
||||
<el-table :data="tableData" :row-key="(row)=>{row.id}" :size="tableSize"
|
||||
@selection-change="(val)=>{batchSelection = val.map(v=>v.id)}"
|
||||
@sort-change="pageOrder" align="center"
|
||||
header-align="center">
|
||||
<el-table-column type="selection"
|
||||
width="55"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index" width="80">
|
||||
<template scope="scope">
|
||||
<span>{{ scope.$index + (pageForm.pageNumber - 1) * pageForm.pageSize + 1 }} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
:width="column.width"
|
||||
align="center"
|
||||
header-align="center"
|
||||
show-overflow-tooltip
|
||||
v-for="column in tableColumns"
|
||||
>
|
||||
<template scope="{row}" v-if="column.prop=='proposalName'">
|
||||
<el-link @click="openView(row)" type="primary">{{ row.proposalName }}</el-link>
|
||||
</template>
|
||||
<template scope="{row:{resultName}}" v-else-if="column.prop=='resultName'">
|
||||
<span>{{ resultName?resultName:'暂无' }}</span>
|
||||
</template>
|
||||
<template scope="{row:{pruMaster}}" v-else-if="column.prop==='pruMaster'">
|
||||
<span>{{ pruMaster?pruMaster:'暂无' }}</span>
|
||||
</template>
|
||||
<template scope="{row:{pruSlave}}" v-else-if="column.prop==='pruSlave'">
|
||||
<span>{{ pruSlave?pruSlave:'暂无' }}</span>
|
||||
</template>
|
||||
<template scope="{row:{feedBackResultName}}" v-else-if="column.prop==='feedBackResultName'">
|
||||
<span>{{ feedBackResultName?feedBackResultName:'暂无' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column fixed="right" header-align="center" label="操作"
|
||||
label="操作" width="130px">
|
||||
<template scope="{row}">
|
||||
<el-button @click="openView(row)" size="mini"
|
||||
type="primary">查看
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
<template #view>
|
||||
<proposal-info ref="info"></proposal-info>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
batchSelection: [],
|
||||
tableColumns: [
|
||||
{prop: 'oldProposalCode', label: '草案编号', width: "120", checked: 0},
|
||||
{prop: 'proposalCode', label: '提案编号', width: "120", sortable: true, disabled: true},
|
||||
{prop: 'proposalName', label: '提案名称', width: "300", disabled: true},
|
||||
{prop: 'username', label: '提案人', disabled: true},
|
||||
{prop: 'typeCode', label: '提案类型编码', sortable: true, checked: 0},
|
||||
{prop: 'typeName', label: '提案类型', sortable: true},
|
||||
{prop: 'meetingName', label: '届次', sortable: true},
|
||||
{prop: 'delegationCode', label: '代表团编码', sortable: true, checked: 0},
|
||||
{prop: 'delegationName', label: '代表团', sortable: true},
|
||||
{prop: 'mannerName', label: '提交方式', sortable: true},
|
||||
{prop: 'resultName', label: '立案结果', sortable: true},
|
||||
// {prop: 'laLevelName', label: '是否重点', sortable: true, checked: 0},
|
||||
{prop: 'stateName', label: '提案状态', sortable: true},
|
||||
{prop: 'feedBackResultName', label: '反馈意见', sortable: true, checked: 0},
|
||||
{prop: 'pruMaster', label: '主办单位', sortable: true},
|
||||
{prop: 'pruMasterCode', label: '主办单位编码', sortable: true, checked: 0},
|
||||
{prop: 'pruSlave', label: '协办单位', sortable: true},
|
||||
],
|
||||
resultOptions: [],
|
||||
typeOptions: [],
|
||||
meetingOptions: [],
|
||||
stateOptions: [],
|
||||
delegationOptions: [],
|
||||
unionOptions: [],
|
||||
unitOptions: [],
|
||||
pageForm: {
|
||||
searchName: "proposalName",
|
||||
searchName2: "su.username",
|
||||
searchKeyword2: '',
|
||||
stateCode: '',
|
||||
meetingId: '',
|
||||
delegationId: '',
|
||||
proposalResult: [],
|
||||
proposalTypes: []
|
||||
}
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'guava': httpVueLoader('/components/plugins/Guava.vue'),
|
||||
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue'),
|
||||
'proposal-table': httpVueLoader('/components/proposal/ProposalTable.vue'),
|
||||
},
|
||||
methods: {
|
||||
async doDelete() {
|
||||
if (this.batchSelection.length === 0) {
|
||||
this.$notify.warning('请选择需要批量审核的记录')
|
||||
return
|
||||
}
|
||||
const confirm = await this.$confirm('是否要删除您选择的提案?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
if (confirm) {
|
||||
const resp = await $.post(loc() + "/doBatchDelete", {proposalIds: JSON.stringify(this.batchSelection)})
|
||||
if(resp.code===0){
|
||||
this.notifySuccess(resp.msg)
|
||||
this.pageData()
|
||||
}else{
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
}
|
||||
},
|
||||
oneProposalExport(id) {
|
||||
window.location.href = "/platform/proposal/statistics/summary/oneProposalExport?proposalId=" + id
|
||||
},
|
||||
async meetingChange(val) {
|
||||
this.pageForm.delegationId = null
|
||||
this.delegationOptions = await proposal.getDelegation(val)
|
||||
this.doSearch()
|
||||
},
|
||||
async delegationChange(val) {
|
||||
this.pageForm.unionId = null
|
||||
this.unionOptions = await getUnions(val)
|
||||
this.doSearch()
|
||||
},
|
||||
async unionChange(val) {
|
||||
this.pageForm.unitId = null
|
||||
this.unitOptions = await getUnits(val)
|
||||
this.doSearch()
|
||||
},
|
||||
checkProposalResult(result) {
|
||||
let idx = this.pageForm.proposalResult.indexOf(result)
|
||||
if (idx !== -1) {
|
||||
this.pageForm.proposalResult.splice(idx, 1)
|
||||
} else {
|
||||
this.pageForm.proposalResult.push(result)
|
||||
}
|
||||
this.doSearch()
|
||||
},
|
||||
checkProposalType(type) {
|
||||
let idx = this.pageForm.proposalTypes.indexOf(type)
|
||||
if (idx !== -1) {
|
||||
this.pageForm.proposalTypes.splice(idx, 1)
|
||||
} else {
|
||||
this.pageForm.proposalTypes.push(type)
|
||||
}
|
||||
this.doSearch()
|
||||
},
|
||||
openView(row) {
|
||||
this.$refs.guava.view()
|
||||
this.$refs.info.openView(row.id)
|
||||
},
|
||||
pageData() {
|
||||
sublime.showLoadingbar();
|
||||
this.tableLoading = true
|
||||
|
||||
const pageForm = clone(this.pageForm)
|
||||
pageForm.proposalTypes = JSON.stringify(pageForm.proposalTypes)
|
||||
pageForm.proposalResult = JSON.stringify(pageForm.proposalResult)
|
||||
|
||||
$.post("/platform/proposal/statistics/integrated/pageData", pageForm, (data) => {
|
||||
sublime.closeLoadingbar();
|
||||
this.tableLoading = false
|
||||
if (data.code === 0) {
|
||||
this.tableData = data.data.list;
|
||||
this.pageForm.totalCount = data.data.totalCount;
|
||||
} else {
|
||||
this.$message.error(data.msg);
|
||||
}
|
||||
}, "json");
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.meetingOptions = await proposal.getAllMeeting()
|
||||
this.pageForm.meetingId = this.meetingOptions.length ? this.meetingOptions[0].id : ''
|
||||
|
||||
this.stateOptions = await proposal.getOpenProposalState()
|
||||
this.typeOptions = await proposal.getProposalType()
|
||||
this.resultOptions = await getDictOptions("proposal_result")
|
||||
|
||||
this.delegationOptions = await proposal.getDelegation(this.pageForm.meetingId)
|
||||
this.unionOptions = await getUnions(null)
|
||||
this.unitOptions = await getUnits(null)
|
||||
this.pageData();
|
||||
}
|
||||
})
|
||||
</script>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -1,134 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<template>
|
||||
<proposal-search :page="pageForm" @search="doSearch" :audit="false">
|
||||
<template #column>
|
||||
<el-button type="primary" :loading="urgeLoading" :disabled="selectIds.length === 0"
|
||||
@click="batchUrge">批量催办
|
||||
</el-button>
|
||||
</template>
|
||||
</proposal-search>
|
||||
|
||||
<proposal-table :loading="tableLoading" :page="pageForm" :data="tableData"
|
||||
@order="pageOrder" @view="openView" selection @selection="handleSelectionChange">
|
||||
<template #column>
|
||||
<el-table-column align="center" header-align="center" label="催办次数">
|
||||
<template scope="{row}">
|
||||
<el-link type="primary" @click="findUrgeRecord(row.id)">{{row.urgeNum}}</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="操作" width="100px">
|
||||
<template scope="{row}">
|
||||
<el-button type="primary" size="mini" @click="doUrge(row)"
|
||||
:disabled="row.isAllReply" :loading="row.submitDisabled">催办
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
</proposal-table>
|
||||
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</template>
|
||||
|
||||
<template #view>
|
||||
<proposal-info ref="info"></proposal-info>
|
||||
</template>
|
||||
</guava>
|
||||
|
||||
<el-dialog title="催办记录" :visible.sync="urgeDialog">
|
||||
<el-table :data="urgeRecordList">
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index" width="80"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" property="urgeUserName"
|
||||
label="催办人姓名"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" property="urgeLoginName"
|
||||
label="催办人工号"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" property="operateTime" label="催办时间"></el-table-column>
|
||||
</el-table>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
'guava': httpVueLoader('/components/plugins/Guava.vue'),
|
||||
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue'),
|
||||
'proposal-search': httpVueLoader('/components/proposal/ProposalSearch.vue'),
|
||||
'proposal-table': httpVueLoader('/components/proposal/ProposalTable.vue'),
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
urgeLoading: false,
|
||||
urgeDialog: false,
|
||||
pageForm: {searchName: 'proposalName'},
|
||||
urgeRecordList: [],
|
||||
selectIds: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleSelectionChange(val) {
|
||||
this.selectIds = val.map(v => {
|
||||
return v.id
|
||||
})
|
||||
},
|
||||
batchUrge() {
|
||||
this.urgeLoading = true
|
||||
this.$confirm('确定催办吗?', '提示', {type: 'warning'}).then(async () => {
|
||||
const resp = await $.post(loc() + "/doBatchUrge", {ids: JSON.stringify(this.selectIds)})
|
||||
if(resp.code===0){
|
||||
this.notifySuccess(resp.msg)
|
||||
this.pageData()
|
||||
}else{
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
this.urgeLoading = false
|
||||
}).catch(() => {
|
||||
this.urgeLoading = false
|
||||
});
|
||||
},
|
||||
openView(row) {
|
||||
this.$refs.guava.view()
|
||||
this.$refs.info.openView(row.id)
|
||||
},
|
||||
async findUrgeRecord(proposalId) {
|
||||
this.urgeDialog = true
|
||||
const resp = await $.post(loc() + "/findUrgeRecord", {proposalId})
|
||||
if(resp.code===0){
|
||||
this.urgeRecordList = resp.data
|
||||
}else{
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
},
|
||||
async doUrge(row) {
|
||||
this.$set(row, "submitDisabled", true)
|
||||
|
||||
this.$confirm('确定催办吗?', '提示', {type: 'warning'}).then(async () => {
|
||||
const resp = await $.post(loc() + "/doUrge", {proposalId: row.id})
|
||||
|
||||
if(resp.code===0){
|
||||
this.notifySuccess(resp.msg)
|
||||
this.pageData()
|
||||
}else{
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
this.$set(row, "submitDisabled", false)
|
||||
}).catch(() => {
|
||||
this.$set(row, "submitDisabled", false)
|
||||
});
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
await initData(null, this)
|
||||
this.unitOptions = await proposal.getProposalUndertake()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
Reference in New Issue
Block a user