baijunde 2 жил өмнө
parent
commit
e8caccc981

+ 1 - 1
.env.development

@@ -5,7 +5,7 @@ VUE_APP_TITLE = 夜来香后台管理系统
 ENV = 'development'
 
 # 若依管理系统/开发环境
-VUE_APP_BASE_API = '/dev-api'
+VUE_APP_BASE_API = 'https://test.baoxianzhanggui.com/nightFragrance'
 
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 2 - 1
.env.staging

@@ -7,4 +7,5 @@ NODE_ENV = production
 ENV = 'staging'
 
 # 若依管理系统/测试环境
-VUE_APP_BASE_API = '/stage-api'
+# VUE_APP_BASE_API = '/stage-api'
+VUE_APP_BASE_API = 'https://test.baoxianzhanggui.com/nightFragrance'

+ 54 - 0
src/api/system/complaint.js

@@ -0,0 +1,54 @@
+import request from '@/utils/request'
+
+// 查询投诉列表
+export function listComplaint(query) {
+  return request({
+    url: '/complaint/selectAll',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询投诉类型
+export function complaintEnum(data) {
+  return request({
+    url: '/complaint/complaintEnum',
+    method: 'post',
+    data: data
+  })
+}
+
+// 查询投诉详细
+export function getComplaint(id) {
+  return request({
+    url: '/complaint/' + id,
+    method: 'get'
+  })
+}
+
+// 新增投诉
+// export function addComplaint(data) {
+//   return request({
+//     url: '/system/complaint',
+//     method: 'post',
+//     data: data
+//   })
+// }
+
+// 修改投诉
+export function updateComplaint(data) {
+  return request({
+    url: '/complaint/update',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除投诉
+export function delComplaint(data) {
+  return request({
+    url: 'complaint/delete',
+    method: 'post',
+    data: data
+  })
+}

+ 47 - 0
src/api/system/coupon.js

@@ -0,0 +1,47 @@
+import request from '@/utils/request'
+
+// 通过主键查询单条数据
+export function listCoupon(query) {
+  return request({
+    url: '/coupon/getById',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询优惠券详细
+export function getCoupon(getByid) {
+  return request({
+    url: '/coupon/list',
+    method: 'get',
+    // params: query
+  })
+}
+
+// 新增轮优惠券
+export function addCoupon(data) {
+  return request({
+    url: '/coupon/submit',
+    method: 'post',
+    data: data
+  })
+}
+// 删除优惠券
+export function delCoupon(data) {
+  return request({
+    url: '/coupon/delete',
+    method: 'post',
+    data: data
+  })
+}
+
+//修改优惠券
+export function updateCoupon(data) {
+    return request({
+      url: '/coupon/update',
+      method: 'post',
+      data:data
+    })
+  }
+
+

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

@@ -36,6 +36,24 @@ export function updateJs(data) {
   })
 }
 
+// 添加评论
+export function addComplaint(data) {
+  return request({
+    url: '/api/comment/v1/black/add',
+    method: 'post',
+    data: data
+  })
+}
+
+// 获取项目
+export function getProject(data) {
+  return request({
+    url: '/api/xiangmu/v1/wx/getAll',
+    method: 'post',
+    data: data
+  })
+}
+
 // 删除技师
 export function delJs(data) {
   return request({
@@ -59,4 +77,22 @@ export function repulseJs(data) {
     method: 'post',
     data:data
   })
+}
+
+// 上岗
+export function changeWork(data) {
+  return request({
+    url: '/api/js/v1/wx/post',
+    method: 'post',
+    data:data
+  })
+}
+
+// 上岗
+export function block(data) {
+  return request({
+    url: '/api/js/v1/block',
+    method: 'post',
+    data:data
+  })
 }

+ 45 - 0
src/api/system/teamWork.js

@@ -0,0 +1,45 @@
+import request from '@/utils/request'
+
+// 查询招商代理列表
+export function listDevelopment(query) {
+  return request({
+    url: '/businessDevelopment/selectAll',
+    method: 'get',
+    params: query
+  })
+}
+
+// // 查询招商代理详细
+// export function getDevelopment(id) {
+//   return request({
+//     url: '/system/development/' + id,
+//     method: 'get'
+//   })
+// }
+
+// 新增招商代理
+export function addDevelopment(data) {
+  return request({
+    url: '/businessDevelopment/add',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改招商代理
+export function updateDevelopment(data) {
+  return request({
+    url: '/businessDevelopment/update',
+    method: 'post',
+    data: data
+  })
+}
+
+// 删除招商代理
+export function delDevelopment(data) {
+  return request({
+    url: '/businessDevelopment/delete',
+    method: 'post',
+    data: data
+  })
+}

+ 76 - 2
src/router/index.js

@@ -103,6 +103,21 @@ export const constantRoutes = [
       }
     ]
   },
+  // 优惠券管理
+  {
+    path: '/coupon',
+    component: Layout,
+    hidden: true,
+    redirect: 'noredirect',
+    children: [
+      {
+        path: '',
+        component: () => import('@/views/coupon/index'),
+        name: 'coupon',
+        meta: { title: '优惠券管理' }
+      }
+    ]
+  },
   // 项目管理
   {
     path: '/project',
@@ -126,13 +141,41 @@ export const constantRoutes = [
     redirect: 'noredirect',
     children: [
       {
-        path: '',
-        component: () => import('@/views/technician/index'),
+        path: '/technician/technician',
+        component: () => import('@/views/technician/technician/index'),
         name: 'Technician',
         meta: { title: '技师管理' }
+      },
+      {
+        path: '/technician/details',
+        component: () => import('@/views/technician/details/details'),
+        name: 'details',
+        props:true,
+        meta: { title: '技师详情' },
+      },
+      {
+        path: '/technician/check',
+        component: () => import('@/views/technician/check/check'),
+        name: 'check',
+        meta: { title: '技师审核' }
       }
     ]
   },
+  // // 技师审核
+  // {
+  //   path: '/technician/check',
+  //   component: Layout,
+  //   hidden: true,
+  //   redirect: 'noredirect',
+  //   children: [
+  //     {
+  //       path: '',
+  //       component: () => import('@/views/technician/check/check'),
+  //       name: 'Technician',
+  //       meta: { title: '技师审核' }
+  //     }
+  //   ]
+  // },
   // 订单管理
   {
     path: '/order',
@@ -162,6 +205,36 @@ export const constantRoutes = [
         meta: { title: '评论' }
       }
     ]
+  },
+   // 招商合作
+   {
+    path: '/teamWork',
+    component: Layout,
+    hidden: true,
+    redirect: 'noredirect',
+    children: [
+      {
+        path: '',
+        component: () => import('@/views/teamWork/index'),
+        name: 'teamWork',
+        meta: { title: '招商合作' }
+      }
+    ]
+  },
+   // 投诉管理
+   {
+    path: '/complain',
+    component: Layout,
+    hidden: true,
+    redirect: 'noredirect',
+    children: [
+      {
+        path: '',
+        component: () => import('@/views/complain/index'),
+        name: 'complain',
+        meta: { title: '投诉管理' }
+      }
+    ]
   },
   // 提现记录
   {
@@ -193,6 +266,7 @@ export const constantRoutes = [
       }
     ]
   },
+ 
   // 报警工单
   {
     path: '/alarmWorksheet',

+ 1 - 1
src/store/modules/permission.js

@@ -130,7 +130,7 @@ export const loadView = (view) => {
     return (resolve) => require([`@/views/${view}`], resolve)
   } else {
     // 使用 import 实现生产环境的路由懒加载
-    return () => import(`@/views/${view}`)
+    return (resolve) => require([`@/views/${view}`],resolve)
   }
 }
 

+ 2 - 1
src/views/alarmWorksheet/index.vue

@@ -47,7 +47,8 @@
         <el-table-column label="客户电话" align="center" prop="userPhone" />
         <el-table-column label="地点" align="center">
             <template slot-scope="scope">
-                {{ JSON.parse(scope.row.address).address }}
+              {{ scope.row.address }}
+                <!-- {{ JSON.parse(scope.row.address).address }} -->
             </template>
         </el-table-column>
         

+ 17 - 5
src/views/carousel/index.vue

@@ -80,7 +80,7 @@
           </template>
         </el-table-column>
         <!-- <el-table-column label="是否删除0否1是" align="center" prop="nDel" /> -->
-        <el-table-column label="描述" align="center" prop="cDescribe" />
+        <el-table-column label="标题" align="center" prop="cDescribe" />
         <!-- <el-table-column label="文本内容" align="center" prop="cContent" /> -->
         <el-table-column label="内容" align="center" >
             <template slot-scope="scope">
@@ -137,7 +137,7 @@
           <!-- <el-form-item label="是否删除0否1是" prop="nDel">
             <el-input v-model="form.nDel" placeholder="请输入是否删除0否1是" />
           </el-form-item> -->
-          <el-form-item label="描述" prop="cDescribe">
+          <el-form-item label="标题" prop="cDescribe">
             <el-input v-model="form.cDescribe" type="textarea" placeholder="请输入内容" />
           </el-form-item>
           <el-form-item label="文本内容">
@@ -203,6 +203,7 @@
       this.getList();
     },
     methods: {
+     
         handleSizeChange(val){
             // console.log(val,"handleSizeChange")
             this.queryParams.size = val
@@ -235,7 +236,6 @@
         this.loading = true;
         listLbt(this.queryParams).then(response => {
           this.lbtList = response.data.records;
-          console.log(response,"列表")
           this.total = response.data.total;
           this.queryParams.pages= response.data.pages
           this.loading = false;
@@ -265,8 +265,17 @@
       },
       /** 重置按钮操作 */
       resetQuery() {
-        this.resetForm("queryForm");
-        this.handleQuery();
+        // console.log('111');
+        this.queryParams.current = 1
+        this.queryParams.size = 10
+        this.queryParams.pages = 1
+        this.queryParams.cImgUrl = null
+        this.queryParams.cDescribe = null
+        this.queryParams.cContent = null
+        this.queryParams.cSort = null 
+        // this.resetForm("queryForm");
+        // this.handleQuery();
+        this.getList()
       },
       // 多选框选中数据
       handleSelectionChange(selection) {
@@ -334,6 +343,9 @@
   };
   </script>
 <style scoped>
+/deep/.el-upload{
+  border: 1px solid #ccc;
+}
 .avatar-uploader .el-upload {
     border: 1px dashed #d9d9d9;
     border-radius: 6px;

+ 685 - 0
src/views/complain/index.vue

@@ -0,0 +1,685 @@
+<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="name">
+        <el-input
+          v-model="queryParams.name"
+          placeholder="请输入投诉技师姓名"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="部门名称" prop="deptName">
+        <el-input
+          v-model="queryParams.deptName"
+          placeholder="请输入部门名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="投诉类型" prop="complaintType">
+        <el-select v-model="value" placeholder="请选择" @change="selectType">
+          <el-option
+            v-for="item in options"
+            :key="item.desc"
+            :label="item.info"
+            :value="item.desc"
+          >
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <!-- <el-form-item label="部门Id" prop="deptId">
+          <el-input
+            v-model="queryParams.deptId"
+            placeholder="请输入部门Id"
+            clearable
+            @keyup.enter.native="handleQuery"
+          />
+        </el-form-item> -->
+      <el-form-item label="手机" prop="phone">
+        <el-input
+          v-model="queryParams.phone"
+          placeholder="请输入手机"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <!-- <el-form-item label="openId" prop="openId">
+          <el-input
+            v-model="queryParams.openId"
+            placeholder="请输入openId"
+            clearable
+            @keyup.enter.native="handleQuery"
+          />
+        </el-form-item> -->
+      <!-- <el-form-item label="是否删除0否1是" prop="isDelete">
+          <el-input
+            v-model="queryParams.isDelete"
+            placeholder="请输入是否删除0否1是"
+            clearable
+            @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-col :span="1.5">
+          <el-button
+            type="primary"
+            plain
+            icon="el-icon-plus"
+            size="mini"
+            @click="handleAdd"
+            v-hasPermi="['system:complaint: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:complaint: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:complaint: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:complaint:export']"
+          >导出</el-button>
+        </el-col>
+        <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+      </el-row> -->
+
+    <el-table
+      v-loading="loading"
+      :data="complaintList"
+      @selection-change="handleSelectionChange"
+    >
+      <el-table-column label="id" align="center" prop="id" />
+      <el-table-column label="投诉类型" align="center" prop="complaintType" />
+      <el-table-column label="问题描述" align="center" prop="description" />
+      <el-table-column label="投诉技师" align="center" prop="name" />
+      <!-- <el-table-column label="图片" align="center" prop="photograph" /> -->
+      <!-- <el-table-column
+        label="图片"
+        align="center"
+        prop="photograph"
+        width="100"
+      >
+        <template slot-scope="scope">
+          <image-preview :src="scope.row.photograph" :width="50" :height="50" />
+        </template>
+      </el-table-column> -->
+      <el-table-column label="部门名称" align="center" prop="deptName" />
+      <!-- <el-table-column label="部门Id" align="center" prop="deptId" /> -->
+      <!-- <el-table-column label="手机" align="center" prop="phone" />
+        <el-table-column label="openId" align="center" prop="openId" />
+        <el-table-column label="备注" align="center" prop="remark" /> -->
+      <!-- <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:complaint:edit']"
+            >修改</el-button> -->
+          <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-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:complaint:remove']"
+            >删除</el-button
+          >
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+    <!-- 查看投诉详情 -->
+    <el-drawer
+      title="投诉详情"
+      :visible.sync="drawer"
+      direction="rtl"
+       @close="handleClose"
+      size="50%"
+    >
+      <div class="jsInfo">
+        <div class="js_box">
+          <div class="js_name">
+            <b>投诉类型:</b><span>{{ complainInfo.complaintType }}</span>
+          </div>
+        </div>
+        <div class="js_box">
+          <div class="js_name">
+            <b>描述:</b><span>{{ complainInfo.description }}</span>
+          </div>
+        </div>
+        <div class="js_box">
+          <div class="js_name">
+            <b>所在城市:</b><span>{{ complainInfo.deptName }}</span>
+          </div>
+        </div>
+        <div class="js_box">
+          <div class="js_name">
+            <b>投诉技师:</b><span>{{ complainInfo.name }}</span>
+          </div>
+        </div>
+        <div class="js_box">
+          <div class="js_name">
+            <b>用户手机:</b> <span>{{ complainInfo.phone }}</span>
+          </div>
+        </div>
+        <div class="js_name js_imgs" style="width: 100%" v-if="infoImg">
+          <b>图片:</b>
+          <span v-for="(item, index) in infoImg" :key="index">
+            <!-- <image-preview :src="item[0]" :width="50" :height="50"/> -->
+            <template >
+              <image-preview
+                :src="item"
+                :width="200"
+                :height="200"
+              />
+            </template>
+            <!-- <img :src="item" alt="" /> -->
+          </span>
+        </div>
+      </div>
+      <!-- <div
+        class="demo-drawer__footer"
+        style="text-align: center; padding: 20px 0"
+        v-if="auditShow"
+      >
+        <el-button @click="auditJs(complainInfo.id)">审核</el-button>
+        <el-button type="primary" @click="returnJs(complainInfo.id)">退回</el-button>
+      </div> -->
+    </el-drawer>
+    <!-- 添加或修改投诉对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form
+        ref="form"
+        :model="complainInfo"
+        :rules="rules"
+        label-width="80px"
+      >
+        <el-form-item label="问题描述" prop="description">
+          <el-input
+            v-model="complainInfo.description"
+            type="textarea"
+            placeholder="请输入内容"
+          />
+        </el-form-item>
+        <el-form-item label="投诉技师" prop="name">
+          <el-input v-model="complainInfo.name" placeholder="请输入投诉技师" />
+        </el-form-item>
+        <el-form-item label="图片" prop="photograph">
+          <el-input
+            v-model="complainInfo.photograph"
+            type="textarea"
+            placeholder="请输入内容"
+          />
+        </el-form-item>
+        <el-form-item label="部门名称" prop="deptName">
+          <el-input
+            v-model="complainInfo.deptName"
+            placeholder="请输入部门名称"
+          />
+        </el-form-item>
+        <el-form-item label="部门Id" prop="deptId">
+          <el-input v-model="complainInfo.deptId" placeholder="请输入部门Id" />
+        </el-form-item>
+        <el-form-item label="手机" prop="phone">
+          <el-input v-model="complainInfo.phone" placeholder="请输入手机" />
+        </el-form-item>
+        <el-form-item label="openId" prop="openId">
+          <el-input v-model="complainInfo.openId" placeholder="请输入openId" />
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="complainInfo.remark" placeholder="请输入备注" />
+        </el-form-item>
+        <el-form-item label="是否删除0否1是" prop="isDelete">
+          <el-input
+            v-model="complainInfo.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 {
+  listComplaint,
+  getComplaint,
+  delComplaint,
+  addComplaint,
+  updateComplaint,
+  complaintEnum,
+} from "@/api/system/complaint";
+import { options } from "runjs";
+
+export default {
+  name: "Complaint",
+  data() {
+    return {
+      drawer: false,
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 投诉表格数据
+      complaintList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        complaintType: null,
+        description: null,
+        name: null,
+        photograph: null,
+        deptName: null,
+        deptId: null,
+        phone: null,
+        openId: null,
+        isDelete: null,
+      },
+      complainInfo: {},
+      infoImg: [],
+      options: [],
+      value: null,
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {},
+    };
+  },
+  created() {
+    this.getList();
+  },
+  mounted() {
+    this.getMenu();
+  },
+  methods: {
+    handleClose(){
+      this.drawer = false;
+      this.infoImg = []
+    },
+    handleDetail(row) {
+      this.drawer = true;
+      this.complainInfo = [];
+      const id = row.id || this.ids;
+      // this.imgUrl1 = this.form.cImgList
+      getComplaint(id).then((response) => {
+        this.complainInfo = response.data;
+        var imgs = response.data.photograph.split(",");
+        imgs.forEach((element) => {
+          element = process.env.VUE_APP_BASE_API + element;
+          this.infoImg.push(element);
+        });
+        // this.complainInfo.photograph = imgs
+        // 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.complainInfo = response.data;
+        // this.complainInfo.cSfzImg = imgs2
+        // this.complainInfo.address = response.data.address
+        // this.complainInfo.name = response.data.name
+        // this.complainInfo.atlasAdd = response.data.atlasAdd
+        // this.complainInfo = this.jsInfos.nTong
+      });
+    },
+    selectType(value) {
+      this.queryParams.complaintType = value;
+    },
+    getMenu() {
+      complaintEnum().then((res) => {
+        this.options = res.data;
+      });
+    },
+    /** 查询投诉列表 */
+    getList() {
+      this.loading = true;
+      listComplaint(this.queryParams).then((response) => {
+        this.complaintList = response.data.records;
+        this.total = response.data.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        complaintType: null,
+        description: null,
+        name: null,
+        photograph: null,
+        deptName: null,
+        deptId: null,
+        phone: null,
+        openId: null,
+        remark: null,
+        createTime: null,
+        updateTime: null,
+        isDelete: null,
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.value = null;
+      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;
+      getComplaint(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) {
+            updateComplaint(this.form).then((response) => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addComplaint(this.form).then((response) => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      let ids = [];
+      ids.push(row.id);
+      this.$modal
+        .confirm('是否确认删除投诉编号为"' + ids + '"的数据项?')
+        .then(function () {
+          return delComplaint(ids);
+        })
+        .then(() => {
+          this.getList();
+          this.$modal.msgSuccess("删除成功");
+        })
+        .catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download(
+        "system/complaint/export",
+        {
+          ...this.queryParams,
+        },
+        `complaint_${new Date().getTime()}.xlsx`
+      );
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+::v-deep .el-dialog {
+  height: 90% !important;
+  overflow-y: auto;
+  border-radius: 10px;
+}
+
+.jsInfo {
+  padding: 0 15px;
+  .js_box {
+    width: 100%;
+    height: auto;
+    display: flex;
+    justify-content: left;
+    .js_name {
+    width: 100%;
+    // height: 40px;
+    line-height: 40px;
+    color: #8c939d;
+    font-size: 14px;
+    // width: 50%;
+    display: flex;
+    align-items: flex-start;
+    b {
+      display: inline-block;
+      width: 86px;
+      // font-weight: normal;
+      // text-align: right;
+    }
+    span {
+      color: #333;
+    }
+  }
+  }
+  .js_head {
+    text-align: center;
+    img {
+      width: 100px;
+    }
+  }
+  .js_name {
+    width: 100%;
+    // height: 40px;
+    line-height: 40px;
+    color: #8c939d;
+    font-size: 14px;
+    // width: 50%;
+    display: flex;
+    align-items: flex-start;
+    b {
+      display: inline-block;
+      width: 86px;
+      // font-weight: normal;
+      // text-align: right;
+    }
+    span {
+      color: #333;
+    }
+  }
+  .js_imgs {
+    height: auto;
+    span {
+      display: inline-flex;
+      justify-content: center;
+      margin-right: 20px;
+      height: 100px;
+      border: 1px solid #ccc;
+    }
+    img {
+      width: 100px;
+      height: auto;
+    }
+  }
+}
+.avatar-uploader .el-upload {
+  border: 1px dashed #d9d9d9;
+  border-radius: 6px;
+  cursor: pointer;
+  position: relative;
+  overflow: hidden;
+}
+.avatar-uploader .el-upload:hover {
+  border-color: #409eff;
+}
+.avatar-uploader-icon {
+  font-size: 28px;
+  color: #8c939d;
+  width: 100px;
+  height: 100px;
+  line-height: 100px;
+  text-align: center;
+}
+.avatar {
+  width: 100px;
+  height: 100px;
+  display: block;
+}
+.el-pagination {
+  float: right;
+  padding: 30px 0;
+}
+.allbox {
+  /* display: flex; */
+}
+.images_box {
+  width: 100px;
+  height: 100px;
+  float: left;
+}
+.imgslist .imgs {
+  float: left;
+  margin-right: 10px;
+  position: relative;
+  width: 100px;
+  height: 100px;
+  margin-bottom: 10px;
+  cursor: pointer;
+}
+.imgslist .imgs:hover:before {
+  content: "";
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  background: rgba(0, 0, 0, 0.5);
+  color: #fff;
+}
+.imgslist .imgs .ifnone {
+  position: absolute;
+  top: 0;
+  left: 0;
+  color: #fff;
+  display: none;
+  width: 100%;
+  text-align: center;
+  line-height: 100px;
+}
+.imgslist .imgs:hover .ifnone {
+  display: block;
+}
+.images_box {
+  float: left;
+}
+.imgslist img {
+  width: 100px;
+  height: 100px;
+}
+.el-carousel__item .imgbox {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  height: 300px;
+}
+</style>

+ 578 - 0
src/views/coupon/index.vue

@@ -0,0 +1,578 @@
+<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="name">
+        <el-input
+          v-model="queryParams.name"
+          placeholder="请输入优惠券名称,可以和活动名称保持一致"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+
+
+      <el-form-item label="优惠值" prop="discountValue">
+        <el-input
+          v-model="queryParams.discountValue"
+          placeholder="请输入优惠值"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="门槛金额" prop="thresholdAmount">
+        <el-input
+          v-model="queryParams.thresholdAmount"
+          placeholder="请输入门槛金额"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="获取方式" prop="obtainWay">
+        <el-input
+          v-model="queryParams.obtainWay"
+          placeholder="请输入获取方式:1:手动领取 2,自动发放"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+
+
+      <el-form-item label="有效天数" prop="termDays">
+        <el-input
+          v-model="queryParams.termDays"
+          placeholder="请输入优惠券有效期天数,0"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="使用数量" prop="usedNum">
+        <el-input
+          v-model="queryParams.usedNum"
+          placeholder="请输入已使用数量"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+
+
+      <el-form-item label="限领数量" prop="userLimit">
+        <el-input
+          v-model="queryParams.userLimit"
+          placeholder="请输入每个人限领的数量"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="是否删除" prop="isDelete">
+        <el-input
+          v-model="queryParams.isDelete"
+          placeholder="请输入是否删除0否1是"
+          clearable
+          @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-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['system:coupon: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:coupon: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:coupon: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:coupon:export']"
+          >导出</el-button
+        >
+      </el-col> -->
+      <!-- <right-toolbar
+        :showSearch.sync="showSearch"
+        @queryTable="getList"
+      ></right-toolbar> -->
+    </el-row>
+
+    <el-table
+      v-loading="loading"
+      :data="couponList"
+      @selection-change="handleSelectionChange"
+    >
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="优惠券id" align="center" prop="id" />
+      <el-table-column label="优惠券名称" align="center" prop="name" />
+      <el-table-column label="优惠券类型" align="center" prop="type">
+        <template slot-scope="scope">
+          <span>{{ scope.row.type === 1 ? "普通券" : "其他" }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="优惠类型" align="center" prop="discountType">
+        <template #default="{ row }">
+          <span>{{
+            row.discountType === 1
+              ? "无门槛"
+              : row.discountType === 2
+              ? "折扣"
+              : row.discountType === 3
+              ? "满减"
+              : "其他"
+          }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="优惠值" align="center" prop="discountValue" />
+      <el-table-column label="门槛金额" align="center" prop="thresholdAmount" />
+      <el-table-column label="获取方式" align="center" prop="obtainWay">
+        <template slot-scope="scope">
+          <span>{{ scope.row.obtainWay === 1 ? "手动领取" : "自动发放" }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column
+        label="优惠券有效期天数"
+        align="center"
+        prop="termDays"
+      />
+      <el-table-column label="优惠券配置状态" align="center" prop="status">
+        <template slot-scope="scope">
+          <span>{{ scope.row.status === 0 ? "未使用" : "进行中" }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="已使用数量" align="center" prop="usedNum" />
+      <el-table-column
+        label="每个人限领的数量"
+        align="center"
+        prop="userLimit"
+      />
+      <!-- <el-table-column
+        label="拓展参数字段,保留字段"
+        align="center"
+        prop="extParam"
+      />
+      <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:coupon:edit']"
+            >修改</el-button
+          >
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:coupon:remove']"
+            >删除</el-button
+          >
+        </template>
+      </el-table-column> -->
+    </el-table>
+
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改优惠券的规则信息对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="550px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="优惠券名称" prop="name">
+          <el-input
+            v-model="form.name"
+            placeholder="请输入优惠券名称,可以和活动名称保持一致"
+          />
+          
+        </el-form-item>
+        <!-- <el-form-item label="优惠券类型" prop="discountType">
+          <el-input
+            v-model="form.discountType"
+            placeholder="请输入优惠券名称,可以和活动名称保持一致"
+          />
+          
+        </el-form-item> -->
+        <el-form-item label="优惠值" prop="discountValue">
+          <el-input v-model="form.discountValue" placeholder="请输入优惠值" />
+        </el-form-item>
+        <el-form-item label="门槛金额" prop="thresholdAmount">
+          <el-input
+            v-model="form.thresholdAmount"
+            placeholder="请输入门槛金额"
+          />
+        </el-form-item>
+        <el-form-item label="获取方式:" prop="obtainWay">
+          <el-input
+            v-model="form.obtainWay"
+            placeholder="请输入获取方式:1:手动领取 2,自动发放"
+          />
+        </el-form-item>
+        <el-form-item label="有效天数" prop="termDays">
+          <el-input
+            v-model="form.termDays"
+            placeholder="请输入优惠券有效期天数,0"
+          />
+        </el-form-item>
+        <!-- <el-form-item label="已使用数量" prop="usedNum">
+          <el-input v-model="form.usedNum" placeholder="请输入已使用数量" />
+        </el-form-item> -->
+        <el-form-item label="限领数量" prop="userLimit">
+          <el-input
+            v-model="form.userLimit"
+            placeholder="请输入每个人限领的数量"
+          />
+        </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 {
+  listCoupon,
+  getCoupon,
+  delCoupon,
+  addCoupon,
+  updateCoupon,
+} from "@/api/system/coupon";
+import { upload } from "@/api/public";
+
+export default {
+  name: "Coupon",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 优惠券的规则信息表格数据
+      couponList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        current: 1,
+        size: 10,
+        pages: 1,
+        name: null,
+        type: null,
+        discountType: null,
+        discountValue: null,
+        thresholdAmount: null,
+        obtainWay: null,
+        termDays: null,
+        status: null,
+        usedNum: null,
+        userLimit: null,
+        extParam: null,
+        isDelete: null,
+        handleWay: 0, //0默认,1新增,2修改,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        name: [
+          {
+            required: true,
+            message: "优惠券名称,可以和活动名称保持一致不能为空",
+            trigger: "blur",
+          },
+        ],
+        type: [
+          {
+            required: true,
+            message: "优惠券类型,1:普通券不能为空",
+            trigger: "change",
+          },
+        ],
+        discountType: [
+          {
+            required: true,
+            message: "优惠类型,1:无门槛, 2:折扣, 3:满减不能为空",
+            trigger: "change",
+          },
+        ],
+        discountValue: [
+          { required: true, message: "优惠值不能为空", trigger: "blur" },
+        ],
+        obtainWay: [
+          {
+            required: true,
+            message: "获取方式:1:手动领取 2,自动发放不能为空",
+            trigger: "blur",
+          },
+        ],
+        termDays: [
+          {
+            required: true,
+            message: "优惠券有效期天数,0不能为空",
+            trigger: "blur",
+          },
+        ],
+        usedNum: [
+          { required: true, message: "已使用数量不能为空", trigger: "blur" },
+        ],
+        userLimit: [
+          {
+            required: true,
+            message: "每个人限领的数量不能为空",
+            trigger: "blur",
+          },
+        ],
+      },
+    };
+  },
+  created() {
+    // this.getList();
+    this.getCouponList();
+  },
+  methods: {
+    /** 查询优惠券的规则信息列表 */
+    getList() {
+      this.loading = true;
+      listCoupon().then((res) => {
+        console.log(res);
+        this.couponList = res.rows;
+        // this.total = res.total;
+        this.loading = false;
+      });
+    },
+    //获取优惠券列表
+    getCouponList(queryParams) {
+      if (queryParams) {
+        getCoupon(this.queryParams).then((res) => {
+          console.log(res);
+          this.couponList = res.data.records;
+          this.total = res.data.records.length;
+          this.loading = false;
+        });
+      } else {
+        getCoupon().then((res) => {
+          this.couponList = res.data.records;
+          this.total = res.data.records.length;
+          this.loading = false;
+        });
+      }
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        name: null,
+        type: null,
+        discountType: null,
+        discountValue: null,
+        thresholdAmount: null,
+        obtainWay: null,
+        termDays: null,
+        status: null,
+        usedNum: null,
+        userLimit: null,
+        extParam: null,
+        createTime: null,
+        updateTime: null,
+        isDelete: null,
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getCouponList(this.queryParams);
+    },
+    /** 重置按钮操作 */
+    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.handleWay = 1;
+      this.reset();
+      this.open = true;
+      this.title = "添加优惠券的规则信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      this.open = true;
+      let id = row.id || this.ids;
+      this.form = row;
+      this.handleWay = 2; //2修改
+      //   let data = {}
+      //   data.id = id
+      //   data.updata = this.from
+      //   updateCoupon(data).then((res) =>{
+      //     console.log(res);
+      //   })
+      //   getCoupon(id).then((response) => {
+      //     this.form = response.data;
+      //     this.open = true;
+      //     this.title = "修改优惠券的规则信息";
+      //   });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate((valid) => {
+        if (this.handleWay == 1) {
+          //1新增
+          let data = this.form;
+          addCoupon(data).then((res) => {
+            if (res.code == 200) {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getCouponList();
+            }
+          });
+        } else if (this.handleWay == 2) {
+          let data = this.form;
+          updateCoupon(data).then((res) => {
+            if (res.code == 200) {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getCouponList();
+            } else {
+              this.$modal.msgSuccess(res.msg);
+            }
+          });
+        }
+        //   if (valid) {
+        //     if (this.form.id != null) {
+        //       updateCoupon(this.form).then(response => {
+        //         this.$modal.msgSuccess("修改成功");
+        //         this.open = false;
+        //         this.getList();
+        //       });
+        //     } else {
+        //       addCoupon(this.form).then(response => {
+        //         this.$modal.msgSuccess("新增成功");
+        //         this.open = false;
+        //         this.getList();
+        //       });
+        //     }
+        //   }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      this.ids.push(row.id);
+      let idList = this.ids;
+      //   this.$modal.confirm('是否确认删除优惠券的规则信息编号为"' + idList + '"的数据项?').then(()=>{
+      this.$modal.confirm("是否确认删除选中的优惠券").then(() => {
+        delCoupon(idList).then((res) => {
+          if (res.code == 200) {
+            this.$modal.msgSuccess("删除成功");
+            this.getCouponList();
+          } else {
+            this.$modal.msgSuccess(res.message);
+          }
+        });
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download(
+        "system/coupon/export",
+        {
+          ...this.queryParams,
+        },
+        `coupon_${new Date().getTime()}.xlsx`
+      );
+    },
+  },
+};
+</script>
+  

+ 2 - 2
src/views/login.vue

@@ -72,8 +72,8 @@ export default {
     return {
       codeUrl: "",
       loginForm: {
-        username: "admin",
-        password: "admin123",
+        username: "",
+        password: "",
         rememberMe: false,
         code: "",
         uuid: ""

+ 426 - 348
src/views/order/index.vue

@@ -1,25 +1,45 @@
 <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="cName">
-          <el-select v-model="queryParams.nTong" placeholder="请选择" style="width: 100px">
-            <el-option
-                v-for="item in orderStatus"
-                :key="item.value"
-                :label="item.label"
-                :value="item.value">
-              </el-option>
-          </el-select>
-        </el-form-item>
-        <!-- <el-form-item label="创建时间" prop="dtCreateTime">
+  <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="cName">
+        <el-input
+          v-model="queryParams.js.cName"
+          placeholder="请输入技师姓名"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item> -->
+      <el-form-item label="订单状态" prop="cName">
+        <el-select
+          v-model="queryParams.nStatus"
+          placeholder="请选择"
+          style="width: 100px"
+        >
+          <el-option
+            v-for="item in orderStatus"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          >
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <!-- <el-form-item label="创建时间" prop="dtCreateTime">
           <el-date-picker clearable
             v-model="queryParams.dtCreateTime"
             type="date"
@@ -27,13 +47,21 @@
             placeholder="请选择创建时间">
           </el-date-picker>
         </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"
@@ -45,104 +73,136 @@
         </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 label="订单号" align="center" prop="orderNo" />
-        <!-- <el-table-column label="技师id" align="center" prop="cJsId" />
+
+    <el-table
+      v-loading="loading"
+      :data="orderList"
+      @selection-change="handleSelectionChange"
+    >
+      <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" /> -->
-        <!-- <el-table-column label="订单明细" align="center" prop="cGoods" /> -->
-        <el-table-column label="订单金额" align="center" prop="dTotalMoney" />
-        <!-- <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="cGoods" /> -->
+      <el-table-column label="订单金额" align="center" prop="dTotalMoney" />
+      <!-- <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.cPhone" />
-        <el-table-column label="订单状态" align="center" prop="statusName" />
-        <!-- <el-table-column label="备注" align="center" prop="cNote" /> -->
-        <!-- <el-table-column label="订单状态" align="center" prop="nStatus" width="180">
+      <el-table-column label="技师姓名" align="center" prop="js.cName" />
+      <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" /> -->
+      <!-- <el-table-column label="订单状态" align="center" prop="nStatus" width="180">
           <template slot-scope="scope">
             <span>{{ scope.row.nStatus ==0?'待接单':(scope.row.nStatus ==1 ? '服务中':'待评价')}}</span>
           </template>
         </el-table-column> -->
-        <el-table-column label="时间" align="center" prop="dtCreateTime" />
-        <!-- <el-table-column label="推荐者id" align="center" prop="cTjOpenId" /> -->
-        <!-- <el-table-column label="创建时间" align="center" prop="dtCreateTime" width="180">
+      <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>
+        </template>
+      </el-table-column>
+      <!-- <el-table-column label="推荐者id" align="center" prop="cTjOpenId" /> -->
+      <!-- <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" class-name="small-padding fixed-width">
-          <template slot-scope="scope">
-            <!-- <el-button
+      <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)"
             >修改</el-button> -->
-            <el-button
-              size="mini"
-              type="text"
-              icon="el-icon-edit"
-              @click="handleInfo(scope.row)"
-            >详情</el-button>
-            <el-button
-              size="mini"
-              type="text"
-              icon="el-icon-delete"
-              @click="handleDelete(scope.row)"
-            >删除</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-      
-      <el-pagination
-        v-show="total>0"
-        background
-        @size-change="handleSizeChange"
-        @current-change="handleCurrentChange"
-        :current-page="queryParams.current"
-        :page-size="queryParams.size"
-        layout="total, sizes, prev, pager, next, jumper"
-        :total="total">
-      </el-pagination>
-  
-      <!-- 添加或修改认领对话框 -->
-      <el-dialog :title="title" :visible.sync="open" width="700px" append-to-body>
-        <el-form ref="form" :inline="true" :model="form" :rules="rules" label-width="90px">
-          <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>
-          <el-form-item label="用户姓名" prop="cName">
-            <el-input v-model="form.cName" placeholder="请输入姓名" />
-          </el-form-item>
-          <el-form-item label="用户电话" prop="cPhone">
-            <el-input v-model="form.cPhone" placeholder="请输入电话" />
-          </el-form-item>
-          <el-form-item label="技师姓名">
-            <el-input v-model="jsInfo.cName" placeholder="请输入姓名" />
-          </el-form-item>
-          <el-form-item label="技师电话">
-            <el-input v-model="jsInfo.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="cAddress">
-            <el-input type="textarea" v-model="form.cAddress" placeholder="请输入地址" />
-          </el-form-item>
-          
-          <el-form-item label="备注" prop="cNote">
-            <el-input v-model="form.cNote" type="textarea" placeholder="请输入内容" />
-          </el-form-item>
-          <!-- <el-form-item label="时间" prop="cTime">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleInfo(scope.row)"
+            >详情</el-button
+          >
+          <!-- <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            >删除</el-button
+          > -->
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <el-pagination
+      v-show="total > 0"
+      background
+      @size-change="handleSizeChange"
+      @current-change="handleCurrentChange"
+      :current-page="queryParams.current"
+      :page-size="queryParams.size"
+      layout="total, sizes, prev, pager, next, jumper"
+      :total="total"
+    >
+    </el-pagination>
+
+    <!-- 添加或修改认领对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="700px" append-to-body>
+      <el-form
+        ref="form"
+        :inline="true"
+        :model="form"
+        label-width="90px"
+        disabled="false"
+      >
+        <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>
+        <el-form-item label="用户姓名" prop="cName">
+          <el-input v-model="form.cName" placeholder="请输入姓名" />
+        </el-form-item>
+        <el-form-item label="用户电话" prop="cPhone">
+          <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>
+        <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-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="请输入内容"
+          />
+        </el-form-item>
+        <!-- <el-form-item label="时间" prop="cTime">
             <el-input v-model="form.cTime" placeholder="请输入时间" />
           </el-form-item> -->
-          <!-- <el-form-item label="推荐者id" prop="cTjOpenId">
+        <!-- <el-form-item label="推荐者id" prop="cTjOpenId">
             <el-input v-model="form.cTjOpenId" placeholder="请输入推荐者id" />
           </el-form-item> 
           <el-form-item label="创建时间" prop="dtCreateTime">
@@ -153,256 +213,274 @@
               placeholder="请选择创建时间">
             </el-date-picker>
           </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 class="orderDetails">
-                <el-table
-                    :data="form.cGoods"
-                    style="width: 100%">
-                    <el-table-column
-                      prop="cTitle"
-                      label="标题">
-                    </el-table-column>
-                    <el-table-column label="封面图" align="center" prop="cCover" width="100">
-                      <template slot-scope="scope">
-                        <image-preview :src="scope.row.cCover" :width="50" :height="50"/>
-                      </template>
-                    </el-table-column>
-                    <el-table-column
-                      prop="cLdList"
-                      label="亮点">
-                    </el-table-column>
-                    <el-table-column
-                      prop="nMinute"
-                      label="时长">
-                    </el-table-column>
-                    <el-table-column
-                      prop="dPrice"
-                      label="价格">
-                    </el-table-column>
-                    <el-table-column
-                      prop="number"
-                      label="项目个数">
-                    </el-table-column>
-                  </el-table>
-              </div>
+        <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 class="orderDetails">
+              <el-table :data="form.cGoods" style="width: 100%">
+                <el-table-column prop="cTitle" label="标题"> </el-table-column>
+                <el-table-column
+                  label="封面图"
+                  align="center"
+                  prop="cCover"
+                  width="100"
+                >
+                  <template slot-scope="scope">
+                    <image-preview
+                      :src="scope.row.cCover"
+                      :width="50"
+                      :height="50"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column prop="cLdList" label="亮点"> </el-table-column>
+                <el-table-column prop="nMinute" label="时长"> </el-table-column>
+                <el-table-column prop="dPrice" label="价格"> </el-table-column>
+                <el-table-column prop="number" label="项目个数">
+                </el-table-column>
+              </el-table>
             </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 @click="cancel">取 消</el-button>
-        </div>
-      </el-dialog>
-    </div>
-  </template>
+          </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 @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
   <script>
-  import { listOrder, getOrder, delOrder, addOrder, updateOrder } from "@/api/system/order";
-  
-  export default {
-    name: "Order",
-    data() {
-      return {
-        orderStatus:[
-          {value:0,label:'待接单'},
-          {value:1,label:'已接单'},
-          {value:2,label:'已到达'},
-          {value:3,label:'服务中'},
-          {value:4,label:'待评价'},
-          {value:-1,label:'已取消'},
-          {value:-2,label:'已拒绝'},
-          {value:-3,label:'已完成'},
-        ],
-        subShow:true,
-        drawer:false,
-        // 遮罩层
-        loading: true,
-        // 选中数组
-        ids: [],
-        // 非单个禁用
-        single: true,
-        // 非多个禁用
-        multiple: true,
-        // 显示搜索条件
-        showSearch: true,
-        // 总条数
-        total: 0,
-        // 认领表格数据
-        orderList: [],
-        // 弹出层标题
-        title: "",
-        // 是否显示弹出层
-        open: false,
-        // 查询参数
-        queryParams: {
-          current: 1,
-          size: 10,
-          cJsId: null,
-          cOpenId: null,
-          cGoods: null,
-          dTotalMoney: null,
-          nStatus: null,
-          cAddress: null,
-          cName: null,
-          cPhone: null,
-          cNote: null,
-          cTime: null,
-          cTjOpenId: null,
-          dtCreateTime: null
-        },
-        // 表单参数
-        form: {},
-        // 表单校验
-        rules: {
-        },
-        detalis:'',
-        jsInfo:'',
-      };
+import {
+  listOrder,
+  getOrder,
+  delOrder,
+  addOrder,
+  updateOrder,
+} from "@/api/system/order";
+
+export default {
+  name: "Order",
+  data() {
+    return {
+      orderStatus: [
+        { value: 0, label: "待接单" },
+        { value: 1, label: "已接单" },
+        { value: 2, label: "已到达" },
+        { value: 3, label: "服务中" },
+        { value: 4, label: "待评价" },
+        { value: 5, label: "已完成" },
+        { value: -1, label: "待付款" },
+        { value: -2, label: "已取消" },
+        { value: -3, label: "已拒绝" },
+      ],
+      subShow: true,
+      drawer: false,
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 认领表格数据
+      orderList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        current: 1,
+        size: 10,
+        cJsId: null,
+        cOpenId: null,
+        cGoods: null,
+        dTotalMoney: null,
+        nStatus: null,
+        cAddress: null,
+        cName: null,
+        cPhone: null,
+        cNote: null,
+        cTime: null,
+        cTjOpenId: null,
+        dtCreateTime: null,
+      },
+      // 表单参数
+      form: {
+        js:{
+          cName:'',
+          cPhone:'',
+          cNickName:''
+        }
+      },
+      // 表单校验
+      rules: {},
+      detalis: "",
+      jsInfo: "",
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询认领列表 */
+    getList() {
+      this.loading = true;
+      listOrder(this.queryParams).then((response) => {
+        this.orderList = response.data.records;
+        this.total = response.data.total;
+        this.loading = false;
+      });
     },
-    created() {
+    //   分页
+    handleSizeChange(val) {
+      // console.log(val,"handleSizeChange")
+      this.queryParams.size = val;
       this.getList();
     },
-    methods: {
-      /** 查询认领列表 */
-      getList() {
-        this.loading = true;
-        listOrder(this.queryParams).then(response => {
-          this.orderList = response.data.records;
-          this.total = response.data.total;
-          this.loading = false;
-        });
-      },
-    //   分页
-    handleSizeChange(val){
-            // console.log(val,"handleSizeChange")
-            this.queryParams.size = val
-            this.getList()
-        },
-        handleCurrentChange(val){
-            this.queryParams.current = val
-            this.getList()
-            // console.log(val,"val")
-        },
-      // 取消按钮
-      cancel() {
-        this.open = false;
-        this.reset();
-      },
-      // 表单重置
-      reset() {
-        this.form = {
-          cId: null,
-          cJsId: null,
-          cOpenId: null,
-          cGoods: null,
-          dTotalMoney: null,
-          nStatus: null,
-          cAddress: null,
-          cName: null,
-          cPhone: null,
-          cNote: null,
-          cTime: null,
-          cTjOpenId: null,
-          dtCreateTime: null
-        };
-        this.resetForm("form");
-      },
-      /** 搜索按钮操作 */
-      handleQuery() {
-        this.queryParams.pageNum = 1;
+    handleCurrentChange(val) {
+      this.queryParams.current = val;
+      this.getList();
+      // console.log(val,"val")
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.queryParams = {
+        current: 1,
+        size: 10,
+        cId: null,
+        cJsId: null,
+        cOpenId: null,
+        cGoods: null,
+        dTotalMoney: null,
+        nStatus: null,
+        cAddress: null,
+        cName: null,
+        cPhone: null,
+        cNote: null,
+        cTime: null,
+        cTjOpenId: null,
+        dtCreateTime: 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.cId)
-        this.single = selection.length!==1
-        this.multiple = !selection.length
-      },
-      /** 新增按钮操作 */
-      handleAdd() {
-        this.reset();
-        this.open = true;
-        this.title = "添加认领";
-      },
-      /** 修改按钮操作 */
-      handleUpdate(row) {
-        this.reset();
-        const cId = {
-            cId : row.cId || this.ids
-        }
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.reset();
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.cId);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加认领";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const cId = {
+        cId: row.cId || this.ids,
+      };
 
-        getOrder(cId).then(response => {
-          this.form = response.data;
-          this.open = true;
-          this.title = "修改认领";
-        });
-      },
-      // 详情按钮操作
-      handleInfo(row) {
-        this.reset();
-        const cId = {
-            cId : row.cId || this.ids
-        }
-        this.subShow = false;
+      getOrder(cId).then((response) => {
+        this.form = response.data;
         this.open = true;
-          this.title = "详情";
-        listOrder(cId).then(response => {
-          console.log(response.data.records,'order')
-          this.form = response.data.records[0];
-          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.title = "修改认领";
+      });
+    },
+    // 详情按钮操作
+    handleInfo(row) {
+      this.reset();
+      const cId = {
+        cId: row.cId || this.ids,
+      };
+      this.subShow = false;
+      this.open = true;
+      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;
-        });
-      },
-      /** 提交按钮 */
-      submitForm() {
-        this.$refs["form"].validate(valid => {
-          if (valid) {
-            if (this.form.cId != null) {
-              updateOrder(this.form).then(response => {
-                this.$modal.msgSuccess("修改成功");
-                this.open = false;
-                this.getList();
-              });
-            } else {
-              addOrder(this.form).then(response => {
-                this.$modal.msgSuccess("新增成功");
-                this.open = false;
-                this.getList();
-              });
-            }
+        // this.jsInfo = response.data.records[0].js;
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          if (this.form.cId != null) {
+            updateOrder(this.form).then((response) => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addOrder(this.form).then((response) => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
           }
-        });
-      },
-      /** 删除按钮操作 */
-      handleDelete(row) {
-        const cIds = {
-            cId: row.cId || this.ids
-        };
-        this.$modal.confirm('是否确认删除认领编号为"' + row.cId + '"的数据项?').then(function() {
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      console.log(row);
+      const cIds = {
+        cId: row.cId || this.ids,
+      };
+      this.$modal
+        .confirm('是否确认删除订单编号为"' + row.orderNo + '"的数据项?')
+        .then(function () {
           return delOrder(cIds);
-        }).then(() => {
+        })
+        .then(() => {
           this.getList();
           this.$modal.msgSuccess("删除成功");
-        }).catch(() => {});
-      },
-    }
-  };
-  </script>
+        })
+        .catch(() => {});
+    },
+  },
+};
+</script>
   <style scoped>
-    .el-pagination{
-      float: right;
-      padding: 30px 0;
-    }
-    .orderDetails .el-form-item{
-      margin-bottom: 10px;
-    }
-  </style>
+.el-pagination {
+  float: right;
+  padding: 30px 0;
+}
+.orderDetails .el-form-item {
+  margin-bottom: 10px;
+}
+</style>

+ 480 - 403
src/views/project/index.vue

@@ -1,15 +1,22 @@
 <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="cTitle">
-          <el-input
-            v-model="queryParams.cTitle"
-            placeholder="请输入标题"
-            clearable
-            @keyup.enter.native="handleQuery"
-          />
-        </el-form-item>
-        <!-- <el-form-item label="已售" prop="nSaleNumber">
+  <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="cTitle">
+        <el-input
+          v-model="queryParams.cTitle"
+          placeholder="请输入标题"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <!-- <el-form-item label="已售" prop="nSaleNumber">
           <el-input
             v-model="queryParams.nSaleNumber"
             placeholder="请输入已售"
@@ -17,23 +24,32 @@
             @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-col :span="1.5">
-          <el-button
-            type="primary"
-            plain
-            icon="el-icon-plus"
-            size="mini"
-            @click="handleAdd"
-          >新增</el-button>
-        </el-col>
-        <!-- <el-col :span="1.5">
+      <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"
+          >新增</el-button
+        >
+      </el-col>
+      <!-- <el-col :span="1.5">
           <el-button
             type="success"
             plain
@@ -44,7 +60,7 @@
             v-hasPermi="['system:xiangmu:edit']"
           >修改</el-button>
         </el-col> -->
-        <!-- <el-col :span="1.5">
+      <!-- <el-col :span="1.5">
           <el-button
             type="danger"
             plain
@@ -55,7 +71,7 @@
             v-hasPermi="['system:xiangmu:remove']"
           >删除</el-button>
         </el-col> -->
-        <!-- <el-col :span="1.5">
+      <!-- <el-col :span="1.5">
           <el-button
             type="warning"
             plain
@@ -65,105 +81,128 @@
             v-hasPermi="['system:xiangmu:export']"
           >导出</el-button>
         </el-col> -->
-        <!-- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> -->
-      </el-row>
-  
-      <el-table v-loading="loading" :data="xiangmuList" @selection-change="handleSelectionChange">
-        <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" /> -->
-        <el-table-column label="封面图" align="center" >
-            <template slot-scope="scope">
-                <div style="width: 100%;">
-                    <img :src="scope.row.cCover" style="width: 100%;"  alt="">
-                </div>
-            </template>
-        </el-table-column>
-        <el-table-column label="原价" align="center" prop="dYuanPrice" />
-        <el-table-column label="标注价格" align="center" prop="dPrice" />
-        <el-table-column label="时长分钟" align="center" prop="nMinute" />
-        <el-table-column label="亮点" align="center" prop="cLdList" />
-        <!-- <el-table-column label="性别限制
+      <!-- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> -->
+    </el-row>
+
+    <el-table
+      v-loading="loading"
+      :data="xiangmuList"
+      @selection-change="handleSelectionChange"
+    >
+      <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" /> -->
+      <el-table-column label="封面图" align="center">
+        <template slot-scope="scope">
+          <div style="width: 100%">
+            <img :src="scope.row.cCover" style="width: 100%" alt="" />
+          </div>
+        </template>
+      </el-table-column>
+      <el-table-column label="原价" align="center" prop="dYuanPrice" />
+      <el-table-column label="标注价格" align="center" prop="dPrice" />
+      <el-table-column label="时长分钟" align="center" prop="nMinute" />
+      <el-table-column label="亮点" align="center" prop="cLdList" />
+      <!-- <el-table-column label="性别限制
   0不限制
   1男
   2女" align="center" prop="nSexLimit" /> -->
-        <el-table-column label="适用人群" align="center" prop="cSyrq" />
-        <!-- <el-table-column label="项目详情" align="center" >
+      <el-table-column label="适用人群" align="center" prop="cSyrq" />
+      <!-- <el-table-column label="项目详情" align="center" >
             <template slot-scope="scope">
                 <div class="detailsClass" v-html="scope.row.cDetail"></div>
             </template>
         </el-table-column> -->
-        <!-- <el-table-column label="已售" align="center" prop="nSaleNumber" /> -->
-        <!-- <el-table-column label="创建时间" align="center" prop="dtCreateTime" width="180">
+      <!-- <el-table-column label="已售" align="center" prop="nSaleNumber" /> -->
+      <!-- <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" class-name="small-padding fixed-width">
-          <template slot-scope="scope">
-            <el-button
-              size="mini"
-              type="text"
-              icon="el-icon-edit"
-              @click="handleUpdate(scope.row)"
-            >修改</el-button>
-            <el-button
-              size="mini"
-              type="text"
-              icon="el-icon-delete"
-              @click="handleDelete(scope.row)"
-            >删除</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-      
-      <el-pagination
-        v-show="total>0"
-        background
-        @size-change="handleSizeChange"
-        @current-change="handleCurrentChange"
-        :current-page="queryParams.current"
-        :page-size="queryParams.size"
-        layout="total, sizes, prev, pager, next, jumper"
-        :total="total">
-      </el-pagination>
-  
-      <!-- 添加或修改项目对话框 -->
-      <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-        <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-          <el-form-item label="标题" prop="cTitle">
-            <el-input v-model="form.cTitle" placeholder="请输入标题" />
-          </el-form-item>
-          <el-form-item label="封面图" prop="cCover">
-            <el-upload
-                action="#"
-                class="avatar-uploader"
-                :http-request="handleAvatarSuccess"
-                :before-upload="beforeAvatarUpload"
-                :show-file-list="false"
-                >
-                <img v-if="form.cCover" :src="form.cCover" class="avatar">
-                <i v-else class="el-icon-plus avatar-uploader-icon"></i>
-            </el-upload>
-          </el-form-item>
-          <el-form-item label="原价" prop="dYuanPrice">
-            <el-input v-model="form.dYuanPrice" placeholder="请输入原价" />
-          </el-form-item>
-          <el-form-item label="标注价格" prop="dPrice">
-            <el-input v-model="form.dPrice" placeholder="请输入标注价格" />
-          </el-form-item>
-          <el-form-item label="时长分钟" prop="nMinute">
-            <el-input v-model="form.nMinute" placeholder="请输入时长分钟" />
-          </el-form-item>
-          <el-form-item label="亮点">
-            <el-checkbox-group v-model="checkboxGroup" @change="handleCheckedChange">
-                <el-checkbox v-for="(item,index) in cLdList" :label="item.cdescribe" :key="index">{{ item.cdescribe }} </el-checkbox>
-            </el-checkbox-group>
-          </el-form-item>
-        
+      <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)"
+            >修改</el-button
+          >
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            >删除</el-button
+          >
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <el-pagination
+      v-show="total > 0"
+      background
+      @size-change="handleSizeChange"
+      @current-change="handleCurrentChange"
+      :current-page="queryParams.current"
+      :page-size="queryParams.size"
+      layout="total, sizes, prev, pager, next, jumper"
+      :total="total"
+    >
+    </el-pagination>
 
-          <!-- <el-form-item label="性别限制
+    <!-- 添加或修改项目对话框 -->
+    <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="标题" prop="cTitle">
+          <el-input v-model="form.cTitle" placeholder="请输入标题" />
+        </el-form-item>
+        <el-form-item label="封面图" prop="cCover">
+          <el-upload
+            action="#"
+            class="avatar-uploader"
+            :http-request="handleAvatarSuccess"
+            :before-upload="beforeAvatarUpload"
+            :show-file-list="false"
+          >
+            <!-- <img v-if="form.cCover" :src="form.cCover" class="avatar"> -->
+            <img v-if="changeImg" :src="changeImg" class="avatar" />
+            <i
+              v-else
+              class="el-icon-plus avatar-uploader-icon"
+              style="border: 1px solid #ccc"
+            ></i>
+          </el-upload>
+        </el-form-item>
+        <el-form-item label="原价" prop="dYuanPrice">
+          <el-input v-model="form.dYuanPrice" placeholder="请输入原价" />
+        </el-form-item>
+        <el-form-item label="标注价格" prop="dPrice">
+          <el-input v-model="form.dPrice" placeholder="请输入标注价格" />
+        </el-form-item>
+        <el-form-item label="时长分钟" prop="nMinute">
+          <el-input v-model="form.nMinute" placeholder="请输入时长分钟" />
+        </el-form-item>
+        <el-form-item label="亮点">
+          <el-checkbox-group
+            v-model="checkedCities"
+            @change="handleCheckedChange"
+          >
+            <el-checkbox
+              v-for="(item, index) in cLdList"
+              :label="item.cdescribe"
+              :key="index"
+              >{{ item.cdescribe }}
+            </el-checkbox>
+          </el-checkbox-group>
+        </el-form-item>
+
+        <!-- <el-form-item label="性别限制
   0不限制
   1男
   2女" prop="nSexLimit">
@@ -172,24 +211,32 @@
   1男
   2女" />
           </el-form-item> -->
-          <el-form-item label="适用人群" prop="cSyrq">
-            <el-input v-model="form.cSyrq" type="textarea" placeholder="请输入内容" />
-          </el-form-item>
-          <el-form-item label="项目详情" prop="cDetail">
-            <!-- <el-input v-model="form.cDetail" type="textarea" placeholder="请输入内容" /> -->
-            <!-- <editor v-model="form.cDetail" :min-height="192"/> -->
-            <el-upload
-                action="#"
-                class="avatar-uploader"
-                :http-request="handleDetailsSuccess"
-                :before-upload="beforeDetailsUpload"
-                :show-file-list="false"
-                >
-                <img v-if="form.cDetail" :src="form.cDetail" style="width:100%;">
-                <i v-else class="el-icon-plus avatar-uploader-icon"></i>
-            </el-upload>
-          </el-form-item>
-          <!-- <el-form-item label="已售" prop="nSaleNumber">
+        <el-form-item label="适用人群" prop="cSyrq">
+          <el-input
+            v-model="form.cSyrq"
+            type="textarea"
+            placeholder="请输入内容"
+          />
+        </el-form-item>
+        <el-form-item label="项目详情" prop="cDetail">
+          <!-- <el-input v-model="form.cDetail" type="textarea" placeholder="请输入内容" /> -->
+          <!-- <editor v-model="form.cDetail" :min-height="192"/> -->
+          <el-upload
+            action="#"
+            class="avatar-uploader"
+            :http-request="handleDetailsSuccess"
+            :before-upload="beforeDetailsUpload"
+            :show-file-list="false"
+          >
+            <img v-if="form.cDetail" :src="form.cDetail" style="width: 100%" />
+            <i
+              v-else
+              class="el-icon-plus avatar-uploader-icon"
+              style="border: 1px solid #ccc"
+            ></i>
+          </el-upload>
+        </el-form-item>
+        <!-- <el-form-item label="已售" prop="nSaleNumber">
             <el-input v-model="form.nSaleNumber" placeholder="请输入已售" />
           </el-form-item>
           <el-form-item label="创建时间" prop="dtCreateTime">
@@ -200,285 +247,315 @@
               placeholder="请选择创建时间">
             </el-date-picker>
           </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-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 { listXiangmu, getXiangmu, delXiangmu, addXiangmu,highList } from "@/api/system/xiangmu";
-  import { upload } from "@/api/public";
-  export default {
-    name: "Xiangmu",
-    data() {
-      return {
-        // 遮罩层
-        loading: true,
-        // 选中数组
-        ids: [],
-        // 非单个禁用
-        single: true,
-        // 非多个禁用
-        multiple: true,
-        // 显示搜索条件
-        showSearch: true,
-        // 总条数
-        total: 0,
-        // 项目表格数据
-        xiangmuList: [],
-        // 弹出层标题
-        title: "",
-        // 是否显示弹出层
-        open: false,
-        // 查询参数
-        queryParams: {
-        //   pages: 1,
-          size: 10,
-          cTitle: null,
-          current:1,
-          cCover: null,
-          dYuanPrice: null,
-          dPrice: null,
-          nMinute: null,
-          cLdList: null,
-          nSexLimit: null,
-          cSyrq: null,
-          cDetail: null,
-          nSaleNumber: null,
-          dtCreateTime: null
-        },
-        // 表单参数
-        form: {},
-        checkboxGroup:[],
-        cLdList:[],
-        // 表单校验
-        rules: {
-        }
-      };
+import {
+  listXiangmu,
+  getXiangmu,
+  delXiangmu,
+  addXiangmu,
+  highList,
+} from "@/api/system/xiangmu";
+import { upload } from "@/api/public";
+export default {
+  name: "Xiangmu",
+  data() {
+    return {
+      strogeImg:'',
+      changeImg: "",
+      checkedCities: [],
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 项目表格数据
+      xiangmuList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        // pages: 1,
+        size: 10,
+        cTitle: null,
+        current: 1,
+        cCover: null,
+        dYuanPrice: null,
+        dPrice: null,
+        nMinute: null,
+        cLdList: null,
+        nSexLimit: null,
+        cSyrq: null,
+        cDetail: null,
+        nSaleNumber: null,
+        dtCreateTime: null,
+      },
+      // 表单参数
+      form: {},
+      checkboxGroup: [],
+      cLdList: [],
+      // 表单校验
+      rules: {},
+    };
+  },
+  created() {
+    this.getList();
+    this.getCate();
+  },
+  methods: {
+    // 亮点
+    getCate() {
+      highList().then((res) => {
+        this.cLdList = res.data;
+      });
     },
-    created() {
+    handleCheckedChange(val) {
+      // this.checkedCities = val ? cityOptions : [];
+      this.form.cLdList = val.join(",");
+    },
+    handleSizeChange(val) {
+      // console.log(val,"handleSizeChange")
+      this.queryParams.size = val;
       this.getList();
-      this.getCate();
     },
-    methods: {
-        // 亮点
-        getCate(){
-            highList().then(res => {
-                console.log(res.data,"hhhhhhhhh")
-                this.cLdList = res.data;
-            })
-        },
-        handleCheckedChange(val){
-            // this.checkedCities = val ? cityOptions : [];
-            console.log(val,"checked")
-            this.form.cLdList = val;
-        },
-        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;
-        listXiangmu(this.queryParams).then(response => {
-            console.log(response.data.total,'111111')
-          this.xiangmuList = response.data.records;
-          this.xiangmuList.forEach(element => {
-            element.cCover = process.env.VUE_APP_BASE_API+ element.cCover 
-          });
-          
-
-          this.total = response.data.total;
-          this.queryParams.pages= response.data.pages
-          this.loading = false;
+    handleCurrentChange(val) {
+      this.queryParams.current = val;
+      this.getList();
+      // console.log(val,"val")
+    },
+    /** 查询项目列表 */
+    getList() {
+      this.loading = true;
+      listXiangmu(this.queryParams).then((response) => {
+        this.xiangmuList = response.data.records;
+        this.xiangmuList.forEach((element) => {
+          element.cCover = process.env.VUE_APP_BASE_API + element.cCover;
         });
-      },
-      // 图片上传
-      handleAvatarSuccess(file) {
-            // console.log(file,"file")
-            const formData = new FormData()
-            formData.append('file',file.file)
-            upload(formData).then(response => {
-                this.queryParams.cCover = response.fileName
-                this.form.cCover = process.env.VUE_APP_BASE_API+response.fileName
-                console.log(typeof this.form.cCover,"this.form.cCover")
-                console.log(response,"图片上传成功!")
-            })
-      },
-      beforeAvatarUpload(file) {
-            if (file.type.indexOf("image/") == -1) {
-                this.$modal.msgError("文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。");
-            }
-      },
-      //项目详情上传 -------------图片
-      handleDetailsSuccess(file) {
-        // console.log(file,"file")
-        const formData = new FormData()
-        formData.append('file',file.file)
-        upload(formData).then(response => {
-            this.queryParams.cDetail = response.fileName
-            this.form.cDetail = process.env.VUE_APP_BASE_API+response.fileName
-            console.log(typeof this.form.cDetail,"this.form.cCover")
-            console.log(response,"图片上传成功!")
-        })
-      },
-      beforeDetailsUpload(file) {
-        if (file.type.indexOf("image/") == -1) {
-          this.$modal.msgError("文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。");
-        }
-      },
 
-      // 取消按钮
-      cancel() {
-        this.open = false;
-        this.reset();
-      },
-      // 表单重置
-      reset() {
-        this.form = {
-          cId: '',
-          cTitle: '',
-          cCover: '',
-          dYuanPrice: '',
-          dPrice: '',
-          nMinute: '',
-          cLdList: '',
-          nSexLimit: '',
-          cSyrq: '',
-          cDetail: '',
-          nSaleNumber: '',
-          dtCreateTime: ''
-        };
-        this.resetForm("form");
-      },
-      /** 搜索按钮操作 */
-      handleQuery() {
-        this.queryParams.current = 1;
-        this.getList();
-      },
-      /** 重置按钮操作 */
-      resetQuery() {
-        this.resetForm("queryForm");
-        this.handleQuery();
-      },
-      // 多选框选中数据
-      handleSelectionChange(selection) {
-        this.ids = selection.map(item => item.cId)
-        this.single = selection.length!==1
-        this.multiple = !selection.length
-      },
-      /** 新增按钮操作 */
-      handleAdd() {
-        this.checkboxGroup = []
-        this.reset();
-        this.open = true;
-        this.title = "添加项目";
-      },
-      /** 修改按钮操作 */
-      handleUpdate(row) {
-        this.reset();
-        const cId = {
-          cId :row.cId || this.ids
-        }
+        this.total = response.data.total;
+        this.queryParams.pages = response.data.pages;
+        this.loading = false;
+      });
+    },
+    // 图片上传
+    handleAvatarSuccess(file) {
+      const formData = new FormData();
+      formData.append("file", file.file);
+      upload(formData).then((response) => {
+        this.changeImg = process.env.VUE_APP_BASE_API + response.fileName
+        console.log(this.changeImg);
+        this.queryParams.cCover = response.fileName
+        // this.form.cCover = process.env.VUE_APP_BASE_API+response.fileName
+        // console.log(typeof this.form.cCover,"this.form.cCover")
+        // console.log(response,"图片上传成功!")
+      });
+    },
+    beforeAvatarUpload(file) {
+      if (file.type.indexOf("image/") == -1) {
+        this.$modal.msgError(
+          "文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。"
+        );
+      }
+    },
+    //项目详情上传 -------------图片
+    handleDetailsSuccess(file) {
+      // console.log(file,"file")
+      const formData = new FormData();
+      formData.append("file", file.file);
+      upload(formData).then((response) => {
+        // this.changeImg = process.env.VUE_APP_BASE_API+response.fileName
+        // console.log(this.changeImg);
+        this.queryParams.cDetail = response.fileName;
+        this.form.cDetail = process.env.VUE_APP_BASE_API + response.fileName;
+        // console.log(typeof this.form.cDetail,"this.form.cCover")
+        // console.log(response,"图片上传成功!")
+      });
+    },
+    beforeDetailsUpload(file) {
+      if (file.type.indexOf("image/") == -1) {
+        this.$modal.msgError(
+          "文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。"
+        );
+      }
+    },
 
-        // this.form = row;
-        this.open = true;
-        this.checkboxGroup = row.cLdList
-        this.title = "修改项目";
-        getXiangmu(cId).then(res =>{
-          console.log(res,'5555555555')
-          this.form = res.data
-          this.form.cCover = process.env.VUE_APP_BASE_API+res.data.cCover
-          this.form.cDetail = process.env.VUE_APP_BASE_API+res.data.cDetail
-        })
-      },
-      /** 提交按钮 */
-      submitForm() {
-        this.$refs["form"].validate(valid => {
-          if (valid) {
-            if (this.form.cId != null) {
-              this.form.cCover = this.queryParams.cCover
-              this.form.cDetail = this.queryParams.cDetail
-                addXiangmu(this.form).then(response => {
-                this.$modal.msgSuccess("修改成功");
-                this.open = false;
-                this.getList();
-              });
-            } else {
-              addXiangmu(this.form).then(response => {
-                this.$modal.msgSuccess("新增成功");
-                this.open = false;
-                this.getList();
-              });
-            }
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.changeImg = '';
+      this.queryParams.cCover = this.strogeImg;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        cId: "",
+        cTitle: "",
+        cCover: "",
+        dYuanPrice: "",
+        dPrice: "",
+        nMinute: "",
+        cLdList: "",
+        nSexLimit: "",
+        cSyrq: "",
+        cDetail: "",
+        nSaleNumber: "",
+        dtCreateTime: "",
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.current = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.cId);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.changeImg = ''
+      this.checkedCities = []
+      this.checkboxGroup = [];
+      this.reset();
+      this.open = true;
+      this.title = "添加项目";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.checkedCities = [];
+      this.reset();
+      const cId = {
+        cId: row.cId || this.ids,
+      };
+
+      // this.form = row;
+      this.open = true;
+      // this.checkedCities = row.cLdList
+      this.title = "修改项目";
+      getXiangmu(cId).then((res) => {
+        let str = res.data.cLdList;
+        this.checkedCities = str.split(",");
+        this.form = res.data;
+        // this.form.cCover = process.env.VUE_APP_BASE_API+res.data.cCover
+        this.strogeImg = res.data.cCover
+        res.data.cCover == ''?this.changeImg = '': this.changeImg = process.env.VUE_APP_BASE_API + res.data.cCover;
+        this.form.cDetail = process.env.VUE_APP_BASE_API + res.data.cDetail;
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          if (this.form.cId != null) {
+            this.queryParams.cCover == ""
+              ? (this.form.cCover = "")
+              : (this.form.cCover = this.queryParams.cCover);
+            this.form.cDetail = this.queryParams.cDetail;
+            this.form.cCover = this.queryParams.cCover
+            addXiangmu(this.form).then((response) => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addXiangmu(this.form).then((response) => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
           }
-        });
-      },
-      /** 删除按钮操作 */
-      handleDelete(row) {
-        const cIds = row.cId || this.ids;
-        const data = {
-            cId : cIds
         }
-        this.$modal.confirm('是否确认删除项目"' + row.cTitle + '"?').then(function() {
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const cIds = row.cId || this.ids;
+      const data = {
+        cId: cIds,
+      };
+      this.$modal
+        .confirm('是否确认删除项目"' + row.cTitle + '"?')
+        .then(function () {
           return delXiangmu(data);
-        }).then(() => {
+        })
+        .then(() => {
           this.getList();
           this.$modal.msgSuccess("删除成功");
-        }).catch(() => {});
-      },
-      /** 导出按钮操作 */
-      handleExport() {
-        this.download('system/xiangmu/export', {
-          ...this.queryParams
-        }, `xiangmu_${new Date().getTime()}.xlsx`)
-      }
-    }
-  };
-  </script>
+        })
+        .catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download(
+        "system/xiangmu/export",
+        {
+          ...this.queryParams,
+        },
+        `xiangmu_${new Date().getTime()}.xlsx`
+      );
+    },
+  },
+};
+</script>
   <style scoped>
-  .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: 178px;
-      height: 178px;
-      line-height: 178px;
-      text-align: center;
-    }
-    .avatar {
-      width: 178px;
-      height: 178px;
-      display: block;
-    }
-    .el-pagination{
-      float: right;
-      padding: 30px 0;
-    }
-    .detailsClass{
-        width: 100%;
-    }
-    .detailsClass img{
-        /* max-width: 100% !important; */
-        width: 100% !important;
-    }
-  </style>
+.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: 178px;
+  height: 178px;
+  line-height: 178px;
+  text-align: center;
+}
+.avatar {
+  width: 178px;
+  height: 178px;
+  display: block;
+}
+.el-pagination {
+  float: right;
+  padding: 30px 0;
+}
+.detailsClass {
+  width: 100%;
+}
+.detailsClass img {
+  /* max-width: 100% !important; */
+  width: 100% !important;
+}
+</style>

+ 23 - 6
src/views/record/index.vue

@@ -39,7 +39,7 @@
         
         <el-table-column label="是否审核" align="center" prop="nStatus" width="100">
           <template slot-scope="scope">
-            <span>{{ scope.row.nStatus ===1?'审核通过' :'审核中' }}</span>
+            <span>{{ scope.row.nStatus ===1?'审核通过' : scope.row.nStatus ===2?'驳回':'审核中'}}</span>
           </template>
         </el-table-column>
         <el-table-column label="创建时间" align="center" prop="dtCreateTime" width="180">
@@ -53,15 +53,16 @@
               size="mini"
               type="text"
               icon="el-icon-edit"
+              :disabled="scope.row.nStatus ===1 || scope.row.nStatus ===2"
               @click="auditIn(scope.row)"
             >审核</el-button>
-            <!-- <el-button
+            <el-button
               size="mini"
               type="text"
               icon="el-icon-delete"
-              @click="handleDelete(scope.row)"
-              v-hasPermi="['system:record:remove']"
-            >删除</el-button> -->
+              :disabled="scope.row.nStatus ===1 || scope.row.nStatus ===2"
+              @click="turn(scope.row)"
+            >驳回</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -146,7 +147,7 @@
           cOpenId: null,
           dPrice: null,
           cTime: null,
-          cPhone: null,
+          cPhone: '',
           cName: null,
           cImage: null,
           nStatus: null,
@@ -180,6 +181,22 @@
           
         })
       },
+      turn(e){
+        var ids= {
+          cId:e.cId,
+          nStatus:2
+        }
+         auditRecord(ids).then(res =>{
+          // console.log(res.data,"eeeeeeeeeeeeeeeeeeee")
+          if(res.code == 200){
+            this.$modal.msgSuccess("驳回成功");
+            this.getList();
+          }else{
+            this.$modal.msgError(res.data.msg);
+          }
+          
+        })
+      },
       handleSizeChange(val){
             // console.log(val,"handleSizeChange")
             this.queryParams.size = val

+ 1 - 1
src/views/system/user/index.vue

@@ -164,7 +164,7 @@
             width="160"
             class-name="small-padding fixed-width"
           >
-            <template slot-scope="scope" v-if="scope.row.userId !== 1">
+            <template slot-scope="scope" v-if="scope.row.userId ">
               <el-button
                 size="mini"
                 type="text"

+ 372 - 0
src/views/teamWork/index.vue

@@ -0,0 +1,372 @@
+<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="city">
+        <el-input
+          v-model="queryParams.city"
+          placeholder="请输入代理城市"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="姓名" prop="name">
+        <el-input
+          v-model="queryParams.name"
+          placeholder="请输入合伙人姓名"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="手机" prop="phoneNum">
+        <el-input
+          v-model="queryParams.phoneNum"
+          placeholder="请输入手机"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="公司名称" prop="company">
+        <el-input
+          v-model="queryParams.company"
+          placeholder="请输入公司名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <!-- <el-form-item label="是否从事过按摩行业(0否 ,1是)" prop="isMassage">
+        <el-input
+          v-model="queryParams.isMassage"
+          placeholder="请输入是否从事过按摩行业(0否 ,1是)"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="有几年按摩行业管理经验" prop="years">
+        <el-input
+          v-model="queryParams.years"
+          placeholder="请输入有几年按摩行业管理经验"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      
+      <el-form-item label="是否正在经营实体门店(0否, 1是)" prop="isEntity">
+        <el-input
+          v-model="queryParams.isEntity"
+          placeholder="请输入是否正在经营实体门店(0否, 1是)"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="是否删除0否1是" prop="isDelete">
+        <el-input
+          v-model="queryParams.isDelete"
+          placeholder="请输入是否删除0否1是"
+          clearable
+          @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-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['system:development: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:development: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:development: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:development:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row> -->
+
+    <el-table v-loading="loading" :data="developmentList" @selection-change="handleSelectionChange">
+      <el-table-column label="id" align="center" prop="id" />
+      <el-table-column label="代理城市" align="center" prop="city" />
+      <el-table-column label="城市资源介绍" align="center" prop="resource" />
+      <el-table-column label="合伙人姓名" align="center" prop="name" />
+      <el-table-column label="手机" align="center" prop="phoneNum" />
+      <el-table-column label="公司名称" align="center" prop="company" />
+      <el-table-column label="是否从事过按摩行业" align="center" prop="isMassage">
+        <template slot-scope="scope">
+            <span>{{ scope.row.isMassage == 1?'是' :'否' }}</span>
+          </template>
+      </el-table-column>
+      <el-table-column label="有几年按摩行业管理经验" align="center" prop="years" />
+      <!-- <el-table-column label="openId" align="center" prop="openId" /> -->
+      <el-table-column label="是否正在经营实体门店" align="center" prop="isEntity">
+        <template slot-scope="scope">
+            <span>{{ scope.row.isEntity == 1?'是' :'否' }}</span>
+          </template>
+      </el-table-column>
+      <!-- <el-table-column label="备注" align="center" prop="remark" /> -->
+      <!-- <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:development:edit']"
+          >修改</el-button> -->
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.current"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改招商代理对话框 -->
+    <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="代理城市" prop="city">
+          <el-input v-model="form.city" placeholder="请输入代理城市" />
+        </el-form-item>
+        <el-form-item label="城市资源介绍" prop="resource">
+          <el-input v-model="form.resource" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="合伙人姓名" prop="name">
+          <el-input v-model="form.name" placeholder="请输入合伙人姓名" />
+        </el-form-item>
+        <el-form-item label="手机" prop="phoneNum">
+          <el-input v-model="form.phoneNum" placeholder="请输入手机" />
+        </el-form-item>
+        <el-form-item label="公司名称" prop="company">
+          <el-input v-model="form.company" placeholder="请输入公司名称" />
+        </el-form-item>
+        <el-form-item label="是否从事过按摩行业(0否 ,1是)" prop="isMassage">
+          <el-input v-model="form.isMassage" placeholder="请输入是否从事过按摩行业(0否 ,1是)" />
+        </el-form-item>
+        <el-form-item label="有几年按摩行业管理经验" prop="years">
+          <el-input v-model="form.years" placeholder="请输入有几年按摩行业管理经验" />
+        </el-form-item>
+        <el-form-item label="openId" prop="openId">
+          <el-input v-model="form.openId" placeholder="请输入openId" />
+        </el-form-item>
+        <el-form-item label="是否正在经营实体门店(0否, 1是)" prop="isEntity">
+          <el-input v-model="form.isEntity" placeholder="请输入是否正在经营实体门店(0否, 1是)" />
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" placeholder="请输入备注" />
+        </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 { listDevelopment, getDevelopment, delDevelopment, addDevelopment, updateDevelopment } from "@/api/system/teamWork";
+
+export default {
+  name: "Development",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 招商代理表格数据
+      developmentList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        current: 1,
+        pageSize: 10,
+        city: null,
+        resource: null,
+        name: null,
+        phoneNum: null,
+        company: null,
+        isMassage: null,
+        years: null,
+        openId: null,
+        isEntity: null,
+        isDelete: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询招商代理列表 */
+    getList() {
+      this.loading = true;
+      listDevelopment(this.queryParams).then(response => {
+        this.developmentList = response.data.records;
+        this.total = response.data.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        city: null,
+        resource: null,
+        name: null,
+        phoneNum: null,
+        company: null,
+        isMassage: null,
+        years: null,
+        openId: null,
+        isEntity: null,
+        remark: null,
+        createTime: null,
+        updateTime: null,
+        isDelete: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.current = 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
+        this.open = true;
+        this.title = "修改技师";
+    //   updateDevelopment(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) {
+            updateDevelopment(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addDevelopment(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      let ids =[]
+      ids.push(row.id)
+      this.$modal.confirm('是否确认删除招商代理编号为"' + row.id  + '"的数据项?').then(function() {
+        return delDevelopment(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('system/development/export', {
+        ...this.queryParams
+      }, `development_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 119 - 67
src/views/technician/index.vue → src/views/technician/check/check.vue

@@ -1,10 +1,18 @@
 <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-form-item label="技师姓名" prop="cName">
           <el-input
             v-model="queryParams.cName"
-            placeholder="请输入姓名"
+            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"
           />
@@ -12,7 +20,7 @@
         <el-form-item label="电话" prop="cName">
           <el-input
             v-model="queryParams.cPhone"
-            placeholder="请输入姓名"
+            placeholder="请输入技师电话"
             clearable
             @keyup.enter.native="handleQuery"
           />
@@ -27,7 +35,7 @@
               </el-option>
           </el-select>
         </el-form-item> 
-        <el-form-item label="服务状态" prop="nStatus">
+        <!-- <el-form-item label="服务状态" prop="nStatus">
           <el-select v-model="queryParams.nStatus" placeholder="请选择" style="width: 100px">
             <el-option
                 v-for="item in serviceState"
@@ -36,7 +44,7 @@
                 :value="item.value">
               </el-option>
           </el-select>
-        </el-form-item>
+        </el-form-item> -->
         <el-form-item label="性别" prop="nSex">
           <el-select v-model="queryParams.nSex" placeholder="请选择" style="width: 100px">
             <el-option
@@ -57,6 +65,7 @@
         <!-- <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>
@@ -101,11 +110,11 @@
         <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">
+        <!-- <el-table-column label="服务状态" align="center" prop="nStatus">
             <template slot-scope="scope">
-            <span>{{ scope.row.nStatus ===1?'服务中' :'可服务' }}</span>
+            <span>{{ scope.row.nStatus ===1?'服务中' :scope.row.nStatus ===2?'不可服务':'可服务' }}</span>
           </template>
-        </el-table-column>
+        </el-table-column> -->
         <!-- <el-table-column label="上岗状态" align="center" prop="nStatus">
             <template slot-scope="scope">
             <span>{{ scope.row.nStatus2 ===0?'已上岗' :'未上岗' }}</span>
@@ -113,7 +122,7 @@
         </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>
+            <span>{{ scope.row.nTong ===0 ? '待审核' :'已退回' }}</span>
           </template>
         </el-table-column>
         <!-- <el-table-column label="注册时间" align="center" prop="cTime" /> -->
@@ -133,12 +142,12 @@
               icon="el-icon-notebook-1"
               @click="handleDetail(scope.row)"
             >详情</el-button>
-            <el-button
+            <!-- <el-button
               size="mini"
               type="text"
               icon="el-icon-edit"
               @click="handleUpdate(scope.row)"
-            >修改</el-button>
+            >修改</el-button> -->
             <el-button
               size="mini"
               type="text"
@@ -159,8 +168,8 @@
         :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-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> -->
@@ -235,7 +244,7 @@
             <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-input v-model="form.nStar" placeholder="请输入评分"/>
           </el-form-item>
           <el-form-item label="佣金比例" prop="nBili">
             <el-input v-model="form.nBili" placeholder="请输入佣金比例" />
@@ -244,12 +253,12 @@
             <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> -->
           <!-- <el-form-item label="审核状态" prop="nTong">
             <el-radio-group v-model="form.nTong">
               <el-radio :label="0">未通过</el-radio>
@@ -286,6 +295,10 @@
             </el-date-picker>
           </el-form-item> -->
         </el-form>
+        <div slot="footer" style="text-align: justify;margin-bottom: 20px;">
+          <el-button type="primary" @click="submitForm">上 岗</el-button>
+          <el-button @click="cancel">下 岗</el-button>
+        </div>
         <div slot="footer" class="dialog-footer">
           <el-button type="primary" @click="submitForm">确 定</el-button>
           <el-button @click="cancel">取 消</el-button>
@@ -303,6 +316,7 @@
               
             </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>
@@ -353,7 +367,7 @@
             </div>
             <div class="js_name" style="height: auto;width: 100%;">
               <b>地址:</b>
-              <span>{{ jsInfos.cAddress }}</span>
+              <span>{{jsInfos.address}} {{jsInfos.name}} {{jsInfos.atlasAdd}}</span>
               <!-- <span>{{ JSON.parse(jsInfos.cAddress).address +'('+ JSON.parse(jsInfos.cAddress).name +')'}}</span> -->
             </div>
             <div></div>
@@ -373,6 +387,7 @@
     name: "Js",
     data() {
       return {
+        isDisabled:false,
         auditShow:false,
         drawer: false,
         dialogVisible:false,
@@ -414,6 +429,7 @@
           nStatus: null,
           nStatus2: null,
           nTong: null,
+          pageType:2,
           cTime: null,
           nB1: null,
           nB2: null,
@@ -435,12 +451,13 @@
         updataImg22:[],
         auditStatus:[
           {value:0,label:'待审核'},
-          {value:1,label:'已通过'},
+        //   {value:1,label:'已通过'},
           {value:2,label:'已退回'},
         ],
         serviceState:[
           {value:0,label:'可服务'},
           {value:1,label:'服务中'},
+          {value:2,label:'不可服务'},
         ],
         sex:[
           {value:0,label:'女'},
@@ -467,12 +484,16 @@
         }else{
           this.$modal.msgSuccess("该技师已操作");
         }
-        
       }, 
       returnJs(ids){
-        if(this.ifTong == 0){
+        this.$prompt('请输入退回原因', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+        }).then(({ value }) => {
+          if(this.ifTong == 0){
           var data = {
             id:ids,
+            reasonRefusal:value
           }
           repulseJs(data).then(response => {
             this.$modal.msgSuccess("已退回");
@@ -482,45 +503,62 @@
         }else{
           this.$modal.msgSuccess("该技师已操作");
         }
-       
+          this.$message({
+            type: 'success',
+          });
+        }).catch(() => {
+          this.$message({
+            type: 'info',
+            message: '取消输入'
+          });       
+        });  
       },
       handleDetail(row){
-        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 => {
-          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.$router.push({
+          path:'./details',
+          query:{
+            id:row.id
           }
-          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.ifTong = this.jsInfos.nTong
-          // console.log(this.jsInfos,"rrrrrrrrrrrrrrrrrrr")
-        });
+        })
+        // 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);
@@ -540,7 +578,6 @@
             this.updataImg11.push(response.fileName)
         })
       },
-
       beforeImagesUpload(file) {
         if (file.type.indexOf("image/") == -1) {
           proxy.$modal.msgError("文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。");
@@ -558,7 +595,6 @@
             this.updataImg22.push(response.fileName)
         })
       },
-
       beforesfzImagesUpload(file) {
         if (file.type.indexOf("image/") == -1) {
           proxy.$modal.msgError("文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。");
@@ -566,8 +602,6 @@
         }
         return true
       },
-
-
       // 头像上传
       handleAvatarSuccess(file) {
             // console.log(file,"file")
@@ -603,13 +637,11 @@
               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 => {
-            console.log(response,"listJs")
             var cimg = []
             response.records.forEach(element => {
               element.cPortrait = process.env.VUE_APP_BASE_API + element.cPortrait
@@ -617,11 +649,7 @@
                 ele = process.env.VUE_APP_BASE_API + ele
               });
             });
-
           this.jsList = response.records;
-          
-          console.log(this.jsList,"this.jsList")
-
           this.total = response.total;
           this.loading = false;
         });
@@ -634,7 +662,7 @@
       },
       // 表单重置
       reset() {
-        this.form = {
+        this.queryParams = {
           cOpenId: null,
           cBhList: null,
           cImgList: null,
@@ -658,7 +686,7 @@
           nB3: null,
           dtCreateTime: null
         };
-        this.resetForm("form");
+        // this.resetForm("form");
       },
       /** 搜索按钮操作 */
       handleQuery() {
@@ -668,6 +696,7 @@
       /** 重置按钮操作 */
       resetQuery() {
         this.resetForm("queryForm");
+        // this.reset()
         this.handleQuery();
       },
       // 多选框选中数据
@@ -716,13 +745,29 @@
       },
       /** 提交按钮 */
       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 = []
@@ -755,6 +800,13 @@
   };
   </script>
 <style lang="scss" scoped>
+
+::v-deep .el-dialog{
+  height: 90% !important;
+  overflow-y: auto;
+  border-radius: 10px;
+}
+
 .jsInfo{
   padding:0 15px;
   .js_box{

+ 659 - 0
src/views/technician/details/details.vue

@@ -0,0 +1,659 @@
+<template>
+  <!-- 查看技师详情 -->
+  <div class="details">
+    <el-form :model="uploadInfos" label-position="left">
+      <el-form-item label="姓名:">
+        <el-input v-model="jsInfos.cName"></el-input>
+      </el-form-item>
+      <el-form-item label="昵称:">
+        <el-input v-model="jsInfos.cNickName"></el-input>
+      </el-form-item>
+      <el-form-item label="性别:">
+        <el-radio-group v-model="jsInfos.nSex">
+          <el-radio :label="0">女</el-radio>
+          <el-radio :label="1">男</el-radio>
+        </el-radio-group>
+      </el-form-item>
+      <el-form-item label="电话:">
+        <el-input v-model="jsInfos.cPhone"></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"
+          />
+          <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"
+            >
+              <img :src="item" alt="" />
+              <div class="ifnone" @click="removesfzImgs(index)">删除</div>
+            </div>
+            <el-upload
+              class="images_box"
+              action="#"
+              :http-request="handlesfzSuccess"
+              :before-upload="beforesfzImagesUpload"
+              :show-file-list="false"
+            >
+              <i class="el-icon-plus avatar-uploader-icon"></i>
+            </el-upload>
+          </div>
+        </div>
+      </el-form-item>
+      <el-form-item label="评分:">
+        <el-input v-model="jsInfos.nStar"></el-input>
+      </el-form-item>
+      <el-form-item label="佣金比例:">
+        <el-input v-model="jsInfos.nBili"></el-input>
+      </el-form-item>
+      <el-form-item label="已服务数量:">
+        <el-input v-model="jsInfos.nNum"></el-input>
+      </el-form-item>
+      <!-- <el-form-item label="审核状态:">
+        <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>
+      </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-form-item>
+      <el-form-item label="地址:">
+        <el-input v-model="jsInfos.address"></el-input>
+      </el-form-item>
+      <!-- <el-form-item label="是否带头像框:" prop="nB1">
+        <el-radio-group v-model="jsInfos.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="jsInfos.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="jsInfos.nB3">
+          <el-radio :label="0">否</el-radio>
+          <el-radio :label="1">是</el-radio>
+        </el-radio-group>
+      </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="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="submitForm">修 改</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>
+      <!-- <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-form>
+
+    <!-- 刷评论弹窗 -->
+    <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-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>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="dialogFormVisible = false">取 消</el-button>
+        <el-button type="primary" @click="submitComplain">确 定</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  listJs,
+  getJs,
+  delJs,
+  addJs,
+  updateJs,
+  auditJs,
+  repulseJs,
+  addComplaint,
+  getProject,
+  changeWork,
+  block,
+} from "@/api/system/js";
+import { upload } from "@/api/public";
+export default {
+  data() {
+    return {
+      dialogFormVisible: false,
+      jsInfos: {},
+      uploadInfos: {
+        cSfzImg: [],
+        cImgList: [],
+      },
+      lifeImg: [],
+      projectList: [],
+      jsProjectList: [],
+      complainForm: {
+        cNickName: "匿名评论",
+        name: "",
+      },
+      headimg: "",
+    };
+  },
+  mounted() {
+    this.complainForm.cJsid = this.$route.query.id;
+    this.getJsInfo();
+    this.getProjictList();
+  },
+  methods: {
+    getProjictList() {
+      getProject({}).then((res) => {
+        if (res.code == 200) {
+          this.projectList = res.data;
+        }
+      });
+    },
+    getJsInfo() {
+      let cOpenId = { id: this.$route.query.id };
+      getJs(cOpenId).then((response) => {
+        this.jsInfos = response.data;
+        this.uploadInfos.projects = [];
+        this.uploadInfos.cPortrait = response.data.cPortrait;
+        this.uploadInfos.cSfzImg = response.data.cSfzImg;
+        this.uploadInfos.cImgList = response.data.cImgList;
+        this.jsInfos.projects.map((item) => {
+          this.jsProjectList.push({ cTitle: item.cTitle, cId: item.cId });
+          // this.uploadInfos.projects.push(item.cId)
+        });
+        var imgs = [];
+        var imgs2 = [];
+        response.data.cPortrait == ""
+          ? (response.data.cPortrait = "")
+          : (response.jsInfos.cPortrait =
+              process.env.VUE_APP_BASE_API + response.data.cPortrait);
+
+        // response.data.cImgList.length == 0 ? this.jsInfos.cImgList = [] : response.data.cImgList.forEach((element) => {
+        //   element = process.env.VUE_APP_BASE_API + element;
+        //   imgs.push(element);
+        // });
+        if (response.data.cImgList.length > 0) {
+          response.data.cImgList.forEach((element) => {
+            element = process.env.VUE_APP_BASE_API + element;
+            imgs.push(element);
+          });
+        } else {
+          imgs = [];
+        }
+
+        if (response.data.cSfzImg.length > 0) {
+          response.data.cSfzImg.forEach((element) => {
+            element = process.env.VUE_APP_BASE_API + element;
+            imgs2.push(element);
+          });
+        } else {
+          imgs2.cSfzImg = [];
+        }
+
+        // this.jsInfos = response.data;
+        this.jsInfos.cImgList = imgs;
+        this.jsInfos.cSfzImg = imgs2;
+
+        // this.jsInfos.cAddress = JSON.parse(response.data.cAddress) + '('+JSON.parse(response.data.name).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) {
+      const formData = new FormData();
+      formData.append("file", file.file);
+      upload(formData).then((response) => {
+        this.uploadInfos.cPortrait = response.fileName;
+        this.jsInfos.cPortrait =
+          process.env.VUE_APP_BASE_API + response.fileName;
+      });
+    },
+    beforeAvatarUpload(file) {
+      if (file.type.indexOf("image/") == -1) {
+        this.$modal.msgError(
+          "文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。"
+        );
+      }
+    },
+    //添加评论
+    submitComplain() {
+      if (this.complainForm.nStar == "") {
+        this.$message({
+          message: "请输入评分",
+          type: "warning",
+        });
+        return;
+      }
+      if (this.complainForm.cText == "") {
+        this.$message({
+          message: "请输入评论内容",
+          type: "warning",
+        });
+        return;
+      }
+      if (!this.complainForm.dTime) {
+        this.$message({
+          message: "请选择评论时间",
+          type: "warning",
+        });
+        return;
+      } else {
+        addComplaint(this.complainForm).then((res) => {
+          if (res.code == 200) {
+            this.$message({
+              message: "提交成功",
+              type: "success",
+            });
+            this.dialogFormVisible = false;
+          } else {
+            this.$message({
+              message: res.msg,
+              type: "success",
+            });
+          }
+        });
+      }
+    },
+    addComplaintShow(id) {
+      this.dialogFormVisible = true;
+    },
+    // 上传身份证图片相关
+    handlesfzSuccess(file) {
+      const formData = new FormData();
+      formData.append("file", file.file);
+      upload(formData).then((response) => {
+        // this.lifeImg.push(response.fileName);
+        this.jsInfos.cSfzImg.push(
+          process.env.VUE_APP_BASE_API + response.fileName
+        );
+        this.uploadInfos.cSfzImg.push(response.fileName);
+        // this.updataImg22.push(response.fileName);
+      });
+    },
+    beforesfzImagesUpload(file) {
+      if (file.type.indexOf("image/") == -1) {
+        proxy.$modal.msgError(
+          "文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。"
+        );
+        return false;
+      }
+      return true;
+    },
+    removesfzImgs(index) {
+      this.jsInfos.cSfzImg.splice(index, 1);
+      this.uploadInfos.cSfzImg.splice(index, 1);
+      // this.updataImg22.splice(index, 1)
+    },
+    //上传生活照相关
+    handleLifeSuccess(file) {
+      const formData = new FormData();
+      formData.append("file", file.file);
+      upload(formData).then((response) => {
+        this.uploadInfos.cImgList.push(response.fileName);
+        this.jsInfos.cImgList.push(
+          process.env.VUE_APP_BASE_API + response.fileName
+        );
+        // this.updataImg22.push(response.fileName);
+      });
+    },
+    beforeLifeImagesUpload(file) {
+      if (file.type.indexOf("image/") == -1) {
+        proxy.$modal.msgError(
+          "文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。"
+        );
+        return false;
+      }
+      return true;
+    },
+    removeLifeImgs(index) {
+      this.jsInfos.cImgList.splice(index, 1);
+      this.uploadInfos.cImgList.splice(index, 1);
+      // this.updataImg22.splice(index, 1)
+    },
+    //上岗、休息
+    work() {
+      let data = {};
+      data.id = this.$route.query.id;
+      data.nStatus2 = this.jsInfos.nStatus2 == 0 ? "-1" : "0";
+      changeWork(data).then((res) => {
+        this.jsProjectList = [];
+        this.getJsInfo();
+        if (res.code == 200) {
+          if (this.jsInfos.nStatus2 == 0) {
+            this.$message({
+              message: "已下岗",
+              type: "success",
+            });
+            this.jsInfos.nStatus2 = 1;
+          } else {
+            this.$message({
+              message: "已上岗",
+              type: "success",
+            });
+            this.jsInfos.nStatus2 = 0;
+          }
+        } else {
+          this.$message({
+            message: res.msg,
+            type: "error",
+          });
+        }
+      });
+    },
+    // 拉黑
+    blacklist() {
+      let data = {};
+      data.id = this.$route.query.id;
+      data.nTong = this.jsInfos.nTong == 3 ? "0" : "3";
+      block(data).then((res) => {
+        this.jsProjectList = [];
+        this.getJsInfo();
+        if (res.code == 200) {
+          if (this.jsInfos.nTong == 3) {
+            this.$message({
+              message: "取消拉黑成功",
+              type: "success",
+            });
+          } else {
+            this.$message({
+              message: "拉黑成功",
+              type: "success",
+            });
+          }
+        } else {
+          this.$message({
+            message: res.msg,
+            type: "error",
+          });
+        }
+      });
+    },
+    //提交
+    submitForm() {
+      let temp = [];
+      this.jsProjectList.forEach((item) => {
+        temp.push(item.cId);
+      });
+
+      this.jsInfos.cPortrait = this.uploadInfos.cPortrait;
+      this.jsInfos.cSfzImg = this.uploadInfos.cSfzImg;
+      this.jsInfos.cImgList = this.uploadInfos.cImgList;
+      this.jsInfos.cBhList = temp.join();
+      this.jsInfos.comments = null;
+      updateJs(this.jsInfos).then((res) => {
+        this.jsProjectList = [];
+        this.getJsInfo();
+        if (res.code == 200) {
+          this.$message({
+            message: "提交成功",
+            type: "success",
+          });
+        } else {
+          this.$message({
+            message: res.msg,
+            type: "success",
+          });
+        }
+      });
+    },
+    // 审核
+    auditJs(ids) {
+      if (this.ifTong == 0) {
+        var data = {
+          id: ids,
+        };
+        auditJs(data).then((response) => {
+          this.$modal.msgSuccess("审核通过");
+          this.drawer = false;
+          this.getList();
+        });
+      } else {
+        this.$modal.msgSuccess("该技师已操作");
+      }
+    },
+    // 退回申请
+    returnJs(ids) {
+      this.$prompt("请输入退回原因", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+      })
+        .then(({ value }) => {
+          if (this.ifTong == 0) {
+            var data = {
+              id: ids,
+              reasonRefusal: value,
+            };
+            repulseJs(data).then((response) => {
+              this.$modal.msgSuccess("已退回");
+              this.drawer = false;
+              this.getList();
+            });
+          } else {
+            this.$modal.msgSuccess("该技师已操作");
+          }
+          this.$message({
+            type: "success",
+          });
+        })
+        .catch(() => {
+          this.$message({
+            type: "info",
+            message: "取消输入",
+          });
+        });
+    },
+    rest() {},
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.el-form-item {
+  align-items: center;
+}
+.details {
+  padding: 20px;
+  .image {
+    width: 100px;
+    height: 100px;
+    display: flex;
+    margin-right: 20px;
+    img {
+      width: 100%;
+    }
+  }
+}
+.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-form-item {
+  display: flex;
+  ::v-deep .el-form-item__label {
+    width: 9%;
+    text-align: left;
+  }
+  ::v-deep.el-form-item__content {
+    flex: 1;
+    display: flex;
+  }
+}
+.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;
+}
+::v-deep .el-select {
+  width: 100%;
+}
+</style>

+ 963 - 0
src/views/technician/technician/index.vue

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