Merge branch 'master' of http://192.168.31.244:3000/byx/oilSystem
@ -77,6 +77,9 @@
|
||||
.el-range-editor.el-input__inner {
|
||||
display: inline-flex !important;
|
||||
}
|
||||
.el-input__inner:focus {
|
||||
border-color: #FF9655 !important;
|
||||
}
|
||||
|
||||
// to fix el-date-picker css style
|
||||
.el-range-separator {
|
||||
|
@ -5,26 +5,38 @@
|
||||
<div slot="header" class="clearfix">
|
||||
<i class="el-icon-back" @click="goToAbout">返回 | </i>
|
||||
<!-- <el-link icon="el-icon-edit" :underline="false" @click="goToAbout">编辑</el-link>-->
|
||||
<span>| 盘点详情</span>
|
||||
<span> 盘点详情</span>
|
||||
</div>
|
||||
<div style="height: 90px; display: flex; justify-content: space-between;">
|
||||
<div style="height: 100%; display: flex; justify-content: space-between;">
|
||||
<div style="height: 100%; width: 70%; display: flex; justify-content: space-between;">
|
||||
<div style="height: 100%; width: 70%; display: flex; justify-content: space-between;font-family: YouSheBiaoTiHei">
|
||||
<div class="box">
|
||||
<span style="font-size: 24px;color: #0DC291;font-weight: bold">{{numberOfTanks}}</span>
|
||||
<span>油罐数量</span>
|
||||
<span style="font-size: 26px;color: #0DC291;font-weight: bold;">{{numberOfTanks}}</span>
|
||||
<span style="display: flex">
|
||||
<div style="background-color: #0DC291;width: 10px;height: 10px;border-radius: 50%;margin-top: 6px;margin-right: 10px"></div>
|
||||
油罐数量
|
||||
</span>
|
||||
</div>
|
||||
<div class="box" >
|
||||
<span style="font-size: 24px;color: #3B6ADE;font-weight: bold" >{{inventoryVolume}}</span>
|
||||
<span>盘点升数</span>
|
||||
<span style="font-size: 26px;color: #3B6ADE;font-weight: bold" >{{inventoryVolume}}</span>
|
||||
<span style="display: flex">
|
||||
<div style="background-color: #3B6ADE;width: 10px;height: 10px;border-radius: 50%;margin-top: 6px;margin-right: 10px"></div>
|
||||
盘点升数
|
||||
</span>
|
||||
</div>
|
||||
<div class="box">
|
||||
<span style="font-size: 24px;color: #FF4347;font-weight: bold">{{stockDifference}}</span>
|
||||
<span>库存差异(L)</span>
|
||||
<span style="font-size: 26px;color: #FF4347;font-weight: bold">{{stockDifference}}</span>
|
||||
<span style="display: flex">
|
||||
<div style="background-color: #FF4347;width: 10px;height: 10px;border-radius: 50%;margin-top: 6px;margin-right: 10px"></div>
|
||||
库存差异(L)
|
||||
</span>
|
||||
</div>
|
||||
<div class="box">
|
||||
<span style="font-size: 24px;color: #FF9655;font-weight: bold">{{profitLossAmount}}</span>
|
||||
<span>盈亏总额(元)</span>
|
||||
<span style="font-size: 26px;color: #FF9655;font-weight: bold">{{profitLossAmount}}</span>
|
||||
<span style="display: flex">
|
||||
<div style="background-color: #FF9655;width: 10px;height: 10px;border-radius: 50%;margin-top: 6px;margin-right: 10px"></div>
|
||||
盈亏总额(元)
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -53,10 +65,10 @@
|
||||
</div>
|
||||
</div>
|
||||
<div style="height: 100%; width: 30%; display: flex; align-items: center; justify-content: flex-end;">
|
||||
<el-button type="primary" v-if="state=='await'" :disabled="saveFlag" @click="saveInventory()">保存</el-button>
|
||||
<el-button type="warning" v-if="state=='await'" :disabled="saveFlag" @click="saveInventory()">保存</el-button>
|
||||
<el-button type="success" v-if="state=='await'" :disabled="auditFlag" @click="audit">保存并审核</el-button>
|
||||
<el-button type="success" v-if="state=='ysh'" :disabled="auditFlag" @click="storage">盘点并处理库存</el-button>
|
||||
<el-button type="warning" v-if="state =='await' || state=='ysh'" :disabled="voidFlag" @click="abolition()">作废</el-button>
|
||||
<el-button type="danger" plain v-if="state =='await' || state=='ysh'" :disabled="voidFlag" @click="abolition()">作废</el-button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@ -65,20 +77,22 @@
|
||||
<el-card style="margin-top: 20px" >
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button v-if="state =='await'"
|
||||
type="primary"
|
||||
icon="el-icon-plus"
|
||||
@click="orderAdd"
|
||||
>添加盘点油罐</el-button>
|
||||
<span style="font-size: 20px;font-weight: bold">盘点详情</span>
|
||||
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
|
||||
<el-alert
|
||||
title="为了保证盘点我准确性,请在非收银期间段内进行盘点、否则会导致盘点信息异常"
|
||||
:closable="false"
|
||||
type="error">
|
||||
</el-alert>
|
||||
<el-alert
|
||||
title="为了保证盘点我准确性,请在非收银期间段内进行盘点、否则会导致盘点信息异常"
|
||||
:closable="false"
|
||||
type="error">
|
||||
</el-alert>
|
||||
</el-col>
|
||||
<el-col :span="15" style="text-align: right">
|
||||
<el-button v-if="state =='await'"
|
||||
type="primary"
|
||||
icon="el-icon-plus"
|
||||
@click="orderAdd"
|
||||
>添加盘点油罐</el-button>
|
||||
</el-col>
|
||||
<!-- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>-->
|
||||
</el-row>
|
||||
@ -878,7 +892,8 @@ export default {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
align-items: start;
|
||||
padding-left: 20px;
|
||||
|
||||
}
|
||||
</style>
|
||||
|
@ -2,79 +2,85 @@
|
||||
<div class="app-container">
|
||||
<el-row>
|
||||
<el-col :span="18">
|
||||
<el-card class="card" style="height: 75vh">
|
||||
<el-card class="card">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>{{ store.name }}{{store.description? "("+store.description+")":"" }}</span>
|
||||
<span>{{ store.name }}{{ store.description ? "(" + store.description + ")" : "" }}</span>
|
||||
</div>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<!-- <el-col :span="12">-->
|
||||
|
||||
|
||||
<!-- 上传图片-->
|
||||
<div style="display: flex">
|
||||
<span style="margin-right: 10px">店铺logo:</span>
|
||||
<imgUpload1 v-if="flag" :imgUrl="store.logo" :limit="1" @input="getImgUrl"></imgUpload1>
|
||||
</div>
|
||||
<!-- 上传图片-->
|
||||
<div style="display: flex; margin-top: 20px ">
|
||||
<span style="margin-right: 20px">门头照:</span>
|
||||
<imgUpload1 v-if="flag" :doorUrl="store.doorstepPhoto" @input="getDoorImgUrl"></imgUpload1>
|
||||
</div>
|
||||
<!-- 上传图片-->
|
||||
<div style="display: flex">
|
||||
<span style="margin-right: 10px">店铺logo:</span>
|
||||
<imgUpload1 v-if="flag" :imgUrl="store.logo" :limit="1" @input="getImgUrl"></imgUpload1>
|
||||
</div>
|
||||
<!-- 上传图片-->
|
||||
<div style="display: flex; margin-top: 20px ">
|
||||
<span style="margin-right: 20px">门头照:</span>
|
||||
<imgUpload1 v-if="flag" :doorUrl="store.doorstepPhoto" @input="getDoorImgUrl"></imgUpload1>
|
||||
</div>
|
||||
<div style="display: flex;margin-bottom: 20px">
|
||||
<p>退款密码:
|
||||
<el-input v-model="store.refPass" style="width: 50%" show-password></el-input>
|
||||
</p>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<!-- </el-col>-->
|
||||
<!-- <el-col :span="12">-->
|
||||
|
||||
<map-componment :pform="form" ref="mapRef" @pform="getForm"></map-componment>
|
||||
<div style="display: flex;margin-bottom: 20px">
|
||||
<span style="margin-right: 10px">店铺福利:</span>
|
||||
<el-checkbox-group v-model="welfare" ref="" @change="getCheckbox">
|
||||
<el-checkbox
|
||||
v-for="dict in dict.type.store_welfare"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
></el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</div>
|
||||
<map-componment :pform="form" ref="mapRef" @pform="getForm"></map-componment>
|
||||
<div style="display: flex;margin-bottom: 20px">
|
||||
<span style="margin-right: 10px">店铺福利:</span>
|
||||
<el-checkbox-group v-model="welfare" ref="" @change="getCheckbox">
|
||||
<el-checkbox
|
||||
v-for="dict in dict.type.store_welfare"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
></el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</div>
|
||||
|
||||
</el-col>
|
||||
<!-- </el-col>-->
|
||||
</el-row>
|
||||
<el-button type="primary" @click="submitStore">保存信息</el-button>
|
||||
</el-card>
|
||||
<el-button type="primary" @click="submitStore">保存信息</el-button>
|
||||
</el-card>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-card class="card" style="margin-left: 20px; height: 75vh">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>油站二维码</span>
|
||||
</div>
|
||||
<el-button style="margin-left: 0px" type="text" v-if="type==0" @click="getQRCodeInfoByStoreId(1)">切换样式</el-button><br/>
|
||||
<el-button style="margin-left: 0px" type="text" v-if="type==1" @click="getQRCodeInfoByStoreId(0)">切换样式</el-button><br/>
|
||||
<img id="collection" class="qrcode" :src="baseUrl + collectionImg" /><br/>
|
||||
<el-button class="but" type="primary"
|
||||
icon="el-icon-download"
|
||||
@click="handleDownloadqrCode('collection')">
|
||||
下载油站二维码
|
||||
</el-button>
|
||||
</el-card>
|
||||
<el-card class="card" style="margin-left: 20px;">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>油站二维码</span>
|
||||
</div>
|
||||
<div style="position: relative;">
|
||||
<img id="collection" class="qrcode" :src="baseUrl + collectionImg"/><br/>
|
||||
<div style="display: flex;justify-content: center;position: absolute;bottom: 25px;left: 90px" >
|
||||
<el-button type="warning" size="small"
|
||||
@click="handleDownloadqrCode('collection')">
|
||||
下载图片
|
||||
</el-button>
|
||||
<el-button style="margin-left: 10px;color: #409EFF" size="small" v-if="type==0" @click="getQRCodeInfoByStoreId(1)">切换样式
|
||||
</el-button>
|
||||
<br/>
|
||||
<el-button style="margin-left: 10px;color: #409EFF" size="small" v-if="type==1" @click="getQRCodeInfoByStoreId(0)">切换样式
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!-- <el-card class="card">-->
|
||||
<!-- <div slot="header" class="clearfix">-->
|
||||
<!-- <span>收款二维码</span>-->
|
||||
<!-- </div>-->
|
||||
<!-- <img id="payment" class="qrcode" :src="paymentImg" /><br/>-->
|
||||
<!-- <el-button class="but" type="primary"-->
|
||||
<!-- icon="el-icon-download"-->
|
||||
<!-- @click="handleDownloadqrCode('payment')">-->
|
||||
<!-- 下载收款二维码-->
|
||||
<!-- </el-button>-->
|
||||
<!-- </el-card>-->
|
||||
<!-- <el-card class="card">-->
|
||||
<!-- <div slot="header" class="clearfix">-->
|
||||
<!-- <span>收款二维码</span>-->
|
||||
<!-- </div>-->
|
||||
<!-- <img id="payment" class="qrcode" :src="paymentImg" /><br/>-->
|
||||
<!-- <el-button class="but" type="primary"-->
|
||||
<!-- icon="el-icon-download"-->
|
||||
<!-- @click="handleDownloadqrCode('payment')">-->
|
||||
<!-- 下载收款二维码-->
|
||||
<!-- </el-button>-->
|
||||
<!-- </el-card>-->
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
@ -87,7 +93,7 @@ import imgUpload from "@/components/ImageUpload/index.vue"
|
||||
import imgUpload1 from "@/components/map/imgUpload.vue"
|
||||
|
||||
export default {
|
||||
components:{
|
||||
components: {
|
||||
mapComponment,
|
||||
imgUpload,
|
||||
imgUpload1,
|
||||
@ -99,20 +105,22 @@ export default {
|
||||
type: Object
|
||||
}
|
||||
},
|
||||
data(){
|
||||
return{
|
||||
flag:false,
|
||||
data() {
|
||||
return {
|
||||
flag: false,
|
||||
// 上传文件列表
|
||||
uploadFiles: [
|
||||
{name:"nihao",
|
||||
url:'http://localhost:8080/static/uploadImages/20231218/c4b1c4fc7cfc4dd4a4acf1e922cacc86.png'}
|
||||
{
|
||||
name: "nihao",
|
||||
url: 'http://localhost:8080/static/uploadImages/20231218/c4b1c4fc7cfc4dd4a4acf1e922cacc86.png'
|
||||
}
|
||||
],
|
||||
// 门店二维码
|
||||
collectionImg:'',
|
||||
collectionImg: '',
|
||||
// 收款二维码
|
||||
paymentImg:'',
|
||||
paymentImg: '',
|
||||
qrcode: {},
|
||||
store:{},
|
||||
store: {},
|
||||
// 地图实例
|
||||
map: null,
|
||||
polygons: [],
|
||||
@ -135,9 +143,9 @@ export default {
|
||||
loading: false,
|
||||
// 搜索提示信息
|
||||
options: [],
|
||||
welfare:[],
|
||||
type:0,
|
||||
baseUrl:process.env.VUE_APP_BASE_API,
|
||||
welfare: [],
|
||||
type: 0,
|
||||
baseUrl: process.env.VUE_APP_BASE_API,
|
||||
}
|
||||
},
|
||||
created() {
|
||||
@ -151,23 +159,23 @@ export default {
|
||||
this.dataForm.coverImage = file.data.fileName;
|
||||
},
|
||||
// 获取图片url地址
|
||||
getImgUrl(val){
|
||||
getImgUrl(val) {
|
||||
let list = val.split("/static")
|
||||
this.store.logo = "/static"+list[list.length-1]
|
||||
this.store.logo = "/static" + list[list.length - 1]
|
||||
},
|
||||
// 获取图片url地址
|
||||
getDoorImgUrl(val){
|
||||
getDoorImgUrl(val) {
|
||||
let list = val.split(",")
|
||||
let doorUrl = []
|
||||
list.forEach(item => {
|
||||
doorUrl.push("/static"+item.split("/static")[1])
|
||||
doorUrl.push("/static" + item.split("/static")[1])
|
||||
})
|
||||
// console.log(list,doorUrl)
|
||||
this.store.doorstepPhoto = JSON.stringify(doorUrl)
|
||||
// this.store.doorstepPhoto = val
|
||||
},
|
||||
getForm(data){
|
||||
if (data != undefined){
|
||||
getForm(data) {
|
||||
if (data != undefined) {
|
||||
this.form.lat = data.lat;
|
||||
this.form.lng = data.lng;
|
||||
this.form.address = data.address;
|
||||
@ -178,12 +186,12 @@ export default {
|
||||
ljStoreInfo().then(response => {
|
||||
this.store = response.data
|
||||
// console.log(response.data)
|
||||
this.$emit("getUrl",this.store)
|
||||
this.$emit("getUrl", this.store)
|
||||
this.form.lat = this.store.latitude;
|
||||
this.form.lng = this.store.longitude;
|
||||
this.form.address = this.store.address;
|
||||
this.form.refPass = this.store.refPass;
|
||||
if (this.store.welfare!=null){
|
||||
if (this.store.welfare != null) {
|
||||
this.welfare = this.store.welfare.split(",")
|
||||
}
|
||||
this.$refs.mapRef.initAMap();
|
||||
@ -192,11 +200,11 @@ export default {
|
||||
})
|
||||
},
|
||||
|
||||
getCheckbox(){
|
||||
getCheckbox() {
|
||||
this.store.welfare = this.welfare.toString();
|
||||
},
|
||||
|
||||
submitStore(){
|
||||
submitStore() {
|
||||
this.store.latitude = this.form.lat;
|
||||
this.store.longitude = this.form.lng;
|
||||
this.store.address = this.form.address;
|
||||
@ -207,21 +215,21 @@ export default {
|
||||
},
|
||||
|
||||
// 获取二维码信息
|
||||
getQRCodeInfo(){
|
||||
getQRCodeInfo() {
|
||||
listQRCode().then(response => {
|
||||
this.qrcode = response.data.records;
|
||||
this.getQRcode();
|
||||
})
|
||||
},
|
||||
// 获取二维码信息
|
||||
getQRCodeInfoByStoreId(type){
|
||||
getQRCodeInfoByStoreId(type) {
|
||||
this.type = type
|
||||
QRCodeByStoreId({type:type}).then(response => {
|
||||
QRCodeByStoreId({type: type}).then(response => {
|
||||
this.collectionImg = response.data;
|
||||
})
|
||||
},
|
||||
// 根据字符串获取二维码图片url地址
|
||||
getQRcode(){
|
||||
getQRcode() {
|
||||
let opts = {
|
||||
errorCorrectionLevel: "L",//容错级别
|
||||
type: "image/png",//生成的二维码类型
|
||||
@ -235,17 +243,17 @@ export default {
|
||||
light: "#fff"//背景色
|
||||
}
|
||||
};
|
||||
if (this.qrcode.length > 0){
|
||||
if (this.qrcode.length > 0) {
|
||||
//this.QRlink 生成的二维码地址url
|
||||
QRCode.toDataURL(this.qrcode[0].collection, opts , (err, url) => {
|
||||
QRCode.toDataURL(this.qrcode[0].collection, opts, (err, url) => {
|
||||
if (err) throw err
|
||||
//将生成的二维码路径复制给data的QRImgUrl
|
||||
this.collectionImg= url
|
||||
this.collectionImg = url
|
||||
})
|
||||
QRCode.toDataURL(this.qrcode[0].payment, opts , (err, url) => {
|
||||
QRCode.toDataURL(this.qrcode[0].payment, opts, (err, url) => {
|
||||
if (err) throw err
|
||||
//将生成的二维码路径复制给data的QRImgUrl
|
||||
this.paymentImg= url
|
||||
this.paymentImg = url
|
||||
})
|
||||
}
|
||||
},
|
||||
@ -255,9 +263,9 @@ export default {
|
||||
let imgUrl = canvas.toDataURL("image/png"); //可将 canvas 转为 base64 格式
|
||||
let a = document.createElement('a')
|
||||
a.href = imgUrl;
|
||||
if (id=='collection'){
|
||||
if (id == 'collection') {
|
||||
a.download = "门店二维码"; //文件名
|
||||
}else {
|
||||
} else {
|
||||
a.download = "收款二维码"; //文件名
|
||||
}
|
||||
document.body.appendChild(a);
|
||||
@ -270,25 +278,28 @@ export default {
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.app-container{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: #f6f8f9;
|
||||
}
|
||||
.card{
|
||||
margin: 15px auto;
|
||||
}
|
||||
.qrcode{
|
||||
width: 300px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
.but{
|
||||
margin-top: 20px;
|
||||
margin-left: 50px;
|
||||
width: 180px;
|
||||
}
|
||||
.copy{
|
||||
width: 50%;
|
||||
margin-top: 20px;
|
||||
}
|
||||
.app-container {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: #f6f8f9;
|
||||
}
|
||||
|
||||
.card {
|
||||
margin: 15px auto;
|
||||
}
|
||||
|
||||
.qrcode {
|
||||
width: 350px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
.but {
|
||||
margin-top: 20px;
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
.copy {
|
||||
width: 50%;
|
||||
margin-top: 20px;
|
||||
}
|
||||
</style>
|
||||
|
BIN
fuintAdmin_zt/src/assets/images/banner.png
Normal file
After Width: | Height: | Size: 1.1 MiB |
BIN
fuintAdmin_zt/src/assets/images/l-one.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
fuintAdmin_zt/src/assets/images/l-three.png
Normal file
After Width: | Height: | Size: 3.7 KiB |
BIN
fuintAdmin_zt/src/assets/images/l-two.png
Normal file
After Width: | Height: | Size: 3.7 KiB |
@ -77,6 +77,9 @@
|
||||
.el-range-editor.el-input__inner {
|
||||
display: inline-flex !important;
|
||||
}
|
||||
.el-input__inner:focus {
|
||||
border-color: #FF9655 !important;
|
||||
}
|
||||
|
||||
// to fix el-date-picker css style
|
||||
.el-range-separator {
|
||||
|
@ -1,177 +1,67 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-card >
|
||||
<el-row :gutter="24">
|
||||
<el-form ref="queryParams" :model="queryParams" label-width="40px">
|
||||
<el-col :span="4">
|
||||
|
||||
<el-form-item label="名称">
|
||||
<el-input v-model="queryParams.storeName"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
|
||||
<el-form-item label="状态">
|
||||
<el-select v-model="queryParams.status" placeholder="店铺状态">
|
||||
<el-option label="启用" value="qy"></el-option>
|
||||
<el-option label="禁用" value="jy"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
</el-col>
|
||||
<!-- <el-col :span="4">
|
||||
|
||||
<el-form-item label="套餐">
|
||||
<el-select v-model="form.region" placeholder="店铺套餐">
|
||||
<el-option label="店铺套餐一" value="shanghai"></el-option>
|
||||
<el-option label="店铺套餐二" value="beijing"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
</el-col> -->
|
||||
<!-- <el-col :span="6">
|
||||
|
||||
<el-form-item label="时间">
|
||||
<el-date-picker
|
||||
v-model="value1"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
|
||||
</el-col> -->
|
||||
<el-col :span="4">
|
||||
<el-button type="primary" icon="el-icon-search" @click="getlist()">搜索</el-button>
|
||||
<el-button type="" icon="el-icon-refresh" @click="res()">重置</el-button>
|
||||
|
||||
|
||||
</el-col>
|
||||
|
||||
</el-form>
|
||||
|
||||
</el-row>
|
||||
|
||||
</el-card>
|
||||
<el-card style="margin-top: 20px" v-for="(item,index) in arrlist" :key="index">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>{{item.storeName || ''}}</span>
|
||||
<!-- <el-button style="float: right; padding: 3px 0" type="text">进入</el-button>-->
|
||||
<div class="bannser">
|
||||
<img src="../../assets/images/banner.png" alt="" >
|
||||
</div>
|
||||
<div class="box-wrap">
|
||||
<div class="zong-box" v-for="(items,index) in item.storeList" :key="index" >
|
||||
<div class="pur-box" @click="godetails(items.id)">
|
||||
<el-tag type="success" v-if="items.status=='qy'">启用</el-tag>
|
||||
<el-tag type="danger" v-else>禁用</el-tag>
|
||||
<div class="disper-box">
|
||||
<div class="box-img">
|
||||
<img v-if="items.logo" :src="imagePath + items.logo" style="width: 96px;height: 96px">
|
||||
<img v-else src="https://cube.elemecdn.com/e/fd/0fc7d20532fdaf769a25683617711png.png" style="width: 96px;height: 96px">
|
||||
</div>
|
||||
<div >
|
||||
<div class="title">{{items.name || ''}}</div>
|
||||
<div class="box-hui">
|
||||
<div>注册时间:</div>
|
||||
<div>{{ items.createTime.substring(0,10) || ''}}</div>
|
||||
</div>
|
||||
<div class="box-hui">
|
||||
<div>联系人:</div>
|
||||
<div>{{items.contact || '暂无'}}</div>
|
||||
</div>
|
||||
<div class="box-hui">
|
||||
<div>联系电话:</div>
|
||||
<div>{{items.phone || '暂无'}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="b-bs">
|
||||
<div class="left-box">
|
||||
<div class="san-box">
|
||||
<div>
|
||||
<img src="../../assets/images/l-one.png" style="width: 80px;height: 80px">
|
||||
</div>
|
||||
<div class="hui-bottom">
|
||||
<div>
|
||||
<div class="shang-biao">{{item.storeList.length || 0}}</div>
|
||||
<div class="xia-biao">创建门店数(个)</div>
|
||||
</div>
|
||||
<div>
|
||||
<!-- <div class="shang-biao">{{ items.userNum}}</div> -->
|
||||
<div class="shang-biao">{{ items.userNum}}</div>
|
||||
<div class="xia-biao">会员数(人)</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="shang-biao">{{ items.orderNum}}</div>
|
||||
<div class="xia-biao">支付订单(笔)</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="r-title">568</div>
|
||||
<div class="r-size">合作油站总数</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="san-box" style="background: linear-gradient( 90deg, #FFDC9B 0%, #FFC154 100%);">
|
||||
<div>
|
||||
<img src="../../assets/images/l-two.png" style="width: 80px;height: 80px">
|
||||
</div>
|
||||
<div>
|
||||
<div class="r-title">568</div>
|
||||
<div class="r-size">合作油站总数</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="san-box" style="background: linear-gradient( 90deg, #9CDCA0 0%, #5BC557 100%);">
|
||||
<div>
|
||||
<img src="../../assets/images/l-three.png" style="width: 80px;height: 80px">
|
||||
</div>
|
||||
<div>
|
||||
<div class="r-title">568</div>
|
||||
<div class="r-size">合作油站总数</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</el-card>
|
||||
<div class="right-box">
|
||||
<div class="title_">
|
||||
<div>通知中心</div>
|
||||
<div style="font-size: 12px;color: #BBBBBB;display: flex;align-items: center">更多 <i class="el-icon-arrow-right"></i> </div>
|
||||
</div>
|
||||
<div class="hang_" v-for="(item,index) in 4" :key="index" >【到期提醒】百业兴智慧油站系统将于2024年07月10日到期...</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="b-bs">
|
||||
<div class="left-box-t"> </div>
|
||||
<div class="right-box-t"> </div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Storelist,getUserNumApi,
|
||||
getOrderNumApi } from "@/api/service/service";
|
||||
|
||||
export default {
|
||||
name: 'service',
|
||||
dicts: ['zhzt'],
|
||||
|
||||
data(){
|
||||
return{
|
||||
form: {
|
||||
name: '',
|
||||
region: '',
|
||||
date1: '',
|
||||
date2: '',
|
||||
delivery: false,
|
||||
type: [],
|
||||
resource: '',
|
||||
desc: ''
|
||||
},
|
||||
form: {},
|
||||
imagePath: process.env.VUE_APP_SERVER_URL,
|
||||
|
||||
arrlist:[],
|
||||
value1:'',
|
||||
queryParams: {
|
||||
storeName: '',
|
||||
status: '',
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
|
||||
},
|
||||
}
|
||||
},
|
||||
async mounted() {
|
||||
await this.getlist()
|
||||
},
|
||||
|
||||
methods:{
|
||||
async getlist(){
|
||||
await Storelist(this.queryParams).then(res=>{
|
||||
console.log(res)
|
||||
this.arrlist = res.data.records
|
||||
})
|
||||
},
|
||||
|
||||
res() {
|
||||
this.queryParams= {
|
||||
storeName: '',
|
||||
status: '',
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
|
||||
}
|
||||
|
||||
this.getlist()
|
||||
},
|
||||
godetails(id){
|
||||
this.$router.push({
|
||||
path:'/Service/details',
|
||||
query:{
|
||||
id:id
|
||||
}
|
||||
})
|
||||
|
||||
},
|
||||
}
|
||||
|
||||
}
|
||||
@ -183,84 +73,105 @@ getOrderNumApi } from "@/api/service/service";
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
/* height: 100vh; */
|
||||
background: white;
|
||||
background: #f4f5f9;
|
||||
}
|
||||
.ding-top{
|
||||
.bannser{
|
||||
width: 100%;
|
||||
height: 230px;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
img{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
}
|
||||
.b-bs{
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin-top: 20px;
|
||||
}
|
||||
.left-box{
|
||||
background: #FFFFFF;
|
||||
border-radius: 10px 10px 10px 10px;
|
||||
border: 1px solid #FFFFFF;
|
||||
height: 192px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
box-sizing: border-box;
|
||||
padding: 15px;
|
||||
}
|
||||
.left-box-t{
|
||||
box-sizing: border-box;
|
||||
padding: 15px;
|
||||
border-radius: 8px;
|
||||
background: #fff;
|
||||
border: 1px solid #FFFFFF;
|
||||
height: 380px;
|
||||
|
||||
}
|
||||
.box-dis{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.clearfix:before,
|
||||
.clearfix:after {
|
||||
display: table;
|
||||
content: "";
|
||||
.right-box{
|
||||
width: 435px;
|
||||
border-radius: 8px;
|
||||
background: #fff;
|
||||
border: 1px solid #FFFFFF;
|
||||
height: 192px;
|
||||
box-sizing: border-box;
|
||||
padding: 15px;
|
||||
}
|
||||
.clearfix:after {
|
||||
clear: both
|
||||
.right-box-t{
|
||||
width: 435px;
|
||||
border-radius: 8px;
|
||||
background: #fff;
|
||||
border: 1px solid #FFFFFF;
|
||||
height: 380px;
|
||||
box-sizing: border-box;
|
||||
padding: 15px;
|
||||
}
|
||||
.box-wrap{
|
||||
.san-box{
|
||||
width: 360px;
|
||||
height: 150px;
|
||||
box-sizing: border-box;
|
||||
border-radius: 8px;
|
||||
background: linear-gradient( 90deg, #70CAFD 0%, #02AAFE 100%);
|
||||
margin: 15px 0px;
|
||||
margin-right: 15px;
|
||||
box-sizing: border-box;
|
||||
padding: 20px 40px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.r-title{
|
||||
font-weight: bold;
|
||||
font-size: 42px;
|
||||
color: #FFFFFF;
|
||||
text-align: center;
|
||||
}
|
||||
.r-size{
|
||||
font-size: 14px;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
.title_{
|
||||
font-size: 16px;
|
||||
color: #333333;
|
||||
font-weight: bold;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.zong-box{
|
||||
width: 18%;
|
||||
overflow: hidden;
|
||||
border-radius: 8px;
|
||||
box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px;
|
||||
margin-bottom: 30px;
|
||||
margin-right: 30px;
|
||||
}
|
||||
.pur-box{
|
||||
width: 100%;
|
||||
padding: 10px;
|
||||
|
||||
}
|
||||
.disper-box{
|
||||
display: flex;
|
||||
margin-top: 10px;
|
||||
}
|
||||
.box-img{
|
||||
width: 96px;
|
||||
height: 96px;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
margin-right: 10px;
|
||||
}
|
||||
.box-hui{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 14px;
|
||||
color: #99a9bf;
|
||||
margin-top: 4px;
|
||||
}
|
||||
.title{
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.hui-bottom{
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-around;
|
||||
background: #fafafc;
|
||||
padding: 20px 10px;
|
||||
}
|
||||
.shang-biao{
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
.xia-biao{
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
font-size: 12px;
|
||||
}
|
||||
.hang_{
|
||||
width: 100%;
|
||||
white-space: nowrap; //不换行
|
||||
overflow: hidden; //超出部分隐藏
|
||||
text-overflow: ellipsis; //文本溢出显示省略号
|
||||
font-size: 14px;
|
||||
color: #777777;
|
||||
margin: 14px auto;
|
||||
overflow: auto;
|
||||
}
|
||||
</style>
|
||||
|
@ -339,7 +339,7 @@ public class LJStaffServiceImpl extends ServiceImpl<LJStaffMapper, LJStaff> impl
|
||||
LJStaff staff = this.selectStaffById(id);
|
||||
LJStore store = storeService.selectStoreByStoreId(staff.getStoreId());
|
||||
//在图片上生成二维码
|
||||
String backgroundImage = "static/qrCodeImg/laigeyouhui_bg.jpg";
|
||||
String backgroundImage = "static/qrCodeImg/mendian_bg2.png";
|
||||
String logoImage = "static/qrCodeImg/logo.png";
|
||||
// if (StringUtils.isNotEmpty(store.getLogo())){
|
||||
// logoImage = store.getLogo();
|
||||
|
@ -69,10 +69,10 @@ public class QrCodeUtils {
|
||||
g.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null);
|
||||
//使用工具类生成二维码
|
||||
// Image image = createQrCode(logoStream, url, 360, 360);
|
||||
Image image = createQrCode(logoStream, url, 270, 270);
|
||||
Image image = createQrCode(logoStream, url, 294, 294);
|
||||
//将小图片绘到大图片上,500,300 .表示你的小图片在大图片上的位置。
|
||||
// g.drawImage(image, (bufImg.getWidth()-360)/2, 320, null);
|
||||
g.drawImage(image, (bufImg.getWidth()-270)/2, 153, null);
|
||||
g.drawImage(image, (bufImg.getWidth()-294)/2, 139, null);
|
||||
// 设置字体,样式,字体大小
|
||||
// g.setFont(new Font("TimesRoman", Font.BOLD, 20));
|
||||
g.setFont(chineseFont());
|
||||
@ -90,18 +90,18 @@ public class QrCodeUtils {
|
||||
LJStaff staff1 = staffService.selectStaffByStoreId(storeId);
|
||||
|
||||
// 店铺名称位置文字绘制到指定位置
|
||||
g.drawString(store.getName(), returnX(g,bufImg.getWidth(),store.getName()), 300);
|
||||
g.drawString(store.getName(), returnX(g,bufImg.getWidth(),store.getName()), 560);
|
||||
// 加油员姓名位置文字绘制到指定位置
|
||||
if (ObjectUtil.isNotEmpty(staff)) {
|
||||
g.drawString("加油员:"+staff.getRealName(), returnX(g, bufImg.getWidth(), "加油员:"+staff.getRealName()), 750);
|
||||
g.drawString("加油员:"+staff.getRealName(), 50, 680);
|
||||
}
|
||||
// 站长名称位置文字绘制到指定位置
|
||||
g.drawString("站长名称:"+staff1.getRealName(), returnX(g, bufImg.getWidth(), "站长名称:"+staff1.getRealName()), 810);
|
||||
g.drawString("站长名称:"+staff1.getRealName(), 50, 590);
|
||||
// 服务监督电话位置文字绘制到指定位置
|
||||
g.drawString("服务监督电话:"+staff1.getMobile(), returnX(g, bufImg.getWidth(), "服务监督电话:"+staff1.getMobile()), 870);
|
||||
g.drawString("服务监督电话:"+staff1.getMobile(), 50, 620);
|
||||
// 店铺地址位置文字绘制到指定位置
|
||||
// g.drawString(store.getAddress(), returnX(g,bufImg.getWidth(),store.getAddress()), 900);
|
||||
drawStringWithMultiLine(g,store.getAddress(), bufImg.getWidth()-20,20,940,10 );
|
||||
drawStringWithMultiLine(g,store.getAddress(), bufImg.getWidth()-90,51,650,5 );
|
||||
}else {
|
||||
drawStringWithMultiLine(g,"欢迎光临", bufImg.getWidth()-20,20,940,10 );
|
||||
g.drawString("欢迎光临:", returnX(g, bufImg.getWidth(), "服务监督电话:"), 870);
|
||||
@ -306,17 +306,17 @@ public class QrCodeUtils {
|
||||
|
||||
// Font font = Font.createFont(Font.TRUETYPE_FONT, new ClassPathResource("classpath:font/msyh.ttc").getFile());
|
||||
// b = font.deriveFont(Font.BOLD, 40);
|
||||
b = new Font("TimesRoman", Font.BOLD, 40);
|
||||
b = new Font("TimesRoman", Font.BOLD, 16);
|
||||
} else {
|
||||
prefixFont = "/usr/share/fonts" + File.separator + "msyh.ttc";
|
||||
try {
|
||||
Font font = Font.createFont(Font.TRUETYPE_FONT, new File(prefixFont));
|
||||
b = font.deriveFont(Font.BOLD, 40);
|
||||
b = font.deriveFont(Font.BOLD, 16);
|
||||
// b = new Font("msyh", Font.BOLD, 40);
|
||||
|
||||
} catch (Exception e) {
|
||||
//如果发生异常执行默认的字体
|
||||
b = new Font("msyh", Font.BOLD, 40);
|
||||
b = new Font("msyh", Font.BOLD, 16);
|
||||
log.error(e.getMessage(),"找不到字体");
|
||||
|
||||
}
|
||||
|
@ -60,9 +60,9 @@ public class QRCodeServiceImpl extends ServiceImpl<QRCodeMapper, QRCode> impleme
|
||||
//在图片上生成二维码
|
||||
String backgroundImage = "";
|
||||
if (type.equals("0")){
|
||||
backgroundImage = "static/qrCodeImg/mendian_bg1.png";
|
||||
}else {
|
||||
backgroundImage = "static/qrCodeImg/mendian_bg2.png";
|
||||
}else {
|
||||
backgroundImage = "static/qrCodeImg/mendian_bg1.png";
|
||||
}
|
||||
|
||||
String logoImage = "static/qrCodeImg/logo.png";
|
||||
|
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 70 KiB |
@ -77,6 +77,9 @@
|
||||
.el-range-editor.el-input__inner {
|
||||
display: inline-flex !important;
|
||||
}
|
||||
.el-input__inner:focus {
|
||||
border-color: #FF9655 !important;
|
||||
}
|
||||
|
||||
// to fix el-date-picker css style
|
||||
.el-range-separator {
|
||||
|