update: 待出货接口对接

This commit is contained in:
admin 2024-03-11 13:30:11 +08:00
parent 2df6a8b456
commit 5780a0a2f1
54 changed files with 1916 additions and 390 deletions

View File

@ -12,7 +12,7 @@
<script setup lang="ts"> <script setup lang="ts">
const getDetail = () => { const getDetail = () => {
uni.navigateTo({ uni.navigateTo({
url: "/pages/statistics/customer/detail", // url: "/pagesStatistics/customer/detail", //
}); });
} }
</script> </script>

View File

@ -25,7 +25,7 @@ const list = reactive([
]); ]);
const getDetail = (item: any) => { const getDetail = (item: any) => {
uni.navigateTo({ uni.navigateTo({
url: "/pages/statistics/customer/billDetail", // url: "/pagesStatistics/customer/billDetail", //
}); });
}; };
</script> </script>

View File

@ -31,7 +31,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import CEcharts from "../../components/Echarts/echarts.vue"; import CEcharts from "@/components/Echarts/echarts.vue";
import ProductTypeDialog from './components/ProductTypeDialog.vue' import ProductTypeDialog from './components/ProductTypeDialog.vue'
const option = ref({ const option = ref({
tooltip: { tooltip: {

View File

@ -23,8 +23,8 @@
</Box> </Box>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import Box from "../../components/Box/index.vue"; import Box from "@/components/Box/index.vue";
import Title from "../../components/Title/index.vue"; import Title from "@/components/Title/index.vue";
const list = reactive([ const list = reactive([
{ {
title: "收货", title: "收货",
@ -36,7 +36,7 @@ const list = reactive([
title: "收货汇总", title: "收货汇总",
fn: (item: any) => { fn: (item: any) => {
uni.navigateTo({ uni.navigateTo({
url: "/pages/statistics/receivePanel", // url: "/pagesStatistics/receivePanel", //
}) })
} }
}, },
@ -47,7 +47,7 @@ const list = reactive([
title: "供应商排行", title: "供应商排行",
fn: (item: any) => { fn: (item: any) => {
uni.navigateTo({ uni.navigateTo({
url: "/pages/statistics/supplierRanking", // url: "/pagesStatistics/supplierRanking", //
}) })
} }
@ -64,7 +64,7 @@ const list = reactive([
title: "出货汇总", title: "出货汇总",
fn: (item: any) => { fn: (item: any) => {
uni.navigateTo({ uni.navigateTo({
url: "/pages/statistics/shipmentPanel", // url: "/pagesStatistics/shipmentPanel", //
}) })
} }
}, },
@ -75,7 +75,7 @@ const list = reactive([
title: "客户排行", title: "客户排行",
fn: (item: any) => { fn: (item: any) => {
uni.navigateTo({ uni.navigateTo({
url: "/pages/statistics/customerRanking", // url: "/pagesStatistics/customerRanking", //
}) })
} }
}, },
@ -91,7 +91,7 @@ const list = reactive([
title: "经营概况", title: "经营概况",
fn: (item: any) => { fn: (item: any) => {
uni.navigateTo({ uni.navigateTo({
url: "/pages/statistics/businessOverview", // url: "/pagesStatistics/businessOverview", //
}) })
} }
}, },
@ -102,7 +102,7 @@ const list = reactive([
title: "供应商对账", title: "供应商对账",
fn: (item: any) => { fn: (item: any) => {
uni.navigateTo({ uni.navigateTo({
url: "/pages/statistics/supplierChecking", // url: "/pagesStatistics/supplierChecking", //
}) })
} }
}, },
@ -113,7 +113,7 @@ const list = reactive([
title: "客户对账", title: "客户对账",
fn: (item: any) => { fn: (item: any) => {
uni.navigateTo({ uni.navigateTo({
url: "/pages/statistics/customerChecking", // url: "/pagesStatistics/customerChecking", //
}) })
} }
}, },

View File

@ -12,7 +12,7 @@
<script setup lang="ts"> <script setup lang="ts">
const getDetail = () => { const getDetail = () => {
uni.navigateTo({ uni.navigateTo({
url: "/pages/statistics/supplier/detail", // url: "/pagesStatistics/supplier/detail", //
}); });
} }
</script> </script>

View File

@ -25,7 +25,7 @@ const list = reactive([
]); ]);
const getDetail = (item: any) => { const getDetail = (item: any) => {
uni.navigateTo({ uni.navigateTo({
url: "/pages/statistics/supplier/billDetail", // url: "/pagesStatistics/supplier/billDetail", //
}); });
}; };
</script> </script>

View File

@ -31,7 +31,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import CEcharts from "../../components/Echarts/echarts.vue"; import CEcharts from "@/components/Echarts/echarts.vue";
import ProductTypeDialog from './components/ProductTypeDialog.vue' import ProductTypeDialog from './components/ProductTypeDialog.vue'
const option = ref({ const option = ref({
tooltip: { tooltip: {

View File

@ -19,13 +19,6 @@
"navigationBarTitleText": "工作台" "navigationBarTitleText": "工作台"
} }
}, },
{
"path": "pages/launch/index",
"style": {
"navigationBarTitleText": ""
}
},
// { // {
// "path": "pages/index/index", // "path": "pages/index/index",
// "style": { // "style": {
@ -33,12 +26,6 @@
// "navigationBarTitleText": "工作台" // "navigationBarTitleText": "工作台"
// } // }
// }, // },
{
"path": "pages/index/grossWeight",
"style": {
"navigationBarTitleText": "待过毛重"
}
},
{ {
"path": "pages/index/shipmentSettlement", "path": "pages/index/shipmentSettlement",
"style": { "style": {
@ -88,130 +75,21 @@
"navigationBarTitleText": "修改密码", "navigationBarTitleText": "修改密码",
"navigationBarBackgroundColor": "#FFFFFF" "navigationBarBackgroundColor": "#FFFFFF"
} }
},
{
"path": "pages/statistics/index",
"style": {
"navigationBarTitleText": "数据统计"
}
},
{
"path": "pages/statistics/receivePanel",
"style": {
"navigationBarTitleText": "收货汇总"
}
},
{
"path": "pages/statistics/supplierRanking",
"style": {
"navigationBarTitleText": "供应商排行"
}
},
{
"path": "pages/statistics/shipmentPanel",
"style": {
"navigationBarTitleText": "出货汇总"
}
},
{
"path": "pages/statistics/customerRanking",
"style": {
"navigationBarTitleText": "客户排行"
}
},
{
"path": "pages/statistics/businessOverview",
"style": {
"navigationBarTitleText": "经营概况"
}
},
{
"path": "pages/statistics/supplierChecking",
"style": {
"navigationBarTitleText": "供应商对账"
}
},
{
"path": "pages/statistics/customerChecking",
"style": {
"navigationBarTitleText": "客户对账"
}
},
{
"path": "pages/statistics/supplier/billDetail",
"style": {
"navigationBarTitleText": "供应商账单详情"
}
},
{
"path": "pages/statistics/supplier/detail",
"style": {
"navigationBarTitleText": "供应商详情"
}
},
{
"path": "pages/statistics/customer/billDetail",
"style": {
"navigationBarTitleText": "客户账单详情"
}
},
{
"path": "pages/statistics/customer/detail",
"style": {
"navigationBarTitleText": "客户详情"
}
},
{
"path": "pages/app/receiveSpl",
"style": {
"navigationBarTitleText": "收货补单"
}
},
{
"path": "pages/app/shipmentSpl",
"style": {
"navigationBarTitleText": "出货补单"
}
},
{
"path": "pages/app/receiveDetail",
"style": {
"navigationBarTitleText": "收货明细"
}
},
{
"path": "pages/app/shipmentDetail",
"style": {
"navigationBarTitleText": "出货明细"
}
},
{
"path": "pages/app/receiveCl",
"style": {
"navigationBarTitleText": "收货作废"
}
},
{
"path": "pages/app/shipmentCl",
"style": {
"navigationBarTitleText": "出货作废"
}
},
{
"path": "pages/app/supplierMgt",
"style": {
"navigationBarTitleText": "供应商管理"
}
},
{
"path": "pages/app/customerMgt",
"style": {
"navigationBarTitleText": "客户管理"
}
} }
//pageshttps://uniapp.dcloud.io/collocation/pages //pageshttps://uniapp.dcloud.io/collocation/pages
], ],
"subPackages": [ "subPackages": [
{
"root": "pagesLaunch",
"pages": [
{
"path": "index",
"style": {
"navigationBarTitleText": ""
}
}
]
},
{ {
"root": "pagesReceive", "root": "pagesReceive",
"pages": [ "pages": [
@ -246,7 +124,7 @@
} }
} }
] ]
}, },
{ {
"root": "pagesShipment", "root": "pagesShipment",
"pages": [ "pages": [
@ -256,15 +134,39 @@
"navigationBarTitleText": "待出货" "navigationBarTitleText": "待出货"
} }
}, },
{
"path": "grossWeight",
"style": {
"navigationBarTitleText": "待过毛重"
}
},
{
"path": "shipmentSettlement",
"style": {
"navigationBarTitleText": "出货结算"
}
},
{
"path": "review/index",
"style": {
"navigationBarTitleText": "结算审核"
}
},
{ {
"path": "form/shipmentForm", "path": "form/shipmentForm",
"style": { "style": {
"navigationBarTitleText": "待出货编辑" "navigationBarTitleText": "待出货编辑"
} }
},
{
"path": "form/settlementForm",
"style": {
"navigationBarTitleText": "结算信息"
}
} }
] ]
},
},{ {
"root": "pagesScenePhoto", "root": "pagesScenePhoto",
"pages": [ "pages": [
{ {
@ -274,8 +176,148 @@
} }
} }
] ]
},
} {
"root": "pagesStatistics",
"pages": [
{
"path": "index",
"style": {
"navigationBarTitleText": "数据统计"
}
},
{
"path": "receivePanel",
"style": {
"navigationBarTitleText": "收货汇总"
}
},
{
"path": "supplierRanking",
"style": {
"navigationBarTitleText": "供应商排行"
}
},
{
"path": "shipmentPanel",
"style": {
"navigationBarTitleText": "出货汇总"
}
},
{
"path": "customerRanking",
"style": {
"navigationBarTitleText": "客户排行"
}
},
{
"path": "businessOverview",
"style": {
"navigationBarTitleText": "经营概况"
}
},
{
"path": "supplierChecking",
"style": {
"navigationBarTitleText": "供应商对账"
}
},
{
"path": "customerChecking",
"style": {
"navigationBarTitleText": "客户对账"
}
},
{
"path": "supplier/billDetail",
"style": {
"navigationBarTitleText": "供应商账单详情"
}
},
{
"path": "supplier/detail",
"style": {
"navigationBarTitleText": "供应商详情"
}
},
{
"path": "customer/billDetail",
"style": {
"navigationBarTitleText": "客户账单详情"
}
},
{
"path": "customer/detail",
"style": {
"navigationBarTitleText": "客户详情"
}
}
]
},
{
"root": "pagesApp",
"pages": [
{
"path": "receiveSpl",
"style": {
"navigationBarTitleText": "收货补单"
}
},
{
"path": "shipmentSpl",
"style": {
"navigationBarTitleText": "出货补单"
}
},
{
"path": "receiveDetail",
"style": {
"navigationBarTitleText": "收货明细"
}
},
{
"path": "shipmentDetail",
"style": {
"navigationBarTitleText": "出货明细"
}
},
{
"path": "receiveCl",
"style": {
"navigationBarTitleText": "收货作废"
}
},
{
"path": "shipmentCl",
"style": {
"navigationBarTitleText": "出货作废"
}
},
{
"path": "supplierMgt",
"style": {
"navigationBarTitleText": "供应商管理"
}
},
{
"path": "customerMgt",
"style": {
"navigationBarTitleText": "客户管理"
}
}
]
},
// {
// "root": "uni_modules",
// "pages": [
// {
// "path": "lime-echart/components/l-echart/l-echart",
// "style": {
// "navigationBarTitleText": "echart"
// }
// }
// ]
// }
], ],
"globalStyle": { "globalStyle": {
"navigationBarTextStyle": "black", "navigationBarTextStyle": "black",

View File

@ -1,100 +0,0 @@
<template>
<view class="card-box">
<view class="top-flex-box">
<view>
<view>
<text class="address">上海奉贤两网融合</text>
</view>
<view>
<text class="number">收货单号SHD20230901132333</text>
</view>
<view>
<text class="name">陡其成</text>
</view>
</view>
<view>
<text class="btn" @click="handleScenePhoto">现场照片</text>
</view>
</view>
<view>
<text class="desc">毛重时间2023-09-01 13:23:33</text>
</view>
<view class="flex-box">
<text>皮重2510kg</text>
</view>
<view class="btn-box">
<u-button
text="点击作废"
color="#E8E8E8"
:customStyle="{ color: '#999' }"
></u-button>
<u-button type="primary" text="点击编辑"></u-button>
</view>
</view>
</template>
<script setup lang="ts">
const handleScenePhoto = () => {
uni.navigateTo({
url: "/pagesScenePhoto/index", //
});
};
</script>
<style lang="scss" scoped>
.card-box {
padding: 38rpx 50rpx;
box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(5, 68, 37, 0.12);
border-radius: 13rpx;
margin: 0rpx 25rpx;
margin-top: 35rpx;
font-family: Source Han Sans CN;
font-weight: 400;
font-size: 26rpx;
color: #000000;
line-height: 41rpx;
.top-flex-box {
display: flex;
justify-content: space-between;
align-items: center;
line-height: 50rpx;
.btn {
border-radius: 24rpx;
border: 1px solid #00dcee;
padding: 10rpx 25rpx;
font-weight: 500;
font-size: 24rpx;
color: #00dcee;
line-height: 41rpx;
display: inline-block;
}
}
.desc {
font-size: 24rpx;
color: #999999;
margin-top: 30rpx;
display: inline-block;
}
.name {
font-size: 28rpx;
color: #000000;
font-weight: bold;
}
.flex-box {
font-weight: 400;
font-size: 28rpx;
color: #000000;
display: flex;
align-items: center;
justify-content: space-between;
}
.btn-box {
margin-top: 60rpx;
display: flex;
::v-deep button {
border-radius: 43rpx;
}
::v-deep button + button {
margin-left: 50rpx;
}
}
}
</style>

View File

@ -259,7 +259,7 @@ const shipmentList = reactive([
num: 0, num: 0,
fn: () => { fn: () => {
uni.navigateTo({ uni.navigateTo({
url: "/pages/index/grossWeight", // url: "/pagesShipment/grossWeight", //
}); });
}, },
}, },
@ -268,7 +268,7 @@ const shipmentList = reactive([
num: 0, num: 0,
fn: () => { fn: () => {
uni.navigateTo({ uni.navigateTo({
url: "/pagesReceive/payReview", // url: "/pagesShipment/shipmentSettlement?scaleStatus=2", //
}); });
}, },
}, },
@ -277,7 +277,7 @@ const shipmentList = reactive([
num: 0, num: 0,
fn: () => { fn: () => {
uni.navigateTo({ uni.navigateTo({
url: "/pagesReceive/payReview", // url: "/pagesShipment/shipmentSettlement?scaleStatus=3", //
}); });
}, },
}, },
@ -289,7 +289,7 @@ const appList = reactive([
title: "收货补单", title: "收货补单",
fn: () => { fn: () => {
uni.navigateTo({ uni.navigateTo({
url: "/pages/app/receiveSpl", // url: "/pagesApp/receiveSpl", //
}); });
}, },
}, },
@ -298,7 +298,7 @@ const appList = reactive([
title: "出货补单", title: "出货补单",
fn: () => { fn: () => {
uni.navigateTo({ uni.navigateTo({
url: "/pages/app/shipmentSpl", // url: "/pagesApp/shipmentSpl", //
}); });
}, },
}, },
@ -307,7 +307,7 @@ const appList = reactive([
title: "收货明细", title: "收货明细",
fn: () => { fn: () => {
uni.navigateTo({ uni.navigateTo({
url: "/pages/app/receiveDetail", // url: "/pagesApp/receiveDetail", //
}); });
}, },
}, },
@ -316,7 +316,7 @@ const appList = reactive([
title: "出货明细", title: "出货明细",
fn: () => { fn: () => {
uni.navigateTo({ uni.navigateTo({
url: "/pages/app/shipmentDetail", // url: "/pagesApp/shipmentDetail", //
}); });
}, },
}, },
@ -325,7 +325,7 @@ const appList = reactive([
title: "收货作废", title: "收货作废",
fn: () => { fn: () => {
uni.navigateTo({ uni.navigateTo({
url: "/pages/app/receiveCl", // url: "/pagesApp/receiveCl", //
}); });
}, },
}, },
@ -334,7 +334,7 @@ const appList = reactive([
title: "出货作废", title: "出货作废",
fn: () => { fn: () => {
uni.navigateTo({ uni.navigateTo({
url: "/pages/app/shipmentCl", // url: "/pagesApp/shipmentCl", //
}); });
}, },
}, },
@ -343,7 +343,7 @@ const appList = reactive([
title: "供应商管理", title: "供应商管理",
fn: () => { fn: () => {
uni.navigateTo({ uni.navigateTo({
url: "/pages/app/supplierMgt", // url: "/pagesApp/supplierMgt", //
}); });
}, },
}, },
@ -352,7 +352,7 @@ const appList = reactive([
title: "客户管理", title: "客户管理",
fn: () => { fn: () => {
uni.navigateTo({ uni.navigateTo({
url: "/pages/app/customerMgt", // url: "/pagesApp/customerMgt", //
}); });
}, },
}, },
@ -364,7 +364,7 @@ const tabMenuList = reactive([
title: "统计", title: "统计",
fn: () => { fn: () => {
uni.navigateTo({ uni.navigateTo({
url: "/pages/statistics/index", // url: "/pagesStatistics/index", //
}); });
}, },
}, },

View File

@ -10,7 +10,7 @@
> >
<swiper-item v-for="(item, index) in list" :key="index"> <swiper-item v-for="(item, index) in list" :key="index">
<view class="image-box"> <view class="image-box">
<image :src="`/static/img/launch/${item.imgUrl}`"></image> <image :src="`./static/${item.imgUrl}`"></image>
<view class="title"> <view class="title">
{{ item.title }} {{ item.title }}
</view> </view>

View File

Before

Width:  |  Height:  |  Size: 270 KiB

After

Width:  |  Height:  |  Size: 270 KiB

View File

Before

Width:  |  Height:  |  Size: 237 KiB

After

Width:  |  Height:  |  Size: 237 KiB

View File

Before

Width:  |  Height:  |  Size: 277 KiB

After

Width:  |  Height:  |  Size: 277 KiB

View File

Before

Width:  |  Height:  |  Size: 89 KiB

After

Width:  |  Height:  |  Size: 89 KiB

View File

@ -0,0 +1,318 @@
<template>
<view class="c-card">
<u-form
labelPosition="left"
:model="model1"
:rules="rules"
ref="form"
:labelWidth="80"
:labelStyle="{ padding: '0rpx 10rpx' }"
>
<u-form-item
:prop="`order[${item.key}]`"
:label="item.name"
:required="item.required"
v-for="(item, index) in formAttrList"
:key="index"
@click="item.fn"
>
<u-textarea
v-if="item.type === 'textarea'"
v-model="(model1.order as any)[(item.key as any)]"
:placeholder="`请输入${item.name}`"
></u-textarea>
<u-input
v-if="item.type === 'select' || item.type === 'input'"
v-model="(model1.order as any)[(item.key as any)]"
:placeholder="`${item.type === 'select' ? '选择' : '输入'}${
item.name
}`"
:clearable="true"
:customStyle="{}"
border="none"
>
<template #suffix>
{{ item.unit }}
</template>
</u-input>
<!-- @afterRead="afterRead"
@delete="deletePic" -->
<!-- <u-upload
v-if="item.type === 'upload'"
:fileList="[]"
name="1"
multiple
:maxCount="10"
></u-upload> -->
<uni-file-picker
v-if="item.type === 'upload'"
v-model="model1.order.fileList"
limit="10"
title="最多可上传10张图片"
:auto-upload="false"
fileMediatype="image"
mode="grid"
ref="filesShipmentRef"
></uni-file-picker>
<u-radio-group
v-if="item.type === 'radio'"
v-model="(model1.order as any)[(item.key as any)]"
placement="row"
>
<u-radio activeColor="#00DCEE" label="送货" :name="0"></u-radio>
&nbsp;&nbsp;&nbsp;
<u-radio activeColor="#00DCEE" label="自提" :name="1"></u-radio>
</u-radio-group>
<template #right v-if="item.type === 'select'">
<u-icon name="arrow-right"></u-icon>
</template>
</u-form-item>
</u-form>
<u-action-sheet
:actions="contrlModalParams.select.selectList"
:title="contrlModalParams.select.title"
:show="contrlModalParams.select.isShow"
@select="contrlModalParams.select.isShow = false"
@close="contrlModalParams.select.isShow = false"
></u-action-sheet>
</view>
<view class="btn-box">
<u-button type="primary" text="保存" @click="save()"></u-button>
</view>
</template>
<script setup lang="ts">
import { PictureApi, ShipmentApi } from "@/services";
import { ImagesType, OrderType, ScaleStatus } from "@/utils/enum";
import { onLoad } from "@dcloudio/uni-app";
const model1 = reactive<Shipment>({
order: {
id: 0,
splTime: "",
takeType: 1,
fileList: [],
},
});
const rules = ref({
"userInfo.userName": {
type: "string",
required: true,
message: "请输入手机号",
trigger: ["blur", "change"],
},
"userInfo.password": {
type: "string",
required: true,
message: "请输入密码",
trigger: ["blur", "change"],
},
});
const contrlModalParams = reactive({
select: {
isShow: false,
title: "标题",
selectList: [
{
name: "选项一",
},
{
name: "选项二",
},
],
},
});
const formAttrList = reactive([
{
name: "客户",
key: "userId",
type: "select",
required: true,
unit: "",
fn: () => {
contrlModalParams.select.isShow = true;
contrlModalParams.select.title = "客户";
},
},
{
name: "出货产品",
key: "productId",
type: "select",
required: true,
unit: "",
fn: () => {
contrlModalParams.select.isShow = true;
contrlModalParams.select.title = "出货产品";
},
},
{
name: "数量",
key: "number",
type: "input",
required: true,
unit: "件",
},
{
name: "毛重",
key: "grossWeight",
type: "input",
required: true,
unit: "KG",
},
{
name: "提货方式",
key: "deliveryMethod",
required: true,
type: "radio",
},
{
name: "车辆信息",
type: "text",
},
{
name: "车牌号",
key: "carNumber",
type: "input",
unit: "",
},
{
name: "司机电话",
key: "phone",
type: "input",
unit: "",
},
{
name: "集装箱",
type: "text",
},
{
name: "箱号",
key: "box",
type: "input",
unit: "",
},
{
name: "封号",
key: "title",
type: "input",
unit: "",
},
{
name: "备注",
key: "notes",
type: "textarea",
},
{
name: "上传照片",
key: "photo",
type: "upload",
},
]);
const filesShipmentRef = ref();
const handleUpload = () => {
// console.log(event.tempFilePaths)
const list = filesShipmentRef.value[0].filesList;
return list.map((item: any) => {
return new Promise((resolve) => {
PictureApi.upload({
files: item,
path: item.path,
}).then((res) => {
if (res.code === 200) {
resolve({
...(res.data as any),
businessId: model1.order.id,
imagesType: ImagesType.NORMARL, //
orderType: OrderType.Shipment, //
});
}
});
});
});
};
/**
* 点击保存 先执行upload接口
* 上传成功后 保存图片资源 和更新订单数据
*/
const save = () => {
Promise.all(handleUpload()).then((res) => {
//
if (res.length > 0) {
PictureApi.addListAnnex({ annexPos: res }).then((res1) => {
if (res1.code === 200) {
uni.showToast({
title: "图片资源上传成功",
icon: "success",
});
}
});
}
});
//
ShipmentApi.updateOrderIn({
orderOutPos: [
{ ...model1.order, scaleStatus: ScaleStatus.ToBeGrossWeight },
],
}).then((res) => {
if (res.code === 200) {
uni.showToast({
title: "编辑成功",
icon: "success",
});
uni.navigateTo({
url: "/pagesShipment/grossWeight", //
});
}
});
};
onLoad((option) => {
model1.order.id = (option as any).id;
if (model1.order.id) {
ShipmentApi.getDetailById({ id: model1.order.id }).then((res) => {
if (res.code === 200) {
model1.order = res.data;
}
});
PictureApi.getAnnex({
businessId: model1.order.id,
orderType: 1,
imagesType: ImagesType.NORMARL,
}).then((res) => {
if (res.code === 200) {
}
});
}
});
</script>
<style lang="scss" scoped>
.c-card {
background: #ffffff;
// box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(5, 68, 37, 0.12);
border-radius: 13rpx;
margin: 30rpx 25rpx;
padding: 10rpx 20rpx;
::v-deep .u-form-item {
height: auto;
}
::v-deep .u-form-item + .u-form-item {
border-top: 1rpx solid rgba(233, 233, 233, 0.76);
}
}
.btn-box {
margin-top: 60rpx;
display: flex;
background: #ffffff;
box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(0, 56, 93, 0.12);
border-radius: 13rpx 13rpx 0rpx 0rpx;
padding: 25rpx 50rpx;
position: sticky;
bottom: 0rpx;
z-index: 999;
::v-deep button {
border-radius: 43rpx;
}
}
</style>

View File

@ -199,7 +199,7 @@ const formAttrList = reactive([
}, },
{ {
name: "备注", name: "备注",
key: "remark", key: "notes",
type: "textarea", type: "textarea",
}, },
{ {

View File

@ -0,0 +1,165 @@
<template>
<view class="card-box" v-for="(item, index) in pageList.list" :key="index">
<view class="top-flex-box">
<view>
<view>
<text class="address">{{ item.deviceName || "-" }}</text>
</view>
<view>
<text class="number">出货单号{{ item.orderNumber }}</text>
</view>
<view>
<text class="name">{{ item.cardId }}</text>
</view>
</view>
<view>
<text class="btn" @click="handleScenePhoto((item.imagesId as number))"
>现场照片</text
>
</view>
</view>
<view>
<text class="desc">过磅时间{{ item.grossTime || '-' }}</text>
</view>
<view class="flex-box">
<text>皮重{{ item.tare }}kg</text>
</view>
<view class="btn-box">
<u-button
text="点击作废"
color="#E8E8E8"
:customStyle="{ color: '#999' }"
@click="handleModal(true, (item.id as any))"
></u-button>
<u-button
type="primary"
text="点击编辑"
@click="pricingDetail((item.id as any))"
></u-button>
</view>
</view>
<SmallModal
:title="'确认作废吗?'"
:content="'确认作废后,该订单不能恢复!'"
:okText="'确认作废'"
:isMain="true"
:show="isShowCancelModal"
@handleModal="(v:boolean) => {handleModal(v, deleteId)}"
@handleOk="handleOk()"
/>
</template>
<script setup lang="ts">
import { ShipmentApi } from "@/services/index";
import SmallModal from "@/components/Modal/smallModal.vue";
interface PageResult<T> {
total: number;
list: T[];
pageNum: number;
pageSize: number;
}
const pageList: PageResult<Shipment> = reactive({
total: 0,
list: [],
pageNum: 1,
pageSize: 10,
});
const isShowCancelModal = ref(false);
const deleteId = ref(0);
const handleModal = (v: boolean, id: number) => {
isShowCancelModal.value = v;
deleteId.value = id;
};
const handleScenePhoto = (imagesId: number) => {
uni.navigateTo({
url: "/pagesScenePhoto/index?orderType=2&id=" + imagesId, //
});
};
const pricingDetail = (id: string) => {
uni.navigateTo({
url: "/pagesShipment/form/shipmentForm?id=" + id, //
});
};
const getOrderList = () => {
ShipmentApi.getOrderPage({ pageNumber: 1, pageSize: 10, scaleStatus: 1 }).then((res) => {
if (res.code === 200) {
(pageList as any).list = res.data.list;
}
});
};
const handleOk = () => {
console.log(deleteId.value);
ShipmentApi.deleteOrder({ids:[deleteId.value]}).then((res) => {
if (res.code === 200) {
getOrderList();
}
});
};
onMounted(() => {
getOrderList();
});
</script>
<style lang="scss" scoped>
.card-box {
padding: 38rpx 50rpx;
box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(5, 68, 37, 0.12);
border-radius: 13rpx;
margin: 0rpx 25rpx;
margin-top: 35rpx;
font-family: Source Han Sans CN;
font-weight: 400;
font-size: 26rpx;
color: #000000;
line-height: 41rpx;
.top-flex-box {
display: flex;
justify-content: space-between;
align-items: center;
.btn {
border-radius: 24rpx;
border: 1px solid #00dcee;
padding: 10rpx 30rpx;
font-weight: 500;
font-size: 24rpx;
color: #00dcee;
line-height: 41rpx;
cursor: pointer;
}
}
.address {
margin-right: 30rpx;
}
.desc {
font-size: 24rpx;
color: #999999;
margin-top: 30rpx;
display: inline-block;
}
.name {
font-size: 26rpx;
color: #000000;
font-weight: bold;
}
.flex-box {
font-weight: 400;
font-size: 26rpx;
color: #000000;
line-height: 41rpx;
display: flex;
align-items: center;
justify-content: space-between;
}
.btn-box {
margin-top: 60rpx;
display: flex;
::v-deep button {
border-radius: 43rpx;
}
::v-deep button + button {
margin-left: 50rpx;
}
}
}
</style>

View File

@ -0,0 +1,514 @@
<template>
<view class="c-card">
<view class="box">
<view class="base">
<view>
<view class="supplier"> {{ state.order.deviceName || "-" }} </view>
</view>
</view>
<view class="flex-box1">
<view class="type">{{ state.order.productName || "" }}</view>
<view class="btn">
<view
><u-tag
text="现场照片"
plain
shape="circle"
:bgColor="'rgba(237, 254, 255, 1)'"
@click="handleScenePhoto(state.order.imagesId as number)"
></u-tag
></view>
<view
><u-tag
text="收货单作废"
plain
shape="circle"
:borderColor="'rgba(255, 147, 68, 1) !important'"
:bgColor="'rgba(255, 240, 229, 1)'"
:color="'rgba(255, 157, 85, 1) !important'"
@click="handleModal(true, state.order.id as string)"
></u-tag
></view>
<!-- 待审核才会有编辑信息-->
<view v-if="state.order.scaleStatus === 2"
><u-tag
text="编辑信息"
plain
shape="circle"
:borderColor="'rgba(0, 238, 78, 1) !important'"
:bgColor="'rgba(227, 255, 236, 1)'"
:color="'rgba(0, 238, 78, 1) !important'"
@click="handleUpdateOrder"
></u-tag
></view>
</view>
</view>
<!-- 出库 过磅时间对应过皮时间 -->
<view class="flex-box" v-if="state.order.scaleStatus === 2">
<text>审核人{{ state.order.pricingUserName || "-" }}</text>
<text>过磅时间{{ state.order.tareTime }}</text>
</view>
<!-- <view class="flex-box" v-if="getIsShow()" style="border: none">
<text>过磅时间{{ state.order.grossTime || "-" }}</text>
</view>
<view class="flex-box" v-if="getIsShow()">
<text>定价人{{ state.order.pricingUserName || "-" }}</text>
<text>审核人{{ state.order.reviewerUserName || "-" }}</text>
</view> -->
<view class="more">
<view v-if="getIsShow()"> 出货单号SHD20230901132333 </view>
<view v-if="getIsShow()"></view>
<view v-for="(item, index) in gridList1" :key="index">
<text v-if="item.name">{{ item.name }}</text
><text
>{{ item.isBefore ? item.unit : "" }}
{{ item.num }}
{{ item.isBefore ? "" : item.unit }}
</text>
</view>
</view>
<!-- <u-gap height="10" bgColor="#F8F8F8"></u-gap> -->
<view class="mt-30">
<u-line></u-line>
</view>
<view class="more">
<view v-for="(item, index) in gridList2" :key="index">
<text v-if="item.name">{{ item.name }}</text
><text
>{{ item.isBefore ? item.unit : "" }}
{{ item.num }}
{{ item.isBefore ? "" : item.unit }}
</text>
</view>
</view>
</view>
<view class="op-btn">
<view class="c-btn-review" v-if="state.order.scaleStatus === 2">
<view @click="handleReviewNoPay"> 出货未结算 </view>
<view class="active" @click="handleReviewPay"> 出货并结算 </view>
</view>
<view v-if="state.order.scaleStatus === 2">
<u-button
text="重新过毛"
plain
:customStyle="{
color: 'rgba(0, 220, 238, 1)',
border: '1px solid #00DCEE',
'border-radius': '43rpx',
}"
></u-button>
</view>
<view v-if="state.order.scaleStatus === 3">
<u-button
text="确认支付"
type="primary"
:customStyle="{ 'border-radius': '43rpx' }"
@click="handleReviewPay"
></u-button>
</view>
<view>
<u-button
text="打印"
type="primary"
:customStyle="{ 'border-radius': '43rpx' }"
></u-button>
</view>
</view>
</view>
<!-- 支付方式 -->
<block v-for="(item, index) in state.sheetList" :key="index">
<u-action-sheet
:actions="contrlModalParams[item.key].list"
:title="contrlModalParams[item.key].title"
:show="contrlModalParams[item.key].isShow"
@select="(v: any) => handleSelect(item.key, v)"
@close="contrlModalParams[item.key].isShow = false"
:closeOnClickAction="true"
></u-action-sheet>
</block>
<SmallModal
:title="'确认作废吗?'"
:content="'确认作废后,该订单不能恢复!'"
:okText="'确认作废'"
:isMain="true"
:show="isShowCancelModal"
@handleModal="(v:boolean) => {handleModal(v, deleteId)}"
@handleOk="handleOk()"
/>
</template>
<script setup lang="ts">
import { ShipmentApi } from "@/services/index";
import { onLoad } from "@dcloudio/uni-app";
const keyword = ref("");
const contrlModalParams = reactive<{ [attrName: string]: any }>({
paySelect: {
isShow: false,
title: "请选择支付方式",
// 1:23线4
list: [
{
name: "微信",
key: 3,
},
{
name: "现金",
key: 1,
},
{
name: "支付宝",
key: 4,
},
{
name: "转账",
key: 2,
},
],
},
printSelect: {
isShow: false,
title: "请选择打印设备",
list: [
{
name: "打印设备1",
key: 1,
},
{
name: "打印设备2",
key: 2,
},
{
name: "打印设备3",
key: 3,
},
{
name: "打印设备4",
key: 4,
},
],
},
});
const state = reactive<{
order: Shipment;
[attrName: string]: any;
}>({
order: {},
sheetList: [
{
key: "paySelect",
},
{
key: "printSelect",
},
],
scaleStatus: 2,
});
const gridList1 = reactive([
{
name: "毛重",
enName: "grossWeight",
num: "",
unit: "KG",
isBefore: false,
},
{
name: "皮重",
enName: "tare",
num: "",
unit: "KG",
isBefore: false,
},
{
name: "净重",
enName: "netWeight",
num: "",
unit: "KG",
isBefore: false,
},
]);
const gridList2 = reactive([
{
name: "客户名称",
enName: "userName",
num: "",
isBefore: false,
},
{},
{
name: "签收时间",
enName: "signTime",
num: "",
isBefore: false,
},
{},
{
name: "毛重",
enName: "signGrossWeight",
num: "",
unit: "KG",
isBefore: false,
},
{
name: "皮重",
enName: "signTare",
num: "",
unit: "KG",
isBefore: false,
},
{
name: "结算重量",
enName: "signWeight",
num: "",
unit: "KG",
isBefore: false,
},
{
name: "单价",
enName: "unitPrice",
num: "",
unit: "元/KG",
isBefore: false,
},
{
name: "预估总价",
enName: "estimatePrice",
num: "",
unit: "元",
isBefore: false,
},
{
name: "结算金额",
enName: "totalPrice",
num: "",
unit: "元",
isBefore: false,
},
{
name: "运费",
enName: "freight",
num: "",
unit: "元",
isBefore: false,
},
{
name: "杂费",
enName: "incidentals",
num: "",
unit: "元",
isBefore: false,
},
]);
const getIsShow = () => {
return state.order.scaleStatus === 2 || state.order.scaleStatus === 4;
};
const handleScenePhoto = (imagesId: number) => {
uni.navigateTo({
url: "/pagesScenePhoto/index?orderType=1&id=" + imagesId, //
});
};
// // 3
const handleReviewNoPay = () => {
uni.navigateTo({
url: "/pagesShipment/form/settlementForm?id=" + state.order.id, //
});
// ShipmentApi.updateOrderIn({ ...state.order, scaleStatus: 3 }).then((res) => {
// if (res.code === 200) {
// uni.navigateTo({
// url: "/pagesShipment/shipmentSettlement?scaleStatus=3", //
// });
// }
// });
};
//
const handleReviewPay = () => {
contrlModalParams.paySelect.isShow = true;
};
const handleSelect = (key: string, v: any) => {
contrlModalParams[key].isShow = false;
if (key === "paySelect") {
//
// ShipmentApi.updateOne({
// ...state.order,
// scaleStatus: 4,
// paymentMethod: v.key,
// }).then((res) => {
// if (res.code === 200) {
// uni.showToast({
// title: "",
// icon: "success",
// });
// uni.navigateTo({
// url: "/pagesReceive/payReview?scaleStatus=4", //
// });
// }
// });
} else if (key === "printSelect") {
//
}
};
const isShowCancelModal = ref(false);
const deleteId = ref("0");
//
const handleModal = (v: boolean, id: string) => {
isShowCancelModal.value = v;
deleteId.value = id;
};
const handleOk = () => {
ShipmentApi.deleteOrder({ ids: [deleteId.value] }).then((res) => {
if (res.code === 200) {
uni.navigateTo({
url: "/pagesShipment/shipmentSettlement?scaleStatus=2", //
});
}
});
};
const handleUpdateOrder = () => {
uni.navigateTo({
url: "/pagesShipment/form/shipmentForm?id=" + state.order.id, //
});
};
onLoad((option) => {
state.order.id = (option as any).id;
state.scaleStatus = parseInt((option as any).scaleStatus);
if (state.order.id) {
ShipmentApi.getDetailById({ id: state.order.id }).then((res) => {
if (res.code === 200) {
state.order = res.data;
// gridList1.map((item) => {
// if (item.name === "" || item.name === "") {
// if (state.order.buttonType === 0) {
// item.name = "";
// item.enName = "buckleMiscellaneous";
// item.unit = "KG";
// } else if (state.order.buttonType === 1) {
// item.name = "";
// item.enName = "points";
// item.unit = "%";
// }
// }
// item.num = state.order[item.enName as string];
// });
}
});
}
});
</script>
<style lang="scss" scoped>
.c-card {
margin: 30rpx 25rpx;
.box {
background: #ffffff;
box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(5, 68, 37, 0.12);
border-radius: 13rpx;
padding: 30rpx;
.base {
display: flex;
align-items: center;
justify-content: space-between;
font-weight: 400;
font-size: 26rpx;
color: #000000;
.btn {
border-radius: 24rpx;
border: 1px solid #00dcee;
padding: 10rpx 30rpx;
font-weight: 500;
font-size: 24rpx;
color: #00dcee;
line-height: 41rpx;
}
}
.name {
font-weight: 400;
font-size: 26rpx;
color: #000000;
margin: 15rpx 0rpx;
text {
background-color: #ffaf75;
font-weight: 500;
font-size: 26rpx;
color: #ffffff;
padding: 5rpx 20rpx;
margin-left: 20rpx;
}
}
.flex-box1 {
display: flex;
align-items: center;
justify-content: space-between;
margin: 20rpx 0rpx;
.type {
font-weight: 400;
font-size: 26rpx;
color: #ec0f3e;
}
.btn {
display: flex;
> view + view {
margin-left: 10rpx;
}
}
}
.flex-box {
display: flex;
align-items: center;
justify-content: space-between;
font-weight: 400;
font-size: 24rpx;
color: #999999;
border-bottom: 1rpx solid rgba(233, 233, 233, 0.76);
padding-bottom: 20rpx;
}
}
.more {
display: grid;
grid-template-columns: repeat(2, 1fr);
flex: 1;
font-weight: 400;
font-size: 26rpx;
color: #000000;
padding: 25rpx 0rpx 0rpx 0rpx;
> view {
line-height: 50rpx;
width: max-content;
}
}
.op-btn {
width: 80%;
margin: 0px auto;
margin-top: 100rpx;
.c-btn-review {
display: flex;
justify-content: space-between;
align-items: center;
background: #f5f5f5;
border-radius: 38rpx;
text-align: center;
margin-bottom: 80rpx;
> view {
width: 50%;
text-align: center;
font-weight: 500;
font-size: 26rpx;
color: #999999;
}
.active {
background: #00dcee;
border-radius: 38rpx;
font-weight: 500;
font-size: 26rpx;
color: #ffffff;
padding: 20rpx 30rpx;
}
}
> view + view {
margin-top: 30rpx;
}
}
}
</style>

View File

@ -0,0 +1,275 @@
<template>
<view class="search">
<view v-if="!isShowSearch" @click="isShowSearch = true">
<u-icon color="#C1C1C1" name="search"></u-icon
><text>请输入客户名称</text>
</view>
<u-search
v-else
placeholder="请输入客户名称"
v-model="keyword"
:focus="true"
bgColor="#fff"
:clearabled="true"
:showAction="false"
placeholderColor="#C1C1C1"
></u-search>
</view>
<view class="card-box">
<view class="c-tab">
<text
v-for="(item, index) in tabList"
:key="index"
:class="{ active: currentTab === item.key }"
@click="handleTab(item)"
>
{{ item.name }}
</text>
</view>
<block v-for="(item, index) in pageList.list" :key="index">
<view class="c-layout">
<view
><checkbox
value="cb"
:color="'#00D2E3'"
:checked="state.checkMap[(item.id as number)]"
style="transform: scale(0.5)"
/></view>
<view class="inner-box">
<view class="top-flex-box">
<view>
<view>
<text class="number">出货单号{{ item.receiptNumber }}</text>
</view>
<view>
<text class="name">{{ item.userName }}</text>
</view>
</view>
</view>
<view class="bottom-flex-box">
<view>
<view>
<text class="desc"
>过磅总净重{{ item.netWeight || 0 }}KG</text
>
</view>
</view>
<view>
<text class="btn">
<text
v-if="currentTab === 2"
@click="handleReview(item.id as number, 2)"
>出货结算</text
>
<text v-if="currentTab === 3" @click="handleReview(item.id as number, 3)">去结算</text>
<text v-if="currentTab === 4" @click="handleReview(item.id as number, 4)">查看</text>
</text>
</view>
</view>
</view>
</view>
<u-gap
height="10"
bgColor="#f8f8f8"
v-if="index < pageList.list.length - 1"
></u-gap>
</block>
</view>
<view class="btn-box" v-if="(currentTab === 2 || currentTab === 3) && pageList.list.length > 0">
<u-button
text="全选/取消"
color="#fff"
:customStyle="{ color: '#00DCEE', border: '1px solid #00DCEE' }"
@click="handleSelect"
></u-button>
<u-button type="primary" :text="`${currentTab === 2 ? '批量审核' : '批量支付'}`"></u-button>
</view>
</template>
<script setup lang="ts">
import { ShipmentApi } from "@/services/index";
import { onLoad } from "@dcloudio/uni-app";
// scaleStatus
interface PageResult<T> {
total: number;
list: T[];
pageNum: number;
pageSize: number;
}
const pageList: PageResult<Order> = reactive({
total: 0,
list: [],
pageNum: 1,
pageSize: 10,
});
const keyword = ref();
const isShowSearch = ref(false);
const state = reactive<{
[attrName: string]: any;
}>({
checkMap: {},
isAll: false,
});
const tabList = reactive([
{
name: "待出货结算",
key: 2,
},
{
name: "已出未结算",
key: 3,
},
{
name: "已出已结算",
key: 4,
},
]);
const currentTab = ref(2);
const handleTab = (item: any) => {
currentTab.value = item.key;
getOrderList();
};
const handleReview = (id: number, scaleStatus: number) => {
uni.navigateTo({
url: "/pagesShipment/review/index?id=" + id + `&scaleStatus=`+ scaleStatus, //
});
};
const handleSelect = () => {
state.isAll = !state.isAll;
Object.keys(state.checkMap).forEach((item) => {
state.checkMap[item] = state.isAll;
});
};
const getOrderList = () => {
ShipmentApi.getOrderPage({ pageNumber: 1, pageSize: 10, scaleStatus: currentTab.value }).then(
(res) => {
if (res.code === 200) {
(pageList as any).list = res.data.list;
(res.data.list as any).forEach((item: any) => {
state.checkMap[parseInt(item.id)] = false;
});
}
}
);
};
onMounted(() => {
getOrderList();
});
onLoad((option) => {
currentTab.value = parseInt((option as any).scaleStatus);
})
</script>
<style lang="scss" scoped>
.search {
box-shadow: 0rpx 3rpx 16rpx 5rpx rgba(0, 0, 0, 0.2);
border-radius: 28rpx;
background: rgba(255, 255, 255, 0.86);
width: 80%;
margin: 0px auto;
margin-top: 30rpx;
font-weight: 400;
font-size: 26rpx;
color: #c1c1c1;
> view {
line-height: 60rpx;
text-align: center;
display: flex;
justify-content: center;
}
text {
margin-left: 15rpx;
}
}
.card-box {
.c-tab {
font-family: Source Han Sans CN;
font-weight: 400;
font-size: 26rpx;
color: #999999;
line-height: 41rpx;
display: flex;
align-items: center;
justify-content: space-around;
border-bottom: 1rpx solid rgba(233, 233, 233, 0.76);
text {
padding: 16rpx;
}
.active {
color: $u-primary;
border-bottom: 5rpx solid $u-primary;
border-radius: 5rpx;
}
}
.c-layout {
display: flex;
justify-content: space-between;
padding: 30rpx 25rpx 30rpx 0rpx;
}
.inner-box {
width: 100%;
// padding: 40rpx 40rpx;
.bottom-flex-box {
display: flex;
justify-content: space-between;
align-items: center;
.btn {
border-radius: 24rpx;
border: 1px solid #00dcee;
padding: 10rpx 30rpx;
font-weight: 500;
font-size: 24rpx;
color: #00dcee;
line-height: 41rpx;
}
}
}
box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(5, 68, 37, 0.12);
border-radius: 13rpx;
margin: 0rpx 25rpx;
margin-top: 35rpx;
font-family: Source Han Sans CN;
font-weight: 400;
font-size: 26rpx;
color: #000000;
line-height: 41rpx;
.desc {
font-size: 24rpx;
color: #999999;
margin-top: 30rpx;
display: inline-block;
}
.name {
font-size: 26rpx;
color: #000000;
font-weight: bold;
}
.flex-box {
font-weight: bold;
color: #000000;
line-height: 41rpx;
display: flex;
align-items: center;
justify-content: space-between;
}
}
.btn-box {
margin-top: 60rpx;
display: flex;
background: #ffffff;
box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(0, 56, 93, 0.12);
border-radius: 13rpx 13rpx 0rpx 0rpx;
padding: 25rpx 50rpx;
position: absolute;
bottom: 0rpx;
width: calc(100vw - 100rpx);
::v-deep button {
border-radius: 43rpx;
}
::v-deep button + button {
margin-left: 50rpx;
}
}
</style>

View File

@ -3,7 +3,6 @@
<view class="top-flex-box"> <view class="top-flex-box">
<view> <view>
<view> <view>
{{ item.id }}
<text class="address">{{ item.deviceName || "-" }}</text> <text class="address">{{ item.deviceName || "-" }}</text>
</view> </view>
<view> <view>

View File

@ -1,48 +0,0 @@
// 存放路径: src/services/home.ts
import { http } from '@/utils/http'
/**
* -广-
* @param distributionSite 广 12 1
*/
export const getHomeBannerAPI = (distributionSite = 1) => {
return http({
method: 'GET',
url: '/home/banner',
data: {
distributionSite,
},
})
}
// services/home.ts
/**
* --
*/
export const getHomeCategoryAPI = () => {
return http({
method: 'GET',
url: '/home/category/mutli',
})
}
// services/home.ts
/**
* --
*/
export const getHomeHotAPI = () => {
return http({
method: 'GET',
url: '/home/hot/mutli',
})
}
// src/services/home.ts
/**
* -
*/
export const getHomeGoodsGuessLikeAPI = (data: any) => {
return http({
method: 'GET',
url: '/home/goods/guessLike',
data,
})
}

View File

@ -1,48 +0,0 @@
// 存放路径: src/services/home.ts
import { http } from '@/utils/http'
/**
* -广-
* @param distributionSite 广 12 1
*/
export const getHomeBannerAPI = (distributionSite = 1) => {
return http({
method: 'GET',
url: '/home/banner',
data: {
distributionSite,
},
})
}
// services/home.ts
/**
* --
*/
export const getHomeCategoryAPI = () => {
return http({
method: 'GET',
url: '/home/category/mutli',
})
}
// services/home.ts
/**
* --
*/
export const getHomeHotAPI = () => {
return http({
method: 'GET',
url: '/home/hot/mutli',
})
}
// src/services/home.ts
/**
* -
*/
export const getHomeGoodsGuessLikeAPI = (data: any) => {
return http({
method: 'GET',
url: '/home/goods/guessLike',
data,
})
}

46
src/services/device.ts Normal file
View File

@ -0,0 +1,46 @@
import { http } from '@/utils/http'
// 设备信息新增
export const addDevice = (data: any) => {
return http({
method: 'POST',
url: '/api/device/addDevice',
data,
})
}
// 设备信息修改
export const editDevice = (data: any) => {
return http({
method: 'POST',
url: '/api/device/edit',
data,
})
}
// 设备信息逻辑删除
export const deleteDevice = (data: any) => {
return http({
method: 'POST',
url: '/api/device/deleteDevice',
data,
})
}
// 设备信息根据id查询
export const selectDeviceId = (data: any) => {
return http({
method: 'POST',
url: '/api/device/selectDeviceId',
data,
})
}
// 设备信息根据id查询
export const getDeviceList = (data: any) => {
return http({
method: 'POST',
url: '/api/device/getDeviceList',
data,
})
}

181
src/services/goods.ts Normal file
View File

@ -0,0 +1,181 @@
import { http } from '@/utils/http'
// 收货分类新增
export const getStockCardList = (data: any) => {
return http({
method: 'POST',
url: '/api/recategory/addReCategory',
data,
})
}
// 收货分类逻辑删除
export const deleteReceiveCategory = (data: any) => {
return http({
method: 'POST',
url: '/api/recategory/deleteCategory',
data,
})
}
// 收货根据分类id查询
export const selectReCyById = (data: any) => {
return http({
method: 'GET',
url: '/api/recategory/selectReCyById',
data,
})
}
//收货分类分页查询
export const getPage = (data: any) => {
return http({
method: 'GET',
url: '/api/recategory/getPage',
data,
})
}
// 收货分类修改信息
export const editReceiveCategory = (data: any) => {
return http({
method: 'POST',
url: '/api/recategory/edit',
data,
})
}
// 收货产品新增
export const addReProducts = (data: any) => {
return http({
method: 'POST',
url: '/api/reproducts/addReProducts',
data,
})
}
// 收货产品编辑
export const EditReceiveProduct = (data: any) => {
return http({
method: 'POST',
url: '/api/reproducts/edit',
data,
})
}
// 收货产品逻辑删除
export const deleteReceiveProduct = (data: any) => {
return http({
method: 'POST',
url: '/api/reproducts/deleteCategory',
data,
})
}
// 收货产品根据产品id查询
export const getReceiveProductById = (data: any) => {
return http({
method: 'POST',
url: '/api/reproducts/selectReCyById',
data,
})
}
// 收货产品分页查询
export const getReceiveProductListByPage = (data: any) => {
return http({
method: 'GET',
url: '/api/reproducts/getPage',
data,
})
}
// 收货产品查询所有
export const getReceiveProductList = (data: any) => {
return http({
method: 'GET',
url: '/api/reproducts/allReProducts',
data,
})
}
// 出货分类新增
export const addShmCategory = (data: any) => {
return http({
method: 'POST',
url: '/api/shmcategory/addShmCategory',
data,
})
}
// 出货分类树显示
export const getShipmentCategory = (data: any) => {
return http({
method: 'GET',
url: '/api/shmcategory/getChinaList',
data,
})
}
// 出货分类根据id查询
export const getShipmentCategoryById = (data: any) => {
return http({
method: 'POST',
url: '/api/shmcategory/selectShCyById',
data,
})
}
// 出货分类根据id逻辑删除
export const deleteById = (data: any) => {
return http({
method: 'POST',
url: '/api/shmcategory/deleteShmCategory',
data,
})
}
// 出货分类根据id编辑
export const editShipmentCategory = (data: any) => {
return http({
method: 'POST',
url: '/api/shmcategory/edit',
data,
})
}
// 出货产品根据id查询
export const getShipmentProductById = (data: any) => {
return http({
method: 'POST',
url: '/api/shmproducts/selectRePsById',
data,
})
}
// 出货产品新增
export const addShipmentProduct = (data: any) => {
return http({
method: 'POST',
url: '/api/shmproducts/addShmProducts',
data,
})
}
// 出货产品分页查询
export const getShipmentProductByPage = (data: any) => {
return http({
method: 'GET',
url: '/api/shmproducts/getPage',
data,
})
}
// 出货产品查询所有
export const getShipmentProductList = (data: any) => {
return http({
method: 'GET',
url: '/api/shmproducts/allShmProducts',
data,
})
}

View File

@ -2,4 +2,7 @@ export * as ProfileApi from './profile'
export * as ReceiveApi from './receive' export * as ReceiveApi from './receive'
export * as ShipmentApi from './shipment' export * as ShipmentApi from './shipment'
export * as PictureApi from './picture' export * as PictureApi from './picture'
export * as ReceiveProductApi from './receiveProduct' export * as ReceiveProductApi from './receiveProduct'
export * as DeviceApi from './device'
export * as StockCardApi from './stockCard'
export * as GoodsApi from './goods'

View File

@ -39,6 +39,16 @@ export const sendMsg = (data: { phone: string }) => {
}); });
}; };
// 修改密码
export const updateUserPwd = (data: any) => {
return http({
method: "POST",
url: "/api/user/updateUserPwd",
data
});
};
// 创建角色 // 创建角色
export const addRole = (data: { roleCode: string; roleName: string }) => { export const addRole = (data: { roleCode: string; roleName: string }) => {
return http({ return http({
@ -61,13 +71,14 @@ export const updateRole = (data: {
}); });
}; };
// 发送验证码 // 查询角色列表
export const getRoleList = () => { export const getRoleList = () => {
return http({ return http({
method: "GET", method: "GET",
url: "/api/role/getRoleList", url: "/api/role/getRoleList",
}); });
}; };
// 验证角色是否重复 1=code 2=名称 3=全部 // 验证角色是否重复 1=code 2=名称 3=全部
export const verifyRole = (data: { export const verifyRole = (data: {
roleCode: string; roleCode: string;
@ -95,7 +106,95 @@ export const addMenusRole = (data: {
}); });
}; };
// 查询角色菜单权限
export const getMenusRole = (data: any) => {
return http({
method: "GET",
url: "/api/role/getMenusRole",
data
});
};
// 查询分页菜单
export const getMenuByPage = (data: any) => {
return http({
method: "GET",
url: "/api/menus/getPage",
data
});
};
// 创建菜单
export const addMenus = (data: any) => {
return http({
method: "POST",
url: "/api/menus/addMenus",
data
});
};
// 查询菜单List
export const getMenuList = (data: any) => {
return http({
method: "GET",
url: "/api/menus/getList",
data
});
};
// 修改菜单
export const updateMenus = (data: any) => {
return http({
method: "POST",
url: "/api/menus/updateMenus",
data
});
};
// 查询省市区
export const getProvinceList = (data: any) => {
return http({
method: "GET",
url: "/api/user/getChinaList",
data
});
};
// 添加用户
export const addUser = (data: any) => {
return http({
method: "POST",
url: "/api/user/addUser",
data
});
};
// 查询用户分页
export const getUserListByPage = (data: any) => {
return http({
method: "GET",
url: "/api/user/getUserPage",
data
});
};
// 获取用户信息
export const getUserInfo = (data: any) => {
return http({
method: "GET",
url: "/api/user/getUserInfo",
data
});
};
// 添加用户角色关系
export const addUserRole = (data: any) => {
return http({
method: "POST",
url: "/api/user/addUserRole",
data
});
};
// 查询用户列表 // 查询用户列表
export const getUserList = (data: { export const getUserList = (data: {
name?: string; name?: string;

View File

@ -81,6 +81,25 @@ export const updateOne = (data: any) => {
}); });
}; };
// 收货汇总
export const OrderInReceipt = () => {
return http({
method: "GET",
url: "/api/orderIn/OrderInReceipt"
});
};
// 收货单排行榜
export const OrderInRanking = () => {
return http({
method: "GET",
url: "/api/orderIn/OrderInRanking"
});
};

View File

@ -10,7 +10,7 @@ type ShipmentSummary = {
toBeSettled: number, // 待结算 toBeSettled: number, // 待结算
} }
// 根据id查询出货单 // 根据id查询出货单
export const getDetailById = (data: {id: number}) => { export const getDetailById = (data: {id: string}) => {
return http<Shipment>({ return http<Shipment>({
method: "GET", method: "GET",
url: "/api/orderOut/getOne", url: "/api/orderOut/getOne",

26
src/services/stockCard.ts Normal file
View File

@ -0,0 +1,26 @@
import { http } from '@/utils/http'
// 库存卡查询分页
export const getStockCardList = (data: any) => {
return http({
method: 'GET',
url: '/api/card/getStockCardList',
data,
})
}
// 添加库存卡
export const addStockCard = (data: any) => {
return http({
method: 'POST',
url: '/api/card/addStockCard',
data,
})
}
// 修改库存卡
export const updateStockCard = (data: any) => {
return http({
method: 'POST',
url: '/api/card/updateStockCard',
data,
})
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 544 KiB

View File

@ -27,4 +27,7 @@ body {
} }
.l-h-28 { .l-h-28 {
line-height: 28px; line-height: 28px;
}
.mt-30 {
margin-top: 30rpx;
} }

72
src/types/order.d.ts vendored
View File

@ -42,6 +42,33 @@ interface Order {
isChecked?: boolean; isChecked?: boolean;
[attrName: string]: any; [attrName: string]: any;
} }
// 分页结构
interface OrderPage<T> {
total: number;
list: T;
pageNum: number;
pageSize: number;
}
interface ReceiveSummary {
totalReceipt: number; // 本月总出货
totalExpenditure: number; // 本月总收入
toBePriced: number; // 待收货
toBeTare: number; // 待过皮重
audit: number; // 付款审核
toBePaid: number; // 待支付
}
type PageParams = {
pageNumber: number;
pageSize: number;
pricingUserId?: string; // 定价人
userId?: string; // 供应商id
productId?: string; // 产品id
repairFlag?: boolean; // 是否为补单,true 是未补单false是补单
scaleStatus?: number; // 磅单状态:0待定价1待过皮2待审核3已审核待支付4已支付
};
interface Shipment { interface Shipment {
id?: string; id?: string;
userId?: number; //供应商id userId?: number; //供应商id
@ -84,29 +111,28 @@ interface Shipment {
isDeleted?: string; //删除标识true删除false未删除 isDeleted?: string; //删除标识true删除false未删除
[attrName: string]: any; [attrName: string]: any;
} }
// 分页结构
interface OrderPage<T> { // 出货单排行
total: number; interface ShipmentRank {
list: T; userId: number;
pageNum: number; userName: string;
pageSize: number; productId: number;
productName: string; // 产品名称
totalAmount: number; // 总收货量
totalPayment: number; //总应付总额
totalOrderNumber: number; // 收货单数量
averagePrice: number; // 均价
} }
interface ReceiveSummary { // 出库分类
totalReceipt: number; // 本月总出货 interface ShipmentTypeCount {
totalExpenditure: number; // 本月总收入 totalAmount: number; // 收货汇总:审核过收货总量
toBePriced: number; // 待收货 totalPayShipment: number; // 已支付的出货总量
toBeTare: number; // 待过皮重 totalUnPayShipment: number; // 未支付的出货总量
audit: number; // 付款审核 totalCollection: number; // 总收款
toBePaid: number; // 待支付 totalPayCollection: number; // 已经收到的收款
totalUnPayCollection: number; // 未收到的收款
totalReceipt: number; // 收货单数量已审核的
averagePrice: number; // 平均单价
rankings: ShipmentRank[]; // 出货产品汇总
} }
type PageParams = {
pageNumber: number;
pageSize: number;
pricingUserId?: string; // 定价人
userId?: string; // 供应商id
productId?: string; // 产品id
repairFlag?: boolean; // 是否为补单,true 是未补单false是补单
scaleStatus?: number; // 磅单状态:0待定价1待过皮2待审核3已审核待支付4已支付
};

View File

@ -52,4 +52,10 @@ export enum PaymentMethod {
export enum UserType { export enum UserType {
Face = 0, Face = 0,
Card = 1, Card = 1,
}
// 提货方式:0:送货1:自提
export enum DeliveryMethod {
Deliver = 0,
SelfPickup = 1
} }