MrShi
2026-01-29 8676f4cb37ef31fa9fcfe2a7faf5f4c4ea77cc1a
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: 150px" 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: 150px" 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="fieldIdList">
        <el-select
            v-model="searchForm.fieldIdList"
            style="width: 150px"
            placeholder="战区"
            clearable
            multiple
            @change="search"
        >
          <el-option
              v-for="item in cateList"
              :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: 150px"
            placeholder="商业化类型"
            clearable
            multiple
            @change="search"
        >
          <el-option
              v-for="item in cateList1"
              :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="levelIdList">
        <el-select
            v-model="searchForm.levelIdList"
            style="width: 150px"
            placeholder="擅长领域"
            clearable
            multiple
            @change="search"
        >
          <el-option
              v-for="item in cateList2"
              :key="item.id"
              :value="item.id"
              :label="item.name"
          ></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="老师等级" prop="levelIdList">
        <el-select
            v-model="searchForm.levelIdList"
            style="width: 150px"
            placeholder="老师等级"
            clearable
            multiple
            @change="search"
        >
          <el-option
              v-for="item in cateList3"
              :key="item.id"
              :value="item.id"
              :label="item.name"
          ></el-option>
        </el-select>
        <el-form-item label="状态" prop="status">
          <el-select
              v-model="searchForm.status"
              placeholder="状态"
              clearable
              style="width: 150px"
              @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>
      </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,57 @@
        @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.imgurlfull" style="width: 50px; height: 50px; margin-right: 10px" :src="row.imgurlfull"
                      :preview-src-list="[row.imgurlfull]">
            </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="position" label="岗位" min-width="120px"></el-table-column>
        <el-table-column prop="levelName" label="等级" min-width="100px"></el-table-column>
        <el-table-column prop="jobYear" label="从业年份" min-width="100px"></el-table-column>
        <el-table-column prop="serveNum" 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>
            <span v-if="row.serveNum">{{row.serveNum}}个</span>
          </template>
        </el-table-column>
        <el-table-column prop="amount" label="当前余额(元)" min-width="100px">
        <el-table-column prop="caseNum" label="标杆案例" min-width="100px">
          <template slot-scope="{row}">
            <span class="yellowstate">{{((row.amount || 0)/100).toFixed(2)}}</span>
            <span v-if="row.caseNum">{{row.caseNum}}个</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>
<!--        <el-table-column label="状态">
        <el-table-column prop="busTypeNames" label="商业化类型" min-width="200px"></el-table-column>
        <el-table-column prop="areaNames" label="服务战区" min-width="200px"></el-table-column>
        <el-table-column prop="fieldNames" label="擅长领域" min-width="200px"></el-table-column>
        <el-table-column label="状态">
          <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">
            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 prop="updateUserName" label="操作人" min-width="100px"></el-table-column>
        <el-table-column prop="updateTime" label="最近操作时间" min-width="150px"></el-table-column>
        <el-table-column
          v-if="containPermissions(['business:member:update', 'business:member:delete'])"
          label="操作"
          min-width="120"
          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" 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 +168,8 @@
      </pagination>
    </template>
    <!-- 新建/修改 -->
    <OperaMemberDetailWindow ref="OperaMemberDetailWindow" />
    <OperaMemberWindow ref="operaMemberWindow" @success="handlePageChange"/>
    <OperaMemberImportWindow ref="OperaMemberImportWindow" @success="handlePageChange" />
  </TableLayout>
</template>
@@ -114,51 +178,63 @@
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 { 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},
  data () {
    return {
      // 搜索
      searchForm: {
        type: 0,
        startTime: '',
        endTime: '',
        telephone: '',
        name: '',
        status: ''
      }
        code: '',
        status: null,
        levelIdList:[],
        fieldIdList: [],
        busTypeIdList:[],
        type: 0
      },
      cateList:[],
      cateList1:[],
      cateList2:[],
      cateList3:[],
    }
  },
  created () {
    this.config({
      module: '会员信息表',
      module: '讲师信息表',
      api: '/business/member',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
    cateList({
      type: 0 , //战区
    }).then(res => {
      this.cateList = res
    })
    cateList({
      type: 1 , //商业化
    }).then(res => {
      this.cateList1 = res
    })
    cateList({
      type: 2 , //擅长领用
    }).then(res => {
      this.cateList2 = res
    })
    cateList({
      type: 3 , //等级
    }).then(res => {
      this.cateList3 = res
    })
  },
  methods: {
    reset () {
      this.searchForm = {
        type: 0,
        startTime: '',
        endTime: '',
        telephone: '',
        name: '',
        status: ''
      }
      this.search()
    },
    openDetail (row) {
      this.$refs.OperaMemberDetailWindow.open('用户详情', row.id)
    },
    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()
@@ -169,19 +245,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>