From 7cc2cf7be54f1a6303a49e9a81dd26d5a96d2322 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Thu, 18 Jan 2024 18:10:51 +0800
Subject: [PATCH] Merge branch 'master' of http://s16s652780.51mypc.cn:49896/r/jczz_web
---
src/views/propertySupervision/houseHoldSupervision.vue | 92 ++++
src/views/work/process/maintenanceFundApply/handle.vue | 739 +++++++++++++++++++-------------------
src/views/property/propertyCompany.vue | 8
src/api/answerRecord/answerRecord.js | 49 ++
src/views/property/components/propertyEdit.vue | 92 +++-
src/views/propertySupervision/residentSupervision.vue | 102 +++++
6 files changed, 683 insertions(+), 399 deletions(-)
diff --git a/src/api/answerRecord/answerRecord.js b/src/api/answerRecord/answerRecord.js
new file mode 100644
index 0000000..c81970b
--- /dev/null
+++ b/src/api/answerRecord/answerRecord.js
@@ -0,0 +1,49 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+ return request({
+ url: '/api/blade-answerRecord/answerRecord/list',
+ method: 'get',
+ params: {
+ ...params,
+ current,
+ size,
+ }
+ })
+}
+
+export const getDetail = (id) => {
+ return request({
+ url: '/api/blade-answerRecord/answerRecord/detail',
+ method: 'get',
+ params: {
+ id
+ }
+ })
+}
+
+export const remove = (ids) => {
+ return request({
+ url: '/api/blade-answerRecord/answerRecord/remove',
+ method: 'post',
+ params: {
+ ids,
+ }
+ })
+}
+
+export const save = (row) => {
+ return request({
+ url: '/api/blade-answerRecord/answerRecord/submit',
+ method: 'post',
+ data: row
+ })
+}
+
+export const update = (row) => {
+ return request({
+ url: '/api/blade-answerRecord/answerRecord/submit',
+ method: 'post',
+ data: row
+ })
+}
\ No newline at end of file
diff --git a/src/views/property/components/propertyEdit.vue b/src/views/property/components/propertyEdit.vue
index 4aa57a3..44d3b6e 100644
--- a/src/views/property/components/propertyEdit.vue
+++ b/src/views/property/components/propertyEdit.vue
@@ -1,6 +1,6 @@
<template>
- <el-dialog title="" append-to-body :visible.sync="infoVisible" top="10vh" width="70%">
+ <el-dialog title="" append-to-body :visible.sync="infoVisible" top="10vh" width="70%" :before-close="handleClose">
<el-tabs v-model="activeName" @tab-click="handleClick">
<!-- <el-tab-pane label="物业信息" name="first"></el-tab-pane> -->
<el-tab-pane label="基础信息" name="info1"></el-tab-pane>
@@ -22,28 +22,37 @@
<div>
{{index+1}} .{{ item.subjectName }}
</div>
- <div v-for="(item1, index1) in item.subjectOptionList" :key="index1">
- <!-- <div>
+ <!-- <div v-for="(item1, index1) in item.subjectOptionList" :key="index1"> -->
+ <!-- <div>
{{ item1.optionName }}
</div> -->
- <el-radio-group v-model="item1.ids" v-if="item.choicesType == 0">
- <el-radio :label="item1.id">{{item1.optionName}}</el-radio>
- </el-radio-group>
+ <!-- <el-radio-group v-model="item.ids" v-if="item.choicesType == 0"> -->
- <div v-if="item.choicesType == 3">
- <div>{{item1.optionName}}</div>
+ <div v-if="item.choicesType == 0">
+ <div v-for="(item1, index1) in item.subjectOptionList" :key="index1">
+ <el-radio v-model="item1.ids" :label="item1.id">{{item1.optionName}}-----------{{item1.score}}</el-radio>
+ </div>
+ </div>
+
+ <!-- </el-radio-group> -->
+
+ <div v-if="item.choicesType == 3">
+ <!-- <div>{{item1.optionName}}</div> -->
+ <div v-for="(item1, index1) in item.subjectOptionList" :key="index1">
<el-input-number v-model="item1.numbers" @change="handleChange" :min="0" :max="25"
:label="item1.optionName"></el-input-number>
- <!-- <el-input v-model="item1.numbers" type="number" :placeholder="item1.optionName"></el-input> -->
</div>
+ <!-- <el-input v-model="item1.numbers" type="number" :placeholder="item1.optionName"></el-input> -->
</div>
+
+ <!-- </div> -->
</div>
</div>
<div slot="footer" class="dialog-footer">
- <el-button @click="payInfoVisible = false">取 消</el-button>
+ <el-button @click="infoVisible = false">取 消</el-button>
<el-button type="primary" @click="submit">提 交</el-button>
</div>
@@ -56,6 +65,10 @@
getList,
remove
} from "@/api/subjectChoices/subjectChoices";
+
+ import {
+ save
+ } from "@/api/answerRecord/answerRecord";
import {
add
} from "@/api/property/propertyCompany"
@@ -65,6 +78,7 @@
export default {
data() {
return {
+ property: {},
activeName: 'info1',
infoVisible: false,
page: {
@@ -196,6 +210,29 @@
...mapGetters(["permission", "userInfo"]),
},
methods: {
+
+ handleClose() {
+ this.infoVisible = false
+ // this.$refs.DisCussFrom && this.$refs.DisCussFrom.resetForm()
+ },
+
+ submit() {
+ console.log("============>", this.questionBankData)
+ save(this.questionBankData).then(
+ () => {
+ // this.onLoad(this.page)
+ this.$message({
+ type: "success",
+ message: "操作成功!",
+ })
+ done()
+ },
+ (error) => {
+ window.console.log(error)
+ loading()
+ }
+ )
+ },
handleChange(value) {
console.log(value);
},
@@ -230,7 +267,9 @@
const data = res.data.data;
this.page.total = data.total;
this.questionBankData = data.records;
- // this.questionBankLoading = false;
+ this.questionBankData.forEach(item => {
+ item.propertyId = this.property.id
+ })
});
},
@@ -239,25 +278,26 @@
let param = {
subclassName: '基础信息'
}
+ this.property = row
this.questionBankOnLoad(this.page, param)
},
handleClick(tab, event) {
- this.$confirm("确定将选择数据删除?", {
- confirmButtonText: "确定",
- cancelButtonText: "取消",
- type: "warning",
- })
- .then(() => {
- return remove(row.id)
- })
- .then(() => {
- this.onLoad(this.page)
- this.$message({
- type: "success",
- message: "操作成功!",
- })
- })
+ // this.$confirm("确定将选择数据删除?", {
+ // confirmButtonText: "确定",
+ // cancelButtonText: "取消",
+ // type: "warning",
+ // })
+ // .then(() => {
+ // return remove(row.id)
+ // })
+ // .then(() => {
+ // this.onLoad(this.page)
+ // this.$message({
+ // type: "success",
+ // message: "操作成功!",
+ // })
+ // })
// console.log(tab, event);
console.log('============>', JSON.stringify(this.questionBankData))
let param = {
diff --git a/src/views/property/propertyCompany.vue b/src/views/property/propertyCompany.vue
index d8c5ac5..3583278 100644
--- a/src/views/property/propertyCompany.vue
+++ b/src/views/property/propertyCompany.vue
@@ -18,8 +18,8 @@
@click="openPayConfig(row)">商户配置
</el-button>
- <!-- <el-button :size="size" icon="el-icon-circle-plus-outline" type="text" @click="addProperty()">物业评定
- </el-button> -->
+ <el-button :size="size" icon="el-icon-circle-plus-outline" type="text" @click="addProperty(row)">物业评定
+ </el-button>
</template>
</avue-crud>
@@ -350,8 +350,8 @@
methods: {
- addProperty() {
- this.$refs.propertyEdit.init();
+ addProperty(row) {
+ this.$refs.propertyEdit.init(row);
},
aliSubmit(form, done) {
diff --git a/src/views/propertySupervision/houseHoldSupervision.vue b/src/views/propertySupervision/houseHoldSupervision.vue
index 4ad035d..0d7e7e8 100644
--- a/src/views/propertySupervision/houseHoldSupervision.vue
+++ b/src/views/propertySupervision/houseHoldSupervision.vue
@@ -24,7 +24,13 @@
@click="manageLabel(row)">标签
</el-button>
</template> -->
+
+ <template slot="menuLeft">
+ <div class="echarts-wrap">
+ <div class="echarts-item" id="echarts"></div>
+ </div>
+ </template>
<template slot-scope="{row, size}" slot="phone">
@@ -130,6 +136,11 @@
import func from "@/util/func"
// import householdManager from "./components/householdManager"
import Qs from "qs"
+ import * as echarts from 'echarts';
+ import {
+ getTreeList
+} from '@/api/label/label'
+
export default {
components: {
// householdManager
@@ -476,7 +487,8 @@
formslot: true,
span: 24,
}
- ]
+ ],
+ labelCountList:[]
}
}
},
@@ -512,7 +524,9 @@
}
}
},
- mounted() {},
+ mounted() {
+ this.getLabelCount()
+ },
methods: {
onsubmit() {
@@ -795,7 +809,72 @@
},
showStringDispose(row, type) {
row[type] = !row[type]
+ },
+
+ getLabelCount(){
+ getTreeList().then(res => {
+ const data = res.data.data
+ let list = data[1].children;
+ this.labelCountList = list;
+ this.$nextTick(()=>{
+ this.setEchartsOption(list)
+ })
+ })
+ },
+
+ setEchartsOption(data){
+ let option = {
+ // title: {
+ // text:"房屋",
+ // left: 'center',
+ // top:20,
+ // },
+ tooltip: {
+ trigger: 'item'
+ },
+ legend: {
+ orient: 'horizontal',
+ left: 'right',
+ top: 'bottom',
+ },
+ // labelLine: {
+ // length: 15,
+ // length2: 0,
+ // maxSurfaceAngle: 80
+ // },
+ series: [
+ {
+ type: 'pie',
+ radius: '50%',
+ data: [],
+ emphasis: {
+ itemStyle: {
+ shadowBlur: 10,
+ shadowOffsetX: 0,
+ shadowColor: 'rgba(0, 0, 0, 0.5)'
+ }
+ }
+ }
+ ]
+ };
+ let myEchart = document.getElementById('echarts'); //获取类名
+ let myCharts = echarts.init(myEchart);
+ for(let i = 0,ii = data.length;i<ii;i++){
+ option.series[0].data.push({
+ name:data[i].name,
+ value:data[i].count,
+ id:data[i].id
+ });
+ option && myCharts.setOption(option);
+ myCharts.on('click',(params)=>{
+ console.log(params)
+ this.query.labelId = params.data.id;
+ this.onLoad(this.page, this.query)
+ })
+ }
+
}
+
}
}
</script>
@@ -812,4 +891,13 @@
.box .el-scrollbar__wrap {
overflow: scroll;
}
+ .echarts-wrap{
+ display: flex;
+ padding:0 30px;
+ justify-content: center
+ }
+ .echarts-item{
+ width:100%;
+ height:300px;
+ }
</style>
\ No newline at end of file
diff --git a/src/views/propertySupervision/residentSupervision.vue b/src/views/propertySupervision/residentSupervision.vue
index c83d43a..b671a4d 100644
--- a/src/views/propertySupervision/residentSupervision.vue
+++ b/src/views/propertySupervision/residentSupervision.vue
@@ -2,12 +2,21 @@
<el-row>
<el-col :span="24">
<basic-container>
+
+
+
<avue-crud :option="option" :search.sync="search" :table-loading="loading" :data="data" ref="crud"
v-model="form" :permission="permissionList" @row-del="rowDel" @row-update="rowUpdate" @row-save="rowSave"
:before-open="beforeOpen" :page.sync="page" @search-change="searchChange" @search-reset="searchReset"
@selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
@refresh-change="refreshChange" @on-load="onLoad">
+ <template slot="menuLeft">
+ <div class="echarts-wrap">
+ <div class="echarts-item" v-for="(i,k) in labelCountList" :key="k"></div>
+ </div>
+ </template>
+
<template slot-scope="{row, size}" slot="menu">
<el-button :size="size" type="text" icon="el-icon-circle-plus-outline" v-if="permission.househould_manager"
@click="manageLabel(row)">标签
@@ -108,6 +117,10 @@
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import Qs from "qs"
+ import * as echarts from 'echarts';
+ import {
+ getTreeList
+} from '@/api/label/label'
export default {
@@ -743,6 +756,9 @@
currentLabel: {},
currentRow: {},
householdLabelList: [],
+
+ labelCountList:[]
+
}
},
watch: {
@@ -836,7 +852,10 @@
}
}
},
- mounted() {},
+ mounted() {
+ this.getLabelCount();
+
+ },
methods: {
init(row) {
console.log(JSON.stringify(row))
@@ -1078,6 +1097,76 @@
showStringDispose(row, type) {
row[type] = !row[type]
+ },
+
+ getLabelCount(){
+ getTreeList().then(res => {
+ const data = res.data.data
+ let list = data[0].children;
+ this.labelCountList = list;
+ this.$nextTick(()=>{
+ this.setEchartsOption(list)
+ })
+ })
+ },
+
+ setEchartsOption(data){
+ let option = {
+ title: {
+ text:"",
+ left: 'center',
+ top:20,
+ },
+ tooltip: {
+ trigger: 'item'
+ },
+ legend: {
+ orient: 'horizontal',
+ left: 'center',
+ top: 70,
+ },
+ labelLine: {
+ length: 15,
+ length2: 0,
+ maxSurfaceAngle: 80
+ },
+ series: [
+ {
+ type: 'pie',
+ radius: '35%',
+ data: [],
+ emphasis: {
+ itemStyle: {
+ shadowBlur: 10,
+ shadowOffsetX: 0,
+ shadowColor: 'rgba(0, 0, 0, 0.5)'
+ }
+ }
+ }
+ ]
+ };
+ let myEchart = document.getElementsByClassName('echarts-item'); //获取类名
+ for(let i = 0,ii = data.length;i<ii;i++){
+ let myCharts = echarts.init(myEchart[i]);
+ option.title.text = data[i].name;
+ let series = [];
+ for(let k = 0,kk = data[i].children.length;k<kk;k++){
+ series.push({
+ value:data[i].children[k].count,
+ name:data[i].children[k].name,
+ id:data[i].children[k].id,
+ })
+ }
+ option.legend.type = series.length > 4?"scroll":"plain"
+ option.series[0].data = series;
+ option && myCharts.setOption(option);
+ myCharts.on('click',(params)=>{
+ console.log(params)
+ this.query.labelId = params.data.id;
+ this.onLoad(this.page, this.query)
+ })
+ }
+
}
}
}
@@ -1118,4 +1207,15 @@
.box .el-scrollbar__wrap {
overflow: scroll;
}
+
+ .echarts-wrap{
+ display: flex;
+ flex-wrap: wrap;
+ padding:0 30px;
+ }
+ .echarts-item{
+ width:320px;
+ height:400px;
+ margin:0 30px 30px 0;
+ }
</style>
\ No newline at end of file
diff --git a/src/views/work/process/maintenanceFundApply/handle.vue b/src/views/work/process/maintenanceFundApply/handle.vue
index d911f4d..9e1d425 100644
--- a/src/views/work/process/maintenanceFundApply/handle.vue
+++ b/src/views/work/process/maintenanceFundApply/handle.vue
@@ -1,413 +1,420 @@
<template>
- <basic-container>
- <el-form ref="form" :model="form" :rules="rules" label-width="80px">
- <el-row type="flex" class="row-bg" justify="end">
- <el-form-item>
- <el-button @click="handleCancel">关闭</el-button>
- </el-form-item>
- </el-row>
+ <basic-container>
+ <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+ <el-row type="flex" class="row-bg" justify="end">
+ <el-form-item>
+ <el-button @click="handleCancel">关闭</el-button>
+ </el-form-item>
+ </el-row>
- <el-card shadow="hover">
- <div slot="header">
- <span>审批信息</span>
- </div>
- <avue-form :option="option" v-model="form"></avue-form>
- </el-card>
+ <el-card shadow="hover">
+ <div slot="header">
+ <span>审批信息</span>
+ </div>
+ <avue-form :option="option" v-model="form"></avue-form>
+ </el-card>
- <el-card shadow="hover">
- <div slot="header">
- <span>流程信息</span>
- </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-card shadow="hover">
- <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>
- </el-timeline-item>
- </el-timeline>
- </el-row>
- </el-card>
- <el-card shadow="hover">
- <div slot="header">
- <span>流程跟踪</span>
- </div>
- <el-row class="row-bg">
- <flow-design :is-display="true" :process-instance-id="processInstanceId"></flow-design>
- </el-row>
- </el-card>
- </el-form>
+ <el-card shadow="hover">
+ <div slot="header">
+ <span>流程信息</span>
+ </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-card shadow="hover">
+ <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>
+ </el-timeline-item>
+ </el-timeline>
+ </el-row>
+ </el-card>
+ <el-card shadow="hover">
+ <div slot="header">
+ <span>流程跟踪</span>
+ </div>
+ <el-row class="row-bg">
+ <flow-design :is-display="true" :process-instance-id="processInstanceId"></flow-design>
+ </el-row>
+ </el-card>
+ </el-form>
- <!-- <div style="">
+ <!-- <div style="">
<el-button type="primary" @click="handleAgree">同意</el-button>
<el-button type="danger" @click="handleDisagree">驳回</el-button>
</div> -->
- <div style="text-align: center;
+ <div style="text-align: center;
position: fixed;
left: 0;
right: 0;
bottom: 10px;">
- <el-button type="primary" @click="handleAgree">同意</el-button>
- <el-button type="danger" @click="handleDisagree">驳回</el-button>
- </div>
+ <el-button type="primary" @click="handleAgree">同意</el-button>
+ <el-button type="danger" @click="handleDisagree">驳回</el-button>
+ </div>
- </basic-container>
+ </basic-container>
</template>
<script>
- import {
+import {
historyFlowList,
leaveDetail
- } from "@/api/work/process";
+} from "@/api/work/process"
- import {
+import {
getList,
remove,
update,
add,
getPropertyCapitalApply
- } from "@/api/property/propertyCapitalApply";
- import {
+} from "@/api/property/propertyCapitalApply"
+import {
completeTask
- } from "@/api/work/work";
+} from "@/api/work/work"
+import website from '@/config/website'
- export default {
- data() {
- return {
- taskId: '',
- businessId: '',
- processInstanceId: '',
- src: '',
- flowList: [],
- form: {
- flow: {
- assigneeName: '',
- },
- startTime: '',
- endTime: '',
- reason: '',
- },
- option: {
- height: "auto",
- calcHeight: 54,
- dialogWidth: 1150,
- tip: false,
- searchShow: true,
- searchMenuSpan: 3,
- menuWidth: 350,
- border: true,
- //stripe:true,
- submitBtn: false,
- emptyBtn: false,
- index: true,
- viewBtn: true,
- selection: true,
- dialogClickModal: false,
- column: [{
- label: "小区",
- prop: "districtId",
- searchSpan: 5,
- search: true,
- type: 'tree',
- dicUrl: `/api/blade-district/district/getDistrictTree`,
- props: {
- label: "name",
- value: "id"
- },
- defaultExpandedKeys: ["361102003"],
- span: 12,
- labelWidth: 120,
- width: 220,
- overHidden: true,
- rules: [{
- required: true,
- message: "请选择小区",
- trigger: "blur",
- }, ],
- disabled: true
+export default {
+ data () {
+ return {
+ taskId: '',
+ businessId: '',
+ processInstanceId: '',
+ src: '',
+ flowList: [],
+ form: {
+ flow: {
+ assigneeName: '',
+ },
+ startTime: '',
+ endTime: '',
+ reason: '',
},
- {
- label: '维修项目名称',
- prop: 'name',
- searchLabelWidth: 120,
- searchSpan: 5,
- search: true,
- span: 12,
- labelWidth: 140,
- rules: [{
- required: true,
- message: "请输入维修项目名称",
- trigger: "blur",
- }, ],
- disabled: true
- },
- {
- label: "预计开工时间",
- prop: "runTime",
- span: 12,
- labelWidth: 140,
- type: "date",
- format: "yyyy-MM-dd",
- valueFormat: "yyyy-MM-dd",
- rules: [{
- required: true,
- message: "请选择合同开始时间",
- trigger: "blur",
- }, ],
- disabled: true
- },
- {
- label: "预计竣工时间",
- prop: "completedTime",
- labelWidth: 140,
- span: 12,
- type: "date",
- format: "yyyy-MM-dd",
- valueFormat: "yyyy-MM-dd",
- rules: [{
- required: true,
- message: "请选择合同结束时间",
- trigger: "blur",
- }, ],
- disabled: true
- },
- {
- label: "项目分摊方式",
- prop: "allocationWay",
- labelWidth: 140,
- value: '按建筑面积分摊',
- span: 14,
- row: true,
- disabled: true
- },
- {
- label: '联系人',
- prop: 'linkman',
- span: 12,
- labelWidth: 120,
- search: true,
- searchSpan: 4,
- rules: [{
- required: true,
- message: "请输入联系人",
- trigger: "blur",
- }, ],
- disabled: true
- },
- {
- label: '联系方式',
- prop: 'linkPhone',
- span: 12,
- labelWidth: 140,
- rules: [{
- required: true,
- message: "请输入联系方式",
- trigger: "blur",
- }, ],
- disabled: true
- },
- {
- label: "项目预算总金额(元)",
- prop: "budgetAmount",
- span: 12,
- hide: true,
- labelWidth: 140,
- type: 'number',
- precision: 2,
- value: '0.00',
- disabled: true
- },
- {
- label: "实际预算金额(元)",
- prop: "actualAmount",
- span: 12,
- hide: true,
- labelWidth: 140,
- type: 'number',
- precision: 2,
- value: '0.00',
- disabled: true
- },
- {
- label: "自筹金额(元)",
- prop: "selfAmount",
- span: 12,
- hide: true,
- labelWidth: 140,
- type: 'number',
- precision: 2,
- value: '0.00',
- disabled: true
- },
- {
- label: "预算应拨付金额(元)",
- prop: "budgetAppropriateAmount",
- span: 12,
- hide: true,
- labelWidth: 140,
- type: 'number',
- precision: 2,
- value: '0.00',
- disabled: true
- },
- {
- label: "项目摘要",
- span: 24,
- hide: true,
- prop: "projectDigest",
- placeholder: "例如:“XX小区XX栋XX设施设备维修,总的预算金额是X,是否含有审价,本次维修涉及范围共XX户,总面积的建筑面积为XX平方米”",
- labelWidth: 140,
- type: "textarea",
- disabled: true
- },
- {
- label: "项目进度描述",
- span: 24,
- hide: true,
- prop: "projectDescribe",
- labelWidth: 140,
- type: "textarea",
- disabled: true
- }, {
- label: "批复意见",
- span: 24,
- hide: true,
- prop: "comment",
- labelWidth: 140,
- type: "textarea",
- rules: [{
- required: true,
- message: "请输入批复意见",
- trigger: "blur",
- }, ],
- },
- {
- label: '施工方案附件',
- prop: 'constructionSchemeUrls',
- type: 'upload',
- span: 24,
- hide: true,
- labelWidth: 140,
- multiple: true,
- // showFileList: true,
- propsHttp: {
- res: 'data',
- name: "originalName",
- url: "link"
- },
- action: '/api/blade-resource/oss/endpoint/put-file-attach',
- rules: [{
- required: true,
- message: "请上传施工方案",
- trigger: "blur",
- }, ],
+ option: {
+ height: "auto",
+ calcHeight: 54,
+ dialogWidth: 1150,
+ tip: false,
+ searchShow: true,
+ searchMenuSpan: 3,
+ menuWidth: 350,
+ border: true,
+ //stripe:true,
+ submitBtn: false,
+ emptyBtn: false,
+ index: true,
+ viewBtn: true,
+ selection: true,
+ dialogClickModal: false,
+ column: [{
+ label: "小区",
+ prop: "districtId",
+ searchSpan: 5,
+ search: true,
+ type: 'tree',
+ dicUrl: `/api/blade-district/district/getDistrictTree`,
+ props: {
+ label: "name",
+ value: "id"
+ },
+ defaultExpandedKeys: ["361102003"],
+ span: 12,
+ labelWidth: 120,
+ width: 220,
+ overHidden: true,
+ rules: [{
+ required: true,
+ message: "请选择小区",
+ trigger: "blur",
+ },],
+ disabled: true
+ },
+ {
+ label: '维修项目名称',
+ prop: 'name',
+ searchLabelWidth: 120,
+ searchSpan: 5,
+ search: true,
+ span: 12,
+ labelWidth: 140,
+ rules: [{
+ required: true,
+ message: "请输入维修项目名称",
+ trigger: "blur",
+ },],
+ disabled: true
+ },
+ {
+ label: "预计开工时间",
+ prop: "runTime",
+ span: 12,
+ labelWidth: 140,
+ type: "date",
+ format: "yyyy-MM-dd",
+ valueFormat: "yyyy-MM-dd",
+ rules: [{
+ required: true,
+ message: "请选择合同开始时间",
+ trigger: "blur",
+ },],
+ disabled: true
+ },
+ {
+ label: "预计竣工时间",
+ prop: "completedTime",
+ labelWidth: 140,
+ span: 12,
+ type: "date",
+ format: "yyyy-MM-dd",
+ valueFormat: "yyyy-MM-dd",
+ rules: [{
+ required: true,
+ message: "请选择合同结束时间",
+ trigger: "blur",
+ },],
+ disabled: true
+ },
+ {
+ label: "项目分摊方式",
+ prop: "allocationWay",
+ labelWidth: 140,
+ value: '按建筑面积分摊',
+ span: 14,
+ row: true,
+ disabled: true
+ },
+ {
+ label: '联系人',
+ prop: 'linkman',
+ span: 12,
+ labelWidth: 120,
+ search: true,
+ searchSpan: 4,
+ rules: [{
+ required: true,
+ message: "请输入联系人",
+ trigger: "blur",
+ },],
+ disabled: true
+ },
+ {
+ label: '联系方式',
+ prop: 'linkPhone',
+ span: 12,
+ labelWidth: 140,
+ rules: [{
+ required: true,
+ message: "请输入联系方式",
+ trigger: "blur",
+ },],
+ disabled: true
+ },
+ {
+ label: "项目预算总金额(元)",
+ prop: "budgetAmount",
+ span: 12,
+ hide: true,
+ labelWidth: 140,
+ type: 'number',
+ precision: 2,
+ value: '0.00',
+ disabled: true
+ },
+ {
+ label: "实际预算金额(元)",
+ prop: "actualAmount",
+ span: 12,
+ hide: true,
+ labelWidth: 140,
+ type: 'number',
+ precision: 2,
+ value: '0.00',
+ disabled: true
+ },
+ {
+ label: "自筹金额(元)",
+ prop: "selfAmount",
+ span: 12,
+ hide: true,
+ labelWidth: 140,
+ type: 'number',
+ precision: 2,
+ value: '0.00',
+ disabled: true
+ },
+ {
+ label: "预算应拨付金额(元)",
+ prop: "budgetAppropriateAmount",
+ span: 12,
+ hide: true,
+ labelWidth: 140,
+ type: 'number',
+ precision: 2,
+ value: '0.00',
+ disabled: true
+ },
+ {
+ label: "项目摘要",
+ span: 24,
+ hide: true,
+ prop: "projectDigest",
+ placeholder: "例如:“XX小区XX栋XX设施设备维修,总的预算金额是X,是否含有审价,本次维修涉及范围共XX户,总面积的建筑面积为XX平方米”",
+ labelWidth: 140,
+ type: "textarea",
+ disabled: true
+ },
+ {
+ label: "项目进度描述",
+ span: 24,
+ hide: true,
+ prop: "projectDescribe",
+ labelWidth: 140,
+ type: "textarea",
+ disabled: true
+ }, {
+ label: "批复意见",
+ span: 24,
+ hide: true,
+ prop: "comment",
+ labelWidth: 140,
+ type: "textarea",
+ rules: [{
+ required: true,
+ message: "请输入批复意见",
+ trigger: "blur",
+ },],
+ },
+ {
+ label: '施工方案附件',
+ prop: 'constructionSchemeUrls',
+ type: 'upload',
+ listType: 'picture-img',
+ span: 24,
+ hide: true,
+ labelWidth: 140,
+ multiple: true,
+ // showFileList: true,
+ propsHttp: {
+ res: 'data',
+ name: "originalName",
+ url: "link"
+ },
+ action: '/api/blade-resource/oss/endpoint/put-file-attach',
+ rules: [{
+ required: true,
+ message: "请上传施工方案",
+ trigger: "blur",
+ },],
+ }
+ ],
}
- ],
}
- }
},
- created() {
- this.init();
+ created () {
+ this.init()
},
- beforeRouteUpdate(to, from, next) {
- // 在当前路由改变,但是该组件被复用时调用
- // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候
- // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用
- // 可以访问组件实例 `this`
- if (to.fullPath !== from.fullPath) {
- next();
- this.init();
- }
+ beforeRouteUpdate (to, from, next) {
+ // 在当前路由改变,但是该组件被复用时调用
+ // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候
+ // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用
+ // 可以访问组件实例 `this`
+ if (to.fullPath !== from.fullPath) {
+ next()
+ this.init()
+ }
},
methods: {
- init() {
- 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;
- if (data.success) {
- this.flowList = data.data;
- }
- })
- getPropertyCapitalApply(this.businessId).then(res => {
- const data = res.data;
- if (data.success) {
- this.form = data.data;
- }
- })
- },
- handleAgree() {
- if (!this.form.comment) {
- this.$message.warning('请先填写批复意见');
- return;
- }
- const params = {
- taskId: this.taskId,
- processInstanceId: this.processInstanceId,
- flag: 'ok',
- comment: this.form.comment,
- };
- completeTask(params).then(res => {
- const data = res.data;
- if (data.success) {
- this.$message.success(data.msg);
- this.$router.$avueRouter.closeTag();
+ init () {
+ 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
+ if (data.success) {
+ this.flowList = data.data
+ }
+ })
+ getPropertyCapitalApply(this.businessId).then(res => {
+ const data = res.data
+ if (data.success) {
+ data.data.constructionSchemeUrls = website.minioUrl + data.data.constructionSchemeUrls
+ this.form = data.data
+ }
+ })
+ },
+ handleAgree () {
+ if (!this.form.comment) {
+ this.$message.warning('请先填写批复意见')
+ return
+ }
+ const params = {
+ taskId: this.taskId,
+ processInstanceId: this.processInstanceId,
+ flag: 'ok',
+ comment: this.form.comment,
+ }
+ completeTask(params).then(res => {
+ const data = res.data
+ if (data.success) {
+ this.$message.success(data.msg)
+ this.$router.$avueRouter.closeTag()
+ this.$router.push({
+ path: `/work/todo`
+ })
+ } else {
+ this.$message.error(data.msg || '提交失败')
+ }
+ })
+ },
+ handleDisagree () {
+ if (!this.form.comment) {
+ this.$message.warning('请先填写批复意见')
+ return
+ }
+ const params = {
+ taskId: this.taskId,
+ processInstanceId: this.processInstanceId,
+ comment: this.form.comment,
+ }
+ completeTask(params).then(res => {
+ const data = res.data
+ if (data.success) {
+ this.$message.success(data.msg)
+ this.$router.$avueRouter.closeTag()
+ this.$router.push({
+ path: `/work/todo`
+ })
+ } else {
+ this.$message.error(data.msg || '提交失败')
+ }
+ })
+ },
+ handleCancel () {
+ this.$router.$avueRouter.closeTag()
this.$router.push({
- path: `/work/todo`
- });
- } else {
- this.$message.error(data.msg || '提交失败');
- }
- })
- },
- handleDisagree() {
- if (!this.form.comment) {
- this.$message.warning('请先填写批复意见');
- return;
+ path: `/work/todo`
+ })
}
- const params = {
- taskId: this.taskId,
- processInstanceId: this.processInstanceId,
- comment: this.form.comment,
- };
- completeTask(params).then(res => {
- const data = res.data;
- if (data.success) {
- this.$message.success(data.msg);
- this.$router.$avueRouter.closeTag();
- this.$router.push({
- path: `/work/todo`
- });
- } else {
- this.$message.error(data.msg || '提交失败');
- }
- })
- },
- handleCancel() {
- this.$router.$avueRouter.closeTag();
- this.$router.push({
- path: `/work/todo`
- });
- }
}
- }
+}
</script>
<style scoped>
- .container {
+.container {
position: relative;
/* 确保按钮相对于该元素定位 */
- }
+}
- #myButton {
+#myButton {
position: fixed;
bottom: 0;
left: 50%;
transform: translateX(-50%);
- }
+}
</style>
\ No newline at end of file
--
Gitblit v1.9.3