Browse Source

Merge remote-tracking branch 'origin/master'

e 5 years ago
parent
commit
4bacb8b49a

+ 26 - 0
src/api/address.js

@@ -0,0 +1,26 @@
+import request from '@/utils/request'
+
+export function getProvince(query) {
+  return request({
+    url: '/user/cmUserOrganize/province',
+    method: 'get',
+    params: query
+  })
+}
+
+export function getCtiy(query) {
+  return request({
+    url: '/user/cmUserOrganize/city',
+    method: 'get',
+    params: query
+  })
+}
+
+export function getTown(query) {
+  return request({
+    url: '/user/cmUserOrganize/town',
+    method: 'get',
+    params: query
+  })
+}
+

+ 15 - 36
src/api/club.js

@@ -1,11 +1,21 @@
 import request from '@/utils/request'
 import request from '@/utils/request'
 
 
 /**
 /**
- *上线会所
+ *编辑会所
  */
  */
 export function addNewClub(query) {
 export function addNewClub(query) {
   return request({
   return request({
-    url: '/user/cmUserOrganize/toCmOrganizeClubList',
+    url: '/user/cmUserOrganize/toAddClubUser',
+    method: 'get',
+    params: query
+  })
+}
+/**
+ *上线会所
+ */
+export function saveAddClubUser(query) {
+  return request({
+    url: '/user/cmUserOrganize/saveAddClubUser',
     method: 'get',
     method: 'get',
     params: query
     params: query
   })
   })
@@ -50,20 +60,9 @@ export function updateStatus(query) {
     params: query
     params: query
   })
   })
 }
 }
-/**
- *会所条件搜索
- */
-export function queryClubList(query) {
-  return request({
-    url: '/goods/category/list',
-    method: 'get',
-    params: query
-  })
-}
 /**
 /**
  *****************运营人员列表************
  *****************运营人员列表************
  */
  */
-
 /**
 /**
  *运营人员列表
  *运营人员列表
  */
  */
@@ -75,21 +74,11 @@ export function getOperatorList(query) {
   })
   })
 }
 }
 /**
 /**
- *生成邀请码
- */
-export function createOperatorCode(query) {
-  return request({
-    url: '/goods/category/list',
-    method: 'get',
-    params: query
-  })
-}
-/**
- *更新邀请码
+ *更新邀请码&&生成邀请码
  */
  */
 export function updateOperatorCode(query) {
 export function updateOperatorCode(query) {
   return request({
   return request({
-    url: '/goods/category/list',
+    url: '/user/cmOperationUser/updateInvitationCode',
     method: 'get',
     method: 'get',
     params: query
     params: query
   })
   })
@@ -99,17 +88,7 @@ export function updateOperatorCode(query) {
  */
  */
 export function unbindOperator(query) {
 export function unbindOperator(query) {
   return request({
   return request({
-    url: '/goods/category/list',
-    method: 'get',
-    params: query
-  })
-}
-/**
- *运营人员条件搜索
- */
-export function queryOperatorList(query) {
-  return request({
-    url: '/goods/category/list',
+    url: '/user/cmOperationUser/untiedOperationUser',
     method: 'get',
     method: 'get',
     params: query
     params: query
   })
   })

+ 63 - 80
src/components/Ctiy/index.vue

@@ -2,42 +2,42 @@
   <div>
   <div>
     <el-form-item :rules="rules" label="*会所地址:" :label-width="'130px'" style="width: 640px;text-align: right;">
     <el-form-item :rules="rules" label="*会所地址:" :label-width="'130px'" style="width: 640px;text-align: right;">
       <el-select
       <el-select
-        v-model="sheng"
+        v-model="province"
         placeholder="省级地区"
         placeholder="省级地区"
         style="width:167px;"
         style="width:167px;"
         @change="choseProvince"
         @change="choseProvince"
       >
       >
         <el-option
         <el-option
-          v-for="item in province"
-          :key="item.id"
-          :label="item.value"
-          :value="item.id"
+          v-for="item in provinceArray"
+          :key="item.provinceID"
+          :label="item.name"
+          :value="item.provinceID"
         />
         />
       </el-select>
       </el-select>
       <el-select
       <el-select
-        v-model="shi"
+        v-model="city"
         placeholder="市级地区"
         placeholder="市级地区"
         style="width:167px;"
         style="width:167px;"
         @change="choseCity"
         @change="choseCity"
       >
       >
         <el-option
         <el-option
-          v-for="item in shi1"
-          :key="item.id"
-          :label="item.value"
-          :value="item.id"
+          v-for="item in cityArray"
+          :key="item.cityID"
+          :label="item.name"
+          :value="item.cityID"
         />
         />
       </el-select>
       </el-select>
       <el-select
       <el-select
-        v-model="qu"
+        v-model="town"
         placeholder="区级地区"
         placeholder="区级地区"
         style="width:167px;"
         style="width:167px;"
         @change="choseBlock"
         @change="choseBlock"
       >
       >
         <el-option
         <el-option
-          v-for="item in qu1"
-          :key="item.id"
-          :label="item.value"
-          :value="item.id"
+          v-for="item in townArray"
+          :key="item.townID"
+          :label="item.name"
+          :value="item.townID"
         />
         />
       </el-select>
       </el-select>
     </el-form-item>
     </el-form-item>
@@ -45,24 +45,31 @@
 </template>
 </template>
 
 
 <script>
 <script>
-import axios from 'axios'
+import { getProvince, getCtiy, getTown } from '@/api/address'
 export default {
 export default {
   name: 'Ctiy',
   name: 'Ctiy',
+  props: {
+    addressData: {
+      type: Object,
+      default: function() {
+        return {}
+      }
+    }
+  },
   data() {
   data() {
     return {
     return {
-      mapJson: 'http://localhost:9527/map.json',
+      provinceArray: '',
       province: '',
       province: '',
-      sheng: '',
-      shi: '',
-      shi1: [],
-      qu: '',
-      qu1: [],
       city: '',
       city: '',
-      block: '',
+      cityArr: [],
+      town: '',
+      townArr: [],
+      cityArray: '',
+      townArray: '',
       rules: {
       rules: {
-        sheng: [{ required: true, message: '请选择省份', trigger: 'blur' }],
-        shi: [{ required: true, message: '请选择市', trigger: 'blur' }],
-        qu: [{ required: true, message: '请选择区县', trigger: 'blur' }]
+        province: [{ required: true, message: '请选择省份', trigger: 'blur' }],
+        city: [{ required: true, message: '请选择市', trigger: 'blur' }],
+        town: [{ required: true, message: '请选择区县', trigger: 'blur' }]
       }
       }
     }
     }
   },
   },
@@ -70,78 +77,54 @@ export default {
     this.getCityData()
     this.getCityData()
   },
   },
   methods: {
   methods: {
-    // 加载china地点数据,三级
+    // 加载省份
     getCityData: function() {
     getCityData: function() {
-      var that = this
-      axios.get(this.mapJson).then(function(response) {
-        if (response.status == 200) {
-          var data = response.data
-          that.province = []
-          that.city = []
-          that.block = []
-          // 省市区数据分类
-          for (var item in data) {
-            if (item.match(/0000$/)) { // 省
-              that.province.push({ id: item, value: data[item], children: [] })
-            } else if (item.match(/00$/)) { // 市
-              that.city.push({ id: item, value: data[item], children: [] })
-            } else { // 区
-              that.block.push({ id: item, value: data[item] })
-            }
-          }
-          // 分类市级
-          for (var index in that.province) {
-            for (var index1 in that.city) {
-              if (that.province[index].id.slice(0, 2) === that.city[index1].id.slice(0, 2)) {
-                that.province[index].children.push(that.city[index1])
-              }
-            }
-          }
-          // 分类区级
-          for (var item1 in that.city) {
-            for (var item2 in that.block) {
-              if (that.block[item2].id.slice(0, 4) === that.city[item1].id.slice(0, 4)) {
-                that.city[item1].children.push(that.block[item2])
-              }
-            }
-          }
-        } else {
-          console.log(response.status)
-        }
-      }).catch(function(error) { console.log(typeof +error) })
+      console.log(this.addressData)
+      this.province = this.addressData.province
+      this.city = this.addressData.city
+      this.town = this.addressData.town
+      getProvince().then(response => {
+        this.provinceArray = response.data
+      })
     },
     },
     // 选省
     // 选省
     choseProvince: function(e) {
     choseProvince: function(e) {
-      for (var index2 in this.province) {
-        if (e === this.province[index2].id) {
-          this.shi1 = this.province[index2].children
-          this.shi = this.province[index2].children[0].value
-          this.qu1 = this.province[index2].children[0].children
-          this.qu = this.province[index2].children[0].children[0].value
-          this.E = this.qu1[0].id
+      this.province = e
+      this.townArray = []
+      this.cityArray = []
+      this.town = ''
+      for (var i in this.provinceArray) {
+        if (e === this.provinceArray[i].provinceID) {
+          const provinceid = { provinceid: this.provinceArray[i].provinceID }
+          getCtiy(provinceid).then(response => {
+            this.cityArray = response.data
+            this.city = this.cityArray[0].name
+          })
         }
         }
       }
       }
     },
     },
     // 选市
     // 选市
     choseCity: function(e) {
     choseCity: function(e) {
-      for (var index3 in this.city) {
-        if (e === this.city[index3].id) {
-          this.qu1 = this.city[index3].children
-          this.qu = this.city[index3].children[0].value
-          this.E = this.qu1[0].id
-          // console.log(this.E)
+      this.city = e
+      for (var j in this.cityArray) {
+        if (e === this.cityArray[j].cityID) {
+          const cityID = { cityid: this.cityArray[j].cityID }
+          getTown(cityID).then(response => {
+            this.townArray = response.data
+            this.town = this.cityArray[0].name
+          })
         }
         }
       }
       }
     },
     },
     // 选区
     // 选区
     choseBlock: function(e) {
     choseBlock: function(e) {
-      this.E = e
-      // console.log(this.E)
+      this.town = e
+      const addData = { provinceid: this.province, cityid: this.city, townid: this.town }
+      this.$emit('addlist', addData)
     }
     }
   }
   }
 }
 }
 </script>
 </script>
-
 <style scoped>
 <style scoped>
 
 
 </style>
 </style>

+ 7 - 0
src/router/index.js

@@ -79,6 +79,13 @@ export const constantRoutes = [
         name: 'OperateList',
         name: 'OperateList',
         meta: { title: '查看运营人员', noCache: true, activeMenu: '/club/list' },
         meta: { title: '查看运营人员', noCache: true, activeMenu: '/club/list' },
         hidden: true
         hidden: true
+      },
+      {
+        path: 'editForm',
+        component: () => import('@/views/club/editForm'),
+        name: 'EditForm',
+        meta: { title: '编辑会所', noCache: true, activeMenu: '/club/list' },
+        hidden: true
       }
       }
     ]
     ]
   },
   },

+ 3 - 4
src/utils/request.js

@@ -44,11 +44,10 @@ service.interceptors.response.use(
    */
    */
   response => {
   response => {
     const res = response.data
     const res = response.data
-
     // if the custom code is not 20000, it is judged as an error.
     // if the custom code is not 20000, it is judged as an error.
     if (res.code * 1 !== 1) {
     if (res.code * 1 !== 1) {
       Message({
       Message({
-        message: res.message || 'Error',
+        message: res.msg || 'Error',
         type: 'error',
         type: 'error',
         duration: 5 * 1000
         duration: 5 * 1000
       })
       })
@@ -66,7 +65,7 @@ service.interceptors.response.use(
           })
           })
         })
         })
       }
       }
-      return Promise.reject(new Error(res.message || 'Error'))
+      // return Promise.reject(new Error(res.msg || 'Error'))
     } else {
     } else {
       return res
       return res
     }
     }
@@ -74,7 +73,7 @@ service.interceptors.response.use(
   error => {
   error => {
     console.log('err' + error) // for debug
     console.log('err' + error) // for debug
     Message({
     Message({
-      message: error.message,
+      message: error.msg,
       type: 'error',
       type: 'error',
       duration: 5 * 1000
       duration: 5 * 1000
     })
     })

+ 249 - 0
src/views/club/editForm.vue

@@ -0,0 +1,249 @@
+<template>
+  <div class="app-container" style=" width: 700px;margin: 0 auto;">
+    <el-form ref="dataForm" :rules="rules" :model="form" label-position="left" label-width="130px">
+      <el-form-item label="会所名称:" prop="name" style="width: 500px;text-align: right;">
+        <el-input v-model="form.name" placeholder="请与营业执照的注册名称保持一致" maxlength="50" />
+      </el-form-item>
+      <el-form-item label="联系人:" prop="linkMan" style="width: 500px; text-align: right;">
+        <el-input v-model="form.linkMan" placeholder="请填写联系人姓名" maxlength="10" />
+      </el-form-item>
+      <el-form-item label="手机号:" prop="contractMobile" style="width: 500px; text-align: right;">
+        <el-input v-model="form.contractMobile" placeholder="请填写你的常用号码" maxlength="11" />
+      </el-form-item>
+      <City :address-data="addList" @addlist="handleCity" />
+      <el-form-item label="" prop="address" style="width: 500px; text-align: right;">
+        <el-input v-model="form.address" placeholder="请填写会所详细的地址" />
+      </el-form-item>
+      <el-form-item label="会所类型:" style="width: 270px;text-align: right;">
+        <el-radio-group v-model="form.firstClubType">
+          <el-radio :label="1">医美</el-radio>
+          <el-radio :label="2">生美</el-radio>
+        </el-radio-group>
+      </el-form-item>
+      <el-form-item label="营业执照编号:" prop="socialCreditCode" style="width: 500px; text-align: right;">
+        <el-input v-model="form.socialCreditCode" placeholder="请填写统一社会信用代码" maxlength="18" />
+      </el-form-item>
+      <el-form-item label="营业执照:" prop="businessLicenseImage" style="width:400px;text-align: right;">
+        <div class="form-el-upload">
+          <el-upload
+            class="avatar-uploader"
+            accept="image/jpeg,image/gif,image/png"
+            action="https://www-b.caimei365.com/register/imageUpload.action"
+            :show-file-list="false"
+            :on-success="handleAvatarSuccess"
+            :before-upload="beforeAvatarUpload"
+            :multiple="false"
+            :limit="1"
+          >
+            <img v-if="form.businessLicenseImage" :src="form.businessLicenseImage" class="avatar">
+            <i v-else class="el-icon-plus avatar-uploader-icon" />
+            <div slot="tip" class="el-upload__tip">注意:请上传jpg/png格式的图片,最大不超过5M</div>
+          </el-upload>
+        </div>
+      </el-form-item>
+      <el-form-item label="门头照:" prop="headpic" style="width:400px; text-align: right;">
+        <div class="form-el-upload">
+          <el-upload
+            class="avatar-uploader"
+            accept="image/jpeg,image/gif,image/png,image/jpg"
+            action="https://jsonplaceholder.typicode.com/posts/"
+            :show-file-list="false"
+            :on-success="handleDoorwaySuccess"
+            :before-upload="beforeDoorwayUpload"
+          >
+            <img v-if="form.headpic" :src="form.headpic" class="avatar">
+            <i v-else class="el-icon-plus avatar-uploader-icon" />
+            <div slot="tip" class="el-upload__tip">注意:请上传jpg/png格式的图片,最大不超过5M</div>
+          </el-upload>
+        </div>
+      </el-form-item>
+      <el-form-item label="是否上线:" style="width: 240px;text-align: right;">
+        <el-radio-group v-model="form.status">
+          <el-radio :label="90">是</el-radio>
+          <el-radio :label="91">否</el-radio>
+        </el-radio-group>
+      </el-form-item>
+    </el-form>
+    <div slot="footer" class="dialog-footer" style="width:200px;margin:0 auto;padding:40px 0 80px 0;">
+      <router-link :to="'/club/list/'">
+        <el-button>返回</el-button>
+      </router-link>
+      <el-button type="primary" @click="onSubmite()">保存</el-button>
+    </div>
+  </div>
+</template>
+<script>
+// 引入省市区组件,公共组件所在的路径
+import City from '@/components/Ctiy'
+import { addNewClub, saveAddClubUser } from '@/api/club'
+// import { addNewClub } from '@/api/club'
+export default {
+  components: { City },
+  data() {
+    return {
+      userID: this.$route.query.userID,
+      clubID: this.$route.query.clubID,
+      dialogImageUrl: '',
+      dialogVisible: false,
+      form: {
+        name: '',
+        linkMan: '',
+        contractMobile: '',
+        socialCreditCode: '',
+        address: '',
+        status: '',
+        firstClubType: '',
+        headpic: '',
+        businessLicenseImage: ''
+      },
+      rules: {
+        name: [{ required: true, message: '会所名称不能为空', trigger: 'blur' }],
+        contractMobile: [{ required: true, message: '常用手机号不能为空', trigger: 'blur' }],
+        linkMan: [{ required: true, message: '联系人不能为空', trigger: 'blur' }],
+        socialCreditCode: [{ required: true, message: '统一社会信用代码不能为空', trigger: 'blur' }],
+        address: [{ required: true, message: '会所详细地址不能为空', trigger: 'blur' }],
+        status: [{ required: true, message: '请选择是否上线', trigger: 'blur' }]
+      },
+      addList: {
+        provinceID: '',
+        cityID: '',
+        townID: ''
+      }
+    }
+  },
+  created() {
+    console.log(this.clubID)
+    const params = { clubID: this.clubID, userID: this.userID }
+    this.initClubData(params)
+  },
+  methods: {
+    initClubData(params) {
+      console.log(params)
+      addNewClub(params).then(response => {
+        this.form = Object.assign({}, response.data)
+        this.addList.province = response.data.province
+        this.addList.city = response.data.city
+        this.addList.town = response.data.town
+        console.log(this.addList)
+      }).catch(() => {
+        // 封装静态数据
+      })
+    },
+    onSubmite() {
+      this.$refs['dataForm'].validate((valid) => {
+        if (valid) {
+          console.log(this.form)
+          const Formobj = Object.assign(this.form, { userOrganizeID: this.organizeID })
+          const params = Object.assign(this.addList, Formobj)
+          console.log(params)
+          saveAddClubUser(params).then(response => {
+            this.dialogFormVisible = false
+            this.$message({ message: '上线会所成功', type: 'success', center: true })
+            this.$router.push({ path: '/club/list' })
+          })
+        }
+      })
+    },
+    // 从子组件获取省市区
+    handleCity(data) {
+      console.log(data)
+      this.addList.provinceID = data.provinceid
+      this.addList.cityID = data.cityid
+      this.addList.townID = data.townid
+    },
+    handleAvatarSuccess(res, file) {
+      this.getBase64(file.raw).then(res => {
+        console.log(res)
+      })
+      const fileName = file.name
+      const regex = /(.jpg|.jpeg|.gif|.png|.bmp)$/
+      if (regex.test(fileName.toLowerCase())) {
+        this.form.imageUrl = URL.createObjectURL(file.raw)
+      } else {
+        this.$message.error('请选择图片文件')
+      }
+    },
+    beforeAvatarUpload(file) {
+      const isLt5M = file.size / 1024 / 1024 < 5
+      if (!isLt5M) {
+        this.$message.error('上传头像图片大小不能超过 5MB!')
+      }
+      return isLt5M
+    },
+    handleDoorwaySuccess(res, file) {
+      this.getBase64(file.raw).then(res => {
+        console.log(res)
+      })
+      const fileName = file.name
+      const regex = /(.jpg|.jpeg|.gif|.png|.bmp)$/
+      if (regex.test(fileName.toLowerCase())) {
+        this.form.doorwayImageUrl = URL.createObjectURL(file.raw)
+      } else {
+        this.$message.error('请选择图片文件')
+      }
+    },
+    beforeDoorwayUpload(file) {
+      this.getBase64(file.raw).then(res => {
+        console.log(res)
+      })
+      const isLt5M = file.size / 1024 / 1024 < 5
+      if (!isLt5M) {
+        this.$message.error('上传头像图片大小不能超过 5MB!')
+      }
+      return isLt5M
+    },
+    getBase64(file) {
+      return new Promise(function(resolve, reject) {
+        const reader = new FileReader()
+        let imgResult = ''
+        reader.readAsDataURL(file)
+        reader.onload = function() {
+          imgResult = reader.result
+        }
+        reader.onerror = function(error) {
+          reject(error)
+        }
+        reader.onloadend = function() {
+          resolve(imgResult)
+        }
+      })
+    }
+  }
+}
+</script>
+<style lang="scss">
+  .avatar-uploader .el-upload {
+    border: 1px dashed #d9d9d9;
+    border-radius: 6px;
+    cursor: pointer;
+    position: relative;
+    overflow: hidden;
+  }
+  .avatar-uploader .el-upload:hover {
+    border-color: #409EFF;
+  }
+  .avatar-uploader-icon {
+    font-size: 28px;
+    color: #8c939d;
+    width: 178px;
+    height: 178px;
+    line-height: 178px;
+    text-align: center;
+  }
+  .avatar {
+    width: 178px;
+    height: 178px;
+    display: block;
+  }
+  .el-form-item__label{
+      text-align: right !important;
+  }
+  .form-el-upload{
+    width: 180px;
+  }
+  .el-upload__tip{
+    line-height: 20px;
+    color: red;
+    text-align: left;
+  }
+</style>

+ 57 - 48
src/views/club/form.vue

@@ -1,27 +1,27 @@
 <template>
 <template>
   <div class="app-container" style=" width: 700px;margin: 0 auto;">
   <div class="app-container" style=" width: 700px;margin: 0 auto;">
     <el-form ref="dataForm" :rules="rules" :model="form" label-position="left" label-width="130px">
     <el-form ref="dataForm" :rules="rules" :model="form" label-position="left" label-width="130px">
-      <el-form-item label="会所名称:" prop="classifyName" style="width: 500px;text-align: right;">
-        <el-input v-model="form.classifyName" placeholder="请与营业执照的注册名称保持一致" maxlength="50" />
+      <el-form-item label="会所名称:" prop="name" style="width: 500px;text-align: right;">
+        <el-input v-model="form.name" placeholder="请与营业执照的注册名称保持一致" maxlength="50" />
       </el-form-item>
       </el-form-item>
-      <el-form-item label="联系人:" prop="contacts" style="width: 500px; text-align: right;">
-        <el-input v-model="form.contacts" placeholder="请填写联系人姓名" maxlength="10" />
+      <el-form-item label="联系人:" prop="linkMan" style="width: 500px; text-align: right;">
+        <el-input v-model="form.linkMan" placeholder="请填写联系人姓名" maxlength="10" />
       </el-form-item>
       </el-form-item>
-      <el-form-item label="手机号:" prop="telephone" style="width: 500px; text-align: right;">
-        <el-input v-model="form.telephone" placeholder="请填写你的常用号码" maxlength="11" />
+      <el-form-item label="手机号:" prop="contractMobile" style="width: 500px; text-align: right;">
+        <el-input v-model="form.contractMobile" placeholder="请填写你的常用号码" maxlength="11" />
       </el-form-item>
       </el-form-item>
-      <City :add-list="addList" @addlist="getCity" />
+      <City :address-data="addList" @addlist="handleCity" />
       <el-form-item label="" prop="address" style="width: 500px; text-align: right;">
       <el-form-item label="" prop="address" style="width: 500px; text-align: right;">
         <el-input v-model="form.address" placeholder="请填写会所详细的地址" />
         <el-input v-model="form.address" placeholder="请填写会所详细的地址" />
       </el-form-item>
       </el-form-item>
       <el-form-item label="会所类型:" style="width: 270px; text-align: right;">
       <el-form-item label="会所类型:" style="width: 270px; text-align: right;">
-        <el-radio-group v-model="form.radio">
-          <el-radio :label="0">医美</el-radio>
-          <el-radio :label="1">生美</el-radio>
+        <el-radio-group v-model="form.firstClubType">
+          <el-radio :label="1">医美</el-radio>
+          <el-radio :label="2">生美</el-radio>
         </el-radio-group>
         </el-radio-group>
       </el-form-item>
       </el-form-item>
-      <el-form-item label="营业执照编号:" prop="businessNum" style="width: 500px; text-align: right;">
-        <el-input v-model="form.businessNum" placeholder="请填写统一社会信用代码" maxlength="18" />
+      <el-form-item label="营业执照编号:" prop="socialCreditCode" style="width: 500px; text-align: right;">
+        <el-input v-model="form.socialCreditCode" placeholder="请填写统一社会信用代码" maxlength="18" />
       </el-form-item>
       </el-form-item>
       <el-form-item label="营业执照:" prop="imageUrl" style="width:400px;text-align: right;">
       <el-form-item label="营业执照:" prop="imageUrl" style="width:400px;text-align: right;">
         <div class="form-el-upload">
         <div class="form-el-upload">
@@ -33,7 +33,7 @@
             :on-success="handleAvatarSuccess"
             :on-success="handleAvatarSuccess"
             :before-upload="beforeAvatarUpload"
             :before-upload="beforeAvatarUpload"
             :multiple="false"
             :multiple="false"
-            :limit= '1'
+            :limit="1"
           >
           >
             <img v-if="form.imageUrl" :src="form.imageUrl" class="avatar">
             <img v-if="form.imageUrl" :src="form.imageUrl" class="avatar">
             <i v-else class="el-icon-plus avatar-uploader-icon" />
             <i v-else class="el-icon-plus avatar-uploader-icon" />
@@ -58,9 +58,9 @@
         </div>
         </div>
       </el-form-item>
       </el-form-item>
       <el-form-item label="是否上线:" style="width: 240px;text-align: right;">
       <el-form-item label="是否上线:" style="width: 240px;text-align: right;">
-        <el-radio-group v-model="form.onRadio">
-          <el-radio :label="1">是</el-radio>
-          <el-radio :label="2">否</el-radio>
+        <el-radio-group v-model="form.status">
+          <el-radio :label="90">是</el-radio>
+          <el-radio :label="91">否</el-radio>
         </el-radio-group>
         </el-radio-group>
       </el-form-item>
       </el-form-item>
     </el-form>
     </el-form>
@@ -68,7 +68,7 @@
       <router-link :to="'/club/list/'">
       <router-link :to="'/club/list/'">
         <el-button>返回</el-button>
         <el-button>返回</el-button>
       </router-link>
       </router-link>
-      <el-button type="primary" @click="onSubmite('dataForm')">保存</el-button>
+      <el-button type="primary" @click="onSubmite()">保存</el-button>
     </div>
     </div>
   </div>
   </div>
 </template>
 </template>
@@ -76,7 +76,7 @@
 <script>
 <script>
 // 引入省市区组件,公共组件所在的路径
 // 引入省市区组件,公共组件所在的路径
 import City from '@/components/Ctiy'
 import City from '@/components/Ctiy'
-import { addNewClub } from '@/api/club'
+import { saveAddClubUser } from '@/api/club'
 export default {
 export default {
   components: { City },
   components: { City },
   data() {
   data() {
@@ -84,46 +84,40 @@ export default {
       dialogImageUrl: '',
       dialogImageUrl: '',
       dialogVisible: false,
       dialogVisible: false,
       form: {
       form: {
-        classifyName: '',
-        telephone: '',
-        contacts: '',
-        businessNum: '',
+        name: '',
+        linkMan: '',
+        contractMobile: '',
+        socialCreditCode: '',
         address: '',
         address: '',
-        radio: 1,
-        onRadio: 2,
-        status: '是',
-        imageUrl: '',
-        doorwayImageUrl: ''
+        status: '',
+        firstClubType: '',
+        headpic: '',
+        businessLicenseImage: ''
       },
       },
-      fileList: [{ name: 'food.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100' }],
       rules: {
       rules: {
-        classifyName: [{ required: true, message: '营业执照编号不能为空', trigger: 'blur' }],
-        telephone: [{ required: true, message: '常用手机号不能为空', trigger: 'blur' }],
-        contacts: [{ required: true, message: '联系人不能为空', trigger: 'blur' }],
-        businessNum: [{ required: true, message: '统一社会信用代码不能为空', trigger: 'blur' }],
+        name: [{ required: true, message: '会所名称不能为空', trigger: 'blur' }],
+        contractMobile: [{ required: true, message: '常用手机号不能为空', trigger: 'blur' }],
+        linkMan: [{ required: true, message: '联系人不能为空', trigger: 'blur' }],
+        socialCreditCode: [{ required: true, message: '统一社会信用代码不能为空', trigger: 'blur' }],
         address: [{ required: true, message: '会所详细地址不能为空', trigger: 'blur' }],
         address: [{ required: true, message: '会所详细地址不能为空', trigger: 'blur' }],
         status: [{ required: true, message: '请选择是否上线', trigger: 'blur' }]
         status: [{ required: true, message: '请选择是否上线', trigger: 'blur' }]
       },
       },
       addList: {
       addList: {
-        province: '',
-        city: '',
-        area: ''
+        provinceID: '',
+        cityID: '',
+        townID: ''
       }
       }
     }
     }
   },
   },
+  created() {
+  },
   methods: {
   methods: {
-    onSubmite(formData) {
-      this.$refs[formData].validate((valid) => {
-        if (!valid) {
-          console.log(this.form)
-        }
-      })
-    },
     // 从子组件获取省市区
     // 从子组件获取省市区
-    getCity(data) {
-      this.addList.province = data.province
-      this.addList.city = data.city
-      this.addList.area = data.area
+    handleCity(data) {
+      console.log(data)
+      this.addList.provinceID = data.provinceid
+      this.addList.cityID = data.cityid
+      this.addList.townID = data.townid
     },
     },
     handleAvatarSuccess(res, file) {
     handleAvatarSuccess(res, file) {
       this.getBase64(file.raw).then(res => {
       this.getBase64(file.raw).then(res => {
@@ -147,7 +141,7 @@ export default {
     handleDoorwaySuccess(res, file) {
     handleDoorwaySuccess(res, file) {
       this.getBase64(file.raw).then(res => {
       this.getBase64(file.raw).then(res => {
         console.log(res)
         console.log(res)
-      });
+      })
       const fileName = file.name
       const fileName = file.name
       const regex = /(.jpg|.jpeg|.gif|.png|.bmp)$/
       const regex = /(.jpg|.jpeg|.gif|.png|.bmp)$/
       if (regex.test(fileName.toLowerCase())) {
       if (regex.test(fileName.toLowerCase())) {
@@ -166,9 +160,24 @@ export default {
       }
       }
       return isLt5M
       return isLt5M
     },
     },
+    onSubmite() {
+      this.$refs['dataForm'].validate((valid) => {
+        if (valid) {
+          console.log(this.form)
+          const Formobj = Object.assign(this.form, { userOrganizeID: this.organizeID })
+          const params = Object.assign(this.addList, Formobj)
+          console.log(params)
+          saveAddClubUser(params).then(response => {
+            this.dialogFormVisible = false
+            this.$message({ message: '上线会所成功', type: 'success', center: true })
+            this.$router.push({ path: '/club/list' })
+          })
+        }
+      })
+    },
     getBase64(file) {
     getBase64(file) {
       return new Promise(function(resolve, reject) {
       return new Promise(function(resolve, reject) {
-        let reader = new FileReader()
+        const reader = new FileReader()
         let imgResult = ''
         let imgResult = ''
         reader.readAsDataURL(file)
         reader.readAsDataURL(file)
         reader.onload = function() {
         reader.onload = function() {

+ 52 - 95
src/views/club/list.vue

@@ -1,25 +1,25 @@
 <template>
 <template>
   <div class="app-container">
   <div class="app-container">
     <div class="app-header-search">
     <div class="app-header-search">
-      <el-form ref="searchForm" :inline="true" :model="searchForm" class="demo-form-inline">
-        <el-form-item label="会所名称:">
-          <el-input v-model="searchForm.name" placeholder="请输入会所名称" maxlength="50" style="width:200px" />
+      <el-form class="demo-form-inline">
+        <el-form-item label="会所名称:" style="width:280px;float: left;">
+          <el-input v-model="listQuery.name" placeholder="请输入会所名称" maxlength="50" style="width:200px;" @keyup.enter.native="handleFilter" />
         </el-form-item>
         </el-form-item>
-        <el-form-item label="联系人:">
-          <el-input v-model="searchForm.linkName" placeholder="请输入联系人姓名" maxlength="10" style="width:150px" />
+        <el-form-item label="联系人:" style="width:230px;float: left;">
+          <el-input v-model="listQuery.linkName" placeholder="请输入联系人姓名" maxlength="10" style="width:150px" @keyup.enter.native="handleFilter" />
         </el-form-item>
         </el-form-item>
-        <el-form-item label="手机号:">
-          <el-input v-model="searchForm.mobile" placeholder="请输入手机号" maxlength="11" style="width:130px" />
+        <el-form-item label="手机号:" style="width:200px;float: left;">
+          <el-input v-model="listQuery.mobile" placeholder="请输入手机号" maxlength="11" style="width:130px" @keyup.enter.native="handleFilter" />
         </el-form-item>
         </el-form-item>
-        <el-form-item label="上线状态:">
-          <el-select v-model="searchForm.clubStatus" placeholder="请选择" style="width:100px">
+        <el-form-item label="上线状态:" style="width:190px;float: left;">
+          <el-select v-model="listQuery.clubStatus" placeholder="请选择" style="width:100px" value="" @change="handleFilter">
             <el-option label="已上线" value="90" />
             <el-option label="已上线" value="90" />
             <el-option label="已下线" value="91" />
             <el-option label="已下线" value="91" />
           </el-select>
           </el-select>
         </el-form-item>
         </el-form-item>
-        <el-form-item label="创建时间:">
+        <el-form-item label="创建时间:" style="width:550px;float: left;">
           <el-date-picker
           <el-date-picker
-            v-model="startTime"
+            v-model="listQuery.startTime"
             type="date"
             type="date"
             placeholder="选择日期"
             placeholder="选择日期"
             format="yyyy 年 MM 月 dd 日"
             format="yyyy 年 MM 月 dd 日"
@@ -27,19 +27,19 @@
           />
           />
           <el-date-picker
           <el-date-picker
-            v-model="endTime"
+            v-model="listQuery.endTime"
             type="date"
             type="date"
             placeholder="选择日期"
             placeholder="选择日期"
             format="yyyy 年 MM 月 dd 日"
             format="yyyy 年 MM 月 dd 日"
             value-format="yyyy-MM-dd"
             value-format="yyyy-MM-dd"
           />
           />
         </el-form-item>
         </el-form-item>
-        <el-form-item>
-          <el-button type="success" @click="onSubmit">搜索</el-button>
+        <el-form-item style="width:100px;float: left;">
+          <el-button type="success" icon="el-icon-search" @click="handleFilter">搜索</el-button>
         </el-form-item>
         </el-form-item>
-        <el-form-item>
+        <el-form-item style="width:100px;float: left;">
           <router-link :to="'/club/form/'">
           <router-link :to="'/club/form/'">
-            <el-button type="primary" @click="onSubmit">上线会所</el-button>
+            <el-button type="primary">上线会所</el-button>
           </router-link>
           </router-link>
         </el-form-item>
         </el-form-item>
       </el-form>
       </el-form>
@@ -59,8 +59,8 @@
         </template>
         </template>
       </el-table-column>
       </el-table-column>
       <el-table-column label="账号" width="150" align="center" prop="account" />
       <el-table-column label="账号" width="150" align="center" prop="account" />
-      <el-table-column label="会所名称" width="150" align="center" prop="name" />
-      <el-table-column label="联系人" width="80" align="center" prop="linkMan" />
+      <el-table-column label="会所名称" width="200" align="center" prop="name" />
+      <el-table-column label="联系人" width="100" align="center" prop="linkMan" />
       <el-table-column label="手机号" width="110" align="center" prop="bindMobile" />
       <el-table-column label="手机号" width="110" align="center" prop="bindMobile" />
       <el-table-column class-name="status-col" label="上线状态" width="150" align="center" prop="status">
       <el-table-column class-name="status-col" label="上线状态" width="150" align="center" prop="status">
         <template slot-scope="{row}">
         <template slot-scope="{row}">
@@ -71,29 +71,26 @@
           <el-button v-else type="primary" size="mini" @click="handOffline(row)">下线</el-button>
           <el-button v-else type="primary" size="mini" @click="handOffline(row)">下线</el-button>
         </template>
         </template>
       </el-table-column>
       </el-table-column>
-      <el-table-column align="center" label="会所地址" width="350" prop="address" />
-      <el-table-column align="center" label="创建时间" width="180" prop="registerTime" />
+      <el-table-column align="center" label="会所地址" prop="address">
+        <template slot-scope="{row}">
+          <span>{{ `${row.province}${row.city}${row.town}${row.address}` }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column align="center" label="创建时间" prop="registerTime" />
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="{row}">
         <template slot-scope="{row}">
-          <router-link :to="'/club/form/'">
+          <router-link :to="{path:'/club/editForm',query:{ clubID:row.clubID, userID: row.userID}}">
             <el-button type="primary" size="small">编辑</el-button>
             <el-button type="primary" size="small">编辑</el-button>
           </router-link>
           </router-link>
           <router-link :to="{path:'/club/operateList',query:{clubID:row.clubID,userID:row.userID}}">
           <router-link :to="{path:'/club/operateList',query:{clubID:row.clubID,userID:row.userID}}">
-            <el-button type="primary" size="small">查看运营人员</el-button>
+            <el-button type="primary" size="small" style="margin:5px 0 0 0;">查看运营人员</el-button>
           </router-link>
           </router-link>
-          <el-button type="primary" size="small" @click="handleEdit(row)">添加运营人员</el-button>
+          <el-button type="primary" size="small" style="margin:5px 0 0 0;" @click="handleEdit(row)">添加运营人员</el-button>
         </template>
         </template>
       </el-table-column>
       </el-table-column>
     </el-table>
     </el-table>
 
 
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page-size="10"
-      :page.sync="listQuery.page"
-      :limit.sync="listQuery.limit"
-      @pagination="fetchData"
-    />
+    <pagination v-show="total>0" :total="total" :page.sync="listQuery.index" :limit.sync="listQuery.pageSize" @pagination="fetchData" />
     <el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible">
     <el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible">
       <el-form ref="dataForm" :rules="rules" :model="addPeople" label-position="left" label-width="70px" style="width: 400px; margin-left:24%;">
       <el-form ref="dataForm" :rules="rules" :model="addPeople" label-position="left" label-width="70px" style="width: 400px; margin-left:24%;">
         <el-form-item label="姓名" prop="linkName">
         <el-form-item label="姓名" prop="linkName">
@@ -105,7 +102,7 @@
       </el-form>
       </el-form>
       <div slot="footer" class="dialog-footer">
       <div slot="footer" class="dialog-footer">
         <el-button @click="dialogFormVisible = false">取消</el-button>
         <el-button @click="dialogFormVisible = false">取消</el-button>
-        <el-button type="primary" @click="handleCreateOperator()">保存</el-button>
+        <el-button type="primary" :loading="loadingbut" @click="handleCreateOperator()">{{ loadingbuttext }}</el-button>
         <el-button type="primary" @click="handlePreservOperator()">保存生成邀请码</el-button>
         <el-button type="primary" @click="handlePreservOperator()">保存生成邀请码</el-button>
       </div>
       </div>
     </el-dialog>
     </el-dialog>
@@ -121,44 +118,26 @@
 </template>
 </template>
 
 
 <script>
 <script>
-import {
-  getClubList,
-  createOperator,
-  preservOperator,
-  updateStatus,
-  queryClubList
-} from '@/api/club'
+import { getClubList, createOperator, preservOperator, updateStatus } from '@/api/club'
 import Pagination from '@/components/Pagination'
 import Pagination from '@/components/Pagination'
 
 
 export default {
 export default {
   components: { Pagination },
   components: { Pagination },
-  filters: {
-    statusFilter(status) {
-      const statusMap = {
-        1: 'success',
-        0: 'gray'
-      }
-      return statusMap[status]
-    }
-  },
   data() {
   data() {
     return {
     return {
       list: null,
       list: null,
       listLoading: true,
       listLoading: true,
       total: 0,
       total: 0,
       listQuery: {
       listQuery: {
-        page: 1,
-        limit: 10,
-        importance: undefined,
-        title: undefined,
-        type: undefined,
-        sort: '+id'
-      },
-      searchForm: {
+        index: 1,
+        pageSize: 20,
+        userOrganizeID: this.organizeID,
         name: '',
         name: '',
         linkName: '',
         linkName: '',
         mobile: '',
         mobile: '',
-        clubStatus: ''
+        clubStatus: '',
+        startTime: '',
+        endTime: ''
       },
       },
       startTime: '',
       startTime: '',
       endTime: '',
       endTime: '',
@@ -172,14 +151,16 @@ export default {
       dialogVisibleText: '',
       dialogVisibleText: '',
       dialogFormVisible: false,
       dialogFormVisible: false,
       dialogStatus: '',
       dialogStatus: '',
+      loadingbut: false,
+      loadingbuttext: '保存',
       textMap: {
       textMap: {
         update: '添加运营人员',
         update: '添加运营人员',
         create: 'Create',
         create: 'Create',
         titleText: '系统提示'
         titleText: '系统提示'
       },
       },
       rules: {
       rules: {
-        classifyName: [{ required: true, message: '姓名不能为空', trigger: 'blur' }],
-        telephone: [{ required: true, message: '手机号码不能为空', trigger: 'blur' }]
+        linkName: [{ required: true, message: '姓名不能为空', trigger: 'blur' }],
+        mobile: [{ required: true, message: '手机号码不能为空', trigger: 'blur' }]
       }
       }
     }
     }
   },
   },
@@ -189,20 +170,14 @@ export default {
   methods: {
   methods: {
     fetchData() {
     fetchData() {
       this.listLoading = true
       this.listLoading = true
-      const params = { userOrganizeID: this.organizeID, index: 1, pageSize: 10 }
-      getClubList(params).then(response => {
-        if (response.code === '1') {
-          const data = response.data
-          this.list = data.results
-          this.listLoading = false
-          this.total = data.totalRecord
-        } else {
-          this.$message.error(response.msg)
-        }
+      getClubList(this.listQuery).then(response => {
+        const data = response.data
+        this.list = data.results
+        this.listLoading = false
+        this.total = data.totalRecord
       }).catch(() => {
       }).catch(() => {
         // 封装静态数据
         // 封装静态数据
       })
       })
-      this.listLoading = false
     },
     },
     handleEdit(row) { // 添加运营
     handleEdit(row) { // 添加运营
       console.log(row)
       console.log(row)
@@ -218,13 +193,13 @@ export default {
         if (valid) {
         if (valid) {
           const Formobj = { userOrganizeID: this.organizeID, configFlag: 1 }
           const Formobj = { userOrganizeID: this.organizeID, configFlag: 1 }
           const params = Object.assign(Formobj, this.addPeople)
           const params = Object.assign(Formobj, this.addPeople)
+          this.loadingbut = true
+          this.loadingbuttext = '保存中...'
           createOperator(params).then(response => {
           createOperator(params).then(response => {
+            this.$message({ message: '保存成功', type: 'success', center: true })
             this.dialogFormVisible = false
             this.dialogFormVisible = false
-            this.$message({
-              message: '保存成功',
-              type: 'success',
-              center: true
-            })
+            this.loadingbut = false
+            this.loadingbuttext = '保存'
           })
           })
         }
         }
       })
       })
@@ -285,26 +260,8 @@ export default {
         })
         })
       }
       }
     },
     },
-    onSubmit() {
-      this.$refs['searchForm'].validate((valid) => {
-        if (valid) {
-          const Fromobj = { userOrganizeID: this.organizeID, startTime: this.startTime, endTime: this.endTime, index: 1, pageSize: 10 }
-          const params = Object.assign(Fromobj, this.searchForm)
-          console.log(params)
-          getClubList(params).then(response => {
-            if (response.code === '1') {
-              const data = response.data
-              this.list = data.results
-              this.listLoading = false
-              this.total = data.totalRecord
-            } else {
-              this.$message.error(response.msg)
-            }
-          }).catch(() => {
-            // 封装静态数据
-          })
-        }
-      })
+    handleFilter() {
+      this.fetchData()
     }
     }
   }
   }
 }
 }

+ 150 - 122
src/views/club/operateList.vue

@@ -1,6 +1,6 @@
 <template>
 <template>
   <div class="app-container">
   <div class="app-container">
-    <div class="app-title">当前会所: <span class="span"></span>商城测试演示会所</span> </div>
+    <div class="app-title">当前会所:<span class="span">商城测试演示会所</span> </div>
     <el-table
     <el-table
       v-loading="listLoading"
       v-loading="listLoading"
       :data="list"
       :data="list"
@@ -18,74 +18,84 @@
       <el-table-column label="账号" width="150" align="center" prop="account" />
       <el-table-column label="账号" width="150" align="center" prop="account" />
       <el-table-column label="姓名" width="150" align="center" prop="linkName" />
       <el-table-column label="姓名" width="150" align="center" prop="linkName" />
       <el-table-column label="手机号码" width="110" align="center" prop="mobile" />
       <el-table-column label="手机号码" width="110" align="center" prop="mobile" />
-      <el-table-column label="邀请码" width="130" align="center" prop="code">
+      <el-table-column label="邀请码" width="130" align="center" prop="invitationCode">
         <template slot-scope="{row}">
         <template slot-scope="{row}">
-          <span v-if="row.codeType" style="text-align: center;float:left">{{ row.code }}</span>
-          <span v-if="row.codeType" :style="{color: rexpStautsColor(row.status)}">{{ rexpStautsText(row.status) }}</span>
-          <el-tag v-else type="info">—— ——</el-tag>
+          <span v-if="row.invitationCode" style="text-align: center;float:left">{{ row.invitationCode }}</span>
+          <span v-if="row.invitationCode" :style="{color: rexpStautsColor(row.effectiveFlag)}">{{ rexpStautsText(row.effectiveFlag) }}</span>
+          <span v-else type="info">----</span>
         </template>
         </template>
       </el-table-column>
       </el-table-column>
       <el-table-column class-name="status-col" label="状态" width="100" align="center" prop="status">
       <el-table-column class-name="status-col" label="状态" width="100" align="center" prop="status">
         <template slot-scope="{row}">
         <template slot-scope="{row}">
-          <i v-if="row.status === 2" class="el-icon-success" style="color:#67C23A;font-size: 20px;" />
+          <i v-if="row.effectiveFlag === 2" class="el-icon-success" style="color:#67C23A;font-size: 20px;" />
           <!-- <i v-else class="el-icon-error" style="color: #E6A23C;font-size: 20px;" /> -->
           <!-- <i v-else class="el-icon-error" style="color: #E6A23C;font-size: 20px;" /> -->
         </template>
         </template>
       </el-table-column>
       </el-table-column>
-      <el-table-column align="center" label="微信昵称" width="110" prop="nickName" />
-      <el-table-column align="center" label="OpenID" width="250" prop="openid" />
-      <el-table-column align="center" label="添加时间" width="160" prop="addTime" />
-      <el-table-column align="center" label="绑定时间" width="160" prop="bindTime" />
+      <el-table-column align="center" label="微信昵称" width="110" prop="nickName">
+        <template slot-scope="{row}">
+          <span v-if="row.nickName">{{ row.nickName }}</span>
+          <span v-else>----</span>
+        </template>
+      </el-table-column>
+      <el-table-column align="center" label="OpenID" width="250" prop="openid">
+        <template slot-scope="{row}">
+          <span v-if="row.openid">{{ row.openid }}</span>
+          <span v-else>----</span>
+        </template>
+      </el-table-column>
+      <el-table-column align="center" label="添加时间" width="160" prop="addTime">
+        <template slot-scope="{row}">
+          <span v-if="row.addTime">{{ row.addTime }}</span>
+          <span v-else>----</span>
+        </template>
+      </el-table-column>
+      <el-table-column align="center" label="绑定时间" width="160" prop="bindTime">
+        <template slot-scope="{row}">
+          <span v-if="row.bindTime">{{ row.bindTime }}</span>
+          <span v-else>----</span>
+        </template>
+      </el-table-column>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="{row}">
         <template slot-scope="{row}">
-          <el-button v-if="row.codeType" type="primary" size="mini" @click="handleEdit(row)">编辑</el-button>
-          <el-button v-if="row.codeType" type="primary" size="mini" @click="handleUntying(row)">解绑</el-button>
-          <el-button v-else type="primary" size="small" @click="handleGenerateCode(row)">生成邀请码</el-button>
+          <el-button type="primary" size="mini" @click="handleEdit(row)">编辑</el-button>
+          <el-button v-if="row.status === '2'" type="primary" size="mini" @click="handleUntying(row)">解绑</el-button>
+          <el-button v-else type="primary" size="small" @click="handleGenerateCode(row)">{{ row.invitationCode ? '更新邀请码' : '生成邀请码' }}</el-button>
         </template>
         </template>
       </el-table-column>
       </el-table-column>
     </el-table>
     </el-table>
 
 
-    <pagination 
-      v-show="total>0" 
-      :total="total" 
-      :page-size = "10"
-      :page.sync="listQuery.page" 
-      :limit.sync="listQuery.limit" 
-      @pagination="fetchData"
-     />
+    <pagination v-show="total>0" :total="total" :page.sync="listQuery.index" :limit.sync="listQuery.pageSize" @pagination="initOperatorListData" />
 
 
     <el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible" width="40%">
     <el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible" width="40%">
-      <el-form ref="dataForm" :rules="rules" :model="temp" label-position="left" label-width="70px" style="width: 400px; margin-left:24%;">
-        <el-form-item label="姓名" prop="classifyName">
-          <el-input v-model="temp.classifyName" />
+      <el-form ref="dataForm" :rules="rules" :model="editTemp" label-position="left" label-width="70px" style="width: 400px; margin-left:24%;">
+        <el-form-item label="姓名" prop="linkName">
+          <el-input v-model="editTemp.linkName" />
         </el-form-item>
         </el-form-item>
-        <el-form-item label="手机号" prop="telephone">
-          <el-input v-model="temp.telephone" />
+        <el-form-item label="手机号" prop="mobile">
+          <el-input v-model="editTemp.mobile" />
         </el-form-item>
         </el-form-item>
       </el-form>
       </el-form>
       <div slot="footer" class="dialog-footer">
       <div slot="footer" class="dialog-footer">
         <el-button @click="dialogFormVisible = false">取消</el-button>
         <el-button @click="dialogFormVisible = false">取消</el-button>
-        <el-button type="primary" @click="updateData()">确定</el-button>
+        <el-button type="primary" :loading="loadingbut" @click="updateData()">{{ loadingbuttext }}</el-button>
       </div>
       </div>
     </el-dialog>
     </el-dialog>
     <el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogVisible" width="20%">
     <el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogVisible" width="20%">
       <span>{{ dialogVisibleText }}</span>
       <span>{{ dialogVisibleText }}</span>
       <span slot="footer" class="dialog-footer">
       <span slot="footer" class="dialog-footer">
         <el-button @click="dialogVisible = false">取 消</el-button>
         <el-button @click="dialogVisible = false">取 消</el-button>
-        <el-button type="primary" @click="handleConfirm()">确 定</el-button>
+        <el-button type="primary" :loading="loadingbut" @click="handleConfirm()">{{ loadingbuttext }}</el-button>
       </span>
       </span>
     </el-dialog>
     </el-dialog>
   </div>
   </div>
 </template>
 </template>
 
 
 <script>
 <script>
-import { 
-  getOperatorList,     //初始化
-  createOperatorCode,  //生成邀请码
-  updateOperatorCode,  //更新邀请码
-  unbindOperator,      //解绑运营
-  preservOperator,     //保存
-  createOperator,      //保存并生成
-  queryOperatorList    //条件查询
+import {
+  getOperatorList,
+  updateOperatorCode,
+  unbindOperator,
+  preservOperator
 } from '@/api/club'
 } from '@/api/club'
 import Pagination from '@/components/Pagination'
 import Pagination from '@/components/Pagination'
 
 
@@ -102,8 +112,6 @@ export default {
   },
   },
   data() {
   data() {
     return {
     return {
-      clubID:this.$route.query.clubID,
-      userID:this.$route.query.userID,
       list: null,
       list: null,
       listLoading: true,
       listLoading: true,
       total: 100,
       total: 100,
@@ -111,27 +119,28 @@ export default {
       dialogVisibleText: '',
       dialogVisibleText: '',
       handleConfirmType: '',
       handleConfirmType: '',
       listQuery: {
       listQuery: {
-        page: 1,
-        limit: 10,
-        importance: undefined,
-        title: undefined,
-        type: undefined,
-        sort: '+id'
+        index: 1,
+        pageSize: 20,
+        clubID: this.$route.query.clubID,
+        userID: this.$route.query.userID,
+        userOrganizeID: this.organizeID
       },
       },
-      temp: {
-        id: 1,
-        organizeID: 1,
-        classifyName: '',
-        telephone: ''
+      editTemp: {
+        userOrganizeID: this.organizeID,
+        linkName: '',
+        mobile: ''
       },
       },
+      codeRemp: {},
       dialogFormVisible: false,
       dialogFormVisible: false,
       dialogStatus: '',
       dialogStatus: '',
+      loadingbut: false,
+      loadingbuttext: '确定',
       textMap: {
       textMap: {
-        edit: '编辑',
+        edit: '编辑运营人员',
         update: '提示',
         update: '提示',
         untying: '解绑',
         untying: '解绑',
         generate: '生成邀请码',
         generate: '生成邀请码',
-        create: 'Create'
+        updateCode: '更新邀请码'
       },
       },
       rules: {
       rules: {
         classifyName: [{ required: true, message: '姓名不能为空', trigger: 'blur' }],
         classifyName: [{ required: true, message: '姓名不能为空', trigger: 'blur' }],
@@ -140,85 +149,121 @@ export default {
     }
     }
   },
   },
   created() {
   created() {
-    
-    this.fetchData()
+    this.initOperatorListData()
   },
   },
   methods: {
   methods: {
-    fetchData() {
+    initOperatorListData() {
       this.listLoading = true
       this.listLoading = true
-      let params = { userOrganizeID: this.organizeID,clubID:this.clubID,userID:this.userID,index:1,pageSize:10}
-      getOperatorList(params).then(response => {
-        if(response.code === '1'){
-          let data = response.data
-          this.list = data.results
-          this.listLoading = false
-          this.total = data.totalRecord
-        }else{
-          this.$message.error(response.msg);
-        }
+      getOperatorList(this.listQuery).then(response => {
+        const operatorListPage = response.data
+        this.list = operatorListPage.results
+        this.total = operatorListPage.totalRecord
         this.listLoading = false
         this.listLoading = false
-      }).catch(() => {
-        
-      })
-      this.listLoading = false
-    },
-    handleEdit(row) {
-      this.temp = Object.assign({}, row)
-      console.log(this.temp)
-      this.dialogStatus = 'edit'
-      this.dialogFormVisible = true
-      this.$nextTick(() => {
-        this.$refs['dataForm'].clearValidate()
       })
       })
     },
     },
-    handleUntying(row) {
-      this.dialogVisible = true
-      this.dialogStatus = 'untying'
-      this.dialogVisibleText = '确定解绑该运营人员吗?'
-      this.handleConfirmType = 'untying'
+    handleCurrentChange(val) {
+      console.log(val)
     },
     },
     handleGenerateCode(row) {
     handleGenerateCode(row) {
       this.dialogVisible = true
       this.dialogVisible = true
-      this.dialogStatus = 'generate'
-      this.dialogVisibleText = '确定生成邀请码,并短信提醒该人员?'
+      if (row.invitationCode) {
+        this.dialogStatus = 'updateCode'
+        this.dialogVisibleText = '确定更新邀请码,并短信提醒该人员?'
+      } else {
+        this.dialogStatus = 'generate'
+        this.dialogVisibleText = '确定生成邀请码,并短信提醒该人员?'
+      }
       this.handleConfirmType = 'generate'
       this.handleConfirmType = 'generate'
+      this.codeRemp = {
+        id: row.id,
+        clubID: row.clubID,
+        userID: row.userID,
+        userOrganizeID: this.organizeID
+      }
     },
     },
     handleConfirm() {
     handleConfirm() {
       switch (this.handleConfirmType) {
       switch (this.handleConfirmType) {
         case 'untying':
         case 'untying':
-          this.untyingRequst()
+          this.unbindOperators()
           break
           break
         case 'generate':
         case 'generate':
           this.generateRequst()
           this.generateRequst()
           break
           break
       }
       }
     },
     },
-    untyingRequst() {
-      this.dialogVisible = false
-      this.$message({
-        message: '解绑成功',
-        type: 'success',
-        center: true
-      });
-    },
     generateRequst() {
     generateRequst() {
-      this.dialogVisible = false
-      this.$message({
-        message: '邀请码生成成功',
-        type: 'success',
-        center: true
-      });
+      const params = this.codeRemp
+      this.loadingbut = true
+      this.loadingbuttext = '请稍候...'
+      updateOperatorCode(params).then(response => {
+        this.$message({ message: '邀请码生成成功', type: 'success', center: true })
+        this.initOperatorListData()
+        this.loadingbut = false
+        this.loadingbuttext = '确定'
+        this.dialogVisible = false
+      })
+    },
+    handleUntying(row) {
+      this.dialogVisible = true
+      this.dialogStatus = 'untying'
+      this.dialogVisibleText = '确定解绑该运营人员吗?'
+      this.handleConfirmType = 'untying'
+      this.editTemp = { userOrganizeID: this.organizeID, id: row.id, clubID: row.clubID, userID: row.userID }
+    },
+    unbindOperators() {
+      const params = this.editTemp
+      this.loadingbut = true
+      this.loadingbuttext = '解绑中...'
+      unbindOperator(params).then(response => {
+        this.$message({ message: '解绑成功', type: 'success', center: true })
+        this.initOperatorListData()
+        this.dialogVisible = false
+        this.loadingbut = false
+        this.loadingbuttext = '确定'
+      })
+    },
+    handleEdit(row) {
+      const rowTemp = { userOrganizeID: this.organizeID, configFlag: 1, id: row.id, clubID: row.clubID, userID: row.userID, linkName: row.linkName, mobile: row.mobile }
+      this.editTemp = Object.assign({}, rowTemp)
+      console.log(this.editTemp)
+      this.dialogStatus = 'edit'
+      this.dialogFormVisible = true
+      this.$nextTick(() => {
+        this.$refs['dataForm'].clearValidate()
+      })
+    },
+    updateData() {
+      this.$refs['dataForm'].validate((valid) => {
+        if (valid) {
+          const params = Object.assign({}, this.editTemp)
+          this.loadingbut = true
+          this.loadingbuttext = '保存中...'
+          preservOperator(params).then(response => {
+            if (response.code === '1') {
+              this.$message({ message: '保存成功', type: 'success', center: true })
+              this.initOperatorListData()
+              this.dialogFormVisible = false
+              this.loadingbut = false
+              this.loadingbuttext = '确定'
+            } else {
+              this.$message.error(response.msg)
+              this.loadingbut = false
+              this.loadingbuttext = '确定'
+            }
+          })
+        }
+      })
     },
     },
     rexpStautsText(status) {
     rexpStautsText(status) {
       let text = ''
       let text = ''
       switch (status) {
       switch (status) {
-        case 1:
+        case '1':
           text = '有效'
           text = '有效'
           break
           break
-        case 2:
+        case '2':
           text = '已使用'
           text = '已使用'
           break
           break
-        case 3:
+        case '3':
           text = '已失效'
           text = '已失效'
           break
           break
       }
       }
@@ -227,33 +272,17 @@ export default {
     rexpStautsColor(status) {
     rexpStautsColor(status) {
       let textColor = ''
       let textColor = ''
       switch (status) {
       switch (status) {
-        case 1:
+        case '1':
           textColor = '#E6A441'
           textColor = '#E6A441'
           break
           break
-        case 2:
+        case '2':
           textColor = '#417DE6'
           textColor = '#417DE6'
           break
           break
-        case 3:
+        case '3':
           textColor = '#C5C5C5'
           textColor = '#C5C5C5'
           break
           break
       }
       }
       return textColor
       return textColor
-    },
-    updateData() {
-      this.$refs['dataForm'].validate((valid) => {
-        if (valid) {
-          const tempData = Object.assign({}, this.temp)
-          this.dialogFormVisible = false
-          this.$message({
-            message: '保存成功',
-            type: 'success',
-            center: true
-          });
-          updateCategory(tempData).then(() => {
-
-          })
-        }
-      })
     }
     }
   }
   }
 }
 }
@@ -264,8 +293,7 @@ export default {
     font-size: 18px;
     font-size: 18px;
     font-weight: bold;
     font-weight: bold;
     color: #999999;
     color: #999999;
-    margin-bottom: 10px;
-    
+    margin-bottom:10px;
   }
   }
   .app-title .span{
   .app-title .span{
       color: #417DE6;
       color: #417DE6;

+ 14 - 6
src/views/finance/list.vue

@@ -13,15 +13,23 @@
         </el-form-item>
         </el-form-item>
         <el-form-item label="创建时间:">
         <el-form-item label="创建时间:">
           <el-date-picker
           <el-date-picker
-            v-model="searchTimeVal"
-            type="daterange"
-            range-separator="至"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
+            v-model="listQuery.startTime"
+            type="date"
+            placeholder="选择日期"
+            format="yyyy 年 MM 月 dd 日"
+            value-format="yyyy-MM-dd"
+          />
+          至
+          <el-date-picker
+            v-model="listQuery.endTime"
+            type="date"
+            placeholder="选择日期"
+            format="yyyy 年 MM 月 dd 日"
+            value-format="yyyy-MM-dd"
           />
           />
         </el-form-item>
         </el-form-item>
         <el-form-item>
         <el-form-item>
-          <el-button type="success" @click="onSubmit">查询</el-button>
+          <el-button type="success" icon="el-icon-search" @click="onSubmit">查询</el-button>
         </el-form-item>
         </el-form-item>
       </el-form>
       </el-form>
     </div>
     </div>