| | |
| | | <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" |
| | |
| | | @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" |
| | |
| | | </pagination> |
| | | </template> |
| | | <!-- 新建/修改 --> |
| | | <OperaMemberDetailWindow ref="OperaMemberDetailWindow" /> |
| | | <OperaMemberWindow ref="operaMemberWindow" @success="handlePageChange"/> |
| | | <OperaMemberImportWindow ref="OperaMemberImportWindow" @success="handlePageChange" /> |
| | | <OperaCasesListWindow ref="OperaCasesListWindow" @success="handlePageChange" /> |
| | | </TableLayout> |
| | | </template> |
| | | |
| | |
| | | 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) |
| | |
| | | .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> |