230320a303 před 11 měsíci
rodič
revize
916c4dd843

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/index.html


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/static/css/chunk-231c7e9d.1a608d90.css


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/static/css/chunk-b3d84490.e5accb3c.css


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/static/js/app.325ba7fb.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/static/js/app.939ca735.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/static/js/chunk-0fc1bdb2.f102ee6c.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/static/js/chunk-231c7e9d.9357eb0f.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/static/js/chunk-b3d84490.50dc694d.js


+ 24 - 0
src/api/house.js

@@ -332,4 +332,28 @@ export default {
   admeshousedel: params => { // 上房源  删除
     return getRequestNoSort('/adm/eshouse/del', params, 'loading')
   },
+  admbuildingunitlist: params => { // 楼栋单元  列表 
+    return getRequest('/adm/building/unit/list', params, 'loading')
+  },
+  admbuildingunitadd: params => { // 楼栋单元  添加
+    return getRequestNoSort('/adm/building/unit/add', params, 'loading')
+  },
+  admbuildingunitedit: params => { // 楼栋单元  编辑
+    return getRequestNoSort('/adm/building/unit/edit', params, 'loading')
+  },
+  admbuildingunitdel: params => { // 楼栋单元  删除
+    return getRequestNoSort('/adm/building/unit/del', params, 'loading')
+  },
+  admnewhousepricelist: params => { // 一房一价新  列表 
+    return getRequest('/adm/new/house/price/list', params, 'loading')
+  },
+  admnewhousepriceadd: params => { // 一房一价新  添加
+    return getRequestNoSort('/adm/new/house/price/add', params, 'loading')
+  },
+  admnewhousepriceedit: params => { // 一房一价新  编辑
+    return getRequestNoSort('/adm/new/house/price/edit', params, 'loading')
+  },
+  admnewhousepricedel: params => { // 一房一价新  删除
+    return getRequestNoSort('/adm/new/house/price/del', params, 'loading')
+  },
 }

+ 154 - 0
src/views/house/buildunit.vue

@@ -0,0 +1,154 @@
+<template>
+  <div class="app-container">
+    <search-form
+      :list-loading="listLoading"
+      @change="searchHandle"
+    />
+    <table-list
+      :list-loading="listLoading"
+      :data="tableData2"
+      :columns="listConfig"
+      :current-page="currentPage"
+      :page-size="pageSize"
+      :total-records="totalRecords"
+      @currentChange="pageHandle"
+      @sizeChange="sizeChange"
+      :isAdd="true"
+      @add="openPopup"
+    />
+    <popup-edit
+      :isShow="isDtlShow"
+      :curObj="curObj"
+      @close="closePopup"
+    />
+    <room-price
+      :isShow="isRPShow"
+      :curObj="curObj"
+      :type="priceType"
+      @close="closeRPPopup"
+    />
+  </div>
+</template>
+<script>
+import { arrToObj } from '@/utils'
+import SearchForm from './components/searchForm/Buildunit'
+import PopupEdit from './components/popup/BuildunitEdit'
+import RoomPrice from './components/popup/RoomPricenew'
+import baseTable from '_m/baseTable.js'
+export default {
+  name: 'price',
+  components: {
+    SearchForm,
+    PopupEdit,
+    RoomPrice,
+  },
+  provide() {
+    return {
+      parentData: this
+    }
+  },
+  mixins: [baseTable],
+  data() {
+    return {
+      apiStr: 'house.admbuildingunitlist',
+      searchForm: {},
+      isDtlShow: false,
+      isRPShow: false,
+      // noCreated: true,
+      curObj: {},
+      priceType: 'add',
+    }
+  },
+  computed: {
+    tableData2() {
+      const arr = [...this.tableData]
+      arr.map(item => {
+        item.unitStr = `${item.unit}单元`
+        item.buildingStr = `${item.building}栋`
+        item.otherStr = `共${item.total_floor}层,每层${item.room_num}户`
+      })
+      return arr
+    }
+  },
+  created() {
+    const query = this.$route.query
+    this.searchForm.estate_id = query.id || ''
+  },
+  mounted() {
+    this.listConfig = {
+      rows: [
+        { label: '楼栋', prop: 'building'},
+        { label: '单元', prop: 'unitStr'},
+        { label: '更多信息', prop: 'otherStr'},
+        { label: '备注', prop: 'remark'},
+        { label: '更新人', prop: 'update_by' },
+        { label: '更新时间', prop: 'update_at' },
+        { label: '操作', width: 300, type: 'handle2', operations:
+          [
+            { label: '一房一价添加', func: this.openRPaddPopup, btnType: 'success' },
+            { label: '一房一价编辑', func: this.openRPeditPopup, btnType: 'primary' },
+            { label: '编辑', func: this.openPopup, btnType: 'primary' },
+            { label: '删除', func: this.delHandle, btnType: 'danger' },
+          ]
+        }
+      ]
+    }
+  },
+  methods: {
+    
+    openRPPopup(str) {
+      this.isRPShow = true
+      this.priceType = str
+    },
+    openRPaddPopup(row) {
+      this.openRPPopup('add')
+      if (row && row.id) {
+        this.curObj = row
+      }
+    },
+    openRPeditPopup(row) {
+      this.openRPPopup('edit')
+      if (row && row.id) {
+        this.curObj = row
+      }
+    },
+    closeRPPopup(obj) {
+      this.isRPShow = false
+      if (obj) {
+        this.fetchData()
+      }
+    },
+    delHandle(row) {
+      this.$msg(`您确定要删除该楼栋单元吗?`, 'confirm', () => {
+        this.$api.house.admbuildingunitdel({
+          id: row.id,
+        }).then(data => {
+          this.$msgs(`已删除!`)
+          this.fetchData()
+        })
+      }, null, true)
+    },
+    openPopup(row) {
+      if (row && row.id) {
+        this.curObj = row
+        const query = this.$route.query
+        this.curObj.estate_tag = query.t
+        this.curObj.estate_name = query.name
+      } else {
+        const query = this.$route.query
+        this.curObj = {
+          estate_tag: query.t,
+          estate_name: query.name,
+        }
+      }
+      this.isDtlShow = true
+    },
+    closePopup(obj) {
+      this.isDtlShow = false
+      if (obj) {
+        this.fetchData()
+      }
+    }
+  }
+}
+</script>

+ 129 - 0
src/views/house/components/popup/BuildunitEdit.vue

@@ -0,0 +1,129 @@
+<template>
+  <div>
+    <el-dialog
+      v-loading="loading"
+      :show-close="false"
+      :close-on-click-modal="false"
+      :visible.sync="isShow"
+      :title="curObj.id ? '编辑楼栋单元' : '新增楼栋单元'"
+      :fullscreen="false"
+      width="800px"
+      custom-class="xl-dialog"
+      center
+    >
+      <base-form ref="ruleForm" class="lib-edit" :data="formData" :is-inline="false" label-width="80px">
+      </base-form>
+      <div class="xl-form">
+        <div class="xl-form-footer">
+          <el-button class="xl-form-btn t2" @click="close">关 闭</el-button>
+          <el-button class="xl-form-btn t1" @click="close('confirm')">确定</el-button>
+        </div>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+<script>
+import { arrToObj } from '@/utils'
+import baseTable from '_m/baseTable.js'
+export default {
+  mixins,
+  props: {
+    isShow: Boolean,
+    curObj: Object
+  },
+  inject: ['parentData'],
+  data() {
+    return {
+      loading: false,
+      formData: [],
+      batchText: '',
+      noCreated: true,
+    }
+  },
+  mixins: [...mixins, baseTable],
+  watch: {
+    isShow: function(val) {
+      if (val) {
+        this.getDef()
+      }
+    },
+  },
+  computed: {
+  },
+  mounted() {
+    
+  },
+  methods: {
+    getDef (str) {
+      let params = { ...this.curObj }
+      this.formData = [
+        { label: '楼栋', key: 'building', class: 'c-2', type: 'inputFont', appendFont: '栋', rules: 1},
+        { label: '单元', key: 'unit', class: 'c-2', type: 'inputFont', appendFont: '单元', rules: 1},
+        { label: '总楼层', key: 'total_floor', class: 'c-2', type: 'inputFont', appendFont: '层', rules: 1},
+        { label: '每层户数', key: 'room_num', class: 'c-2', type: 'inputFont', appendFont: '户', rules: 1},
+        { label: '备注', key: 'remark',},
+      ]
+      this.setDefaultValue(params)
+    },
+    close (str) {
+      if (str === 'confirm') {
+        this.$refs['ruleForm'].$refs['baseForm'].validate((valid) => {
+          if (valid) {
+            const oldform = this.$refs.ruleForm.baseForm
+            const newForm = { ...oldform }
+            if (this.curObj.id) newForm.id = this.curObj.id
+            newForm.estate_id = this.parentData.searchForm.estate_id
+            let apiStr = 'admbuildingunitadd'
+            if (this.curObj.id) apiStr = 'admbuildingunitedit'
+            this.$api.house[apiStr](newForm).then(data => {
+              this.$msgs(newForm.estate_id ? '编辑成功' : '新增成功')
+              this.$emit('close', newForm)
+            })
+          }
+        })
+      } else {
+        this.$emit('close', {})
+        this.setDefaultValue()
+      }
+    },
+  }
+}
+</script>
+<style lang="scss" scoped>
+@import '../../../../styles/libEdit.scss';
+.lib-edit {
+  padding-top: 0;
+  width: 700px;
+  ::v-deep .el-date-editor.el-input {
+    width: 100%;
+  }
+  ::v-deep .el-textarea__inner {
+    height: 300px;
+  }
+}
+
+.scoped-line {
+  height: 2px;
+  width: 100%;
+  background: #ccc;
+  margin: 20px 0;
+}
+
+.scoped-batch {
+  padding-bottom: 20px;
+  .title {
+    text-align: center;
+    padding-bottom: 10px;
+    font-weight: bold;
+    color: #333;
+    font-size: 16px;
+  }
+  .text {
+    border: 1px solid #dcdcdc;
+    border-radius: 6px;
+    width: 100%;
+    min-height: 100px;
+    padding: 10px;
+  }
+}
+</style>

+ 155 - 0
src/views/house/components/popup/RoomPriceTypeEditnew.vue

@@ -0,0 +1,155 @@
+<template>
+  <div>
+    <el-dialog
+      v-loading="loading"
+      :show-close="false"
+      :close-on-click-modal="false"
+      :visible.sync="isShow"
+      :title="curObj.room + '-修改户型'"
+      :fullscreen="false"
+      width="700px"
+      custom-class="xl-dialog"
+      center
+    >
+      <base-form ref="ruleForm" class="lib-edit" :data="formData" :is-inline="false" label-width="110px">
+      </base-form>
+      <div class="xl-form">
+        <div class="xl-form-footer">
+          <el-button class="xl-form-btn t2" @click="close">关 闭</el-button>
+          <el-button class="xl-form-btn t1" @click="close('confirm')">确定</el-button>
+        </div>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+<script>
+export default {
+  components: { },
+  mixins,
+  props: {
+    isShow: Boolean,
+    curObj: Object,
+    roomAreaList: Array,
+  },
+  inject: ['parentData'],
+  data() {
+    return {
+      loading: false,
+      formData: [],
+    }
+  },
+  watch: {
+    isShow: function(val) {
+      if (val) {
+        // console.log(this.curObj)
+        this.getDef()
+      }
+    },
+  },
+  methods: {
+    getDef (str) {
+      let params = {}
+      this.formData = [
+        { label: `户型`, key: 'ht', type: 'select', options: this.roomAreaList}
+      ]
+      this.setDefaultValue(params)
+    },
+    close (str) {
+      if (str === 'confirm') {
+        this.$refs['ruleForm'].$refs['baseForm'].validate((valid) => {
+          if (valid) {
+            const oldform = this.$refs.ruleForm.baseForm
+            let newForm = { ...oldform }
+            let house_type = ''
+            let house_img = ''
+            this.roomAreaList.forEach(ra => {
+              if (newForm['ht'] === ra.id) {
+                house_type = ra.key2
+                house_img = ra.pri_image
+              }
+            })
+            this.$api.house.admnewhousepriceedit({
+              ...this.curObj,
+              house_type,
+              house_img,
+            }).then(res => {
+              this.$emit('close', house_type)
+              this.$msgs('更新成功~')
+            })
+          }
+        })
+      } else {
+        this.$emit('close')
+      }
+    },
+  }
+}
+</script>
+<style lang="scss" scoped>
+@import '../../../../styles/libEdit.scss';
+.lib-edit {
+  padding-top: 0;
+  ::v-deep .el-date-editor.el-input {
+    width: 100%;
+  }
+  ::v-deep .el-textarea__inner {
+    height: 300px;
+  }
+}
+
+.scoped-img-area {
+  padding-left: 40px;
+  .sia-op {
+    display: inline-block;
+    vertical-align: middle;
+    margin-right: 10px;
+    margin-bottom: 10px;
+    border: 1px solid #f2f2f2;
+    width: 80px;
+    height: 80px;
+    position: relative;
+    &:hover {
+      .img-big {
+        display: block;
+      }
+    }
+    .img {
+      width: 80px;
+      height: 80px;
+    }
+    .close {
+      position: absolute;
+      width: 20px;
+      height: 20px;
+      top: -10px;
+      right: -10px;
+      background: url(../../../../assets/icon_g_close.png) no-repeat;
+      background-size: 20px;
+      cursor: pointer;
+    }
+    .img-big {
+      position: absolute;
+      bottom: 0;
+      left: 0;
+      width: 400px;
+      height: auto;
+      display: none;
+      box-shadow: 10px 10px 10px #ccc;
+      z-index: 99;
+    }
+  }
+  .sia-img {
+    display: inline-block;
+    vertical-align: middle;
+    width: 80px;
+    height: 80px;
+    overflow: hidden;
+    border: 1px dashed #999;
+    margin-bottom: 10px;
+    .el-icon-plus {
+      color: #999;
+      padding: 30px;
+    }
+  }
+}
+</style>

+ 309 - 0
src/views/house/components/popup/RoomPricenew.vue

@@ -0,0 +1,309 @@
+<template>
+  <div>
+    <el-drawer
+      :show-close="false"
+      :title="type === 'edit' ? '编辑一房一价' : '新增一房一价'"
+      :wrapper-closable="false"
+      :close-on-press-escape="false"
+      :visible.sync="isShow"
+      size="1100px"
+      custom-class="xl-drawer"
+      direction="rtl"
+    >
+      <div v-if="this.type === 'add'" class="scoped-top">
+        <base-form slot="content" ref="ruleForm" :data="searchData" :noLabel="false" labelWidth="100px" :insertSlotArr="[3]">
+          <div slot="OI3" class="scoped-tips">以上为销控表数据,可以为空不管,仅录一房一价忽略</div>
+          <!-- <div slot="OI6" class="scoped-tips">不知道套内面积,就填建筑面积(得房率100%)</div> -->
+          <div slot="footer">
+            <el-button icon="el-icon-Plus" class="xl-form-btn bgc2" @click="batchAdd">批量添加</el-button>
+          </div>
+        </base-form>
+      </div>
+      <table-list
+        :listLoading="false"
+        listLoadStr="createdClose"
+        :data="tableData2"
+        :columns="listConfig"
+        :current-page="currentPage"
+        :page-size="pageSize"
+        :total-records="totalRecords"
+        @currentChange="pageHandle"
+        @sizeChange="sizeChange"
+        :operationsDefaultLength="4"
+      />
+      <div class="xl-form">
+        <div class="xl-form-footer fixed" style="width:960px;padding-top: 20px;border-top: 1px solid #dcdcdc;right:0;">
+          <el-button class="xl-form-btn t2" @click="close">关 闭</el-button>
+          <el-button v-if="this.type === 'add'" class="xl-form-btn t1" @click="close('confirm')">保存</el-button>
+        </div>
+      </div>
+    </el-drawer>
+    <rpt-edit
+      :isShow="isREShow"
+      :curObj="reObj"
+      :roomAreaList="roomAreaList"
+      @close="closeREPopup"
+     />
+  </div>
+</template>
+<script>
+import { arrToObj } from '@/utils'
+import baseTable from '_m/baseTable.js'
+import RptEdit from './RoomPriceTypeEditnew.vue'
+export default {
+  components: {
+    RptEdit
+  },
+  mixins: [...mixins, baseTable],
+  props: {
+    isShow: Boolean,
+    curObj: Object,
+    type: String,
+  },
+  inject: ['parentData'],
+  data() {
+    return {
+      apiStr: 'house.admnewhousepricelist',
+      searchForm: {},
+      noCreated: true,
+      isLEShow: false,
+      cObj: {},
+      searchData: [],
+      roomAreaList: [],
+      isREShow: false,
+      reObj: {},
+    }
+  },
+  computed: {
+    tableData2() {
+      const arr = [...this.tableData]
+      arr.map(item => {
+        if (item.house_img) item.houseImg = item.house_img + '_adm0'
+        if (this.type === 'add') item.noCan = true
+      })
+      return arr
+    }
+  },
+  mounted() {
+    // this.getDef()
+    this.listConfig = {
+      rows: [
+        { label: '楼栋', prop: 'building_num', type: 'input', width: '100px'},
+        { label: '楼层', prop: 'storey', type: 'input', width: '60px'},
+        { label: '房号', prop: 'room', type: 'input', width: '60px'},
+        { label: '建筑面积(㎡)', prop: 'built', type: 'input', width: '80px'},
+        { label: '套内面积(㎡)', prop: 'space', type: 'input', width: '80px'},
+        { label: '基础单价(元/㎡)', prop: 'blank', type: 'input', width: '90px'},
+        { label: '装修增值单价(元/㎡)', prop: 'decoration', type: 'input', width: '90px'},
+        { label: '销控状态', prop: 'house_sale_state', type: 'tag', tags: arrToObj(this.$dictData.house_sale_state), width: '90px'},
+        { label: '真实折扣', prop: 'house_discount', type: 'input', width: '90px'},
+        { label: '销控备注', prop: 'house_sale_remark', type: 'input', width: '90px'},
+        { label: '户型名', prop: 'house_type', width: '100px'},
+        { label: '户型图', prop: 'houseImg', type: 'img'},   
+        { label: '操作', width: 200, type: 'handle2', operations:
+          [
+            { label: '保存', func: this.saveHandle, btnType: 'primary', hide: 'noCan' },
+            { label: '修改户型', func: this.openREPopup, btnType: 'success', hide: 'noCan' },
+            { label: '删除', func: this.delHandle, btnType: 'danger' },
+          ]
+        }
+      ]
+    }
+  },
+  watch: {
+    isShow: function(val) {
+      if (val) {
+        if (this.type === 'edit') {
+          this.searchForm = {
+            estate_id: this.curObj.estate_id,
+            building_id: this.curObj.id,
+          }
+          this.fetchData()
+        } else {
+          this.totalRecords = 1
+          this.currentPage = 1
+          this.tableData = []
+        }
+        this.$api.house.admestatehousearealist({estate_id: this.curObj.estate_id}).then(res => {
+          const list = res.list || []
+          const htObj = arrToObj(this.$dictData.house_type)
+          const ptObj = arrToObj(this.$dictData.product_type)
+          list.map(item => {
+            item.key = `${htObj[item.house_type]}${item.area}㎡-${ptObj[item.product_type]}`
+            item.key2 = `${htObj[item.house_type]}`
+            item.val = item.id
+          })
+          this.roomAreaList = [...list]
+          this.getDef()
+        })
+      }
+    },
+  },
+  methods: {
+    openREPopup(row) {
+      this.reObj = row
+      this.isREShow = true
+    },
+    closeREPopup(obj) {
+      this.isREShow = false
+      if (obj) {
+        this.fetchData()
+      }
+    },
+    getData () {
+      this.$api.house.admnewhousepricelist({
+        estate_id: this.curObj.estate_id,
+        building_id: this.curObj.id,
+      }).then(res => {
+        let list = res.list || []
+        list.map(item => {
+          item.houseImg = item.house_img + '_adm0'
+        })
+        this.tableData = [...list]
+      })
+    },
+    saveHandle (row) {
+      this.$api.house.admnewhousepriceedit(row).then(res => {
+        this.fetchData()
+        this.$msgs('更新成功~')
+      })
+    },
+    getDef (str) {
+      let params = {}
+      let addArr = []
+      const colArr = new Array(Number(this.curObj.room_num)).fill({i: "add"})
+      colArr.forEach((item, itemIndex) => {
+        addArr.push({ label: `${itemIndex + 1}-建筑面积(㎡)`, key: `${itemIndex + 1}-built` })
+        addArr.push({ label: `${itemIndex + 1}-套内面积(㎡)`, key: `${itemIndex + 1}-space` })
+        addArr.push({ label: `${itemIndex + 1}-户型`, key: `${itemIndex + 1}-HT`, type: 'select', options: this.roomAreaList})
+      })
+      this.searchData = [
+        { label: '销控状态', key: 'house_sale_state', type: 'select', options: this.$dictData.house_sale_state },
+        { label: '真实折扣', label2: '如: *0.95,-20000', key: 'house_discount' },
+        { label: '销控备注', key: 'house_sale_remark' },
+        ...addArr,
+      ]
+      this.setDefaultValue(params, 'searchData')
+    },
+    batchAdd () {
+      const oldform = this.$refs.ruleForm.baseForm
+      const newForm = { ...oldform }
+      let curArr = [...this.tableData]
+      let newArr = new Array(Number(this.curObj.total_floor) * Number(this.curObj.room_num)).fill({
+        ...newForm
+      })
+      newArr.forEach((n, i) => {
+        let rowIndex = Math.floor(i / this.curObj.room_num) + 1
+        let colIndex = Math.floor(i % this.curObj.room_num) + 1
+        let built = ''
+        let space = ''
+        let house_type = ''
+        let house_img = ''
+        let houseImg = ''
+        for (let f in newForm) {
+          if (f.indexOf(colIndex + '-built') > -1) {
+            built = newForm[f]
+          }
+          if (f.indexOf(colIndex + '-HT') > -1) {
+            this.roomAreaList.forEach(ra => {
+              if (newForm[f] === ra.id) {
+                house_type = ra.key2
+                houseImg = ra.pri_image + '_adm0'
+                house_img = ra.pri_image
+              }
+            })
+          }
+          if (f.indexOf(colIndex + '-space') > -1) {
+            space = newForm[f]
+          }
+        }
+        curArr.push({
+          ...n,
+          storey: rowIndex,
+          room: `${rowIndex}0${colIndex}`,
+          built,
+          space,
+          house_type,
+          house_img,
+          houseImg,
+          blank: '',
+          building_num: `${this.curObj.buildingStr}${this.curObj.unitStr}`,
+        })
+      })
+      this.tableData = [...curArr]
+      this.setDefaultValue({}, 'searchData')
+    },
+    delHandle(row) {
+      this.$msg(`您确定要删除该楼盘吗?`, 'confirm', () => {
+        if (this.type === 'add') {
+          let arr = [...this.tableData]
+          let cIndex = ''
+          arr.map((item, index) => {
+            if (item.randomId === row.randomId) {
+              cIndex = index
+            }
+          })
+          arr.splice(cIndex, 1)
+          this.tableData = [...arr]
+        } else {
+          this.$api.house.admnewhousepricedel({id: row.id}).then(res => {
+            this.$msgs('删除成功~')
+            this.getData()
+          })
+        }
+      }, null, true)
+    },
+    close(str) {
+      if (str === 'confirm') {
+        let curArr = [...this.tableData]
+        let newArr = []
+        curArr.map(item => {
+          newArr.push({
+            blank: item.blank,
+            building_num: item.building_num,
+            built: item.built,
+            decoration: item.decoration,
+            floor_height: item.floor_height,
+            house_type: item.house_type,
+            room: item.room,
+            space: item.space,
+            storey: item.storey,
+            house_img: item.house_img,
+          })
+        })
+        let params = {
+          estate_id: this.curObj.estate_id,
+          building_id: this.curObj.id,
+          data: JSON.stringify(newArr)
+        }
+        let apiStr = 'admnewhousepriceadd'
+        this.$api.house[apiStr](params).then(data => {
+          this.$msgs(params.building_id ? '编辑成功' : '新增成功')
+          this.tableData = []
+          this.$emit('close', newForm)
+        })
+      } else {
+        this.$emit('close')
+        this.tableData = []
+        this.setDefaultValue()
+      }
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+::v-deep .xl-table-box {
+  padding-bottom: 50px;
+}
+::v-deep .el-form-item {
+
+}
+
+.scoped-tips {
+  padding: 6px 10px;
+  color: #000;
+  background: #e1ca82;
+  font-size: 14px;
+  margin-bottom: 10px;
+}
+</style>

+ 64 - 0
src/views/house/components/searchForm/Buildunit.vue

@@ -0,0 +1,64 @@
+<template>
+  <base-form slot="content" ref="ruleForm" :data="searchData">
+    <div slot="footer">
+      <el-button :loading="listLoading" icon="el-icon-search" class="xl-form-btn bgc1" @click="searchHandle">{{name}}的楼栋单元列表</el-button>
+    </div>
+  </base-form>
+</template>
+<script>
+export default {
+  props: {
+    listLoading: Boolean
+  },
+  inject: ['parentData'],
+  mixins,
+  data() {
+    return {
+      searchData: [],
+      isHidePut: false,
+    }
+  },
+  computed: {
+    name () {
+      return this.parentData.$route.query.name || ''
+    }
+  },
+  mounted () {
+    // this.getDef()
+  },
+  methods: {
+    addHandle () {
+      this.parentData.isDtlShow = true
+      this.parentData.curObj = {}
+    },
+    pushToUser () {
+      this.$msg(`您确定要推送给关注的用户吗?`, 'confirm', () => {
+        this.$api.user.admestatepricepush({
+          estate_id: this.parentData.$route.query.id
+        }).then(() => {
+          this.$msgs('推送成功~')
+          this.isHidePut = true
+        })
+      }, null, true)
+    },
+    getDef (str) {
+      let params = { ...this.$refs.ruleForm.baseForm }
+      const query = this.$route.query
+      let estateName = query.name || ''
+      params.estate_id = query.id ? Number(query.id) : ''
+      this.searchData = [
+        { label: '选择楼盘', key: 'estate_id', type: 'selectRemote', changeHandle: this.estateChange,
+          remoteParams: { skey: 'estate_name', api: `house.admestatelist`, opKey: 'estate_name', opVal: 'id' },
+          remoteOptions: [{ keyRO: estateName, valRO: params.estate_id }]
+        },
+        { label: '签约中介', key: 'company' },
+        { label: '签约日期', label2: '开始时间', label3: '结束时间', key: 'startEndTime', type: 'datePicker', rules: 1},
+      ]
+      this.setDefaultValue(params, 'searchData')
+    },
+    searchHandle() {
+      // this.$emit('change', {})
+    }
+  }
+}
+</script>

+ 3 - 0
src/views/house/index.vue

@@ -160,6 +160,9 @@ export default {
             { label: '保存排序', func: this.saveHandle, btnType: 'success' },
             { label: '编辑信息', func: this.openPopup, btnType: 'primary' },
             { label: '编辑相册', func: this.openPhotoPopup, btnType: 'info' },
+            { label: '一房一价', func: (item) => {
+              this.$router.push('/house/buildunit?id=' + item.id + '&name=' + item.estate_name)
+            }, btnType: 'primary' },
             { label: '内部相册库', func: this.openPhoto2Popup, btnType: 'info' },
             { label: '楼盘航拍', func: this.openVrPopup, btnType: 'primary' },
             { label: '置业顾问', func: this.openSale, btnType: 'info' },

+ 1 - 0
src/views/room/cust.vue

@@ -75,6 +75,7 @@ export default {
     this.listConfig = {
       rows: [
         { label: '上传时间', prop: 'create_at' },
+        { label: '业务归属', prop: 'sale_name' },
         { label: '已审核', prop: 'verify_state', type: 'tag', tags: arrToObj(this.$dictData.sys_yesno) }, 
         { label: '房产证', prop: 'house_cert', type: 'img' },
         { label: '联系方式', prop: 'phone' },

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů