liujq 3 tahun lalu
induk
melakukan
95ff72e740

File diff ditekan karena terlalu besar
+ 0 - 0
dist/index.html


File diff ditekan karena terlalu besar
+ 0 - 0
dist/static/css/chunk-03961392.4d0a9fd9.css


File diff ditekan karena terlalu besar
+ 0 - 0
dist/static/css/chunk-4bc0be42.dfd61804.css


File diff ditekan karena terlalu besar
+ 0 - 0
dist/static/js/app.7aea625d.js


File diff ditekan karena terlalu besar
+ 0 - 0
dist/static/js/app.c188477d.js


File diff ditekan karena terlalu besar
+ 0 - 0
dist/static/js/chunk-03961392.b7502ea8.js


File diff ditekan karena terlalu besar
+ 0 - 0
dist/static/js/chunk-4bc0be42.1cb8223c.js


File diff ditekan karena terlalu besar
+ 0 - 0
dist/static/js/chunk-593f9664.54ca671c.js


File diff ditekan karena terlalu besar
+ 0 - 0
dist/static/js/chunk-62b4e03e.06731d9b.js


File diff ditekan karena terlalu besar
+ 0 - 0
dist/static/js/chunk-7441b538.b80ac836.js


+ 15 - 0
src/api/other.js

@@ -88,4 +88,19 @@ export default {
   admindexrank: params => { // 楼盘 - 所有 排行
     return getRequest('/adm/index/rank', params)
   },
+  admareainfolist: params => { // 区域管理 - 列表
+    return getRequest('/adm/area/info/list', params)
+  },
+  admareainfoedit: params => { // 区域管理 - 编辑
+    return getRequestNoSort('/adm/area/info/edit', params, 'loading')
+  },
+  admareainfoadd: params => { // 区域管理 - 添加
+    return getRequestNoSort('/adm/area/info/add', params, 'loading')
+  },
+  admareainfodel: params => { // 区域管理 - 删除
+    return getRequestNoSort('/adm/area/info/del', params, 'loading')
+  },
+  admareainfodetail: params => { // 区域管理 - 详情
+    return getRequestNoSort('/adm/area/info/detail', params, 'loading')
+  },
 }

+ 3 - 0
src/api/user.js

@@ -88,4 +88,7 @@ export default {
   admwechatuserintegrallist: params => { //  用户积分明细列表
     return getRequest('/adm/wechat/user/integral/list', params)
   },
+  admwechatusersale: params => { //  用户 -  用户角色设置 - 置业经理 普通用户
+    return getRequestNoSort('/adm/wechat/user/sale', params, 'loading')
+  },
 }

+ 121 - 0
src/views/area/components/popup/IndexEdit.vue

@@ -0,0 +1,121 @@
+<template>
+  <div>
+    <el-dialog
+      v-loading="loading"
+      :show-close="false"
+      :close-on-click-modal="false"
+      :visible.sync="isShow"
+      :title="curObj.id ? '编辑区域信息' : '添加区域信息'"
+      :fullscreen="false"
+      width="700px"
+      custom-class="xl-dialog"
+      center
+    >
+      <base-form ref="ruleForm" class="lib-edit" :data="formData" :is-inline="false" label-width="100px">
+        <div slot="footer" style="padding-top: 20px;">
+          <el-button class="xl-form-btn t2" @click="close">关 闭</el-button>
+          <el-button class="xl-form-btn t1" @click="close('confirm')">确定</el-button>
+        </div>
+      </base-form>
+    </el-dialog>
+  </div>
+</template>
+<script>
+export default {
+  components: { },
+  mixins,
+  props: {
+    isShow: Boolean,
+    curObj: Object
+  },
+  inject: ['parentData'],
+  data() {
+    return {
+      formData: [],
+      loading: true,
+    }
+  },
+  watch: {
+    isShow: function(val) {
+      if (val) {
+        this.getDef()
+      }
+    },
+  },
+  methods: {
+    getDef() {
+      let params = { ...this.curObj }
+      this.formData = [
+        { label: '区域', key: 'area_type', type: 'select', class: 'c-2', options: this.$dictData.area_type },
+        { label: '区域图', key: 'pri_image', type: 'uploads' },
+        { label: '描述', key: 'remark', type: 'textarea'},
+      ]
+      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
+            let apiStr = 'admareainfoadd'
+            if (newForm.id) apiStr = 'admareainfoedit'
+            this.$api.other[apiStr](newForm).then(data => {
+              this.$msgs(newForm.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;
+  ::v-deep .el-form-item {
+    margin-bottom: 10px;
+  }
+  ::v-deep .el-date-editor.el-input {
+    width: 100%;
+  }
+}
+::v-deep .img-upload {
+  height: 180px;
+  overflow: hidden;
+  .icon {
+    width: 278px;
+  }
+  .img {
+    width: 278px;
+  }
+}
+.scoped-tips {
+  position: absolute;
+  width: 110px;
+  top: 160px;
+  right: 150px;
+  color: #666;
+  font-size: 14px;
+  .s {
+    display: block;
+    color: #f15264;
+    font-weight: bold;
+  }
+}
+.scoped-tips2 {
+  position: absolute;
+  width: 260px;
+  top: 350px;
+  right: 0;
+  color: #f15264;
+  font-size: 14px;
+  font-weight: bold;
+}
+</style>

+ 31 - 0
src/views/area/components/searchForm/Index.vue

@@ -0,0 +1,31 @@
+<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">查询</el-button>
+      <!-- <el-button :loading="listLoading" icon="el-icon-document" class="xl-form-btn bgc2" @click="toExportExcel">导出{{ this.$route.meta.title }}信息</el-button> -->
+    </div>
+  </base-form>
+</template>
+<script>
+export default {
+  props: {
+    listLoading: Boolean
+  },
+  inject: ['parentData'],
+  data() {
+    return {
+      searchData: [
+        { label: '备注', key: 'remark' },
+        { label: '区域', key: 'area_type', type: 'select', class: 'c-3', options: this.$dictData.area_type },
+      ]
+    }
+  },
+  methods: {
+    searchHandle() {
+      const oldform = this.$refs.ruleForm.baseForm
+      const newForm = { ...oldform }
+      this.$emit('change', newForm)
+    }
+  }
+}
+</script>

+ 102 - 0
src/views/area/index.vue

@@ -0,0 +1,102 @@
+<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"
+      :isAdd="true"
+      @add="openPopup"
+    />
+    <popup-edit
+      :isShow="isDtlShow"
+      :curObj="curObj"
+      @close="closePopup"
+    />
+  </div>
+</template>
+<script>
+import { arrToObj } from '@/utils'
+import SearchForm from './components/searchForm/Index'
+import PopupEdit from './components/popup/IndexEdit'
+import baseTable from '_m/baseTable.js'
+export default {
+  name: 'index',
+  components: {
+    SearchForm,
+    PopupEdit,
+  },
+  provide() {
+    return {
+      parentData: this
+    }
+  },
+  mixins: [baseTable],
+  data() {
+    return {
+      apiStr: 'other.admareainfolist',
+      searchForm: null,
+      isDtlShow: false,
+      curObj: {},
+    }
+  },
+  computed: {
+    tableData2() {
+      const arr = [...this.tableData,]
+      arr.map(item => {})
+      return arr
+    }
+  },
+  created() {},
+  mounted() {
+    this.listConfig = {
+      rows: [
+        { label: '区域图', prop: 'pri_image', type: 'img' },
+        { label: '投放位置', prop: 'area_type', type: 'flag', flags: arrToObj(this.$dictData.area_type) }, 
+        { label: '描述', prop: 'remark' },
+        { label: '更新人', prop: 'update_by' },
+        { label: '更新时间', prop: 'update_at' },
+        { label: '操作', width: 120, type: 'handle2', operations:
+          [
+            { label: '编辑', func: this.openPopup, btnType: 'primary' },
+            { label: '删除', func: this.delHandle, btnType: 'danger' },
+          ]
+        }
+      ]
+    }
+  },
+  methods: {
+    delHandle(row) {
+      this.$msg(`您确定要删除该区域吗?`, 'confirm', () => {
+        this.$api.other.admareainfodel({
+          id: row.id,
+        }).then(data => {
+          this.$msgs(`已删除!`)
+          this.fetchData()
+        })
+      }, null, true)
+    },
+    openPopup(row) {
+      if (row && row.id) {
+        this.curObj = row
+      } else {
+        this.curObj = {}
+      }
+      this.isDtlShow = true
+    },
+    closePopup(obj) {
+      this.isDtlShow = false
+      if (obj) {
+        this.fetchData() 
+      }
+    }
+  }
+}
+</script>

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

@@ -55,12 +55,15 @@ export default {
   mounted() {
     this.listConfig = {
       rows: [
+        { label: '楼盘名称', prop: 'estate_name' },
         { label: '反馈图1', prop: 'img1', type: 'img' },
         { label: '反馈图2', prop: 'img2', type: 'img' },
         { label: '反馈图3', prop: 'img3', type: 'img' },
         { label: '反馈内容', prop: 'feedback_count', fullShow: true, minWidth: '300' },
         { label: '类型', prop: 'feedback_type', type: 'tag', tags: arrToObj(this.$dictData.feedback_type) }, 
         { label: '联系方式', prop: 'contact' },
+        { label: '微信昵称', prop: 'nickname' },
+        { label: '微信头像', prop: 'avatar', type: 'img' },
         { label: '操作', width: 60, type: 'handle2', operations:
           [
             { label: '删除', func: this.delHandle, btnType: 'danger' },

+ 27 - 1
src/views/user/app.vue

@@ -28,7 +28,7 @@
 </template>
 <script>
 import { arrToObj } from '@/utils'
-import SearchForm from './components/searchForm/Index'
+import SearchForm from './components/searchForm/App'
 import PopupEdit from './components/popup/AppIntegralEdit'
 import PointDtl from './components/popup/AppIntegralDtl'
 import baseTable from '_m/baseTable.js'
@@ -80,6 +80,7 @@ export default {
         { label: '手机号', prop: 'phones' },
         { label: '注册时间', prop: 'create_at' },
         { label: '禁言状态', prop: 'is_gag', type: 'tag', tags: arrToObj(this.$dictData.sys_yesno), tagTypeObj: {'2': 'success', '1': 'danger'} },
+        { label: '置业经理', prop: 'is_sale', type: 'tag', tags: arrToObj(this.$dictData.sys_yesno), tagTypeObj: {'2': 'info', '1': 'primary'} },
         { label: '备注', prop: 'tag', type: 'input', width: 100},
         { label: '操作', width: 260, type: 'handle2', operations:
           [
@@ -98,6 +99,18 @@ export default {
                 }
               }
             },
+            { labelFor: 'is_sale', func: this.isSaleHandle,
+              labelConfig: {
+                texts: {
+                  1: '设成用户',
+                  2: '设成销售'
+                },
+                btnTypes: {
+                  1: 'primary',
+                  2: 'info'
+                }
+              }
+            },
             { label: '删除', func: this.delHandle, btnType: 'danger' },
           ]
         }
@@ -133,6 +146,19 @@ export default {
         this.fetchData()
       }
     },
+    isSaleHandle (row) {
+      const is_sale = Number(row.is_sale) === 1 ? 2 : 1
+      const msgText = Number(row.is_sale) === 1 ? '设置成用户' : '设置成置业经理---'
+      this.$msg(`确定要${msgText}${row.nickname}吗?`, 'confirm', ()=> {
+        this.$api.user.admwechatusersale({
+          id: row.id,
+          is_sale
+        }).then(data => {
+          this.$msgs(`${msgText}成功!`)
+          this.fetchData()
+        })
+      }, null, true)
+    },
     disHandle (row) {
       const is_gag = Number(row.is_gag) === 1 ? 2 : 1
       const msgText = Number(row.is_gag) === 1 ? '解禁' : '禁言'

+ 33 - 0
src/views/user/components/searchForm/App.vue

@@ -0,0 +1,33 @@
+<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">查询</el-button>
+      <!-- <el-button :loading="listLoading" icon="el-icon-document" class="xl-form-btn bgc2" @click="toExportExcel">导出{{ this.$route.meta.title }}信息</el-button> -->
+    </div>
+  </base-form>
+</template>
+<script>
+export default {
+  mixins: [],
+  props: {
+    listLoading: Boolean
+  },
+  inject: ['parentData'],
+  data() {
+    return {
+      searchData: [
+        { label: '手机号', key: 'phone' },
+        { label: '昵称', key: 'nickname' },
+        { label: '是否置业经理', key: 'is_sale', type: 'select', class: 'c-3', options: this.$dictData.sys_yesno },
+      ]
+    }
+  },
+  methods: {
+    searchHandle() {
+      const oldform = this.$refs.ruleForm.baseForm
+      const newForm = { ...oldform }
+      this.$emit('change', newForm)
+    }
+  }
+}
+</script>

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini