Browse Source

feat: 1.点餐流程修改样式默认头像和左侧的菜单栏

suwenjiang 1 month ago
parent
commit
95419b6cb3

File diff suppressed because it is too large
+ 5 - 0
src/renderer/assets/images/avater.svg


BIN
src/renderer/assets/images/menu-cooker1.png


BIN
src/renderer/assets/images/menu-cooker2.png


BIN
src/renderer/assets/images/menu-cooker3.png


+ 290 - 174
src/renderer/views/cashier/components/memberList.vue

@@ -1,22 +1,30 @@
 <template>
   <div class="member-container">
-    <el-form :model="queryParams" class="search-form" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form
+      :model="queryParams"
+      class="search-form"
+      ref="queryForm"
+      size="small"
+      :inline="true"
+      v-show="showSearch"
+      label-width="68px"
+    >
       <el-form-item label="会员ID" prop="id">
         <el-input
           v-model="queryParams.id"
           placeholder="请输入会员ID"
           clearable
-          style="width: 240px;"
+          style="width: 240px"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
       <el-form-item label="会员号" prop="userNo">
         <el-input
-            v-model="queryParams.userNo"
-            placeholder="请输入会员号"
-            clearable
-            style="width: 240px;"
-            @keyup.enter.native="handleQuery"
+          v-model="queryParams.userNo"
+          placeholder="请输入会员号"
+          clearable
+          style="width: 240px"
+          @keyup.enter.native="handleQuery"
         />
       </el-form-item>
       <el-form-item label="手机号" prop="mobile">
@@ -24,7 +32,7 @@
           v-model="queryParams.mobile"
           placeholder="请输入会员手机号"
           clearable
-          style="width: 240px;"
+          style="width: 240px"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
@@ -33,52 +41,74 @@
           v-model="queryParams.name"
           placeholder="请输入会员名称"
           clearable
-          style="width: 240px;"
+          style="width: 240px"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
       <el-form-item label="会员等级" prop="gradeId">
-        <el-select
-          v-model="queryParams.gradeId"
-          clearable
-          placeholder="会员等级"
-        >
-          <el-option v-for="grade in userGradeList" :key="grade.id+''" :label="grade.name" :value="grade.id+''"/>
+        <el-select v-model="queryParams.gradeId" clearable placeholder="会员等级">
+          <el-option
+            v-for="grade in userGradeList"
+            :key="grade.id + ''"
+            :label="grade.name"
+            :value="grade.id + ''"
+          />
         </el-select>
       </el-form-item>
       <el-form-item label="状态" prop="status">
-        <el-select
-          v-model="queryParams.status"
-          placeholder="状态"
-          clearable
-          style="width: 240px"
-        >
-          <el-option key="A" label="启用" value="A"/>
-          <el-option key="N" label="禁用" value="N"/>
+        <el-select v-model="queryParams.status" placeholder="状态" clearable style="width: 240px">
+          <el-option key="A" label="启用" value="A" />
+          <el-option key="N" label="禁用" value="N" />
         </el-select>
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" class="main-button-middle" icon="el-icon-search" @click="handleQuery">查询</el-button>
-        <el-button icon="el-icon-refresh" class="main-button-middle main-button-reset" @click="resetQuery">重置</el-button>
+        <el-button
+          type="primary"
+          class="main-button-middle"
+          icon="el-icon-search"
+          @click="handleQuery"
+        >
+          查询
+        </el-button>
+        <el-button
+          icon="el-icon-refresh"
+          class="main-button-middle main-button-reset"
+          @click="resetQuery"
+        >
+          重置
+        </el-button>
         <el-button
           plain
           icon="el-icon-plus"
           class="main-button-middle main-button-reset"
           @click="handleAdd"
           v-hasPermi="['member:add']"
-        >新增</el-button>
+        >
+          新增
+        </el-button>
       </el-form-item>
     </el-form>
 
-    <el-table ref="tables" v-loading="loading" :data="list" border style="width: 100%;" fit height="100%" @selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="handleSortChange">
-      <el-table-column label="会员ID" prop="id" width="80"/>
+    <el-table
+      ref="tables"
+      v-loading="loading"
+      :data="list"
+      border
+      style="width: 100%"
+      fit
+      height="100%"
+      @selection-change="handleSelectionChange"
+      :default-sort="defaultSort"
+      @sort-change="handleSortChange"
+    >
+      <el-table-column label="会员ID" prop="id" width="80" />
       <el-table-column label="头像" align="center" width="80">
         <template slot-scope="scope">
-            <img v-if="scope.row.avatar" class="list-avatar" :src="scope.row.avatar">
-            <img v-else class="list-avatar" src="@/assets/images/avatar.png">
+          <img v-if="scope.row.avatar" class="list-avatar" :src="scope.row.avatar" />
+          <img v-else class="list-avatar" src="@/assets/images/avatar.svg" />
         </template>
       </el-table-column>
-      <el-table-column label="会员号" prop="userNo" width="150"/>
+      <el-table-column label="会员号" prop="userNo" width="150" />
       <el-table-column label="名称" align="center" prop="name" />
       <el-table-column label="手机号" align="center" prop="mobile">
         <template slot-scope="scope">
@@ -92,26 +122,36 @@
       </el-table-column>
       <el-table-column label="余额" align="center" prop="balance">
         <template slot-scope="scope">
-          <div><span style="color:red;">¥{{ scope.row.balance ? scope.row.balance.toFixed(2) : '0.00' }}</span></div>
+          <div>
+            <span style="color: red">
+              ¥{{ scope.row.balance ? scope.row.balance.toFixed(2) : '0.00' }}
+            </span>
+          </div>
           <el-button
             class="main-button-mini"
             type="primary"
             size="mini"
             @click="handleBalance(scope.row.id)"
             v-hasPermi="['balance:modify']"
-          >充值</el-button>
+          >
+            充值
+          </el-button>
         </template>
       </el-table-column>
       <el-table-column label="积分" align="center" prop="point">
         <template slot-scope="scope">
-          <div><span>{{ scope.row.point ? scope.row.point : '0.00' }}</span></div>
+          <div>
+            <span>{{ scope.row.point ? scope.row.point : '0.00' }}</span>
+          </div>
           <el-button
             class="main-button-mini"
             type="primary"
             size="mini"
             @click="handlePoint(scope.row.id)"
             v-hasPermi="['point:modify']"
-          >变更</el-button>
+          >
+            变更
+          </el-button>
         </template>
       </el-table-column>
       <el-table-column label="注册时间" align="center" width="160" prop="createTime">
@@ -135,7 +175,7 @@
           ></el-switch>
         </template>
       </el-table-column>
-      <el-table-column label="操作" align="center" width="138" fixed='right'>
+      <el-table-column label="操作" align="center" width="138" fixed="right">
         <template slot-scope="scope">
           <el-button
             size="mini"
@@ -144,7 +184,9 @@
             class="main-text"
             v-hasPermi="['member:add']"
             @click="handleUpdate(scope.row)"
-          >修改</el-button>
+          >
+            修改
+          </el-button>
           <el-button
             size="mini"
             type="text"
@@ -152,13 +194,15 @@
             class="main-text"
             v-hasPermi="['member:add']"
             @click="handleDelete(scope.row)"
-          >删除</el-button>
+          >
+            删除
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
 
     <pagination
-      v-show="total>0"
+      v-show="total > 0"
       :total="total"
       class="pagination"
       :page.sync="queryParams.page"
@@ -167,7 +211,13 @@
     />
 
     <!-- 添加或修改对话框 -->
-    <el-dialog :title="title" :visible.sync="open" class="common-dialog" width="800px" append-to-body>
+    <el-dialog
+      :title="title"
+      :visible.sync="open"
+      class="common-dialog"
+      width="800px"
+      append-to-body
+    >
       <el-form ref="form" :model="form" :rules="rules" label-width="120px">
         <el-row>
           <el-col :span="24">
@@ -179,13 +229,14 @@
         <el-row>
           <el-col :span="24">
             <el-form-item label="会员等级" prop="gradeId">
-                <el-select
-                  v-model="form.gradeId"
-                  placeholder="会员等级"
-                  style="width: 300px"
-                >
-                  <el-option v-for="grade in userGradeList" :key="grade.id+''" :label="grade.name" :value="grade.id+''"/>
-                </el-select>
+              <el-select v-model="form.gradeId" placeholder="会员等级" style="width: 300px">
+                <el-option
+                  v-for="grade in userGradeList"
+                  :key="grade.id + ''"
+                  :label="grade.name"
+                  :value="grade.id + ''"
+                />
+              </el-select>
             </el-form-item>
           </el-col>
         </el-row>
@@ -198,7 +249,7 @@
                 type="datetime"
                 placeholder="开始时间"
               ></el-date-picker>
-              <span class="sp">  </span>
+              <span class="sp">至</span>
               <el-date-picker
                 v-model="form.endTime"
                 value-format="yyyy-MM-dd HH:mm:ss"
@@ -211,14 +262,18 @@
         <el-row>
           <el-col :span="24">
             <el-form-item label="会员号" prop="userNo">
-              <el-input v-model="form.userNo" placeholder="请输入会员号,为空系统将自动分配" maxlength="30" />
+              <el-input
+                v-model="form.userNo"
+                placeholder="请输入会员号,为空系统将自动分配"
+                maxlength="30"
+              />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="24">
             <el-form-item label="手机号" prop="mobile">
-              <el-input v-model="form.mobile" placeholder="请输入手机号" maxlength="30"/>
+              <el-input v-model="form.mobile" placeholder="请输入手机号" maxlength="30" />
             </el-form-item>
           </el-col>
         </el-row>
@@ -235,21 +290,25 @@
         <el-row>
           <el-col :span="24">
             <el-form-item label="身份证号" prop="idcard">
-              <el-input v-model="form.idcard" placeholder="请输入身份证号" maxlength="30"/>
+              <el-input v-model="form.idcard" placeholder="请输入身份证号" maxlength="30" />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="24">
             <el-form-item label="生日" prop="birthday">
-              <el-input v-model="form.birthday" placeholder="请输入生日,格式如:1990-01-01" maxlength="30"/>
+              <el-input
+                v-model="form.birthday"
+                placeholder="请输入生日,格式如:1990-01-01"
+                maxlength="30"
+              />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="24">
             <el-form-item label="通讯地址" prop="address">
-              <el-input v-model="form.address" placeholder="请输入通讯地址" maxlength="100"/>
+              <el-input v-model="form.address" placeholder="请输入通讯地址" maxlength="100" />
             </el-form-item>
           </el-col>
         </el-row>
@@ -269,11 +328,19 @@
             <el-form-item label="注册来源">
               <el-radio-group v-model="form.source">
                 <el-radio label="" v-if="!form.source">未知</el-radio>
-                <el-radio label="wechat_login" v-if="form.source == 'wechat_login'">微信小程序</el-radio>
+                <el-radio label="wechat_login" v-if="form.source == 'wechat_login'">
+                  微信小程序
+                </el-radio>
                 <el-radio label="wechat_mp" v-if="form.source == 'wechat_mp'">微信公众号</el-radio>
-                <el-radio label="backend_add" v-if="form.source == 'backend_add'">后台添加</el-radio>
-                <el-radio label="register_by_account" v-if="form.source == 'register_by_account'">H5注册</el-radio>
-                <el-radio label="mobile_login" v-if="form.source == 'mobile_login'">手机号登录注册</el-radio>
+                <el-radio label="backend_add" v-if="form.source == 'backend_add'">
+                  后台添加
+                </el-radio>
+                <el-radio label="register_by_account" v-if="form.source == 'register_by_account'">
+                  H5注册
+                </el-radio>
+                <el-radio label="mobile_login" v-if="form.source == 'mobile_login'">
+                  手机号登录注册
+                </el-radio>
               </el-radio-group>
             </el-form-item>
           </el-col>
@@ -282,7 +349,11 @@
         <el-row>
           <el-col :span="24">
             <el-form-item label="备注信息">
-              <el-input v-model="form.description" type="textarea" placeholder="请输入内容"></el-input>
+              <el-input
+                v-model="form.description"
+                type="textarea"
+                placeholder="请输入内容"
+              ></el-input>
             </el-form-item>
           </el-col>
         </el-row>
@@ -294,27 +365,45 @@
     </el-dialog>
 
     <!-- 余额充值对话框 -->
-    <balanceRecharge :showDialog="openBalance" :userId="userId" @closeDialog="closeDialog" @close="closeDialog" append-to-body/>
+    <balanceRecharge
+      :showDialog="openBalance"
+      :userId="userId"
+      @closeDialog="closeDialog"
+      @close="closeDialog"
+      append-to-body
+    />
 
     <!-- 积分充值对话框 -->
-    <pointRecharge :showDialog="openPoint" :userId="userId" @closeDialog="closeDialog" @close="closeDialog" append-to-body/>
+    <pointRecharge
+      :showDialog="openPoint"
+      :userId="userId"
+      @closeDialog="closeDialog"
+      @close="closeDialog"
+      append-to-body
+    />
   </div>
 </template>
 
 <script>
-import { getMemberList, updateMemberStatus, getMemberInfo, saveMember, deleteMember } from "@/api/member";
-import balanceRecharge from "./balanceRecharge";
-import pointRecharge from "./pointRecharge";
-import { Message } from "element-ui";
+import {
+  getMemberList,
+  updateMemberStatus,
+  getMemberInfo,
+  saveMember,
+  deleteMember,
+} from '@/api/member'
+import balanceRecharge from './balanceRecharge'
+import pointRecharge from './pointRecharge'
+import { Message } from 'element-ui'
 export default {
-  name: "MemberIndex",
+  name: 'MemberIndex',
   components: { balanceRecharge, pointRecharge },
   data() {
     return {
       // 遮罩层
       loading: true,
       // 标题
-      title: "",
+      title: '',
       // 选中数组
       ids: [],
       // 非多个禁用
@@ -338,185 +427,212 @@ export default {
       // 日期范围
       dateRange: [],
       // 默认排序
-      defaultSort: {prop: 'updateTime', order: 'descending'},
+      defaultSort: { prop: 'updateTime', order: 'descending' },
       // 表单参数
-      form: { id: '', name: '', gradeId: '', mobile: '', userNo: '', startTime: '', endTime: '', sex: 1, idcard: '', birthday: '', address: '', status: "A", description: '' },
+      form: {
+        id: '',
+        name: '',
+        gradeId: '',
+        mobile: '',
+        userNo: '',
+        startTime: '',
+        endTime: '',
+        sex: 1,
+        idcard: '',
+        birthday: '',
+        address: '',
+        status: 'A',
+        description: '',
+      },
       // 查询参数
       queryParams: {
         page: 1,
         pageSize: 10,
-        mobile: "",
-        name: "",
-        gradeId: "",
-        userId: "",
-        userNo: "",
-        status: ""
+        mobile: '',
+        name: '',
+        gradeId: '',
+        userId: '',
+        userNo: '',
+        status: '',
       },
       // 表单校验
       rules: {
         name: [
-          { required: true, message: "会员名称不能为空", trigger: "blur" },
-          { min: 2, max: 200, message: '会员名称长度必须介于2 和 100 之间', trigger: 'blur' }
+          { required: true, message: '会员名称不能为空', trigger: 'blur' },
+          { min: 2, max: 200, message: '会员名称长度必须介于2 和 100 之间', trigger: 'blur' },
         ],
-        gradeId: [{ required: true, message: "请选择会员等级", trigger: "blur" }]
-      }
-    };
+        gradeId: [{ required: true, message: '请选择会员等级', trigger: 'blur' }],
+      },
+    }
   },
   created() {
-    this.getList();
+    this.getList()
   },
   methods: {
     // 查询列表
     getList() {
-      this.loading = true;
-      getMemberList(this.addDateRange(this.queryParams, this.dateRange)).then( response => {
-          this.list = response.data.paginationResponse.content;
-          this.total = response.data.paginationResponse.totalElements;
+      this.loading = true
+      getMemberList(this.addDateRange(this.queryParams, this.dateRange))
+        .then((response) => {
+          this.list = response.data.paginationResponse.content
+          this.total = response.data.paginationResponse.totalElements
           this.userGradeList = response.data.userGradeList
-          this.loading = false;
-        }
-      ).catch(() => {
-        // empty
-      });
+          this.loading = false
+        })
+        .catch(() => {
+          // empty
+        })
     },
     // 搜索按钮操作
     handleQuery() {
-      this.queryParams.page = 1;
-      this.getList();
+      this.queryParams.page = 1
+      this.getList()
     },
     // 重置按钮操作
     resetQuery() {
-      this.dateRange = [];
-      this.resetForm("queryForm");
-      this.$refs.tables.sort(this.defaultSort.prop, this.defaultSort.order);
-      this.handleQuery();
+      this.dateRange = []
+      this.resetForm('queryForm')
+      this.$refs.tables.sort(this.defaultSort.prop, this.defaultSort.order)
+      this.handleQuery()
     },
     // 状态修改
     handleStatusChange(row) {
-      let text = row.status == "A" ? "启用" : "禁用";
-      this.$confirm('确认要' + text + '"' + row.name + '"吗?').then(function() {
-        return updateMemberStatus(row.id, row.status);
-      }).then(() => {
-        Message({
-          message: "提示:" + text + "成功",
-          type: "success"
-        });
-      }).catch(function() {
-        row.status = row.status === "N" ? "A" : "N";
-      });
+      let text = row.status == 'A' ? '启用' : '禁用'
+      this.$confirm('确认要' + text + '"' + row.name + '"吗?')
+        .then(function () {
+          return updateMemberStatus(row.id, row.status)
+        })
+        .then(() => {
+          Message({
+            message: '提示:' + text + '成功',
+            type: 'success',
+          })
+        })
+        .catch(function () {
+          row.status = row.status === 'N' ? 'A' : 'N'
+        })
     },
     // 多选框选中数据
     handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.id)
+      this.ids = selection.map((item) => item.id)
       this.multiple = !selection.length
     },
     // 排序触发事件
     handleSortChange(column, prop, order) {
-      this.queryParams.orderByColumn = column.prop;
-      this.queryParams.isAsc = column.order;
-      this.getList();
+      this.queryParams.orderByColumn = column.prop
+      this.queryParams.isAsc = column.order
+      this.getList()
     },
     // 余额充值操作
     handleBalance(userId) {
-       this.openBalance = true;
-       this.userId = userId.toString();
+      this.openBalance = true
+      this.userId = userId.toString()
     },
     // 积分变更操作
     handlePoint(userId) {
-       this.openPoint = true
-       this.userId = userId.toString();
+      this.openPoint = true
+      this.userId = userId.toString()
     },
     // 关闭对话框
     closeDialog(dialog) {
       if (dialog == 'balance') {
-          this.openBalance = false;
+        this.openBalance = false
       }
       if (dialog == 'point') {
-          this.openPoint = false;
+        this.openPoint = false
       }
-      this.userId = "";
-      this.getList();
+      this.userId = ''
+      this.getList()
     },
     // 新增按钮操作
     handleAdd() {
-      this.reset();
-      this.open = true;
-      this.title = "新增会员";
+      this.reset()
+      this.open = true
+      this.title = '新增会员'
     },
     // 表单重置
     reset() {
-      this.resetForm("form");
-      this.form.id = '';
-      this.form.description = '';
-      this.form.name = '';
-      this.form.startTime = '';
-      this.form.endTime = '';
-      this.form.gradeId = '';
-      this.form.userNo = '';
-      this.form.mobile = '';
+      this.resetForm('form')
+      this.form.id = ''
+      this.form.description = ''
+      this.form.name = ''
+      this.form.startTime = ''
+      this.form.endTime = ''
+      this.form.gradeId = ''
+      this.form.userNo = ''
+      this.form.mobile = ''
     },
     // 取消按钮
     cancel() {
-      this.open = false;
-      this.reset();
+      this.open = false
+      this.reset()
     },
     // 提交按钮
-    submitForm: function() {
-      this.$refs["form"].validate(valid => {
+    submitForm: function () {
+      this.$refs['form'].validate((valid) => {
         if (valid) {
           if (this.form.id) {
-              saveMember(this.form).then(response => {
+            saveMember(this.form)
+              .then((response) => {
                 Message({
-                  message: "提示:修改会员成功",
-                  type: "success"
-                });
-                this.open = false;
-                this.getList();
-              }).catch(() => {
-                 // empty
-              });
+                  message: '提示:修改会员成功',
+                  type: 'success',
+                })
+                this.open = false
+                this.getList()
+              })
+              .catch(() => {
+                // empty
+              })
           } else {
-              saveMember(this.form).then(response => {
+            saveMember(this.form)
+              .then((response) => {
                 Message({
-                  message: "提示:新增会员成功",
-                  type: "success"
-                });
-                this.open = false;
-                this.getList();
-              }).catch(() => {
-                 // empty
-              });
+                  message: '提示:新增会员成功',
+                  type: 'success',
+                })
+                this.open = false
+                this.getList()
+              })
+              .catch(() => {
+                // empty
+              })
           }
         }
-      });
+      })
     },
     // 修改按钮操作
     handleUpdate(row) {
-      this.reset();
-      const id = row.id || this.ids;
-      getMemberInfo(id).then(response => {
-        this.form = response.data.memberInfo;
-        this.open = true;
-        this.title = "编辑会员";
-      }).catch(() => {
-         // empty
-      });
+      this.reset()
+      const id = row.id || this.ids
+      getMemberInfo(id)
+        .then((response) => {
+          this.form = response.data.memberInfo
+          this.open = true
+          this.title = '编辑会员'
+        })
+        .catch(() => {
+          // empty
+        })
     },
     // 删除按钮操作
     handleDelete(row) {
       const name = row.name
-      this.$confirm('确定删除"' + name + '"的会员信息?').then(function() {
-        return deleteMember(row.id);
-      }).then(() => {
-        this.getList();
-        Message({
-          message: "提示:删除成功",
-          type: "success"
-        });
-      }).catch(() => {});
-    }
-  }
-};
+      this.$confirm('确定删除"' + name + '"的会员信息?')
+        .then(function () {
+          return deleteMember(row.id)
+        })
+        .then(() => {
+          this.getList()
+          Message({
+            message: '提示:删除成功',
+            type: 'success',
+          })
+        })
+        .catch(() => {})
+    },
+  },
+}
 </script>
 <style lang="scss" scoped>
 ::v-deep .el-table__body-wrapper::-webkit-scrollbar {

File diff suppressed because it is too large
+ 31 - 24
src/renderer/views/cashier/components/settlementDialog.vue


+ 139 - 120
src/renderer/views/cashier/components/switchMemberDialog.vue

@@ -1,135 +1,154 @@
 <template>
-    <el-dialog class="common-dialog" title="关联会员" :visible="showDialog" @close="close" width="750px" destroy-on-close>
-        <el-form ref="form" v-if="!memberInfo.id" class="form" :model="form" label-width="100px">
-            <el-form-item label="会员关键字" class="form-item" prop="keyword">
-              <el-input class="input-item" v-model="form.keyword" v-focus placeholder="请输入会员手机号码、会员名称或扫码会员二维码" clearable maxlength="200" />
-            </el-form-item>
-        </el-form>
-        <div class="member-info" v-if="memberInfo.id">
-            <div class="item">
-              <img class="avatar" v-if="memberInfo.avatar" :src="memberInfo.avatar"/>
-              <img class="avatar" v-if="!memberInfo.avatar" src="@/assets/images/avatar.png"/>
-              <div class="value">会员名称:{{ memberInfo.name }}</div>
-              <div class="value">会员性别:{{ memberInfo.sex == '1' ? '男' : '女' }}</div>
-            </div>
-            <div class="item">
-              <div class="value">手机号码:{{ memberInfo.mobile ? memberInfo.mobile : '暂无' }}</div>
-              <div class="value">会员号码:{{ memberInfo.userNo ? memberInfo.userNo : '暂无' }}</div>
-            </div>
-            <div class="item">
-              <div class="value">可用余额:{{ memberInfo.balance ? memberInfo.balance.toFixed(2) : '0.00' }}(元)</div>
-              <div class="value">可用积分:{{ memberInfo.point ? memberInfo.point : '0' }}</div>
-            </div>
+  <el-dialog
+    class="common-dialog"
+    title="关联会员"
+    :visible="showDialog"
+    @close="close"
+    width="750px"
+    destroy-on-close
+  >
+    <el-form ref="form" v-if="!memberInfo.id" class="form" :model="form" label-width="100px">
+      <el-form-item label="会员关键字" class="form-item" prop="keyword">
+        <el-input
+          class="input-item"
+          v-model="form.keyword"
+          v-focus
+          placeholder="请输入会员手机号码、会员名称或扫码会员二维码"
+          clearable
+          maxlength="200"
+        />
+      </el-form-item>
+    </el-form>
+    <div class="member-info" v-if="memberInfo.id">
+      <div class="item">
+        <img class="avatar" v-if="memberInfo.avatar" :src="memberInfo.avatar" />
+        <img class="avatar" v-if="!memberInfo.avatar" src="@/assets/images/avatar.svg" />
+        <div class="value">会员名称:{{ memberInfo.name }}</div>
+        <div class="value">会员性别:{{ memberInfo.sex == '1' ? '男' : '女' }}</div>
+      </div>
+      <div class="item">
+        <div class="value">手机号码:{{ memberInfo.mobile ? memberInfo.mobile : '暂无' }}</div>
+        <div class="value">会员号码:{{ memberInfo.userNo ? memberInfo.userNo : '暂无' }}</div>
+      </div>
+      <div class="item">
+        <div class="value">
+          可用余额:{{ memberInfo.balance ? memberInfo.balance.toFixed(2) : '0.00' }}(元)
         </div>
-        <div slot="footer" class="dialog-footer">
-            <el-button v-if="!memberInfo.id" @click="doSubmit()">切换游客</el-button>
-            <el-button type="primary" class="main-button" v-if="!memberInfo.id" @click="doQuery()">查询会员</el-button>
-            <el-button v-if="memberInfo.id" @click="cancel()">重新查询</el-button>
-            <el-button type="danger" v-if="memberInfo.id" @click="doSubmit()">确认会员</el-button>
-        </div>
-    </el-dialog>
+        <div class="value">可用积分:{{ memberInfo.point ? memberInfo.point : '0' }}</div>
+      </div>
+    </div>
+    <div slot="footer" class="dialog-footer">
+      <el-button v-if="!memberInfo.id" @click="doSubmit()">切换游客</el-button>
+      <el-button type="primary" class="main-button" v-if="!memberInfo.id" @click="doQuery()">
+        查询会员
+      </el-button>
+      <el-button v-if="memberInfo.id" @click="cancel()">重新查询</el-button>
+      <el-button type="danger" v-if="memberInfo.id" @click="doSubmit()">确认会员</el-button>
+    </div>
+  </el-dialog>
 </template>
 <script>
-import { getMemberInfo } from "@/api/cashier";
+import { getMemberInfo } from '@/api/cashier'
 export default {
-    props: {
-      showDialog: {
-        type:[Boolean],
-        default:()=>false
+  props: {
+    showDialog: {
+      type: [Boolean],
+      default: () => false,
+    },
+  },
+  // 自动获取焦点
+  directives: {
+    focus: {
+      inserted: function (el) {
+        el.querySelector('input').focus()
+      },
+    },
+  },
+  watch: {
+    showDialog(value) {
+      if (value) {
+        this.memberInfo = {}
+        this.form.keyword = ''
       }
     },
-    // 自动获取焦点
-    directives: {
-      focus: {
-        inserted: function (el) {
-           el.querySelector('input').focus();
-        }
+  },
+  data() {
+    return {
+      loading: false,
+      form: { keyword: '' },
+      memberInfo: {},
+    }
+  },
+  methods: {
+    doQuery() {
+      const app = this
+      const keyword = this.form.keyword.trim()
+      if (keyword.length > 0) {
+        getMemberInfo({ keyword: this.form.keyword.trim() })
+          .then((response) => {
+            if (response.data.memberInfo) {
+              app.memberInfo = response.data.memberInfo
+            } else {
+              app.$alert('未查询到该会员信息,请确认!')
+              return false
+            }
+          })
+          .catch(() => {
+            // empty
+          })
+      } else {
+        app.$alert('请先输入会员关键字!')
       }
     },
-    watch: {
-      showDialog(value) {
-        if (value) {
-            this.memberInfo = {};
-            this.form.keyword = '';
-        }
-      },
+    doSubmit() {
+      const app = this
+      if (app.memberInfo.id) {
+        app.$emit('doSwitchMember', app.memberInfo)
+      } else {
+        app.$emit('doSwitchMember', null)
+      }
     },
-    data(){
-        return {
-          loading: false,
-          form: { keyword: '' },
-          memberInfo: {}
-        }
+    cancel() {
+      this.memberInfo = {}
     },
-    methods: {
-        doQuery() {
-          const app = this;
-          const keyword = this.form.keyword.trim();
-          if (keyword.length > 0) {
-              getMemberInfo( { keyword: this.form.keyword.trim() }).then(response => {
-                if (response.data.memberInfo) {
-                    app.memberInfo = response.data.memberInfo;
-                } else {
-                    app.$alert("未查询到该会员信息,请确认!");
-                    return false;
-                }
-              }).catch(() => {
-                 // empty
-              });
-          } else {
-             app.$alert("请先输入会员关键字!");
-          }
-        },
-        doSubmit() {
-           const app = this;
-           if (app.memberInfo.id) {
-               app.$emit('doSwitchMember', app.memberInfo);
-           } else {
-               app.$emit('doSwitchMember', null);
-           }
-        },
-        cancel() {
-           this.memberInfo = {};
-        },
-        close() {
-           this.$emit('doSwitchMember', 0);
-        }
-    }
+    close() {
+      this.$emit('doSwitchMember', 0)
+    },
+  },
 }
 </script>
 <style scoped>
-  .form {
-     margin-top: 30px;
-  }
-  .input-item >>> .el-input__inner {
-    border: #113a28 solid 2px;
-    line-height: 50px;
-    height: 50px;
-  }
-  .form-item >>> .el-form-item__label {
-    line-height: 50px;
-    height: 50px;
-  }
-  .member-info {
-     border: solid 1px #cccccc;
-     padding: 20px;
-     border-radius: 4px;
-     cursor: pointer;
-  }
-  .member-info .item {
-      height: 20px;
-  }
-  .member-info .item .avatar {
-     height: 60px;
-     width: 60px;
-     border-radius: 30px;
-     border: solid 1px #cccccc;
-     float: left;
-  }
-  .member-info .item .value {
-     float: left;
-     margin-left: 10px;
-     width: 200px;
-  }
-
+.form {
+  margin-top: 30px;
+}
+.input-item >>> .el-input__inner {
+  border: #113a28 solid 2px;
+  line-height: 50px;
+  height: 50px;
+}
+.form-item >>> .el-form-item__label {
+  line-height: 50px;
+  height: 50px;
+}
+.member-info {
+  border: solid 1px #cccccc;
+  padding: 20px;
+  border-radius: 4px;
+  cursor: pointer;
+}
+.member-info .item {
+  height: 20px;
+}
+.member-info .item .avatar {
+  height: 60px;
+  width: 60px;
+  border-radius: 30px;
+  border: solid 1px #cccccc;
+  float: left;
+}
+.member-info .item .value {
+  float: left;
+  margin-left: 10px;
+  width: 200px;
+}
 </style>

+ 28 - 28
src/renderer/views/cashier/index.vue

@@ -12,7 +12,7 @@
         <div class="top-nav">欢迎使用{{ systemName }}</div>
         <div class="left-side">
           <div class="logo">
-            <i class="logout el-icon-d-arrow-left" @click="logout"></i>
+            <!-- <i class="logout el-icon-d-arrow-left" @click="logout"></i> -->
             <div class="title">收银台</div>
             <div class="store" v-if="storeInfo">({{ storeInfo.name }})</div>
             <div class="account">您好,{{ accountInfo.realName }}!</div>
@@ -38,7 +38,7 @@
               <img
                 class="avatar"
                 v-if="!memberInfo || !memberInfo.avatar"
-                src="@/assets/images/avatar.png"
+                src="@/assets/images/avatar.svg"
               />
               <img class="avatar" v-else :src="memberInfo.avatar" />
             </div>
@@ -47,15 +47,15 @@
                 {{ memberInfo.mobile ? memberInfo.mobile : memberInfo.name }}
               </span>
               <span class="none" v-if="!memberInfo">当前为游客</span>
-              <el-button
-                size="mini"
-                class="switch"
-                type="danger"
-                icon="el-icon-refresh"
-                @click="switchMember()"
-              >
-                关联会员
-              </el-button>
+              <!-- <el-button
+                  size="mini"
+                  class="switch"
+                  type="danger"
+                  icon="el-icon-refresh"
+                  @click="switchMember()"
+                >
+                  关联会员
+                </el-button> -->
             </div>
           </div>
           <div class="carts">
@@ -303,7 +303,7 @@ import {
   removeFromCart,
   submitSettlement,
   doPay,
-  getMemberInfoById
+  getMemberInfoById,
 } from '@/api/cashier'
 import { getOrderInfo } from '@/api/order'
 import { getUserId, setUserId, removeUserId } from '@/utils/auth'
@@ -331,7 +331,7 @@ export default {
     memberList,
     couponConfirm,
     noGoodsCashier,
-    bindStaffDialog
+    bindStaffDialog,
   },
   data() {
     return {
@@ -357,9 +357,9 @@ export default {
       goodsForm: {},
       // 左侧菜单
       menuList: [
-        { name: '收银主页', key: 'cashier', logo: require('../../assets/images/cashier.png') },
-        { name: '订单管理', key: 'order', logo: require('../../assets/images/order.png') },
-        { name: '退出', key: 'exit', logo: require('../../assets/images/order.png') }
+        { name: '收银主页', key: 'cashier', logo: require('../../assets/images/menu-cooker1.png') },
+        { name: '订单管理', key: 'order', logo: require('../../assets/images/menu-cooker2.png') },
+        { name: '退出', key: 'exit', logo: require('../../assets/images/menu-cooker3.png') },
         //  { name: '会员管理', key: 'member', logo: require('../../assets/images/hot.png') },
         //  { name: '卡券核销', key: 'coupon', logo: require('../../assets/images/life.png') }
       ],
@@ -411,7 +411,7 @@ export default {
       couponList: [],
       // 挂单序号
       hangNo: '',
-      isSearch: false
+      isSearch: false,
     }
   },
   mounted() {
@@ -540,7 +540,7 @@ export default {
                 logo: item.goodsInfo.logo,
                 price: item.goodsInfo.price,
                 buyNum: item.num,
-                specList: specList
+                specList: specList,
               }
               app.cartList.push(cartInfo)
             })
@@ -673,7 +673,7 @@ export default {
         skuId: skuId,
         userId: getUserId(),
         hangNo: app.hangNo,
-        buyNum: app.goodsNum
+        buyNum: app.goodsNum,
       }
       app.loading = true
       saveCart(cartInfo)
@@ -715,7 +715,7 @@ export default {
         action: '=',
         userId: app.memberInfo ? app.memberInfo.id : null,
         hangNo: app.hangNo,
-        buyNum: cartInfo.buyNum
+        buyNum: cartInfo.buyNum,
       }
       app.loading = true
       saveCart(param)
@@ -812,14 +812,14 @@ export default {
             payType: param.payType,
             cashierPayAmount: param.totalPrice,
             cashierDiscountAmount: param.discountPrice,
-            userId: getUserId()
+            userId: getUserId(),
           }).then((response) => {
             app.openSettlementDialog = false
             if (response.data.orderInfo.payStatus == 'B') {
               app.showPayResult({
                 isSuccess: true,
                 payAmount: response.data.orderInfo.payAmount,
-                orderId: response.data.orderInfo.id
+                orderId: response.data.orderInfo.id,
               })
             } else {
               app.$alert(response.data.message ? response.data.message : '抱歉,订单操作异常!')
@@ -843,7 +843,7 @@ export default {
         type: app.cartList.length > 0 ? 'goods' : 'payment',
         couponId: param.userCouponId ? param.userCouponId : 0,
         userId: getUserId(),
-        staffId: app.staffInfo ? app.staffInfo.id : 0
+        staffId: app.staffInfo ? app.staffInfo.id : 0,
       }
       if (app.loading) {
         return false
@@ -874,7 +874,7 @@ export default {
               app.showPayResult({
                 isSuccess: true,
                 payAmount: response.data.orderInfo.payAmount,
-                orderId: response.data.orderInfo.id
+                orderId: response.data.orderInfo.id,
               })
             } else {
               app.$alert(response.data.message)
@@ -981,8 +981,8 @@ export default {
     // 确认关闭
     handleClose() {
       return false
-    }
-  }
+    },
+  },
 }
 </script>
 
@@ -1270,11 +1270,11 @@ export default {
         .cash {
           float: left;
           height: 50px;
-          border: solid 1px #113a28;
+          // border: solid 1px #113a28;
           padding-top: 15px;
           width: 135px;
           border-radius: 5px;
-          background: #113a28;
+          // background: #113a28;
           font-weight: bold;
         }
         .submit {

+ 3 - 28
yarn.lock

@@ -8144,16 +8144,7 @@ strict-uri-encode@^1.0.0:
   resolved "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
   integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==
 
-"string-width-cjs@npm:string-width@^4.2.0":
-  version "4.2.3"
-  resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
-  integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
-  dependencies:
-    emoji-regex "^8.0.0"
-    is-fullwidth-code-point "^3.0.0"
-    strip-ansi "^6.0.1"
-
-string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
+"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
   version "4.2.3"
   resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
   integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -8217,7 +8208,7 @@ string_decoder@~1.1.1:
   dependencies:
     safe-buffer "~5.1.0"
 
-"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
+"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
   version "6.0.1"
   resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
   integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
@@ -8238,13 +8229,6 @@ strip-ansi@^4.0.0:
   dependencies:
     ansi-regex "^3.0.0"
 
-strip-ansi@^6.0.0, strip-ansi@^6.0.1:
-  version "6.0.1"
-  resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
-  integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
-  dependencies:
-    ansi-regex "^5.0.1"
-
 strip-ansi@^7.0.1:
   version "7.1.0"
   resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
@@ -9221,7 +9205,7 @@ wordwrap@0.0.2:
   resolved "https://registry.npmmirror.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
   integrity sha512-xSBsCeh+g+dinoBv3GAOWM4LcVVO68wLXRanibtBSdUvkGWQRGeE9P7IwU9EmDDi4jA6L44lz15CGMwdw9N5+Q==
 
-"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
+"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
   version "7.0.0"
   resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
   integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
@@ -9239,15 +9223,6 @@ wrap-ansi@^6.2.0:
     string-width "^4.1.0"
     strip-ansi "^6.0.0"
 
-wrap-ansi@^7.0.0:
-  version "7.0.0"
-  resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
-  integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
-  dependencies:
-    ansi-styles "^4.0.0"
-    string-width "^4.1.0"
-    strip-ansi "^6.0.0"
-
 wrap-ansi@^8.1.0:
   version "8.1.0"
   resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"

Some files were not shown because too many files changed in this diff