baijunde преди 2 години
родител
ревизия
911db52a8d

+ 1 - 1
package.json

@@ -40,7 +40,7 @@
     "axios": "0.24.0",
     "clipboard": "2.0.8",
     "core-js": "3.25.3",
-    "echarts": "5.4.0",
+    "echarts": "^5.4.0",
     "element-ui": "2.15.14",
     "file-saver": "2.0.5",
     "fuse.js": "6.4.3",

+ 4 - 3
src/api/system/comment.js

@@ -36,9 +36,10 @@ export function updateComment(data) {
 }
 
 // 删除评论
-export function delComment(cId) {
+export function delComment(data) {
   return request({
-    url: '/system/comment/' + cId,
-    method: 'delete'
+    url: '/api/comment/v1/delete',
+    method: 'post',
+    data: data
   })
 }

+ 9 - 0
src/api/system/js.js

@@ -104,4 +104,13 @@ export function getDept(data) {
     method: 'get',
     data:data
   })
+}
+
+// 技师数据
+export function getJsData(data) {
+  return request({
+    url: '/tJsDay/selectAll',
+    method: 'get',
+    data:data
+  })
 }

+ 27 - 0
src/api/system/order.js

@@ -44,3 +44,30 @@ export function delOrder(data) {
     data: data
   })
 }
+
+// 导出
+export function exportOrder(data) {
+  return request({
+    url: '/api/order/v1/wx/export',
+    method: 'get',
+    data: data
+  })
+}
+
+// 转单
+export function transferOrder(data) {
+  return request({
+    url: '/api/order/v1/wx/transferOrder',
+    method: 'post',
+    data: data
+  })
+}
+
+// 技师列表
+export function getjsList(data) {
+  return request({
+    url: '/api/js/v1/wx/select',
+    method: 'get',
+    params: data
+  })
+}

+ 9 - 0
src/api/system/wxuser.js

@@ -9,6 +9,15 @@ export function listUser(query) {
   })
 }
 
+// 查询微信用户评论详情
+export function tCommentUser(query) {
+  return request({
+    url: '/tCommentUser/selectAll',
+    method: 'get',
+    params: query
+  })
+}
+
 // 查询微信用户详细
 export function getUser(id) {
   return request({

+ 21 - 0
src/router/index.js

@@ -158,6 +158,12 @@ export const constantRoutes = [
         component: () => import('@/views/technician/check/check'),
         name: 'check',
         meta: { title: '技师审核' }
+      },
+      {
+        path: '/technicianData/technicianData',
+        component: () => import('@/views/technician/technicianData/technicianData'),
+        name: 'technicianData',
+        meta: { title: '技师数据' }
       }
     ]
   },
@@ -205,6 +211,21 @@ export const constantRoutes = [
         meta: { title: '评论' }
       }
     ]
+  },
+   // 车费
+   {
+    path: '/fare',
+    component: Layout,
+    hidden: true,
+    redirect: 'noredirect',
+    children: [
+      {
+        path: '',
+        component: () => import('@/views/fare/index'),
+        name: 'fare',
+        meta: { title: '车费管理' }
+      }
+    ]
   },
    // 招商合作
    {

+ 394 - 301
src/views/WxUser/index.vue

@@ -1,23 +1,30 @@
 <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="cNickName">
-          <el-input
-            v-model="queryParams.cNickName"
-            placeholder="请输入昵称"
-            clearable
-            @keyup.enter.native="handleQuery"
-          />
-        </el-form-item>
-        <el-form-item label="电话号码" prop="cPhone">
-          <el-input
-            v-model="queryParams.cPhone"
-            placeholder="请输入电话号码"
-            clearable
-            @keyup.enter.native="handleQuery"
-          />
-        </el-form-item>
-        <!-- <el-form-item label="消费金额" prop="dMoney">
+  <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="cNickName">
+        <el-input
+          v-model="queryParams.cNickName"
+          placeholder="请输入昵称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="电话号码" prop="cPhone">
+        <el-input
+          v-model="queryParams.cPhone"
+          placeholder="请输入电话号码"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <!-- <el-form-item label="消费金额" prop="dMoney">
           <el-input
             v-model="queryParams.dMoney"
             placeholder="请输入消费金额"
@@ -33,13 +40,21 @@
             @keyup.enter.native="handleQuery"
           />
         </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-row :gutter="10" class="mb8">
+      <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-row :gutter="10" class="mb8">
         <el-col :span="1.5">
           <el-button
             type="primary"
@@ -85,298 +100,376 @@
         <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
       </el-row>
    -->
-      <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
-        <el-table-column type="selection" width="55" align="center" />
-        <!-- <el-table-column label="${comment}" align="center" prop="id" /> -->
-        <el-table-column label="微信小程序openId" align="center" prop="cOpenid" />
-        <!-- <el-table-column label="微信小程序登录会话密钥" align="center" prop="cSessionKey" /> -->
-        <!-- <el-table-column label="头像" align="center" prop="cIcon" /> -->
-        <el-table-column label="头像" align="center" prop="cIcon" width="100">
-          <template slot-scope="scope">
-            <image-preview :src="scope.row.cIcon" :width="50" :height="50"/>
-          </template>
-        </el-table-column>
-        <el-table-column label="电话号码" align="center" prop="cPhone" />
-        <!-- <el-table-column label="微信小程序unionid" align="center" prop="cUnionid" /> -->
-        <el-table-column label="昵称" align="center" prop="cNickName" />
-        <el-table-column label="消费金额" align="center" prop="dMoney" />
-        <el-table-column label="下单次数" align="center" prop="nNum" />
-        <!-- <el-table-column label="地址信息" align="center" prop="cAddressList" /> -->
-        <el-table-column label="当前余额" align="center" prop="dBalance" />
-        <el-table-column label="总收益" align="center" prop="dAllMoney" />
-        <!-- <el-table-column label="分销码" align="center" prop="cScanImg" /> -->
-        <!-- <el-table-column label="推荐者信息" align="center" prop="cUpUser" /> -->
-        <!-- <el-table-column label="默认地址id" align="center" prop="cMrAddressId" /> -->
-        <!-- <el-table-column label="是否删除0否1是" align="center" prop="isDelete" /> -->
-        <!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-          <template slot-scope="scope">
-            <el-button
-              size="mini"
-              type="text"
-              icon="el-icon-edit"
-              @click="handleUpdate(scope.row)"
-              v-hasPermi="['system:user:edit']"
-            >修改</el-button>
-            <el-button
+    <el-table
+      v-loading="loading"
+      :data="userList"
+      @selection-change="handleSelectionChange"
+    >
+      <!-- <el-table-column type="selection" width="55" align="center" /> -->
+      <!-- <el-table-column label="${comment}" align="center" prop="id" /> -->
+      <el-table-column label="openId" align="center" prop="cOpenid" />
+      <!-- <el-table-column label="微信小程序登录会话密钥" align="center" prop="cSessionKey" /> -->
+      <!-- <el-table-column label="头像" align="center" prop="cIcon" /> -->
+      <el-table-column label="头像" align="center" prop="cIcon" width="100">
+        <template slot-scope="scope">
+          <image-preview :src="scope.row.cIcon" :width="50" :height="50" />
+        </template>
+      </el-table-column>
+      <el-table-column label="电话号码" align="center" prop="cPhone" />
+      <!-- <el-table-column label="微信小程序unionid" align="center" prop="cUnionid" /> -->
+      <el-table-column label="昵称" align="center" prop="cNickName" />
+      <el-table-column label="消费金额" align="center" prop="dMoney" />
+      <el-table-column label="下单次数" align="center" prop="nNum" />
+      <!-- <el-table-column label="地址信息" align="center" prop="cAddressList" /> -->
+      <el-table-column label="当前余额" align="center" prop="dBalance" />
+      <el-table-column label="总收益" align="center" prop="dAllMoney" />
+      <!-- <el-table-column label="分销码" align="center" prop="cScanImg" /> -->
+      <!-- <el-table-column label="推荐者信息" align="center" prop="cUpUser" /> -->
+      <!-- <el-table-column label="默认地址id" align="center" prop="cMrAddressId" /> -->
+      <!-- <el-table-column label="是否删除0否1是" align="center" prop="isDelete" /> -->
+      <el-table-column
+        label="操作"
+        align="center"
+        class-name="small-padding fixed-width"
+      >
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-s-order"
+            @click="commentDetail(scope.row)"
+            v-hasPermi="['system:user:edit']"
+            >查看评论</el-button
+          >
+          <!--  <el-button
               size="mini"
               type="text"
               icon="el-icon-delete"
               @click="handleDelete(scope.row)"
               v-hasPermi="['system:user:remove']"
-            >删除</el-button>
-          </template>
-        </el-table-column> -->
+            >删除</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="评论详情" :visible.sync="commentOpen" width="1000px" append-to-body>
+      <el-table ref="commentForm" :data="commentForm">
+        <el-table-column prop="createTime" label="评论日期" align="center"> </el-table-column>
+        <el-table-column prop="name" label="技师" align="center"></el-table-column>
+        <el-table-column prop="orderNo" label="订单号" align="center"> </el-table-column>
+        <el-table-column prop="text" label="内容" align="center"> </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="500px" append-to-body>
-        <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-          <el-form-item label="微信小程序openId" prop="cOpenid">
-            <el-input v-model="form.cOpenid" placeholder="请输入微信小程序openId" />
-          </el-form-item>
-          <el-form-item label="微信小程序登录会话密钥" prop="cSessionKey">
-            <el-input v-model="form.cSessionKey" type="textarea" placeholder="请输入内容" />
-          </el-form-item>
-          <el-form-item label="头像地址" prop="cIcon">
-            <el-input v-model="form.cIcon" type="textarea" placeholder="请输入内容" />
-          </el-form-item>
-          <el-form-item label="电话号码" prop="cPhone">
-            <el-input v-model="form.cPhone" placeholder="请输入电话号码" />
-          </el-form-item>
-          <el-form-item label="微信小程序unionid" prop="cUnionid">
-            <el-input v-model="form.cUnionid" placeholder="请输入微信小程序unionid" />
-          </el-form-item>
-          <el-form-item label="昵称" prop="cNickName">
-            <el-input v-model="form.cNickName" placeholder="请输入昵称" />
-          </el-form-item>
-          <el-form-item label="消费金额" prop="dMoney">
-            <el-input v-model="form.dMoney" 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="cAddressList">
-            <el-input v-model="form.cAddressList" type="textarea" placeholder="请输入内容" />
-          </el-form-item>
-          <el-form-item label="当前余额" prop="dBalance">
-            <el-input v-model="form.dBalance" placeholder="请输入当前余额" />
-          </el-form-item>
-          <el-form-item label="总收益" prop="dAllMoney">
-            <el-input v-model="form.dAllMoney" placeholder="请输入总收益" />
-          </el-form-item>
-          <el-form-item label="分销码" prop="cScanImg">
-            <el-input v-model="form.cScanImg" type="textarea" placeholder="请输入内容" />
-          </el-form-item>
-          <el-form-item label="推荐者信息" prop="cUpUser">
-            <el-input v-model="form.cUpUser" type="textarea" placeholder="请输入内容" />
-          </el-form-item>
-          <el-form-item label="默认地址id" prop="cMrAddressId">
-            <el-input v-model="form.cMrAddressId" placeholder="请输入默认地址id" />
-          </el-form-item>
-          <el-form-item label="是否删除0否1是" prop="isDelete">
-            <el-input v-model="form.isDelete" placeholder="请输入是否删除0否1是" />
-          </el-form-item>
-        </el-form>
-        <div slot="footer" class="dialog-footer">
-          <el-button type="primary" @click="submitForm">确 定</el-button>
-          <el-button @click="cancel">取 消</el-button>
-        </div>
-      </el-dialog>
-    </div>
-  </template>
+    </el-dialog>
+
+    <!-- 添加或修改微信用户对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="微信小程序openId" prop="cOpenid">
+          <el-input
+            v-model="form.cOpenid"
+            placeholder="请输入微信小程序openId"
+          />
+        </el-form-item>
+        <el-form-item label="微信小程序登录会话密钥" prop="cSessionKey">
+          <el-input
+            v-model="form.cSessionKey"
+            type="textarea"
+            placeholder="请输入内容"
+          />
+        </el-form-item>
+        <el-form-item label="头像地址" prop="cIcon">
+          <el-input
+            v-model="form.cIcon"
+            type="textarea"
+            placeholder="请输入内容"
+          />
+        </el-form-item>
+        <el-form-item label="电话号码" prop="cPhone">
+          <el-input v-model="form.cPhone" placeholder="请输入电话号码" />
+        </el-form-item>
+        <el-form-item label="微信小程序unionid" prop="cUnionid">
+          <el-input
+            v-model="form.cUnionid"
+            placeholder="请输入微信小程序unionid"
+          />
+        </el-form-item>
+        <el-form-item label="昵称" prop="cNickName">
+          <el-input v-model="form.cNickName" placeholder="请输入昵称" />
+        </el-form-item>
+        <el-form-item label="消费金额" prop="dMoney">
+          <el-input v-model="form.dMoney" 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="cAddressList">
+          <el-input
+            v-model="form.cAddressList"
+            type="textarea"
+            placeholder="请输入内容"
+          />
+        </el-form-item>
+        <el-form-item label="当前余额" prop="dBalance">
+          <el-input v-model="form.dBalance" placeholder="请输入当前余额" />
+        </el-form-item>
+        <el-form-item label="总收益" prop="dAllMoney">
+          <el-input v-model="form.dAllMoney" placeholder="请输入总收益" />
+        </el-form-item>
+        <el-form-item label="分销码" prop="cScanImg">
+          <el-input
+            v-model="form.cScanImg"
+            type="textarea"
+            placeholder="请输入内容"
+          />
+        </el-form-item>
+        <el-form-item label="推荐者信息" prop="cUpUser">
+          <el-input
+            v-model="form.cUpUser"
+            type="textarea"
+            placeholder="请输入内容"
+          />
+        </el-form-item>
+        <el-form-item label="默认地址id" prop="cMrAddressId">
+          <el-input
+            v-model="form.cMrAddressId"
+            placeholder="请输入默认地址id"
+          />
+        </el-form-item>
+        <el-form-item label="是否删除0否1是" prop="isDelete">
+          <el-input
+            v-model="form.isDelete"
+            placeholder="请输入是否删除0否1是"
+          />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
   
   <script>
-  import { listUser, getUser, delUser, addUser, updateUser } from "@/api/system/wxuser";
-  
-  export default {
-    name: "User",
-    data() {
-      return {
-        // 遮罩层
-        loading: true,
-        // 选中数组
-        ids: [],
-        // 非单个禁用
-        single: true,
-        // 非多个禁用
-        multiple: true,
-        // 显示搜索条件
-        showSearch: true,
-        // 总条数
-        total: 0,
-        // 微信用户表格数据
-        userList: [],
-        // 弹出层标题
-        title: "",
-        // 是否显示弹出层
-        open: false,
-        // 查询参数
-        queryParams: {
-          current: 1,
-          size: 10,
-          cOpenid: null,
-          cSessionKey: null,
-          cIcon: null,
-          cPhone: null,
-          cUnionid: null,
-          cNickName: null,
-          dMoney: null,
-          nNum: null,
-          cAddressList: null,
-          dBalance: null,
-          dAllMoney: null,
-          cScanImg: null,
-          cUpUser: null,
-          cMrAddressId: null,
-          isDelete: null
-        },
-        // 表单参数
-        form: {},
-        // 表单校验
-        rules: {
-          cOpenid: [
-            { required: true, message: "微信小程序openId不能为空", trigger: "blur" }
-          ],
-        }
+import {
+  listUser,
+  getUser,
+  delUser,
+  addUser,
+  updateUser,
+  tCommentUser,
+} from "@/api/system/wxuser";
+
+export default {
+  name: "User",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 微信用户表格数据
+      userList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      
+      // 查询参数
+      queryParams: {
+        current: 1,
+        size: 10,
+        cOpenid: null,
+        cSessionKey: null,
+        cIcon: null,
+        cPhone: null,
+        cUnionid: null,
+        cNickName: null,
+        dMoney: null,
+        nNum: null,
+        cAddressList: null,
+        dBalance: null,
+        dAllMoney: null,
+        cScanImg: null,
+        cUpUser: null,
+        cMrAddressId: null,
+        isDelete: null,
+      },
+      // 表单参数
+      form: {},
+      //评论详情
+      commentForm: [],
+      //是否显示评论详情
+      commentOpen: false,
+      // 表单校验
+      rules: {
+        cOpenid: [
+          {
+            required: true,
+            message: "微信小程序openId不能为空",
+            trigger: "blur",
+          },
+        ],
+      },
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    handleSizeChange(val) {
+      // console.log(val,"handleSizeChange")
+      this.queryParams.size = val;
+      this.getList();
+    },
+    handleCurrentChange(val) {
+      this.queryParams.current = val;
+      this.getList();
+      // console.log(val,"val")
+    },
+    /** 查询微信用户列表 */
+    getList() {
+      this.loading = true;
+      listUser(this.queryParams).then((response) => {
+        this.userList = response.data.records;
+        this.total = response.data.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        cOpenid: null,
+        cSessionKey: null,
+        cIcon: null,
+        cPhone: null,
+        cUnionid: null,
+        cNickName: null,
+        dMoney: null,
+        nNum: null,
+        cAddressList: null,
+        dBalance: null,
+        dAllMoney: null,
+        cScanImg: null,
+        cUpUser: null,
+        cMrAddressId: null,
+        createTime: null,
+        updateTime: null,
+        isDelete: null,
       };
+      this.resetForm("form");
     },
-    created() {
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
       this.getList();
     },
-    methods: {
-        handleSizeChange(val){
-            // console.log(val,"handleSizeChange")
-            this.queryParams.size = val
-            this.getList()
-        },
-        handleCurrentChange(val){
-            this.queryParams.current = val
-            this.getList()
-            // console.log(val,"val")
-        },
-      /** 查询微信用户列表 */
-      getList() {
-        this.loading = true;
-        listUser(this.queryParams).then(response => {
-          this.userList = response.data.records;
-          this.total = response.data.total;
-          this.loading = false;
-        });
-      },
-      // 取消按钮
-      cancel() {
-        this.open = false;
-        this.reset();
-      },
-      // 表单重置
-      reset() {
-        this.form = {
-          id: null,
-          cOpenid: null,
-          cSessionKey: null,
-          cIcon: null,
-          cPhone: null,
-          cUnionid: null,
-          cNickName: null,
-          dMoney: null,
-          nNum: null,
-          cAddressList: null,
-          dBalance: null,
-          dAllMoney: null,
-          cScanImg: null,
-          cUpUser: null,
-          cMrAddressId: null,
-          createTime: null,
-          updateTime: null,
-          isDelete: null
-        };
-        this.resetForm("form");
-      },
-      /** 搜索按钮操作 */
-      handleQuery() {
-        this.queryParams.pageNum = 1;
-        this.getList();
-      },
-      /** 重置按钮操作 */
-      resetQuery() {
-        this.resetForm("queryForm");
-        this.handleQuery();
-      },
-      // 多选框选中数据
-      handleSelectionChange(selection) {
-        this.ids = selection.map(item => item.id)
-        this.single = selection.length!==1
-        this.multiple = !selection.length
-      },
-      /** 新增按钮操作 */
-      handleAdd() {
-        this.reset();
-        this.open = true;
-        this.title = "添加微信用户";
-      },
-      /** 修改按钮操作 */
-      handleUpdate(row) {
-        this.reset();
-        const id = row.id || this.ids
-        getUser(id).then(response => {
-          this.form = response.data;
-          this.open = true;
-          this.title = "修改微信用户";
-        });
-      },
-      /** 提交按钮 */
-      submitForm() {
-        this.$refs["form"].validate(valid => {
-          if (valid) {
-            if (this.form.id != null) {
-              updateUser(this.form).then(response => {
-                this.$modal.msgSuccess("修改成功");
-                this.open = false;
-                this.getList();
-              });
-            } else {
-              addUser(this.form).then(response => {
-                this.$modal.msgSuccess("新增成功");
-                this.open = false;
-                this.getList();
-              });
-            }
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.id);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加微信用户";
+    },
+    /** 查看评论详情 */
+    commentDetail(row) {
+      this.reset();
+      let openId = {}
+       openId.openId = row.cOpenid;
+      tCommentUser(openId).then((response) => {
+        this.commentOpen = true;
+        if(response.data){
+          this.commentForm = response.data.records;
+        }else{
+          this.commentForm = []
+        }
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateUser(this.form).then((response) => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addUser(this.form).then((response) => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
           }
-        });
-      },
-      /** 删除按钮操作 */
-      handleDelete(row) {
-        const ids = row.id || this.ids;
-        this.$modal.confirm('是否确认删除微信用户编号为"' + ids + '"的数据项?').then(function() {
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal
+        .confirm('是否确认删除微信用户编号为"' + ids + '"的数据项?')
+        .then(function () {
           return delUser(ids);
-        }).then(() => {
+        })
+        .then(() => {
           this.getList();
           this.$modal.msgSuccess("删除成功");
-        }).catch(() => {});
-      },
-      /** 导出按钮操作 */
-      handleExport() {
-        this.download('system/user/export', {
-          ...this.queryParams
-        }, `user_${new Date().getTime()}.xlsx`)
-      }
-    }
-  };
-  </script>
+        })
+        .catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download(
+        "system/user/export",
+        {
+          ...this.queryParams,
+        },
+        `user_${new Date().getTime()}.xlsx`
+      );
+    },
+  },
+};
+</script>
 <style scoped>
-.el-pagination{
-    float: right;
-    padding: 30px 0;
+.el-pagination {
+  float: right;
+  padding: 30px 0;
 }
 </style>
   

+ 11 - 9
src/views/comment/index.vue

@@ -15,7 +15,7 @@
         </el-form-item>
       </el-form>
   
-      <!-- <el-row :gutter="10" class="mb8">
+      <el-row :gutter="10" class="mb8">
         <el-col :span="1.5">
           <el-button
             type="primary"
@@ -59,10 +59,10 @@
           >导出</el-button>
         </el-col>
         <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-      </el-row> -->
+      </el-row>
   
       <el-table v-loading="loading" :data="commentList" @selection-change="handleSelectionChange">
-        <el-table-column type="selection" width="55" align="center" />
+        <!-- <el-table-column type="selection" width="55" align="center" /> -->
         <!-- <el-table-column label="主键" align="center" prop="cId" />
         <el-table-column label="评论人头像" align="center" prop="cIcon" /> -->
         <el-table-column label="评论人昵称" align="center" prop="cNickName" />
@@ -76,15 +76,16 @@
           </template>
         </el-table-column>
         <el-table-column label="技师姓名" align="center" prop="name" />
-        <!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
           <template slot-scope="scope">
-            <el-button
+              <!-- <el-button
               size="mini"
               type="text"
               icon="el-icon-edit"
               @click="handleUpdate(scope.row)"
               v-hasPermi="['system:comment:edit']"
             >修改</el-button>
+            -->
             <el-button
               size="mini"
               type="text"
@@ -93,7 +94,7 @@
               v-hasPermi="['system:comment:remove']"
             >删除</el-button>
           </template>
-        </el-table-column> -->
+        </el-table-column> 
       </el-table>
       <el-pagination
         v-show="total>0"
@@ -289,9 +290,10 @@
       },
       /** 删除按钮操作 */
       handleDelete(row) {
-        const cIds = row.cId || this.ids;
-        this.$modal.confirm('是否确认删除评论编号为"' + cIds + '"的数据项?').then(function() {
-          return delComment(cIds);
+        let idList = []
+        idList.push(row.cId)
+        this.$modal.confirm('是否确认删除评论编号为"' + row.cId + '"的数据项?').then(function() {
+          return delComment(idList)
         }).then(() => {
           this.getList();
           this.$modal.msgSuccess("删除成功");

+ 13 - 0
src/views/fare/index.vue

@@ -0,0 +1,13 @@
+<template>
+  
+</template>
+
+<script>
+export default {
+
+}
+</script>
+
+<style>
+
+</style>

+ 281 - 49
src/views/order/index.vue

@@ -16,14 +16,38 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <!-- <el-form-item label="技师姓名" prop="cName">
+      <el-form-item label="用户手机" prop="cPhone">
         <el-input
-          v-model="queryParams.js.cName"
+          v-model="queryParams.cPhone"
+          placeholder="请输入用户手机"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="技师姓名" prop="jsName">
+        <el-input
+          v-model="queryParams.jsName"
           placeholder="请输入技师姓名"
           clearable
           @keyup.enter.native="handleQuery"
         />
-      </el-form-item> -->
+      </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="jsPhone">
+        <el-input
+          v-model="queryParams.jsPhone"
+          placeholder="请输入技师手机"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
       <el-form-item label="订单状态" prop="cName">
         <el-select
           v-model="queryParams.nStatus"
@@ -61,25 +85,60 @@
       </el-form-item>
     </el-form>
 
-    <!--<el-row :gutter="10" class="mb8">
-        <el-col :span="1.5">
+    <el-row :gutter="10" class="mb8">
+      <!-- <el-col :span="1.5">
           <el-button
             type="primary"
             plain
             icon="el-icon-plus"
             size="mini"
             @click="handleAdd"
+            v-hasPermi="['system:comment:add']"
           >新增</el-button>
         </el-col>
-         <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> 
-      </el-row>-->
+        <el-col :span="1.5">
+          <el-button
+            type="success"
+            plain
+            icon="el-icon-edit"
+            size="mini"
+            @click="handleUpdate"
+            v-hasPermi="['system:comment:edit']"
+          >修改</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button
+            type="danger"
+            plain
+            icon="el-icon-delete"
+            size="mini"
+            @click="handleDelete"
+            v-hasPermi="['system:comment:remove']"
+          >删除</el-button>
+        </el-col> -->
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['system:order:export']"
+          >导出</el-button
+        >
+      </el-col>
+      <right-toolbar
+        :showSearch.sync="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
+    </el-row>
 
     <el-table
       v-loading="loading"
       :data="orderList"
       @selection-change="handleSelectionChange"
     >
-      <el-table-column type="selection" width="55" align="center" />
+      <!-- <el-table-column type="selection" width="55" align="center" /> -->
       <el-table-column label="订单号" align="center" prop="orderNo" />
       <!-- <el-table-column label="技师id" align="center" prop="cJsId" />
         <el-table-column label="用户openid" align="center" prop="cOpenId" /> -->
@@ -88,8 +147,8 @@
       <!-- <el-table-column label="地址" align="center" prop="cAddress" /> -->
       <el-table-column label="用户姓名" align="center" prop="cName" />
       <el-table-column label="用户电话" align="center" prop="cPhone" />
-
       <el-table-column label="技师姓名" align="center" prop="js.cName" />
+      <el-table-column label="技师昵称" align="center" prop="js.cNickName" />
       <el-table-column label="技师电话" align="center" prop="js.cPhone" />
       <el-table-column label="订单状态" align="center" prop="statusName" />
       <!-- <el-table-column label="备注" align="center" prop="cNote" /> -->
@@ -100,7 +159,10 @@
         </el-table-column> -->
       <el-table-column label="时间" align="center" prop="dtCreateTime">
         <template slot-scope="scope">
-          <span>{{ scope.row.dtCreateTime.slice(0,10) }} {{ scope.row.dtCreateTime.slice(11,19) }}</span>
+          <span
+            >{{ scope.row.dtCreateTime.slice(0, 10) }}
+            {{ scope.row.dtCreateTime.slice(11, 19) }}</span
+          >
         </template>
       </el-table-column>
       <!-- <el-table-column label="推荐者id" align="center" prop="cTjOpenId" /> -->
@@ -151,54 +213,96 @@
     >
     </el-pagination>
 
-    <!-- 添加或修改认领对话框 -->
+    <!-- 订单详情 -->
     <el-dialog :title="title" :visible.sync="open" width="700px" append-to-body>
       <el-form
         ref="form"
         :inline="true"
         :model="form"
         label-width="90px"
-        disabled="false"
+        :disabled="isDisabled"
       >
         <el-form-item label="订单号" prop="orderNo">
           <el-input v-model="form.orderNo" placeholder="请输入技师id" />
         </el-form-item>
-        <el-form-item label="单时间" prop="dtCreateTime">
-          <el-input
-            v-model="form.dtCreateTime"
-            placeholder="请输入用户openid"
-          />
+        <el-form-item label="单时间" prop="dtCreateTime">
+          <el-input v-model="form.dtCreateTime" placeholder="" />
+        </el-form-item>
+        <el-form-item label="订单状态" prop="statusName">
+          <el-input v-model="form.statusName" placeholder="" />
         </el-form-item>
         <el-form-item label="用户姓名" prop="cName">
-          <el-input v-model="form.cName" placeholder="请输入姓名" />
+          <el-input v-model="form.cName" placeholder="请输入用户姓名" />
         </el-form-item>
         <el-form-item label="用户电话" prop="cPhone">
-          <el-input v-model="form.cPhone" placeholder="请输入电话" />
+          <el-input v-model="form.cPhone" placeholder="请输入用户电话" />
         </el-form-item>
-        <el-form-item label="技师姓名" >
-          <el-input v-model="form.js.cName" placeholder="请输入姓名" />
+        <el-form-item label="技师姓名">
+          <el-input v-model="form.js.cName" placeholder="请输入技师姓名" />
         </el-form-item>
-        <el-form-item label="技师电话" >
-          <el-input v-model="form.js.cPhone" placeholder="请输入电话" />
+        <el-form-item label="技师昵称">
+          <el-input v-model="form.js.cNickName" placeholder="请输入技师姓名" />
+        </el-form-item>
+        <el-form-item label="技师电话">
+          <el-input v-model="form.js.cPhone" placeholder="请输入技师电话" />
         </el-form-item>
         <el-form-item label="订单金额" prop="dTotalMoney">
           <el-input v-model="form.dTotalMoney" placeholder="请输入订单金额" />
         </el-form-item>
-        <el-form-item label="地址" prop="address">
+        <el-form-item label="服务地址" prop="address">
           <el-input
             type="textarea"
             v-model="form.address"
             placeholder="请输入地址"
           />
         </el-form-item>
-
         <el-form-item label="备注" prop="cNote">
           <el-input
             v-model="form.cNote"
             type="textarea"
-            placeholder="请输入内容"
+            placeholder="用户备注"
           />
         </el-form-item>
+        <el-form-item label="出发时间" prop="departTime" v-if="form.departTime">
+          <el-input v-model="form.departTime" placeholder="" />
+        </el-form-item>
+        <el-form-item label="出发位置" prop="depart" v-if="!depart == ''">
+          <el-input v-model="depart" placeholder="" style="width: 500px" />
+        </el-form-item>
+        <el-form-item label="到达时间" prop="reachTime" v-if="form.reachTime">
+          <el-input v-model="form.reachTime" placeholder="" />
+        </el-form-item>
+        <el-form-item label="到达位置" prop="arrival" v-if="!arrival == ''">
+          <el-input v-model="arrival" placeholder="" style="width: 500px" />
+        </el-form-item>
+        <el-form-item
+          label="到达照片"
+          prop="arrivalPhoto"
+          v-if="form.arrivalPhoto"
+        >
+          <template>
+            <image-preview :src="form.arrivalPhoto" :width="50" :height="50" />
+          </template>
+        </el-form-item>
+        <div>
+          <el-form-item
+            label="开始服务时间"
+            prop="startTime"
+            v-if="form.startTime"
+          >
+            <el-input v-model="form.startTime" placeholder="" />
+          </el-form-item>
+        </div>
+        <el-form-item label="完成时间" prop="endTime" v-if="form.endTime">
+          <el-input v-model="form.endTime" placeholder="" />
+        </el-form-item>
+        <el-form-item
+          label="提前完成原因"
+          prop="timeoutCause"
+          v-if="form.timeoutCause"
+        >
+          <el-input v-model="form.timeoutCause" placeholder="" />
+        </el-form-item>
         <!-- <el-form-item label="时间" prop="cTime">
             <el-input v-model="form.cTime" placeholder="请输入时间" />
           </el-form-item> -->
@@ -215,7 +319,7 @@
           </el-form-item>-->
         <el-form-item label="订单明细" prop="cGoods">
           <!-- <el-input v-model="form.cGoods" type="textarea" placeholder="请输入内容" /> -->
-          <div v-for="(item, index) in form.cGoods" :key="index">
+          <!-- <div v-for="(item, index) in form.cGoods" :key="index"> -->
             <div class="orderDetails">
               <el-table :data="form.cGoods" style="width: 100%">
                 <el-table-column prop="cTitle" label="标题"> </el-table-column>
@@ -240,16 +344,39 @@
                 </el-table-column>
               </el-table>
             </div>
-          </div>
+          <!-- </div> -->
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm" v-show="subShow"
           >确 定</el-button
         >
+        <el-button type="primary" @click="transferOrder" v-if="takeOrder == 0">转 单</el-button>
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
+    <el-dialog title="转单" :visible.sync="istransfer" style="height: auto;">
+      <el-form :model="transferOrderForm">
+        <el-form-item label="转单技师:">
+          <el-select
+            v-model="transferOrderForm.cJsId"
+            placeholder="请选择转单技师"
+          >
+            <el-option
+              v-for="item in jsList"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+          <el-button type="primary" @click="submitTransfer">确 定</el-button>
+          <el-button @click="istransfer = false">取 消</el-button>
+        </div>
+    </el-dialog>
   </div>
 </template>
   <script>
@@ -259,12 +386,18 @@ import {
   delOrder,
   addOrder,
   updateOrder,
+  exportOrder,
+  transferOrder,
+  getjsList,
 } from "@/api/system/order";
+import { number } from "echarts";
 
 export default {
   name: "Order",
   data() {
     return {
+      jsList: [],
+      isDisabled: true,
       orderStatus: [
         { value: 0, label: "待接单" },
         { value: 1, label: "已接单" },
@@ -312,25 +445,80 @@ export default {
         cTime: null,
         cTjOpenId: null,
         dtCreateTime: null,
+        jsName: null,
       },
       // 表单参数
       form: {
-        js:{
-          cName:'',
-          cPhone:'',
-          cNickName:''
-        }
+        js: {
+          cName: "",
+          cPhone: "",
+          cNickName: "",
+        },
       },
       // 表单校验
       rules: {},
       detalis: "",
       jsInfo: "",
+      locationData: null,
+      arrival: "",
+      depart: "",
+      istransfer: false,
+      transferOrderForm: {
+        cJsId: "",
+        cId: "",
+      },
+      takeOrder:0
     };
   },
   created() {
     this.getList();
   },
   methods: {
+    //转单
+    transferOrder() {
+      this.istransfer = true;
+      this.transferOrderForm.cId = this.form.cId
+    },
+    submitTransfer(){
+      transferOrder(this.transferOrderForm).then(res => {
+        if (res.code == 200) {
+          this.$message({
+            message: "转单成功",
+            type: "success",
+          });
+          this.istransfer = false;
+          this.getList();
+        } else {
+          this.$message({
+            message: res.msg,
+            type: "error",
+          });
+        }
+      })
+    },
+    getJsList(deptId) {
+      let data = {}
+      data.deptId = deptId
+      data.nStatus = 0
+      getjsList(data).then((res) => {
+        res.data.records.forEach((item) => {
+          this.jsList.push({
+            value: item.id,
+            label: item.cName,
+          });
+        });
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download(
+        "https://test.baoxianzhanggui.com/nightFragrance/api/order/v1/wx/export",
+        {
+          ...this.queryParams,
+        },
+        `order_${new Date().getTime()}.xlsx`
+      );
+    },
     /** 查询认领列表 */
     getList() {
       this.loading = true;
@@ -379,8 +567,7 @@ export default {
     },
     /** 搜索按钮操作 */
     handleQuery() {
-      this.queryParams.pageNum = 1;
-
+      this.queryParams.current = 1;
       this.getList();
     },
     /** 重置按钮操作 */
@@ -405,8 +592,7 @@ export default {
       this.reset();
       const cId = {
         cId: row.cId || this.ids,
-      };
-
+      }
       getOrder(cId).then((response) => {
         this.form = response.data;
         this.open = true;
@@ -414,8 +600,11 @@ export default {
       });
     },
     // 详情按钮操作
-    handleInfo(row) {
-      this.reset();
+    handleInfo(row) { 
+      this.takeOrder = row.nStatus
+      this.jsList = []
+      this.getJsList(row.deptId);
+      // this.reset();
       const cId = {
         cId: row.cId || this.ids,
       };
@@ -424,17 +613,37 @@ export default {
       this.title = "详情";
       listOrder(cId).then((response) => {
         this.form = response.data.records[0];
-        console.log(this.form);
-        // this.form.cAddress =
-        //   JSON.parse(response.data.records[0].cAddress).address +
-        //   "(" +
-        //   JSON.parse(response.data.records[0].cAddress).name +
-        //   ")" +
-        //   response.data.records[0].atlasAdd;
-
-        // this.jsInfo = response.data.records[0].js;
+        let Longitude = this.form.arrivalLongitude;
+        let numLatitude = +this.form.arrivalLatitude;
+        let Latitude = numLatitude.toFixed(6);
+        let location = Longitude + `,` + Latitude;
+        let arrival = "arrival"; //到达
+        this.fetchLocation(arrival, location);
+        let depart = "depart"; //出发
+        this.fetchLocation(depart, location);
       });
     },
+    /**解析经纬度 */
+    async fetchLocation(title, location) {
+      const key = "5457092e6c62b83c1b2e45dbe973d858";
+      const url = `https://restapi.amap.com/v3/geocode/regeo?output=JSON&location=${location}&key=${key}&radius=500&extensions=all`;
+      try {
+        const response = await fetch(url);
+        const data = await response.json();
+        if (title == "arrival") {
+          data.regeocode.formatted_address.length > 0
+            ? (this.arrival = data.regeocode.formatted_address)
+            : "";
+        } else if (title == "depart") {
+          // this.depart = data.regeocode.formatted_address;
+          data.regeocode.formatted_address.length > 0
+            ? (this.depart = data.regeocode.formatted_address)
+            : "";
+        }
+      } catch (error) {
+        console.error("请求失败:", error);
+      }
+    },
     /** 提交按钮 */
     submitForm() {
       this.$refs["form"].validate((valid) => {
@@ -457,7 +666,6 @@ export default {
     },
     /** 删除按钮操作 */
     handleDelete(row) {
-      console.log(row);
       const cIds = {
         cId: row.cId || this.ids,
       };
@@ -476,6 +684,19 @@ export default {
 };
 </script>
   <style scoped>
+::v-deep .el-dialog {
+  height: 800px;
+  overflow-y: auto;
+}
+::v-deep .el-form-item__label {
+  width: 100px !important;
+}
+::v-deep .el-input__inner {
+  color: #333 !important;
+}
+::v-deep .el-textarea__inner {
+  color: #333 !important;
+}
 .el-pagination {
   float: right;
   padding: 30px 0;
@@ -483,4 +704,15 @@ export default {
 .orderDetails .el-form-item {
   margin-bottom: 10px;
 }
+.transferPopup {
+  width: 100vw;
+  height: 100vh;
+  position: fixed;
+  top: 0;
+  z-index: 9999 !important;
+  background: rgba(0, 0, 0, 0.5);
+}
+::v-deep .el-dialog{
+  height: auto;
+}
 </style>

+ 1 - 1
src/views/project/index.vue

@@ -89,7 +89,7 @@
       :data="xiangmuList"
       @selection-change="handleSelectionChange"
     >
-      <el-table-column type="selection" width="55" align="center" />
+      <!-- <el-table-column type="selection" width="55" align="center" /> -->
       <!-- <el-table-column label="${comment}" align="center" prop="cId" /> -->
       <el-table-column label="标题" align="center" prop="cTitle" />
       <!-- <el-table-column label="封面图" align="center" prop="cCover" /> -->

+ 319 - 70
src/views/technician/details/details.vue

@@ -1,9 +1,7 @@
 <template>
   <!-- 查看技师详情 -->
   <div class="details">
-    <div class="title">
-      基本信息
-    </div>
+    <div class="title">基本信息</div>
     <el-form :model="uploadInfos" label-position="left">
       <el-form-item label="姓名:">
         <el-input v-model="jsInfos.cName"></el-input>
@@ -18,50 +16,151 @@
         <el-input v-model="jsInfos.cPhone"></el-input>
       </el-form-item>
       <el-form-item label="城市:">
-        <el-select v-model="jsInfos.city" placeholder="请选择" @change="handleSelectionChange">
-          <el-option v-for="item in options" :key="item.deptId" :label="item.deptName" :value="item.deptName">
+        <el-select
+          value-key="deptId"
+          v-model="jsInfos.city"
+          placeholder="请选择"
+          @change="handleSelectionChange"
+        >
+          <el-option
+            v-for="item in options"
+            :key="item.deptId"
+            :label="item.deptName"
+            :value="item"
+          >
           </el-option>
         </el-select>
       </el-form-item>
-      <div class="title">
-        详细信息
-      </div>
+      <el-form-item label="生活照:">
+        <!-- <el-input v-model="jsInfos.cName"></el-input> -->
+        <!-- <div class="image" v-for="(item,index) in jsInfos.cImgList" :key="index">
+          <img :src="item" alt="">
+         </div> -->
+        <div class="allbox">
+          <div class="imgslist">
+            <div
+              class="imgs"
+              v-for="(item, index) in jsInfos.cImgList"
+              :key="index"
+            >
+              <img :src="item" alt="" />
+              <div class="ifnone" @click="removeLifeImgs(index)">删除</div>
+            </div>
+            <el-upload
+              class="images_box"
+              action="#"
+              :http-request="handleLifeSuccess"
+              :before-upload="beforeLifeImagesUpload"
+              :show-file-list="false"
+            >
+              <i class="el-icon-plus avatar-uploader-icon"></i>
+            </el-upload>
+          </div>
+        </div>
+      </el-form-item>
+      <div class="title">详细信息</div>
       <el-form-item label="昵称:">
         <el-input v-model="jsInfos.cNickName"></el-input>
       </el-form-item>
       <el-form-item label="头像:">
-        <!-- <el-input v-model="jsInfos.cName"></el-input> -->
-        <!-- <div class="image">
-
-           <img :src="jsInfos.cPortrait" alt="" />
-         </div> -->
-        <el-upload action="#" class="avatar-uploader" :http-request="handleAvatarSuccess"
-          :before-upload="beforeAvatarUpload" :show-file-list="false">
-          <img v-if="jsInfos.cPortrait" :src="jsInfos.cPortrait" class="avatar" />
+        <el-upload
+          action="#"
+          class="avatar-uploader"
+          :http-request="handleAvatarSuccess"
+          :before-upload="beforeAvatarUpload"
+          :show-file-list="false"
+        >
+          <img
+            v-if="jsInfos.cPortrait"
+            :src="jsInfos.cPortrait"
+            class="avatar"
+          />
           <i v-else class="el-icon-plus avatar-uploader-icon"></i>
         </el-upload>
       </el-form-item>
       <el-form-item label="身份证照片:">
-        <!-- <div
-          class="image"
-          v-for="(item, index) in jsInfos.cSfzImg"
-          :key="index"
-        >
-          <img :src="item" alt="" />
-        </div> -->
         <div class="allbox">
           <div class="imgslist">
-            <div class="imgs" v-for="(item, index) in jsInfos.cSfzImg" :key="index">
+            <div
+              class="sfzimg"
+              v-for="(item, index) in jsInfos.cSfzImg"
+              :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">
+            <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="营业执照:">
+        <el-upload
+          action="#"
+          class="avatar-uploader"
+          :http-request="handleBusinessSuccess"
+          :before-upload="beforeBusinessUpload"
+          :show-file-list="false"
+        >
+          <img
+            v-if="jsInfos.businessLicense"
+            :src="jsInfos.businessLicense"
+            class="avatar"
+          />
+          <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+        </el-upload>
+      </el-form-item>
+      <el-form-item label="无犯罪证明:">
+        <el-upload
+          action="#"
+          class="avatar-uploader"
+          :http-request="handleNocrimeSuccess"
+          :before-upload="beforeNocrimeUpload"
+          :show-file-list="false"
+        >
+          <img v-if="jsInfos.noCrime" :src="jsInfos.noCrime" class="avatar" />
+          <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+        </el-upload>
+      </el-form-item>
+      <el-form-item label="健康证照片:">
+        <el-upload
+          action="#"
+          class="avatar-uploader"
+          :http-request="handlehealthSuccess"
+          :before-upload="beforehealthUpload"
+          :show-file-list="false"
+        >
+          <img
+            v-if="jsInfos.healthCertificate"
+            :src="jsInfos.healthCertificate"
+            class="avatar"
+          />
+          <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+        </el-upload>
+      </el-form-item>
+      <el-form-item label="资格证照片:">
+        <el-upload
+          action="#"
+          class="avatar-uploader"
+          :http-request="handlecertificationSuccess"
+          :before-upload="beforecertificationUpload"
+          :show-file-list="false"
+        >
+          <img
+            v-if="jsInfos.certification"
+            :src="jsInfos.certification"
+            class="avatar"
+          />
+          <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+        </el-upload>
+      </el-form-item>
       <el-form-item label="评分:">
         <el-input v-model="jsInfos.nStar"></el-input>
       </el-form-item>
@@ -75,30 +174,31 @@
         <el-input v-model="uploadInfos.cName"></el-input>
       </el-form-item> -->
       <el-form-item label="项目:">
-        <el-select v-model="jsProjectList" multiple filterable allow-create value-key="cId">
-          <el-option v-for="item in projectList" :key="item.cId" :label="item.cTitle" :value="item"></el-option>
+        <el-select
+          v-model="jsProjectList"
+          multiple
+          filterable
+          allow-create
+          value-key="cId"
+        >
+          <el-option
+            v-for="item in projectList"
+            :key="item.cId"
+            :label="item.cTitle"
+            :value="item"
+          ></el-option>
         </el-select>
       </el-form-item>
-      <el-form-item label="生活照:">
-        <!-- <el-input v-model="jsInfos.cName"></el-input> -->
-        <!-- <div class="image" v-for="(item,index) in jsInfos.cImgList" :key="index">
-          <img :src="item" alt="">
-         </div> -->
-        <div class="allbox">
-          <div class="imgslist">
-            <div class="imgs" v-for="(item, index) in jsInfos.cImgList" :key="index">
-              <img :src="item" alt="" />
-              <div class="ifnone" @click="removeLifeImgs(index)">删除</div>
-            </div>
-            <el-upload class="images_box" action="#" :http-request="handleLifeSuccess"
-              :before-upload="beforeLifeImagesUpload" :show-file-list="false">
-              <i class="el-icon-plus avatar-uploader-icon"></i>
-            </el-upload>
-          </div>
-        </div>
-      </el-form-item>
+
       <el-form-item label="个人简介:">
-        <el-input v-model="jsInfos.cJianjie"></el-input>
+        <!-- <el-input v-model="jsInfos.cJianjie"></el-input> -->
+        <el-input
+          type="textarea"
+          :rows="2"
+          placeholder="请输入内容"
+          v-model="jsInfos.cJianjie"
+        >
+        </el-input>
       </el-form-item>
       <el-form-item label="地址:">
         <el-input v-model="jsInfos.address"></el-input>
@@ -123,13 +223,21 @@
       </el-form-item> -->
 
       <div style="text-align: justify; margin-top: 20px; margin-bottom: 20px">
-        <el-button type="primary" @click="addComplaintShow(jsInfos.id)">添加评论</el-button>
-        <el-button type="primary" @click="work" v-if="jsInfos.nStatus2 == -1">上 岗</el-button>
+        <el-button type="primary" @click="addComplaintShow(jsInfos.id,jsInfos)"
+          >添加评论</el-button
+        >
+        <el-button type="primary" @click="work" v-if="jsInfos.nStatus2 == -1"
+          >上 岗</el-button
+        >
         <el-button type="primary" @click="work" v-else>下 岗</el-button>
         <el-button type="primary" @click="auditJs(jsInfos.id)">审 核</el-button>
-        <el-button type="primary" @click="returnJs(jsInfos.id)">退 回</el-button>
+        <el-button type="primary" @click="returnJs(jsInfos.id)"
+          >退 回</el-button
+        >
         <el-button type="primary" @click="submitForm">修 改</el-button>
-        <el-button type="primary" @click="blacklist" v-if="jsInfos.nTong == 3">恢 复</el-button>
+        <el-button type="primary" @click="blacklist" v-if="jsInfos.nTong == 3"
+          >恢 复</el-button
+        >
         <el-button type="primary" @click="blacklist" v-else>拉 黑</el-button>
       </div>
       <div class="dialog-footer"></div>
@@ -143,13 +251,24 @@
     <el-dialog title="添加评论" :visible.sync="dialogFormVisible">
       <el-form :model="complainForm">
         <el-form-item label="评分:">
-          <el-input type="number" max="5" min="0" v-model="complainForm.nStar" autocomplete="off"></el-input>
+          <el-input
+            type="number"
+            max="5"
+            min="0"
+            v-model="complainForm.nStar"
+            autocomplete="off"
+          ></el-input>
         </el-form-item>
         <el-form-item label="内容:">
           <el-input v-model="complainForm.cText" autocomplete="off"></el-input>
         </el-form-item>
         <el-form-item label="时间:">
-          <el-date-picker v-model="complainForm.dTime" type="datetime" placeholder="选择日期时间" default-time="12:00:00">
+          <el-date-picker
+            v-model="complainForm.dTime"
+            type="datetime"
+            placeholder="选择日期时间"
+            default-time="12:00:00"
+          >
           </el-date-picker>
         </el-form-item>
       </el-form>
@@ -162,10 +281,6 @@
 </template>
 
 <script>
-
-
-
-
 import {
   listJs,
   getJs,
@@ -185,7 +300,7 @@ export default {
   data() {
     return {
       options: [],
-        value: '',
+      value: "",
 
       dialogFormVisible: false,
       jsInfos: {},
@@ -210,17 +325,17 @@ export default {
     this.getDept();
   },
   methods: {
-
-    handleSelectionChange(value){
-        console.log(value);
+    handleSelectionChange(val) {
+      this.jsInfos.deptId = val.deptId;
+      this.jsInfos.city = val.deptName;
     },
 
-    getDept(){
-      getDept().then(res=>{
-        if(res.code == 200){
+    getDept() {
+      getDept().then((res) => {
+        if (res.code == 200) {
           this.options = res.data;
         }
-      })
+      });
     },
 
     getProjictList() {
@@ -236,6 +351,10 @@ export default {
         this.jsInfos = response.data;
         this.uploadInfos.projects = [];
         this.uploadInfos.cPortrait = response.data.cPortrait;
+        this.uploadInfos.businessLicense = response.data.businessLicense;
+        this.uploadInfos.healthCertificate = response.data.healthCertificate;
+        this.uploadInfos.certification = response.data.certification;
+        this.uploadInfos.noCrime = response.data.noCrime;
         this.uploadInfos.cSfzImg = response.data.cSfzImg;
         this.uploadInfos.cImgList = response.data.cImgList;
         this.jsInfos.projects.map((item) => {
@@ -244,7 +363,26 @@ export default {
         });
         var imgs = [];
         var imgs2 = [];
-        response.data.cPortrait == "" ? response.data.cPortrait = "" : this.jsInfos.cPortrait = process.env.VUE_APP_BASE_API + response.data.cPortrait;
+        response.data.cPortrait == ""
+          ? (this.jsInfos.cPortrait = "")
+          : (this.jsInfos.cPortrait =
+              process.env.VUE_APP_BASE_API + response.data.cPortrait);
+        response.data.businessLicense == ""
+          ? (this.jsInfos.businessLicense = "")
+          : (this.jsInfos.businessLicense =
+              process.env.VUE_APP_BASE_API + response.data.businessLicense);
+        response.data.healthCertificate == ""
+          ? this.jsInfos.healthCertificate = ""
+          : this.jsInfos.healthCertificate =
+              process.env.VUE_APP_BASE_API + response.data.healthCertificate;
+        response.data.certification == ""
+          ? (this.jsInfos.certification = "")
+          : (this.jsInfos.certification =
+              process.env.VUE_APP_BASE_API + response.data.certification);
+        response.data.noCrime == ""
+          ? (this.jsInfos.noCrime = "")
+          : (this.jsInfos.noCrime =
+              process.env.VUE_APP_BASE_API + response.data.noCrime);
 
         // response.data.cImgList.length == 0 ? this.jsInfos.cImgList = [] : response.data.cImgList.forEach((element) => {
         //   element = process.env.VUE_APP_BASE_API + element;
@@ -297,6 +435,73 @@ export default {
         );
       }
     },
+    //上传营业执照
+    handleBusinessSuccess(file) {
+      const formData = new FormData();
+      formData.append("file", file.file);
+      upload(formData).then((response) => {
+        this.uploadInfos.businessLicense = response.fileName;
+        this.jsInfos.businessLicense =
+          process.env.VUE_APP_BASE_API + response.fileName;
+      });
+    },
+    beforeBusinessUpload(file) {
+      if (file.type.indexOf("image/") == -1) {
+        this.$modal.msgError(
+          "文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。"
+        );
+      }
+    },
+    //上传无犯罪证明
+    handleNocrimeSuccess(file) {
+      const formData = new FormData();
+      formData.append("file", file.file);
+      upload(formData).then((response) => {
+        this.uploadInfos.noCrime = response.fileName;
+        this.jsInfos.noCrime = process.env.VUE_APP_BASE_API + response.fileName;
+      });
+    },
+    beforeNocrimeUpload(file) {
+      if (file.type.indexOf("image/") == -1) {
+        this.$modal.msgError(
+          "文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。"
+        );
+      }
+    },
+    //上传健康证
+    handlehealthSuccess(file) {
+      const formData = new FormData();
+      formData.append("file", file.file);
+      upload(formData).then((response) => {
+        this.uploadInfos.healthCertificate = response.fileName;
+        this.jsInfos.healthCertificate =
+          process.env.VUE_APP_BASE_API + response.fileName;
+      });
+    },
+    beforehealthUpload(file) {
+      if (file.type.indexOf("image/") == -1) {
+        this.$modal.msgError(
+          "文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。"
+        );
+      }
+    },
+    //上传资格证
+    handlecertificationSuccess(file) {
+      const formData = new FormData();
+      formData.append("file", file.file);
+      upload(formData).then((response) => {
+        this.uploadInfos.certification = response.fileName;
+        this.jsInfos.certification =
+          process.env.VUE_APP_BASE_API + response.fileName;
+      });
+    },
+    beforecertificationUpload(file) {
+      if (file.type.indexOf("image/") == -1) {
+        this.$modal.msgError(
+          "文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。"
+        );
+      }
+    },
     //添加评论
     submitComplain() {
       if (this.complainForm.nStar == "") {
@@ -336,7 +541,10 @@ export default {
         });
       }
     },
-    addComplaintShow(id) {
+    addComplaintShow(id,jsInfos) {
+      console.log(jsInfos);
+      this.complainForm.name = jsInfos.cName
+      this.complainForm.cId = jsInfos.cId
       this.dialogFormVisible = true;
     },
     // 上传身份证图片相关
@@ -460,6 +668,10 @@ export default {
       this.jsInfos.cPortrait = this.uploadInfos.cPortrait;
       this.jsInfos.cSfzImg = this.uploadInfos.cSfzImg;
       this.jsInfos.cImgList = this.uploadInfos.cImgList;
+      this.jsInfos.businessLicense = this.uploadInfos.businessLicense;
+      this.jsInfos.certification = this.uploadInfos.certification;
+      this.jsInfos.healthCertificate = this.uploadInfos.healthCertificate;
+      this.jsInfos.noCrime = this.uploadInfos.noCrime;
       this.jsInfos.cBhList = temp.join();
       this.jsInfos.comments = null;
       updateJs(this.jsInfos).then((res) => {
@@ -524,7 +736,7 @@ export default {
           });
         });
     },
-    rest() { },
+    rest() {},
   },
 };
 </script>
@@ -541,7 +753,7 @@ export default {
     border-left: 3px solid #2cb8d4;
     padding-left: 5px;
     font-size: 30rpx;
-    margin-top: 10px;
+    margin: 10px 0px;
     text-align: left;
   }
 
@@ -572,8 +784,45 @@ export default {
   margin-bottom: 10px;
   cursor: pointer;
 }
+.imgslist .sfzimg {
+  float: left;
+  margin-right: 10px;
+  position: relative;
+  width: 200px;
+  height: 150px;
+  margin-bottom: 10px;
+  cursor: pointer;
+  img {
+    width: 100%;
+    height: 100%;
+  }
+}
+.imgslist .sfzimg:hover:before {
+  content: "";
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  background: rgba(0, 0, 0, 0.5);
+  color: #fff;
+}
+.imgslist .sfzimg .ifnone {
+  position: absolute;
+  top: 0;
+  left: 0;
+  color: #fff;
+  display: none;
+  width: 100%;
+  text-align: center;
+  line-height: 150px;
+}
+
+.imgslist .sfzimg:hover .ifnone {
+  display: block;
+}
 
-.imgslist .imgs:hover:before {
+.imgslist .sfzimg:hover:before {
   content: "";
   position: absolute;
   top: 0;

+ 976 - 808
src/views/technician/technician/index.vue

@@ -1,31 +1,38 @@
 <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">
+  <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"
@@ -35,46 +42,117 @@
               </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-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-row :gutter="10" class="mb8">
+      <!-- <el-col :span="1.5">
+          <el-button
+            type="primary"
+            plain
+            icon="el-icon-plus"
+            size="mini"
+            @click="handleAdd"
+            v-hasPermi="['system:comment:add']"
+          >新增</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button
+            type="success"
+            plain
+            icon="el-icon-edit"
+            size="mini"
+            :disabled="single"
+            @click="handleUpdate"
+            v-hasPermi="['system:comment:edit']"
+          >修改</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button
+            type="danger"
+            plain
+            icon="el-icon-delete"
+            size="mini"
+            :disabled="multiple"
+            @click="handleDelete"
+            v-hasPermi="['system:comment:remove']"
+          >删除</el-button>
+        </el-col> -->
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['system:comment:export']"
+          >导出</el-button
+        >
+      </el-col>
+      <right-toolbar
+        :showSearch.sync="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
+    </el-row>
+    <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">
+      <!-- <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
@@ -94,202 +172,233 @@
                 </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">
+      <!-- <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="审核状态" 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">
+      <!-- <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
+      <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-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">
+      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
+        <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="#"
-                class="avatar-uploader"
-                :http-request="handleAvatarSuccess"
-                :before-upload="beforeAvatarUpload"
+                :http-request="handleImagesSuccess"
+                :before-upload="beforeImagesUpload"
                 :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>
+              </el-upload>
             </div>
-          </el-form-item>
+          </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>
+        <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>
-          </el-form-item>
-          
-          
-          <!-- <el-form-item label="地址" prop="cAddress">
+          </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-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-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-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-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-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"
@@ -297,667 +406,726 @@
               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>
+      </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 slot="footer" class="dialog-footer">
-          <el-button type="primary" @click="submitForm">确 定</el-button>
-          <el-button @click="cancel">取 消</el-button>
+        <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>
-      </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 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 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>
+        <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>
-      </el-drawer>
-    </div>
-  </template>
+        </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 {
+  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: {
+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: {
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download(
+        "system/comment/export",
+        {
+          ...this.queryParams,
         },
-        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,
-      };
+        `comment_${new Date().getTime()}.xlsx`
+      );
     },
-    created() {
-      this.getList();
+    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("该技师已操作");
+      }
     },
-    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
+    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("该技师已操作");
           }
-          repulseJs(data).then(response => {
-            this.$modal.msgSuccess("已退回");
-            this.drawer = false;
-            this.getList();
-          });
-        }else{
-          this.$modal.msgSuccess("该技师已操作");
-        }
           this.$message({
-            type: 'success',
+            type: "success",
           });
-        }).catch(() => {
+        })
+        .catch(() => {
           this.$message({
-            type: 'info',
-            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;
+    },
 
-        
-       
-      },
-      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")
-        // });
+    // 头像上传
+    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;
+          });
+        });
 
-      },
-      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)
-        })
-      },
+        this.jsList = response.records;
 
-      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;
+        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);
+          });
         }
-        return true
-      },
 
+        this.form = response.data;
+        this.updataImg1 = imgs;
+        this.updataImg11 = response.data.cImgList;
 
-      // 头像上传
-      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后缀的文件。");
+        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;
             }
-        },
-        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)
+            updateJs(this.form).then((response) => {
+              console.log("1111111");
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.imgList = [];
+              this.imgList2 = [];
+              this.getList();
             });
-            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
-              });
+          } else {
+            addJs(this.form).then((response) => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
             });
-
-          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() {
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const cOpenIds = {
+        id: row.id || this.ids,
+      };
+      this.$modal
+        .confirm('是否确认删除"' + row.cName + '"吗?')
+        .then(function () {
           return delJs(cOpenIds);
-        }).then(() => {
+        })
+        .then(() => {
           this.getList();
           this.$modal.msgSuccess("删除成功");
-        }).catch(() => {});
-      },
-    }
-  };
-  </script>
+        })
+        .catch(() => {});
+    },
+  },
+};
+</script>
 <style lang="scss" scoped>
-
-::v-deep .el-dialog{
+::v-deep .el-dialog {
   height: 90% !important;
   overflow-y: auto;
   border-radius: 10px;
 }
 
-.jsInfo{
-  padding:0 15px;
-  .js_box{
+.jsInfo {
+  padding: 0 15px;
+  .js_box {
     width: 100%;
     display: flex;
     // justify-content: space-around;
-    .js_name{
+    .js_name {
       width: 100%;
     }
   }
-  .js_head{
+  .js_head {
     // text-align: center;
-    img{
+    img {
       width: 100px;
     }
   }
-  .js_name{
+  .js_name {
     width: 100%;
     min-height: 40px;
     line-height: 40px;
     color: #8c939d;
     font-size: 14px;
     width: 50%;
-    b{
+    b {
       display: inline-block;
       width: 86px;
       text-align: right;
     }
-    span{
+    span {
       color: #333;
     }
   }
-  .js_imgs{
+  .js_imgs {
     height: auto;
-    span{
+    span {
       display: inline-flex;
       justify-content: center;
       margin-right: 20px;
       height: 100px;
       border: 1px solid #ccc;
     }
-    img{
+    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;
-    }
+  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>

+ 37 - 0
src/views/technician/technicianData/technicianData.vue

@@ -0,0 +1,37 @@
+<template>
+    <div class="data_box">
+        技师数据页
+    </div>
+</template>
+
+<script>
+import { getJsData } from "@/api/system/js";
+import { number } from "echarts";
+components:{
+    number
+}
+export default {
+  data() {
+    return {};
+  },
+  methods: {
+    //获取技师数据
+    getJsData() {
+      getJsData().then((res) => {
+        console.log(res);
+      });
+    },
+  },
+  mounted() {
+    this.getJsData();
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.data_box {
+    width: 100%;
+    height: 100%;
+     padding: 20px;
+}
+</style>