Merge branch 'master' of https://gitee.com/nny_1/oilSystem
# Conflicts: # fuintBackend/configure/dev/application.properties # fuintBackend/fuint-application/src/main/resources/application.properties
This commit is contained in:
commit
51df6fc295
@ -34,6 +34,15 @@ export function addCertifiedMember(data) {
|
||||
})
|
||||
}
|
||||
|
||||
// 批量新增固定等级
|
||||
export function addCertifiedMembers(data) {
|
||||
return request({
|
||||
url: '/business/userManager/certifiedMember/members',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改固定等级
|
||||
export function updateCertifiedMember(data) {
|
||||
return request({
|
||||
|
@ -102,7 +102,15 @@
|
||||
@click="handleAddMember"
|
||||
v-hasPermi="['member:add']"
|
||||
>新增用户认证</el-button>
|
||||
<el-table ref="tables" v-loading="loading" :data="listMember" @selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="handleSortChange">
|
||||
<el-button
|
||||
type="danger"
|
||||
icon="el-icon-document-copy"
|
||||
@click="handleAddMembers"
|
||||
v-hasPermi="['member:add']"
|
||||
>新增用户认证</el-button>
|
||||
<el-table ref="tables" v-loading="loading" :data="listMember"
|
||||
@selection-change="handleSelectionChange" :default-sort="defaultSort"
|
||||
@sort-change="handleSortChange">
|
||||
<el-table-column label="认证类型" prop="fixingLevelId" align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.fixingLevelId ? getName(fixingLevelList, scope.row.fixingLevelId) : '-' }}</span>
|
||||
@ -116,7 +124,11 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="姓名" align="center" prop="name" />
|
||||
<el-table-column label="车牌号" align="center" prop="carNumber"/>
|
||||
<el-table-column label="认证资料" align="center" prop="attestationData"/>
|
||||
<el-table-column label="认证资料" align="center" prop="attestationData">
|
||||
<template slot-scope="scope">
|
||||
<!-- {{scope.row}}-->
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" align="center" prop="remark"/>
|
||||
<el-table-column label="状态" align="center" prop="status">
|
||||
<template slot-scope="scope">
|
||||
@ -316,6 +328,71 @@
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<!-- 批量添加用户认证信息 -->
|
||||
<el-dialog :title="title" :visible.sync="openMembers"
|
||||
:close-on-click-modal="false" append-to-body>
|
||||
<el-form ref="form2" :model="form2" :rules="rules2">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="认证类型" prop="fixingLevelId">
|
||||
<el-select
|
||||
v-model="form2.fixingLevelId"
|
||||
placeholder="请选择"
|
||||
clearable
|
||||
>
|
||||
<el-option v-for="item in fixingLevelList" :key="item.id+''" :label="item.name" :value="item.id"/>
|
||||
</el-select>
|
||||
<div>
|
||||
<div style="color: grey;font-size: 12px;height: 18px;margin-left: 8%">
|
||||
认证会员类型,每个会员仅支持认证一个类型
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="手机号" prop="mobile">
|
||||
<el-input v-model="form2.mobile"
|
||||
type="textarea"
|
||||
maxlength="12000"
|
||||
style="width: 85%;height: 300px;:deep(.el-textarea__inner){height: 300px;}
|
||||
:deep(.el-input__wrapper){height:300px;}"
|
||||
show-word-limit
|
||||
placeholder="请输入会员手机号,多个手机号换行操作,每行一个会员手机号!单次最大支持1000个会员手机号认证~">
|
||||
</el-input>
|
||||
<div>
|
||||
<div style="color: grey;font-size: 12px;height: 18px;margin-left: 8%">
|
||||
多个会员手机号换行操作,每行为一个会员手机号,单次最大支持1000个会员手机号认证,请确保用户手机号已注册为油站会员(在会员列表已显示),否则无法添加认证信息
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitFormMembers">确 定</el-button>
|
||||
<el-button @click="cancelMembers">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 批量导入结果-->
|
||||
<el-dialog width="400px" style="margin-top: 150px" :title="title" :visible.sync="openResult" append-to-body>
|
||||
<div class="huiyuan">
|
||||
认证总数:<span class="num">{{result.total}}</span> 人
|
||||
</div>
|
||||
<div class="huiyuan">
|
||||
成功人数:<span class="num">{{result.success}}</span> 人
|
||||
</div>
|
||||
<div class="huiyuan">
|
||||
失败人数:<span class="num">{{result.error}}</span> 人
|
||||
<span v-if="result.error!=0" style="color: red;font-size: 12px">会员信息不存在</span>
|
||||
</div>
|
||||
<div class="huiyuan">
|
||||
已认证人数:<span class="num">{{result.certified}}</span> 人
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 添加用户认证或修改对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="openMember"
|
||||
:close-on-click-modal="false" append-to-body>
|
||||
@ -375,15 +452,16 @@
|
||||
<el-form-item label="认证图片1" prop="photo1">
|
||||
<div>
|
||||
<el-upload
|
||||
action="https://jsonplaceholder.typicode.com/posts/"
|
||||
action="/dev-api/picture/upload"
|
||||
:show-file-list="false"
|
||||
list-type="picture-card"
|
||||
:on-preview="handlePictureCardPreview"
|
||||
:on-remove="handleRemove">
|
||||
<i class="el-icon-plus"></i>
|
||||
:on-success="handleAvatarSuccess1"
|
||||
:on-change="onChange"
|
||||
ref="upload"
|
||||
>
|
||||
<img v-if="imageUrl.imageUrl1" :src="imageUrl.imageUrl1" class="avatar">
|
||||
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
|
||||
</el-upload>
|
||||
<el-dialog :visible.sync="dialogVisible">
|
||||
<img width="100%" :src="dialogImageUrl" alt="">
|
||||
</el-dialog>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@ -391,15 +469,16 @@
|
||||
<el-form-item label="认证图片2" prop="photo2">
|
||||
<div>
|
||||
<el-upload
|
||||
action="https://jsonplaceholder.typicode.com/posts/"
|
||||
action="/dev-api/picture/upload"
|
||||
:show-file-list="false"
|
||||
list-type="picture-card"
|
||||
:on-preview="handlePictureCardPreview"
|
||||
:on-remove="handleRemove">
|
||||
<i class="el-icon-plus"></i>
|
||||
:on-success="handleAvatarSuccess2"
|
||||
:on-change="onChange"
|
||||
ref="upload"
|
||||
>
|
||||
<img v-if="imageUrl.imageUrl2" :src="imageUrl.imageUrl2" class="avatar">
|
||||
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
|
||||
</el-upload>
|
||||
<el-dialog :visible.sync="dialogVisible">
|
||||
<img width="100%" :src="dialogImageUrl" alt="">
|
||||
</el-dialog>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@ -407,15 +486,16 @@
|
||||
<el-form-item label="认证图片3" prop="photo3">
|
||||
<div>
|
||||
<el-upload
|
||||
action="https://jsonplaceholder.typicode.com/posts/"
|
||||
action="/dev-api/picture/upload"
|
||||
:show-file-list="false"
|
||||
list-type="picture-card"
|
||||
:on-preview="handlePictureCardPreview"
|
||||
:on-remove="handleRemove">
|
||||
<i class="el-icon-plus"></i>
|
||||
:on-success="handleAvatarSuccess3"
|
||||
:on-change="onChange"
|
||||
ref="upload"
|
||||
>
|
||||
<img v-if="imageUrl.imageUrl3" :src="imageUrl.imageUrl3" class="avatar">
|
||||
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
|
||||
</el-upload>
|
||||
<el-dialog :visible.sync="dialogVisible">
|
||||
<img width="100%" :src="dialogImageUrl" alt="">
|
||||
</el-dialog>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@ -725,7 +805,7 @@ import {
|
||||
updateFixingLevel
|
||||
} from "@/api/staff/user/fixinglevel";
|
||||
import {
|
||||
addCertifiedMember,
|
||||
addCertifiedMember, addCertifiedMembers,
|
||||
delCertifiedMember,
|
||||
getCertifiedMember, getCertifiedMemberByUserId,
|
||||
listCertifiedMember,
|
||||
@ -737,10 +817,14 @@ export default {
|
||||
dicts: ['yhlx','yes_or_no','zhzt','yhhdz','rzzt'],
|
||||
data() {
|
||||
return {
|
||||
result:{},
|
||||
isEdit:false,
|
||||
// 上传图片信息
|
||||
dialogImageUrl: '',
|
||||
dialogVisible: false,
|
||||
imageUrl: {
|
||||
imageUrl1: '',
|
||||
imageUrl2: '',
|
||||
imageUrl3: '',
|
||||
},
|
||||
mobile:'',
|
||||
activeName: 'member',
|
||||
// 显示搜索条件
|
||||
@ -787,6 +871,8 @@ export default {
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
openMember: false,
|
||||
openMembers: false,
|
||||
openResult: false,
|
||||
// 表单参数
|
||||
form: {
|
||||
id: '', name: '',discountType:'自定义优惠',gasolineDiscount:'无优惠',
|
||||
@ -798,6 +884,7 @@ export default {
|
||||
id: '', name: '',mobile:'',carNumber:'',userId:'',
|
||||
attestationData:'',remark:'',status: 'enable'
|
||||
},
|
||||
form2:{},
|
||||
// 优惠值
|
||||
gasolinePreferential:[
|
||||
{
|
||||
@ -871,7 +958,16 @@ export default {
|
||||
status: [
|
||||
{ required: true, message: "请选择认证状态", trigger: "blur" },
|
||||
],
|
||||
}
|
||||
},
|
||||
// 表单校验
|
||||
rules2: {
|
||||
mobile: [
|
||||
{ required: true, message: "请填写认证手机号", trigger: "blur" },
|
||||
],
|
||||
fixingLevelId: [
|
||||
{ required: true, message: "请选择认证类型", trigger: "blur" },
|
||||
],
|
||||
},
|
||||
};
|
||||
},
|
||||
created() {
|
||||
@ -880,13 +976,6 @@ export default {
|
||||
this.getUserList();
|
||||
},
|
||||
methods: {
|
||||
checkMobile(){
|
||||
getUserMobile({mobile:this.form1.mobile}).then( response => {
|
||||
if (response.data==null){
|
||||
|
||||
}
|
||||
})
|
||||
},
|
||||
handleClick(tab, event) {
|
||||
// console.log(tab, event);
|
||||
},
|
||||
@ -963,8 +1052,17 @@ export default {
|
||||
id: '', name: '',mobile:'',carNumber:'',userId:'',
|
||||
attestationData:'',remark:'',status: 'enable'
|
||||
};
|
||||
this.imageUrl={
|
||||
imageUrl1 : "",
|
||||
imageUrl2 : "",
|
||||
imageUrl3 : "",
|
||||
};
|
||||
this.resetForm("form1");
|
||||
},
|
||||
reset2() {
|
||||
this.form2 = {};
|
||||
this.resetForm("form2");
|
||||
},
|
||||
// 新增按钮操作
|
||||
handleAdd() {
|
||||
this.open = true;
|
||||
@ -975,6 +1073,37 @@ export default {
|
||||
this.openMember = true;
|
||||
this.title = "新增用户认证";
|
||||
},
|
||||
handleAvatarSuccess1(res, file) {
|
||||
// this.imageUrl.imageUrl1 = `/dev-api/uploadImages/certifiedImage/file.jpg`
|
||||
this.imageUrl.imageUrl1 = URL.createObjectURL(file.raw);
|
||||
},
|
||||
handleAvatarSuccess2(res, file) {
|
||||
this.imageUrl.imageUrl2 = URL.createObjectURL(file.raw);
|
||||
},
|
||||
handleAvatarSuccess3(res, file) {
|
||||
this.imageUrl.imageUrl3 = URL.createObjectURL(file.raw);
|
||||
},
|
||||
onChange (file,fileList) {
|
||||
if(file){
|
||||
const suffix = file.name.split('.')[1]
|
||||
const size = file.size / 1024 / 1024 < 2
|
||||
if(['png','jpeg','jpg'].indexOf(suffix) < 0){
|
||||
this.$message.error('上传图片只支持 png、jpeg、jpg 格式!')
|
||||
this.$refs.upload.clearFiles()
|
||||
return false
|
||||
}
|
||||
if(!size){
|
||||
this.$message.error('上传文件大小不能超过 2MB!')
|
||||
return false
|
||||
}
|
||||
return file
|
||||
}
|
||||
},
|
||||
// 新增按钮操作
|
||||
handleAddMembers() {
|
||||
this.openMembers = true;
|
||||
this.title = "批量用户认证";
|
||||
},
|
||||
// 修改按钮操作
|
||||
handleUpdate(row) {
|
||||
this.reset();
|
||||
@ -994,6 +1123,7 @@ export default {
|
||||
this.form1 = response.data;
|
||||
this.openMember = true;
|
||||
this.title = "编辑用户认证";
|
||||
this.imageUrl = JSON.parse(this.form1.attestationData)
|
||||
});
|
||||
},
|
||||
// 取消按钮
|
||||
@ -1007,7 +1137,12 @@ export default {
|
||||
this.reset1();
|
||||
this.isEdit = false;
|
||||
},
|
||||
// 提交按钮
|
||||
// 取消按钮
|
||||
cancelMembers() {
|
||||
this.openMembers = false;
|
||||
this.reset2();
|
||||
},
|
||||
// 提交按钮 固定等级
|
||||
submitForm: function() {
|
||||
this.$refs["form"].validate(valid => {
|
||||
if (valid) {
|
||||
@ -1030,10 +1165,11 @@ export default {
|
||||
}
|
||||
});
|
||||
},
|
||||
// 提交按钮
|
||||
// 提交按钮 单个认证会员信息
|
||||
submitFormMember: function() {
|
||||
this.$refs["form1"].validate(valid => {
|
||||
if (valid) {
|
||||
this.form1.attestationData = JSON.stringify(this.imageUrl)
|
||||
if (this.form1.id) {
|
||||
updateCertifiedMember(this.form1).then(response => {
|
||||
this.$modal.msgSuccess("用户认证信息更新成功");
|
||||
@ -1065,6 +1201,20 @@ export default {
|
||||
}
|
||||
});
|
||||
},
|
||||
// 提交按钮 批量认证会员信息
|
||||
submitFormMembers: function() {
|
||||
this.$refs["form2"].validate(valid => {
|
||||
if (valid) {
|
||||
addCertifiedMembers(this.form2).then(response => {
|
||||
this.openMembers = false;
|
||||
this.openResult = true;
|
||||
this.title = "会员认证结果";
|
||||
this.result = response.data;
|
||||
this.reset2();
|
||||
})
|
||||
}
|
||||
});
|
||||
},
|
||||
// 删除按钮操作
|
||||
handleDelete(row) {
|
||||
const name = row.name
|
||||
@ -1087,13 +1237,6 @@ export default {
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
}).catch(() => {});
|
||||
},
|
||||
handleRemove(file, fileList) {
|
||||
// console.log(file, fileList);
|
||||
},
|
||||
handlePictureCardPreview(file) {
|
||||
this.dialogImageUrl = file.url;
|
||||
this.dialogVisible = true;
|
||||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.id)
|
||||
@ -1148,10 +1291,23 @@ export default {
|
||||
height: 100%;
|
||||
background: #f6f8f9;
|
||||
}
|
||||
|
||||
.huiyuan{
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
font-size: 16px;
|
||||
}
|
||||
.num{
|
||||
font-weight: bold;
|
||||
color: red;
|
||||
font-size: 18px;
|
||||
}
|
||||
.roll-dialog ::v-deep .el-dialog .el-dialog__body {
|
||||
padding: 3px 30px;
|
||||
overflow-y: scroll;
|
||||
height: 500px;
|
||||
}
|
||||
.avatar{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
|
@ -162,7 +162,9 @@
|
||||
@click="handleAdd"
|
||||
v-hasPermi="['member:add']"
|
||||
>新增会员</el-button>
|
||||
<el-table ref="tables" v-loading="loading" :data="list" @selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="handleSortChange">
|
||||
<el-table ref="tables" v-loading="loading" :data="list"
|
||||
@selection-change="handleSelectionChange" :default-sort="defaultSort"
|
||||
@sort-change="handleSortChange">
|
||||
<el-table-column label="会员ID" prop="id" align="center" width="60"/>
|
||||
<el-table-column label="头像" align="center" width="70">
|
||||
<template slot-scope="scope">
|
||||
|
@ -1,5 +1,7 @@
|
||||
# 数据库配置
|
||||
|
||||
spring.datasource.url=jdbc:mysql://192.168.1.5:3306/fuint-db?useUnicode=true&characterEncoding=UTF8&useSSL=false&allowMultiQueries=true
|
||||
|
||||
spring.datasource.username=root
|
||||
spring.datasource.password=qqzcy@1014
|
||||
|
||||
@ -101,4 +103,4 @@ weixin.subMessage.couponExpire=[{'key':'name', 'name':'卡券名称'}, {'key':'e
|
||||
weixin.subMessage.couponArrival=[{'key':'name', 'name':'卡券名称'},{'key':'amount', 'name':'金额'},{'key':'tips', 'name':'温馨提示'}]
|
||||
weixin.subMessage.balanceChange=[{'key':'amount', 'name':'变动金额'},{'key':'time', 'name':'变动时间'},{'key':'tips', 'name':'温馨提示'}]
|
||||
weixin.subMessage.couponConfirm=[{'key':'name', 'name':'卡券名称'},{'key':'time', 'name':'核销时间'}]
|
||||
weixin.subMessage.pointChange=[{'key':'amount', 'name':'变动数量'},{'key':'time', 'name':'变动时间'},{'key':'remark', 'name':'备注信息'}]
|
||||
weixin.subMessage.pointChange=[{'key':'amount', 'name':'变动数量'},{'key':'time', 'name':'变动时间'},{'key':'remark', 'name':'备注信息'}]
|
||||
|
@ -152,6 +152,13 @@
|
||||
<artifactId>poi-ooxml</artifactId>
|
||||
<version>3.17</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 上传图片-->
|
||||
<dependency>
|
||||
<groupId>commons-fileupload</groupId>
|
||||
<artifactId>commons-fileupload</artifactId>
|
||||
<version>1.4</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
@ -10,6 +10,9 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 固定等级 controller层
|
||||
*/
|
||||
@ -77,6 +80,40 @@ public class CertifiedMemberController extends BaseController {
|
||||
return getSuccessResult(certifiedMemberService.insertCertifiedMember(certifiedMember));
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加固定等级信息
|
||||
* @param map
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/members")
|
||||
public ResponseObject addMembers(@Validated @RequestBody Map<String ,String > map){
|
||||
Map<String ,Object > map1 = new HashMap<>();
|
||||
int error = 0;
|
||||
int certified = 0;
|
||||
int success = 0;
|
||||
int total = 0;
|
||||
CertifiedMember certifiedMember = new CertifiedMember();
|
||||
certifiedMember.setFixingLevelId(Integer.parseInt(map.get("fixingLevelId")));
|
||||
String[] mobiles = map.get("mobile").split("\n");
|
||||
for (String mobile : mobiles) {
|
||||
total++;
|
||||
certifiedMember.setMobile(mobile);
|
||||
int row = certifiedMemberService.insertCertifiedMember(certifiedMember);
|
||||
if (row==1){
|
||||
success++;
|
||||
} else if (row==2 || row==3) {
|
||||
error++;
|
||||
}else {
|
||||
certified++;
|
||||
}
|
||||
}
|
||||
map1.put("success",success);
|
||||
map1.put("error",error);
|
||||
map1.put("certified",certified);
|
||||
map1.put("total",total);
|
||||
return getSuccessResult(map1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改固定等级信息
|
||||
* @param certifiedMember
|
||||
|
@ -0,0 +1,41 @@
|
||||
package com.fuint.business.userManager.controller;
|
||||
|
||||
import com.fuint.framework.web.BaseController;
|
||||
import com.fuint.framework.web.ResponseObject;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.FileOutputStream;
|
||||
import java.util.UUID;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/picture")
|
||||
public class FileUploadController extends BaseController {
|
||||
@PostMapping("/upload")
|
||||
public ResponseObject handleFileUpload(@RequestParam("file") MultipartFile file) {
|
||||
if (!file.isEmpty()) {
|
||||
try {
|
||||
byte[] bytes = file.getBytes();
|
||||
// 保存文件到服务器
|
||||
String filePath = "D:/workspaces/oilSystem/fuintBackend/fuint-application/src/main/resources/static/uploadImages/certifiedImage/";
|
||||
String imgName = UUID.randomUUID().toString().replace("-","").substring(0,6);
|
||||
// String imgName = file.getName();
|
||||
String path = filePath+imgName+".jpg";
|
||||
FileOutputStream fos = new FileOutputStream(path);
|
||||
fos.write(bytes);
|
||||
fos.close();
|
||||
|
||||
return getSuccessResult("上传成功");
|
||||
} catch (Exception e) {
|
||||
return getSuccessResult("上传失败:" + e.getMessage());
|
||||
}
|
||||
} else {
|
||||
return getSuccessResult("上传失败:文件为空");
|
||||
}
|
||||
// 处理文件上传逻辑
|
||||
// return getSuccessResult("上传成功");
|
||||
}
|
||||
}
|
@ -1,6 +1,8 @@
|
||||
package com.fuint.business.userManager.entity;
|
||||
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fuint.framework.entity.BaseEntity;
|
||||
@ -11,6 +13,7 @@ import lombok.Setter;
|
||||
|
||||
import java.util.Date;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 认证会员表(CertifiedMember)实体类
|
||||
@ -68,5 +71,10 @@ public class CertifiedMember extends BaseEntity implements Serializable {
|
||||
*/
|
||||
@ApiModelProperty("认证状态")
|
||||
private String status;
|
||||
/**
|
||||
* 图片URL
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private List<JSONObject> imgUrlList;
|
||||
}
|
||||
|
||||
|
@ -30,6 +30,13 @@ public interface CertifiedMemberService extends IService<CertifiedMember> {
|
||||
*/
|
||||
public CertifiedMember selectCertifiedMemberByUserId(int userId);
|
||||
|
||||
/**
|
||||
* 根据会员手机号查询认证会员信息
|
||||
* @param mobile
|
||||
* @return
|
||||
*/
|
||||
public CertifiedMember selectCertifiedMemberByMobile(String mobile);
|
||||
|
||||
/**
|
||||
* 根据id删除认证会员信息
|
||||
* @param id
|
||||
|
@ -8,11 +8,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.fuint.business.userManager.entity.CertifiedMember;
|
||||
import com.fuint.business.userManager.entity.FixingLevel;
|
||||
import com.fuint.business.userManager.entity.LJUser;
|
||||
import com.fuint.business.userManager.mapper.CertifiedMemberMapper;
|
||||
import com.fuint.business.userManager.mapper.FixingLevelMapper;
|
||||
import com.fuint.business.userManager.service.CertifiedMemberService;
|
||||
import com.fuint.business.userManager.service.FixingLevelService;
|
||||
import com.fuint.business.userManager.service.LJUserService;
|
||||
import com.fuint.common.util.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
@ -20,6 +23,9 @@ import org.springframework.stereotype.Service;
|
||||
*/
|
||||
@Service
|
||||
public class CertifiedMemberServiceImpl extends ServiceImpl<CertifiedMemberMapper, CertifiedMember> implements CertifiedMemberService {
|
||||
@Autowired
|
||||
private LJUserService userService;
|
||||
|
||||
/**
|
||||
* 根据条件分页查询固定等级信息
|
||||
* @param page
|
||||
@ -28,6 +34,11 @@ public class CertifiedMemberServiceImpl extends ServiceImpl<CertifiedMemberMappe
|
||||
@Override
|
||||
public IPage<CertifiedMember> selectCertifiedMemberList(Page page, CertifiedMember certifiedMember) {
|
||||
IPage<CertifiedMember> fixingLevelIPage = baseMapper.selectCertifiedMemberList(page, certifiedMember);
|
||||
// for (CertifiedMember record : fixingLevelIPage.getRecords()) {
|
||||
// if (StringUtils.isNotEmpty(record.getAttestationData())){
|
||||
// record.setImgUrlList(JSONArray.parseArray(record.getAttestationData(), JSONObject.class));
|
||||
// }
|
||||
// }
|
||||
return fixingLevelIPage;
|
||||
}
|
||||
|
||||
@ -54,6 +65,19 @@ public class CertifiedMemberServiceImpl extends ServiceImpl<CertifiedMemberMappe
|
||||
return certifiedMember;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据会员手机号查询认证会员信息
|
||||
* @param mobile
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public CertifiedMember selectCertifiedMemberByMobile(String mobile) {
|
||||
QueryWrapper queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("mobile",mobile);
|
||||
CertifiedMember certifiedMember = baseMapper.selectOne(queryWrapper);
|
||||
return certifiedMember;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据id删除固定等级信息
|
||||
* @param id
|
||||
@ -70,6 +94,24 @@ public class CertifiedMemberServiceImpl extends ServiceImpl<CertifiedMemberMappe
|
||||
*/
|
||||
@Override
|
||||
public int insertCertifiedMember(CertifiedMember certifiedMember) {
|
||||
if (certifiedMember.getMobile()==null || certifiedMember.getMobile().equals("")){
|
||||
return 2;
|
||||
}
|
||||
LJUser user = userService.selectUserByMobile(certifiedMember.getMobile());
|
||||
if (user==null){
|
||||
return 3;
|
||||
}
|
||||
QueryWrapper queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("mobile",certifiedMember.getMobile());
|
||||
CertifiedMember member = baseMapper.selectOne(queryWrapper);
|
||||
if (member!=null){
|
||||
return 4;
|
||||
}
|
||||
if (certifiedMember.getName()==null || certifiedMember.getName().equals("")){
|
||||
LJUser ljUser = userService.selectUserByMobile(certifiedMember.getMobile());
|
||||
certifiedMember.setName(ljUser.getName());
|
||||
certifiedMember.setUserId(ljUser.getId());
|
||||
}
|
||||
int row = baseMapper.insert(certifiedMember);
|
||||
return row;
|
||||
}
|
||||
|
@ -1,8 +1,9 @@
|
||||
# \u57FA\u672C\u914D\u7F6E
|
||||
server.port=8080
|
||||
server.port=8008
|
||||
env.profile=dev
|
||||
env.properties.path=D:/code/oilSystem/fuintBackend/configure/
|
||||
|
||||
|
||||
# \u6570\u636E\u5E93\u914D\u7F6E
|
||||
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
|
||||
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
|
||||
|
@ -1,2 +1,2 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1650167616666" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4032" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="128"><defs><style type="text/css">@font-face { font-family: "feedback-iconfont"; src: url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff2?t=1630033759944") format("woff2"), url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff?t=1630033759944") format("woff"), url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.ttf?t=1630033759944") format("truetype"); }
|
||||
</style></defs><path d="M512 74.472727L135.028364 325.818182 512 577.163636 888.971636 325.818182 512 74.472727z m12.893091-47.290182l418.909091 279.272728a23.272727 23.272727 0 0 1 0 38.725818l-418.909091 279.272727a23.272727 23.272727 0 0 1-25.786182 0l-418.909091-279.272727a23.272727 23.272727 0 0 1 0-38.725818l418.909091-279.272728a23.272727 23.272727 0 0 1 25.786182 0zM512 763.298909l406.016-270.661818a23.272727 23.272727 0 1 1 25.786182 38.725818l-418.909091 279.272727a23.272727 23.272727 0 0 1-25.786182 0l-418.909091-279.272727a23.272727 23.272727 0 1 1 25.786182-38.725818L512 763.298909z m406.016-84.48a23.272727 23.272727 0 1 1 25.786182 38.725818l-418.909091 279.272728a23.272727 23.272727 0 0 1-25.786182 0l-418.909091-279.272728a23.272727 23.272727 0 1 1 25.786182-38.725818L512 949.480727l406.016-270.661818z" fill="#00acac" p-id="4033"></path></svg>
|
||||
</style></defs><path d="M512 74.472727L135.028364 325.818182 512 577.163636 888.971636 325.818182 512 74.472727z m12.893091-47.290182l418.909091 279.272728a23.272727 23.272727 0 0 1 0 38.725818l-418.909091 279.272727a23.272727 23.272727 0 0 1-25.786182 0l-418.909091-279.272727a23.272727 23.272727 0 0 1 0-38.725818l418.909091-279.272728a23.272727 23.272727 0 0 1 25.786182 0zM512 763.298909l406.016-270.661818a23.272727 23.272727 0 1 1 25.786182 38.725818l-418.909091 279.272727a23.272727 23.272727 0 0 1-25.786182 0l-418.909091-279.272727a23.272727 23.272727 0 1 1 25.786182-38.725818L512 763.298909z m406.016-84.48a23.272727 23.272727 0 1 1 25.786182 38.725818l-418.909091 279.272728a23.272727 23.272727 0 0 1-25.786182 0l-418.909091-279.272728a23.272727 23.272727 0 1 1 25.786182-38.725818L512 949.480727l406.016-270.661818z" fill="#5393ff" p-id="4033"></path></svg>
|
||||
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
@ -1 +1 @@
|
||||
<svg t="1678764587175" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3906" data-spm-anchor-id="a313x.7781069.0.i0" width="128" height="128"><path d="M930.51904 682.752c-1.2288 13.75232-20.17792 10.24-29.66528 10.24H172.77952c-12.0064 0-76.8256 9.05728-76.8256-11.70944v-141.02528-423.35744c0-9.79456-1.76128-22.95808 12.29312-22.95808h809.97888c22.67648 0 12.29312 77.75232 12.29312 91.264V682.752c0 33.01376 51.2 33.01376 51.2 0V317.69088 126.32576c0-19.13344 0.23552-34.98496-8.38656-53.15072-11.27424-23.75168-38.48192-30.42816-62.27456-30.42816H129.17248c-9.8304 0-19.63008-0.30208-29.42464 0.57856-35.75296 3.19488-54.99392 34.6624-54.99392 67.80928v566.92224c0 34.95424 24.52992 66.13504 61.48096 66.13504h812.98944c35.98848 0 59.44832-27.4432 62.49472-61.44 2.944-32.896-48.27648-32.6144-51.2 0z" fill="#00acac" p-id="3907"></path><path d="M487.63904 740.7616v213.3504c0 33.01376 51.2 33.01376 51.2 0v-213.3504c-0.00512-33.01888-51.2-33.01888-51.2 0z" fill="#00acac" p-id="3908"></path><path d="M92.57984 979.712H950.62016c33.01376 0 33.01376-51.2 0-51.2H92.57984c-33.01888 0-33.01888 51.2 0 51.2zM372.74112 236.54912l125.65504 125.65504c23.36256 23.36256 59.5712-12.83584 36.1984-36.20352L408.94464 200.3456c-23.36256-23.36768-59.56608 12.83584-36.20352 36.20352z" fill="#00acac" p-id="3909"></path><path d="M614.17984 200.3456L488.59648 326.00064c-23.35744 23.3728 12.84608 59.57632 36.20352 36.20352l125.57824-125.65504c23.36256-23.3728-12.83584-59.57632-36.1984-36.20352z" fill="#00acac" p-id="3910"></path><path d="M305.88416 369.69984h414.70976c33.01376 0 33.01376-51.2 0-51.2H305.88416c-33.01888 0-33.01888 51.2 0 51.2zM334.91456 498.33984h356.65408c33.01376 0 33.01376-51.2 0-51.2H334.91456c-33.01888 0-33.01888 51.2 0 51.2z" fill="#00acac" p-id="3911"></path><path d="M538.83392 564.89984V344.09984c0-33.01888-51.2-33.01888-51.2 0v220.8c0.00512 33.01376 51.2 33.01376 51.2 0z" fill="#00acac" p-id="3912"></path></svg>
|
||||
<svg t="1678764587175" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3906" data-spm-anchor-id="a313x.7781069.0.i0" width="128" height="128"><path d="M930.51904 682.752c-1.2288 13.75232-20.17792 10.24-29.66528 10.24H172.77952c-12.0064 0-76.8256 9.05728-76.8256-11.70944v-141.02528-423.35744c0-9.79456-1.76128-22.95808 12.29312-22.95808h809.97888c22.67648 0 12.29312 77.75232 12.29312 91.264V682.752c0 33.01376 51.2 33.01376 51.2 0V317.69088 126.32576c0-19.13344 0.23552-34.98496-8.38656-53.15072-11.27424-23.75168-38.48192-30.42816-62.27456-30.42816H129.17248c-9.8304 0-19.63008-0.30208-29.42464 0.57856-35.75296 3.19488-54.99392 34.6624-54.99392 67.80928v566.92224c0 34.95424 24.52992 66.13504 61.48096 66.13504h812.98944c35.98848 0 59.44832-27.4432 62.49472-61.44 2.944-32.896-48.27648-32.6144-51.2 0z" fill="#5393ff" p-id="3907"></path><path d="M487.63904 740.7616v213.3504c0 33.01376 51.2 33.01376 51.2 0v-213.3504c-0.00512-33.01888-51.2-33.01888-51.2 0z" fill="#5393ff" p-id="3908"></path><path d="M92.57984 979.712H950.62016c33.01376 0 33.01376-51.2 0-51.2H92.57984c-33.01888 0-33.01888 51.2 0 51.2zM372.74112 236.54912l125.65504 125.65504c23.36256 23.36256 59.5712-12.83584 36.1984-36.20352L408.94464 200.3456c-23.36256-23.36768-59.56608 12.83584-36.20352 36.20352z" fill="#5393ff" p-id="3909"></path><path d="M614.17984 200.3456L488.59648 326.00064c-23.35744 23.3728 12.84608 59.57632 36.20352 36.20352l125.57824-125.65504c23.36256-23.3728-12.83584-59.57632-36.1984-36.20352z" fill="#5393ff" p-id="3910"></path><path d="M305.88416 369.69984h414.70976c33.01376 0 33.01376-51.2 0-51.2H305.88416c-33.01888 0-33.01888 51.2 0 51.2zM334.91456 498.33984h356.65408c33.01376 0 33.01376-51.2 0-51.2H334.91456c-33.01888 0-33.01888 51.2 0 51.2z" fill="#5393ff" p-id="3911"></path><path d="M538.83392 564.89984V344.09984c0-33.01888-51.2-33.01888-51.2 0v220.8c0.00512 33.01376 51.2 33.01376 51.2 0z" fill="#5393ff" p-id="3912"></path></svg>
|
||||
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
BIN
fuintCashierWeb/src/assets/images/lanlogo.png
Normal file
BIN
fuintCashierWeb/src/assets/images/lanlogo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.5 KiB |
@ -93,10 +93,10 @@
|
||||
|
||||
.common-dialog {
|
||||
.el-dialog {
|
||||
border: solid 6px #00acac;
|
||||
border: solid 6px #5393ff;
|
||||
}
|
||||
.el-dialog__header{
|
||||
background: #00acac;
|
||||
background: #5393ff;
|
||||
padding: 10px;
|
||||
}
|
||||
.el-dialog__headerbtn {
|
||||
|
@ -4,7 +4,7 @@
|
||||
**/
|
||||
|
||||
/* theme color */
|
||||
$--color-primary: #00acac;
|
||||
$--color-primary: #5393ff;
|
||||
$--color-success: #13ce66;
|
||||
$--color-warning: #ffba00;
|
||||
$--color-danger: #ff4949;
|
||||
|
@ -163,7 +163,7 @@
|
||||
/** 表格更多操作下拉样式 */
|
||||
.el-table .el-dropdown-link {
|
||||
cursor: pointer;
|
||||
color: #00acac;
|
||||
color: #5393ff;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
@ -246,7 +246,7 @@
|
||||
}
|
||||
|
||||
.text-success {
|
||||
color: #00acac;
|
||||
color: #5393ff;
|
||||
}
|
||||
|
||||
.text-info {
|
||||
|
@ -3,7 +3,7 @@
|
||||
.main-container {
|
||||
min-height: 100%;
|
||||
transition: margin-left .28s;
|
||||
margin-left: $base-sidebar-width;
|
||||
//margin-left: $base-sidebar-width;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
@ -115,7 +115,7 @@
|
||||
}
|
||||
|
||||
.main-container {
|
||||
margin-left: 54px;
|
||||
margin-left: 0px;
|
||||
}
|
||||
|
||||
.submenu-title-noDropdown {
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<el-color-picker
|
||||
v-model="theme"
|
||||
:predefine="['#00acac', '#00a7ac', '#304156','#212121','#11a983', '#13c2c2', '#6959CD', '#f5222d' ]"
|
||||
:predefine="['#5393ff', '#00a7ac', '#304156','#212121','#11a983', '#13c2c2', '#6959CD', '#f5222d' ]"
|
||||
class="theme-picker"
|
||||
popper-class="theme-picker-dropdown"
|
||||
/>
|
||||
@ -9,7 +9,7 @@
|
||||
|
||||
<script>
|
||||
const version = require('element-ui/package.json').version // element-ui version from node_modules
|
||||
const ORIGINAL_THEME = '#00acac' // default color
|
||||
const ORIGINAL_THEME = '#5393ff' // default color
|
||||
|
||||
export default {
|
||||
data() {
|
||||
|
@ -32,7 +32,7 @@ export default {
|
||||
}
|
||||
|
||||
.fixed-header+.app-main {
|
||||
padding-top: 50px;
|
||||
padding-top: 0px;
|
||||
}
|
||||
|
||||
.hasTagsView {
|
||||
@ -42,7 +42,7 @@ export default {
|
||||
}
|
||||
|
||||
.fixed-header+.app-main {
|
||||
padding-top: 84px;
|
||||
padding-top: 0px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -54,7 +54,7 @@ export default {
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.navbar {
|
||||
.navbars {
|
||||
height: 50px;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
|
@ -70,7 +70,7 @@ export default {
|
||||
height: 38px;
|
||||
text-align: center;
|
||||
padding-top: 10px;
|
||||
background: #00acac;
|
||||
background: #5393ff;
|
||||
overflow: hidden;
|
||||
border-radius: 5px;
|
||||
margin: 0px 6px 10px 6px;
|
||||
|
@ -5,7 +5,7 @@ const { sideTheme, showSettings, topNav, tagsView, fixedHeader, sidebarLogo, dyn
|
||||
const storageSetting = JSON.parse(localStorage.getItem('layout-setting')) || ''
|
||||
const state = {
|
||||
title: '',
|
||||
theme: storageSetting.theme || '#00acac',
|
||||
theme: storageSetting.theme || '#5393ff',
|
||||
sideTheme: storageSetting.sideTheme || sideTheme,
|
||||
showSettings: showSettings,
|
||||
topNav: storageSetting.topNav === undefined ? topNav : storageSetting.topNav,
|
||||
|
@ -212,7 +212,7 @@ export default {
|
||||
}
|
||||
|
||||
.input-item >>> .el-input__inner {
|
||||
border: #00acac solid 2px;
|
||||
border: #5393ff solid 2px;
|
||||
line-height: 50px;
|
||||
height: 50px;
|
||||
}
|
||||
@ -231,7 +231,7 @@ export default {
|
||||
margin-left: 5px;
|
||||
}
|
||||
.confirm-button {
|
||||
background: #00acac;
|
||||
background: #5393ff;
|
||||
line-height: 50px;
|
||||
padding: 0px 25px 0px 25px;
|
||||
height: 50px;
|
||||
|
@ -137,7 +137,7 @@ export default {
|
||||
height: 100%;
|
||||
border-radius: 4px;
|
||||
background: #e6f7f7;
|
||||
border: #00acac solid 1px;
|
||||
border: #5393ff solid 1px;
|
||||
.sn {
|
||||
font-weight: bold;
|
||||
font-size: 20px;
|
||||
|
@ -130,7 +130,7 @@
|
||||
v-model="scope.row.status"
|
||||
active-value="A"
|
||||
inactive-value="N"
|
||||
active-color="#00acac"
|
||||
active-color="#5393ff"
|
||||
@change="handleStatusChange(scope.row)"
|
||||
></el-switch>
|
||||
</template>
|
||||
|
@ -29,7 +29,7 @@
|
||||
<div class="name">现金支付</div>
|
||||
</div>
|
||||
<div :class="'pay-item' + (payType == 'BALANCE' ? ' active' : '')" @click="selectPayType('BALANCE')">
|
||||
<svg t="1656295559018" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6471" width="32" height="32"><path d="M512 0a512 512 0 1 0 512 512A512 512 0 0 0 512 0z m286.4896 668.16a78.2336 78.2336 0 0 1-78.208 78.208H303.1808A78.2336 78.2336 0 0 1 224.9728 668.16V355.3536a78.1312 78.1312 0 0 1 78.1568-78.2336h417.1008a78.2336 78.2336 0 0 1 78.208 78.2336v91.1616h-208.5632a65.2032 65.2032 0 1 0 0 130.4064h208.6144z m-143.36-156.3904a39.1168 39.1168 0 1 1-39.1168-39.0912 39.1168 39.1168 0 0 1 39.0656 39.1936z" fill="#00acac" p-id="6472"></path></svg>
|
||||
<svg t="1656295559018" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6471" width="32" height="32"><path d="M512 0a512 512 0 1 0 512 512A512 512 0 0 0 512 0z m286.4896 668.16a78.2336 78.2336 0 0 1-78.208 78.208H303.1808A78.2336 78.2336 0 0 1 224.9728 668.16V355.3536a78.1312 78.1312 0 0 1 78.1568-78.2336h417.1008a78.2336 78.2336 0 0 1 78.208 78.2336v91.1616h-208.5632a65.2032 65.2032 0 1 0 0 130.4064h208.6144z m-143.36-156.3904a39.1168 39.1168 0 1 1-39.1168-39.0912 39.1168 39.1168 0 0 1 39.0656 39.1936z" fill="#5393ff" p-id="6472"></path></svg>
|
||||
<div class="name">余额支付</div>
|
||||
</div>
|
||||
<div :class="'pay-item' + (payType == 'MICROPAY' ? ' active' : '')" @click="selectPayType('MICROPAY')">
|
||||
@ -287,14 +287,14 @@ export default {
|
||||
width: 45%;
|
||||
margin-left: 10px;
|
||||
height: 83px;
|
||||
border: solid 2px #00acac;
|
||||
border: solid 2px #5393ff;
|
||||
cursor: pointer;
|
||||
border-radius: 2px;
|
||||
.left {
|
||||
width: 30%;
|
||||
height: 80px;
|
||||
float: left;
|
||||
background: #00acac;
|
||||
background: #5393ff;
|
||||
color: #FFFFFF;
|
||||
.amount {
|
||||
font-size: 24px;
|
||||
@ -358,7 +358,7 @@ export default {
|
||||
}
|
||||
}
|
||||
.active {
|
||||
border: 3px solid #00acac;
|
||||
border: 3px solid #5393ff;
|
||||
background: #FDF5E6;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
@ -102,7 +102,7 @@ export default {
|
||||
margin-top: 30px;
|
||||
}
|
||||
.input-item >>> .el-input__inner {
|
||||
border: #00acac solid 2px;
|
||||
border: #5393ff solid 2px;
|
||||
line-height: 50px;
|
||||
height: 50px;
|
||||
}
|
||||
|
@ -1,168 +1,267 @@
|
||||
<template>
|
||||
<div id="app" class="app-container">
|
||||
<el-drawer
|
||||
:withHeader="false"
|
||||
:visible.sync="isOpen"
|
||||
direction="ttb"
|
||||
size="100%"
|
||||
:show-close="false">
|
||||
<div class="main">
|
||||
<div class="left-side">
|
||||
<div class="logo">
|
||||
<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>
|
||||
</div>
|
||||
<div class="cate">
|
||||
<ul class="nav">
|
||||
<li class="nav-item" v-for="menu in menuList">
|
||||
<a :class="'nav-link' + (activeMenu == menu.key ? ' active' : '')" href="javascript:;" @click="switchMenu(menu.key)">
|
||||
<img class="cate-logo" :src="menu.logo">
|
||||
<span>{{ menu.name }}</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cart-container" v-if="activeMenu == 'cashier'">
|
||||
<div class="title">
|
||||
<div class="logo">
|
||||
<img class="avatar" v-if="!memberInfo || !memberInfo.avatar" src="@/assets/images/avatar.png" />
|
||||
<img class="avatar" v-else :src="memberInfo.avatar"/>
|
||||
</div>
|
||||
<div class="member-info">
|
||||
<span class="name" v-if="memberInfo">{{ 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>
|
||||
</div>
|
||||
</div>
|
||||
<div class="carts">
|
||||
<div>
|
||||
<div class="tab">
|
||||
<div class="cart-list" v-if="cartList.length > 0">
|
||||
<div class="cart-item" v-for="cartInfo in cartList">
|
||||
<img class="image" :src="cartInfo.logo"/>
|
||||
<div class="info">
|
||||
<div class="name">{{ cartInfo.name }}</div>
|
||||
<div class="spec" v-if="cartInfo.specList && cartInfo.specList.length > 0">
|
||||
<span class="item" v-for="spec in cartInfo.specList" :title="spec.value">{{ spec.value }}</span>
|
||||
</div>
|
||||
<div class="num"><el-input-number class="input" @change="changeBuyNum(cartInfo)" v-model="cartInfo.buyNum" :min="1" :max="1000"/></div>
|
||||
</div>
|
||||
<div class="option">
|
||||
<div class="remove el-icon-delete" @click="removeFromCart(cartInfo.cartId)"></div>
|
||||
<div class="total">¥{{ (cartInfo.price * cartInfo.buyNum).toFixed(2) }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="empty" v-if="cartList.length < 1">
|
||||
<el-empty description="暂无结算商品" :image-size="40"></el-empty>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
<div class="number">
|
||||
<div class="total-num">总件数:<b class="num">{{ cartTotalNum }}</b></div>
|
||||
<div class="total-price">总金额:<b class="num">¥{{ cartTotalPrice.toFixed(2) }}</b></div>
|
||||
</div>
|
||||
<div class="options">
|
||||
<div class="cash" @click="hangUp()">挂单 / 取单</div>
|
||||
<div class="submit" v-if="cartTotalNum > 0" @click="doSettlement()">提交结算</div>
|
||||
<div class="submit" v-if="cartTotalNum == 0" @click="doCashier()">无商品收款</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main-list" v-if="activeMenu == 'cashier'">
|
||||
<div class="title">
|
||||
<el-form class="search-form" ref="searchForm" :inline="true" :model="searchForm">
|
||||
<el-form-item class="form-item" label="" prop="keyword">
|
||||
<el-input v-model="searchForm.keyword" prefix-icon="el-icon-full-screen" class="input-item" placeholder="请输入商品关键字:商品名称、条码、商品ID..." clearable maxlength="100" />
|
||||
</el-form-item>
|
||||
<el-button class="search-goods" @click="doQueryGoods()" icon="el-icon-search">查询商品</el-button>
|
||||
</el-form>
|
||||
<el-tabs class="tab-box" type="card" v-model="navTab" @tab-click="switchTab">
|
||||
<el-tab-pane label="全部" name="0"></el-tab-pane>
|
||||
<el-tab-pane v-for="tab in tabList" :label="tab.name" :key="tab.id+''" :name="tab.id+''"></el-tab-pane>
|
||||
</el-tabs>
|
||||
</div>
|
||||
<div class="goods-list">
|
||||
<div class="goods-item" v-for="goodsInfo in activeGoodsList">
|
||||
<div class="item" @click="clickGoods(goodsInfo)">
|
||||
<img class="image" lazy :src="imagePath + goodsInfo.logo">
|
||||
<div class="goods-name">{{ goodsInfo.name }}</div>
|
||||
<div class="goods-price">¥{{ goodsInfo.price }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<el-empty v-if="activeGoodsList.length == 0" description="暂无商品..."></el-empty>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div id="app" class="app-container">-->
|
||||
<!-- <el-drawer-->
|
||||
<!-- :withHeader="false"-->
|
||||
<!-- :visible.sync="isOpen"-->
|
||||
<!-- direction="ttb"-->
|
||||
<!-- size="100%"-->
|
||||
<!-- :show-close="false">-->
|
||||
<!-- <div class="main">-->
|
||||
<!-- <div class="left-side">-->
|
||||
<!-- <div class="logo">-->
|
||||
<!-- <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>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="cate">-->
|
||||
<!-- <ul class="nav">-->
|
||||
<!-- <li class="nav-item" v-for="menu in menuList">-->
|
||||
<!-- <a :class="'nav-link' + (activeMenu == menu.key ? ' active' : '')" href="javascript:;" @click="switchMenu(menu.key)">-->
|
||||
<!-- <img class="cate-logo" :src="menu.logo">-->
|
||||
<!-- <span>{{ menu.name }}</span>-->
|
||||
<!-- </a>-->
|
||||
<!-- </li>-->
|
||||
<!-- </ul>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!--<!– 翻新–>-->
|
||||
<!-- <div class="cart-container" v-if="activeMenu == 'cashier'">-->
|
||||
<!-- <div class="container-top">-->
|
||||
<!-- <div class="vip-bottom" @click="switchMember()">-->
|
||||
<!-- <span>会员登录</span>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!--<!– 中间部分–>-->
|
||||
<!--<!– <div class="cart-container" v-if="activeMenu == 'cashier'">–>-->
|
||||
|
||||
<!-- 订单列表组件 start-->
|
||||
<orderList v-if="activeMenu == 'order'" @doPayOrder="doPayOrder"></orderList>
|
||||
<!-- 订单列表组件 end-->
|
||||
<!--<!– <div class="title">–>-->
|
||||
<!--<!– –>-->
|
||||
<!--<!– <div class="logo">–>-->
|
||||
<!--<!– <img class="avatar" v-if="!memberInfo || !memberInfo.avatar" src="@/assets/images/avatar.png" />–>-->
|
||||
<!--<!– <img class="avatar" v-else :src="memberInfo.avatar"/>–>-->
|
||||
<!--<!– </div>–>-->
|
||||
<!--<!– <div class="member-info">–>-->
|
||||
<!--<!– <span class="name" v-if="memberInfo">{{ 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>–>-->
|
||||
<!--<!– </div>–>-->
|
||||
<!--<!– </div>–>-->
|
||||
|
||||
<!-- 会员列表组件 start-->
|
||||
<memberList v-if="activeMenu == 'member'"></memberList>
|
||||
<!-- 会员列表组件 end-->
|
||||
<!--<!– <div class="carts">–>-->
|
||||
<!--<!– <div>–>-->
|
||||
<!--<!– <div class="tab">–>-->
|
||||
<!--<!– <div class="cart-list" v-if="cartList.length > 0">–>-->
|
||||
<!--<!– <div class="cart-item" v-for="cartInfo in cartList">–>-->
|
||||
<!--<!– <img class="image" :src="cartInfo.logo"/>–>-->
|
||||
<!--<!– <div class="info">–>-->
|
||||
<!--<!– <div class="name">{{ cartInfo.name }}</div>–>-->
|
||||
<!--<!– <div class="spec" v-if="cartInfo.specList && cartInfo.specList.length > 0">–>-->
|
||||
<!--<!– <span class="item" v-for="spec in cartInfo.specList" :title="spec.value">{{ spec.value }}</span>–>-->
|
||||
<!--<!– </div>–>-->
|
||||
<!--<!– <div class="num"><el-input-number class="input" @change="changeBuyNum(cartInfo)" v-model="cartInfo.buyNum" :min="1" :max="1000"/></div>–>-->
|
||||
<!--<!– </div>–>-->
|
||||
<!--<!– <div class="option">–>-->
|
||||
<!--<!– <div class="remove el-icon-delete" @click="removeFromCart(cartInfo.cartId)"></div>–>-->
|
||||
<!--<!– <div class="total">¥{{ (cartInfo.price * cartInfo.buyNum).toFixed(2) }}</div>–>-->
|
||||
<!--<!– </div>–>-->
|
||||
<!--<!– </div>–>-->
|
||||
<!--<!– </div>–>-->
|
||||
<!--<!– <div class="empty" v-if="cartList.length < 1">–>-->
|
||||
<!--<!– <el-empty description="暂无结算商品" :image-size="40"></el-empty>–>-->
|
||||
<!--<!– </div>–>-->
|
||||
<!--<!– </div>–>-->
|
||||
<!--<!– </div>–>-->
|
||||
<!--<!– </div>–>-->
|
||||
<!--<!– <div class="footer">–>-->
|
||||
<!--<!– <div class="number">–>-->
|
||||
<!--<!– <div class="total-num">总件数:<b class="num">{{ cartTotalNum }}</b></div>–>-->
|
||||
<!--<!– <div class="total-price">总金额:<b class="num">¥{{ cartTotalPrice.toFixed(2) }}</b></div>–>-->
|
||||
<!--<!– </div>–>-->
|
||||
<!--<!– <div class="options">–>-->
|
||||
<!--<!– <div class="cash" @click="hangUp()">挂单 / 取单</div>–>-->
|
||||
<!--<!– <div class="submit" v-if="cartTotalNum > 0" @click="doSettlement()">提交结算</div>–>-->
|
||||
<!--<!– <div class="submit" v-if="cartTotalNum == 0" @click="doCashier()">无商品收款</div>–>-->
|
||||
<!--<!– </div>–>-->
|
||||
<!--<!– </div>–>-->
|
||||
<!--<!– </div>–>-->
|
||||
<!--<!– 右侧部分–>-->
|
||||
<!-- <div class="main-list" v-if="activeMenu == 'cashier'">-->
|
||||
<!-- <div class="title">-->
|
||||
<!-- <el-form class="search-form" ref="searchForm" :inline="true" :model="searchForm">-->
|
||||
<!-- <el-form-item class="form-item" label="" prop="keyword">-->
|
||||
<!-- <el-input v-model="searchForm.keyword" prefix-icon="el-icon-full-screen" class="input-item" placeholder="请输入商品关键字:商品名称、条码、商品ID..." clearable maxlength="100" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-button class="search-goods" @click="doQueryGoods()" icon="el-icon-search">查询商品</el-button>-->
|
||||
<!-- </el-form>-->
|
||||
<!-- <el-tabs class="tab-box" type="card" v-model="navTab" @tab-click="switchTab">-->
|
||||
<!-- <el-tab-pane label="全部" name="0"></el-tab-pane>-->
|
||||
<!-- <el-tab-pane v-for="tab in tabList" :label="tab.name" :key="tab.id+''" :name="tab.id+''"></el-tab-pane>-->
|
||||
<!-- </el-tabs>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="goods-list">-->
|
||||
<!-- <div class="goods-item" v-for="goodsInfo in activeGoodsList">-->
|
||||
<!-- <div class="item" @click="clickGoods(goodsInfo)">-->
|
||||
<!-- <img class="image" lazy :src="imagePath + goodsInfo.logo">-->
|
||||
<!-- <div class="goods-name">{{ goodsInfo.name }}</div>-->
|
||||
<!-- <div class="goods-price">¥{{ goodsInfo.price }}</div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <el-empty v-if="activeGoodsList.length == 0" description="暂无商品..."></el-empty>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
|
||||
<!-- 卡券核销组件 start-->
|
||||
<couponConfirm v-if="activeMenu == 'coupon'"></couponConfirm>
|
||||
<!-- 卡券核销组件 end-->
|
||||
</div>
|
||||
</el-drawer>
|
||||
<!-- <!– 订单列表组件 start–>-->
|
||||
<!-- <orderList v-if="activeMenu == 'order'" @doPayOrder="doPayOrder"></orderList>-->
|
||||
<!-- <!– 订单列表组件 end–>-->
|
||||
|
||||
<!-- 规格详情 start-->
|
||||
<el-dialog title="选择商品规格" :visible.sync="openGoodsDialog" class="common-dialog" append-to-body>
|
||||
<div class="goods-info">
|
||||
<div class="name">{{ goodsInfo.name }}</div>
|
||||
<div class="price">¥{{ goodsInfo.price }}</div>
|
||||
<div class="num"><el-input-number class="input" v-model="goodsNum" :min="1" :max="1000"/></div>
|
||||
<div class="spec-list" v-if="goodsInfo.isSingleSpec == 'N'">
|
||||
<div class="spec-item" v-for="specInfo in goodsInfo.specList">
|
||||
<div class="spec-name">{{ specInfo.name }}</div>
|
||||
<div class="values">
|
||||
<span v-for="value in specInfo.child" :class="goodsSpecIds.includes(value.id) ? 'value active' : 'value'" @click="selectGoodsSpec(value.id)">{{ value.name }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" class="main-button" @click="addToCart()">加入结算</el-button>
|
||||
<el-button @click="closeGoodsDialog()">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<!-- 规格详情 end-->
|
||||
<!-- <!– 会员列表组件 start–>-->
|
||||
<!-- <memberList v-if="activeMenu == 'member'"></memberList>-->
|
||||
<!-- <!– 会员列表组件 end–>-->
|
||||
|
||||
<!--关联会员对话框 start-->
|
||||
<switchMemberDialog :show-dialog="openSwitchMemberDialog" @doSwitchMember="doSwitchMember"/>
|
||||
<!--关联会员对话框 end-->
|
||||
<!-- <!– 卡券核销组件 start–>-->
|
||||
<!-- <couponConfirm v-if="activeMenu == 'coupon'"></couponConfirm>-->
|
||||
<!-- <!– 卡券核销组件 end–>-->
|
||||
<!-- </div>-->
|
||||
<!-- </el-drawer>-->
|
||||
|
||||
<!--结算对话框 start-->
|
||||
<settlementDialog :show-dialog="openSettlementDialog" :memberInfo="memberInfo" :totalPrice="cartTotalPrice" :remarks="cartRemark" :orderInfo="orderInfo" :couponList="couponList" @submit="submitSettlement" @switchMember="switchMember" @closeDialog="closeDialog"/>
|
||||
<!--结算对话框 end-->
|
||||
<!-- <!– 规格详情 start–>-->
|
||||
<!-- <el-dialog title="选择商品规格" :visible.sync="openGoodsDialog" class="common-dialog" append-to-body>-->
|
||||
<!-- <div class="goods-info">-->
|
||||
<!-- <div class="name">{{ goodsInfo.name }}</div>-->
|
||||
<!-- <div class="price">¥{{ goodsInfo.price }}</div>-->
|
||||
<!-- <div class="num"><el-input-number class="input" v-model="goodsNum" :min="1" :max="1000"/></div>-->
|
||||
<!-- <div class="spec-list" v-if="goodsInfo.isSingleSpec == 'N'">-->
|
||||
<!-- <div class="spec-item" v-for="specInfo in goodsInfo.specList">-->
|
||||
<!-- <div class="spec-name">{{ specInfo.name }}</div>-->
|
||||
<!-- <div class="values">-->
|
||||
<!-- <span v-for="value in specInfo.child" :class="goodsSpecIds.includes(value.id) ? 'value active' : 'value'" @click="selectGoodsSpec(value.id)">{{ value.name }}</span>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div slot="footer" class="dialog-footer">-->
|
||||
<!-- <el-button type="primary" class="main-button" @click="addToCart()">加入结算</el-button>-->
|
||||
<!-- <el-button @click="closeGoodsDialog()">取 消</el-button>-->
|
||||
<!-- </div>-->
|
||||
<!-- </el-dialog>-->
|
||||
<!-- <!– 规格详情 end–>-->
|
||||
|
||||
<!--扫码付款对话框 start-->
|
||||
<scanPayCodeDialog ref="scanPayCodeDialog" :show-dialog="openScanPayCodeDialog" :memberInfo="memberInfo" :orderId="orderId" :payType="payType" :payAmount="payAmount" @closeDialog="closeDialog" @showPayResult="showPayResult"/>
|
||||
<!--扫码付款对话框 end-->
|
||||
<!-- <!–关联会员对话框 start–>-->
|
||||
<!-- <switchMemberDialog :show-dialog="openSwitchMemberDialog" @doSwitchMember="doSwitchMember"/>-->
|
||||
<!-- <!–关联会员对话框 end–>-->
|
||||
|
||||
<!--支付结果对话框 start-->
|
||||
<payResultDialog :show-dialog="openPayResultDialog" :payResult="payResult" @showOrderPrint="showOrderPrint" @closeDialog="closeDialog"/>
|
||||
<!--支付结果对话框 end-->
|
||||
<!-- <!–结算对话框 start–>-->
|
||||
<!-- <settlementDialog :show-dialog="openSettlementDialog" :memberInfo="memberInfo" :totalPrice="cartTotalPrice" :remarks="cartRemark" :orderInfo="orderInfo" :couponList="couponList" @submit="submitSettlement" @switchMember="switchMember" @closeDialog="closeDialog"/>-->
|
||||
<!-- <!–结算对话框 end–>-->
|
||||
|
||||
<!--打印订单对话框 start-->
|
||||
<orderPrintDialog :show-dialog="openOrderPrintDialog" :storeInfo="storeInfo" :orderInfo="orderInfo" @closeDialog="closeDialog"/>
|
||||
<!--打印订单对话框 end-->
|
||||
<!-- <!–扫码付款对话框 start–>-->
|
||||
<!-- <scanPayCodeDialog ref="scanPayCodeDialog" :show-dialog="openScanPayCodeDialog" :memberInfo="memberInfo" :orderId="orderId" :payType="payType" :payAmount="payAmount" @closeDialog="closeDialog" @showPayResult="showPayResult"/>-->
|
||||
<!-- <!–扫码付款对话框 end–>-->
|
||||
|
||||
<!--挂单对话框 start-->
|
||||
<hangUpDialog :show-dialog="openHangUpDialog" :memberInfo="memberInfo" :cartList="cartList" @getHangNo="getHangNo" @doHangUp="doHangUp" @closeDialog="closeDialog"/>
|
||||
<!--挂单对话框 end-->
|
||||
<!-- <!–支付结果对话框 start–>-->
|
||||
<!-- <payResultDialog :show-dialog="openPayResultDialog" :payResult="payResult" @showOrderPrint="showOrderPrint" @closeDialog="closeDialog"/>-->
|
||||
<!-- <!–支付结果对话框 end–>-->
|
||||
|
||||
<!-- 无商品收款组件 start-->
|
||||
<noGoodsCashier :show-dialog="openNoGoodsCashierDialog" @submit="submitCashier" @closeDialog="closeDialog"></noGoodsCashier>
|
||||
<!-- 无商品收款组件 end-->
|
||||
</div>
|
||||
<!-- <!–打印订单对话框 start–>-->
|
||||
<!-- <orderPrintDialog :show-dialog="openOrderPrintDialog" :storeInfo="storeInfo" :orderInfo="orderInfo" @closeDialog="closeDialog"/>-->
|
||||
<!-- <!–打印订单对话框 end–>-->
|
||||
|
||||
<!-- <!–挂单对话框 start–>-->
|
||||
<!-- <hangUpDialog :show-dialog="openHangUpDialog" :memberInfo="memberInfo" :cartList="cartList" @getHangNo="getHangNo" @doHangUp="doHangUp" @closeDialog="closeDialog"/>-->
|
||||
<!-- <!–挂单对话框 end–>-->
|
||||
|
||||
<!-- <!– 无商品收款组件 start–>-->
|
||||
<!-- <noGoodsCashier :show-dialog="openNoGoodsCashierDialog" @submit="submitCashier" @closeDialog="closeDialog"></noGoodsCashier>-->
|
||||
<!-- <!– 无商品收款组件 end–>-->
|
||||
<!-- </div>-->
|
||||
<div class="app-containers">
|
||||
|
||||
<div class="app-left">
|
||||
<div class="app-left-top">
|
||||
<div class="app-left-img">
|
||||
<img src="../../assets/images/lanlogo.png" alt="">
|
||||
</div>
|
||||
<div class="app-left-title">蓝鲸油站收银 </div>
|
||||
</div>
|
||||
<div class="app-left-box" v-for="(item,index) in tabarr" :key="index"> <spen style="cursor: pointer">{{item.name}}</spen> </div>
|
||||
|
||||
</div>
|
||||
<div class="app-center">
|
||||
<div class="center-left">
|
||||
<div class="center-vh">
|
||||
<div class="center-left-top">
|
||||
<div class="vip-bottom">
|
||||
<div>会员登录</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="center-left-hj">
|
||||
<div class="hj-box" style="justify-content: left">油品:¥200.00</div>
|
||||
<div class="hj-box" style="border-left: 1px solid #d1d1d4; border-right: 1px solid #d1d1d4;">商品:¥0.52</div>
|
||||
<div class="hj-box" style="justify-content: flex-end">合计: ¥200.52</div>
|
||||
</div>
|
||||
<div class="center-left-hj">
|
||||
<div>满减活动</div>
|
||||
<div>-¥2.87</div>
|
||||
</div>
|
||||
<div class="center-left-th">
|
||||
<div class="th-box">
|
||||
<div>扫码支付</div>
|
||||
<div class="bule">394.7</div>
|
||||
</div>
|
||||
<div class="th-box">
|
||||
<div>找零</div>
|
||||
<div class="bule">394.7</div>
|
||||
</div>
|
||||
<div class="th-box">
|
||||
<div>加油员</div>
|
||||
<div >加油员名称</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="center-left-wrap">
|
||||
<div class="wrap-box" v-for="(item,index) in 6" :key="index">
|
||||
<div>支付方式</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="center-left-bottom">
|
||||
<div>
|
||||
<div class="bottom-price">¥349.78</div>
|
||||
<div class="price-red">优惠合计:5.74元</div>
|
||||
</div>
|
||||
<div class="center-left-lv">立即结算</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="center-app">
|
||||
<div class="center-top">
|
||||
<div class="center-top-title">非油商品</div>
|
||||
<div class="center-top-input">
|
||||
<input type="text" placeholder="请输入商品名称,条码,商品关键词">
|
||||
</div>
|
||||
</div>
|
||||
<div class="center-left-bottom">
|
||||
<div class="bottom-qk">清空</div>
|
||||
<div style="display: flex">
|
||||
<div class="bottom-qd">取单</div>
|
||||
<div class="bottom-gd">挂单</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="center-right">
|
||||
<div class="center-top">
|
||||
<div>选择油号</div>
|
||||
</div>
|
||||
<div class="center-left-bottom">
|
||||
<div class="bottom-gd">新增订单</div>
|
||||
<div class="bottom-qk">解锁</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- <div class="app-right"></div>-->
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@ -195,6 +294,17 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
tabarr:[
|
||||
{name:'收银台'},
|
||||
{name:'充值'},
|
||||
{name:'订单'},
|
||||
{name:'会员'},
|
||||
{name:'核销'},
|
||||
{name:'挂账'},
|
||||
{name:'积分'},
|
||||
{name:'交班'},
|
||||
|
||||
],
|
||||
// 系统名称
|
||||
systemName: process.env.VUE_APP_TITLE,
|
||||
// 导航tab
|
||||
@ -317,8 +427,8 @@ export default {
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.initCashier();
|
||||
this.getCartList();
|
||||
// this.initCashier();
|
||||
// this.getCartList();
|
||||
},
|
||||
methods: {
|
||||
// 初始化数据
|
||||
@ -751,6 +861,246 @@ export default {
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.app-containers{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: #f6f8f9;
|
||||
display: flex;
|
||||
}
|
||||
.app-center{
|
||||
width: 100%;
|
||||
display: flex;
|
||||
box-sizing: border-box;
|
||||
padding: 10px;
|
||||
}
|
||||
.center-left{
|
||||
width: 33%;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
/*height: 70vh;*/
|
||||
/*box-sizing: border-box;*/
|
||||
/*padding: 10px;*/
|
||||
}
|
||||
.center-app{
|
||||
width: 33%;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
/*background: white;*/
|
||||
margin: 0px 10px;
|
||||
}
|
||||
.center-right{
|
||||
width: 33%;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
|
||||
|
||||
}
|
||||
.center-top{
|
||||
width: 100%;
|
||||
height: 86vh;
|
||||
background: white;
|
||||
margin-bottom: 10px;
|
||||
box-sizing: border-box;
|
||||
padding: 10px;
|
||||
|
||||
}
|
||||
.center-top-title{
|
||||
box-sizing: border-box;
|
||||
padding: 10px 0px;
|
||||
padding-bottom: 15px;
|
||||
border-bottom: 1px solid #ececec;
|
||||
font-size: 22px;
|
||||
}
|
||||
.center-top-input{
|
||||
width: 100%;
|
||||
height: 60px;
|
||||
background: #f8f8f8;
|
||||
border-radius: 50px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
input{
|
||||
border: none;
|
||||
outline: none;
|
||||
background-color:transparent;
|
||||
}
|
||||
|
||||
}
|
||||
.center-left-top{
|
||||
width: 100%;
|
||||
background: #5393ff;
|
||||
height: 70px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.center-vh{
|
||||
height: 68vh;
|
||||
}
|
||||
.center-left-hj{
|
||||
background: white;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
padding: 15px;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
.center-left-th{
|
||||
background: white;
|
||||
box-sizing: border-box;
|
||||
padding: 15px;
|
||||
margin: 10px auto;
|
||||
}
|
||||
.center-left-wrap{
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
flex-wrap: wrap;
|
||||
/*margin-top: 280px;*/
|
||||
}
|
||||
.wrap-box{
|
||||
width: 31%;
|
||||
background-color: white;
|
||||
border-radius: 8px;
|
||||
height: 80px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-bottom: 10px;
|
||||
|
||||
}
|
||||
.center-left-bottom{
|
||||
width: 100%;
|
||||
background-color: white;
|
||||
border-radius: 8px;
|
||||
box-sizing: border-box;
|
||||
padding: 10px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.bottom-qk{
|
||||
border: 1px solid #99a9bf;
|
||||
box-sizing: border-box;
|
||||
padding: 14px 20px;
|
||||
border-radius: 50px;
|
||||
color: #99a9bf;
|
||||
margin: 15px 0px ;
|
||||
}
|
||||
.bottom-qd{
|
||||
border: 1px solid #13ce66;
|
||||
background: #13ce66;
|
||||
box-sizing: border-box;
|
||||
padding: 14px 20px;
|
||||
border-radius: 50px;
|
||||
color: #ffffff;
|
||||
|
||||
margin: 15px 10px ;
|
||||
}
|
||||
.bottom-gd{
|
||||
border: 1px solid #5393ff;
|
||||
background: #5393ff;
|
||||
box-sizing: border-box;
|
||||
padding: 14px 20px;
|
||||
border-radius: 50px;
|
||||
color: #ffffff;
|
||||
|
||||
margin: 15px 10px ;
|
||||
}
|
||||
|
||||
.bottom-price{
|
||||
font-size: 26px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.price-red{
|
||||
color: red;
|
||||
}
|
||||
.center-left-lv{
|
||||
width: 60%;
|
||||
height: 80px;
|
||||
background-color: #13ce66;
|
||||
color: white;
|
||||
border-radius: 50px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 22px;
|
||||
}
|
||||
.th-box{
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
border-bottom: 1px solid #f6f8f9;
|
||||
box-sizing: border-box;
|
||||
padding: 10px 0px;
|
||||
}
|
||||
.hj-box{
|
||||
width: 33%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.bule{
|
||||
font-weight: 700;
|
||||
color: #5393ff;
|
||||
}
|
||||
.vip-bottom{
|
||||
border: 1px solid #ffffff;
|
||||
box-sizing: border-box;
|
||||
padding: 5px 15px;
|
||||
border-radius: 50px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: white;
|
||||
cursor: pointer;
|
||||
}
|
||||
.app-left{
|
||||
width: 180px;
|
||||
height: 100vh;
|
||||
background: #ffffff;
|
||||
box-shadow: 0 4px 4px 4px rgba(0,21,41,.08);
|
||||
box-sizing: border-box;
|
||||
padding: 10px;
|
||||
|
||||
}
|
||||
.app-left-title{
|
||||
color: #53a0ff;
|
||||
font-weight: bold;
|
||||
}
|
||||
.app-left-top{
|
||||
height: 60px;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.app-left-img{
|
||||
width: 28px;
|
||||
height: 24px;
|
||||
img{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
.app-left-box{
|
||||
width: 100%;
|
||||
height: 60px;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: #909399;
|
||||
}
|
||||
.container-top{
|
||||
width: 100%;
|
||||
height: 98px;
|
||||
background: #5393ff;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.main {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
@ -759,7 +1109,7 @@ export default {
|
||||
.left-side {
|
||||
width: 160px;
|
||||
height: 100%;
|
||||
background: #00acac;
|
||||
background: #5393ff;
|
||||
border-right: #888888 solid 2px;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
@ -839,6 +1189,7 @@ export default {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.cart-container {
|
||||
width: 310px;
|
||||
height: 100%;
|
||||
@ -853,7 +1204,7 @@ export default {
|
||||
.title {
|
||||
height: 70px;
|
||||
width: 310px;
|
||||
background: #6c757d;
|
||||
background: #5393ff;
|
||||
border-bottom: #CCCCCC 2px solid;
|
||||
color: #FFFFFF;
|
||||
padding-top: 16px;
|
||||
@ -1012,11 +1363,11 @@ export default {
|
||||
.cash {
|
||||
float: left;
|
||||
height: 50px;
|
||||
border: solid 1px #00acac;
|
||||
border: solid 1px #5393ff;
|
||||
padding-top: 15px;
|
||||
width: 135px;
|
||||
border-radius: 5px;
|
||||
background: #00acac;
|
||||
background: #5393ff;
|
||||
font-weight: bold;
|
||||
}
|
||||
.submit {
|
||||
@ -1062,7 +1413,7 @@ export default {
|
||||
}
|
||||
.search-goods {
|
||||
height: 50px;
|
||||
background: #00acac;
|
||||
background: #5393ff;
|
||||
margin-left: 3px;
|
||||
color: #fff;
|
||||
}
|
||||
@ -1169,7 +1520,7 @@ export default {
|
||||
</style>
|
||||
<style scoped>
|
||||
.input-item >>> .el-input__inner {
|
||||
border: #00acac solid 2px;
|
||||
border: #5393ff solid 2px;
|
||||
line-height: 50px;
|
||||
height: 50px;
|
||||
}
|
||||
|
@ -49,7 +49,7 @@ export default {
|
||||
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
.main {
|
||||
background: #00acac;
|
||||
background: #5393ff;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
display: block;
|
||||
@ -85,7 +85,7 @@ export default {
|
||||
border-radius: 6px;
|
||||
}
|
||||
.item:hover {
|
||||
border: #00acac 3px solid;
|
||||
border: #5393ff 3px solid;
|
||||
}
|
||||
.logout {
|
||||
border: none;
|
||||
|
@ -38,7 +38,7 @@ export default {
|
||||
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
.main {
|
||||
background: #00acac;
|
||||
background: #5393ff;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
display: block;
|
||||
|
Loading…
Reference in New Issue
Block a user