MrShi
2025-02-12 3e4625e7951cb6dcfab077e535782eee7b0b70fb
改bug
已修改17个文件
433 ■■■■■ 文件已修改
admin/.env.test 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/common/GlobalWindow.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/common/Header.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/common/Menu.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/common/tagsview.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/layouts/AppLayout.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/contract/components/pendingBills.vue 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/finance/components/bullDetail.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/index.vue 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/project/components/houseDetails.vue 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/roomStatus/index.vue 235 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/stock/assetList.vue 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/workorder/components/OperaYwWorkorderWindow.vue 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/workorder/components/detail.vue 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/workorder/components/problemReportingDetails.vue 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/workorder/problemReporting.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/workorder/workorderList.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/.env.test
@@ -4,10 +4,10 @@
# VUE_APP_API_URL  = 'http://192.168.5.13/gateway_interface'
# 任康
VUE_APP_API_URL  = 'http://192.168.0.133:10010'
# VUE_APP_API_URL  = 'http://192.168.0.133:10010'
# 萍姐
# VUE_APP_API_URL  = 'http://192.168.0.108:10010/'
# 测试服务
# VUE_APP_API_URL  = 'https://dmtest.ahapp.net/gateway_interface'
VUE_APP_API_URL  = 'https://dmtest.ahapp.net/gateway_interface'
admin/src/components/common/GlobalWindow.vue
@@ -8,6 +8,7 @@
    :close-on-press-escape="false"
    :wrapper-closable="false"
    :append-to-body="true"
    :destroy-on-close="true"
    :modal="true"
    @close="close"
  >
admin/src/components/common/Header.vue
@@ -4,7 +4,6 @@
      <h2>
        <i class="el-icon-s-unfold" v-if="menuData.collapse" @click="switchCollapseMenu(null)"></i>
        <i class="el-icon-s-fold" v-else @click="switchCollapseMenu(null)"></i>
        {{title}}
      </h2>
      <tagsview class="tags"></tagsview>
    </div>
@@ -41,7 +40,6 @@
  h2 {
    flex-shrink: 0;
    line-height: 48px;
    width: 240px;
    font-size: 19px;
    color: #606263;
    font-weight: normal;
admin/src/components/common/Menu.vue
@@ -44,13 +44,12 @@
      } else {
        this.$store.commit('pushtags', menuConfig)
      }
      // console.log(menuConfig.index);
      return menuConfig.index
    },
    // 默认展开的菜单index
    defaultOpeneds() {
      // return this.menuData.list.map(menu => menu.index)
      return [this.menuData.list[0].index]
    }
  },
admin/src/components/common/tagsview.vue
@@ -151,8 +151,8 @@
    },
    // 通过判断路由一致返回布尔值添加class,添加高亮效果
    isActive(route,params, index) {
      const res =(route === this.$route.path && params== this.$route.query.param)
      return res
      // const res =(route === this.$route.path && params== this.$route.query.param)
      return route === this.$route.path
    },
    scrollToStart() {
      const tagsDiv = document.getElementById('tags-box')
@@ -237,6 +237,7 @@
//标签高亮
.active {
  color: #2080f7;
  box-sizing: border-box;
  border-bottom: 2px solid #2080f7;
}
//右键菜单样式
admin/src/layouts/AppLayout.vue
@@ -7,7 +7,7 @@
        <Menu/>
      </el-aside>
      <el-main>
        <header>
        <header style="background-color: #ffffff;">
          <AppHeader/>
        </header>
        <main ref="containerS">
admin/src/views/contract/components/pendingBills.vue
@@ -34,8 +34,10 @@
                    border
                    style="width: 100%">
                    <el-table-column
                        prop="code"
                        label="账单编号">
                        <template slot-scope="{row}">
                            <el-button type="text" @click="handleDetail(row.id)">{{row.code}}</el-button>
                        </template>
                    </el-table-column>
                    <el-table-column
                        label="费用类型">
@@ -81,6 +83,8 @@
                </el-table>
            </div>
        </div>
        <!--    账单详情    -->
        <Detail ref="DetailRef" />
    </GlobalWindow>
</template>
@@ -88,10 +92,12 @@
  import GlobalWindow from '@/components/common/GlobalWindow'
  import BaseOpera from '@/components/base/BaseOpera'
  import { getWaitDealList } from '@/api/ywContractBill'
  import Detail from '../../finance/components/bullDetail.vue'
  export default {
    name: 'pendingBills',
    components: {
      GlobalWindow
      GlobalWindow,
      Detail
    },
    extends: BaseOpera,
    data () {
@@ -107,6 +113,9 @@
              this.info = res
              this.visible = true
            })
      },
      handleDetail (id) {
        this.$refs.DetailRef.open('账单详情', id)
      }
    }
  }
admin/src/views/finance/components/bullDetail.vue
@@ -9,7 +9,7 @@
          <el-tag type="info" v-if="info.status === 1">关闭</el-tag>
        </div>
        <div style="display: flex; align-items: center;">
          <el-button @click="$refs.call.open('发送催缴通知', [info.id])" v-if="info.billType === 0">发送缴费通知</el-button>
          <el-button @click="$refs.call.open('发送催缴通知', [info.id])" v-if="info.isOverdue === 1 && info.billType === 0">发送缴费通知</el-button>
          <el-button plain type="primary" v-if="![1].includes(info.payStatus)" @click="$refs.flowingWater.open('创建收支流水', {
            billType: returnBillType(),
            billId: info.id,
admin/src/views/index.vue
@@ -43,6 +43,9 @@
            </div>
            <i class="el-icon-arrow-right"></i>
          </div>
          <div class="list_item1"></div>
          <div class="list_item1"></div>
          <div class="list_item1"></div>
        </div>
      </div>
    </div>
@@ -82,7 +85,7 @@
                <div class="top_left_dian"></div>
                <div class="top_left_title">{{item.title}}</div>
              </div>
              <div class="top_date">{{item.createDate}}</div>
              <div class="top_date">{{item.param1}}</div>
            </div>
            <div class="bottom">
              {{item.content}}
@@ -310,6 +313,10 @@
          align-items: center;
          flex-wrap: wrap;
          justify-content: space-between;
          .list_item1 {
            width: 24%;
            height: 0;
          }
          .list_item {
            cursor: pointer;
            width: 24%;
@@ -438,8 +445,8 @@
          max-width: 100%;
        }
        ::v-deep .wh_content_item .wh_isToday {
          background-color: #3E80EF;
          color: #fff;
          background-color: rgba(62, 128, 239, 0.47);
          color: #ffffff;
        }
        ::v-deep .wh_item_date:hover {
          background-color: #3E80EF;
admin/src/views/project/components/houseDetails.vue
@@ -77,8 +77,7 @@
                                        <el-table-column
                                            label="合同编号">
                                            <template slot-scope="{row}">
                                                <el-button type="text" @click="$refs.ContractDetailRef.open('合同详情', row.id)" v-if="row.status === 1">{{row.code}}</el-button>
                                                <el-button type="text" v-else>{{row.code}}</el-button>
                                                <el-button type="text" @click="$refs.ContractDetailRef.open('合同详情', row.id)">{{row.code}}</el-button>
                                            </template>
                                        </el-table-column>
                                        <el-table-column
@@ -86,7 +85,7 @@
                                            <template slot-scope="{row}">
                                                <div style="display: flex; align-items: center;">
                                                    {{row.renterName}}
                                                    <el-tag type="success" v-if="row.status === 1">当前租户</el-tag>
                                                    <el-tag type="success" v-if="[1,2,3].includes(row.status)">当前租户</el-tag>
                                                </div>
                                            </template>
                                        </el-table-column>
@@ -421,7 +420,11 @@
        this.$refs.operaYwWorkorderWindow.open('新建工单', {
          rooms: [this.info.projectId, this.info.buildingId, this.info.floor, this.info.id],
          areaType: 0,
          content: ''
          content: '',
          projectId: this.info.projectId,
          buildingId: this.info.buildingId,
          floorId: this.info.floor,
          roomId: this.info.id
        })
      },
      // 获取设备状态
@@ -431,7 +434,7 @@
              this.$nextTick(() => {
                this.deviceList = [
                  { value: res.workAmount || 0, name: '正常' },
                  { value: res.exceptionAmount || 0, name: '异常' },
                  { value: res.exceptionAmount || 0, name: '损坏' },
                  { value: res.errAmount || 0, name: '报废' }
                ]
                this.amount = res.amount
@@ -535,7 +538,7 @@
          page: 1,
          model: {
            roomId: this.houseId,
            status: this.form.status,
            dealStatus: this.form.dealStatus,
            cateId: this.form.cateId
          }
        }).then(res => {
admin/src/views/roomStatus/index.vue
@@ -194,73 +194,73 @@
                        </el-tab-pane>
                        <el-tab-pane label="租客合同" name="project" v-if="[3].includes(lv)">
                            <div class="xm">
                                <el-card style="margin-top: 20px;">
                                    <div slot="header" class="clearfix">
                                        <span>当前在租合同</span>
                                <div class="xm_table">
                                    <div style="display: flex; align-items: center; margin-bottom: 15px;">
                                        <el-input v-model="form.code" style="width: 150px; margin-right: 15px;" placeholder="请输入合同编号"></el-input>
                                        <el-button type="primary" @click="getFetchList">搜索</el-button>
                                        <el-button @click="clear">重置</el-button>
                                    </div>
                                    <div class="xm_table">
                                        <div style="display: flex; align-items: center; margin-bottom: 15px;">
                                            <el-input v-model="form.code" style="width: 150px; margin-right: 15px;" placeholder="请输入合同编号"></el-input>
                                            <el-button type="primary" @click="getFetchList">搜索</el-button>
                                            <el-button @click="clear">重置</el-button>
                                        </div>
                                        <el-table
                                            :data="tableData"
                                            border
                                            v-loading="loading"
                                            style="width: 100%">
                                            <el-table-column
                                                label="合同编号">
                                                <template slot-scope="{row}">
                                                    <el-button type="text" @click="$refs.ContractDetailRef.open('合同详情', row.id)">{{row.code}}</el-button>
                                                </template>
                                            </el-table-column>
                                            <el-table-column
                                                prop="renterName"
                                                label="租客">
                                            </el-table-column>
                                            <el-table-column
                                                label="租赁单价">
                                                <template slot-scope="{row}">
                                                    <div style="display: flex; align-items: center;">
                                                        <span>{{row.leasePrice || 0}}元/㎡·天</span>
                                                    </div>
                                                </template>
                                            </el-table-column>
                                            <el-table-column
                                                prop="leaseDays"
                                                label="租赁天数">
                                            </el-table-column>
                                            <el-table-column
                                                label="租赁面积">
                                                <template slot-scope="{row}">
                                                    {{row.totalArea}}㎡
                                                </template>
                                            </el-table-column>
                                            <el-table-column
                                                label="房源">
                                                <template slot-scope="{row}">
                                                    <div style="display: flex; flex-direction: column;">
                                                        <span v-for="(item, index) in row.roomList" :key="index">
                                                            {{item.projectName}}/{{item.buildingName}}/{{item.floorName}}/{{item.roomNum}}
                                                        </span>
                                                    </div>
                                                </template>
                                            </el-table-column>
                                        </el-table>
                                        <div class="xm_table_f">
                                            <el-pagination
                                                @size-change="handleSizeChange"
                                                @current-change="handleCurrentChange"
                                                :current-page="page"
                                                :page-sizes="[10, 20, 30, 40]"
                                                :page-size="pageTotal"
                                                layout="total, sizes, prev, pager, next, jumper"
                                                :total="total">
                                            </el-pagination>
                                        </div>
                                    <el-table
                                        :data="tableData"
                                        border
                                        v-loading="loading"
                                        style="width: 100%">
                                        <el-table-column
                                            label="合同编号">
                                            <template slot-scope="{row}">
                                                <el-button type="text" @click="$refs.ContractDetailRef.open('合同详情', row.id)">{{row.code}}</el-button>
                                            </template>
                                        </el-table-column>
                                        <el-table-column
                                            label="租客">
                                            <template slot-scope="{row}">
                                                <div style="display: flex; align-items: center;">
                                                    {{row.renterName}}
                                                    <el-tag type="success" v-if="[1,2,3].includes(row.status)">当前租户</el-tag>
                                                </div>
                                            </template>
                                        </el-table-column>
                                        <el-table-column
                                            label="租赁单价">
                                            <template slot-scope="{row}">
                                                <div style="display: flex; align-items: center;">
                                                    <span>{{row.leasePrice || 0}}元/㎡·天</span>
                                                </div>
                                            </template>
                                        </el-table-column>
                                        <el-table-column
                                            prop="leaseDays"
                                            label="租赁天数">
                                        </el-table-column>
                                        <el-table-column
                                            label="租赁面积">
                                            <template slot-scope="{row}">
                                                {{row.totalArea}}㎡
                                            </template>
                                        </el-table-column>
                                        <el-table-column
                                            label="房源">
                                            <template slot-scope="{row}">
                                                <div style="display: flex; flex-direction: column;">
                                                    <span v-for="(item, index) in row.roomList" :key="index">
                                                        {{item.projectName}}/{{item.buildingName}}/{{item.floorName}}/{{item.roomNum}}
                                                    </span>
                                                </div>
                                            </template>
                                        </el-table-column>
                                    </el-table>
                                    <div class="xm_table_f">
                                        <el-pagination
                                            @size-change="handleSizeChange"
                                            @current-change="handleCurrentChange"
                                            :current-page="page"
                                            :page-sizes="[10, 20, 30, 40]"
                                            :page-size="pageTotal"
                                            layout="total, sizes, prev, pager, next, jumper"
                                            :total="total">
                                        </el-pagination>
                                    </div>
                                </el-card>
                                </div>
                            </div>
                        </el-tab-pane>
                        <el-tab-pane label="房态管理" name="house" v-if="[1,2].includes(lv)">
@@ -282,27 +282,30 @@
                                    </div>
                                    <div class="xm_house_list" v-for="(item, index) in roomStatus" :key="index">
                                        <div class="xm_house_list_left">
                                            <div class="xm_house_list_left_row">
                                            <div class="xm_house_list_left_row" :style="{ height: (item.roomsList.length * 100) + ((item.roomsList.length - 1) * 10) + 'px' }">
                                                <span>{{item.floorName}}</span>
                                                <span>{{item.floorArea}}㎡</span>
                                            </div>
                                        </div>
                                        <div class="xm_house_list_right">
                                            <div class="xm_house_list_right_row" :style="{ width: child.width + 'px', backgroundColor: ifBackground(child.roomStatus) }" v-for="(child, i) in item.ywRoomStatusDataVOList" :key="i">
                                                <div class="ft">
                                                    <span>{{child.roomCode}}</span>
                                                    <span>({{child.roomRentArea}}㎡)</span>
                                                </div>
                                                <div class="xm_house_list_right_row_info" v-if="child.roomStatus !== 0">
                                                    <div style="display: flex; align-items: center;">
                                                        <span style="margin-right: 5px;">{{child.customerName}}</span>
                                                        <img src="@/assets/icons/ic_key_green.png" style="width: 16px; height: 16px;" v-if="child.roomStatus === 1" />
                                                        <img src="@/assets/icons/ic_key_yellow.png" style="width: 16px; height: 16px;" v-else-if="child.roomStatus === 2" />
                                            <template v-for="(child, i) in item.roomsList" :key="i">
                                                <div class="xm_house_list_right_row" v-for="(childThree, a) in child" :key="a" :style="{ width: childThree.width + 'px', backgroundColor: ifBackground(childThree.roomStatus) }">
                                                    <div class="ft">
                                                        <span>{{childThree.roomCode}}</span>
                                                        <span>({{childThree.roomRentArea}}㎡)</span>
                                                    </div>
                                                    <span :style="{ color: returnColor(child.overData.substring(0, 10)) ? 'red' : '' }">{{child.overData.substring(0, 10)}}{{returnColor(child.overData.substring(0, 10)) ? '已' : ''}}到期</span>
                                                    <div class="xm_house_list_right_row_info" v-if="childThree.roomStatus !== 0">
                                                        <div style="display: flex; align-items: center;">
                                                            <span style="margin-right: 5px;">{{childThree.customerName}}</span>
                                                            <img src="@/assets/icons/ic_key_green.png" style="width: 16px; height: 16px;" v-if="childThree.roomStatus === 1" />
                                                            <img src="@/assets/icons/ic_key_yellow.png" style="width: 16px; height: 16px;" v-else-if="childThree.roomStatus === 2" />
                                                        </div>
                                                        <span :style="{ color: returnColor(childThree.overData.substring(0, 10)) ? 'red' : '' }">{{childThree.overData.substring(0, 10)}}{{returnColor(childThree.overData.substring(0, 10)) ? '已' : ''}}到期</span>
                                                    </div>
                                                    <div class="xm_house_list_right_row_day" v-if="childThree.roomStatus === 0">未出租|空置{{childThree.freeDayAmount}}天</div>
                                                </div>
                                                <div class="xm_house_list_right_row_day" v-if="child.roomStatus === 0">未出租|空置{{child.freeDayAmount}}天</div>
                                            </div>
                                            </template>
                                        </div>
                                    </div>
                                </div>
@@ -710,7 +713,8 @@
        lv: 0,
        leaseStatus: '',
        amount: 0,
        project: ''
        project: '',
        widthNum: ''
      }
    },
    created () {
@@ -829,12 +833,48 @@
          buildingId: this.form.buildingId,
          floor: this.form.floorId
        }).then(res => {
          // 数组分割
          res.forEach(item => {
            let num = item.ywRoomStatusDataVOList.map(item => item.roomRentArea)
            let total = num.reduce((sum, value) => sum + value, 0)
            item.ywRoomStatusDataVOList.forEach(child => {
              // let percentage = (child.roomRentArea / total) * 100; // 计算每个值的占比
              child.width = (child.roomRentArea / total) * 854
            item.ywRoomStatusDataVOList = item.ywRoomStatusDataVOList ? item.ywRoomStatusDataVOList : []
            const chunkedArray = [];
            for (let i = 0; i < item.ywRoomStatusDataVOList.length; i += 4) {
              chunkedArray.push(item.ywRoomStatusDataVOList.slice(i, i + 4));
            }
            item.roomsList = chunkedArray
          })
          // 计算宽度
          res.forEach(item => {
            item.roomsList.forEach(one => {
              let num = one.map(three => three.roomRentArea)
              let total = num.reduce((sum, value) => sum + value, 0)
              let width = 950
              if (one.length > 1) {
                width = 950 - ((one.length - 1) * 10)
              }
              one.forEach(two => {
                two.width = Number(Math.max((two.roomRentArea / total) * width, 150).toFixed(0))
              })
            })
          })
          // 减去平均多余的宽度
          res.forEach(item => {
            item.roomsList.forEach(one => {
              let num = one.map(three => three.width)
              let total = num.reduce((sum, value) => sum + value, 0)
              let countGreaterThan150 = one.filter(num => num.width > 150).length;
              let width = 950
              if (one.length > 1) {
                width = 950 - ((one.length - 1) * 10)
              }
              if (total > width) {
                let cha = total - width
                let deleNum = Math.floor(cha / countGreaterThan150)
                one.forEach(two => {
                  if (two.width > 150) {
                    two.width = two.width - deleNum
                  }
                })
              }
            })
          })
          this.roomStatus = res
@@ -853,7 +893,7 @@
            this.$nextTick(() => {
              this.deviceList = [
                { value: res.workAmount || 0, name: '正常' },
                { value: res.exceptionAmount || 0, name: '异常' },
                { value: res.exceptionAmount || 0, name: '损坏' },
                { value: res.errAmount || 0, name: '报废' }
              ]
              this.amount = res.amount
@@ -880,6 +920,7 @@
        this.$nextTick(() => {
          this.$refs.EditRef.param.projectId = this.project
          this.$refs.EditRef.isShowModal = true
          this.$refs.EditRef.changeProject()
        })
      },
      // 获取设备分页
@@ -1016,7 +1057,7 @@
            floorId: this.form.floorId,
            roomId: this.form.roomId,
            code: this.form.code,
            statusList: [0,1,2,3]
            statusList: this.lv !== 3 ? [0,1,2,3] : null
          }
        }).then(res => {
          this.tableData = res.records
@@ -1144,7 +1185,7 @@
          this.getFetchList()
        } else if (this.activeName === 'second') {
          this.getWorkOrderList()
        } else if (tab.name === 'third') {
        } else if (this.activeName === 'third') {
          this.getDevicePage()
        }
      },
@@ -1245,17 +1286,17 @@
                            .xm_house_list {
                                width: 100%;
                                display: flex;
                                align-items: center;
                                margin-top: 10px;
                                align-items: self-start;
                                .xm_house_list_left {
                                    flex-shrink: 0;
                                    width: 100px;
                                    display: flex;
                                    margin-right: 15px;
                                    flex-direction: column;
                                    margin-bottom: 10px;
                                    .xm_house_list_left_row {
                                        width: 100px;
                                        height: 100px;
                                        /*height: 100px;*/
                                        background: #F4F7FC;
                                        padding: 20px 0;
                                        box-sizing: border-box;
@@ -1263,7 +1304,7 @@
                                        display: flex;
                                        align-items: center;
                                        flex-direction: column;
                                        justify-content: space-between;
                                        justify-content: center;
                                        &:last-child {
                                            margin-bottom: 0;
                                        }
@@ -1283,9 +1324,11 @@
                                    }
                                }
                                .xm_house_list_right {
                                    width: 854px;
                                    width: 950px;
                                    display: flex;
                                    align-items: center;
                                    justify-content: space-between;
                                    flex-wrap: wrap;
                                    .xm_house_list_right_row {
                                        height: 100px;
                                        padding: 12px 15px;
@@ -1293,10 +1336,7 @@
                                        display: flex;
                                        flex-direction: column;
                                        justify-content: space-between;
                                        margin-right: 10px;
                                        &:last-child {
                                            margin: 0 !important;
                                        }
                                        margin-bottom: 10px;
                                        .ft {
                                            display: flex;
                                            align-items: center;
@@ -1339,6 +1379,7 @@
                            .xm_house_tips {
                                display: flex;
                                align-items: center;
                                margin-bottom: 10px;
                                .xm_house_tips_row {
                                    display: flex;
                                    align-items: center;
admin/src/views/stock/assetList.vue
@@ -130,6 +130,9 @@
        .catch(() => {})
    },
    getList(page) {
      if (page) {
        this.pagination.page = page
      }
      const { pagination, filters } = this
      this.loading = true
      fetchList({
admin/src/views/workorder/components/OperaYwWorkorderWindow.vue
@@ -8,7 +8,6 @@
          <el-option label="公共维修" :value="1"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="报修区域" prop="rooms">
        <el-cascader
          v-model="form.rooms"
@@ -23,28 +22,6 @@
              children: 'projectDataVOList'
          }" />
      </el-form-item>
<!--      <el-form-item label="选择项目" prop="projectId">-->
<!--        <el-select v-model="form.projectId" clearable filterable @change="getBuild">-->
<!--          <el-option v-for="item in projectList" :label="item.name" :value="item.id" />-->
<!--        </el-select>-->
<!--      </el-form-item>-->
<!--      <el-form-item label="选择楼宇" prop="buildingId">-->
<!--        <el-select v-model="form.buildingId" clearable filterable @change="changeBuild">-->
<!--          <el-option v-for="item in buildList" :label="item.name" :value="item.id" />-->
<!--        </el-select>-->
<!--      </el-form-item>-->
<!--      <el-form-item v-if="form.areaType == 1" label="选择楼层" prop="floorId">-->
<!--        <el-select v-model="form.floorId">-->
<!--          <el-option v-for="item in levelList" clearable filterable :label="item.name" :value="item.id" />-->
<!--        </el-select>-->
<!--      </el-form-item>-->
<!--      <el-form-item v-if="form.areaType == 0" label="选择房间" prop="roomId">-->
<!--        <el-select v-model="form.roomId" clearable filterable>-->
<!--          <el-option v-for="item in roomList" :label="item.roomNum" :value="item.id" />-->
<!--        </el-select>-->
<!--      </el-form-item>-->
      <el-form-item label="工单分类" prop="cateId">
        <el-cascader v-model="form.areaIds" @change="changeSel" placeholder="请选择分类" clearable :options="cateList"
          :props="{
@@ -158,11 +135,11 @@
      this.title = title
      this.fileList = []
      this.visible = true
      this.getProject()
      this.getCate()
      this.getHouseTree()
      // 新建
      if (target == null) {
        this.getProject()
        this.form = {
          id: null,
          editDate: '',
@@ -200,9 +177,12 @@
        })
        return
      }
      getProjectList({}).then(res => {
        this.projectList = res || []
      })
      // 编辑
      this.$nextTick(() => {
        this.$refs.form.resetFields()
        // this.$refs.form.resetFields()
        for (const key in this.form) {
          this.form[key] = target[key]
        }
@@ -212,7 +192,7 @@
      this.form.rooms = []
      this.form.projectId = ''
      this.form.buildingId = ''
      this.form.levelList = ''
      this.form.floorId = ''
      this.form.roomId = ''
    },
    getHouseVal(e) {
admin/src/views/workorder/components/detail.vue
@@ -1,6 +1,6 @@
<template>
  <GlobalWindow width="100%" title="工单详情" :visible.sync="visible" :confirm-working="isWorking" @close="close"
    @confirm="confirm">
  <GlobalWindow width="100%" title="工单详情" :withFooter="withFooter" :visible.sync="visible" :confirm-working="isWorking"
    @confirm="confirm" @close="closeView">
    <div class="main">
      <div class="title">
        <div class="title_left">
@@ -11,7 +11,7 @@
            <div class="status gray" v-if="info.dealStatus == 2">已处理</div>
          </div>
        </div>
        <el-button v-if="info.origin === 1" @click="openWT">查看问题上报</el-button>
        <el-button v-if="info.origin === 1 && isShow" @click="openWT">查看问题上报</el-button>
      </div>
      <div class="main_content">
        <div class="list">
@@ -171,31 +171,33 @@
          </div>
        </template>
      </el-form>
      <!--  问题上报详情  -->
      <ProblemReportingDetails ref="problem_Reporting_Details" @close="closeDetails" />
    </div>
    <!--  问题上报详情  -->
    <problemReportingDetails ref="problemReportingDetails" />
  </GlobalWindow>
</template>
<script>
import GlobalWindow from '@/components/common/GlobalWindow'
import BaseOpera from '@/components/base/BaseOpera'
import problemReportingDetails from './problemReportingDetails'
// import ProblemReportingDetails from './problemReportingDetails'
// import ProblemReportingDetails from '@/views/workorder/components/problemReportingDetails'
import { detailById, dispatchOrder, dealOrder } from '@/api/workorder/ywWorkorder'
import { getByWorkorderId } from '@/api/ywProblem'
import { getUserList } from '@/api/system/user'
import { Message, Loading } from 'element-ui'
import { mapState } from 'vuex'
import dayjs from 'dayjs'
export default {
  name: 'detail',
  components: {
    GlobalWindow,
    problemReportingDetails
    ProblemReportingDetails: () => import('./problemReportingDetails')
  },
  extends: BaseOpera,
  data() {
    return {
      id: '',
      visible: false,
      param: {
        dealType: 0
      },
@@ -211,21 +213,47 @@
      uploadData: {
        folder: 'YW_WORKORDER_FILE'
      },
      isShow: true,
      test: false
    }
  },
  computed: {
    userInfo() {
      return this.$store.state.userInfo
    },
    withFooter() {
      if (this.info) {
        return this.info.dealStatus === 0 || (this.info.dealStatus === 1 && (this.userInfo.id === this.info.dealUserId));
      } else {
        return false;
      }
    }
  },
  created() {
    this.getStaff()
  },
  methods: {
    closeDetails() {
      console.log('1')
      this.test = false
    },
    closeView() {
      this.$emit('close')
      this.visible = false
    },
    open (title, target, show) {
      this.title = title
      this.isShow = show
      this.id = target.workorderId
      this.getDetail()
    },
    openWT() {
      getByWorkorderId(this.id)
        .then(res => {
          this.$refs.problemReportingDetails.open('问题上报详情', res)
          this.test = true
          this.$nextTick(() => {
            this.$refs.problem_Reporting_Details.open('问题上报详情', res, false)
          })
        })
    },
    confirm() {
@@ -257,6 +285,7 @@
        if (this.info.dealStatus == 1) {
          this.$set(this.param, 'getDate', dayjs().format('YYYY-MM-DD HH:mm:ss'))
        }
        this.visible = true
      })
    },
    getStaff() {
admin/src/views/workorder/components/problemReportingDetails.vue
@@ -3,6 +3,7 @@
        :title="title"
        :showConfirm="false"
        :visible.sync="visible"
        @close="closeView"
        width="100%">
        <div class="wt">
            <div class="wt_head">
@@ -12,7 +13,7 @@
                    <el-tag style="margin-left: 10px;" v-if="form.dealStatus === 1">已转工单</el-tag>
                    <el-tag style="margin-left: 10px;" type="info" v-if="form.dealStatus === 2">已关闭</el-tag>
                </div>
                <el-button @click="handleDetail" v-if="form.dealStatus === 1">查看工单{{form.workorderId}}</el-button>
                <el-button @click="handleDetail" v-if="form.dealStatus === 1 && isShow">查看工单</el-button>
            </div>
            <div class="wt_content">
                <div class="wt_content_row" style="width: 25%;">
@@ -62,31 +63,46 @@
                    关闭说明:{{form.dealInfo}}
                </div>
            </div>
            <!--    工单详情    -->
            <GDDetail ref="GD_Detail" @close="closeDetails" />
        </div>
        <!--    工单详情    -->
        <Detail v-if="showDetail" ref="DetailRef1" @close="showDetail = false" />
    </GlobalWindow>
</template>
<script>
  import BaseOpera from '@/components/base/BaseOpera'
  import GlobalWindow from '@/components/common/GlobalWindow'
  import Detail from './detail'
  // import GDDetail from './detail'
  // import GDDetail from '@/views/workorder/components/detail'
  import { getById } from '@/api/ywProblem'
  export default {
    name: "problemReportingDetails",
    extends: BaseOpera,
    components: { GlobalWindow, Detail },
    components: {
      GlobalWindow,
      GDDetail: () => import('./detail')
    },
    data() {
      return {
        form: {},
        showDetail: false,
        isShow: true,
        test: false
      }
    },
    methods: {
      open (title, target) {
      closeView() {
        this.$emit('close')
        this.visible = false
      },
      closeDetails() {
        console.log('1')
        this.test = false
      },
      open (title, target, show) {
        this.title = title
        this.form = target
        this.isShow = show
        getById(target.id)
            .then(res => {
              this.form = res
@@ -94,11 +110,13 @@
            })
      },
      handleDetail() {
        this.showDetail = true
        this.test = true
        this.$nextTick(() => {
          this.$refs.DetailRef1.visible = true
          this.$refs.DetailRef1.id = this.form.workorderId
          this.$refs.DetailRef1.getDetail()
          this.$refs.GD_Detail.open('工单详情', { workorderId: this.form.workorderId }, false)
            // this.$refs.GD_Detail.isShow = false
            // this.$refs.GD_Detail.visible = true
            // this.$refs.GD_Detail.id = this.form.workorderId
            // this.$refs.GD_Detail.getDetail()
        })
      },
      returnText(status) {
admin/src/views/workorder/problemReporting.vue
@@ -7,7 +7,7 @@
            </el-form-item>
            <el-form-item prop="dealStatus" label="处理状态">
                <el-select v-model="searchForm.dealStatus">
                    <el-option label="未处理" :value="0"></el-option>
                    <el-option label="待处理" :value="0"></el-option>
                    <el-option label="已转工单" :value="1"></el-option>
                    <el-option label="已关闭" :value="2"></el-option>
                </el-select>
@@ -53,7 +53,7 @@
                    fixed="right">
                    <template slot-scope="{row}">
                        <el-button type="text" v-if="row.dealStatus === 0" @click="$refs.handleProblem.open('问题上报', row)">处理</el-button>
                        <el-button type="text" @click="$refs.problemReportingDetails.open('问题上报详情', row)">查看详情</el-button>
                        <el-button type="text" @click="$refs.problemReportingDetails.open('问题上报详情', row, true)">查看详情</el-button>
                    </template>
                </el-table-column>
            </el-table>
admin/src/views/workorder/workorderList.vue
@@ -90,7 +90,7 @@
      <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
      </pagination>
    </template>
    <Detail v-if="showDetail" ref="DetailRef" @close="showDetail = false" @success="search" />
    <Detail v-if="openDetail" ref="DetailRef" @close="openDetail = false" @success="search" />
    <!-- 新建/修改 -->
    <OperaYwWorkorderWindow ref="operaYwWorkorderWindow" @success="handlePageChange" />
  </TableLayout>
@@ -112,7 +112,7 @@
  data() {
    return {
      // 搜索
      showDetail: false,
      openDetail: false,
      searchForm: {
        selDate: [],
        areaIds: '',
@@ -138,11 +138,13 @@
  },
  methods: {
    handleDetail(row) {
      this.showDetail = true
      this.openDetail = true
      this.$nextTick(() => {
        this.$refs.DetailRef.visible = true
        this.$refs.DetailRef.id = row.id
        this.$refs.DetailRef.getDetail()
        this.$refs.DetailRef.open('工单详情', { workorderId: row.id }, true)
        // this.$refs.DetailRef.isShow = true
        // this.$refs.DetailRef.visible = true
        // this.$refs.DetailRef.id = row.id
        // this.$refs.DetailRef.getDetail()
      })
    },