|
|
@@ -0,0 +1,963 @@
|
|
|
+<template>
|
|
|
+ <div class="app-container">
|
|
|
+ <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
|
|
+ <el-form-item label="技师姓名" prop="cName">
|
|
|
+ <el-input
|
|
|
+ v-model="queryParams.cName"
|
|
|
+ placeholder="请输入技师姓名"
|
|
|
+ clearable
|
|
|
+ @keyup.enter.native="handleQuery"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="技师昵称" prop="cNickName">
|
|
|
+ <el-input
|
|
|
+ v-model="queryParams.cNickName"
|
|
|
+ placeholder="请输入技师昵称"
|
|
|
+ clearable
|
|
|
+ @keyup.enter.native="handleQuery"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="电话" prop="cName">
|
|
|
+ <el-input
|
|
|
+ v-model="queryParams.cPhone"
|
|
|
+ placeholder="请输入电话"
|
|
|
+ clearable
|
|
|
+ @keyup.enter.native="handleQuery"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <!-- <el-form-item label="审核状态" prop="nTong">
|
|
|
+ <el-select v-model="queryParams.nTong" placeholder="请选择" style="width: 100px">
|
|
|
+ <el-option
|
|
|
+ v-for="item in auditStatus"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item> -->
|
|
|
+ <el-form-item label="服务状态" prop="nStatus">
|
|
|
+ <el-select v-model="queryParams.nStatus" placeholder="请选择" style="width: 100px">
|
|
|
+ <el-option
|
|
|
+ v-for="item in serviceState"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="性别" prop="nSex">
|
|
|
+ <el-select v-model="queryParams.nSex" placeholder="请选择" style="width: 100px">
|
|
|
+ <el-option
|
|
|
+ v-for="item in sex"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
|
|
+ <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <el-table v-loading="loading" :data="jsList" @selection-change="handleSelectionChange">
|
|
|
+ <el-table-column type="selection" width="55" align="center" />
|
|
|
+ <!-- <el-table-column label="${comment}" align="center" prop="cOpenId" /> -->
|
|
|
+ <!-- <el-table-column label="可预约项目编号 JsonArray" align="center" prop="cBhList" /> -->
|
|
|
+ <el-table-column label="姓名" align="center" prop="cName" />
|
|
|
+ <el-table-column label="昵称" align="center" prop="cNickName" />
|
|
|
+ <el-table-column label="性别" align="center" prop="dtCreateTime">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span>{{ scope.row.nSex ===1?'男' :'女' }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <!-- <el-table-column label="生活照 JsonArray" align="center" prop="cImgList" /> -->
|
|
|
+
|
|
|
+ <!-- <el-table-column label="身份证图片 JsonArray" align="center" prop="cSfzImg" /> -->
|
|
|
+ <!-- <el-table-column label="身份证图片" align="center" prop="cSfzImg">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div class="demo-image__preview">
|
|
|
+ <el-button
|
|
|
+ type="text"
|
|
|
+ @click="lookImg(scope.row.cSfzImg)"
|
|
|
+ >查看</el-button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="生活照" align="center" prop="cImgList">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div class="demo-image__preview">
|
|
|
+ <el-button
|
|
|
+ type="text"
|
|
|
+ @click="lookImg(scope.row.cImgList)"
|
|
|
+ >查看</el-button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column> -->
|
|
|
+ <!-- <el-table-column label="昵称" align="center" prop="cNickName" /> -->
|
|
|
+ <!-- <el-table-column label="头像" align="center" prop="cPortrait" /> -->
|
|
|
+ <el-table-column label="头像" align="center" >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div style="width: 100%;">
|
|
|
+ <img :src="scope.row.cPortrait" style="width: 100%;" alt="">
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ <el-table-column label="电话" align="center" prop="cPhone" />
|
|
|
+ <!-- <el-table-column label="地址" align="center" prop="cAddress" /> -->
|
|
|
+ <!-- <el-table-column label="个人简介" align="center" prop="cJianjie" /> -->
|
|
|
+ <el-table-column label="评分" align="center" prop="nStar" />
|
|
|
+ <el-table-column label="佣金比例" align="center" prop="nBili" />
|
|
|
+ <el-table-column label="已服务数量" align="center" prop="nNum" />
|
|
|
+ <el-table-column label="服务状态" align="center" prop="nStatus">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span>{{ scope.row.nStatus ===1?'服务中' :scope.row.nStatus ===2?'不可服务':'可服务' }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <!-- <el-table-column label="上岗状态" align="center" prop="nStatus">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span>{{ scope.row.nStatus2 ===0?'已上岗' :'未上岗' }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column> -->
|
|
|
+ <el-table-column label="审核状态" align="center" prop="nStatus">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span>{{ scope.row.nTong ===0 ? '待审核' :scope.row.nTong ===1 ? '已通过' :'已退回' }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <!-- <el-table-column label="注册时间" align="center" prop="cTime" /> -->
|
|
|
+ <!-- <el-table-column label="是否带头像框 0否 1是" align="center" prop="nB1" />
|
|
|
+ <el-table-column label="是否是新技师 0否 1是" align="center" prop="nB2" />
|
|
|
+ <el-table-column label="是否有热度 0否 1是" align="center" prop="nB3" /> -->
|
|
|
+ <!-- <el-table-column label="创建时间" align="center" prop="dtCreateTime" width="180">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span>{{ parseTime(scope.row.dtCreateTime, '{y}-{m}-{d}') }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column> -->
|
|
|
+ <el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-button
|
|
|
+ size="mini"
|
|
|
+ type="text"
|
|
|
+ icon="el-icon-notebook-1"
|
|
|
+ @click="handleDetail(scope.row)"
|
|
|
+ >详情</el-button>
|
|
|
+ <!-- <el-button
|
|
|
+ size="mini"
|
|
|
+ type="text"
|
|
|
+ icon="el-icon-edit"
|
|
|
+ @click="handleUpdate(scope.row)"
|
|
|
+ >修改</el-button> -->
|
|
|
+ <el-button
|
|
|
+ size="mini"
|
|
|
+ type="text"
|
|
|
+ icon="el-icon-delete"
|
|
|
+ @click="handleDelete(scope.row)"
|
|
|
+ >删除</el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <el-pagination
|
|
|
+ v-show="total>0"
|
|
|
+ background
|
|
|
+ @size-change="handleSizeChange"
|
|
|
+ @current-change="handleCurrentChange"
|
|
|
+ :current-page="queryParams.current"
|
|
|
+ :page-size="queryParams.size"
|
|
|
+ layout="total, sizes, prev, pager, next, jumper"
|
|
|
+ :total="total">
|
|
|
+ </el-pagination>
|
|
|
+ <!-- 添加或修改技师对话框 -->
|
|
|
+ <el-dialog :title="title" :visible.sync="open" width="700px" append-to-body >
|
|
|
+ <el-form ref="form" :model="form" :rules="rules" label-width="100px" >
|
|
|
+ <!-- <el-form-item label="可预约项目编号 JsonArray" prop="cBhList">
|
|
|
+ <el-input v-model="form.cBhList" type="textarea" placeholder="请输入内容" />
|
|
|
+ </el-form-item> -->
|
|
|
+ <el-form-item label="姓名" prop="cName">
|
|
|
+ <el-input v-model="form.cName" placeholder="请输入姓名" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="昵称" prop="cNickName">
|
|
|
+ <el-input v-model="form.cNickName" placeholder="请输入昵称" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="头像" prop="cPortrait">
|
|
|
+ <!-- <el-input v-model="form.cPortrait" type="textarea" placeholder="请输入内容" /> -->
|
|
|
+ <el-upload
|
|
|
+ action="#"
|
|
|
+ class="avatar-uploader"
|
|
|
+ :http-request="handleAvatarSuccess"
|
|
|
+ :before-upload="beforeAvatarUpload"
|
|
|
+ :show-file-list="false"
|
|
|
+ >
|
|
|
+ <img v-if="form.cPortrait" :src="form.cPortrait" class="avatar">
|
|
|
+ <i v-else class="el-icon-plus avatar-uploader-icon"></i>
|
|
|
+ </el-upload>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="电话" prop="cPhone">
|
|
|
+ <el-input v-model="form.cPhone" placeholder="请输入电话" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="生活照" prop="cImgList">
|
|
|
+ <div class="allbox">
|
|
|
+ <div class="imgslist">
|
|
|
+ <div class="imgs" v-for="(item,index) in updataImg1" :key="index">
|
|
|
+ <img :src="item" alt="">
|
|
|
+ <div class="ifnone" @click="removeImgs(index)">删除</div>
|
|
|
+ </div>
|
|
|
+ <el-upload
|
|
|
+ class="images_box"
|
|
|
+ action="#"
|
|
|
+ :http-request="handleImagesSuccess"
|
|
|
+ :before-upload="beforeImagesUpload"
|
|
|
+ :show-file-list="false"
|
|
|
+ >
|
|
|
+ <i class="el-icon-plus avatar-uploader-icon"></i>
|
|
|
+ </el-upload>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item label="身份证图片" prop="cSfzImg">
|
|
|
+ <!-- <el-input v-model="form.cSfzImg" type="textarea" placeholder="请输入内容" /> -->
|
|
|
+ <div class="allbox">
|
|
|
+ <div class="imgslist">
|
|
|
+ <div class="imgs" v-for="(item,index) in updataImg2" :key="index">
|
|
|
+ <img :src="item" alt="">
|
|
|
+ <div class="ifnone" @click="removesfzImgs(index)">删除</div>
|
|
|
+ </div>
|
|
|
+ <el-upload
|
|
|
+ class="images_box"
|
|
|
+ action="#"
|
|
|
+ :http-request="handlesfzSuccess"
|
|
|
+ :before-upload="beforesfzImagesUpload"
|
|
|
+ :show-file-list="false"
|
|
|
+ >
|
|
|
+ <i class="el-icon-plus avatar-uploader-icon"></i>
|
|
|
+ </el-upload>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+
|
|
|
+ <!-- <el-form-item label="地址" prop="cAddress">
|
|
|
+ <el-input v-model="form.cAddress" type="textarea" placeholder="请输入内容" />
|
|
|
+ </el-form-item> -->
|
|
|
+ <el-form-item label="个人简介" prop="cJianjie">
|
|
|
+ <el-input v-model="form.cJianjie" type="textarea" placeholder="请输入内容" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="评分" prop="nStar">
|
|
|
+ <el-input v-model="form.nStar" placeholder="请输入评分"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="佣金比例" prop="nBili">
|
|
|
+ <el-input v-model="form.nBili" placeholder="请输入佣金比例" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="已服务数量" prop="nNum">
|
|
|
+ <el-input v-model="form.nNum" placeholder="请输入已服务数量" />
|
|
|
+ </el-form-item>
|
|
|
+ <!-- <el-form-item label="添加评论" prop="nNum">
|
|
|
+ <el-input v-model="form.nNum" placeholder="请输入评论" />
|
|
|
+ </el-form-item> -->
|
|
|
+
|
|
|
+ <!-- <el-form-item label="上岗状态" prop="nStatus2" >
|
|
|
+ <el-radio-group v-model="form.nStatus2">
|
|
|
+ <el-radio :label="-1">未上岗</el-radio>
|
|
|
+ <el-radio :label="0">已上岗</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item> -->
|
|
|
+ <!-- <el-form-item label="审核状态" prop="nTong">
|
|
|
+ <el-radio-group v-model="form.nTong">
|
|
|
+ <el-radio :label="0">未通过</el-radio>
|
|
|
+ <el-radio :label="1">已通过</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item> -->
|
|
|
+ <!-- <el-form-item label="注册时间" prop="cTime">
|
|
|
+ <el-input v-model="form.cTime" placeholder="请输入注册时间" />
|
|
|
+ </el-form-item> -->
|
|
|
+ <el-form-item label="是否带头像框" prop="nB1">
|
|
|
+ <el-radio-group v-model="form.nB1">
|
|
|
+ <el-radio :label="0">否</el-radio>
|
|
|
+ <el-radio :label="1">是</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="是否是新技师" prop="nB2">
|
|
|
+ <el-radio-group v-model="form.nB2">
|
|
|
+ <el-radio :label="0">否</el-radio>
|
|
|
+ <el-radio :label="1">是</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="是否有热度" prop="nB3">
|
|
|
+ <el-radio-group v-model="form.nB3">
|
|
|
+ <el-radio :label="0">否</el-radio>
|
|
|
+ <el-radio :label="1">是</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <!-- <el-form-item label="创建时间" prop="dtCreateTime">
|
|
|
+ <el-date-picker clearable
|
|
|
+ v-model="form.dtCreateTime"
|
|
|
+ type="date"
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
+ placeholder="请选择创建时间">
|
|
|
+ </el-date-picker>
|
|
|
+ </el-form-item> -->
|
|
|
+ </el-form>
|
|
|
+ <div slot="footer" style="text-align: justify;margin-bottom: 20px;">
|
|
|
+ <el-button type="primary" @click="submitForm">上 岗</el-button>
|
|
|
+ <el-button @click="cancel">下 岗</el-button>
|
|
|
+ </div>
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
+ <el-button type="primary" @click="submitForm">确 定</el-button>
|
|
|
+ <el-button @click="cancel">取 消</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+ <!-- 查看身份证/生活照图片 -->
|
|
|
+ <el-dialog
|
|
|
+ title="图片"
|
|
|
+ :visible.sync="dialogVisible"
|
|
|
+ width="30%">
|
|
|
+ <el-carousel indicator-position="outside">
|
|
|
+ <el-carousel-item v-for="(item,index) in imgsList" :key="index">
|
|
|
+ <!-- <h3>{{ item }}</h3> -->
|
|
|
+ <div class="imgbox"><img :src="item" alt="" style="max-width: 100%;max-height: 100%;"></div>
|
|
|
+
|
|
|
+ </el-carousel-item>
|
|
|
+ </el-carousel>
|
|
|
+
|
|
|
+ <span slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="dialogVisible = false">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
|
|
|
+ </span>
|
|
|
+ </el-dialog>
|
|
|
+ <!-- 查看技师详情 -->
|
|
|
+ <el-drawer
|
|
|
+ title="技师详情"
|
|
|
+ :visible.sync="drawer"
|
|
|
+ direction="rtl"
|
|
|
+ size="50%"
|
|
|
+ >
|
|
|
+ <div class="jsInfo">
|
|
|
+ <div class="js_head"><img :src="jsInfos.cPortrait" /></div>
|
|
|
+ <div class="js_box">
|
|
|
+ <div class="js_name"><b>姓名:</b><span>{{ jsInfos.cName}}</span> </div>
|
|
|
+ <div class="js_name"><b>性别:</b> <span>{{ jsInfos.nSex===0 ? '女' :'男'}}</span> </div>
|
|
|
+ </div>
|
|
|
+ <div class="js_box">
|
|
|
+ <div class="js_name"><b>电话:</b> <span>{{ jsInfos.cPhone}}</span> </div>
|
|
|
+ <div class="js_name"><b>评分:</b> <span>{{ jsInfos.nStar}}</span> </div>
|
|
|
+ </div>
|
|
|
+ <div class="js_box">
|
|
|
+ <div class="js_name"><b>佣金比例:</b> <span>{{ jsInfos.nBili +'%'}}</span> </div>
|
|
|
+ <div class="js_name"><b>已服务数量:</b> <span>{{ jsInfos.nNum + '个'}}</span> </div>
|
|
|
+ </div>
|
|
|
+ <div class="js_box">
|
|
|
+ <div class="js_name"><b>审核状态:</b> <span>{{ jsInfos.nTong === 0 ? '待审核' : jsInfos.nTong === 1 ?'已通过' : '已退回' }}</span> </div>
|
|
|
+ </div>
|
|
|
+ <div class="js_box">
|
|
|
+ <div class="js_name"><b>擅长项目:</b> <span v-for="(item,index) in jsInfos.projects" :key="index" style="padding-right: 20px;">{{ item.cTitle}}</span> </div>
|
|
|
+
|
|
|
+ </div>
|
|
|
+ <div class="js_name js_imgs" style="width: 100%;" v-if="jsInfos.cSfzImg">
|
|
|
+ <b>身份证照片:</b>
|
|
|
+ <span v-for="(item,index) in jsInfos.cSfzImg" :key="index">
|
|
|
+ <!-- <image-preview :src="item[0]" :width="50" :height="50"/> -->
|
|
|
+ <img :src="item" alt="">
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ <div class="js_name js_imgs" style="width: 100%;" v-if="jsInfos.cImgList">
|
|
|
+ <b>生活照:</b>
|
|
|
+ <span v-for="(item,index) in jsInfos.cImgList" :key="index">
|
|
|
+ <!-- <image-preview :src="item[0]" :width="50" :height="50"/> -->
|
|
|
+ <img :src="item" alt="">
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ <div class="js_name" style="height: auto;width: 100%;">
|
|
|
+ <b>个人简介:</b>
|
|
|
+ <span>{{ jsInfos.cJianjie }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="js_name" style="height: auto;width: 100%;">
|
|
|
+ <b>地址:</b>
|
|
|
+ <span>{{jsInfos.address}} {{jsInfos.name}} {{jsInfos.atlasAdd}}</span>
|
|
|
+ <!-- <span>{{ JSON.parse(jsInfos.cAddress).address +'('+ JSON.parse(jsInfos.cAddress).name +')'}}</span> -->
|
|
|
+ </div>
|
|
|
+ <div class="demo-drawer__footer" style="text-align: center;padding:20px 0;" >
|
|
|
+ <el-button @click="addComplaint(jsInfos.id)">添加评论</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="demo-drawer__footer" style="text-align: center;padding:20px 0;" v-if="auditShow">
|
|
|
+ <el-button @click="auditJs(jsInfos.id)">审核</el-button>
|
|
|
+ <el-button type="primary" @click="returnJs(jsInfos.id)">退回</el-button>
|
|
|
+ </div>
|
|
|
+ </el-drawer>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <script>
|
|
|
+ import { listJs, getJs, delJs, addJs, updateJs,auditJs,repulseJs } from "@/api/system/js";
|
|
|
+ import { upload } from "@/api/public";
|
|
|
+import Details from "../details/details.vue";
|
|
|
+ export default {
|
|
|
+ name: "Js",
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ isDisabled:false,
|
|
|
+ auditShow:false,
|
|
|
+ drawer: false,
|
|
|
+ dialogVisible:false,
|
|
|
+ // 遮罩层
|
|
|
+ loading: true,
|
|
|
+ // 选中数组
|
|
|
+ ids: [],
|
|
|
+ // 非单个禁用
|
|
|
+ single: true,
|
|
|
+ // 非多个禁用
|
|
|
+ multiple: true,
|
|
|
+ // 显示搜索条件
|
|
|
+ showSearch: true,
|
|
|
+ // 总条数
|
|
|
+ total: 0,
|
|
|
+ // 技师表格数据
|
|
|
+ jsList: [],
|
|
|
+ // 弹出层标题
|
|
|
+ title: "",
|
|
|
+ // 是否显示弹出层
|
|
|
+ open: false,
|
|
|
+ // 查询参数
|
|
|
+ queryParams: {
|
|
|
+ current: 1,
|
|
|
+ size: 10,
|
|
|
+ cBhList: null,
|
|
|
+ cImgList: null,
|
|
|
+ cSfzImg: null,
|
|
|
+ nSex: null,
|
|
|
+ cNickName: null,
|
|
|
+ cPortrait: null,
|
|
|
+ cName: null,
|
|
|
+ cPhone: null,
|
|
|
+ cAddress: null,
|
|
|
+ cJianjie: null,
|
|
|
+ nStar: null,
|
|
|
+ nBili: null,
|
|
|
+ nNum: null,
|
|
|
+ nStatus: null,
|
|
|
+ nStatus2: null,
|
|
|
+ nTong: null,
|
|
|
+ pageType:1,
|
|
|
+ cTime: null,
|
|
|
+ nB1: null,
|
|
|
+ nB2: null,
|
|
|
+ nB3: null,
|
|
|
+ dtCreateTime: null
|
|
|
+ },
|
|
|
+ // 表单参数
|
|
|
+ form: {},
|
|
|
+ // 表单校验
|
|
|
+ rules: {
|
|
|
+ },
|
|
|
+ imgsList:[],
|
|
|
+ imagesUrl:'',
|
|
|
+ imgList:[],
|
|
|
+ updataImg1:[],
|
|
|
+ updataImg11:[],
|
|
|
+ imgList2:[],
|
|
|
+ updataImg2:[],
|
|
|
+ updataImg22:[],
|
|
|
+ auditStatus:[
|
|
|
+ {value:0,label:'待审核'},
|
|
|
+ {value:1,label:'已通过'},
|
|
|
+ {value:2,label:'已退回'},
|
|
|
+ ],
|
|
|
+ serviceState:[
|
|
|
+ {value:0,label:'可服务'},
|
|
|
+ {value:1,label:'服务中'},
|
|
|
+ {value:2,label:'不可服务'},
|
|
|
+ ],
|
|
|
+ sex:[
|
|
|
+ {value:0,label:'女'},
|
|
|
+ {value:1,label:'男'},
|
|
|
+ ],
|
|
|
+ jsInfos:'',
|
|
|
+ ifTong:0,
|
|
|
+ };
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ this.getList();
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ auditJs(ids){
|
|
|
+ if(this.ifTong == 0){
|
|
|
+ var data = {
|
|
|
+ id:ids,
|
|
|
+ }
|
|
|
+ auditJs(data).then(response => {
|
|
|
+ this.$modal.msgSuccess("审核通过");
|
|
|
+ this.drawer = false;
|
|
|
+ this.getList();
|
|
|
+ });
|
|
|
+ }else{
|
|
|
+ this.$modal.msgSuccess("该技师已操作");
|
|
|
+ }
|
|
|
+
|
|
|
+ },
|
|
|
+ returnJs(ids){
|
|
|
+ this.$prompt('请输入退回原因', '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ }).then(({ value }) => {
|
|
|
+ if(this.ifTong == 0){
|
|
|
+ var data = {
|
|
|
+ id:ids,
|
|
|
+ reasonRefusal:value
|
|
|
+ }
|
|
|
+ repulseJs(data).then(response => {
|
|
|
+ this.$modal.msgSuccess("已退回");
|
|
|
+ this.drawer = false;
|
|
|
+ this.getList();
|
|
|
+ });
|
|
|
+ }else{
|
|
|
+ this.$modal.msgSuccess("该技师已操作");
|
|
|
+ }
|
|
|
+ this.$message({
|
|
|
+ type: 'success',
|
|
|
+ });
|
|
|
+ }).catch(() => {
|
|
|
+ this.$message({
|
|
|
+ type: 'info',
|
|
|
+ message: '取消输入'
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ },
|
|
|
+ handleDetail(row){
|
|
|
+ this.$router.push({
|
|
|
+ path:'./details',
|
|
|
+ query:{
|
|
|
+ id:row.id
|
|
|
+ }
|
|
|
+ })
|
|
|
+ // this.drawer = true
|
|
|
+ // this.jsInfos = []
|
|
|
+ // const cOpenId = {
|
|
|
+ // id :row.id || this.ids
|
|
|
+ // }
|
|
|
+ // if(row.nTong === 1 || row.nTong === 2){
|
|
|
+ // this.auditShow = false;
|
|
|
+ // }else{
|
|
|
+ // this.auditShow = true;
|
|
|
+ // }
|
|
|
+
|
|
|
+ // // this.imgUrl1 = this.form.cImgList
|
|
|
+ // getJs(cOpenId).then(response => {
|
|
|
+ // console.log(response);
|
|
|
+ // var imgs = []
|
|
|
+ // var imgs2 = []
|
|
|
+ // response.data.cPortrait = process.env.VUE_APP_BASE_API + response.data.cPortrait;
|
|
|
+ // response.data.cImgList.forEach(element => {
|
|
|
+ // element = process.env.VUE_APP_BASE_API + element
|
|
|
+ // imgs.push(element)
|
|
|
+ // });
|
|
|
+ // if(response.data.cSfzImg){
|
|
|
+ // response.data.cSfzImg.forEach(element => {
|
|
|
+ // element = process.env.VUE_APP_BASE_API + element
|
|
|
+ // imgs2.push(element)
|
|
|
+ // });
|
|
|
+ // }
|
|
|
+ // console.log(response.data,"cAddress")
|
|
|
+
|
|
|
+ // this.jsInfos = response.data;
|
|
|
+ // this.jsInfos.cImgList = imgs
|
|
|
+ // this.jsInfos.cSfzImg = imgs2
|
|
|
+ // // this.jsInfos.cAddress = JSON.parse(response.data.cAddress).address + '('+JSON.parse(response.data.cAddress).name +')'
|
|
|
+ // this.jsInfos.address = response.data.address
|
|
|
+ // this.jsInfos.name = response.data.name
|
|
|
+ // this.jsInfos.atlasAdd = response.data.atlasAdd
|
|
|
+ // this.ifTong = this.jsInfos.nTong
|
|
|
+ // // console.log(this.jsInfos,"rrrrrrrrrrrrrrrrrrr")
|
|
|
+ // });
|
|
|
+
|
|
|
+ },
|
|
|
+ removeImgs(index){
|
|
|
+ this.updataImg1.splice(index, 1);
|
|
|
+ this.updataImg11.splice(index, 1)
|
|
|
+ },
|
|
|
+ removesfzImgs(index){
|
|
|
+ this.updataImg2.splice(index, 1);
|
|
|
+ this.updataImg22.splice(index, 1)
|
|
|
+ },
|
|
|
+ // 生活照图片
|
|
|
+ handleImagesSuccess(file) {
|
|
|
+ const formData = new FormData()
|
|
|
+ formData.append('file',file.file)
|
|
|
+ upload(formData).then(response => {
|
|
|
+ this.imgList.push(response.fileName);
|
|
|
+ this.updataImg1.push(process.env.VUE_APP_BASE_API+response.fileName)
|
|
|
+ this.updataImg11.push(response.fileName)
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ beforeImagesUpload(file) {
|
|
|
+ if (file.type.indexOf("image/") == -1) {
|
|
|
+ proxy.$modal.msgError("文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true
|
|
|
+ },
|
|
|
+ // 身份证图片
|
|
|
+ handlesfzSuccess(file) {
|
|
|
+ const formData = new FormData()
|
|
|
+ formData.append('file',file.file)
|
|
|
+ upload(formData).then(response => {
|
|
|
+ this.imgList2.push(response.fileName);
|
|
|
+ this.updataImg2.push(process.env.VUE_APP_BASE_API+response.fileName)
|
|
|
+ this.updataImg22.push(response.fileName)
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ beforesfzImagesUpload(file) {
|
|
|
+ if (file.type.indexOf("image/") == -1) {
|
|
|
+ proxy.$modal.msgError("文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
+ // 头像上传
|
|
|
+ handleAvatarSuccess(file) {
|
|
|
+ // console.log(file,"file")
|
|
|
+ const formData = new FormData()
|
|
|
+ formData.append('file',file.file)
|
|
|
+ upload(formData).then(response => {
|
|
|
+ this.queryParams.cPortrait = response.fileName
|
|
|
+ this.form.cPortrait = process.env.VUE_APP_BASE_API + response.fileName
|
|
|
+ console.log(response,"图片上传成功!")
|
|
|
+ })
|
|
|
+ },
|
|
|
+ beforeAvatarUpload(file) {
|
|
|
+ if (file.type.indexOf("image/") == -1) {
|
|
|
+ this.$modal.msgError("文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。");
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handleSizeChange(val){
|
|
|
+ // console.log(val,"handleSizeChange")
|
|
|
+ this.queryParams.size = val
|
|
|
+ this.getList()
|
|
|
+ },
|
|
|
+ handleCurrentChange(val){
|
|
|
+ this.queryParams.current = val
|
|
|
+ this.getList()
|
|
|
+ // console.log(val,"val")
|
|
|
+ },
|
|
|
+ // 查看身份证图片
|
|
|
+ lookImg(row){
|
|
|
+ this.imgsList = []
|
|
|
+ // this.imgsList = row
|
|
|
+ this.dialogVisible = true
|
|
|
+ row.forEach(element => {
|
|
|
+ element = process.env.VUE_APP_BASE_API + element
|
|
|
+ this.imgsList.push(element)
|
|
|
+ });
|
|
|
+ console.log(this.imgsList,"this.imgsList")
|
|
|
+ },
|
|
|
+ /** 查询技师列表 */
|
|
|
+ getList() {
|
|
|
+ this.loading = true;
|
|
|
+ listJs(this.queryParams).then(response => {
|
|
|
+ var cimg = []
|
|
|
+ response.records.forEach(element => {
|
|
|
+ element.cPortrait = process.env.VUE_APP_BASE_API + element.cPortrait
|
|
|
+ element.cImgList.forEach(ele => {
|
|
|
+ ele = process.env.VUE_APP_BASE_API + ele
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ this.jsList = response.records;
|
|
|
+
|
|
|
+ this.total = response.total;
|
|
|
+ this.loading = false;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 取消按钮
|
|
|
+ cancel() {
|
|
|
+ this.imgList =[]
|
|
|
+ this.open = false;
|
|
|
+ this.reset();
|
|
|
+ },
|
|
|
+ // 表单重置
|
|
|
+ reset() {
|
|
|
+ this.queryParams = {
|
|
|
+ cOpenId: null,
|
|
|
+ cBhList: null,
|
|
|
+ cImgList: null,
|
|
|
+ cSfzImg: null,
|
|
|
+ nSex: null,
|
|
|
+ cNickName: null,
|
|
|
+ cPortrait: null,
|
|
|
+ cName: null,
|
|
|
+ cPhone: null,
|
|
|
+ cAddress: null,
|
|
|
+ cJianjie: null,
|
|
|
+ nStar: null,
|
|
|
+ nBili: null,
|
|
|
+ nNum: null,
|
|
|
+ nStatus: null,
|
|
|
+ nStatus2: null,
|
|
|
+ nTong: null,
|
|
|
+ cTime: null,
|
|
|
+ nB1: null,
|
|
|
+ nB2: null,
|
|
|
+ nB3: null,
|
|
|
+ dtCreateTime: null
|
|
|
+ };
|
|
|
+ // this.resetForm("form");
|
|
|
+ },
|
|
|
+ /** 搜索按钮操作 */
|
|
|
+ handleQuery() {
|
|
|
+ this.queryParams.pageNum = 1;
|
|
|
+ this.getList();
|
|
|
+ },
|
|
|
+ /** 重置按钮操作 */
|
|
|
+ resetQuery() {
|
|
|
+ this.resetForm("queryForm");
|
|
|
+ // this.reset()
|
|
|
+ this.handleQuery();
|
|
|
+ },
|
|
|
+ // 多选框选中数据
|
|
|
+ handleSelectionChange(selection) {
|
|
|
+ this.ids = selection.map(item => item.cOpenId)
|
|
|
+ this.single = selection.length!==1
|
|
|
+ this.multiple = !selection.length
|
|
|
+ },
|
|
|
+ /** 新增按钮操作 */
|
|
|
+ handleAdd() {
|
|
|
+ this.reset();
|
|
|
+ this.open = true;
|
|
|
+ this.title = "添加技师";
|
|
|
+ },
|
|
|
+ /** 修改按钮操作 */
|
|
|
+ handleUpdate(row) {
|
|
|
+ this.reset();
|
|
|
+ const cOpenId = {
|
|
|
+ id :row.id || this.ids
|
|
|
+ }
|
|
|
+ this.open = true;
|
|
|
+ this.title = "修改技师";
|
|
|
+ // this.imgUrl1 = this.form.cImgList
|
|
|
+ getJs(cOpenId).then(response => {
|
|
|
+ var imgs = []
|
|
|
+ var imgs2 = []
|
|
|
+ response.data.cPortrait = process.env.VUE_APP_BASE_API + response.data.cPortrait;
|
|
|
+ response.data.cImgList.forEach(element => {
|
|
|
+ element = process.env.VUE_APP_BASE_API + element
|
|
|
+ imgs.push(element)
|
|
|
+ });
|
|
|
+ if(response.data.cSfzImg){
|
|
|
+ response.data.cSfzImg.forEach(element => {
|
|
|
+ element = process.env.VUE_APP_BASE_API + element
|
|
|
+ imgs2.push(element)
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ this.form = response.data;
|
|
|
+ this.updataImg1 = imgs
|
|
|
+ this.updataImg11 = response.data.cImgList
|
|
|
+
|
|
|
+ this.updataImg2 = imgs2
|
|
|
+ this.updataImg22 = response.data.cSfzImg
|
|
|
+ });
|
|
|
+ },
|
|
|
+ /** 提交按钮 */
|
|
|
+ submitForm() {
|
|
|
+
|
|
|
+ this.$refs["form"].validate(valid => {
|
|
|
+ if (valid) {
|
|
|
+ if (this.form.cOpenId != null) {
|
|
|
+ this.form.cPortrait = this.queryParams.cPortrait
|
|
|
+ this.form.cImgList = this.updataImg11
|
|
|
+ this.form.cSfzImg = this.updataImg22
|
|
|
+ console.log(this.form);
|
|
|
+ if(this.form.cName == ''){
|
|
|
+ this.$message.error('技师姓名不能为空');
|
|
|
+ return
|
|
|
+ }else if(this.form.cNickName == ''){
|
|
|
+ this.$message.error('技师昵称不能为空');
|
|
|
+ return
|
|
|
+ }else if(this.form.cJianjie == ''){
|
|
|
+ this.$message.error('技师简介不能为空');
|
|
|
+ return
|
|
|
+ }else if(this.form.nBili == ''){
|
|
|
+ this.$message.error('技师佣金比例不能为空');
|
|
|
+ return
|
|
|
+ }
|
|
|
+ updateJs(this.form).then(response => {
|
|
|
+ console.log('1111111');
|
|
|
+ this.$modal.msgSuccess("修改成功");
|
|
|
+ this.open = false;
|
|
|
+ this.imgList = []
|
|
|
+ this.imgList2 = []
|
|
|
+ this.getList();
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ addJs(this.form).then(response => {
|
|
|
+ this.$modal.msgSuccess("新增成功");
|
|
|
+ this.open = false;
|
|
|
+ this.getList();
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ /** 删除按钮操作 */
|
|
|
+ handleDelete(row) {
|
|
|
+ const cOpenIds = {
|
|
|
+ id : row.id || this.ids
|
|
|
+ };
|
|
|
+ this.$modal.confirm('是否确认删除"' + row.cName + '"吗?').then(function() {
|
|
|
+ return delJs(cOpenIds);
|
|
|
+ }).then(() => {
|
|
|
+ this.getList();
|
|
|
+ this.$modal.msgSuccess("删除成功");
|
|
|
+ }).catch(() => {});
|
|
|
+ },
|
|
|
+ }
|
|
|
+ };
|
|
|
+ </script>
|
|
|
+<style lang="scss" scoped>
|
|
|
+
|
|
|
+::v-deep .el-dialog{
|
|
|
+ height: 90% !important;
|
|
|
+ overflow-y: auto;
|
|
|
+ border-radius: 10px;
|
|
|
+}
|
|
|
+
|
|
|
+.jsInfo{
|
|
|
+ padding:0 15px;
|
|
|
+ .js_box{
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ // justify-content: space-around;
|
|
|
+ .js_name{
|
|
|
+ width: 100%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .js_head{
|
|
|
+ // text-align: center;
|
|
|
+ img{
|
|
|
+ width: 100px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .js_name{
|
|
|
+ width: 100%;
|
|
|
+ min-height: 40px;
|
|
|
+ line-height: 40px;
|
|
|
+ color: #8c939d;
|
|
|
+ font-size: 14px;
|
|
|
+ width: 50%;
|
|
|
+ b{
|
|
|
+ display: inline-block;
|
|
|
+ width: 86px;
|
|
|
+ text-align: right;
|
|
|
+ }
|
|
|
+ span{
|
|
|
+ color: #333;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .js_imgs{
|
|
|
+ height: auto;
|
|
|
+ span{
|
|
|
+ display: inline-flex;
|
|
|
+ justify-content: center;
|
|
|
+ margin-right: 20px;
|
|
|
+ height: 100px;
|
|
|
+ border: 1px solid #ccc;
|
|
|
+ }
|
|
|
+ img{
|
|
|
+ width: 100px;
|
|
|
+ height: auto;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+.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: 100px;
|
|
|
+ height: 100px;
|
|
|
+ line-height: 100px;
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
+ .avatar {
|
|
|
+ width: 100px;
|
|
|
+ height: 100px;
|
|
|
+ display: block;
|
|
|
+ }
|
|
|
+ .el-pagination{
|
|
|
+ float: right;
|
|
|
+ padding: 30px 0;
|
|
|
+ }
|
|
|
+ .allbox{
|
|
|
+ /* display: flex; */
|
|
|
+ }
|
|
|
+ .images_box{
|
|
|
+ width: 100px;
|
|
|
+ height: 100px;
|
|
|
+ float: left;
|
|
|
+ }
|
|
|
+ .imgslist .imgs{
|
|
|
+ float: left;
|
|
|
+ margin-right: 10px;
|
|
|
+ position: relative;
|
|
|
+ width: 100px;
|
|
|
+ height: 100px;
|
|
|
+ margin-bottom: 10px;
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ .imgslist .imgs:hover:before{
|
|
|
+ content:'';
|
|
|
+ position: absolute;
|
|
|
+ top:0;
|
|
|
+ left: 0;
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ background: rgba(0,0,0,0.5);
|
|
|
+ color: #fff;
|
|
|
+
|
|
|
+ }
|
|
|
+ .imgslist .imgs .ifnone{
|
|
|
+ position: absolute;
|
|
|
+ top:0;
|
|
|
+ left: 0;
|
|
|
+ color: #fff;
|
|
|
+ display: none;
|
|
|
+ width: 100%;
|
|
|
+ text-align: center;
|
|
|
+ line-height: 100px;
|
|
|
+ }
|
|
|
+ .imgslist .imgs:hover .ifnone{
|
|
|
+ display: block;
|
|
|
+ }
|
|
|
+ .images_box{
|
|
|
+ float: left;
|
|
|
+ }
|
|
|
+ .imgslist img{
|
|
|
+ width: 100px;
|
|
|
+ height: 100px;
|
|
|
+ }
|
|
|
+ .el-carousel__item .imgbox{
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ height: 300px;
|
|
|
+ }
|
|
|
+</style>
|