update: 降本地图片替换为线上图片
|
@ -5,10 +5,14 @@
|
|||
<Title :title="item.title" />
|
||||
</view>
|
||||
<view class="box-content">
|
||||
<view v-for="(child, index) in item.child" :key="index" @click="(child as any).fn(child)">
|
||||
<view
|
||||
v-for="(child, index) in item.child"
|
||||
:key="index"
|
||||
@click="(child as any).fn(child)"
|
||||
>
|
||||
<view>
|
||||
<up-image
|
||||
:src="`/pagesStatistics/static/${child.icon}`"
|
||||
:src="`https://backend-common.obs.cn-east-3.myhuaweicloud.com/static/pagesStatistics/${child.icon}`"
|
||||
mode="aspectFill"
|
||||
width="60rpx"
|
||||
height="60rpx"
|
||||
|
@ -18,13 +22,15 @@
|
|||
</view>
|
||||
</view>
|
||||
|
||||
<view class="line" v-show="index < list.length -1"></view>
|
||||
<view class="line" v-show="index < list.length - 1"></view>
|
||||
</view>
|
||||
</Box>
|
||||
<TabBar></TabBar>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import Box from "@/components/Box/index.vue";
|
||||
import Title from "@/components/Title/index.vue";
|
||||
import TabBar from "@/components/TabBar/index.vue";
|
||||
const list = reactive([
|
||||
{
|
||||
title: "收货",
|
||||
|
@ -35,8 +41,8 @@ const list = reactive([
|
|||
fn: (item: any) => {
|
||||
uni.navigateTo({
|
||||
url: "/pagesStatistics/receivePanel", // 要跳转到的页面路径
|
||||
})
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
{
|
||||
icon: "02.png",
|
||||
|
@ -44,9 +50,8 @@ const list = reactive([
|
|||
fn: (item: any) => {
|
||||
uni.navigateTo({
|
||||
url: "/pagesStatistics/supplierRanking", // 要跳转到的页面路径
|
||||
})
|
||||
}
|
||||
|
||||
});
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
|
@ -59,8 +64,8 @@ const list = reactive([
|
|||
fn: (item: any) => {
|
||||
uni.navigateTo({
|
||||
url: "/pagesStatistics/shipmentPanel", // 要跳转到的页面路径
|
||||
})
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
{
|
||||
icon: "04.png",
|
||||
|
@ -68,8 +73,8 @@ const list = reactive([
|
|||
fn: (item: any) => {
|
||||
uni.navigateTo({
|
||||
url: "/pagesStatistics/customerRanking", // 要跳转到的页面路径
|
||||
})
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
|
@ -82,8 +87,8 @@ const list = reactive([
|
|||
fn: (item: any) => {
|
||||
uni.navigateTo({
|
||||
url: "/pagesStatistics/businessOverview", // 要跳转到的页面路径
|
||||
})
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
{
|
||||
icon: "06.png",
|
||||
|
@ -91,8 +96,8 @@ const list = reactive([
|
|||
fn: (item: any) => {
|
||||
uni.navigateTo({
|
||||
url: "/pagesStatistics/supplierChecking", // 要跳转到的页面路径
|
||||
})
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
{
|
||||
icon: "07.png",
|
||||
|
@ -100,8 +105,8 @@ const list = reactive([
|
|||
fn: (item: any) => {
|
||||
uni.navigateTo({
|
||||
url: "/pagesStatistics/customerChecking", // 要跳转到的页面路径
|
||||
})
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
|
|
Before Width: | Height: | Size: 6.4 KiB |
Before Width: | Height: | Size: 7.0 KiB |
Before Width: | Height: | Size: 6.8 KiB |
Before Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 8.4 KiB |
Before Width: | Height: | Size: 6.9 KiB |
Before Width: | Height: | Size: 5.4 KiB |
|
@ -50,7 +50,7 @@
|
|||
</template>
|
||||
<script setup lang="ts">
|
||||
import TimeDialog from "./components/TimeDialog.vue";
|
||||
import CEcharts from "../components/Echarts/echarts.vue";
|
||||
import CEcharts from "@/components/Echarts/echarts.vue";
|
||||
import ProductTypeDialog from "./components/ProductTypeDialog.vue";
|
||||
import { ReceiveApi } from "@/services";
|
||||
import { formatDate, getCurrentMonthStartAndEnd } from "@/utils";
|
||||
|
|
|
@ -8,11 +8,11 @@
|
|||
>
|
||||
<view class="left" @click="handleMsg()">
|
||||
<view class="msg-badge">
|
||||
<up-badge max="99" :value="'99'"></up-badge>
|
||||
<up-badge max="99" :value="state.count"></up-badge>
|
||||
</view>
|
||||
|
||||
<up-image
|
||||
src="/static/img/message.png"
|
||||
src="https://backend-common.obs.cn-east-3.myhuaweicloud.com/static/pages/message.png"
|
||||
width="42rpx"
|
||||
height="36rpx"
|
||||
></up-image>
|
||||
|
@ -22,11 +22,16 @@
|
|||
</view>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { MessageApi } from '@/services';
|
||||
|
||||
const navbarRect = reactive({
|
||||
height: 32,
|
||||
top: 28,
|
||||
msgCount: 10,
|
||||
});
|
||||
const state = reactive({
|
||||
count: 0
|
||||
})
|
||||
|
||||
onMounted(() => {
|
||||
// #ifdef APP-PLUS || MP-WEIXIN
|
||||
|
@ -34,6 +39,12 @@ onMounted(() => {
|
|||
navbarRect.height = menuButtonInfo.height;
|
||||
navbarRect.top = menuButtonInfo.top;
|
||||
// #endif
|
||||
|
||||
MessageApi.getUserNoticeInfoNumVo().then((res: any) => {
|
||||
if (res.code === 200) {
|
||||
state.count = res.data.unreadNoticeNum
|
||||
}
|
||||
})
|
||||
});
|
||||
const handleMsg = () => {
|
||||
uni.navigateTo({
|
||||
|
|
|
@ -0,0 +1,153 @@
|
|||
<template>
|
||||
<!-- 工作台底部菜单 -->
|
||||
<uni-transition mode-class="fade" :duration="100" :show="true">
|
||||
<view>
|
||||
<view class="tabBar">
|
||||
<view class="tabMenuBox">
|
||||
<view class="circle-box"></view>
|
||||
<u-grid :border="false">
|
||||
<u-grid-item
|
||||
v-for="(item, listIndex) in tabMenuList"
|
||||
:key="listIndex"
|
||||
@click="item.fn"
|
||||
>
|
||||
<up-image
|
||||
:src="`https://backend-common.obs.cn-east-3.myhuaweicloud.com/static/pages/TabMenu/${
|
||||
item.icon
|
||||
}${
|
||||
listIndex !== 1 && currentIndex === listIndex ? '1' : ''
|
||||
}.png`"
|
||||
width="33rpx"
|
||||
height="40rpx"
|
||||
mode="aspectFill"
|
||||
class="grid-icon"
|
||||
></up-image>
|
||||
<text
|
||||
class="grid-text"
|
||||
:class="{ active: currentIndex === listIndex }"
|
||||
:style="{ color: listIndex === 1 ? '#fff' : '' }"
|
||||
>{{ item.title }}</text
|
||||
>
|
||||
</u-grid-item>
|
||||
</u-grid>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</uni-transition>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { onLoad } from "@dcloudio/uni-app";
|
||||
|
||||
const tabMenuList = reactive([
|
||||
{
|
||||
icon: "statistics",
|
||||
title: "统计",
|
||||
fn: () => {
|
||||
const pages: any = getCurrentPages();
|
||||
if (
|
||||
[
|
||||
"pagesStatistics/index",
|
||||
"pagesHome/index",
|
||||
"pages/profile/index",
|
||||
].indexOf(pages[pages.length - 1].route) === 0
|
||||
) {
|
||||
return;
|
||||
}
|
||||
uni.redirectTo({
|
||||
url: "/pagesStatistics/index", // 要跳转到的页面路径
|
||||
});
|
||||
},
|
||||
},
|
||||
{
|
||||
icon: "home",
|
||||
title: "工作台",
|
||||
fn: () => {
|
||||
const pages: any = getCurrentPages();
|
||||
if (
|
||||
[
|
||||
"pagesStatistics/index",
|
||||
"pagesHome/index",
|
||||
"pages/profile/index",
|
||||
].indexOf(pages[pages.length - 1].route) === 1
|
||||
) {
|
||||
return;
|
||||
}
|
||||
uni.redirectTo({
|
||||
url: "/pagesHome/index", // 要跳转到的页面路径
|
||||
});
|
||||
},
|
||||
},
|
||||
{
|
||||
icon: "profile",
|
||||
title: "我的",
|
||||
fn: () => {
|
||||
const pages: any = getCurrentPages();
|
||||
if (
|
||||
[
|
||||
"pagesStatistics/index",
|
||||
"pagesHome/index",
|
||||
"pages/profile/index",
|
||||
].indexOf(pages[pages.length - 1].route) === 2
|
||||
) {
|
||||
return;
|
||||
}
|
||||
uni.redirectTo({
|
||||
url: "/pages/profile/index", // 要跳转到的页面路径
|
||||
});
|
||||
},
|
||||
},
|
||||
]);
|
||||
|
||||
const currentIndex = ref(1);
|
||||
|
||||
onLoad(() => {
|
||||
const pages: any = getCurrentPages();
|
||||
currentIndex.value = [
|
||||
"pagesStatistics/index",
|
||||
"pagesHome/index",
|
||||
"pages/profile/index",
|
||||
].indexOf(pages[pages.length - 1].route);
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.tabBar {
|
||||
background: url("/static/img/TabMenu/bg.png");
|
||||
height: 140rpx;
|
||||
background-size: cover;
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
bottom: 0px;
|
||||
.tabMenuBox {
|
||||
padding-top: 30rpx;
|
||||
font-size: 26rpx;
|
||||
font-weight: 400;
|
||||
color: #999999;
|
||||
.grid-text {
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
.circle-box {
|
||||
width: 154rpx;
|
||||
height: 154rpx;
|
||||
background: linear-gradient(0deg, #1992ef, #00f6ff);
|
||||
box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(0, 50, 100, 0.12);
|
||||
border-radius: 50%;
|
||||
font-weight: 500;
|
||||
color: #ffffff;
|
||||
position: absolute;
|
||||
margin-top: -49rpx;
|
||||
margin-left: calc(50% - 78rpx);
|
||||
}
|
||||
.normal-box {
|
||||
width: 150rpx;
|
||||
height: 150rpx;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
.active {
|
||||
color: rgba(0, 220, 238, 1);
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -59,13 +59,15 @@
|
|||
/* 小程序特有相关 */
|
||||
"mp-weixin": {
|
||||
"appid": "wx9251d74fe0e87028",
|
||||
"logoPath": "static/logo.png",
|
||||
"setting": {
|
||||
"urlCheck": false
|
||||
},
|
||||
"usingComponents": true,
|
||||
"optimization": {
|
||||
"subPackages": true //是否启用分包优化
|
||||
}
|
||||
},
|
||||
"lazyCodeLoading": "requiredComponents"
|
||||
},
|
||||
"mp-alipay": {
|
||||
"usingComponents": true
|
||||
|
|
|
@ -245,7 +245,13 @@
|
|||
"style": {
|
||||
"navigationBarTitleText": "客户详情"
|
||||
}
|
||||
}
|
||||
},
|
||||
// {
|
||||
// "path": "uni_modules/lime-echart",
|
||||
// "style": {
|
||||
// "navigationBarTitleText": "组件库"
|
||||
// }
|
||||
// }
|
||||
]
|
||||
},
|
||||
{
|
||||
|
@ -443,7 +449,6 @@
|
|||
"navigationBarTitleText": "收入详情"
|
||||
}
|
||||
}
|
||||
|
||||
]
|
||||
}
|
||||
// {
|
||||
|
@ -463,5 +468,6 @@
|
|||
"navigationBarTitleText": "智能回收",
|
||||
"navigationBarBackgroundColor": "#F8F8F8",
|
||||
"backgroundColor": "#F8F8F8"
|
||||
}
|
||||
},
|
||||
"lazyCodeLoading": "requiredComponents"
|
||||
}
|
||||
|
|
|
@ -1,121 +0,0 @@
|
|||
<template>
|
||||
<view class="c-login-container">
|
||||
<u-form
|
||||
labelPosition="left"
|
||||
:model="model1"
|
||||
:rules="rules"
|
||||
ref="loginForm"
|
||||
:labelWidth="0"
|
||||
>
|
||||
<u-form-item prop="userInfo.name" borderBottom ref="item1">
|
||||
<u-input
|
||||
v-model="model1.userInfo.name"
|
||||
placeholder="请输入手机号"
|
||||
:shape="'circle'"
|
||||
></u-input>
|
||||
</u-form-item>
|
||||
<u-form-item prop="userInfo.name" borderBottom ref="item1">
|
||||
<u-input
|
||||
v-model="model1.userInfo.name"
|
||||
placeholder="请输入验证码"
|
||||
:shape="'circle'"
|
||||
>
|
||||
<template #suffix>
|
||||
<text>获取验证码</text>
|
||||
</template>
|
||||
</u-input>
|
||||
</u-form-item>
|
||||
<u-form-item prop="userInfo.name" borderBottom ref="item1">
|
||||
<u-input
|
||||
v-model="model1.userInfo.name"
|
||||
placeholder="请设置密码"
|
||||
:shape="'circle'"
|
||||
:type="'password'"
|
||||
></u-input>
|
||||
</u-form-item>
|
||||
<u-form-item>
|
||||
<view class="c-flex-space-between">
|
||||
<u-checkbox-group
|
||||
v-model="checkboxValue1"
|
||||
placement="column"
|
||||
@change="checkboxChange"
|
||||
>
|
||||
<u-checkbox
|
||||
:customStyle="{ fontSize: '8px' }"
|
||||
:key="'1'"
|
||||
:label="'记住密码'"
|
||||
:name="'记住密码'"
|
||||
/>
|
||||
</u-checkbox-group>
|
||||
<text class="f-s-15 l-h-28">无法收到验证码</text>
|
||||
</view>
|
||||
</u-form-item>
|
||||
<u-form-item>
|
||||
<view class="c-flex-space-between">
|
||||
<view style="display: flex; line-height: 28px">
|
||||
<view>
|
||||
<u-checkbox-group
|
||||
v-model="checkboxValue1"
|
||||
placement="column"
|
||||
@change="checkboxChange"
|
||||
>
|
||||
<u-checkbox :customStyle="{ fontSize: '8px' }" :key="'1'" />
|
||||
</u-checkbox-group>
|
||||
</view>
|
||||
<view>
|
||||
同意用户<a href="#">服务协议</a>和<a href="#">隐私政策</a>
|
||||
</view>
|
||||
</view>
|
||||
<text class="f-s-15 l-h-28">忘记密码</text>
|
||||
</view>
|
||||
</u-form-item>
|
||||
</u-form>
|
||||
|
||||
<u-button @click="submit">立即登录</u-button>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
const loginForm = ref(null);
|
||||
const checkboxValue1 = ref([]);
|
||||
const model1 = ref({
|
||||
userInfo: {
|
||||
name: "",
|
||||
sex: "",
|
||||
},
|
||||
});
|
||||
const rules = ref({
|
||||
"userInfo.name": {
|
||||
type: "string",
|
||||
required: true,
|
||||
message: "请填写姓名",
|
||||
trigger: ["blur", "change"],
|
||||
},
|
||||
"userInfo.sex": {
|
||||
type: "string",
|
||||
max: 1,
|
||||
required: true,
|
||||
message: "请选择男或女",
|
||||
trigger: ["blur", "change"],
|
||||
},
|
||||
});
|
||||
|
||||
const checkboxChange = (n: any) => {
|
||||
console.log("change", n);
|
||||
};
|
||||
const submit = () => {
|
||||
(loginForm.value as any).validate();
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.c-login-container {
|
||||
padding: 30px;
|
||||
}
|
||||
.c-flex-space-between {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
width: 100%;
|
||||
font-size: 12px;
|
||||
}
|
||||
</style>
|
|
@ -1,7 +0,0 @@
|
|||
<template>
|
||||
待定价
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
|
@ -1,7 +0,0 @@
|
|||
<template>
|
||||
待定价
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
|
@ -2,7 +2,7 @@
|
|||
<view class="c-login-container">
|
||||
<!-- logo -->
|
||||
<view class="logo">
|
||||
<image :src="`/static/img/logo.png`" height="60rpx"></image>
|
||||
<image :src="`https://backend-common.obs.cn-east-3.myhuaweicloud.com/static/pages/logo.png`" height="60rpx"></image>
|
||||
</view>
|
||||
<!-- form表单 -->
|
||||
<view class="login-form">
|
||||
|
|
|
@ -1,35 +1,99 @@
|
|||
<template>
|
||||
<view class="msg-box">
|
||||
<view class="u-page">
|
||||
<u-list @scrolltolower="scrolltolower">
|
||||
<u-list-item v-for="(item, index) in 20" :key="index">
|
||||
<u-cell>
|
||||
<view slot="title" class="u-slot-title">
|
||||
<view>
|
||||
<view class="u-cell-text title"
|
||||
>系统通知
|
||||
<text class="title-badge">
|
||||
</text>
|
||||
<page-view
|
||||
@loadList="
|
||||
(v) => {
|
||||
getList(v);
|
||||
}
|
||||
"
|
||||
:noMoreData="pageList.noMoreData"
|
||||
:list="pageList.list"
|
||||
:height="0"
|
||||
:isLoading="pageList.isLoading"
|
||||
>
|
||||
<view class="msg-box">
|
||||
<view class="u-page">
|
||||
<u-list>
|
||||
<u-list-item v-for="(item, index) in pageList.list" :key="index">
|
||||
<u-cell @click="handleItem(item)">
|
||||
<view slot="title" class="u-slot-title">
|
||||
<view>
|
||||
<view class="u-cell-text title"
|
||||
>{{ item.title }}
|
||||
<text class="title-badge" v-if="item.status === 0"> </text>
|
||||
</view>
|
||||
<view class="u-cell-text desc">{{ item.content }}</view>
|
||||
</view>
|
||||
<view class="u-cell-text desc">你有一笔收货单待定价!</view>
|
||||
</view>
|
||||
</view>
|
||||
<template #value>
|
||||
<text class="u-slot-value time">2024-2-21 13:15</text>
|
||||
</template>
|
||||
</u-cell>
|
||||
</u-list-item>
|
||||
</u-list>
|
||||
<template #value>
|
||||
<text class="u-slot-value time">{{ item.createTime }}</text>
|
||||
</template>
|
||||
</u-cell>
|
||||
</u-list-item>
|
||||
</u-list>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</page-view>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
const scrolltolower = () => {
|
||||
loadmore();
|
||||
import PageView from "@/components/PageView/index.vue";
|
||||
import { MessageApi } from "@/services";
|
||||
const pageList: PageResult<any> = reactive({
|
||||
isLoading: false,
|
||||
noMoreData: false,
|
||||
total: 0,
|
||||
list: [],
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
});
|
||||
const resetPageList = () => {
|
||||
pageList.noMoreData = false;
|
||||
pageList.total = 0;
|
||||
pageList.list = [];
|
||||
pageList.pageNum = 1;
|
||||
pageList.pageSize = 10;
|
||||
};
|
||||
const loadmore = () => {
|
||||
console.log("****** 加载更多");
|
||||
|
||||
const getList = (v?: boolean) => {
|
||||
if (v) {
|
||||
if (Math.ceil(pageList.total / pageList.pageSize) > pageList.pageNum) {
|
||||
pageList.pageNum++;
|
||||
} else {
|
||||
pageList.noMoreData = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
let params: any = {
|
||||
pageSize: pageList.pageSize,
|
||||
pageNum: pageList.pageNum,
|
||||
};
|
||||
|
||||
pageList.isLoading = true;
|
||||
MessageApi.getUserNoticeInfoVoPage({
|
||||
...params,
|
||||
}).then((res: any) => {
|
||||
if (res.code === 200) {
|
||||
pageList.isLoading = false;
|
||||
(pageList as any).list = (pageList as any).list = pageList.list.concat(
|
||||
res.data.list
|
||||
);
|
||||
pageList.total = (res.data as any).total;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const handleItem = (item:any) => {
|
||||
if (item.status === 0) {
|
||||
MessageApi.readNotice({ids: [item.id]}).then(res => {
|
||||
if (res.code === 200) {
|
||||
resetPageList();
|
||||
getList();
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
onMounted(() => {
|
||||
getList();
|
||||
});
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.msg-box {
|
||||
|
@ -37,7 +101,7 @@ const loadmore = () => {
|
|||
width: 100%;
|
||||
height: 100%;
|
||||
.title {
|
||||
font-size: 27rpx;
|
||||
font-size: 28rpx;
|
||||
font-family: Source Han Sans CN;
|
||||
font-weight: 400;
|
||||
color: #000000;
|
||||
|
@ -55,7 +119,7 @@ const loadmore = () => {
|
|||
}
|
||||
}
|
||||
.desc {
|
||||
font-size: 21rpx;
|
||||
font-size: 24rpx;
|
||||
font-family: Source Han Sans CN;
|
||||
font-weight: 400;
|
||||
color: #999999;
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<template>
|
||||
<view class="profile">
|
||||
<view>
|
||||
<image class="bg" :src="`/static/img/profile/bg.png`" />
|
||||
<image class="bg" :src="`https://backend-common.obs.cn-east-3.myhuaweicloud.com/static/pages/profile/bg.png`" />
|
||||
</view>
|
||||
<view class="baseinfo">
|
||||
<view class="head">
|
||||
<image :src="`/static/img/profile/user.png`" class="user"></image>
|
||||
<image :src="`https://backend-common.obs.cn-east-3.myhuaweicloud.com/static/pages/profile/user.png`" class="user"></image>
|
||||
<view>
|
||||
<view>
|
||||
<text class="name">{{ profile.userName || "-" }}</text>
|
||||
|
@ -28,7 +28,7 @@
|
|||
>
|
||||
<template #icon>
|
||||
<view style="width: 40rpx">
|
||||
<image :src="`/static/img/profile/${item.icon}`" />
|
||||
<image :src="`https://backend-common.obs.cn-east-3.myhuaweicloud.com/static/pages/profile/${item.icon}`" />
|
||||
</view>
|
||||
</template>
|
||||
</u-cell>
|
||||
|
@ -37,11 +37,13 @@
|
|||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<TabBar></TabBar>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { ProfileApi } from "@/services/index";
|
||||
import { reactive } from "vue";
|
||||
import { useMemberStore } from "@/store/index";
|
||||
import TabBar from '@/components/TabBar/index.vue'
|
||||
const store = useMemberStore();
|
||||
const profile = store.profile.userInfo;
|
||||
const list = reactive([
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
>收款类型:<text>{{ getPayment(obj) }}</text></view
|
||||
>
|
||||
<view
|
||||
>结算金额<text
|
||||
>结算金额:<text
|
||||
>¥ {{ obj.totalPrice }}</text
|
||||
>
|
||||
</view>
|
||||
|
@ -21,18 +21,20 @@
|
|||
<view
|
||||
>收款人:<text>{{ obj.revenueName }}</text></view
|
||||
>
|
||||
<view
|
||||
<view v-if="obj.orderNumber"
|
||||
>出货单号:
|
||||
<text>{{ obj.orderNumber }}</text></view
|
||||
>
|
||||
<up-image :show-loading="true" v-for="(item, index) in obj.fileLists" :key="index" :src="item.url" width="80px" height="80px"></up-image>
|
||||
<up-image :show-loading="true" v-for="(item, index) in list" :key="index" :src="item.url" width="80px" height="80px"></up-image>
|
||||
</view>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { FinanceApi, PictureApi } from "@/services";
|
||||
import { ImagesType, OrderType } from "@/utils/enum";
|
||||
import { onLoad } from "@dcloudio/uni-app";
|
||||
const obj = ref<any>({});
|
||||
const obj = ref<any>({
|
||||
});
|
||||
const list = ref<any>([])
|
||||
const getPayment = (item: any) => {
|
||||
return ["出货单收款", "其他收款"][
|
||||
item.paymentType
|
||||
|
@ -54,7 +56,7 @@ onLoad((option: any) => {
|
|||
imagesType: ImagesType.NORMARL,
|
||||
}).then((res) => {
|
||||
if (res.code === 200) {
|
||||
obj.value.fileLists = res.data;
|
||||
list.value = res.data;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
backgroundSize: 'cover',
|
||||
}" -->
|
||||
<view class="panel" v-for="(item, index) in summaryList" :key="index">
|
||||
<image :src="`/static/img/${item.imgUrl}`" />
|
||||
<image :src="`https://backend-common.obs.cn-east-3.myhuaweicloud.com/static/pages/${item.imgUrl}`" />
|
||||
<view class="box">
|
||||
<view class="num">{{ item.num }}</view>
|
||||
<view class="title">{{ item.title }}</view>
|
||||
|
@ -30,7 +30,12 @@
|
|||
<text class="title">收货入库</text>
|
||||
<view class="data-receive">
|
||||
<up-row justify="center" gutter="10">
|
||||
<up-col span="3" v-for="(item, index) in receiveList" :key="index" @click="(item as any).fn()">
|
||||
<up-col
|
||||
span="3"
|
||||
v-for="(item, index) in receiveList"
|
||||
:key="index"
|
||||
@click="(item as any).fn()"
|
||||
>
|
||||
<view
|
||||
class="box"
|
||||
:style="{
|
||||
|
@ -57,7 +62,12 @@
|
|||
<text class="title title-shipment">出货销售</text>
|
||||
<view class="data-shipment">
|
||||
<up-row justify="center" gutter="10">
|
||||
<up-col span="3" v-for="(item, index) in shipmentList" :key="index" @click="(item as any).fn()">
|
||||
<up-col
|
||||
span="3"
|
||||
v-for="(item, index) in shipmentList"
|
||||
:key="index"
|
||||
@click="(item as any).fn()"
|
||||
>
|
||||
<view
|
||||
class="box"
|
||||
:style="{
|
||||
|
@ -88,9 +98,13 @@
|
|||
<view class="app-list">
|
||||
<view class="name">常用应用</view>
|
||||
<u-grid :border="false" col="4">
|
||||
<u-grid-item v-for="(item, listIndex) in appList" :key="listIndex" @click="item.fn">
|
||||
<u-grid-item
|
||||
v-for="(item, listIndex) in appList"
|
||||
:key="listIndex"
|
||||
@click="item.fn"
|
||||
>
|
||||
<up-image
|
||||
:src="`/pagesHome/static/${item.icon}`"
|
||||
:src="`https://backend-common.obs.cn-east-3.myhuaweicloud.com/static/pagesHome/${item.icon}`"
|
||||
width="60rpx"
|
||||
height="60rpx"
|
||||
></up-image>
|
||||
|
@ -101,39 +115,13 @@
|
|||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 工作台底部菜单 -->
|
||||
<view>
|
||||
<view class="tabBar">
|
||||
<view class="tabMenuBox">
|
||||
<view class="circle-box"></view>
|
||||
<u-grid :border="false">
|
||||
<u-grid-item
|
||||
v-for="(item, listIndex) in tabMenuList"
|
||||
:key="listIndex"
|
||||
@click="item.fn"
|
||||
>
|
||||
<up-image
|
||||
:src="`/static/img/TabMenu/${item.icon}`"
|
||||
width="33rpx"
|
||||
height="40rpx"
|
||||
mode="aspectFill"
|
||||
class="grid-icon"
|
||||
></up-image>
|
||||
<text
|
||||
class="grid-text"
|
||||
:style="{ color: listIndex === 1 ? '#fff' : '' }"
|
||||
>{{ item.title }}</text
|
||||
>
|
||||
</u-grid-item>
|
||||
</u-grid>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<TabBar/>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { useMemberStore } from "@/store/index";
|
||||
import { ReceiveApi, ShipmentApi } from "@/services/index";
|
||||
import TabBar from '@/components/TabBar/index.vue'
|
||||
const store = useMemberStore();
|
||||
const navbarRect = reactive({
|
||||
height: 32,
|
||||
|
@ -329,7 +317,7 @@ const appList = reactive([
|
|||
});
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
{
|
||||
icon: "04.png",
|
||||
title: "出货明细",
|
||||
|
@ -339,7 +327,7 @@ const appList = reactive([
|
|||
});
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
{
|
||||
icon: "06.png",
|
||||
title: "出货作废",
|
||||
|
@ -349,7 +337,7 @@ const appList = reactive([
|
|||
});
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
{
|
||||
icon: "08.png",
|
||||
title: "客户管理",
|
||||
|
@ -449,57 +437,46 @@ const appList = reactive([
|
|||
});
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
]);
|
||||
|
||||
const tabMenuList = reactive([
|
||||
{
|
||||
icon: "statistics.png",
|
||||
title: "统计",
|
||||
fn: () => {
|
||||
uni.navigateTo({
|
||||
url: "/pagesStatistics/index", // 要跳转到的页面路径
|
||||
});
|
||||
},
|
||||
},
|
||||
{
|
||||
icon: "home.png",
|
||||
title: "工作台",
|
||||
},
|
||||
{
|
||||
icon: "profile.png",
|
||||
title: "我的",
|
||||
fn: () => {
|
||||
uni.navigateTo({
|
||||
url: "/pages/profile/index", // 要跳转到的页面路径
|
||||
});
|
||||
},
|
||||
},
|
||||
]);
|
||||
|
||||
|
||||
// 收货入库相关信息
|
||||
ReceiveApi.countOrderByMonth().then((res) => {
|
||||
if(res.code === 200) {
|
||||
const {totalReceipt, totalExpenditure, toBePriced, toBeTare, audit, toBePaid} = res.data
|
||||
summaryList[0].num = totalReceipt
|
||||
summaryList[1].num = totalExpenditure
|
||||
receiveList[0].num = toBePriced
|
||||
receiveList[1].num = toBeTare
|
||||
receiveList[2].num = audit
|
||||
receiveList[3].num = toBePaid
|
||||
if (res.code === 200) {
|
||||
const {
|
||||
totalReceipt,
|
||||
totalExpenditure,
|
||||
toBePriced,
|
||||
toBeTare,
|
||||
audit,
|
||||
toBePaid,
|
||||
} = res.data;
|
||||
summaryList[0].num = totalReceipt;
|
||||
summaryList[1].num = totalExpenditure;
|
||||
receiveList[0].num = toBePriced;
|
||||
receiveList[1].num = toBeTare;
|
||||
receiveList[2].num = audit;
|
||||
receiveList[3].num = toBePaid;
|
||||
}
|
||||
});
|
||||
// 出货相关信息
|
||||
ShipmentApi.countOrderByMonth().then((res) => {
|
||||
if(res.code === 200) {
|
||||
const {totalShipment, totalIncome, toBeShipped, roughWeight, shipmentReview, toBeSettled} = res.data
|
||||
summaryList[2].num = totalShipment
|
||||
summaryList[3].num = totalIncome
|
||||
shipmentList[0].num = toBeShipped
|
||||
shipmentList[1].num = roughWeight
|
||||
shipmentList[2].num = shipmentReview
|
||||
shipmentList[3].num = toBeSettled
|
||||
if (res.code === 200) {
|
||||
const {
|
||||
totalShipment,
|
||||
totalIncome,
|
||||
toBeShipped,
|
||||
roughWeight,
|
||||
shipmentReview,
|
||||
toBeSettled,
|
||||
} = res.data;
|
||||
summaryList[2].num = totalShipment;
|
||||
summaryList[3].num = totalIncome;
|
||||
shipmentList[0].num = toBeShipped;
|
||||
shipmentList[1].num = roughWeight;
|
||||
shipmentList[2].num = shipmentReview;
|
||||
shipmentList[3].num = toBeSettled;
|
||||
}
|
||||
});
|
||||
onMounted(() => {
|
||||
|
@ -646,40 +623,4 @@ onMounted(() => {
|
|||
}
|
||||
}
|
||||
}
|
||||
.tabBar {
|
||||
background: url("/static/img/TabMenu/bg.png");
|
||||
height: 140rpx;
|
||||
background-size: cover;
|
||||
position: sticky;
|
||||
width: 100%;
|
||||
bottom: 0px;
|
||||
.tabMenuBox {
|
||||
padding-top: 30rpx;
|
||||
font-size: 28rpx;
|
||||
font-family: Source Han Sans CN;
|
||||
font-weight: 400;
|
||||
color: #999999;
|
||||
|
||||
.grid-text {
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
.circle-box {
|
||||
width: 154rpx;
|
||||
height: 154rpx;
|
||||
background: linear-gradient(0deg, #1992ef, #00f6ff);
|
||||
box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(0, 50, 100, 0.12);
|
||||
border-radius: 50%;
|
||||
font-weight: 500;
|
||||
color: #ffffff;
|
||||
position: absolute;
|
||||
margin-top: -49rpx;
|
||||
margin-left: calc(50% - 78rpx);
|
||||
}
|
||||
.normal-box {
|
||||
width: 150rpx;
|
||||
height: 150rpx;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
Before Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 6.0 KiB |
Before Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 6.5 KiB |
Before Width: | Height: | Size: 6.8 KiB |
Before Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 6.5 KiB |
Before Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 6.1 KiB |
Before Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 4.3 KiB |
|
@ -10,7 +10,7 @@
|
|||
>
|
||||
<swiper-item v-for="(item, index) in list" :key="index">
|
||||
<view class="image-box">
|
||||
<image :src="`./static/${item.imgUrl}`"></image>
|
||||
<image :src="`https://backend-common.obs.cn-east-3.myhuaweicloud.com/static/pagesLaunch/${item.imgUrl}`"></image>
|
||||
<view class="title">
|
||||
{{ item.title }}
|
||||
</view>
|
||||
|
|
Before Width: | Height: | Size: 270 KiB |
Before Width: | Height: | Size: 237 KiB |
Before Width: | Height: | Size: 277 KiB |
Before Width: | Height: | Size: 89 KiB |
|
@ -8,4 +8,5 @@ export * as StockCardApi from './stockCard'
|
|||
export * as GoodsApi from './goods'
|
||||
export * as SupplierApi from './supplier'
|
||||
export * as CustomerApi from './customer'
|
||||
export * as FinanceApi from './finance'
|
||||
export * as FinanceApi from './finance'
|
||||
export * as MessageApi from './message'
|
|
@ -0,0 +1,25 @@
|
|||
import { http } from '@/utils/http'
|
||||
// 消息列表
|
||||
export const getUserNoticeInfoVoPage = (data: any) => {
|
||||
return http({
|
||||
method: 'GET',
|
||||
url: '/api/notice/getUserNoticeInfoVoPage',
|
||||
data,
|
||||
})
|
||||
}
|
||||
// 批量已读消息
|
||||
export const readNotice = (data: any) => {
|
||||
return http({
|
||||
method: 'POST',
|
||||
url: '/api/notice/readNotice',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 查询消息数量
|
||||
export const getUserNoticeInfoNumVo = () => {
|
||||
return http({
|
||||
method: 'GET',
|
||||
url: '/api/notice/getUserNoticeInfoNumVo',
|
||||
})
|
||||
}
|
Before Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 2.9 KiB |