zhengjinyi 1 سال پیش
والد
کامیت
c412ddf7c0

+ 10 - 0
src/api/finance.js

@@ -20,6 +20,16 @@ export function getReceiptTypeList(query) {
     params: query
   })
 }
+/**
+ * 付款账号列表
+ */
+export function getPayTypeList(query) {
+  return request({
+    url: '/order/organize/pay/type',
+    method: 'get',
+    params: query
+  })
+}
 /**
  * 收款详情
  */

BIN
src/assets/avatar.png


+ 1 - 1
src/layout/components/Navbar.vue

@@ -8,7 +8,7 @@
       <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
         <div class="avatar-wrapper">
           <span class="admin-name">{{ adminName }}</span>
-          <img src="@/assets/avatar.gif" class="user-avatar">
+          <img src="@/assets/avatar.png" class="user-avatar">
           <!-- <i class="el-icon-caret-bottom" /> -->
         </div>
         <el-dropdown-menu slot="dropdown">

+ 2 - 0
src/router/index.js

@@ -8,6 +8,7 @@ import Layout from '@/layout'
 
 /* Router Modules */
 import clubRouter from './modules/club'
+// import procureRouter from './modules/procure'
 import centralizedRouter from './modules/centralized'
 import floorRouter from './modules/floor'
 import goodsRouter from './modules/goods'
@@ -93,6 +94,7 @@ export const constantRoutes = [
  */
 export const asyncRoutes = [
   clubRouter,
+  // procureRouter,
   centralizedRouter,
   goodsRouter,
   campaign,

+ 28 - 0
src/router/modules/procure.js

@@ -0,0 +1,28 @@
+/* Layout */
+import Layout from '@/layout'
+
+const procureRouter = {
+  path: '/procure',
+  component: Layout,
+  redirect: '/procure/list',
+  name: 'Procure',
+  meta: { title: '采购管理', icon: 'el-icon-user' },
+  alwaysShow: true,
+  children: [
+    {
+      path: 'list',
+      name: 'List',
+      component: () => import('@/views/club/procure-list'),
+      meta: { title: '采购员列表', icon: 'el-icon-s-custom' }
+    },
+    {
+      path: 'edit',
+      name: 'ProcureEdit',
+      component: () => import('@/views/club/procure-edit'),
+      meta: { title: '添加采购员', icon: 'ma-club-form' },
+      hidden: true
+    }
+  ]
+}
+
+export default procureRouter

+ 156 - 0
src/views/club/components/club-multi-dialog.vue

@@ -0,0 +1,156 @@
+<template>
+  <el-dialog
+    title="选择机构"
+    :visible.sync="visible"
+    width="1100px"
+    :close-on-click-modal="false"
+    :show-close="false"
+  >
+    <div class="filter-container">
+      <div class="filter-control">
+        <span>机构名称:</span>
+        <el-input
+          v-model="listQuery.userName"
+          placeholder="请输入机构名称"
+          clearable
+          @input="e => (listQuery.productName= checkedInput(e,2))"
+        />
+      </div>
+      <div class="filter-control">
+        <span style="width: auto;">状态:</span>
+        <el-select v-model="listQuery.clubStatus" style="width:120px;" clearable @change="getList">
+          <el-option value="" label="全部" />
+          <el-option label="待审核" :value="1" />
+          <el-option label="已上线" :value="90" />
+          <el-option label="已上线" :value="91" />
+          <el-option label="审核未通过" :value="92" />
+        </el-select>
+      </div>
+      <div class="filter-control">
+        <span>手机号:</span>
+        <el-input
+          v-model="listQuery.bindMobile"
+          placeholder="请输入手机号"
+          clearable
+          style="width:160px;"
+        />
+      </div>
+      <div class="filter-control">
+        <el-button type="primary" @click="getList">查询</el-button>
+      </div>
+    </div>
+    <el-table ref="table" v-loading="isLoading" :data="list" height="400px" border @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="50" />
+      <el-table-column prop="userName" label="机构名称" align="center" />
+      <el-table-column label="状态" align="center" prop="status">
+        <template slot-scope="{row}">
+          <template v-if="row.clubStatus*1===1">
+            <el-tag type="warning" size="small">待审核</el-tag>
+          </template>
+          <template v-else-if="row.clubStatus*1===92">
+            <el-tag type="danger" size="small">审核未通过</el-tag>
+          </template>
+          <template v-else>
+            <el-tag v-if="row.clubStatus*1===91" type="danger" size="small">已下线</el-tag>
+            <el-tag v-else type="success" size="small">已上线</el-tag>
+          </template>
+        </template>
+      </el-table-column>
+      <el-table-column label="联系人" align="center" prop="linkMan" />
+      <el-table-column label="手机号" align="center" prop="bindMobile" />
+    </el-table>
+    <!-- 页码 -->
+    <pagination
+      :total="total"
+      :page-sizes="[10]"
+      :page-size="10"
+      :page.sync="listQuery.index"
+      :limit.sync="listQuery.pageSize"
+      @pagination="getList"
+    />
+    <div slot="footer">
+      <el-button @click="handleCanle">取 消</el-button>
+      <el-button type="primary" :disabled="disabled" @click="handleAddProConfirm(clubRadio)">确 定</el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+import { getClubList } from '@/api/club'
+
+export default {
+  name: 'ProDialog',
+  filters: {
+    NumFormat(value) {
+      // 处理金额
+      return Number(value).toFixed(2)
+    }
+  },
+  data() {
+    return {
+      visible: true,
+      listQuery: {
+        index: 1,
+        pageSize: 10,
+        userOrganizeId: this.$store.getters.organizeId,
+        userName: '',
+        linkMan: '',
+        bindMobile: '',
+        startTime: '',
+        endTime: ''
+      },
+      list: [],
+      total: 0,
+      clubRadio: null,
+      isLoading: true
+    }
+  },
+  computed: {
+    disabled() {
+      return this.clubRadio === null
+    }
+  },
+  created() {
+    this.getList()
+  },
+  methods: {
+    // 商品列表
+    async getList() {
+      this.isLoading = true
+      const res = await getClubList(this.listQuery)
+      const data = res.data.results
+      this.list = data.map(item => { item.sort = 0; return item })
+      this.total = res.data.totalRecord
+      this.isLoading = false
+    },
+    // 多选商品
+    handleSelectionChange(row) {
+      this.clubRadio = row
+      console.log('row', row)
+    },
+    handleAddProConfirm() {
+      // 确认选择商品
+      this.$emit('confirm', this.clubRadio)
+    },
+    handleCanle() {
+      // 取消弹窗
+      this.$emit('cancel')
+    },
+    checkedInput(event, type) {
+      let pattern = ''
+      switch (type) {
+        case 1:
+          pattern = /[^\d]/g
+          break
+        case 2:
+          pattern = /[^u4E00-u9FA5|d|a-zA-Z|rns,.?!,。?!…—&$=()-+/*{}[]]|s/g
+          break
+      }
+      return event.replace(pattern, '')
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+
+</style>

+ 17 - 10
src/views/club/list.vue

@@ -3,7 +3,7 @@
     <div class="filter-container">
       <div class="filter-control">
         <span style="width: auto;">机构名称:</span>
-        <el-input v-model="listQuery.userName" style="width:130px;" placeholder="请输入机构名称" clearable @keyup.enter.native="getList" @clear="getList" />
+        <el-input v-model="listQuery.userName" placeholder="请输入机构名称" clearable @keyup.enter.native="getList" @clear="getList" />
       </div>
       <div class="filter-control">
         <span style="width: auto;">联系人:</span>
@@ -11,7 +11,7 @@
       </div>
       <div class="filter-control">
         <span style="width: auto;">手机号:</span>
-        <el-input v-model="listQuery.bindMobile" style="width:130px;" placeholder="请输入手机号" clearable @keyup.enter.native="getList" @clear="getList" />
+        <el-input v-model="listQuery.bindMobile" placeholder="请输入手机号" clearable @keyup.enter.native="getList" @clear="getList" />
       </div>
       <div class="filter-control">
         <span style="width: auto;">状态:</span>
@@ -50,8 +50,8 @@
       :header-cell-style="{background:'#eef1f6',color:'#606266'}"
     >
       <el-table-column label="机构名称" align="center" prop="userName" />
-      <el-table-column label="联系人" align="center" prop="linkMan" width="150" />
-      <el-table-column label="手机号" align="center" prop="bindMobile" width="150" />
+      <el-table-column label="联系人" align="center" prop="linkMan" />
+      <el-table-column label="手机号" align="center" prop="bindMobile" />
       <el-table-column align="center" label="机构地址" prop="address">
         <template slot-scope="{row}">
           <span>
@@ -62,7 +62,7 @@
           </span>
         </template>
       </el-table-column>
-      <el-table-column label="状态" align="center" prop="status" width="150">
+      <el-table-column label="状态" align="center" prop="status">
         <template slot-scope="{row}">
           <template v-if="row.clubStatus*1===1">
             <el-tag type="warning" size="small">待审核</el-tag>
@@ -78,14 +78,17 @@
           </template>
         </template>
       </el-table-column>
-      <el-table-column align="center" label="注册时间" prop="registerTime">
+      <el-table-column align="center" label="注册时间" prop="registerTime" width="100">
         <template slot-scope="{row}">
           <span>{{ row.registerTime }}</span>
         </template>
       </el-table-column>
+      <el-table-column label="审核人" align="center" prop="checkMan" />
+      <el-table-column label="审核时间" align="center" prop="auditTime" width="100" />
       <el-table-column label="操作" align="center">
         <template slot-scope="{row}">
-          <el-button type="primary" size="mini" @click="handleRecordDetail(row)">查看资料</el-button>
+          <el-button type="primary" size="mini" @click="handleRecordDetail(1,row)">查看资料</el-button>
+          <!-- <el-button type="primary" size="mini" @click="handleRecordDetail(2,row)">查看运营人员</el-button> -->
           <el-button v-if="row.clubStatus*1 === 1" type="warning" size="mini" @click="hanleVerify(row)">审核</el-button>
         </template>
       </el-table-column>
@@ -214,7 +217,7 @@ export default {
       console.log(row)
       this.dialogStatus = 'update'
       this.dialogFormVisible = true
-      this.addPeople = Object.assign({}, { clubID: row.clubID, userID: row.userID })
+      this.addPeople = Object.assign({}, { clubId: row.clubId, userId: row.userId })
       this.$nextTick(() => {
         this.$refs['dataForm'].clearValidate()
       })
@@ -272,8 +275,12 @@ export default {
         this.$message.error(error.msg)
       }
     },
-    handleRecordDetail(row) {
-      this.$router.push({ path: '/club/details', query: { clubId: row.clubId }})
+    handleRecordDetail(type, row) {
+      const map = {
+        1: '/club/details',
+        2: '/club/operateList'
+      }
+      this.$router.push({ path: map[type], query: { clubId: row.clubId, userId: row.userId, name: row.userName }})
     }
   }
 }

+ 19 - 88
src/views/club/operateList.vue

@@ -4,45 +4,18 @@
       <div class="app-title">当前机构:{{ clubTitle }} </div>
       <el-button type="primary" icon="el-icon-back" style="float: right;" @click="backToList">返回</el-button>
     </div>
-    <div class="app-header-search">
-      <el-form class="demo-form-inline">
-        <el-form-item label="姓名:" style="width:210px;float: left;">
-          <el-input v-model="listQuery.linkName" placeholder="请输入姓名" maxlength="50" style="width:150px;" @keyup.enter.native="handleFilter" />
-        </el-form-item>
-        <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 label="状态:" style="width:160px;float: left;">
-          <el-select v-model="listQuery.status" placeholder="请选择" style="width:100px" value="" @change="handleFilter">
-            <el-option label="全部" value="" />
-            <el-option label="已绑定" value="2" />
-            <el-option label="未绑定" value="1" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="添加时间:" style="width:410px;float: left;">
-          <el-date-picker
-            v-model="listQuery.beginAddTime"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="选择日期"
-            style="width: 150px;"
-          />
-          至
-          <el-date-picker
-            v-model="listQuery.endAddTime"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="选择日期"
-            style="width: 150px;"
-          />
-        </el-form-item>
-        <el-form-item style="width:100px;float: left;">
-          <el-button type="primary" icon="el-icon-search" @click="handleFilter">搜索</el-button>
-        </el-form-item>
-        <el-form-item style="width:100px;float: left;">
-          <el-button type="primary" @click="bindAddPeople()">添加运营人员</el-button>
-        </el-form-item>
-      </el-form>
+    <div class="filter-container">
+      <div class="filter-control">
+        <span style="width: auto;">姓名:</span>
+        <el-input v-model="listQuery.linkName" style="width:130px;" placeholder="请输入姓名" clearable @keyup.enter.native="getList" @clear="getList" />
+      </div>
+      <div class="filter-control">
+        <span style="width: auto;">手机号:</span>
+        <el-input v-model="listQuery.mobile" style="width:130px;" placeholder="请输入手机号" clearable @keyup.enter.native="getList" @clear="getList" />
+      </div>
+      <div class="filter-control">
+        <el-button type="primary" icon="el-icon-search" @click="getList">查询</el-button>
+      </div>
     </div>
     <el-table
       v-loading="listLoading"
@@ -53,64 +26,22 @@
       highlight-current-row
       :header-cell-style="{background:'#eef1f6',color:'#606266'}"
     >
-      <el-table-column align="center" label="序号" width="50">
-        <template slot-scope="scope">
-          {{ ((pageNum-1)*listQuery.pageSize)+scope.$index+1 }}
-        </template>
-      </el-table-column>
-      <el-table-column label="账号" align="center" prop="account" />
-      <el-table-column label="姓名" min-width="80" align="center" prop="linkName" />
-      <el-table-column label="手机号码" min-width="80" align="center" prop="mobile" />
-      <el-table-column label="邀请码" min-width="80" align="center" prop="invitationCode">
-        <template slot-scope="{row}">
-          <div style="width:130px;margin: 0 auto;">
-            <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>
-          </div>
-        </template>
-      </el-table-column>
-      <el-table-column class-name="status-col" label="状态" width="50" align="center" prop="status">
+      <el-table-column label="姓名" align="center" prop="linkName" />
+      <el-table-column label="手机号码" align="center" prop="mobile" />
+      <el-table-column class-name="status-col" label="微信绑定状态" align="center" prop="status">
         <template slot-scope="{row}">
           <i v-if="row.status === '2'" class="el-icon-success" style="color:#67C23A;font-size: 18px;" />
           <!-- <i v-else class="el-icon-error" style="color: #E6A23C;font-size: 20px;" /> -->
         </template>
       </el-table-column>
-      <el-table-column label="微信昵称" align="center" 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" 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="添加时间" 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="绑定时间" 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">
-        <template slot-scope="{row}">
-          <el-button type="primary" size="mini" style="width: 90px;margin:5px 0 0 0;" @click="handleEdit(row)">编辑</el-button>
-          <el-button v-if="row.status === '2'" type="primary" size="mini" style="width: 90px;margin:5px 0 0 0;" @click="handleUntying(row)">解绑</el-button>
-          <el-button v-else type="primary" size="mini" style="width: 90px;margin:5px 0 0 0;" @click="handleGenerateCode(row)">{{ row.invitationCode ? '更新邀请码' : '生成邀请码' }}</el-button>
-        </template>
-      </el-table-column>
     </el-table>
-
     <pagination v-show="total>20" :total="total" :page.sync="listQuery.index" :limit.sync="listQuery.pageSize" @pagination="initOperatorListData" />
-
     <el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible" width="440px">
       <el-form ref="dataForm" :rules="rules" :model="editTemp" label-position="left" label-width="70px" style="width: 400px;">
         <el-form-item label="姓名" prop="linkName">
@@ -163,15 +94,15 @@ export default {
       list: null,
       clubTitle: this.$route.query.name,
       listLoading: true,
-      total: 100,
+      total: 0,
       dialogVisible: false,
       dialogVisibleText: '',
       handleConfirmType: '',
       listQuery: {
         index: 1,
         pageSize: 20,
-        clubID: this.$route.query.clubID,
-        userID: this.$route.query.userID,
+        clubID: this.$route.query.clubId,
+        userID: this.$route.query.userId,
         userorganizeId: this.$store.getters.organizeId,
         linkName: '',
         mobile: '',
@@ -276,7 +207,7 @@ export default {
       this.dialogStatus = 'untying'
       this.dialogVisibleText = '确定解绑该运营人员吗?'
       this.handleConfirmType = 'untying'
-      this.editTemp = { userorganizeId: this.$store.getters.organizeId, id: row.id, clubID: row.clubID, userID: row.userID }
+      this.editTemp = { userorganizeId: this.$store.getters.organizeId, id: row.id, userId: row.clubId, userID: row.userID }
     },
     unbindOperators() {
       const params = this.editTemp

+ 223 - 0
src/views/club/procure-edit.vue

@@ -0,0 +1,223 @@
+<template>
+  <div class="app-container" style="width: 800px;margin: 0 auto;">
+    <el-form ref="bannerForm" :model="form" label-width="100px">
+      <el-form-item label="姓名:" prop="name" :rules="rules.name">
+        <el-input v-model="form.name" placeholder="请填写姓名" maxlength="6" style="width: 250px;" />
+      </el-form-item>
+      <el-form-item label="手机号:" prop="mobile" :rules="rules.mobile">
+        <el-input v-model="form.mobile" placeholder="请填写手机号" style="width: 200px" />
+      </el-form-item>
+      <el-form-item label="状态:" prop="status" :rules="rules.status">
+        <el-select v-model="form.status" placeholder="请选择">
+          <el-option label="上线" :value="1" />
+          <el-option label="下线" :value="0" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="关联机构:" prop="clubs" :rules="rules.clubs">
+        <template v-if="form.clubs && form.clubs.length === 0">
+          <el-button type="primary" autofocussize="mini" size="mini" icon="el-icon-plus" @click="handleDialogVisible">选择机构</el-button>
+          <el-checkbox-group v-show="false" v-model="form.clubs" />
+        </template>
+        <template v-else>
+          <el-table :data="form.clubs" border width="1000">
+            <el-table-column prop="userName" label="机构名称" align="center" />
+            <el-table-column label="状态" align="center" prop="status">
+              <template slot-scope="{row}">
+                <template v-if="row.clubStatus*1===1">
+                  <el-tag type="warning" size="small">待审核</el-tag>
+                </template>
+                <template v-else-if="row.clubStatus*1===92">
+                  <el-tag type="danger" size="small">审核未通过</el-tag>
+                </template>
+                <template v-else>
+                  <el-tag v-if="row.clubStatus*1===91" type="danger" size="small">已下线</el-tag>
+                  <el-tag v-else type="success" size="small">已上线</el-tag>
+                </template>
+              </template>
+            </el-table-column>
+            <el-table-column label="联系人" align="center" prop="linkMan" />
+            <el-table-column label="手机号" align="center" prop="bindMobile" />
+            <el-table-column label="操作" align="center">
+              <el-button type="text" @click="deleteShop">删除</el-button>
+            </el-table-column>
+          </el-table>
+        </template>
+      </el-form-item>
+    </el-form>
+    <div class="el-dialog__footer" style="text-align: center;">
+      <el-button type="primary" @click="onSubmit('bannerForm')">保存</el-button>
+      <el-button plain @click="backToList">返回</el-button>
+    </div>
+    <!-- 商品弹框 -->
+    <club-dialog v-if="dialogVisible" ref="goodDialog" @cancel="handleGoodCancel" @confirm="handleGoodConfirm" />
+  </div>
+</template>
+
+<script>
+import { savePageBanner, formPageBanner } from '@/api/campaign'
+import clubDialog from './components/club-multi-dialog'
+export default {
+  name: 'ProcureEdit',
+  components: { clubDialog },
+  filters: {
+    statusFilter(status) {
+      const statusMap = {
+        1: 'success',
+        0: 'warning'
+      }
+      return statusMap[status]
+    }
+  },
+  data() {
+    const defaultForm = () => {
+      return {
+        organizeId: this.$store.getters.organizeId,
+        name: '', // 采购员名称
+        mobile: '', // 采购员手机号
+        status: 1, // 轮播上线状态
+        clubs: []
+      }
+    }
+    return {
+      form: defaultForm(),
+      activityList: [],
+      editType: 'add',
+      // 商品列表
+      dialogVisible: false,
+      loadImgLoading: false,
+      rules: {
+        bannerName: [{ required: true, message: '请填写轮播主题', trigger: 'blur' }],
+        bannerImage: [{ required: true, message: '请上传轮播图', trigger: 'blur' }],
+        clubs: [{ required: true, type: 'array', message: '请添加一个商品', trigger: ['change'] }],
+        status: [{ required: true, message: '请选择状态', trigger: 'blur' }]
+      },
+      listQuery: {
+        index: 1,
+        pageSize: 100,
+        enabledStatus: 1,
+        organizeId: this.$store.getters.organizeId
+      }
+    }
+  },
+  computed: {
+
+  },
+  created() {
+    this.editType = this.$route.query.type || 'edit'
+    if (this.editType === 'edit') {
+      console.log('edit')
+      // this.formPageBanner(this.$route.query.id)
+    }
+  },
+  methods: {
+    async formPageBanner(id) {
+      // 获取轮播图详情
+      try {
+        const res = await formPageBanner(id)
+        this.form = { ...this.form, ...res.data }
+        if (res.data.jumpType === 2) {
+          this.form.products = []
+        }
+      } catch (error) {
+        console.log('error', error)
+      }
+    },
+    changeGrop(value) {
+      console.log('value', value)
+    },
+    // 显示选择商品弹窗
+    handleDialogVisible() {
+      this.dialogVisible = true
+    },
+    handleGoodDialogVisible(index) {
+      // 显示选择商品弹窗
+      this.addIndex = index
+      this.dialogGoodVisible = true
+    },
+    deleteShop() {
+      // 清除商品
+      this.form.jumpProductId = ''
+      this.form.clubs = []
+    },
+    handleGoodConfirm(data) {
+      // 确认选择商品
+      this.form.clubs = data
+      console.log('clubs', this.form.clubs)
+      this.handleGoodCancel()
+    },
+    onSubmit(formName) {
+      this.$refs[formName].validate(valid => {
+        if (valid) {
+          this.$confirm('是否提交数据', '提示', {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'warning'
+          }).then(() => {
+            console.log('form', this.form)
+            this.savePageBanner(this.form)
+          })
+        } else {
+          return false
+        }
+      })
+    },
+    async savePageBanner(params) {
+      // 保存
+      await savePageBanner(params)
+      this.$message.success('保存成功')
+      setTimeout(() => {
+        this.$router.push({ path: '/campaign/list', query: { type: 1 }})
+      }, 1000)
+    },
+    // 取消选择商品
+    handleGoodCancel() {
+      this.dialogVisible = false
+      this.$refs.goodDialog.visible = false
+    },
+    backToList() {
+      this.$store.dispatch('tagsView/delView', this.$route).then(() => {
+        this.$nextTick(() => {
+          this.$router.replace({ path: '/procure/list', query: { type: 1 }})
+        })
+      })
+    }
+  }
+}
+</script>
+
+<style>
+.avatar-uploader .el-upload {
+    border: 1px dashed #d9d9d9;
+    border-radius: 6px;
+    cursor: pointer;
+    position: relative;
+    overflow: hidden;
+    float: left;
+  }
+  .avatar-uploader .el-upload:hover {
+    border-color: #409EFF;
+  }
+  .avatar-uploader-icon{
+    font-size: 30px;
+    color: #999999;
+  }
+  .el-form-item__label{
+      text-align: right !important;
+  }
+  .el-upload__tip{
+    line-height: 20px;
+    color: red;
+    text-align: left;
+    position: absolute;
+    right: -50%;
+    bottom: 0;
+  }
+  .span_tip{
+    font-size: 12px;
+    color: red;
+    margin-left: 5px;
+  }
+  .filter-item-temp{
+    width: 100px;
+  }
+</style>

+ 296 - 0
src/views/club/procure-list.vue

@@ -0,0 +1,296 @@
+<template>
+  <div class="app-container">
+    <div class="filter-container">
+      <div class="filter-control">
+        <span style="width: auto;">机构名称:</span>
+        <el-input
+          v-model="listQuery.userName"
+          style="width:130px;"
+          placeholder="请输入机构名称"
+          clearable
+          @keyup.enter.native="getList"
+          @clear="getList"
+        />
+      </div>
+      <div class="filter-control">
+        <span style="width: auto;">联系人:</span>
+        <el-input
+          v-model="listQuery.linkMan"
+          style="width:130px;"
+          placeholder="请输入联系人姓名"
+          clearable
+          @keyup.enter.native="getList"
+          @clear="getList"
+        />
+      </div>
+      <div class="filter-control">
+        <span style="width: auto;">手机号:</span>
+        <el-input
+          v-model="listQuery.bindMobile"
+          style="width:130px;"
+          placeholder="请输入手机号"
+          clearable
+          @keyup.enter.native="getList"
+          @clear="getList"
+        />
+      </div>
+      <div class="filter-control">
+        <span style="width: auto;">状态:</span>
+        <el-select v-model="listQuery.clubStatus" style="width:120px;" clearable @change="getList">
+          <el-option value="" label="全部" />
+          <el-option label="待审核" :value="1" />
+          <el-option label="已上线" :value="90" />
+          <el-option label="已上线" :value="91" />
+          <el-option label="审核未通过" :value="92" />
+        </el-select>
+      </div>
+      <div class="filter-control">
+        <span style="width: auto;">绑定微信:</span>
+        <el-select v-model="listQuery.clubStatus" style="width:120px;" clearable @change="getList">
+          <el-option value="" label="全部" />
+          <el-option label="待审核" :value="1" />
+          <el-option label="已上线" :value="90" />
+          <el-option label="已上线" :value="91" />
+          <el-option label="审核未通过" :value="92" />
+        </el-select>
+      </div>
+      <div class="filter-control">
+        <span>添加时间:</span>
+        <el-date-picker
+          v-model="registTime"
+          type="daterange"
+          unlink-panels
+          range-separator="至"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+          :picker-options="pickerOptions"
+          @change="getList"
+        />
+      </div>
+      <div class="filter-control">
+        <el-button type="primary" icon="el-icon-search" @click="getList">查询</el-button>
+        <el-button type="primary" icon="el-icon-search" @click="handleProcureEdit(1)">添加采购员</el-button>
+      </div>
+    </div>
+    <el-table
+      v-loading="listLoading"
+      :data="list"
+      element-loading-text="Loading"
+      border
+      fit
+      highlight-current-row
+      :header-cell-style="{background:'#eef1f6',color:'#606266'}"
+    >
+      <el-table-column label="姓名" align="center" prop="userName" />
+      <el-table-column label="手机号" align="center" prop="bindMobile" width="150" />
+      <el-table-column label="关联机构" align="center" prop="userName" />
+      <el-table-column label="状态" align="center" prop="status" width="150">
+        <template slot-scope="{row}">
+          <template v-if="row.clubStatus*1===1">
+            <el-tag type="warning" size="small">待审核</el-tag>
+          </template>
+          <template v-else-if="row.clubStatus*1===92">
+            <el-tag type="danger" size="small">审核未通过</el-tag>
+          </template>
+          <template v-else>
+            <el-tag v-if="row.clubStatus*1===91" type="danger" size="small">已下线</el-tag>
+            <el-tag v-else type="success" size="small">已上线</el-tag>
+            <el-button v-if="row.clubStatus*1 === 91" type="primary" size="mini" @click="handOnline(row)">上线</el-button>
+            <el-button v-else type="primary" size="mini" @click="handOffline(row)">下线</el-button>
+          </template>
+        </template>
+      </el-table-column>
+      <el-table-column class-name="status-col" label="微信绑定状态" align="center" prop="status">
+        <template slot-scope="{row}">
+          <i v-if="row.status === '2'" class="el-icon-success" style="color:#67C23A;font-size: 18px;" />
+          <!-- <i v-else class="el-icon-error" style="color: #E6A23C;font-size: 20px;" /> -->
+        </template>
+      </el-table-column>
+      <el-table-column align="center" label="添加时间" prop="registerTime">
+        <template slot-scope="{row}">
+          <span>{{ row.registerTime }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column align="center" label="绑定时间" prop="registerTime">
+        <template slot-scope="{row}">
+          <span>{{ row.registerTime }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="操作" align="center">
+        <template slot-scope="{row}">
+          <el-button type="primary" size="mini" @click="handleProcureEdit(2,row)">编辑</el-button>
+          <el-button type="primary" size="mini" @click="handleProcureEdit(2,row)">解除微信</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <pagination v-show="total>10" :total="total" :page.sync="listQuery.index" :limit.sync="listQuery.pageSize" @pagination="getList" />
+    <template>
+      <el-backtop style="right: 40px; bottom: 40px;">
+        <i class="el-icon-upload2" />
+      </el-backtop>
+    </template>
+  </div>
+</template>
+
+<script>
+import { getClubList, updateStatus, clubAudit } from '@/api/club'
+import pickerOptions from '@/utils/time-picker.js'
+export default {
+  data() {
+    return {
+      registTime: '',
+      pickerOptions,
+      list: [],
+      listLoading: true,
+      total: 0,
+      listQuery: {
+        index: 1,
+        pageSize: 10,
+        userOrganizeId: this.$store.getters.organizeId,
+        userName: '',
+        linkMan: '',
+        bindMobile: '',
+        clubStatus: '',
+        startTime: '',
+        endTime: ''
+      },
+      startTime: '',
+      endTime: '',
+      auditPeople: {
+        auditStatus: '',
+        auditNote: '',
+        userOrganizeId: this.$store.getters.organizeId,
+        clubId: '',
+        userId: '',
+        clubs: []
+      },
+      updateTemp: {},
+      updateTatusType: '',
+      dialogVisible: false,
+      dialogVisibleText: '',
+      dialogFormVisible: true,
+      dialogStatus: '',
+      loadingbut: false,
+      rules: {
+        // organizeType: [{ required: true, message: '请选择机构类型', trigger: 'blur' }],
+        auditStatus: [{ required: true, message: '请选择审核状态', trigger: 'blur' }],
+        auditNote: [{ required: true, message: '请填写原因', trigger: 'blur' }]
+      }
+    }
+  },
+  computed: {
+    disabled() {
+      return !this.addPeople.status
+    },
+    organizeId() {
+      return this.$store.getters.organizeId
+    }
+  },
+  created() {
+    this.getList()
+  },
+  methods: {
+    initTime() {
+      // 初始化获取时间筛选值
+      if (this.registTime && this.registTime.length > 0) {
+        this.listQuery.startTime = this.registTime[0]
+        this.listQuery.endTime = this.registTime[1]
+      } else {
+        this.listQuery.startTime = ''
+        this.listQuery.endTime = ''
+      }
+    },
+    async getList() {
+      this.listLoading = true
+      try {
+        this.initTime()
+        const res = await getClubList(this.listQuery)
+        this.list = res.data.results
+        this.total = res.data.totalRecord
+        this.listLoading = false
+      } catch (error) {
+        console.log('error', error)
+        this.listLoading = false
+      }
+    },
+    hanleVerify(row) {
+      // 审核
+      this.auditPeople.userId = row.userId
+      this.auditPeople.clubId = row.clubId
+      this.dialogFormVisible = true
+    },
+    handleEdit(row) { // 添加运营
+
+    },
+    handleCreateOperator() { // 确认审核
+      this.$refs['dataForm'].validate((valid) => {
+        if (valid) {
+          this.clubAudit(this.auditPeople)
+        } else {
+          return false
+        }
+      })
+    },
+    // 审核
+    async clubAudit(params) {
+      try {
+        await clubAudit(params)
+        this.$message.success('操作成功')
+        this.getList()
+        this.dialogFormVisible = false
+      } catch (error) {
+        console.log('error', error)
+      }
+    },
+    handOnline(row) {
+      this.updateTemp = Object.assign({}, { clubId: row.clubId, userId: row.userId, clubStatus: row.clubStatus, userorganizeId: this.$store.getters.organizeId })
+      this.$confirm('确定上线该门店吗?上线后门店负责人可使用账号密码登录小程序。', '系统提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        const params = Object.assign({}, this.updateTemp)
+        this.updateClubStatus(params)
+      }).catch(() => {
+      })
+    },
+    handOffline(row) {
+      this.updateTemp = Object.assign({}, { clubId: row.clubId, userId: row.userId, clubStatus: row.clubStatus, userorganizeId: this.$store.getters.organizeId })
+      this.$confirm('确定下线该门店吗?下线后该门店将不能在小程序进行采购。', '系统提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        const params = Object.assign({}, this.updateTemp)
+        this.updateClubStatus(params)
+      }).catch(() => {
+      })
+    },
+    async updateClubStatus(params) {
+      try {
+        const res = await updateStatus(params)
+        this.$message.success(res.msg)
+        this.getList()
+      } catch (error) {
+        this.$message.error(error.msg)
+      }
+    },
+    handleProcureEdit(type, row) {
+      switch (type) {
+        case 1:
+          this.$router.push({ path: '/procure/edit', query: { type: 'add' }})
+          break
+        case 2:
+          this.$router.push({ path: '/procure/edit', query: { type: 'edit', clubId: row.clubId, userId: row.userId, name: row.userName }})
+          break
+      }
+    }
+  }
+}
+
+</script>
+<style scoped>
+  .el-dialog{
+    width: 600px;
+  }
+</style>

+ 9 - 9
src/views/finance/payment-details.vue

@@ -183,7 +183,7 @@
             <template v-if="detailsType === 'verify' || detailsType === 'edit'">
               <el-col :span="6"><b>付款银行:</b>
                 <el-select v-model="checkParams.payType" style="width:150px;" clearable size="mini">
-                  <el-option v-for="item in receiptTypeList" :key="item.id" :label="item.name" :value="item.id" />
+                  <el-option v-for="item in payTypeList" :key="item.id" :label="item.name" :value="item.id" />
                 </el-select>
               </el-col>
             </template>
@@ -253,7 +253,7 @@
         :rows="4"
         placeholder="请输入不通过原因"
       />
-      <span slot="footer" class="dialog-footer">
+      <span slot="footer" class="dialog-footer">io
         <el-button @click="dialogVisible = false">取 消</el-button>
         <el-button type="primary" :disabled="disabled" @click="handlePayCheck(2)">确 定</el-button>
       </span>
@@ -262,7 +262,7 @@
 </template>
 
 <script>
-import { getPayDetails, getReceiptTypeList, subPayApply, subPayCheck } from '@/api/finance'
+import { getPayDetails, getPayTypeList, subPayApply, subPayCheck } from '@/api/finance'
 export default {
   name: 'PaymentDetails',
   filters: {
@@ -335,7 +335,7 @@ export default {
         loading: false
       },
       payRepacts: {},
-      receiptTypeList: [],
+      payTypeList: [],
       detailsType: '',
       dialogVisible: false,
       checkParams: {
@@ -361,7 +361,7 @@ export default {
       this.detailsType = this.$route.query.type
     }
     this.getPayDetails()
-    this.getReceiptTypeList()
+    this.getPayTypeList()
   },
   methods: {
     // 付款单详情
@@ -375,16 +375,16 @@ export default {
       }
     },
     // 获取收款账号列表
-    async getReceiptTypeList() {
-      const res = await getReceiptTypeList()
-      this.receiptTypeList = res.data
+    async getPayTypeList() {
+      const res = await getPayTypeList()
+      this.payTypeList = res.data
       this.checkParams.payType = res.data[0].id
     },
     payTypeFilters(value) {
       // 收款账号
       console.log('valueText', value)
       let valueText = ''
-      this.receiptTypeList.forEach(type => {
+      this.payTypeList.forEach(type => {
         if (value === type.id) { valueText = type.name } else { valueText = '---' }
       })
       console.log('valueText', valueText)