3 Commits

Author SHA1 Message Date
gyq
6a20930a7d 优化交班记录 2026-04-09 14:51:10 +08:00
gyq
506dcbb804 优化 2026-04-08 15:07:19 +08:00
gyq
75e46ec6dd 优化首页 2026-04-02 16:59:48 +08:00
8 changed files with 66 additions and 140 deletions

View File

@@ -7,8 +7,8 @@ VITE_APP_BASE_API=/dev-api
# 接口地址 # 接口地址
# VITE_APP_API_URL=https://tapi.cashier.sxczgkj.cn/ # 测试 # VITE_APP_API_URL=https://tapi.cashier.sxczgkj.cn/ # 测试
VITE_APP_API_URL=https://cashier.sxczgkj.com/ # 正式 # VITE_APP_API_URL=https://cashier.sxczgkj.com/ # 正式
# VITE_APP_API_URL=http://192.168.1.42/ # 本地 VITE_APP_API_URL=http://192.168.1.42/ # 本地
VITE_APP_API_PHP_URL=http://192.168.1.42:8000 #php抖音美团测试环境 VITE_APP_API_PHP_URL=http://192.168.1.42:8000 #php抖音美团测试环境
VITE_APP_API_PHP_IMPORT_URL=http://192.168.1.42:8789 #本地php批量导入 VITE_APP_API_PHP_IMPORT_URL=http://192.168.1.42:8789 #本地php批量导入
# VITE_APP_API_PHP_IMPORT_URL=https://diftcs.sxczgkj.com #本地线上php批量导入 # VITE_APP_API_PHP_IMPORT_URL=https://diftcs.sxczgkj.com #本地线上php批量导入

View File

@@ -4,10 +4,10 @@
<el-table-column prop="shopName" align="center" label="商户名称" /> <el-table-column prop="shopName" align="center" label="商户名称" />
<el-table-column prop="staffName" align="center" label="职员名称" /> <el-table-column prop="staffName" align="center" label="职员名称" />
<el-table-column prop="orderCount" align="center" label="订单数量" /> <el-table-column prop="orderCount" align="center" label="订单数量" />
<el-table-column prop="handAmount" align="center" label="应交金额" /> <el-table-column prop="orderTurnover" align="center" label="应交金额" />
<el-table-column prop="quickInAmount" align="center" label="快捷收款金额" /> <el-table-column prop="balance" align="center" label="余额支付" />
<el-table-column prop="refundAmount" align="center" label="退款金额" /> <el-table-column prop="refundAmount" align="center" label="退款金额" />
<el-table-column prop="handAmount" align="center" label="总收入" /> <el-table-column prop="turnover" align="center" label="总收入" />
<el-table-column prop="loginTime" align="center" label="开始时间" /> <el-table-column prop="loginTime" align="center" label="开始时间" />
<el-table-column prop="handoverTime" align="center" label="交班时间" /> <el-table-column prop="handoverTime" align="center" label="交班时间" />
<el-table-column label="操作" align="center"> <el-table-column label="操作" align="center">

View File

@@ -2,7 +2,6 @@ import printerApi, { type addRequest } from "@/api/account/printer";
import { options } from './config' import { options } from './config'
import type { IModalConfig } from "@/components/CURD/types"; import type { IModalConfig } from "@/components/CURD/types";
import { c } from "vite/dist/node/moduleRunnerTransport.d-CXw_Ws6P";
const modalConfig: IModalConfig<addRequest> = { const modalConfig: IModalConfig<addRequest> = {
pageName: "sys:user", pageName: "sys:user",
@@ -16,13 +15,9 @@ const modalConfig: IModalConfig<addRequest> = {
}, },
formAction: function (data) { formAction: function (data) {
let obj = { ...data } let obj = { ...data }
console.log("打印类型", data);
obj.printType = data.printType.join(',') obj.printType = data.printType.join(',')
obj.categoryIds = JSON.stringify(data.categoryIdsArr) obj.categoryIds = JSON.stringify(data.categoryIdsArr)
obj.categoryList = JSON.stringify(data.categoryIdsArr) obj.categoryList = JSON.stringify(data.categoryIdsArr)
if (data.classifyPrint == 0) {
obj.categoryIds = ''
}
// obj.categoryIds = '[' + data.categoryIdsArr.join(',') + ']' // obj.categoryIds = '[' + data.categoryIdsArr.join(',') + ']'
return printerApi.add(obj); return printerApi.add(obj);
}, },

View File

@@ -20,9 +20,6 @@ const modalConfig: IModalConfig<editRequest> = {
obj.categoryIds = JSON.stringify(data.categoryIdsArr) obj.categoryIds = JSON.stringify(data.categoryIdsArr)
obj.categoryList = JSON.stringify(data.categoryIdsArr) obj.categoryList = JSON.stringify(data.categoryIdsArr)
} }
if (data.classifyPrint == 0) {
obj.categoryIds = ''
}
return printerApi.edit(obj); return printerApi.edit(obj);
}, },
beforeSubmit(data) { beforeSubmit(data) {

View File

@@ -2,35 +2,23 @@
<div class="app-container"> <div class="app-container">
<!-- 列表 --> <!-- 列表 -->
<!-- 搜索 --> <!-- 搜索 -->
<page-search <page-search ref="searchRef" :search-config="searchConfig" @query-click="handleQueryClick"
ref="searchRef" @reset-click="handleResetClick" />
:search-config="searchConfig"
@query-click="handleQueryClick"
@reset-click="handleResetClick"
/>
<!-- 列表 --> <!-- 列表 -->
<page-content <page-content ref="contentRef" :content-config="contentConfig" @add-click="handleAddClick"
ref="contentRef" @edit-click="handleEditClick" @export-click="handleExportClick" @search-click="handleSearchClick"
:content-config="contentConfig" @toolbar-click="handleToolbarClick" @operat-click="handleOperatClick" @filter-change="handleFilterChange">
@add-click="handleAddClick"
@edit-click="handleEditClick"
@export-click="handleExportClick"
@search-click="handleSearchClick"
@toolbar-click="handleToolbarClick"
@operat-click="handleOperatClick"
@filter-change="handleFilterChange"
>
<template #status="scope"> <template #status="scope">
<el-tag :type="scope.row[scope.prop] == 1 ? 'success' : 'info'"> <el-tag :type="scope.row[scope.prop] == 1 ? 'success' : 'info'">
{{ scope.row[scope.prop] == 1 ? "启用" : "禁用" }} {{ scope.row[scope.prop] == 1 ? "启用" : "禁用" }}
</el-tag> </el-tag>
</template> </template>
<template #contentType="scope"> <template #contentType="scope">
{{ scope.row.contentType == "yxyPrinter" ? "云想印" : "飞鹅" }} {{ scope.row.contentType == 'yxyPrinter' ? "云想印" : "飞鹅" }}
</template> </template>
<template #subType="scope"> <template #subType="scope">
{{ scope.row.subType == "label" ? "标签" : "小票" }} {{ scope.row.subType == 'label' ? "标签" : "小票" }}
</template> </template>
<template #caozuo="scope"> <template #caozuo="scope">
{{ scope }} {{ scope }}
@@ -40,12 +28,8 @@
</template> </template>
<template #operate="scope"> <template #operate="scope">
<div v-if="scope.row.connectionType != 'USB'"> <div v-if="scope.row.connectionType != 'USB'">
<el-button @click="handleEditClick(scope.row)" icon="Edit" type="primary" link> <el-button @click="handleEditClick(scope.row)" icon="Edit" type="primary" link>编辑</el-button>
编辑 <el-button @click="handdeleteevent(scope.row)" icon="Delete" type="danger" link>删除</el-button>
</el-button>
<el-button @click="handdeleteevent(scope.row)" icon="Delete" type="danger" link>
删除
</el-button>
</div> </div>
</template> </template>
<!-- <template #mobile="scope"> <!-- <template #mobile="scope">
@@ -71,11 +55,7 @@
</page-modal> </page-modal>
<!-- 编辑 --> <!-- 编辑 -->
<page-modal <page-modal ref="editModalRef" :modal-config="editModalConfig" @submit-click="handleSubmitClick">
ref="editModalRef"
:modal-config="editModalConfig"
@submit-click="handleSubmitClick"
>
<template #gender="scope"> <template #gender="scope">
<Dict v-model="scope.formData[scope.prop]" code="gender" v-bind="scope.attrs" /> <Dict v-model="scope.formData[scope.prop]" code="gender" v-bind="scope.attrs" />
</template> </template>
@@ -118,11 +98,11 @@ const {
onMounted(() => { onMounted(() => {
getPrinterType(); getPrinterType();
}); });
let PrinterTypeList = ref([]); let PrinterTypeList = ref([])
// 获取商品分类 // 获取商品分类
async function getPrinterType() { async function getPrinterType() {
let res = await UserAPI.getPrinterType(); let res = await UserAPI.getPrinterType();
PrinterTypeList.value = res.records; PrinterTypeList.value = res.records
} }
function handdeleteevent(item) { function handdeleteevent(item) {
ElMessageBox.confirm("确认删除?", "警告", { ElMessageBox.confirm("确认删除?", "警告", {
@@ -134,6 +114,7 @@ function handdeleteevent(item) {
ElMessage.success("删除成功"); ElMessage.success("删除成功");
handleQueryClick(); handleQueryClick();
}); });
}); });
} }
// 新增 // 新增
@@ -146,15 +127,11 @@ async function handleEditClick(row: IObject) {
editModalRef.value?.setModalVisible(); editModalRef.value?.setModalVisible();
// 根据id获取数据进行填充 // 根据id获取数据进行填充
let data = await UserAPI.get(row.id); let data = await UserAPI.get(row.id);
data.printType = data.printType.split(","); data.printType = data.printType.split(',');
if (data.categoryIds) { if (data.categoryIds) {
data.categoryIdsArr = JSON.parse(data.categoryIds); data.categoryIdsArr = JSON.parse(data.categoryIds)
} else {
data.categoryIdsArr = [];
} }
console.log(data.categoryIdsArr);
console.log(data);
data.classifyPrint = data.classifyPrint * 1; data.classifyPrint = data.classifyPrint * 1;

View File

@@ -3,7 +3,8 @@
<div class="item_wrap"> <div class="item_wrap">
<div class="title">您好欢迎登录</div> <div class="title">您好欢迎登录</div>
<div class="item_list"> <div class="item_list">
<div class="item" v-for="(item, index) in quickStore.quickMenus" :key="item.id" @click="menuClick(item.menuId)"> <div class="item" v-for="(item, index) in quickStore.quickMenus.splice(0, 6)" :key="item.id"
@click="menuClick(item.menuId)">
<img class="icon" :src="icons[index + 1]" alt=""> <img class="icon" :src="icons[index + 1]" alt="">
{{ returnMenuName(item.menuId) }} {{ returnMenuName(item.menuId) }}
</div> </div>

View File

@@ -93,13 +93,8 @@
<div> <div>
实收金额 实收金额
<span style="color: red">{{ detail.payAmount }}</span> <span style="color: red">{{ detail.payAmount }}</span>
<el-button <el-button v-if="detail.status != 'unpaid' && detail.refundAmount < detail.payAmount" size="small"
v-if="detail.status != 'unpaid' && detail.refundAmount < detail.payAmount" type="danger" class="u-m-l-10" @click="tuikuan()">
size="small"
type="danger"
class="u-m-l-10"
@click="tuikuan()"
>
<span>退款</span> <span>退款</span>
</el-button> </el-button>
</div> </div>
@@ -130,35 +125,22 @@
<div style="margin-bottom: 16px; font-size: 16px">商品信息</div> <div style="margin-bottom: 16px; font-size: 16px">商品信息</div>
<template v-for="(item, index) in detail.detailMap" :key="index"> <template v-for="(item, index) in detail.detailMap" :key="index">
<h4>{{ index }}次下单</h4> <h4>{{ index }}次下单</h4>
<el-table <el-table :data="item" :ref="'refTable' + index" @select-all="tableSelectAll($event, index)">
:data="item"
:ref="'refTable' + index"
@select-all="tableSelectAll($event, index)"
>
<!-- <el-table-column type="selection" width="55" /> --> <!-- <el-table-column type="selection" width="55" /> -->
<el-table-column label="数量" type="selection"> <el-table-column label="数量" type="selection">
<template v-slot="scope"> <template v-slot="scope">
<div v-if="detail.status == 'unpaid'"> <div v-if="detail.status == 'unpaid'">
<el-checkbox <el-checkbox v-if="scope.row.num - scope.row.returnNum > 0" v-model="scope.row.checked" />
v-if="scope.row.num - scope.row.returnNum > 0"
v-model="scope.row.checked"
/>
</div> </div>
<div v-else> <div v-else>
<el-checkbox <el-checkbox v-if="scope.row.num - scope.row.refundNum > 0" v-model="scope.row.checked" />
v-if="scope.row.num - scope.row.refundNum > 0"
v-model="scope.row.checked"
/>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="商品" width="150"> <el-table-column label="商品" width="150">
<template v-slot="scope"> <template v-slot="scope">
<div class="shop_info"> <div class="shop_info">
<el-image <el-image :src="scope.row.productImg" style="width: 40px; height: 40px"></el-image>
:src="scope.row.productImg"
style="width: 40px; height: 40px"
></el-image>
<div class="info"> <div class="info">
<span :class="[scope.row.isVip == 1 ? 'colorStyle' : '']"> <span :class="[scope.row.isVip == 1 ? 'colorStyle' : '']">
{{ scope.row.productName }} {{ scope.row.productName }}
@@ -191,32 +173,17 @@
<el-table-column label="实付"> <el-table-column label="实付">
<template v-slot="scope">{{ scope.row.payAmount }}</template> <template v-slot="scope">{{ scope.row.payAmount }}</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column v-if="detail.status == 'unpaid'" label="可退菜数量" align="center" width="130px">
v-if="detail.status == 'unpaid'"
label="可退菜数量"
align="center"
width="130px"
>
<template v-slot="scope"> <template v-slot="scope">
<el-input-number <el-input-number v-if="scope.row.checked" :min="0" style="width: 100px" v-model="scope.row.selNumber"
v-if="scope.row.checked" :max="scope.row.num - scope.row.returnNum"></el-input-number>
:min="0"
style="width: 100px"
v-model="scope.row.selNumber"
:max="scope.row.num - scope.row.returnNum"
></el-input-number>
<span class="" v-else>{{ scope.row.num - scope.row.returnNum }}</span> <span class="" v-else>{{ scope.row.num - scope.row.returnNum }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column v-else label="可退款数量" align="center" width="130px"> <el-table-column v-else label="可退款数量" align="center" width="130px">
<template v-slot="scope"> <template v-slot="scope">
<el-input-number <el-input-number v-if="scope.row.checked" :min="0" style="width: 100px" v-model="scope.row.selNumber"
v-if="scope.row.checked" :max="scope.row.num - scope.row.refundNum - scope.row.returnNum"></el-input-number>
:min="0"
style="width: 100px"
v-model="scope.row.selNumber"
:max="scope.row.num - scope.row.refundNum - scope.row.returnNum"
></el-input-number>
<span class="" v-else> <span class="" v-else>
{{ scope.row.num - scope.row.refundNum - scope.row.returnNum }} {{ scope.row.num - scope.row.refundNum - scope.row.returnNum }}
</span> </span>
@@ -231,23 +198,13 @@
<el-table-column label="操作" fixed="right"> <el-table-column label="操作" fixed="right">
<template v-slot="scope"> <template v-slot="scope">
<template v-if="detail.status != 'unpaid'"> <template v-if="detail.status != 'unpaid'">
<el-button <el-button v-if="canTuikuan(scope.row)" link size="small" @click="tuikuan(scope.row)">
v-if="canTuikuan(scope.row)"
link
size="small"
@click="tuikuan(scope.row)"
>
<span>退款</span> <span>退款</span>
</el-button> </el-button>
<span class="color-999" v-if="scope.row.status == 'refund'">已退款</span> <span class="color-999" v-if="scope.row.status == 'refund'">已退款</span>
</template> </template>
<template v-if="detail.status == 'unpaid'"> <template v-if="detail.status == 'unpaid'">
<el-button <el-button v-if="canTuicai(scope.row)" link size="small" @click="tuicai(scope.row)">
v-if="canTuicai(scope.row)"
link
size="small"
@click="tuicai(scope.row)"
>
<span>退菜</span> <span>退菜</span>
</el-button> </el-button>
<span class="color-999" v-else>已退菜</span> <span class="color-999" v-else>已退菜</span>
@@ -257,41 +214,25 @@
</el-table> </el-table>
</template> </template>
<!-- 退款 --> <!-- 退款 -->
<div <div class="u-p-20 u-flex u-row-right" v-if="
class="u-p-20 u-flex u-row-right" detail.status !== 'refund' &&
v-if=" detail.status !== 'unpaid' &&
detail.status !== 'refund' && detail.status !== 'cancelled'
detail.status !== 'unpaid' && ">
detail.status !== 'cancelled' <el-checkbox v-model="allSelected" @change="allSelectedChange" label="全选"></el-checkbox>
"
>
<el-checkbox
v-model="allSelected"
@change="allSelectedChange"
label="全选"
></el-checkbox>
<el-button type="danger" class="u-m-l-20" @click.stop="tuikuan('all')">退款</el-button> <el-button type="danger" class="u-m-l-20" @click.stop="tuikuan('all')">退款</el-button>
</div> </div>
<!-- 退菜 --> <!-- 退菜 -->
<div class="u-p-20 u-flex u-row-right" v-if="detail.status == 'unpaid'"> <div class="u-p-20 u-flex u-row-right" v-if="detail.status == 'unpaid'">
<el-checkbox <el-checkbox v-model="allSelected" @change="allSelectedChange" label="全选"></el-checkbox>
v-model="allSelected"
@change="allSelectedChange"
label="全选"
></el-checkbox>
<el-button type="danger" class="u-m-l-20" @click.stop="tuicai('all')">退菜</el-button> <el-button type="danger" class="u-m-l-20" @click.stop="tuicai('all')">退菜</el-button>
</div> </div>
</div> </div>
</div> </div>
</el-drawer> </el-drawer>
<!-- 退款 --> <!-- 退款 -->
<return-money <return-money :modal="false" ref="refReturnMoney" :max="selGoods.num" :goods="selGoods"
:modal="false" @confirm="refReturnMoneyConfirm"></return-money>
ref="refReturnMoney"
:max="selGoods.num"
:goods="selGoods"
@confirm="refReturnMoneyConfirm"
></return-money>
<!-- 退菜 --> <!-- 退菜 -->
<order-return-cart ref="refReturnCart" @confirm="refReturnCartConfirm"></order-return-cart> <order-return-cart ref="refReturnCart" @confirm="refReturnCartConfirm"></order-return-cart>
</div> </div>
@@ -466,6 +407,12 @@ export default {
}, },
tuikuan(item) { tuikuan(item) {
if (!item) { if (!item) {
let arrs = []
for (let i in this.detail.detailMap) {
this.detail.detailMap[i].map((v) => {
arrs.push(v);
});
}
this.$refs.refReturnMoney.open([], this.detail); this.$refs.refReturnMoney.open([], this.detail);
return; return;
} }
@@ -484,6 +431,10 @@ export default {
if (arr.length == 0) { if (arr.length == 0) {
return ElMessage.error("请选择要退款的商品和数量"); return ElMessage.error("请选择要退款的商品和数量");
} }
console.log('tuikuan===', arr);
return
this.$refs.refReturnMoney.open(arr, this.detail); this.$refs.refReturnMoney.open(arr, this.detail);
}, },
tuicai(item) { tuicai(item) {
@@ -502,7 +453,7 @@ export default {
if (arr.length == 0) { if (arr.length == 0) {
return ElMessage.error("请选择要退菜的商品和数量"); return ElMessage.error("请选择要退菜的商品和数量");
} }
console.log(arr); console.log('tuicai===', arr);
this.$refs.refReturnCart.open(arr, this.detail); this.$refs.refReturnCart.open(arr, this.detail);
}, },

View File

@@ -8,13 +8,18 @@
// adminIn 管理员充值 // adminIn 管理员充值
// adminOut管理员消费 // adminOut管理员消费
export const $bizCode = { export const $bizCode = {
cashIn: "现金充值", cashIn: "会员充值",
cashback: "消费返现",
cashback_refund: "消费返现扣减",
freeIn: "霸王餐充值",
awardIn: "充值奖励",
wechatIn: "微信小程序充值", wechatIn: "微信小程序充值",
alipayIn: "支付宝小程序充值", alipayIn: "支付宝小程序充值",
awardIn: "充值奖励", orderPay: "订单支付奖励",
rechargeRefund: "充值退款",
orderPay: "订单消费",
orderRefund: "订单退款", orderRefund: "订单退款",
adminIn: "管理员充值", rechargeRefund: "充值退款",
adminOut: "管理员消费", rechargeCashRefund: "会员现金退款",
adminIn: "管理员手动增减余额",
adminOut: "管理员退款充值",
rechargeRedemption: "充值兑换码"
} }