Sfoglia il codice sorgente

虚拟地址接口联调;

郭鹏飞 8 mesi fa
parent
commit
12c3b5a52d

+ 0 - 4
src/assets/styles/index.scss

@@ -129,10 +129,6 @@ aside {
   position: relative;
 }
 
-.pagination-container {
-  margin-top: 30px;
-}
-
 .text-center {
   text-align: center
 }

+ 1 - 14
src/assets/styles/ruoyi.scss

@@ -115,15 +115,6 @@
   padding-bottom: 5px
 }
 
-/** 表格布局 **/
-.pagination-container {
-  position: relative;
-  height: 25px;
-  margin-bottom: 10px;
-  margin-top: 15px;
-  padding: 10px 20px !important;
-}
-
 /* tree border */
 .tree-border {
   margin-top: 5px;
@@ -132,11 +123,7 @@
   border-radius: 4px;
 }
 
-.pagination-container .el-pagination {
-  right: 0;
-  position: absolute;
-}
-
+/** 表格布局 **/
 @media (max-width: 768px) {
   .pagination-container .el-pagination > .el-pagination__jump {
     display: none !important;

+ 6 - 1
src/components/Pagination/index.vue

@@ -106,9 +106,14 @@ export default {
 <style scoped>
 .pagination-container {
   background: #fff;
-  padding: 32px 16px;
 }
+
 .pagination-container.hidden {
   display: none;
 }
+
+.pagination-container .el-pagination {
+  float: right;
+  padding: 20px 0;
+}
 </style>

+ 88 - 0
src/components/ZModalView/index.vue

@@ -0,0 +1,88 @@
+<template>
+    <component 
+		:is="cname"
+		v-bind="nestedProps"
+	>
+		<!-- <slot></slot>
+        <template v-slot:footer>
+            <slot name="footer"></slot>
+        </template> -->
+        <template v-for="(_, slotName) in $slots" :slot="slotName">
+			<slot :name="slotName"></slot>
+		</template>
+	</component>
+</template>
+
+<script>
+export default {
+    name: "",
+    props: {
+        width: {
+            type: [String, Number],
+		    default: '70%'
+        },
+        // 组件名ElDialog或ElDrawer
+        cname: {
+            type: String,
+            default: 'ElDrawer'
+        },
+        // 组件的props
+        viewProps: {
+            type: Object,
+            default: () => ({})
+        }
+    },
+    data() {
+        return {
+            title: '',
+            visible: false
+        }
+    },
+    computed: {
+        nestedProps() {
+            switch(this.cname) {
+                case 'ElDialog':
+                    return {
+                        width: this.width,
+                        title: this.title,
+                        beforeClose: (done) => this.onClose(done),
+                        visible: this.visible,
+                        destroyOnClose: true,
+                        closeOnClickModal: true,
+                        ...this.viewProps
+                    }
+                default:
+                    return {
+                        size: this.width,
+                        title: this.title,
+                        beforeClose: (done) => this.onClose(done),
+                        visible: this.visible,
+                        appendToBody: true,
+                        destroyOnClose: true,
+                        closeOnClickModal: true,
+                        ...this.viewProps
+                    }
+            }
+        },
+    },
+    methods: {
+        onClose(done)  {
+            this.$emit('onClose');
+            this.close();
+            done();
+        },
+        open(t) {
+            if (t) this.title = t;
+            this.visible = true;
+        },
+        // 关闭弹窗
+        close() {
+            this.visible = false;
+        },
+    }
+};
+</script>
+
+<style lang="scss" scoped>
+
+</style>

+ 3 - 3
src/main.js

@@ -9,9 +9,9 @@ import './assets/styles/element-variables.scss'
 import * as echarts from 'echarts'
 Vue.prototype.$echarts = echarts
 
-
-import '@/assets/styles/index.scss' // global css
-import '@/assets/styles/ruoyi.scss' // ylx css
+// 全局css
+import '@/assets/styles/index.scss' 
+import '@/assets/styles/ruoyi.scss' 
 import App from './App'
 import store from './store'
 import router from './router'

+ 19 - 1
src/utils/dict/Dict.js

@@ -37,7 +37,8 @@ export default class Dict {
       if (dictMeta.lazy) {
         return
       }
-      ps.push(loadDict(this, dictMeta))
+      if (type.indexOf('_') !== -1) ps.push(loadDict(this, dictMeta))
+      else ps.push(localDict(this, dictMeta))
     })
     return Promise.all(ps)
   }
@@ -55,6 +56,23 @@ export default class Dict {
   }
 }
 
+function localDict(dict, dictMeta) {
+  return new Promise((resolve, reject) => {
+    const type = dictMeta.type
+    let dicts = dictMeta.responseConverter([
+      { label: '未分配', value: 0 },
+      { label: '已分配', value: 1 },
+    ], dictMeta)
+    
+    dict.type[type].splice(0, Number.MAX_SAFE_INTEGER, ...dicts)
+    dicts.forEach(d => {
+      Vue.set(dict.label[type], d.value, d.label)
+    })
+
+    resolve(dicts);
+  })
+}
+
 /**
  * 加载字典
  * @param {Dict} dict 字典

+ 3 - 6
src/views/comment/index.vue

@@ -188,7 +188,7 @@
           :limit="1"
           accept=".xlsx, .xls"
           :headers="upload.headers"
-          :action="upload.url + '?updateSupport=' + upload.updateSupport"
+          :action="upload.url"
           :disabled="upload.isUploading"
           :on-progress="handleFileUploadProgress"
           :on-success="handleFileSuccess"
@@ -266,12 +266,10 @@
           title: "",
           // 是否禁用上传
           isUploading: false,
-          // 是否更新已经存在的用户数据
-          updateSupport: 0,
           // 设置上传的请求头部
           headers: { Authorization: "Bearer " + getToken() },
           // 上传的地址
-          url: process.env.VUE_APP_BASE_API + "/system/user/importData"
+          url: process.env.VUE_APP_BASE_API + "/common/importSensitiveWords"
         },
       };
     },
@@ -394,8 +392,7 @@
       },
       /** 下载模板操作 */
       importTemplate() {
-        this.download('system/user/importTemplate', {
-        }, `user_template_${new Date().getTime()}.xlsx`)
+        this.$download.name('敏感词库模板.xls', false);
       },
       // 文件上传中处理
       handleFileUploadProgress(event, file, fileList) {

+ 118 - 92
src/views/order/index.vue

@@ -52,7 +52,21 @@
         <el-select
           v-model="queryParams.nStatus"
           placeholder="请选择"
-          style="width: 100px"
+          clearable 
+        >
+          <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="虚拟订单状态">
+        <el-select
+          v-model="queryParams.status"
+          placeholder="请选择"
           clearable 
         >
           <el-option
@@ -78,11 +92,10 @@
           icon="el-icon-search"
           size="mini"
           @click="handleQuery"
-          >搜索</el-button
-        >
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
-          >重置</el-button
-        >
+        >搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" 
+          @click="resetQuery"
+        >重置</el-button>
       </el-form-item>
     </el-form>
 
@@ -134,85 +147,87 @@
       ></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-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="js.cName" />
-      <el-table-column label="技师昵称" align="center" prop="js.cNickName" />
-      <el-table-column label="技师电话" align="center" prop="js.cPhone" />
-      <el-table-column label="订单状态" align="center" prop="statusName" />
-      <!-- <el-table-column label="备注" align="center" prop="cNote" /> -->
-      <!-- <el-table-column label="订单状态" align="center" prop="nStatus" width="180">
+    <div style="flex: 1;">
+      <el-table
+        v-loading="loading"
+        :data="orderList"
+        height="calc(100% - 68px)"
+        @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="js.cName" />
+        <el-table-column label="技师昵称" align="center" prop="js.cNickName" />
+        <el-table-column label="技师电话" align="center" prop="js.cPhone" />
+        <el-table-column label="订单状态" align="center" prop="statusName" />
+        <!-- <el-table-column label="备注" align="center" prop="cNote" /> -->
+        <!-- <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="虚拟技师订单" width="100" align="center" prop="status">
           <template slot-scope="scope">
-            <span>{{ scope.row.nStatus ==0?'待接单':(scope.row.nStatus ==1 ? '服务中':'待评价')}}</span>
+            <el-tag v-if="scope.row.status == 2">查看记录</el-tag>
+            <el-tag type="warning" v-else @click="onClickRecord">未分配</el-tag>
           </template>
-        </el-table-column> -->
-      <el-table-column label="时间" align="center" prop="dtCreateTime">
-        <!-- <template slot-scope="scope">
-          <span>
-            {{ scope.row.dtCreateTime.slice(0, 10) }}
-            {{ scope.row.dtCreateTime.slice(11, 19) }}
-          </span>
-        </template> -->
-      </el-table-column>
-      <!-- <el-table-column label="推荐者id" align="center" prop="cTjOpenId" /> -->
-      <!-- <el-table-column label="创建时间" align="center" prop="dtCreateTime" width="180">
+        </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"
+          width="200"
+          fixed="right"
+        >
           <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-button
+              size="mini"
+              type="text"
+              icon="el-icon-document"
+              @click="handleInfo(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-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-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.size"
+        @pagination="getList"
+      />
+    </div>
 
     <!-- 订单详情 -->
     <el-dialog :title="title" :visible.sync="open" width="700px" append-to-body>
@@ -375,6 +390,7 @@
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
+    <!-- 转单 -->
     <el-dialog title="转单" :visible.sync="istransfer" style="height: auto">
       <el-form :model="transferOrderForm">
         <el-form-item label="转单技师:">
@@ -397,10 +413,14 @@
         <el-button @click="istransfer = false">取 消</el-button>
       </div>
     </el-dialog>
+    <!-- 虚拟订单记录 -->
+    <VOrderRecord ref="vor" />
   </div>
 </template>
-  <script>
+
+<script>
 import {
+  getjsList,
   listOrder,
   getOrder,
   delOrder,
@@ -408,12 +428,15 @@ import {
   updateOrder,
   exportOrder,
   transferOrder,
-  getjsList,
 } from "@/api/system/order";
-import { number } from "echarts";
+import VOrderRecord from "./vOrderRecord.vue";
 
 export default {
   name: "Order",
+  dicts: ['vOrderStatus', 'sys_job_status'],
+  components: {
+    VOrderRecord
+  },
   data() {
     return {
       jsList: [],
@@ -493,6 +516,9 @@ export default {
   created() {
     this.getList();
   },
+  mounted() {
+    console.log(this.dict, this.$store)
+  },
   methods: {
     //转单
     transferOrder() {
@@ -549,17 +575,6 @@ export default {
         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;
@@ -706,10 +721,21 @@ export default {
         })
         .catch(() => {});
     },
+    // 虚拟订单记录查看
+    onClickRecord() {
+      this.$refs.vor.open();
+    }
   },
 };
 </script>
-  <style scoped>
+
+<style lang="scss" scoped>
+.app-container {
+  height: calc(100vh - 84px);
+  display: flex;
+  flex-direction: column;
+}
+
 ::v-deep .el-dialog {
   height: 800px;
   overflow-y: auto;

+ 88 - 0
src/views/order/vOrderRecord.vue

@@ -0,0 +1,88 @@
+<template>
+    <ModalView ref="mv" cname="ElDialog" :viewProps="{
+        customClass: 'myModal'
+    }">
+        <div style="flex: 1;">
+            <el-table v-loading="loading" :data="dataList">
+                <el-table-column type="index" label="序号" align="center" width="50" />
+                <el-table-column label="技师编号" align="center" prop="dTotalMoney" />
+                <el-table-column label="姓名/昵称" align="center" prop="cName" />
+                <el-table-column label="电话" align="center" prop="cPhone" />
+                <el-table-column label="服务状态" align="center" prop="js.cName" />
+                <el-table-column label="分配时间" align="center" prop="js.cNickName" />
+                <el-table-column label="操作记录" align="center" prop="js.cPhone" />
+                <el-table-column label="订单状态" align="center" prop="status">
+                    <template slot-scope="scope">
+                        <el-tag v-if="scope.row.status == 2">已分配</el-tag>
+                        <el-tag type="warning" v-else>未分配</el-tag>
+                    </template>
+                </el-table-column>
+                <el-table-column label="时间" align="center" prop="dtCreateTime" />
+            </el-table>
+            <pagination v-show="total > 0" 
+                :total="total" 
+                :page.sync="params.current"
+                :limit.sync="params.size" 
+                @pagination="getList" 
+            />
+        </div>
+        <div slot="footer" class="dialog-footer" v-if="0">
+            <el-button type="primary" @click="">确 定</el-button>
+            <el-button @click="close">取 消</el-button>
+        </div>
+    </ModalView>
+</template>
+
+<script>
+import ModalView from '@/components/ZModalView/index.vue';
+export default {
+    components: {
+        ModalView
+    },
+    data() {
+        return {
+            title: '操作记录',
+            total: 0,
+            params: {
+                current: 1,
+                size: 10,
+            },
+            loading: false,
+            dataList: [{},{},{},{}],
+        }
+    },
+    computed: {
+        
+    },
+    methods: {
+        // 获取数据
+        getList() {
+            this.loading = true;
+            listOrder(this.params).then((res) => {
+                this.dataList = res.data.records;
+                this.total = res.data.total;
+            }).finally(() => {
+                this.loading = false;
+            });
+        },
+        open(t) {
+            if (t) this.title = t;
+            this.$refs.mv.open(this.title);
+        },
+        // 关闭弹窗
+        close() {
+            this.$refs.mv.close();
+        },
+    }
+};
+</script>
+
+<style lang="scss" scoped>
+::v-deep .myModal {
+    .el-dialog__body {
+        max-height: 70vh;
+        overflow-y: auto;
+        padding: 10px 20px;
+    }
+}
+</style>

+ 11 - 23
src/views/technician/technician/index.vue

@@ -176,7 +176,12 @@
               placement="right"
               trigger="click">
               <el-table :data="gridData" max-height="300px">
-                <el-table-column width="300" property="address" label="地址"></el-table-column>
+                <el-table-column width="300" property="address" label="地址">
+                  <template slot-scope="scope">
+                    <span>{{ scope.row.address }}</span>
+                    <span>{{ scope.row.name }}</span>
+                  </template>
+                </el-table-column>
                 <el-table-column width="150" property="createTime" label="添加时间"></el-table-column>
               </el-table>
               <el-link type="primary" slot="reference" @click="onVClick(scope.row)">查看</el-link>
@@ -243,15 +248,12 @@
           </template>
         </el-table-column>
       </el-table>
-      <el-pagination
+      <pagination
         v-show="total > 0"
         :total="total"
-        :current-page="queryParams.current"
-        :page-size="queryParams.size"
-        layout="total, sizes, prev, pager, next, jumper"
-        background
-        @size-change="handleSizeChange"
-        @current-change="handleCurrentChange"
+        :page.sync="queryParams.current"
+        :limit.sync="queryParams.size"
+        @pagination="getList"
       />
     </div>
 
@@ -649,18 +651,8 @@ export default {
     },
     // 上传事件
     onUpload(e, k) {
-      console.log(e, k);
       this.form[k] = e;
     },
-    // 分页
-    handleSizeChange(val) {
-      this.queryParams.size = val;
-      this.getList();
-    },
-    handleCurrentChange(val) {
-      this.queryParams.current = val;
-      this.getList();
-    },
     // 取消按钮
     submitCancel() {
       this.open = false;
@@ -761,6 +753,7 @@ export default {
   },
 };
 </script>
+
 <style lang="scss" scoped>
 .app-container {
   height: calc(100vh - 84px);
@@ -768,11 +761,6 @@ export default {
   flex-direction: column;
 }
 
-.el-pagination {
-  float: right;
-  padding: 20px 0;
-}
-
 ::v-deep .myModal {
   .el-dialog__body {
     max-height: 70vh;