shuishen
2024-01-18 7cc2cf7be54f1a6303a49e9a81dd26d5a96d2322
Merge branch 'master' of http://s16s652780.51mypc.cn:49896/r/jczz_web
5 files modified
1 files added
414 ■■■■ changed files
src/api/answerRecord/answerRecord.js 49 ●●●●● patch | view | raw | blame | history
src/views/property/components/propertyEdit.vue 88 ●●●● patch | view | raw | blame | history
src/views/property/propertyCompany.vue 8 ●●●● patch | view | raw | blame | history
src/views/propertySupervision/houseHoldSupervision.vue 92 ●●●●● patch | view | raw | blame | history
src/views/propertySupervision/residentSupervision.vue 102 ●●●●● patch | view | raw | blame | history
src/views/work/process/maintenanceFundApply/handle.vue 75 ●●●● patch | view | raw | blame | history
src/api/answerRecord/answerRecord.js
New file
@@ -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
  })
}
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 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 == 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>{{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>
          </div>
            <!-- <el-input v-model="item1.numbers" type="number" :placeholder="item1.optionName"></el-input> -->
          </div>
        </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 = {
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) {
src/views/propertySupervision/houseHoldSupervision.vue
@@ -26,6 +26,12 @@
          </template> -->
          <template  slot="menuLeft">
            <div  class="echarts-wrap">
                <div  class="echarts-item"   id="echarts"></div>
            </div>
          </template>
          <template slot-scope="{row, size}" slot="phone">
            <el-button :size="size" type="text" @click="showStringDispose(row, 'phoneflag')">
@@ -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>
src/views/propertySupervision/residentSupervision.vue
@@ -2,11 +2,20 @@
  <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"
@@ -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>
src/views/work/process/maintenanceFundApply/handle.vue
@@ -20,10 +20,14 @@
        </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>
@@ -62,7 +66,7 @@
  import {
    historyFlowList,
    leaveDetail
  } from "@/api/work/process";
} from "@/api/work/process"
  import {
    getList,
@@ -70,10 +74,11 @@
    update,
    add,
    getPropertyCapitalApply
  } from "@/api/property/propertyCapitalApply";
} from "@/api/property/propertyCapitalApply"
  import {
    completeTask
  } from "@/api/work/work";
} from "@/api/work/work"
import website from '@/config/website'
  export default {
    data() {
@@ -289,6 +294,7 @@
              label: '施工方案附件',
              prop: 'constructionSchemeUrls',
              type: 'upload',
                    listType: 'picture-img',
              span: 24,
              hide: true,
              labelWidth: 140,
@@ -311,7 +317,7 @@
      }
    },
    created() {
      this.init();
        this.init()
    },
    beforeRouteUpdate(to, from, next) {
      // 在当前路由改变,但是该组件被复用时调用
@@ -319,80 +325,81 @@
      // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用
      // 可以访问组件实例 `this`
      if (to.fullPath !== from.fullPath) {
        next();
        this.init();
            next()
            this.init()
      }
    },
    methods: {
      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;
                    data.data.constructionSchemeUrls = website.minioUrl + data.data.constructionSchemeUrls
                    this.form = data.data
          }
        })
      },
      handleAgree() {
        if (!this.form.comment) {
          this.$message.warning('请先填写批复意见');
          return;
                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;
                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: `/work/todo`
            });
                    })
          } else {
            this.$message.error(data.msg || '提交失败');
                    this.$message.error(data.msg || '提交失败')
          }
        })
      },
      handleDisagree() {
        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: `/work/todo`
            });
                    })
          } else {
            this.$message.error(data.msg || '提交失败');
                    this.$message.error(data.msg || '提交失败')
          }
        })
      },
      handleCancel() {
        this.$router.$avueRouter.closeTag();
            this.$router.$avueRouter.closeTag()
        this.$router.push({
          path: `/work/todo`
        });
            })
      }
    }
  }