MrShi
4 天以前 05aec1e9986fbe3e907259bb1a1396f129bd0fa1
admin/src/views/business/member.vue
@@ -2,42 +2,104 @@
  <TableLayout :permissions="['business:member:query']">
    <!-- 搜索表单 -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <el-form-item label="手机号" prop="telephone">
        <el-input v-model="searchForm.telephone" clearable placeholder="请输入手机号" @keypress.enter.native="search"></el-input>
      <el-form-item label="姓名" prop="name">
        <el-input v-model="searchForm.name"  style="width: 180px" placeholder="请输入姓名" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="真实姓名" prop="name">
        <el-input v-model="searchForm.name" clearable placeholder="请输入真实姓名" @keypress.enter.native="search"></el-input>
      <el-form-item label="工号" prop="code">
        <el-input v-model="searchForm.code" style="width: 180px" placeholder="请输入工号" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="类型" prop="type">
        <el-select v-model="searchForm.type" clearable placeholder="请选择类型" @change="search">
            <el-option :value="0" label="全部"></el-option>
            <el-option :value="1" label="接单方"></el-option>
      <el-form-item label="战区" prop="zhanquIds">
        <el-select
            v-model="searchForm.zhanquIds"
            style="width: 180px"
            placeholder="战区"
            clearable
            @change="search"
        >
          <el-option
              v-for="item in cateList.filter(item=>{return item.type==0})"
              :key="item.id"
              :value="item.id"
              :label="item.name"
          ></el-option>
        </el-select>
      </el-form-item>
<!--      <el-form-item label="状态" prop="status">
        <el-select v-model="searchForm.status"  @keypress.enter.native="search" clearable placeholder="状态">
          <el-option label="启用" value="0"></el-option>
          <el-option label="禁用" value="1"></el-option>
      <el-form-item label="商业化类型" prop="bustypeIdList">
        <el-select
            v-model="searchForm.bustypeIdList"
            style="width: 180px"
            placeholder="商业化类型"
            clearable
            multiple
            collapse-tags
            @change="search"
        >
          <el-option
              v-for="item in cateList.filter(item=>{return item.type==1})"
              :key="item.id"
              :value="item.id"
              :label="item.name"
          ></el-option>
        </el-select>
      </el-form-item>-->
      <el-form-item label="注册时间" prop="eventType">
        <el-date-picker type="datetime" style="width: 120px" v-model="searchForm.startTime" clearable value-format="yyyy-MM-dd HH:mm:ss"
                        placeholder="开始时间" />-
        <el-date-picker type="datetime"  style="width: 120px"  v-model="searchForm.endTime" clearable value-format="yyyy-MM-dd HH:mm:ss"
                        placeholder="结束时间" />
      </el-form-item>
      <el-form-item label="擅长领域" prop="fieldIdList">
        <el-select
            v-model="searchForm.fieldIdList"
            style="width: 300px"
            placeholder="擅长领域"
            clearable
            collapse-tags
            multiple
            @change="search"
        >
          <el-option
              v-for="item in cateList.filter(item=>{return item.type==2})"
              :key="item.id"
              :value="item.id"
              :label="item.name"
          ></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="老师等级" prop="levelId">
        <el-select
            v-model="searchForm.levelId"
            style="width: 180px"
            placeholder="老师等级"
            clearable
            @change="search"
        >
          <el-option
              v-for="item in cateList.filter(item=>{return item.type==3})"
              :key="item.id"
              :value="item.id"
              :label="item.name"
          ></el-option>
        </el-select>
      </el-form-item>
        <el-form-item label="状态" prop="status">
          <el-select
              v-model="searchForm.status"
              placeholder="状态"
              clearable
              style="width: 180px"
              @change="search"
          >
            <el-option :key="0" :value="0" label="启用"></el-option>
            <el-option :key="1" :value="1" label="禁用"></el-option>
          </el-select>
        </el-form-item>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button @click="reset">重置</el-button>
        <el-button type="primary" :loading="isWorking.export" @click="exportExcel">导出</el-button>
      </section>
    </el-form>
    <!-- 表格和分页 -->
    <template v-slot:table-wrap>
<!--      <ul class="toolbar" v-permissions="['business:member:create', 'business:member:delete']">
        <li><el-button type="primary" @click="$refs.operaMemberWindow.open('新建会员信息表')" icon="el-icon-plus" v-permissions="['business:member:create']">新建</el-button></li>
        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:member:delete']">删除</el-button></li>
      </ul>-->
      <ul class="toolbar" v-permissions="['business:member:create', 'business:member:delete']">
        <li><el-button type="primary" @click="$refs.operaMemberWindow.open('新建老师',null)" icon="el-icon-plus" v-permissions="['business:member:create']">新建</el-button></li>
        <li><el-button type="primary" icon="el-icon-refresh" v-permissions="['business:member:create']" @click="$refs.OperaMemberImportWindow.open('老师导入', searchForm.companyType)">批量导入</el-button></li>
        <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:member:delete']">删除</el-button></li>
      </ul>
      <el-table
          :height="tableHeightNew"
        v-loading="isWorking.search"
@@ -46,55 +108,83 @@
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column prop="openid" label="openid" min-width="100px">
        <el-table-column  prop="imgurl" label="图片" min-width="100px">
          <template slot-scope="{row}">
           <span style="cursor: pointer;color: #2E68EC" @click="openDetail(row)">{{row.openid}}</span>
            <el-image v-if="row.fullImgurl" style="width: 50px; margin-right: 10px" :src="row.fullImgurl"
              :preview-src-list="[row.fullImgurl]">
            </el-image>
          </template>
        </el-table-column>
        <el-table-column prop="nickName" label="昵称" min-width="100px"></el-table-column>
        <el-table-column prop="name" label="真实姓名" min-width="100px"></el-table-column>
        <el-table-column prop="telephone" label="手机号" min-width="100px"></el-table-column>
        <el-table-column prop="workerIdentity" label="身份" min-width="100px">
        <el-table-column prop="code" label="工号" min-width="100px"></el-table-column>
        <el-table-column prop="name" label="姓名" min-width="100px"></el-table-column>
        <el-table-column prop="sex" label="性别" min-width="100px">
          <template slot-scope="{row}">
            发单方<span v-if="row.workerIdentity == 2 || row.driverIdentity == 2 || row.chefIdentity == 2">{{'  |  接单方'}}</span>
            <span v-if="row.sex ==0">男</span>
            <span v-if="row.sex ==1">女</span>
          </template>
        </el-table-column>
        <el-table-column prop="workerIdentity" label="接单认证身份"  width="120px">
        <el-table-column prop="positon" label="岗位" min-width="120px"></el-table-column>
        <el-table-column prop="levelName" label="等级" min-width="100px"></el-table-column>
        <el-table-column prop="workYears" label="从业年份" min-width="100px">
          <template slot-scope="{row}">
            <div v-if="row.workerIdentity == 2" class="renzhen">工人</div>
            <div v-if=" row.driverIdentity == 2"  class="renzhen">司机</div>
            <div v-if="row.chefIdentity == 2"    class="renzhen">供餐</div>
            {{row.workYears}}年
          </template>
        </el-table-column>
        <el-table-column prop="amount" label="当前余额(元)" min-width="100px">
        <el-table-column prop="serveNum" label="服务商场" min-width="100px">
          <template slot-scope="{row}">
            <span class="yellowstate">{{((row.amount || 0)/100).toFixed(2)}}</span>
            <span v-if="row.serveNum">{{row.serveNum}}个</span>
          </template>
        </el-table-column>
        <el-table-column prop="createTime" label="注册时间" min-width="100px"></el-table-column>
        <el-table-column prop="autoReciveStatus" label="接受自动派单" min-width="100px">
            <template slot-scope="{row}">
              {{row.autoReceiveStatus ==1?"是":"否"}}
            </template>
        <el-table-column prop="caseNum" label="标杆案例" min-width="100px">
          <template slot-scope="{row}">
            <span >{{row.caseNum || 0}}个</span>
          </template>
        </el-table-column>
<!--        <el-table-column label="状态">
        <el-table-column prop="busTypeNames" label="商业化类型" min-width="200px">
          <template slot-scope="{row}">
            <div v-if="row.typeList && row.typeList.length">
             <div style="display:inline-block;" v-for="(item,index) in row.typeList">{{item.name||''}} <span v-if="index < row.typeList.length-1" style="display:inline-block;padding: 0px 3px;">/</span></div>
            </div>
          </template>
        </el-table-column>
        <el-table-column prop="areaNames" label="服务战区" min-width="200px">
          <template slot-scope="{row}">
            <div v-if="row.zqList && row.zqList.length">
              <div style="display:inline-block;" v-for="(item,index) in row.zqList">{{item.name||''}} <span v-if="index < row.zqList.length-1" style="display:inline-block;padding: 0px 3px;">/</span></div>
            </div>
          </template>
        </el-table-column>
        <el-table-column prop="fieldNames" label="擅长领域" min-width="200px">
          <template slot-scope="{row}">
            <div v-if="row.fieldList && row.fieldList.length">
              <div style="width: 190px; display: -webkit-box; -webkit-box-orient: vertical; line-clamp: 2; overflow: hidden;">
                <template v-for="(item,index) in row.fieldList">{{item.name||''}} <template v-if="index < row.fieldList.length-1">/</template></template>
              </div>
            </div>
          </template>
        </el-table-column>
        <el-table-column prop="fee" label="费用标准(元/周)" min-width="130px"></el-table-column>
        <el-table-column prop="updateUserName" label="操作人" min-width="100px"></el-table-column>
        <el-table-column prop="updateTime" label="最近操作时间" min-width="150px"></el-table-column>
        <el-table-column label="状态" fixed="right">
          <template slot-scope="{row}">
            <el-switch @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66"
                       inactive-color="#ff4949" :active-value="0" :inactive-value="1">
            </el-switch>
          </template>
        </el-table-column>
      <el-table-column
              v-if="containPermissions(['business:member:update', 'business:member:delete'])"
              label="操作"
              min-width="120"
              fixed="right"
            >
        <el-table-column
          v-if="containPermissions(['business:member:update', 'business:member:delete'])"
          label="操作"
          min-width="180"
          fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" @click="$refs.operaMemberWindow.open('编辑会员信息表', row)" icon="el-icon-edit" v-permissions="['business:member:update']">编辑</el-button>
            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:member:delete']">删除</el-button>
            <el-button type="text" @click="$refs.operaMemberWindow.open('编辑老师', row,searchForm.type)" icon="el-icon-edit" v-permissions="['business:member:update']">编辑</el-button>
            <el-button type="text"   @click="$refs.OperaCasesListWindow.open('查看老师案例【'+row.name+'】', row.id)" icon="el-icon-picture-outline">案例</el-button>
            <el-button type="text" style="color: red" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:member:delete']">删除</el-button>
          </template>
        </el-table-column>-->
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
@@ -104,8 +194,9 @@
      </pagination>
    </template>
    <!-- 新建/修改 -->
    <OperaMemberDetailWindow ref="OperaMemberDetailWindow" />
    <OperaMemberWindow ref="operaMemberWindow" @success="handlePageChange"/>
    <OperaMemberImportWindow ref="OperaMemberImportWindow" @success="handlePageChange" />
    <OperaCasesListWindow ref="OperaCasesListWindow" @success="handlePageChange" />
  </TableLayout>
</template>
@@ -114,54 +205,113 @@
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaMemberWindow from '@/components/business/OperaMemberWindow'
import OperaMemberDetailWindow from '@/components/business/OperaMemberDetailWindow'
import OperaMemberImportWindow from '@/components/business/OperaMemberImportWindow'
import OperaCasesListWindow from '@/components/business/OperaCasesListWindow'
import { findAll as cateList } from '@/api/business/category'
export default {
  name: 'Member',
  name: 'Category',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaMemberDetailWindow, OperaMemberWindow },
  components: { TableLayout, Pagination, OperaMemberWindow ,OperaMemberImportWindow,OperaCasesListWindow},
  data () {
    return {
      // 搜索
      searchForm: {
        type: 0,
        startTime: '',
        endTime: '',
        telephone: '',
        name: '',
        status: ''
      }
        queryFlag:1,
        code: '',
        status: null,
        levelId:null,
        fieldIdList: [],
        zhanquIds:null,
        bustypeIdList:[],
        type: 0
      },
      cateList:[]
    }
  },
  created () {
    this.config({
      module: '会员信息表',
      module: '讲师信息表',
      api: '/business/member',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
    cateList({
    }).then(res => {
      this.cateList = res
    })
  },
  methods: {
    reset () {
      this.searchForm = {
        type: 0,
        startTime: '',
        endTime: '',
        telephone: '',
        name: '',
        status: ''
    deleteById (row, childConfirm = true, call) {
      this.__checkApi()
      let message = `确认删除老师数据吗?`
      if (childConfirm && row.children != null && row.children.length > 0) {
        message = `确认删除老师数据吗?`
      }
      this.search()
      this.$dialog.deleteConfirm(message)
              .then(() => {
                this.isWorking.delete = true
                this.api.deleteById(row[this.configData['field.id']])
                        .then(() => {
                          this.__afterDelete()
                          if (call) {
                            call()
                          }
                        })
                        .catch(e => {
                          this.$tip.apiFailed(e)
                        })
                        .finally(() => {
                          this.isWorking.delete = false
                        })
              })
              .catch(() => {})
    },
    openDetail (row) {
      this.$refs.OperaMemberDetailWindow.open('用户详情', row.id)
    deleteByIdInBatch (childConfirm = true, call) {
      this.__checkApi()
      if (this.tableData.selectedRows.length === 0) {
        this.$tip.warning('请至少选择一条数据')
        return
      }
      let message = `确认删除老师数据吗?`
      if (childConfirm) {
        const containChildrenRows = []
        for (const row of this.tableData.selectedRows) {
          if (row.children != null && row.children.length > 0) {
            containChildrenRows.push(row[this.configData['field.main']])
          }
        }
        if (containChildrenRows.length > 0) {
          message = `确认删除老师数据吗?`
        }
      }
      this.$dialog.deleteConfirm(message)
              .then(() => {
                this.isWorking.delete = true
                this.api.deleteByIdInBatch(this.tableData.selectedRows.map(row => row[this.configData['field.id']]).join(','))
                        .then(() => {
                          this.__afterDelete(this.tableData.selectedRows.length)
                          if (call) {
                            call()
                          }
                        })
                        .catch(e => {
                          this.$tip.apiFailed(e)
                        })
                        .finally(() => {
                          this.isWorking.delete = false
                        })
              })
              .catch(() => {})
    },
    changeStatus (e, row) {
      this.working = true
      this.api.updateStatus({ id: row.id, workStatus: e })
      this.api.updateStatus({ id: row.id, status: e })
        .then(res => {
          this.$tip.apiSuccess(res || '操作成功')
          this.search()
          this.handlePageChange()
        })
        .catch(e => {
          this.$tip.apiFailed(e)
@@ -169,19 +319,7 @@
        .finally(() => {
          this.working = false
        })
        .catch(() => { })
    }
  }
}
</script>
<style  scoped lang="scss">
.renzhen{
  margin: 5px;
  line-height: 30px;
  color:#67c23a;
  height: 30px;
  text-align:center;
  border-color: #e1f3d8;
  background-color: #f0f9eb;
}
</style>