布局政策征求意见流程

This commit is contained in:
范强强
2023-10-16 14:49:32 +08:00
parent db8a93e29d
commit 0f6c056271
5 changed files with 415 additions and 100 deletions
@@ -0,0 +1,178 @@
<template>
<el-drawer
:title="modalshowtitle"
:visible.sync="modalshowflag"
:wrapperClosable="false"
size="800px"
@close="resetForm"
ref="standard"
append-to-body
>
<!-- 新增样式 -->
<div class="demo-drawer-content">
<el-form
ref="sarStandardsInfoForm"
:model="sarStandardsInfoEO"
:rules="sarStandardsInfoRules"
class="label-input-form"
>
<el-form-item label="章节编号" prop="chapterNumber" label-width="150px" class="add-form-item">
<el-input v-model.trim="sarStandardsInfoEO.chapterNumber"
placeholder="请输入章节编号"
clearable></el-input>
</el-form-item>
<el-form-item label="章节条目" prop="chapterEntry" label-width="150px" class="add-form-item">
<el-input v-model.trim="sarStandardsInfoEO.chapterEntry"
placeholder="请输入章节条目"
clearable></el-input>
</el-form-item>
<el-form-item label="修改前" prop="beforeRevision" label-width="150px" class="add-form-item">
<el-input v-model.trim="sarStandardsInfoEO.beforeRevision"
placeholder="请输入修改前"
clearable></el-input>
</el-form-item>
<el-form-item label="修改后" prop="afterRevision" label-width="150px" class="add-form-item">
<el-input v-model.trim="sarStandardsInfoEO.afterRevision"
placeholder="请输入修改后"
clearable></el-input>
</el-form-item>
<el-form-item label="修改理由" prop="revisionModification" label-width="150px" class="add-form-item">
<el-input v-model.trim="sarStandardsInfoEO.revisionModification"
placeholder="请输入修改理由"
clearable></el-input>
</el-form-item>
<el-form-item label="处理意见" prop="handlingSuggestion" label-width="150px" class="add-form-item">
<el-input v-model.trim="sarStandardsInfoEO.handlingSuggestion"
placeholder="请输入处理意见"
clearable></el-input>
</el-form-item>
<el-form-item label="原因" prop="reason" label-width="150px" class="add-form-item">
<el-input v-model.trim="sarStandardsInfoEO.reason"
placeholder="请输入原因"
clearable></el-input>
</el-form-item>
</el-form>
</div>
<div class="demo-drawer-footer">
<el-button size="mini" class="common-button-primary" icon="el-icon-check" type="primary"
@click="saveOrUpdateStands" :loading="isSubmit">提交
</el-button>
<el-button size="mini" class="common-button-default" icon="el-icon-close" @click="resetForm">取消</el-button>
</div>
</el-drawer>
</template>
<script>
export default {
name: "addModel",
data() {
return {
modalshowflag: false,
modalshowtitle: '添加',
isSubmit: false,
sarStandardsInfoEO: {},
sarStandardsInfoRules: {
chapterNumber: [
{
type: "string",
max: 200,
message: "章节编号不能超过100个字符",
trigger: "blur"
}
],
chapterEntry: [
{
type: "string",
max: 200,
message: "章节条目不能超过100个字符",
trigger: "blur"
}
],
beforeRevision: [
{
type: "string",
max: 200,
message: "修改前不能超过100个字符",
trigger: "blur"
}
],
afterRevision: [
{
type: "string",
max: 200,
message: "修改后不能超过100个字符",
trigger: "blur"
}
],
revisionModification: [
{
type: "string",
max: 200,
message: "修改理由不能超过100个字符",
trigger: "blur"
}
],
handlingSuggestion: [
{
type: "string",
max: 200,
message: "处理意见不能超过100个字符",
trigger: "blur"
}
],
reason: [
{
type: "string",
max: 200,
message: "原因不能超过100个字符",
trigger: "blur"
}
],
},
}
},
methods: {
add() {
this.modalshowflag = true
this.sarStandardsInfoEO = {}
},
edit(row) {
this.modalshowflag = true
this.sarStandardsInfoEO = JSON.parse(JSON.stringify(row))
},
resetForm() {
this.modalshowflag = false
},
saveOrUpdateStands() {
let timestamp = new Date().getTime();
if (!this.sarStandardsInfoEO.dataId) {
this.sarStandardsInfoEO.dataId = timestamp
}
this.isSubmit = true
this.$emit('addModelForm', this.sarStandardsInfoEO)
this.modalshowflag = false
this.$nextTick(() => {
this.isSubmit = false
})
},
}
}
</script>
<style lang="less" scoped>
@import '~@/assets/styles/mixins';
@import '~@/assets/styles/style';
.demo-drawer-content {
.drawer-content {
height: calc(~'100% - 52px - 56px');
flex: auto;
display: flex;
flex-direction: column;
}
}
::v-deep .demo-drawer-footer {
height: 60px !important;
}
</style>
@@ -64,14 +64,14 @@
} }
}, },
mounted() { mounted() {
this.getHistoryData() // this.getHistoryData()
}, },
methods: { methods: {
getHistoryData() { getHistoryData() {
this.$http.get('lawss/activiti/get_list_by_instance', { this.$http.get('lawss/activiti/get_list_by_instance', {
prcNum: this.$route.query.prcNum, prcNum: this.$route.query.prcNum,
}, {}, res => { }, {}, res => {
this.histortData = res this.histortData = res || []
}, e => { }, e => {
}) })
}, },
@@ -46,7 +46,7 @@
:data="tableData.standardData" :data="tableData.standardData"
tooltip-effect="dark" tooltip-effect="dark"
style="width: 100%;" style="width: 100%;"
:height="tableHeight.standardTableHeight" height="calc(100vh - 220px)"
border border
class="drag-table" class="drag-table"
:header-cell-style="{background: '#f8f8f9', color: '#515a6e'}" :header-cell-style="{background: '#f8f8f9', color: '#515a6e'}"
@@ -67,7 +67,8 @@
align="center" align="center"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<a @click="handlePreview(scope.row)" style="color: #409eff;cursor: pointer">{{ scope.row.lawsNumber }}</a> <a @click="handlePreview(scope.row)" style="color: #409eff;cursor: pointer">{{
scope.row.lawsNumber }}</a>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
@@ -82,7 +83,9 @@
prop="issueTime" prop="issueTime"
label="发布日期" label="发布日期"
align="center"> align="center">
<template slot-scope="scope">{{ scope.row.issueTime ? $moment(scope.row.issueTime).format('YYYY-MM-DD') : '' }}</template> <template slot-scope="scope">{{ scope.row.issueTime ?
$moment(scope.row.issueTime).format('YYYY-MM-DD') : '' }}
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="textStatus" prop="textStatus"
@@ -141,28 +144,29 @@
<script> <script>
export default { export default {
name: "policySolicitingOpinions", name: "policySolicitingOpinions",
data(){ data() {
return{ return {
standardDrawer: false, standardDrawer: false,
standardSearchForm:{ standardSearchForm: {
page: 1, page: 1,
pageSize: this.$store.getters.userInfo.configContent, pageSize: this.$store.getters.userInfo.configContent,
}, },
tableData: { tableData: {
// 标准表格数据 // 标准表格数据
standardData: [], standardData: [],
// 任务分解单数据 // 任务分解单数据
taskTableData: [] taskTableData: []
}, },
tableHeight: { tableHeight: {
standardTableHeight: null standardTableHeight: null
}, },
standardCheckedList:[], standardCheckedList: [],
disabledXX:false, disabledXX: false,
dataLoading:false, dataLoading: false,
} loadSarStandard:false,
}
}, },
methods:{ methods: {
handleReviseDrawerClose(done) { handleReviseDrawerClose(done) {
done() done()
}, },
@@ -179,7 +183,11 @@
}, },
getDomesticStandardTable() { getDomesticStandardTable() {
this.loadSarStandard = true this.loadSarStandard = true
this.$http.get('lawss/sarLawsInfo/page', this.standardSearchForm, {}, res => { let query = {
standType: 'INLAND',
...this.standardSearchForm
}
this.$http.get('lawss/sarLawsInfo/page', query, {}, res => {
this.loadSarStandard = false this.loadSarStandard = false
if (res.ok) { if (res.ok) {
this.tableData.standardData = res.data.list this.tableData.standardData = res.data.list
@@ -211,11 +219,21 @@
this.standardSearchForm.pageSize = pageSize this.standardSearchForm.pageSize = pageSize
this.handleSearchStandard() this.handleSearchStandard()
}, },
filterObj(obj){ //清空搜索条件
if(obj && obj !== ''){ handleResetSearch() {
if(obj instanceof Array){ this.standardSearchForm = {
page: 1,
pageSize: this.$store.getters.userInfo.configContent,
}
setTimeout(() => {
this.handleSearchStandard()
}, 100)
},
filterObj(obj) {
if (obj && obj !== '') {
if (obj instanceof Array) {
return obj; return obj;
}else { } else {
return obj.split(",") return obj.split(",")
} }
} }
@@ -225,49 +243,22 @@
switch (status) { switch (status) {
// 带入 // 带入
case 2: case 2:
if(!this.standardCheckedList.length){ if (!this.standardCheckedList.length) {
this.$message.warning('请至少选择一条政策信息进行带入') this.$message.warning('请至少选择一条政策信息进行带入')
}else if(this.standardCheckedList.length > 1){ } else if (this.standardCheckedList.length > 1) {
this.$message.warning('您只能选择一条政策信息进行带入') this.$message.warning('您只能选择一条政策信息进行带入')
}else{ } else {
this.dataLoading = true this.dataLoading = true
this.standardDrawer = false
this.$http.get('lawss/sarLawsInfo/getStandInfoUpdateById', {id: this.standardCheckedList[0].id}, { this.$http.get('lawss/sarLawsInfo/getStandInfoUpdateById', {id: this.standardCheckedList[0].id}, {
_this: this _this: this
}, res => { }, res => {
if (res && res.data) { if (res && res.data) {
const bringData = res.data const bringData = res.data
this.standardDrawer = false
const json = Object.assign(bringData, bringData.attrInfoMap); const json = Object.assign(bringData, bringData.attrInfoMap);
this.form = JSON.parse(JSON.stringify(json)) this.$emit('policySolicitingOpinionsForm', json)
const dateArr = []
if(this.form.commentCycleStart && this.form.commentCycleEnd){
dateArr[0] = this.form.commentCycleStart
dateArr[1] = this.form.commentCycleEnd
this.form.cycleTime = dateArr
}
this.form['lawsSyqy'] = this.filterObj(this.form['lawsSyqy'])
this.form['lawsSycx'] = this.filterObj(this.form['lawsSycx'])
this.form['lawsLabel'] = this.filterObj(this.form['lawsLabel'])
this.form['YYRZLAWS'] = this.filterObj(this.form['YYRZLAWS'])
this.form['NYLXLAWS'] = this.filterObj(this.form['NYLXLAWS'])
this.form['TGRLAWS'] = this.filterObj(this.form['TGRLAWS'])
this.form['ZRBMLAWS'] = this.filterObj(this.form['ZRBMLAWS'])
this.form['TGDWLAWS'] = this.filterObj(this.form['TGDWLAWS'])
this.form.prcNum = this.prcNum
this.form.prcName = this.prcName
this.form['id'] = bringData.id
this.dataLoading = false this.dataLoading = false
this.busVsFunc()
this.modelFunc()
this.$forceUpdate()
} }
// 遍历对象初始化文件信息
for (const p in this.form) {
if (typeof (this.form[p]) != "function") {
this.initializeFileList(p, this.form[p]);
}
}
console.log("res", res);
}) })
} }
break break
@@ -282,6 +273,41 @@
} }
</script> </script>
<style scoped> <style lang="less" scoped>
.demo-drawer-footer {
height: 70px !important;
}
.standard-content {
height: 100%;
padding: 10px 0 0;
.content {
height: 100%;
display: flex;
flex-direction: column;
padding: 0 10px;
.standard-table-wrap {
flex: auto;
overflow-y: auto;
}
.pagination {
position: static;
/deep/ .pagination-slot {
padding: 0;
}
}
.search-area {
display: flex;
justify-content: left;
background: #FFF;
padding: 10px 10px 0;
}
}
}
</style> </style>
@@ -12,62 +12,79 @@
</el-button> </el-button>
<el-button <el-button
class="common-button-primary add-button" class="common-button-primary add-button"
@click="deleteModel" @click="batchDeleteModel"
><i class="iconfont">&#xe61b;</i>批量删除 ><i class="iconfont">&#xe61b;</i>批量删除
</el-button> </el-button>
<el-button <el-button
type="primary" type="primary"
class="common-button-primary add-button" class="common-button-primary add-button"
@click="addModel" @click="generateSummary"
>生成汇总单 >生成汇总单
</el-button> </el-button>
<el-button <el-button
type="primary" type="primary"
class="common-button-primary add-button" class="common-button-primary add-button"
@click="addModel" @click="generateReportComments"
>生成上报意见 >生成上报意见
</el-button> </el-button>
<el-button
type="primary"
class="common-button-primary add-button"
@click="exportModel"
>导出
</el-button>
</div> </div>
<el-table <el-table
height="100%" height="500"
ref="selection" ref="selection"
:data="histortData" :data="histortData"
tooltip-effect="dark" tooltip-effect="dark"
style="width: 100%" style="width: 100%"
border border
row-key="id" row-key="id"
@selection-change="selectChange"
:header-cell-style="{background: '#f8f8f9', color: '#515a6e'}"> :header-cell-style="{background: '#f8f8f9', color: '#515a6e'}">
<el-table-column <el-table-column
prop="name" type="selection"
width="55"
align="center">
</el-table-column>
<el-table-column
type="index"
label="序号" label="序号"
width="80" width="80"
align="center" align="center"
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="assignee" prop="chapterNumber"
label="章节编号" label="章节编号"
show-overflow-tooltip
align="center" align="center"
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="createTime" prop="chapterEntry"
label="章节条目" label="章节条目"
show-overflow-tooltip
align="center"> align="center">
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="endTime" prop="beforeRevision"
label="修改前" label="修改前"
show-overflow-tooltip
align="center"> align="center">
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="comment" prop="afterRevision"
label="修改后" label="修改后"
show-overflow-tooltip
align="center"> align="center">
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="completeFlag" prop="revisionModification"
label="修改理由" label="修改理由"
show-overflow-tooltip
align="center"> align="center">
</el-table-column> </el-table-column>
<el-table-column <el-table-column
@@ -76,68 +93,154 @@
align="center"> align="center">
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="completeFlag" prop="personInCharge"
label="责任人" label="责任人"
show-overflow-tooltip
align="center"> align="center">
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="completeFlag" prop="completeFlag"
label="提出部门" label="提出部门"
show-overflow-tooltip
align="center"> align="center">
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="completeFlag" prop="proposingDepartment"
label="提出人" label="提出人"
show-overflow-tooltip
align="center"> align="center">
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="completeFlag" prop="handlingSuggestion"
label="处理意见" label="处理意见"
show-overflow-tooltip
align="center"> align="center">
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="completeFlag" prop="reason"
label="原因" label="原因"
show-overflow-tooltip
align="center"> align="center">
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="completeFlag"
label="操作" label="操作"
width="70"
align="center"> align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<a @click="edit">编辑</a> <div @click.stop style="display: inline-block">
<el-dropdown trigger="click" @command="handleCommand">
<i class="iconfont">&#xe61e;</i>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="[scope.row, scope.$index, '编辑']">编辑
</el-dropdown-item>
<el-dropdown-item :command="[scope.row, scope.$index,'删除']">删除
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<addModel ref="addModelRef" @addModelForm="addModelForm"/>
</div> </div>
</template> </template>
<script> <script>
import ProcessTitle from "../../../components/ProcessTitle"; import ProcessTitle from "../../../components/ProcessTitle";
import addModel from "./addModel";
export default { export default {
name: "solicitationList", name: "solicitationList",
components: { components: {
ProcessTitle ProcessTitle,
addModel
}, },
data() { data() {
return { return {
histortData: [], histortData: [],
addOrEdit: 'add',
editNum: 0,
selectList: [],
} }
}, },
mounted() { mounted() {
}, },
methods: { methods: {
generateSummary(){
},
generateReportComments(){
},
exportModel(){
},
addModel() { addModel() {
this.addOrEdit = 'add'
this.$refs.addModelRef.add()
},
selectChange(row) {
this.selectList = row
},
batchDeleteModel() {
if (this.selectList && this.selectList.length > 0) {
this.$confirm('确认删除这些数据?', '提示', {
confirmButtonText: '确定',
confirmButtonClass: 'common-button-primary',
cancelButtonText: '取消',
type: 'warning',
roundButton: false
}).then(() => {
this.selectList.forEach(val => {
this.histortData = this.histortData.filter(res => {
return res.dataId != val.dataId
})
})
this.histortData = [...this.histortData]
}).catch(() => {
// 取消删除,清空选择
this.$refs.selection.clearSelection()
})
} else {
this.$message.warning('请选择至少一条数据')
}
}, },
deleteModel() { handleCommand(command) {
switch (command[2]) {
case "编辑":
this.addOrEdit = 'edit'
this.editNum = command[1]
this.$refs.addModelRef.edit(command[0])
break;
case "删除":
this.deleteSarAccess(command[1]);
break;
}
}, },
edit() { deleteSarAccess(num) {
this.$confirm('确认删除数据?', '提示', {
confirmButtonText: '确定',
confirmButtonClass: 'common-button-primary',
cancelButtonText: '取消',
type: 'warning',
roundButton: false
}).then(() => {
this.histortData.splice(num, 1)
this.histortData = [...this.histortData]
}).catch(() => {
// 取消删除,清空选择
// this.$refs.multipleTable.clearSelection()
})
},
addModelForm(row) {
if (this.addOrEdit == 'add') {
this.histortData.push(row)
} else if (this.addOrEdit == 'edit') {
this.histortData[this.editNum] = row
this.histortData = [...this.histortData]
}
}, },
}, },
} }
@@ -149,4 +252,10 @@
padding: 9px 15px; padding: 9px 15px;
height: auto; height: auto;
} }
.textClass {
color: #66b1ff;
margin-right: 8px;
cursor: pointer;
}
</style> </style>
@@ -186,6 +186,8 @@
:is-visible.sync="drawerModal" :is-visible.sync="drawerModal"
@checkedRole="checkedRole" @checkedRole="checkedRole"
></Role-tree> ></Role-tree>
<policySolicitingOpinions ref="policySolicitingOpinionsRef"
@policySolicitingOpinionsForm="policySolicitingOpinionsForm"/>
</div> </div>
</template> </template>
@@ -193,9 +195,10 @@
import ProcessHeader from "../../components/ProcessHeader"; import ProcessHeader from "../../components/ProcessHeader";
import ProcessTitle from "../../components/ProcessTitle"; import ProcessTitle from "../../components/ProcessTitle";
import ProcessFooter from "../../components/ProcessFooter"; import ProcessFooter from "../../components/ProcessFooter";
import approvalHistory from "./components/approvalHistory"; import approvalHistory from "./components/approvalHistory";//审批历史
import personnelInformation from "./components/personnelInformation"; import personnelInformation from "./components/personnelInformation";//人员信息
import solicitationList from "./components/solicitationList"; import solicitationList from "./components/solicitationList";//征求意见列表
import policySolicitingOpinions from "./components/policySolicitingOpinions";
import {queryTaskFirst, saveTaskFirst, taskDel, changeAssigneeNew} from "api/process"; import {queryTaskFirst, saveTaskFirst, taskDel, changeAssigneeNew} from "api/process";
import axios from "axios"; import axios from "axios";
@@ -207,7 +210,8 @@
ProcessFooter, ProcessFooter,
approvalHistory, approvalHistory,
personnelInformation, personnelInformation,
solicitationList solicitationList,
policySolicitingOpinions
}, },
data() { data() {
return { return {
@@ -252,16 +256,14 @@
handleTabs(type) { handleTabs(type) {
this.active = type; this.active = type;
}, },
policySolicitingOpinionsForm(row) {
this.dataForm.lawsNumber = row.lawsNumber
this.dataForm.lawsName = row.lawsName
this.dataForm.lawsId = row.id
this.dataForm = {...this.dataForm}
},
handleSearchStandard() { handleSearchStandard() {
this.standardDrawer = true this.$refs.policySolicitingOpinionsRef.handleSearchStandard()
this.$nextTick(() => {
// 动态设置表格高度
this.tableHeight.standardTableHeight = $('.standard-table-wrap').height()
window.onresize = () => {
this.tableHeight.standardTableHeight = $('.standard-table-wrap').height()
}
})
this.getDomesticStandardTable()
}, },
fileUpload() { fileUpload() {
this.fileMadel = true this.fileMadel = true
@@ -430,7 +432,7 @@
}) })
}, },
// 请求转换流程图 // 请求转换流程图
processNum (row) { processNum(row) {
axios.request({ axios.request({
url: '/api/lawss/activiti/getImg?_t=' + new Date().getTime(), url: '/api/lawss/activiti/getImg?_t=' + new Date().getTime(),
responseType: 'blob', responseType: 'blob',