| | |
| | | <!-- eslint-disable vue/valid-v-for --> |
| | | <template> |
| | | <basic-container> |
| | | <el-form ref="form" :model="form" label-width="80px"> |
| | |
| | | <span>审批信息</span> |
| | | </div> |
| | | <avue-form :option="option" :value="form" :upload-after="uploadAfter"> |
| | | |
| | | <template slot-scope="{ row, size, index }" slot="vote"> |
| | | <div>{{ topicTitle }}</div> |
| | | <el-table :data="topictData" v-if="topictData.length"> |
| | |
| | | </el-table> |
| | | </template> |
| | | |
| | | <template slot-scope="{ row, size, index }" v-for="(item) in keyArray" :slot="item"> |
| | | <el-button v-show="showDownLoadButton(item)" icon="el-icon-download" type="primary" size="small" @click="downLoad(form[item])">文件下载</el-button> |
| | | </template> |
| | | </avue-form> |
| | | <!-- <el-form-item label="申请人"> |
| | | <el-input :disabled="true" v-model="form.flow.assigneeName" /> |
| | |
| | | </div> |
| | | <el-row type="flex" class="row-bg"> |
| | | <el-timeline> |
| | | <el-timeline-item :key="flow.id" :timestamp="flow.createTime" v-for="flow in flowList" placement="top"> |
| | | <el-timeline-item :key="flow.id" :timestamp="flow.createTime" v-for="flow in flowList" |
| | | placement="top"> |
| | | <el-card shadow="hover"> |
| | | <p>{{ flow.assigneeName }} 在 [{{ flow.createTime }}] 开始处理 [{{ flow.historyActivityName }}] 环节</p> |
| | | <p v-if="flow.historyActivityDurationTime !== ''">任务历时 [{{ flow.historyActivityDurationTime }}]</p> |
| | | <p>{{ flow.assigneeName }} 在 [{{ flow.createTime }}] 开始处理 [{{ flow.historyActivityName |
| | | }}] 环节</p> |
| | | <p v-if="flow.historyActivityDurationTime !== ''">任务历时 [{{ |
| | | flow.historyActivityDurationTime }}]</p> |
| | | <p v-if="flow.comment !== ''">批复意见: [{{ flow.comment }}]</p> |
| | | <p v-if="flow.endTime !== ''">结束时间: [{{ flow.endTime }}]</p> |
| | | </el-card> |
| | |
| | | import { |
| | | historyFlowList, |
| | | leaveDetail |
| | | } from "@/api/work/process"; |
| | | } from "@/api/work/process" |
| | | import { |
| | | getList, |
| | | remove, |
| | | update, |
| | | add, |
| | | getPropertyCapitalApply |
| | | } from "@/api/property/propertyCapitalApply"; |
| | | } from "@/api/property/propertyCapitalApply" |
| | | |
| | | import { |
| | | getLists |
| | |
| | | }, |
| | | data() { |
| | | return { |
| | | keyArray: [ |
| | | 'file1', |
| | | 'file2', |
| | | 'file3', |
| | | 'file4', |
| | | 'file5', |
| | | 'file6', |
| | | 'file7', |
| | | 'file8', |
| | | 'file9', |
| | | 'file10', |
| | | 'file11', |
| | | ], |
| | | businessId: '', |
| | | processInstanceId: '', |
| | | src: '', |
| | |
| | | console.log("val===>", val) |
| | | // console.log("form===>",this.form) |
| | | if (val.value && !this.form.id) { |
| | | this.articleRange = val.articleRange; |
| | | this.articleRange = val.articleRange |
| | | // this.showDialog = true; |
| | | // this.getDetail(val.value, val.articleRange) |
| | | } |
| | |
| | | // } |
| | | { |
| | | label: "维修资金使用申请审批表", |
| | | slot: true, |
| | | offset: 2, |
| | | labelPosition: "top", |
| | | prop: "file1", |
| | |
| | | }, |
| | | { |
| | | label: "申请使用维修资金的报告、附维修部位彩色照片、业委会(物管会)会议纪要(社区意见)", |
| | | slot: true, |
| | | offset: 2, |
| | | labelPosition: "top", |
| | | prop: "file2", |
| | |
| | | }, |
| | | { |
| | | label: "公示单,预算,现场勘察图片、公示照片(公示期7天)", |
| | | slot: true, |
| | | offset: 2, |
| | | labelPosition: "top", |
| | | prop: "file3", |
| | |
| | | }, |
| | | { |
| | | label: "维修单位出具的工程款发票(验收合格后以竣工决算审核报告审定金额开具)", |
| | | slot: true, |
| | | offset: 2, |
| | | labelPosition: "top", |
| | | prop: "file4", |
| | |
| | | }, |
| | | { |
| | | label: "应急维修需提供专业机构出具的检验检测报告或(乡镇人民政府)街道办事处现场核实意见", |
| | | slot: true, |
| | | offset: 2, |
| | | labelPosition: "top", |
| | | prop: "file5", |
| | |
| | | }, |
| | | { |
| | | label: "业主签名表或线上表决记录(应急情况不提供)", |
| | | slot: true, |
| | | offset: 2, |
| | | labelPosition: "top", |
| | | prop: "file6", |
| | |
| | | }, |
| | | { |
| | | label: "政府采购资料", |
| | | slot: true, |
| | | offset: 2, |
| | | labelPosition: "top", |
| | | prop: "file7", |
| | |
| | | }, |
| | | { |
| | | label: "维修和更新、改造方案、维修项目的协议或合同", |
| | | slot: true, |
| | | offset: 2, |
| | | labelPosition: "top", |
| | | prop: "file8", |
| | |
| | | }, |
| | | { |
| | | label: "维修改造工程竣工验收单一式两份(维修完工需经申请人签字);维修项目签证单(超出预算清单内容的需出具签证单)", |
| | | slot: true, |
| | | offset: 2, |
| | | labelPosition: "top", |
| | | prop: "file9", |
| | |
| | | }, |
| | | { |
| | | label: "维修项目决算、造价机构出具的决算审价报告", |
| | | slot: true, |
| | | offset: 2, |
| | | labelPosition: "top", |
| | | prop: "file10", |
| | |
| | | }, |
| | | { |
| | | label: "业主委员会情况登记表;经办人或代理人证件(复印件),复印件上签名、联系电话", |
| | | slot: true, |
| | | offset: 2, |
| | | labelPosition: "top", |
| | | prop: "file11", |
| | |
| | | handler(newData) { |
| | | const column = this.findObject(this.option.column, "articleId") |
| | | if (newData && this.form.articleId) { |
| | | column.display = true; |
| | | column.display = true |
| | | } else { |
| | | column.display = false |
| | | } |
| | |
| | | this.getVoteDetail(this.form.articleId, this.articleRange) |
| | | const column = this.findObject(this.option.column, "vote") |
| | | if (newData) { |
| | | column.display = true; |
| | | column.display = true |
| | | } else { |
| | | column.display = false |
| | | } |
| | |
| | | |
| | | }, |
| | | |
| | | computed: { |
| | | showDownLoadButton () { |
| | | return (item) => { |
| | | if (item in this.form && JSON.stringify(this.form[item]) != '') { |
| | | return true |
| | | } else { |
| | | return false |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | |
| | | |
| | | created() { |
| | | this.init(); |
| | | this.init() |
| | | }, |
| | | methods: { |
| | | init() { |
| | | this.processInstanceId = this.$route.params.processInstanceId; |
| | | this.businessId = this.$route.params.businessId; |
| | | this.processInstanceId = this.$route.params.processInstanceId |
| | | this.businessId = this.$route.params.businessId |
| | | historyFlowList(this.processInstanceId).then(res => { |
| | | const data = res.data; |
| | | const data = res.data |
| | | if (data.success) { |
| | | this.flowList = data.data; |
| | | this.flowList = data.data |
| | | } |
| | | }) |
| | | getPropertyCapitalApply(this.businessId).then(res => { |
| | | const data = res.data; |
| | | const data = res.data |
| | | if (data.success) { |
| | | this.form = data.data; |
| | | this.form = data.data |
| | | if (this.form.attachment) { |
| | | this.form.attachment = JSON.parse(this.form.attachment) |
| | | this.form.attachment.forEach(item => { |
| | |
| | | }) |
| | | }, |
| | | handleCancel() { |
| | | this.$router.$avueRouter.closeTag(); |
| | | this.$router.$avueRouter.closeTag() |
| | | this.$router.push({ |
| | | path: `/work/start` |
| | | }); |
| | | }) |
| | | }, |
| | | |
| | | getVoteDetail(articleId, districtId) { |
| | |
| | | getLists(1, 10, params).then(res => { |
| | | const data = res.data.data |
| | | if (data.length) { |
| | | this.topictData = data[0].children; |
| | | this.topicTitle = data[0].discussContent; |
| | | this.topictData = data[0].children |
| | | this.topicTitle = data[0].discussContent |
| | | } |
| | | }) |
| | | }, |
| | |
| | | openUserPopup(row) { |
| | | this.$refs.DeitDiscussion.openUser(row, 1, [this.form.districtId]) |
| | | }, |
| | | |
| | | downLoad (fileObj) { |
| | | window.open(fileObj.fileUrl) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | <div slot="header"> |
| | | <span>审批信息</span> |
| | | </div> |
| | | <avue-form ref="crud" :option="option" v-model="form" @submit="handleSubmit"> |
| | | <avue-form ref="crud" :option="option" v-model="form" @submit="handleSubmit" |
| | | :upload-exceed="uploadExceed"> |
| | | |
| | | <template slot-scope="{ row, size, index }" slot="vote"> |
| | | <div>{{ topicTitle }}</div> |
| | |
| | | </div> |
| | | <el-row type="flex" class="row-bg"> |
| | | <el-timeline> |
| | | <el-timeline-item :key="flow.id" :timestamp="flow.createTime" v-for="flow in flowList" placement="top"> |
| | | <el-timeline-item :key="flow.id" :timestamp="flow.createTime" v-for="flow in flowList" |
| | | placement="top"> |
| | | <el-card shadow="hover"> |
| | | <p>{{ flow.assigneeName }} 在 [{{ flow.createTime }}] 开始处理 [{{ flow.historyActivityName }}] 环节</p> |
| | | <p v-if="flow.historyActivityDurationTime !== ''">任务历时 [{{ flow.historyActivityDurationTime }}]</p> |
| | | <p>{{ flow.assigneeName }} 在 [{{ flow.createTime }}] 开始处理 [{{ flow.historyActivityName |
| | | }}] 环节</p> |
| | | <p v-if="flow.historyActivityDurationTime !== ''">任务历时 [{{ |
| | | flow.historyActivityDurationTime }}]</p> |
| | | <p v-if="flow.comment !== ''">批复意见: [{{ flow.comment }}]</p> |
| | | <p v-if="flow.endTime !== ''">结束时间: [{{ flow.endTime }}]</p> |
| | | </el-card> |
| | |
| | | import { |
| | | historyFlowList, |
| | | leaveDetail |
| | | } from "@/api/work/process"; |
| | | import userList from "../../components/userList.vue"; |
| | | } from "@/api/work/process" |
| | | import userList from "../../components/userList.vue" |
| | | |
| | | import { |
| | | getList, |
| | |
| | | update, |
| | | add, |
| | | getPropertyCapitalApply |
| | | } from "@/api/property/propertyCapitalApply"; |
| | | } from "@/api/property/propertyCapitalApply" |
| | | import { |
| | | completeTask |
| | | } from "@/api/work/work"; |
| | | } from "@/api/work/work" |
| | | import { |
| | | getLists |
| | | } from "@/api/discuss/topics" |
| | |
| | | prop: "file1", |
| | | type: "upload", |
| | | dataType: 'object', |
| | | listType: "text", |
| | | listType: "picture-card", |
| | | limit: 1, |
| | | props: { |
| | | label: 'fileUrl', |
| | | value: 'fileName' |
| | |
| | | prop: "file2", |
| | | type: "upload", |
| | | dataType: 'object', |
| | | listType: "text", |
| | | listType: "picture-card", |
| | | limit: 1, |
| | | props: { |
| | | label: 'fileUrl', |
| | | value: 'fileName' |
| | |
| | | labelPosition: "top", |
| | | prop: "file3", |
| | | type: "upload", |
| | | listType: "text", |
| | | listType: "picture-card", |
| | | limit: 1, |
| | | dataType: 'object', |
| | | action: "/api/blade-resource/oss/endpoint/put-file-attach", |
| | | propsHttp: { |
| | |
| | | labelPosition: "top", |
| | | prop: "file4", |
| | | type: "upload", |
| | | listType: "text", |
| | | listType: "picture-card", |
| | | limit: 1, |
| | | dataType: 'object', |
| | | action: "/api/blade-resource/oss/endpoint/put-file-attach", |
| | | propsHttp: { |
| | |
| | | labelPosition: "top", |
| | | prop: "file5", |
| | | type: "upload", |
| | | listType: "text", |
| | | listType: "picture-card", |
| | | limit: 1, |
| | | dataType: 'object', |
| | | action: "/api/blade-resource/oss/endpoint/put-file-attach", |
| | | propsHttp: { |
| | |
| | | labelPosition: "top", |
| | | prop: "file6", |
| | | type: "upload", |
| | | listType: "text", |
| | | listType: "picture-card", |
| | | limit: 1, |
| | | dataType: 'object', |
| | | action: "/api/blade-resource/oss/endpoint/put-file-attach", |
| | | propsHttp: { |
| | |
| | | labelPosition: "top", |
| | | prop: "file7", |
| | | type: "upload", |
| | | listType: "text", |
| | | listType: "picture-card", |
| | | limit: 1, |
| | | dataType: 'object', |
| | | action: "/api/blade-resource/oss/endpoint/put-file-attach", |
| | | propsHttp: { |
| | |
| | | labelPosition: "top", |
| | | prop: "file8", |
| | | type: "upload", |
| | | listType: "text", |
| | | listType: "picture-card", |
| | | limit: 1, |
| | | dataType: 'object', |
| | | action: "/api/blade-resource/oss/endpoint/put-file-attach", |
| | | propsHttp: { |
| | |
| | | labelPosition: "top", |
| | | prop: "file9", |
| | | type: "upload", |
| | | listType: "text", |
| | | listType: "picture-card", |
| | | limit: 1, |
| | | dataType: 'object', |
| | | action: "/api/blade-resource/oss/endpoint/put-file-attach", |
| | | propsHttp: { |
| | |
| | | labelPosition: "top", |
| | | prop: "file10", |
| | | type: "upload", |
| | | listType: "text", |
| | | listType: "picture-card", |
| | | limit: 1, |
| | | dataType: 'object', |
| | | action: "/api/blade-resource/oss/endpoint/put-file-attach", |
| | | propsHttp: { |
| | |
| | | labelPosition: "top", |
| | | prop: "file11", |
| | | type: "upload", |
| | | listType: "text", |
| | | listType: "picture-card", |
| | | limit: 1, |
| | | dataType: 'object', |
| | | action: "/api/blade-resource/oss/endpoint/put-file-attach", |
| | | propsHttp: { |
| | |
| | | handler(newData) { |
| | | const column = this.findObject(this.option.column, "articleId") |
| | | if (newData && this.form.articleId) { |
| | | column.display = true; |
| | | column.display = true |
| | | } else { |
| | | column.display = false |
| | | } |
| | |
| | | this.getVoteDetail(this.form.articleId, this.articleRange) |
| | | const column = this.findObject(this.option.column, "vote") |
| | | if (newData) { |
| | | column.display = true; |
| | | column.display = true |
| | | } else { |
| | | column.display = false |
| | | } |
| | |
| | | |
| | | |
| | | created() { |
| | | this.init(); |
| | | this.init() |
| | | }, |
| | | beforeRouteUpdate(to, from, next) { |
| | | // 在当前路由改变,但是该组件被复用时调用 |
| | |
| | | // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用 |
| | | // 可以访问组件实例 `this` |
| | | if (to.fullPath !== from.fullPath) { |
| | | next(); |
| | | this.init(); |
| | | next() |
| | | this.init() |
| | | } |
| | | }, |
| | | methods: { |
| | |
| | | }, |
| | | |
| | | getFileExtension(filename) { |
| | | var lastDotIndex = filename.lastIndexOf('.'); |
| | | var lastDotIndex = filename.lastIndexOf('.') |
| | | if (lastDotIndex !== -1) { |
| | | return filename.substring(lastDotIndex + 1); |
| | | return filename.substring(lastDotIndex + 1) |
| | | } |
| | | return ''; |
| | | return '' |
| | | }, |
| | | |
| | | selectPersonList(personList) { |
| | |
| | | handleSubmit(form, done, loading) { |
| | | if (form.constructionSchemeUrls.length > 0) { |
| | | var urls = [] |
| | | var split = form.constructionSchemeUrls.split(","); |
| | | var split = form.constructionSchemeUrls.split(",") |
| | | split.forEach(url => { |
| | | var names = url.split("jczz/"); |
| | | var names = url.split("jczz/") |
| | | urls.push(names[1]) |
| | | }) |
| | | form.constructionSchemeUrls = urls.join(",") |
| | | } |
| | | update(form).then( |
| | | () => { |
| | | this.onLoad(this.page); |
| | | this.onLoad(this.page) |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }); |
| | | done(); |
| | | }) |
| | | done() |
| | | }, |
| | | (error) => { |
| | | window.console.log(error); |
| | | loading(); |
| | | window.console.log(error) |
| | | loading() |
| | | } |
| | | ); |
| | | ) |
| | | }, |
| | | init() { |
| | | this.taskId = this.$route.params.taskId; |
| | | this.processInstanceId = this.$route.params.processInstanceId; |
| | | this.businessId = this.$route.params.businessId; |
| | | this.taskId = this.$route.params.taskId |
| | | this.processInstanceId = this.$route.params.processInstanceId |
| | | this.businessId = this.$route.params.businessId |
| | | historyFlowList(this.processInstanceId).then(res => { |
| | | const data = res.data; |
| | | const data = res.data |
| | | if (data.success) { |
| | | this.flowList = data.data; |
| | | this.flowList = data.data |
| | | } |
| | | }) |
| | | getPropertyCapitalApply(this.businessId).then(res => { |
| | | const data = res.data; |
| | | const data = res.data |
| | | if (data.success) { |
| | | this.form = data.data; |
| | | this.form = data.data |
| | | } |
| | | }) |
| | | }, |
| | |
| | | processInstanceId: this.processInstanceId, |
| | | flag: 'ok', |
| | | comment: this.form.comment, |
| | | }; |
| | | } |
| | | completeTask(params).then(res => { |
| | | const data = res.data; |
| | | const data = res.data |
| | | if (data.success) { |
| | | this.$message.success(data.msg); |
| | | this.$router.$avueRouter.closeTag(); |
| | | this.$message.success(data.msg) |
| | | this.$router.$avueRouter.closeTag() |
| | | this.$router.push({ |
| | | path: `/property/propertyCapitalApply` |
| | | }); |
| | | }) |
| | | } else { |
| | | this.$message.error(data.msg || '提交失败'); |
| | | this.$message.error(data.msg || '提交失败') |
| | | } |
| | | }) |
| | | }, |
| | | handleDisagree() { |
| | | this.form.comment = '关闭申请' |
| | | if (!this.form.comment) { |
| | | this.$message.warning('请先填写批复意见'); |
| | | return; |
| | | this.$message.warning('请先填写批复意见') |
| | | return |
| | | } |
| | | const params = { |
| | | taskId: this.taskId, |
| | | processInstanceId: this.processInstanceId, |
| | | comment: this.form.comment, |
| | | }; |
| | | } |
| | | completeTask(params).then(res => { |
| | | const data = res.data; |
| | | const data = res.data |
| | | if (data.success) { |
| | | this.$message.success(data.msg); |
| | | this.$router.$avueRouter.closeTag(); |
| | | this.$message.success(data.msg) |
| | | this.$router.$avueRouter.closeTag() |
| | | this.$router.push({ |
| | | path: `/property/propertyCapitalApply` |
| | | }); |
| | | }) |
| | | } else { |
| | | this.$message.error(data.msg || '提交失败'); |
| | | this.$message.error(data.msg || '提交失败') |
| | | } |
| | | }) |
| | | }, |
| | | handleCancel() { |
| | | this.$router.$avueRouter.closeTag(); |
| | | this.$router.$avueRouter.closeTag() |
| | | this.$router.push({ |
| | | path: `/property/todo` |
| | | }); |
| | | }) |
| | | }, |
| | | |
| | | getVoteDetail(articleId, districtId) { |
| | |
| | | getLists(1, 10, params).then(res => { |
| | | const data = res.data.data |
| | | if (data.length) { |
| | | this.topictData = data[0].children; |
| | | this.topicTitle = data[0].discussContent; |
| | | this.topictData = data[0].children |
| | | this.topicTitle = data[0].discussContent |
| | | } |
| | | }) |
| | | }, |
| | |
| | | openUserPopup(row) { |
| | | this.$refs.DeitDiscussion.openUser(row, 1, [this.form.districtId]) |
| | | }, |
| | | |
| | | uploadExceed (limit, files, fileList, column) { |
| | | console.log(limit, files, fileList, column) |
| | | this.$message.error('超出上传限制文件数量') |
| | | } |
| | | } |
| | | } |
| | | </script> |