初始上传

This commit is contained in:
2026-04-04 17:27:12 +08:00
parent 4d80d28eb4
commit b7e11774ee
11191 changed files with 1588469 additions and 0 deletions

View File

@@ -0,0 +1,746 @@
<template>
<base-page>
<view class="printer ">
<view class="common-wrap common-form body-overhide">
<view class="common-title">打印机设置</view>
<view class="common-form-item">
<label class="form-label">
<text class="required">*</text>
打印机名称
</label>
<view class="form-input-inline">
<input type="text" v-model="savedata.printer_name" class="form-input" />
</view>
<text class="form-word-aux"></text>
</view>
<view class="common-form-item">
<label class="form-label">
<text class="required">*</text>
打印机类型
</label>
<view class="form-inline">
<radio-group @change="printerTypeChange" class="form-radio-group">
<label class="radio form-radio-item">
<radio value="cloud" :checked="savedata.printer_type == 'cloud'" />
云打印机
</label>
<label class="radio form-radio-item">
<radio value="local" :checked="savedata.printer_type == 'local'" />
本地打印机
</label>
<label class="radio form-radio-item">
<radio value="network" :checked="savedata.printer_type == 'network'" />
网络打印机
</label>
</radio-group>
</view>
</view>
<view v-show="savedata.printer_type == 'cloud'">
<view class="common-form-item">
<label class="form-label">
<text class="required">*</text>
打印机品牌
</label>
<view class="form-input-inline">
<view class="form-input">易联云</view>
</view>
<text class="form-word-aux"></text>
</view>
<view class="common-form-item">
<label class="form-label">
<text class="required">*</text>
打印机编号
</label>
<view class="form-input-inline">
<input type="text" v-model="savedata.printer_code" class="form-input" />
</view>
<text class="form-word-aux"></text>
</view>
<view class="common-form-item">
<label class="form-label">
<text class="required">*</text>
打印机密钥
</label>
<view class="form-input-inline">
<input type="text" v-model="savedata.printer_key" class="form-input" />
</view>
<text class="form-word-aux"></text>
</view>
<view class="common-form-item">
<label class="form-label">
<text class="required">*</text>
应用id
</label>
<view class="form-input-inline">
<input type="text" v-model="savedata.open_id" class="form-input" />
</view>
<text class="form-word-aux-line">应用id易联云-开发者中心后台应用中心里获取</text>
</view>
<view class="common-form-item">
<label class="form-label">
<text class="required">*</text>
apiKey
</label>
<view class="form-input-inline">
<input type="text" v-model="savedata.apikey" class="form-input" />
</view>
<text class="form-word-aux-line">apiKey易联云-开发者中心后台应用中心里获取</text>
</view>
</view>
<view v-show="savedata.printer_type == 'local'">
<view class="common-form-item">
<label class="form-label">
<text class="required">*</text>
打印机端口
</label>
<view class="form-input-inline">
<view class="form-input">
<input type="text" v-model="savedata.host" class="form-input" /></view>
</view>
<text class="form-word-aux">打印机端口 (可以填写打印机端口号如LPT1 本地网络共享打印机\\192.168.1.100\POS_NAME)</text>
</view>
</view>
<view v-show="savedata.printer_type == 'network'">
<view class="common-form-item">
<label class="form-label">
<text class="required">*</text>
打印机IP
</label>
<view class="form-input-inline">
<view class="form-input">
<input type="text" v-model="savedata.ip" class="form-input" /></view>
</view>
<text class="form-word-aux"></text>
</view>
<view class="common-form-item">
<label class="form-label">
<text class="required">*</text>
打印机端口
</label>
<view class="form-input-inline">
<view class="form-input">
<input type="text" v-model="savedata.port" class="form-input" /></view>
</view>
<text class="form-word-aux"></text>
</view>
</view>
<view v-show="savedata.printer_type == 'local' || savedata.printer_type == 'network'">
<view class="common-form-item">
<label class="form-label">
<text class="required">*</text>
打印宽度
</label>
<view class="form-inline">
<radio-group @change="printWidthChange" class="form-radio-group">
<label class="radio form-radio-item">
<radio value="58mm" :checked="savedata.print_width == '58mm'" />
58mm
</label>
<label class="radio form-radio-item">
<radio value="80mm" :checked="savedata.print_width == '80mm'" />
80mm
</label>
</radio-group>
</view>
</view>
</view>
<view class="common-title">支付打印</view>
<view class="common-form-item">
<label class="form-label">支付打印</label>
<view class="form-inline">
<radio-group @change="orderPayChange" class="form-radio-group">
<label class="radio form-radio-item">
<radio value="1" :checked="savedata.order_pay_open == 1" />
开启
</label>
<label class="radio form-radio-item">
<radio value="0" :checked="savedata.order_pay_open == 0" />
关闭
</label>
</radio-group>
</view>
</view>
<view class="common-form-item" v-if="savedata.order_pay_open == 1">
<label class="form-label">打印模板</label>
<view class="form-input-inline " v-if="template.goodsorder && template.goodsorder.length">
<uni-data-select v-model="orderPayTempIndex" :localdata="template.goodsorder"></uni-data-select>
</view>
</view>
<view class="common-form-item" v-if="savedata.order_pay_open == 1">
<label class="form-label">打印联数</label>
<view class="form-inline">
<radio-group @change="orderPayNumChange" class="form-radio-group">
<label class="radio form-radio-item">
<radio value="1" :checked="savedata.order_pay_print_num == 1" />
1
</label>
<label class="radio form-radio-item">
<radio value="2" :checked="savedata.order_pay_print_num == 2" />
2
</label>
<label class="radio form-radio-item">
<radio value="3" :checked="savedata.order_pay_print_num == 3" />
3
</label>
<label class="radio form-radio-item">
<radio value="4" :checked="savedata.order_pay_print_num == 4" />
4
</label>
</radio-group>
</view>
</view>
<view class="common-form-item" v-if="savedata.order_pay_open == 1">
<label class="form-label">订单类型</label>
<view class="form-block">
<checkbox-group class="form-checkbox-group" @change="orderPayTypeChange">
<label class="form-checkbox-item" v-for="(item, index) in orderType">
<checkbox :value="item.type.toString()" :checked="savedata.order_pay_order_type.includes(item.type.toString()) || savedata.order_pay_order_type.includes(parseInt(item.type))" />
{{ item.name }}
</label>
</checkbox-group>
</view>
</view>
<view class="common-title">收货打印</view>
<view class="common-form-item">
<label class="form-label">收货打印</label>
<view class="form-inline">
<radio-group @change="takeDeliveryChange" class="form-radio-group">
<label class="radio form-radio-item">
<radio value="1" :checked="savedata.take_delivery_open == 1" />
开启
</label>
<label class="radio form-radio-item">
<radio value="0" :checked="savedata.take_delivery_open == 0" />
关闭
</label>
</radio-group>
</view>
</view>
<view class="common-form-item" v-if="savedata.take_delivery_open == 1">
<label class="form-label">打印模板</label>
<view class="form-input-inline" v-if="template.goodsorder && template.goodsorder.length">
<uni-data-select v-model="takeDeliveryTempIndex" :localdata="template.goodsorder"></uni-data-select>
</view>
</view>
<view class="common-form-item" v-if="savedata.take_delivery_open == 1">
<label class="form-label">打印联数</label>
<view class="form-inline">
<radio-group @change="takeDeliveryNumChange" class="form-radio-group">
<label class="radio form-radio-item">
<radio value="1" :checked="savedata.take_delivery_print_num == 1" />
1
</label>
<label class="radio form-radio-item">
<radio value="2" :checked="savedata.take_delivery_print_num == 2" />
2
</label>
<label class="radio form-radio-item">
<radio value="3" :checked="savedata.take_delivery_print_num == 3" />
3
</label>
<label class="radio form-radio-item">
<radio value="4" :checked="savedata.take_delivery_print_num == 4" />
4
</label>
</radio-group>
</view>
</view>
<view class="common-form-item" v-if="savedata.take_delivery_open == 1">
<label class="form-label">订单类型</label>
<view class="form-block">
<checkbox-group class="form-checkbox-group" @change="takeDeliveryTypeChange">
<label class="form-checkbox-item" v-for="(item, index) in orderType">
<checkbox :value="item.type.toString()" :checked="savedata.take_delivery_order_type.includes(item.type.toString()) || savedata.take_delivery_order_type.includes(parseInt(item.type))" />
{{ item.name }}
</label>
</checkbox-group>
</view>
</view>
<view class="common-title">手动打印</view>
<view class="common-form-item">
<label class="form-label">手动打印</label>
<view class="form-inline">
<radio-group @change="manualChange" class="form-radio-group">
<label class="radio form-radio-item">
<radio value="1" :checked="savedata.manual_open == 1" />
开启
</label>
<label class="radio form-radio-item">
<radio value="0" :checked="savedata.manual_open == 0" />
关闭
</label>
</radio-group>
</view>
</view>
<view class="common-form-item" v-if="savedata.manual_open == 1">
<label class="form-label">打印模板</label>
<view class="form-input-inline" v-if="template.goodsorder && template.goodsorder.length">
<uni-data-select v-model="manualTempIndex" :localdata="template.goodsorder"></uni-data-select>
</view>
</view>
<view class="common-form-item" v-if="savedata.manual_open == 1">
<label class="form-label">打印联数</label>
<view class="form-inline">
<radio-group @change="manualNumChange" class="form-radio-group">
<label class="radio form-radio-item">
<radio value="1" :checked="savedata.print_num == 1" />
1
</label>
<label class="radio form-radio-item">
<radio value="2" :checked="savedata.print_num == 2" />
2
</label>
<label class="radio form-radio-item">
<radio value="3" :checked="savedata.print_num == 3" />
3
</label>
<label class="radio form-radio-item">
<radio value="4" :checked="savedata.print_num == 4" />
4
</label>
</radio-group>
</view>
</view>
<view class="common-title">充值打印</view>
<view class="common-form-item">
<label class="form-label">充值打印</label>
<view class="form-inline">
<radio-group @change="rechargeChange" class="form-radio-group">
<label class="radio form-radio-item">
<radio value="1" :checked="savedata.recharge_open == 1" />
开启
</label>
<label class="radio form-radio-item">
<radio value="0" :checked="savedata.recharge_open == 0" />
关闭
</label>
</radio-group>
</view>
</view>
<view class="common-form-item" v-if="savedata.recharge_open == 1">
<label class="form-label">打印模板</label>
<view class="form-input-inline" v-if="template.recharge && template.recharge.length">
<uni-data-select v-model="rechargeTempIndex" :localdata="template.recharge"></uni-data-select>
</view>
</view>
<view class="common-form-item" v-if="savedata.recharge_open == 1">
<label class="form-label">打印联数</label>
<view class="form-inline">
<radio-group @change="rechargeNumChange" class="form-radio-group">
<label class="radio form-radio-item">
<radio value="1" :checked="savedata.recharge_print_num == 1" />
1
</label>
<label class="radio form-radio-item">
<radio value="2" :checked="savedata.recharge_print_num == 2" />
2
</label>
<label class="radio form-radio-item">
<radio value="3" :checked="savedata.recharge_print_num == 3" />
3
</label>
<label class="radio form-radio-item">
<radio value="4" :checked="savedata.recharge_print_num == 4" />
4
</label>
</radio-group>
</view>
</view>
<view class="common-title">收银交班打印</view>
<view class="common-form-item">
<label class="form-label">收银交班打印</label>
<view class="form-inline">
<radio-group @change="changeShiftsChange" class="form-radio-group">
<label class="radio form-radio-item">
<radio value="1" :checked="savedata.change_shifts_open == 1" />
开启
</label>
<label class="radio form-radio-item">
<radio value="0" :checked="savedata.change_shifts_open == 0" />
关闭
</label>
</radio-group>
</view>
</view>
<view class="common-form-item" v-if="savedata.change_shifts_open == 1">
<label class="form-label">打印模板</label>
<view class="form-input-inline" v-if="template.change_shifts && template.change_shifts.length">
<uni-data-select v-model="changeShiftsTempIndex" :localdata="template.change_shifts"></uni-data-select>
</view>
</view>
<view class="common-form-item" v-if="savedata.change_shifts_open == 1">
<label class="form-label">打印联数</label>
<view class="form-inline">
<radio-group @change="changeShiftsNumChange" class="form-radio-group">
<label class="radio form-radio-item">
<radio value="1" :checked="savedata.change_shifts_print_num == 1" />
1
</label>
<label class="radio form-radio-item">
<radio value="2" :checked="savedata.change_shifts_print_num == 2" />
2
</label>
<label class="radio form-radio-item">
<radio value="3" :checked="savedata.change_shifts_print_num == 3" />
3
</label>
<label class="radio form-radio-item">
<radio value="4" :checked="savedata.change_shifts_print_num == 4" />
4
</label>
</radio-group>
</view>
</view>
</view>
<view class="common-btn-wrap">
<button type="default" class="primary-btn" @click="saveFn">保存</button>
<button type="default" class="default-btn" @click="back">返回</button>
</view>
</view>
</base-page>
</template>
<script>
import uniDataSelect from '@/components/uni-data-select/uni-data-select.vue';
import {
getPrinterInfo,
getTemplate,
getOrderType,
editPrinter,
addPrinter
} from '@/api/printer.js'
export default {
components: {
uniDataSelect
},
data() {
return {
printer_id: 0,
savedata: {
printer_name: '',
brand: 'yilianyun',
printer_code: '',
printer_key: '',
open_id: '',
apikey: '',
printer_type: 'cloud',
order_pay_open: 0,
order_pay_template_id: 0,
order_pay_print_num: 1,
order_pay_order_type: [],
take_delivery_open: 0,
take_delivery_template_id: 0,
take_delivery_print_num: 1,
take_delivery_order_type: [],
manual_open: 0,
template_id: 0,
print_num: 1,
recharge_open: 0,
recharge_template_id: 0,
recharge_print_num: 1,
change_shifts_open: 0,
change_shifts_template_id: 0,
change_shifts_print_num: 1,
host: '',
ip: '',
port: '',
print_width: '58mm'
},
time: {
start: '08:30',
end: '23:30'
},
interval: 30,
advance: '',
max: '',
week: [],
flag: false,
template: {},
orderPayTempIndex: 0,
takeDeliveryTempIndex: 0,
manualTempIndex: 0,
rechargeTempIndex: 0,
changeShiftsTempIndex: 0,
orderType: []
};
},
onLoad(option) {
if (option.printer_id) {
this.printer_id = option.printer_id;
}
},
onShow() {
uni.setLocale('zh-Hans');
this.getTemplate();
this.getOrderTypeFn();
},
methods: {
getData() {
getPrinterInfo(this.printer_id).then(res => {
if (res.code >= 0) {
this.savedata = res.data;
this.orderPayTempIndex = this.savedata.order_pay_template_id;
this.takeDeliveryTempIndex = this.savedata.take_delivery_template_id;
this.manualTempIndex = this.savedata.template_id;
this.rechargeTempIndex = this.savedata.recharge_template_id;
this.changeShiftsTempIndex = this.savedata.change_shifts_template_id;
} else {
this.$util.showToast({
title: res.message
});
}
})
},
back() {
this.$util.redirectTo('/pages/printer/list');
},
getTemplate() {
getTemplate().then(res => {
if (res.code == 0) {
let template = {};
res.data.map((item, index) => {
if (!template[item.type]) template[item.type] = [];
var obj = {};
obj.text = item.template_name;
obj.value = item.template_id;
template[item.type].push(obj);
});
this.template = template;
if (this.printer_id) {
this.getData();
}
}
})
},
getOrderTypeFn() {
getOrderType().then(res => {
if (res.code == 0) {
this.orderType = res.data;
}
});
},
printerTypeChange(e) {
this.savedata.printer_type = e.detail.value;
},
printWidthChange(e) {
this.savedata.print_width = e.detail.value;
},
orderPayChange(e) {
this.savedata.order_pay_open = e.detail.value;
},
orderPayNumChange(e) {
this.savedata.order_pay_print_num = e.detail.value;
},
orderPayTypeChange(e) {
this.savedata.order_pay_order_type = e.detail.value;
},
takeDeliveryChange(e) {
this.savedata.take_delivery_open = e.detail.value;
},
takeDeliveryNumChange(e) {
this.savedata.take_delivery_print_num = e.detail.value;
},
takeDeliveryTypeChange(e) {
this.savedata.take_delivery_order_type = e.detail.value;
},
manualChange(e) {
this.savedata.manual_open = e.detail.value;
},
manualNumChange(e) {
this.savedata.print_num = e.detail.value;
},
rechargeChange(e) {
this.savedata.recharge_open = e.detail.value;
},
rechargeNumChange(e) {
this.savedata.recharge_print_num = e.detail.value;
},
changeShiftsChange(e) {
this.savedata.change_shifts_open = e.detail.value;
},
changeShiftsNumChange(e) {
this.savedata.change_shifts_print_num = e.detail.value;
},
check() {
let data = Object.assign({}, this.savedata);
if (!data.printer_name) {
this.$util.showToast({
title: '请输入打印机名称'
});
return false;
}
if (data.printer_type == 'cloud') {
if (!data.printer_code) {
this.$util.showToast({
title: '请输入打印机编号'
});
return false;
}
if (!data.printer_key) {
this.$util.showToast({
title: '请输入打印机密钥'
});
return false;
}
if (!data.open_id) {
this.$util.showToast({
title: '请输入应用id'
});
return false;
}
if (!data.apikey) {
this.$util.showToast({
title: '请输入apikey'
});
return false;
}
}
if (data.printer_type == 'local') {
if (!data.host) {
this.$util.showToast({
title: '请输入打印机打印机端口'
});
return false;
}
}
if (data.printer_type == 'network') {
if (!data.ip) {
this.$util.showToast({
title: '请输入打印机打印机地址'
});
return false;
}
if (!data.port) {
this.$util.showToast({
title: '请输入打印机打印机端口'
});
return false;
}
}
return true;
},
saveFn() {
if (this.check()) {
let data = this.savedata;
data.take_delivery_order_type = data.take_delivery_order_type.toString();
data.order_pay_order_type = data.order_pay_order_type.toString();
data.order_pay_template_id = this.orderPayTempIndex;
data.take_delivery_template_id = this.takeDeliveryTempIndex;
data.template_id = this.manualTempIndex;
data.recharge_template_id = this.rechargeTempIndex;
data.change_shifts_template_id = this.changeShiftsTempIndex;
let action = '';
if (this.printer_id > 0) {
data.printer_id = this.printer_id;
action = editPrinter(data)
} else {
action = addPrinter(data)
}
if (this.flag) return false;
this.flag = true;
action.then(res => {
this.flag = false;
this.$util.showToast({
title: res.message
});
if (res.code >= 0) {
setTimeout(() => {
this.$util.redirectTo('/pages/printer/list');
}, 1500);
}
});
}
},
timeTurnTimeStamp(time) {
let data = time.split(':');
return data[0] * 3600 + data[1] * 60;
},
timeFormat(time) {
let h = time / 3600;
let i = (time % 3600) / 60;
h = h < 10 ? '0' + h : h;
i = i < 10 ? '0' + i : i;
return h + ':' + i;
}
}
};
</script>
<style lang="scss" scoped>
.common-title {
font-size: 0.18rem;
margin-bottom: 0.2rem;
}
/deep/ .uni-select{
border-width: 0;
border-radius: 0;
}
.printer{
position: relative;
height: 100%;
.common-wrap {
background-color: #fff;
@extend %body-overhide;
padding: 0.2rem 0.2rem 0.88rem 0.2rem;
}
.common-btn-wrap{
width: 100%;
position: absolute;
left: 0;
bottom: 0;
padding: 0.24rem 0.2rem;
display: flex;
justify-content: space-between;
margin: 0;
box-sizing: border-box;
background-color: #fff;
button{
line-height: 0.4rem;
height: 0.4rem;
margin: 0;
flex: 1;
&.primary-btn{
margin-right: 0.1rem;
}
}
}
}
</style>

View File

@@ -0,0 +1,367 @@
<template>
<base-page>
<view class="printerlist">
<view class="printerlist-box">
<view class="printerlist-left">
<view class="printer-title">
打印机
<text class="iconfont icongengduo1"></text>
</view>
<view class="printer-list-wrap">
<block v-if="list.length > 0">
<scroll-view scroll-y="true" class="printer-list-scroll all-scroll" @scrolltolower="getPrinterListFn">
<view class="item" @click="printerSelect(item, index)" v-for="(item, index) in list" :key="index" :class="index == selectprinterKeys ? 'itemhover' : ''">
<view class="item-right">
<view class="printer-name">{{ item.printer_name }}</view>
<view class="printer-money">{{ printerType(item.printer_type) }}</view>
</view>
</view>
</scroll-view>
</block>
<view class="notYet" v-else-if="!one_judge && list.length == 0">暂无打印机</view>
</view>
<view class="add-printer">
<button type="default" class="primary-btn" @click="addprinter">添加打印机</button>
</view>
</view>
<view class="printerlist-right" v-show="!one_judge">
<view class="printer-title">打印机详情</view>
<view class="printer-information">
<block v-if="JSON.stringify(detail) != '{}'">
<view class="title">基本信息</view>
<view class="information-box">
<view class="box-left">
<view class="information">
<view>名称</view>
<view>{{ detail.printer_name }}</view>
</view>
<view class="information">
<view>打印机类型</view>
<view>{{ printerType(detail.printer_type) }}</view>
</view>
<block v-if="detail.printer_type == 'cloud'">
<view class="information">
<view>品牌</view>
<view>{{ brandList[detail.brand] }}</view>
</view>
<view class="information">
<view>打印机编号</view>
<view>{{ detail.printer_code }}</view>
</view>
<view class="information">
<view>打印机秘钥</view>
<view>{{ detail.printer_key }}</view>
</view>
<view class="information">
<view>应用id</view>
<view>{{ detail.open_id }}</view>
</view>
<view class="information">
<view>apiKey</view>
<view>{{ detail.apikey }}</view>
</view>
</block>
<block v-if="detail.printer_type == 'local'">
<view class="information">
<view>打印机端口</view>
<view>{{ detail.host }}</view>
</view>
</block>
<block v-if="detail.printer_type == 'network'">
<view class="information">
<view>打印机地址</view>
<view>{{ detail.ip }}</view>
</view>
<view class="information">
<view>打印机端口</view>
<view>{{ detail.host }}</view>
</view>
</block>
<view class="information">
<view>添加时间</view>
<view>{{ detail.create_time ? $util.timeFormat(detail.create_time) : '--' }}</view>
</view>
</view>
</view>
<view class="title">支付打印</view>
<view class="information-box">
<view class="box-left">
<view class="information">
<view>支付打印</view>
<view>{{ detail.order_pay_open ? '开启' : '关闭' }}</view>
</view>
<view class="information" v-if="detail.order_pay_open">
<view>打印模板</view>
<view>
{{ template[detail.order_pay_template_id] ? template[detail.order_pay_template_id].template_name : '--' }}
</view>
</view>
<view class="information" v-if="detail.order_pay_open">
<view>打印联数</view>
<view>{{ detail.order_pay_print_num }}</view>
</view>
<view class="information" v-if="detail.order_pay_open">
<view>订单类型</view>
<view>
<block v-for="(item, index) in detail.order_pay_order_type" :key="index">
<text v-if="item" class="order-type">{{ detail['order_type_list'][item]['name'] }}</text>
</block>
</view>
</view>
</view>
</view>
<view class="title">收货打印</view>
<view class="information-box">
<view class="box-left">
<view class="information">
<view>收货打印</view>
<view>{{ detail.take_delivery_open ? '开启' : '关闭' }}</view>
</view>
<view class="information" v-if="detail.take_delivery_open">
<view>打印模板</view>
<view>
{{ template[detail.take_delivery_template_id] ? template[detail.take_delivery_template_id].template_name : '--' }}
</view>
</view>
<view class="information" v-if="detail.take_delivery_open">
<view>打印联数</view>
<view>{{ detail.take_delivery_print_num }}</view>
</view>
<view class="information" v-if="detail.take_delivery_open">
<view>订单类型</view>
<view>
<block v-for="(item, index) in detail.take_delivery_order_type" :key="index">
<text v-if="item" class="order-type">{{ detail['order_type_list'][item]['name'] }}</text>
</block>
</view>
</view>
</view>
</view>
<view class="title">手动打印</view>
<view class="information-box">
<view class="box-left">
<view class="information">
<view>手动打印</view>
<view>{{ detail.manual_open ? '开启' : '关闭' }}</view>
</view>
<view class="information" v-if="detail.manual_open">
<view>打印模板</view>
<view>
{{ template[detail.template_id] ? template[detail.template_id].template_name : '--' }}
</view>
</view>
<view class="information" v-if="detail.manual_open">
<view>打印联数</view>
<view>{{ detail.print_num }}</view>
</view>
</view>
</view>
<view class="title">充值打印</view>
<view class="information-box">
<view class="box-left">
<view class="information">
<view>充值打印</view>
<view>{{ detail.recharge_open ? '开启' : '关闭' }}</view>
</view>
<view class="information" v-if="detail.recharge_open">
<view>打印模板</view>
<view>
{{ template[detail.recharge_template_id] ? template[detail.recharge_template_id].template_name : '--' }}
</view>
</view>
<view class="information" v-if="detail.recharge_open">
<view>打印联数</view>
<view>{{ detail.recharge_print_num }}</view>
</view>
</view>
</view>
<view class="title">收银交班打印</view>
<view class="information-box">
<view class="box-left">
<view class="information">
<view>收银交班打印</view>
<view>{{ detail.change_shifts_open ? '开启' : '关闭' }}</view>
</view>
<view class="information" v-if="detail.change_shifts_open">
<view>打印模板</view>
<view>
{{ template[detail.change_shifts_template_id] ? template[detail.change_shifts_template_id].template_name : '--' }}
</view>
</view>
<view class="information" v-if="detail.change_shifts_open">
<view>打印联数</view>
<view>{{ detail.change_shifts_print_num }}</view>
</view>
</view>
</view>
</block>
<block v-else>
<image class="cart-empty" src="@/static/cashier/cart_empty.png" mode="widthFix" />
</block>
</view>
<view class="button-box" v-if="JSON.stringify(detail) != '{}'">
<button class="default-btn" @click="$refs.deletePop.open()">删除</button>
<button class="default-btn" @click="editprinter(detail.printer_id)">修改</button>
</view>
</view>
</view>
</view>
<!-- 删除 -->
<uni-popup ref="deletePop" type="center">
<view class="confirm-pop">
<view class="title">确定要删除吗</view>
<view class="btn">
<button type="primary" class="default-btn btn save" @click="$refs.deletePop.close()">取消</button>
<button type="primary" class="primary-btn btn" @click="deletePrinterFn(detail.printer_id)">确定</button>
</view>
</view>
</uni-popup>
</base-page>
</template>
<script>
import {
getPrinterList,
getTemplate,
getPrinterInfo,
deletePrinter
} from '@/api/printer.js'
export default {
data() {
return {
selectprinterKeys: 0,
search_text: '',
page: 1,
// 每次返回数据数
page_size: 8,
// 第一次请求列表做详情渲染判断
one_judge: true,
//详情数据
detail: {},
brandList: {
yilianyun: '易联云',
'365': '365'
},
template: {},
list: [],
repeatFlag: false,
};
},
onLoad() {
// 初始化请求打印机列表数据
this.getTemplateFn();
},
methods: {
printerType(printerType) {
var str = '';
switch (printerType) {
case 'cloud':
str = '云打印机';
break;
case 'local':
str = '本地打印机';
break;
case 'network':
str = '网络打印机';
break;
}
return str;
},
switchStoreAfter() {
this.search()
},
printerSelect(item, keys) {
this.selectprinterKeys = keys;
this.getPrinterDetail(item.printer_id);
},
// 搜索员工
search() {
this.page = 1;
this.list = [];
this.one_judge = true;
this.getPrinterListFn();
},
addprinter() {
this.$util.redirectTo('/pages/printer/add');
},
editprinter(printer_id) {
this.$util.redirectTo('/pages/printer/add', {
printer_id: printer_id
});
},
/**
* 请求的列表数据
*/
getPrinterListFn() {
getPrinterList({
page: this.page,
page_size: this.page_size
}).then(res => {
if (res.data.list.length == 0 && this.one_judge) {
this.detail = {};
this.one_judge = false;
}
if (res.code >= 0 && res.data.list.length != 0) {
this.page += 1;
if (this.list.length == 0) {
this.list = res.data.list;
} else {
this.list = this.list.concat(res.data.list);
}
//初始时加载一遍详情数据
if (this.one_judge) {
this.getPrinterDetail(this.list[0].printer_id);
}
}
})
},
getTemplateFn() {
getTemplate().then(res => {
if (res.code == 0) {
let template = {};
res.data.forEach(item => {
template[item.template_id] = item;
})
this.template = template;
this.getPrinterListFn();
}
})
},
getPrinterDetail(printer_id) {
getPrinterInfo(printer_id).then(res => {
if (res.code == 0) {
this.detail = res.data;
this.one_judge = false;
}
})
},
deletePrinterFn(printer_id) {
if (this.repeatFlag) return;
this.repeatFlag = true;
deletePrinter(printer_id).then(res => {
this.repeatFlag = false;
if (res.code >= 0) {
this.page = 1;
this.list = [];
this.one_judge = true;
this.$refs.deletePop.close()
this.getPrinterListFn();
} else {
this.$util.showToast({
title: res.message
});
}
})
}
}
};
</script>
<style scoped lang="scss">
@import './public/css/printer.scss';
</style>

View File

@@ -0,0 +1,280 @@
.printerlist {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: space-between;
box-sizing: border-box;
.printerlist-box {
width: 100%;
height: 100%;
background: #ffffff;
display: flex;
.printerlist-left {
width: 5rem;
height: 100%;
border-right: 0.01rem solid #e6e6e6;
box-sizing: border-box;
display: flex;
flex-direction: column;
.notYet {
color: #e6e6e6;
font-size: 0.4rem;
margin-top: 3rem;
text-align: center;
}
.add-printer {
padding: 0.24rem 0.2rem;
background: #fff;
button {
height: .4rem;
line-height: .4rem;
}
}
.printer-title {
text-align: center;
line-height: 0.6rem;
font-size: 0.18rem;
font-weight: 500;
height: 0.6rem;
border-bottom: 0.01rem solid #e6e6e6;
box-sizing: border-box;
position: relative;
.icongengduo1 {
position: absolute;
top: 50%;
right: 0.2rem;
transform: translateY(-50%);
font-size: 0.3rem;
color: $primary-color;
}
}
.printer-list-wrap {
flex: 1;
height: 0;
}
.printer-list-scroll {
width: 100%;
height: 100%;
.itemhover {
background: var(--primary-color-light-9);
}
.item {
width: 100%;
display: flex;
align-items: center;
padding: 0.2rem;
box-sizing: border-box;
border-bottom: 0.01rem solid #e6e6e6;
image {
width: 0.7rem;
height: 0.7rem;
margin-right: 0.1rem;
}
.item-right {
display: flex;
flex-direction: column;
justify-content: space-between;
height: 0.6rem;
.printer-name {
font-size: 0.16rem;
}
.printer-money {
font-size: 0.14rem;
}
}
}
}
}
.printerlist-right {
width: 0;
flex: 1;
height: 100%;
box-sizing: border-box;
position: relative;
.printer-title {
text-align: center;
line-height: 0.6rem;
font-size: 0.18rem;
font-weight: 500;
height: 0.6rem;
border-bottom: 0.01rem solid #e6e6e6;
box-sizing: border-box;
position: relative;
.icongengduo1,.iconguanbi1 {
position: absolute;
top: 50%;
right: 0.2rem;
transform: translateY(-50%);
font-size: 0.3rem;
color: $primary-color;
cursor: pointer;
}
}
.printer-information {
width: 100%;
padding: 0.2rem 0.2rem 0.88rem 0.2rem;
box-sizing: border-box;
height: calc(100% - 0.6rem);
overflow: auto;
position: relative;
.title {
font-size: 0.18rem;
margin-bottom: 0.32rem;
}
.title2 {
margin-bottom: 0.35rem;
}
.information-box {
display: flex;
justify-content: space-between;
.box-left {
width: 5rem;
.information {
width: 100%;
padding-left: 0.1rem;
box-sizing: border-box;
display: flex;
align-items: center;
margin-bottom: 0.15rem;
view {
color: #303133;
font-size: 0.14rem;
}
view:nth-child(1) {
width: 1.3rem;
margin-right: 0.16rem;
text-align: right;
}
view:nth-child(2) {
width: 74%;
margin-right: 0.23rem;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
}
.information:last-child {
margin-bottom: 0.35rem;
}
}
.printer-img {
width: 1.5rem;
height: 1.5rem;
}
}
.table {
width: 100%;
height: 2.6rem;
box-sizing: border-box;
.table-all {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 0.38rem;
box-sizing: border-box;
.table-td {
font-size: 0.14rem;
text-align: left;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
}
.table-th {
height: 0.56rem;
background: #f7f8fa;
}
.table-tb {
width: 100%;
height: calc(100% - 0.56rem);
.table-tr {
height: 0.7rem;
border-bottom: 0.01rem solid #e6e6e6;
box-sizing: border-box;
.table-td {
image {
width: 0.5rem;
height: 0.5rem;
}
text-overflow: -o-ellipsis-lastline;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
line-clamp: 2;
-webkit-box-orient: vertical;
}
}
}
}
}
}
}
}
view {
color: #303133;
}
/deep/ .uni-scroll-view::-webkit-scrollbar {
width: 0.05rem;
height: 0.3rem;
}
/deep/ .uni-scroll-view::-webkit-scrollbar-thumb {
border-radius: 0.1rem;
box-shadow: inset 0 0 0.05rem rgba(0, 0, 0, 0.2);
background: rgba(193, 193, 193, 1);
}
.printer-information::-webkit-scrollbar {
width: 0.05rem;
height: 0.3rem;
}
.printer-information::-webkit-scrollbar-thumb {
border-radius: 0.1rem;
box-shadow: inset 0 0 0.05rem rgba(0, 0, 0, 0.2);
background: rgba(193, 193, 193, 1);
}
.button-box {
position: absolute;
width: 100%;
right: 0;
bottom: 0;
background-color: #fff;
display: flex;
align-items: center;
justify-content: flex-end;
padding: 0.24rem 0.2rem;
box-sizing: border-box;
button {
width: 1rem;
height: 0.4rem;
line-height: 0.4rem;
margin: 0;
margin-left: 0.1rem;
}
}
.button-box:after {
overflow: hidden;
content: '';
height: 0;
display: block;
clear: both;
}
.cart-empty {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 2.1rem;
}
.order-type{
margin-right: 0.1rem;
}