Compare commits
3 Commits
28cdac789e
...
b7d9f16198
| Author | SHA1 | Date | |
|---|---|---|---|
| b7d9f16198 | |||
| 3894cc1c57 | |||
| 44ac2723a0 |
@@ -8,22 +8,31 @@ public class NoticeStatusConverter implements AttributeConverter<NoticeStatus, S
|
|||||||
@Override
|
@Override
|
||||||
public String convertToDatabaseColumn(NoticeStatus attribute) {
|
public String convertToDatabaseColumn(NoticeStatus attribute) {
|
||||||
if (attribute == null) return null;
|
if (attribute == null) return null;
|
||||||
return switch (attribute) {
|
switch (attribute) {
|
||||||
case DRAFT -> "draft";
|
case DRAFT:
|
||||||
case PUBLISHED -> "published";
|
return "draft";
|
||||||
case OFFLINE -> "offline";
|
case PUBLISHED:
|
||||||
};
|
return "published";
|
||||||
|
case OFFLINE:
|
||||||
|
return "offline";
|
||||||
|
default:
|
||||||
|
return "published";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public NoticeStatus convertToEntityAttribute(String dbData) {
|
public NoticeStatus convertToEntityAttribute(String dbData) {
|
||||||
if (dbData == null) return null;
|
if (dbData == null) return null;
|
||||||
return switch (dbData) {
|
switch (dbData) {
|
||||||
case "draft" -> NoticeStatus.DRAFT;
|
case "draft":
|
||||||
case "published" -> NoticeStatus.PUBLISHED;
|
return NoticeStatus.DRAFT;
|
||||||
case "offline" -> NoticeStatus.OFFLINE;
|
case "published":
|
||||||
default -> NoticeStatus.PUBLISHED;
|
return NoticeStatus.PUBLISHED;
|
||||||
};
|
case "offline":
|
||||||
|
return NoticeStatus.OFFLINE;
|
||||||
|
default:
|
||||||
|
return NoticeStatus.PUBLISHED;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<script>
|
"D:\wx\PartsInquiry\frontend\static\icons\icons8-account-male-100.png"<script>
|
||||||
export default {
|
export default {
|
||||||
onLaunch: function() {
|
onLaunch: function() {
|
||||||
console.log('App Launch')
|
console.log('App Launch')
|
||||||
@@ -12,6 +12,50 @@
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style lang="scss">
|
||||||
/*每个页面公共css */
|
/*每个页面公共css */
|
||||||
|
page{
|
||||||
|
background-color: $uni-bg-color;
|
||||||
|
color: $uni-text-color;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
/* 强制所有端白底(防止小程序旧样式残留覆盖) */
|
||||||
|
.uni-page-body, uni-page-body {
|
||||||
|
background-color: $uni-bg-color !important;
|
||||||
|
}
|
||||||
|
/* 小程序节点:强制 wx-view 白底 */
|
||||||
|
wx-view { background-color: #ffffff !important; }
|
||||||
|
/* 例外:需要有主色底的元素,强制还原 */
|
||||||
|
.cta, .notice-left, .fab {
|
||||||
|
background-color: $uni-color-primary !important;
|
||||||
|
border-color: $uni-color-primary !important;
|
||||||
|
color: #ffffff !important;
|
||||||
|
}
|
||||||
|
.cta .cta-text { color:#ffffff !important; font-weight: 700; }
|
||||||
|
/* 覆盖历史深色背景(统一纯白/浅灰) */
|
||||||
|
.home, .report, .order, .me, .page { background: $uni-bg-color !important; }
|
||||||
|
.notice, .hero, .grid-wrap, .panel, .card, .tabs, .seg, .list, .search, .summary, .toolbar, .item { background: $uni-bg-color-grey !important; }
|
||||||
|
.text-secondary{
|
||||||
|
color:$uni-text-color-grey;
|
||||||
|
}
|
||||||
|
.card{
|
||||||
|
background-color:$uni-bg-color-grey;
|
||||||
|
border:1px solid $uni-border-color;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
}
|
||||||
|
.primary{
|
||||||
|
color:$uni-color-primary;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 底部原生 tabBar(H5/APP端可生效)字体加大 */
|
||||||
|
.uni-tabbar__label, .uni-tabbar__text{
|
||||||
|
font-size: 28rpx !important;
|
||||||
|
font-weight: 700 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 图表统一透明底(常见容器/画布选择器) */
|
||||||
|
canvas, .ec-canvas, .echarts, .charts, .chart, .ucharts-box{
|
||||||
|
background-color: transparent !important;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -124,20 +124,21 @@
|
|||||||
"globalStyle": {
|
"globalStyle": {
|
||||||
"navigationBarTextStyle": "black",
|
"navigationBarTextStyle": "black",
|
||||||
"navigationBarTitleText": "五金配件管家",
|
"navigationBarTitleText": "五金配件管家",
|
||||||
"navigationBarBackgroundColor": "#F8F8F8",
|
"navigationBarBackgroundColor": "#FFFFFF",
|
||||||
"backgroundColor": "#F8F8F8"
|
"backgroundColor": "#FFFFFF",
|
||||||
|
"backgroundTextStyle": "dark"
|
||||||
},
|
},
|
||||||
"tabBar": {
|
"tabBar": {
|
||||||
"color": "#8a7535",
|
"color": "#444444",
|
||||||
"selectedColor": "#B4880F",
|
"selectedColor": "#4C8DFF",
|
||||||
"backgroundColor": "#ffffff",
|
"backgroundColor": "#FFFFFF",
|
||||||
"borderStyle": "black",
|
"borderStyle": "black",
|
||||||
"list": [
|
"list": [
|
||||||
{ "pagePath": "pages/index/index", "text": "首页", "iconPath": "static/logo.png", "selectedIconPath": "static/logo.png" },
|
{ "pagePath": "pages/index/index", "text": "首页", "iconPath": "static/icons/home.png", "selectedIconPath": "static/icons/home.png" },
|
||||||
{ "pagePath": "pages/product/list", "text": "货品", "iconPath": "static/logo.png", "selectedIconPath": "static/logo.png" },
|
{ "pagePath": "pages/product/list", "text": "货品", "iconPath": "static/icons/product.png", "selectedIconPath": "static/icons/product.png" },
|
||||||
{ "pagePath": "pages/order/create", "text": "开单", "iconPath": "static/logo.png", "selectedIconPath": "static/logo.png" },
|
{ "pagePath": "pages/order/create", "text": "开单", "iconPath": "static/icons/icons8-purchase-order-100.png", "selectedIconPath": "static/icons/icons8-purchase-order-100.png" },
|
||||||
{ "pagePath": "pages/detail/index", "text": "明细", "iconPath": "static/logo.png", "selectedIconPath": "static/logo.png" },
|
{ "pagePath": "pages/detail/index", "text": "明细", "iconPath": "static/icons/icons8-more-details-100.png", "selectedIconPath": "static/icons/icons8-more-details-100.png" },
|
||||||
{ "pagePath": "pages/my/index", "text": "我的", "iconPath": "static/logo.png", "selectedIconPath": "static/logo.png" }
|
{ "pagePath": "pages/my/index", "text": "我的", "iconPath": "static/icons/icons8-account-male-100.png", "selectedIconPath": "static/icons/icons8-account-male-100.png" }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"uniIdRouter": {}
|
"uniIdRouter": {}
|
||||||
|
|||||||
@@ -57,18 +57,18 @@ export default {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style lang="scss">
|
||||||
.page { display:flex; flex-direction: column; height: 100vh; }
|
.page { display:flex; flex-direction: column; height: 100vh; }
|
||||||
.form { background:#fff; }
|
.form { background:$uni-bg-color-grey; }
|
||||||
.field { display:flex; align-items:center; justify-content: space-between; padding: 18rpx 20rpx; border-bottom:1rpx solid #f3f3f3; }
|
.field { display:flex; align-items:center; justify-content: space-between; padding: 18rpx 20rpx; border-bottom:1rpx solid $uni-border-color; }
|
||||||
.label { color:#666; }
|
.label { color:$uni-text-color-grey; }
|
||||||
.input { flex:1; text-align: right; color:#333; }
|
.input { flex:1; text-align: right; color:$uni-text-color; }
|
||||||
.value { color:#333; }
|
.value { color:$uni-text-color; }
|
||||||
.actions { margin-top: 20rpx; padding: 0 20rpx; }
|
.actions { margin-top: 20rpx; padding: 0 20rpx; }
|
||||||
.primary { width: 100%; background: #3c9cff; color:#fff; border-radius: 8rpx; padding: 22rpx 0; }
|
.primary { width: 100%; background: $uni-color-primary; color:#fff; border-radius: 8rpx; padding: 22rpx 0; }
|
||||||
.sheet { background:#fff; }
|
.sheet { background:$uni-bg-color-grey; }
|
||||||
.sheet-item { padding: 26rpx; text-align:center; border-bottom:1rpx solid #f2f2f2; }
|
.sheet-item { padding: 26rpx; text-align:center; border-bottom:1rpx solid $uni-border-color; }
|
||||||
.sheet-cancel { padding: 26rpx; text-align:center; color:#666; }
|
.sheet-cancel { padding: 26rpx; text-align:center; color:$uni-text-color-grey; }
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -64,24 +64,24 @@ export default {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style lang="scss">
|
||||||
.page { display:flex; flex-direction: column; height: 100vh; }
|
.page { display:flex; flex-direction: column; height: 100vh; }
|
||||||
.filters { display:flex; gap: 16rpx; padding: 16rpx; background:#fff; }
|
.filters { display:flex; gap: 16rpx; padding: 16rpx; background:$uni-bg-color-grey; }
|
||||||
.field { display:flex; justify-content: space-between; align-items:center; padding: 16rpx; border:1rpx solid #eee; border-radius: 12rpx; min-width: 300rpx; }
|
.field { display:flex; justify-content: space-between; align-items:center; padding: 16rpx; border:1rpx solid $uni-border-color; border-radius: 12rpx; min-width: 300rpx; }
|
||||||
.label { color:#666; }
|
.label { color:$uni-text-color-grey; }
|
||||||
.value { color:#333; }
|
.value { color:$uni-text-color; }
|
||||||
.summary { display:grid; grid-template-columns: repeat(4,1fr); gap: 12rpx; padding: 12rpx 16rpx; background:#fff; border-top:1rpx solid #f1f1f1; border-bottom:1rpx solid #f1f1f1; }
|
.summary { display:grid; grid-template-columns: repeat(4,1fr); gap: 12rpx; padding: 12rpx 16rpx; background:$uni-bg-color-grey; border-top:1rpx solid $uni-border-color; border-bottom:1rpx solid $uni-border-color; }
|
||||||
.sum-item { padding: 12rpx; text-align:center; }
|
.sum-item { padding: 12rpx; text-align:center; }
|
||||||
.k { display:block; color:#888; font-size: 24rpx; }
|
.k { display:block; color:$uni-text-color-grey; font-size: 24rpx; }
|
||||||
.v { display:block; margin-top:6rpx; font-weight:700; color:#333; }
|
.v { display:block; margin-top:6rpx; font-weight:700; color:$uni-text-color; }
|
||||||
.list { flex:1; }
|
.list { flex:1; }
|
||||||
.item { padding: 18rpx 16rpx; border-bottom:1rpx solid #f4f4f4; background:#fff; }
|
.item { padding: 18rpx 16rpx; border-bottom:1rpx solid $uni-border-color; background:$uni-bg-color-grey; }
|
||||||
.row { display:flex; align-items:center; justify-content: space-between; margin-bottom: 6rpx; }
|
.row { display:flex; align-items:center; justify-content: space-between; margin-bottom: 6rpx; }
|
||||||
.title { color:#333; }
|
.title { color:$uni-text-color; }
|
||||||
.amount { font-weight:700; }
|
.amount { font-weight:700; }
|
||||||
.amount.in { color:#2a9d8f; }
|
.amount.in { color:#2a9d8f; }
|
||||||
.amount.out { color:#d35b5b; }
|
.amount.out { color:#d35b5b; }
|
||||||
.meta { color:#999; font-size: 24rpx; }
|
.meta { color:$uni-text-color-grey; font-size: 24rpx; }
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -41,13 +41,13 @@
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style lang="scss">
|
||||||
.page { display:flex; flex-direction: column; height: 100vh; }
|
.page { display:flex; flex-direction: column; height: 100vh; }
|
||||||
.list { flex:1; }
|
.list { flex:1; }
|
||||||
.item { padding: 20rpx 24rpx; background:#fff; border-bottom: 1rpx solid #f1f1f1; }
|
.item { padding: 20rpx 24rpx; background:$uni-bg-color-grey; border-bottom: 1rpx solid $uni-border-color; }
|
||||||
.name { color:#333; margin-bottom: 6rpx; }
|
.name { color:$uni-text-color; margin-bottom: 6rpx; }
|
||||||
.meta { color:#888; font-size: 24rpx; }
|
.meta { color:$uni-text-color-grey; font-size: 24rpx; }
|
||||||
.fab { position: fixed; right: 32rpx; bottom: 120rpx; width: 100rpx; height: 100rpx; border-radius: 50%; background:#3c9cff; color:#fff; display:flex; align-items:center; justify-content:center; font-size: 52rpx; box-shadow: 0 10rpx 20rpx rgba(0,0,0,0.18); }
|
.fab { position: fixed; right: 32rpx; bottom: 120rpx; width: 100rpx; height: 100rpx; border-radius: 50%; background:$uni-color-primary; color:#fff; display:flex; align-items:center; justify-content:center; font-size: 52rpx; box-shadow: 0 10rpx 20rpx rgba(0,0,0,0.18); }
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -69,18 +69,18 @@ export default {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style lang="scss">
|
||||||
.page { padding-bottom: 140rpx; }
|
.page { padding-bottom: 140rpx; }
|
||||||
.card { background:#fff; margin: 16rpx; padding: 12rpx 16rpx; border-radius: 16rpx; }
|
.card { background:$uni-bg-color-grey; margin: 16rpx; padding: 12rpx 16rpx; border-radius: 16rpx; }
|
||||||
.row { display:flex; justify-content: space-between; padding: 18rpx 8rpx; border-bottom: 1rpx solid #f3f3f3; }
|
.row { display:flex; justify-content: space-between; padding: 18rpx 8rpx; border-bottom: 1rpx solid $uni-border-color; }
|
||||||
.row:last-child { border-bottom: 0; }
|
.row:last-child { border-bottom: 0; }
|
||||||
.label { color:#666; }
|
.label { color:$uni-text-color-grey; }
|
||||||
.value { color:#333; max-width: 60%; text-align: right; }
|
.value { color:$uni-text-color; max-width: 60%; text-align: right; }
|
||||||
.value-input { color:#333; text-align: right; flex: 1; }
|
.value-input { color:$uni-text-color; text-align: right; flex: 1; }
|
||||||
.emp { color:#107e9b; font-weight: 700; }
|
.emp { color:$uni-color-primary; font-weight: 700; }
|
||||||
.bottom { position: fixed; left:0; right:0; bottom:0; background:#fff; padding: 16rpx 24rpx calc(env(safe-area-inset-bottom) + 16rpx); box-shadow: 0 -4rpx 12rpx rgba(0,0,0,0.06); display:flex; gap: 12rpx; }
|
.bottom { position: fixed; left:0; right:0; bottom:0; background:$uni-bg-color-grey; padding: 16rpx 24rpx calc(env(safe-area-inset-bottom) + 16rpx); box-shadow: 0 -4rpx 12rpx rgba(0,0,0,0.10); display:flex; gap: 12rpx; }
|
||||||
.primary { flex:1; background: linear-gradient(135deg, #A0E4FF 0%, #17A2C4 100%); color:#fff; border-radius: 999rpx; padding: 20rpx 0; }
|
.primary { flex:1; background: $uni-color-primary; color:#fff; border-radius: 999rpx; padding: 20rpx 0; }
|
||||||
.ghost { flex:1; background:#fff; color:#107e9b; border: 2rpx solid #A0E4FF; border-radius: 999rpx; padding: 18rpx 0; }
|
.ghost { flex:1; background:$uni-bg-color-grey; color:$uni-color-primary; border: 2rpx solid rgba($uni-color-primary, .35); border-radius: 999rpx; padding: 18rpx 0; }
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -47,14 +47,14 @@ export default {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style lang="scss">
|
||||||
.page { padding-bottom: 140rpx; }
|
.page { padding-bottom: 140rpx; }
|
||||||
.field { display:flex; justify-content: space-between; padding: 22rpx 24rpx; background:#fff; border-bottom:1rpx solid #eee; }
|
.field { display:flex; justify-content: space-between; padding: 22rpx 24rpx; background:$uni-bg-color-grey; border-bottom:1rpx solid $uni-border-color; }
|
||||||
.label { color:#666; }
|
.label { color:$uni-text-color-grey; }
|
||||||
.value { color:#333; text-align: right; flex: 1; }
|
.value { color:$uni-text-color; text-align: right; flex: 1; }
|
||||||
.textarea { padding: 16rpx 24rpx; background:#fff; margin-top: 12rpx; }
|
.textarea { padding: 16rpx 24rpx; background:$uni-bg-color-grey; margin-top: 12rpx; }
|
||||||
.bottom { position: fixed; left:0; right:0; bottom:0; background:#fff; padding: 16rpx 24rpx calc(env(safe-area-inset-bottom) + 16rpx); box-shadow: 0 -4rpx 12rpx rgba(0,0,0,0.06); }
|
.bottom { position: fixed; left:0; right:0; bottom:0; background:$uni-bg-color-grey; padding: 16rpx 24rpx calc(env(safe-area-inset-bottom) + 16rpx); box-shadow: 0 -4rpx 12rpx rgba(0,0,0,0.10); }
|
||||||
.primary { width: 100%; background: linear-gradient(135deg, #A0E4FF 0%, #17A2C4 100%); color:#fff; border-radius: 999rpx; padding: 20rpx 0; }
|
.primary { width: 100%; background: $uni-color-primary; color:#fff; border-radius: 999rpx; padding: 20rpx 0; }
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -51,16 +51,16 @@
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style lang="scss">
|
||||||
.page { display:flex; flex-direction: column; height: 100vh; }
|
.page { display:flex; flex-direction: column; height: 100vh; }
|
||||||
.search { display:flex; gap: 12rpx; padding: 16rpx; background:#fff; align-items:center; }
|
.search { display:flex; gap: 12rpx; padding: 16rpx; background:$uni-bg-color-grey; align-items:center; }
|
||||||
.search input { flex:1; background:#f6f6f6; border-radius: 12rpx; padding: 12rpx; }
|
.search input { flex:1; background:$uni-bg-color-hover; border-radius: 12rpx; padding: 12rpx; color: $uni-text-color; }
|
||||||
.list { flex:1; }
|
.list { flex:1; }
|
||||||
.item { padding: 20rpx 24rpx; background:#fff; border-bottom: 1rpx solid #f1f1f1; }
|
.item { padding: 20rpx 24rpx; background:$uni-bg-color-grey; border-bottom: 1rpx solid $uni-border-color; }
|
||||||
.name { color:#333; margin-bottom: 6rpx; }
|
.name { color:$uni-text-color; margin-bottom: 6rpx; }
|
||||||
.meta { color:#888; font-size: 24rpx; }
|
.meta { color:$uni-text-color-grey; font-size: 24rpx; }
|
||||||
.bottom { position: fixed; left:0; right:0; bottom:0; background:#fff; padding: 16rpx 24rpx calc(env(safe-area-inset-bottom) + 16rpx); box-shadow: 0 -4rpx 12rpx rgba(0,0,0,0.06); }
|
.bottom { position: fixed; left:0; right:0; bottom:0; background:$uni-bg-color-grey; padding: 16rpx 24rpx calc(env(safe-area-inset-bottom) + 16rpx); box-shadow: 0 -4rpx 12rpx rgba(0,0,0,0.10); }
|
||||||
.primary { width: 100%; background: linear-gradient(135deg, #A0E4FF 0%, #17A2C4 100%); color:#fff; border-radius: 999rpx; padding: 20rpx 0; }
|
.primary { width: 100%; background: $uni-color-primary; color:#fff; border-radius: 999rpx; padding: 20rpx 0; }
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -30,15 +30,15 @@
|
|||||||
<!-- 列表 -->
|
<!-- 列表 -->
|
||||||
<scroll-view scroll-y class="list" @scrolltolower="loadMore">
|
<scroll-view scroll-y class="list" @scrolltolower="loadMore">
|
||||||
<block v-if="items.length">
|
<block v-if="items.length">
|
||||||
<view class="item" v-for="it in items" :key="it.id" @click="openDetail(it)">
|
<view class="item" v-for="it in items" :key="it.id" @click="openDetail(it)">
|
||||||
<view class="item-left">
|
<view class="item-left">
|
||||||
<view class="date">{{ formatDate(it.orderTime || it.txTime || it.createdAt) }}</view>
|
<view class="date">{{ formatDate(it.orderTime || it.txTime || it.createdAt) }}</view>
|
||||||
<view class="name">{{ it.customerName || it.supplierName || it.accountName || it.remark || '-' }}</view>
|
<view class="name">{{ it.customerName || it.supplierName || it.accountName || it.remark || '-' }}</view>
|
||||||
<view class="no">{{ it.orderNo || it.code || it.id }}</view>
|
<view class="no">{{ it.orderNo || it.code || it.id }}</view>
|
||||||
</view>
|
|
||||||
<view class="amount">¥ {{ (it.amount || 0).toFixed(2) }}</view>
|
|
||||||
<view class="arrow">›</view>
|
|
||||||
</view>
|
</view>
|
||||||
|
<view class="amount" :class="{ in: Number(it.amount||0) >= 0, out: Number(it.amount||0) < 0 }">¥ {{ (it.amount || 0).toFixed(2) }}</view>
|
||||||
|
<view class="arrow">›</view>
|
||||||
|
</view>
|
||||||
</block>
|
</block>
|
||||||
<view v-else class="empty">暂无数据</view>
|
<view v-else class="empty">暂无数据</view>
|
||||||
</scroll-view>
|
</scroll-view>
|
||||||
@@ -132,31 +132,33 @@ export default {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style lang="scss">
|
||||||
.page { display:flex; flex-direction: column; height: 100vh; }
|
.page { display:flex; flex-direction: column; height: 100vh; }
|
||||||
.seg { display:flex; background:#fff; }
|
.seg { display:flex; background:#fff; border-bottom:2rpx solid $uni-border-color; }
|
||||||
.seg-item { flex:1; padding: 22rpx 0; text-align:center; color:#666; }
|
.seg-item { flex:1; padding: 18rpx 0; text-align:center; color:$uni-text-color-grey; }
|
||||||
.seg-item.active { color:#18b566; font-weight: 600; }
|
.seg-item.active { color:#fff; background:$uni-color-primary; border-radius: 12rpx; margin: 8rpx; }
|
||||||
|
|
||||||
.content { display:flex; flex:1; min-height: 0; }
|
.content { display:flex; flex:1; min-height: 0; }
|
||||||
.biz-tabs { width: 120rpx; background:#eef6ff; display:flex; flex-direction: column; }
|
.biz-tabs { width: 140rpx; background:#fff; border-right:2rpx solid $uni-border-color; display:flex; flex-direction: column; }
|
||||||
.biz { flex:0 0 120rpx; display:flex; align-items:center; justify-content:center; color:#4aa3d6; }
|
.biz { flex:0 0 120rpx; display:flex; align-items:center; justify-content:center; color:$uni-color-primary; }
|
||||||
.biz.active { background:#3ac1c9; color:#fff; border-radius: 0 16rpx 16rpx 0; }
|
.biz.active { background:rgba(76,141,255,0.10); color:$uni-color-primary; font-weight:700; }
|
||||||
|
|
||||||
.panel { flex:1; display:flex; flex-direction: column; background:#fff; margin: 16rpx; border-radius: 16rpx; padding: 12rpx; }
|
.panel { flex:1; display:flex; flex-direction: column; background:#fff; margin: 16rpx; border-radius: 16rpx; padding: 12rpx; border:2rpx solid $uni-border-color; }
|
||||||
.toolbar { display:flex; align-items: center; gap: 12rpx; padding: 8rpx 6rpx; }
|
.toolbar { display:flex; align-items: center; gap: 12rpx; padding: 8rpx 6rpx; border-bottom:2rpx solid $uni-border-color; }
|
||||||
.search { flex:1; }
|
.search { flex:1; }
|
||||||
.search-input { width:100%; background:#f6f6f6; border-radius: 12rpx; padding: 12rpx; }
|
.search-input { width:100%; background:$uni-bg-color-hover; border-radius: 12rpx; padding: 12rpx; color:$uni-text-color; }
|
||||||
.period { color:#999; font-size: 24rpx; padding: 0 6rpx; }
|
.period { color:$uni-text-color-grey; font-size: 24rpx; padding: 0 6rpx; }
|
||||||
.total { color:#18b566; font-weight: 700; padding: 6rpx 6rpx 12rpx; }
|
.total { color:$uni-color-primary; font-weight: 700; padding: 10rpx 6rpx 12rpx; background:#fff; }
|
||||||
.list { flex:1; }
|
.list { flex:1; }
|
||||||
.item { display:flex; align-items:center; padding: 20rpx 10rpx; border-bottom: 1rpx solid #f1f1f1; }
|
.item { display:grid; grid-template-columns: 1fr auto auto; align-items:center; gap: 8rpx; padding: 18rpx 12rpx; border-bottom: 1rpx solid $uni-border-color; }
|
||||||
.item-left { flex:1; }
|
.item-left { display:flex; flex-direction: column; }
|
||||||
.date { color:#999; font-size: 24rpx; }
|
.date { color:$uni-text-color-grey; font-size: 24rpx; }
|
||||||
.name { color:#333; margin: 4rpx 0; font-weight: 600; }
|
.name { color:$uni-text-color; margin: 4rpx 0; font-weight: 600; }
|
||||||
.no { color:#bbb; font-size: 22rpx; }
|
.no { color:#99a2b3; font-size: 22rpx; }
|
||||||
.amount { color:#333; font-weight: 700; }
|
.amount { color:$uni-text-color; font-weight: 700; text-align:right; }
|
||||||
.arrow { color:#ccc; font-size: 40rpx; margin-left: 8rpx; }
|
.amount.in { color:#16a34a; }
|
||||||
.empty { height: 50vh; display:flex; align-items:center; justify-content:center; color:#999; }
|
.amount.out { color:#dc2626; }
|
||||||
.fab { position: fixed; right: 30rpx; bottom: 120rpx; width: 100rpx; height: 100rpx; background:#18b566; color:#fff; border-radius: 50rpx; text-align:center; line-height: 100rpx; font-size: 48rpx; box-shadow: 0 8rpx 20rpx rgba(0,0,0,0.15); }
|
.arrow { color:#8c99b0; font-size: 40rpx; margin-left: 8rpx; }
|
||||||
|
.empty { height: 50vh; display:flex; align-items:center; justify-content:center; color:$uni-text-color-grey; }
|
||||||
|
.fab { position: fixed; right: 30rpx; bottom: 120rpx; width: 100rpx; height: 100rpx; background:#fff; color:$uni-color-primary; border:2rpx solid $uni-color-primary; border-radius: 50rpx; text-align:center; line-height: 100rpx; font-size: 48rpx; box-shadow: 0 8rpx 20rpx rgba(76,141,255,0.18); }
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1,6 +1,20 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="home">
|
<view class="home">
|
||||||
<image class="home-bg" src="/static/metal-bg.jpg" mode="aspectFill"></image>
|
<!-- 公告栏:置顶显示,可点击查看详情 -->
|
||||||
|
<view class="notice">
|
||||||
|
<view class="notice-left">公告</view>
|
||||||
|
<view v-if="loadingNotices" class="notice-swiper" style="display:flex;align-items:center;color:#6b5a2a;">加载中...</view>
|
||||||
|
<view v-else-if="noticeError" class="notice-swiper" style="display:flex;align-items:center;color:#dd524d;">{{ noticeError }}</view>
|
||||||
|
<view v-else-if="!notices.length" class="notice-swiper" style="display:flex;align-items:center;color:#6b5a2a;">暂无公告</view>
|
||||||
|
<swiper v-else class="notice-swiper" circular autoplay interval="4000" duration="400" vertical>
|
||||||
|
<swiper-item v-for="(n, idx) in notices" :key="idx">
|
||||||
|
<view class="notice-item" @click="onNoticeTap(n)">
|
||||||
|
<text class="notice-text">{{ n.text }}</text>
|
||||||
|
<text v-if="n.tag" class="notice-tag">{{ n.tag }}</text>
|
||||||
|
</view>
|
||||||
|
</swiper-item>
|
||||||
|
</swiper>
|
||||||
|
</view>
|
||||||
<!-- 顶部统计卡片 -->
|
<!-- 顶部统计卡片 -->
|
||||||
<view class="hero">
|
<view class="hero">
|
||||||
<view class="hero-top">
|
<view class="hero-top">
|
||||||
@@ -29,21 +43,7 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 广告栏:自动轮播,可点击查看详情 -->
|
<!-- 公告栏(已上移到顶部) -->
|
||||||
<view class="notice">
|
|
||||||
<view class="notice-left">广告</view>
|
|
||||||
<view v-if="loadingNotices" class="notice-swiper" style="display:flex;align-items:center;color:#6b5a2a;">加载中...</view>
|
|
||||||
<view v-else-if="noticeError" class="notice-swiper" style="display:flex;align-items:center;color:#dd524d;">{{ noticeError }}</view>
|
|
||||||
<view v-else-if="!notices.length" class="notice-swiper" style="display:flex;align-items:center;color:#6b5a2a;">暂无公告</view>
|
|
||||||
<swiper v-else class="notice-swiper" circular autoplay interval="4000" duration="400" vertical>
|
|
||||||
<swiper-item v-for="(n, idx) in notices" :key="idx">
|
|
||||||
<view class="notice-item" @click="onNoticeTap(n)">
|
|
||||||
<text class="notice-text">{{ n.text }}</text>
|
|
||||||
<text v-if="n.tag" class="notice-tag">{{ n.tag }}</text>
|
|
||||||
</view>
|
|
||||||
</swiper-item>
|
|
||||||
</swiper>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 分割标题:产品与功能 -->
|
<!-- 分割标题:产品与功能 -->
|
||||||
<view class="section-title">
|
<view class="section-title">
|
||||||
@@ -52,14 +52,14 @@
|
|||||||
|
|
||||||
<!-- 功能九宫格(玻璃容器 + 圆角方形图标) -->
|
<!-- 功能九宫格(玻璃容器 + 圆角方形图标) -->
|
||||||
<view class="grid-wrap">
|
<view class="grid-wrap">
|
||||||
<view class="grid">
|
<view class="feature-grid">
|
||||||
<view class="grid-item" v-for="item in features" :key="item.key" @click="onFeatureTap(item)">
|
<view class="feature-card" v-for="item in features" :key="item.key" @click="onFeatureTap(item)">
|
||||||
<view class="icon icon-squircle">
|
<view class="fc-icon">
|
||||||
<image v-if="item.img" :src="item.img" class="icon-img" mode="aspectFit" @error="onIconError(item)"></image>
|
<image v-if="item.img" :src="item.img" class="fc-img" mode="aspectFit" @error="onIconError(item)"></image>
|
||||||
<text v-else-if="item.emoji" class="icon-emoji">{{ item.emoji }}</text>
|
<text v-else-if="item.emoji" class="fc-emoji">{{ item.emoji }}</text>
|
||||||
<view v-else class="icon-placeholder"></view>
|
<view v-else class="fc-placeholder"></view>
|
||||||
</view>
|
</view>
|
||||||
<text class="grid-chip">{{ item.title }}</text>
|
<view class="fc-title">{{ item.title }}</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -193,33 +193,24 @@
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style lang="scss">
|
||||||
.home {
|
.home {
|
||||||
padding-bottom: 140rpx;
|
padding-bottom: 140rpx;
|
||||||
position: relative;
|
position: relative;
|
||||||
/* 明亮奢华背景:金属拉丝纹理覆盖层 + 柔和浅色渐变 */
|
/* 纯白背景 */
|
||||||
background:
|
background: #ffffff;
|
||||||
repeating-linear-gradient(0deg, rgba(180,180,180,0.12) 0rpx, rgba(180,180,180,0.12) 2rpx, rgba(255,255,255,0.0) 2rpx, rgba(255,255,255,0.0) 10rpx),
|
|
||||||
linear-gradient(180deg, rgba(255, 255, 255, 0.75) 0%, rgba(255, 255, 255, 0.55) 40%, rgba(255, 255, 255, 0.35) 100%);
|
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
.home-bg {
|
|
||||||
position: fixed;
|
|
||||||
left: 0; top: 0; right: 0; bottom: 0;
|
|
||||||
width: 100%; height: 100%;
|
|
||||||
pointer-events: none;
|
|
||||||
z-index: -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 公告栏 */
|
/* 公告栏 */
|
||||||
.notice {
|
.notice {
|
||||||
margin: 0 24rpx 24rpx;
|
margin: 0 24rpx 24rpx;
|
||||||
padding: 20rpx 22rpx;
|
padding: 20rpx 22rpx;
|
||||||
border-radius: 20rpx;
|
border-radius: 20rpx;
|
||||||
background: rgba(255,255,255,0.78);
|
background: #ffffff;
|
||||||
backdrop-filter: blur(12rpx);
|
border: 2rpx solid $uni-border-color;
|
||||||
border: 2rpx solid rgba(203, 166, 61, 0.28);
|
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 16rpx;
|
gap: 16rpx;
|
||||||
@@ -227,35 +218,34 @@
|
|||||||
.notice-left {
|
.notice-left {
|
||||||
flex: 0 0 auto;
|
flex: 0 0 auto;
|
||||||
display: inline-flex; align-items: center; justify-content: center;
|
display: inline-flex; align-items: center; justify-content: center;
|
||||||
min-width: 96rpx; height: 44rpx;
|
min-width: 100rpx; height: 52rpx;
|
||||||
padding: 0 16rpx;
|
padding: 0 16rpx;
|
||||||
border-radius: 999rpx;
|
border-radius: 999rpx;
|
||||||
background: linear-gradient(135deg, #FFE69A, #F4CF62);
|
background: $uni-color-primary;
|
||||||
color: #3f320f;
|
color: #fff;
|
||||||
font-size: 24rpx;
|
font-size: 28rpx;
|
||||||
font-weight: 800;
|
font-weight: 800;
|
||||||
}
|
}
|
||||||
.notice-swiper { height: 72rpx; flex: 1; }
|
.notice-swiper { height: 72rpx; flex: 1; }
|
||||||
.notice-item { display: flex; align-items: center; gap: 12rpx; min-height: 72rpx; }
|
.notice-item { display: flex; align-items: center; gap: 12rpx; min-height: 72rpx; }
|
||||||
.notice-text { color: #4b3e19; font-size: 28rpx; line-height: 36rpx; font-weight: 600; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
|
.notice-text { color: $uni-text-color; font-size: 28rpx; line-height: 36rpx; font-weight: 600; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
|
||||||
.notice-tag { color: #B4880F; font-size: 22rpx; padding: 4rpx 10rpx; border-radius: 999rpx; background: rgba(215,167,46,0.18); }
|
.notice-tag { color: $uni-color-primary; font-size: 22rpx; padding: 4rpx 10rpx; border-radius: 999rpx; background: rgba(76,141,255,0.18); }
|
||||||
|
|
||||||
|
|
||||||
/* 分割标题 */
|
/* 分割标题 */
|
||||||
.section-title { display: flex; align-items: center; gap: 16rpx; padding: 10rpx 28rpx 0; }
|
.section-title { display: flex; align-items: center; gap: 16rpx; padding: 10rpx 28rpx 0; }
|
||||||
.section-title::before { content: ''; display: block; width: 8rpx; height: 28rpx; border-radius: 8rpx; background: linear-gradient(180deg, #FFE69A, #D7A72E); }
|
.section-title::before { content: ''; display: block; width: 8rpx; height: 28rpx; border-radius: 8rpx; background: $uni-color-primary; }
|
||||||
.section-text { color: #6b5a2a; font-size: 28rpx; font-weight: 700; letter-spacing: 1rpx; }
|
.section-text { color: $uni-text-color; font-size: 30rpx; font-weight: 700; letter-spacing: 1rpx; }
|
||||||
|
|
||||||
/* 顶部英雄区:浅色玻璃卡片,带金色描边与柔和阴影 */
|
/* 顶部英雄区:浅色玻璃卡片,带金色描边与柔和阴影 */
|
||||||
.hero {
|
.hero {
|
||||||
margin: 24rpx;
|
margin: 24rpx;
|
||||||
padding: 32rpx;
|
padding: 32rpx;
|
||||||
border-radius: 28rpx;
|
border-radius: 28rpx;
|
||||||
background: rgba(255, 255, 255, 0.65);
|
background: #ffffff;
|
||||||
backdrop-filter: blur(14rpx);
|
border: 2rpx solid $uni-border-color;
|
||||||
border: 2rpx solid rgba(203, 166, 61, 0.35);
|
box-shadow: none;
|
||||||
box-shadow: 0 12rpx 28rpx rgba(0, 0, 0, 0.10), 0 0 0 2rpx rgba(255,255,255,0.60) inset;
|
color: $uni-text-color;
|
||||||
color: #473c22;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.hero-top {
|
.hero-top {
|
||||||
@@ -269,67 +259,60 @@
|
|||||||
font-size: 42rpx;
|
font-size: 42rpx;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
letter-spacing: 2rpx;
|
letter-spacing: 2rpx;
|
||||||
color: #B4880F; /* 金色标题 */
|
color: $uni-color-primary;
|
||||||
}
|
}
|
||||||
|
|
||||||
.cta {
|
.cta {
|
||||||
padding: 10rpx 22rpx;
|
padding: 10rpx 22rpx;
|
||||||
border-radius: 999rpx;
|
border-radius: 999rpx;
|
||||||
background: linear-gradient(135deg, rgba(255, 220, 128, 0.65), rgba(255, 240, 190, 0.65));
|
background: $uni-color-primary;
|
||||||
border: 2rpx solid rgba(203, 166, 61, 0.45);
|
border: 2rpx solid $uni-color-primary;
|
||||||
box-shadow: 0 6rpx 14rpx rgba(203, 166, 61, 0.25);
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.cta-text { color: #5a4712; font-size: 26rpx; }
|
.cta-text { color: #fff; font-size: 30rpx; font-weight: 700; letter-spacing: 1rpx; }
|
||||||
|
|
||||||
.kpi { display: flex; }
|
/* KPI 卡片化布局:2×2 */
|
||||||
.kpi-item { flex: 1; }
|
.kpi { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16rpx; }
|
||||||
.kpi-label { opacity: 0.9; font-size: 24rpx; color: #6b5a2a; }
|
.kpi-item { text-align: center; background:#ffffff; border: 2rpx solid $uni-border-color; border-radius: 16rpx; padding: 16rpx 8rpx; }
|
||||||
.kpi-value { display: block; margin-top: 12rpx; font-size: 46rpx; font-weight: 800; color: #B4880F; }
|
.kpi-label {
|
||||||
|
opacity: 0.9;
|
||||||
|
font-size: 26rpx;
|
||||||
|
color: $uni-text-color-grey;
|
||||||
|
display: -webkit-box;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
-webkit-line-clamp: 2;
|
||||||
|
overflow: hidden;
|
||||||
|
line-height: 32rpx; /* 行高>=字体,避免上沿被裁切 */
|
||||||
|
min-height: 64rpx; /* 两行高度,防止折行挤压 */
|
||||||
|
}
|
||||||
|
.kpi-value { display: block; margin-top: 8rpx; font-size: 56rpx; font-weight: 800; color: $uni-color-primary; }
|
||||||
|
|
||||||
|
|
||||||
|
/* 常用功能:胶囊+阴影卡片样式的图标栅格(旧风格保留以防回退) */
|
||||||
|
.grid { grid-row-gap: 36rpx; grid-column-gap: 26rpx; padding: 32rpx 24rpx 28rpx; }
|
||||||
|
.grid-item { position: relative; }
|
||||||
|
.icon-squircle { width: 140rpx; height: 140rpx; border-radius: 28rpx; background: #fff; border: 2rpx solid $uni-border-color; box-shadow: 0 10rpx 20rpx rgba(0,0,0,0.06); }
|
||||||
|
.grid-chip { margin-top: 12rpx; padding: 6rpx 14rpx; border-radius: 999rpx; background: rgba(76,141,255,0.12); color: $uni-color-primary; font-size: 26rpx; font-weight: 700; }
|
||||||
|
|
||||||
/* 功能容器:整体玻璃面板,增强融入感 */
|
/* 功能容器:整体玻璃面板,增强融入感 */
|
||||||
.grid-wrap {
|
.grid-wrap {
|
||||||
margin: 0 20rpx 32rpx;
|
margin: 0 20rpx 32rpx;
|
||||||
padding: 28rpx 20rpx 12rpx;
|
padding: 28rpx 20rpx 12rpx;
|
||||||
border-radius: 24rpx;
|
border-radius: 24rpx;
|
||||||
background: rgba(255,255,255,0.55);
|
background: #ffffff;
|
||||||
backdrop-filter: blur(10rpx);
|
border: 2rpx solid $uni-border-color;
|
||||||
border: 2rpx solid rgba(203,166,61,0.22);
|
box-shadow: none;
|
||||||
box-shadow: 0 8rpx 18rpx rgba(0,0,0,0.06);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 功能九宫格 */
|
/* 新版功能卡片宫格(更现代卡片风) */
|
||||||
.grid {
|
.feature-grid { display:grid; grid-template-columns: repeat(2, 1fr); gap: 18rpx; padding: 18rpx 18rpx 24rpx; }
|
||||||
display: grid;
|
.feature-card { background:#fff; border:2rpx solid $uni-border-color; border-radius: 16rpx; box-shadow: 0 10rpx 20rpx rgba(0,0,0,0.06); padding: 18rpx; display:flex; align-items:center; gap: 12rpx; }
|
||||||
grid-template-columns: repeat(3, 1fr);
|
.fc-icon { width: 96rpx; height: 96rpx; border-radius: 16rpx; background: $uni-bg-color-hover; display:flex; align-items:center; justify-content:center; }
|
||||||
grid-row-gap: 64rpx;
|
.fc-img { width: 72rpx; height: 72rpx; }
|
||||||
grid-column-gap: 36rpx;
|
.fc-emoji { font-size: 56rpx; }
|
||||||
padding: 40rpx 28rpx 28rpx;
|
.fc-placeholder { width: 72rpx; height: 72rpx; border-radius: 12rpx; background: $uni-bg-color-hover; border: 2rpx solid $uni-border-color; }
|
||||||
}
|
.fc-title { margin-left: 2rpx; font-size: 30rpx; font-weight: 700; color: $uni-text-color; }
|
||||||
|
|
||||||
.grid-item { display: flex; flex-direction: column; align-items: center; text-align: center; }
|
|
||||||
.icon { display: flex; align-items: center; justify-content: center; color: #6b5a2a; position: relative; }
|
|
||||||
.icon-squircle {
|
|
||||||
width: 132rpx; height: 132rpx;
|
|
||||||
border-radius: 28rpx;
|
|
||||||
background: linear-gradient(145deg, rgba(255,255,255,0.92), rgba(255,255,255,0.70));
|
|
||||||
backdrop-filter: blur(12rpx);
|
|
||||||
border: 2rpx solid rgba(203,166,61,0.22);
|
|
||||||
box-shadow: 0 10rpx 24rpx rgba(0,0,0,0.10), 0 0 0 2rpx rgba(255,255,255,0.65) inset;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
.icon-squircle::before { content: ''; position: absolute; left: -30%; top: -40%; width: 160%; height: 70%; background: linear-gradient( to bottom, rgba(255,255,255,0.9), rgba(255,255,255,0.0) ); transform: rotate(12deg); }
|
|
||||||
.icon-img { width: 96rpx; height: 96rpx; }
|
|
||||||
.icon-emoji { font-size: 60rpx; line-height: 1; }
|
|
||||||
.icon-placeholder { width: 84rpx; height: 84rpx; border-radius: 18rpx; background:
|
|
||||||
linear-gradient(135deg, rgba(212,175,55,0.18), rgba(255,255,255,0.0)),
|
|
||||||
repeating-linear-gradient(90deg, rgba(180,150,60,0.35) 0, rgba(180,150,60,0.35) 8rpx, transparent 8rpx, transparent 16rpx),
|
|
||||||
repeating-linear-gradient(0deg, rgba(180,150,60,0.20) 0, rgba(180,150,60,0.20) 8rpx, transparent 8rpx, transparent 16rpx);
|
|
||||||
box-shadow: inset 0 0 0 2rpx rgba(203,166,61,0.28);
|
|
||||||
}
|
|
||||||
.icon-text { font-size: 46rpx; font-weight: 700; }
|
|
||||||
.grid-title { display: none; }
|
|
||||||
.grid-chip { margin-top: 14rpx; padding: 6rpx 14rpx; border-radius: 999rpx; background: rgba(215,167,46,0.16); color: #5a4a1f; font-size: 22rpx; }
|
|
||||||
|
|
||||||
/* 底部操作条:浅色半透明 + 金色主按钮 */
|
/* 底部操作条:浅色半透明 + 金色主按钮 */
|
||||||
.bottom-bar {
|
.bottom-bar {
|
||||||
|
|||||||
@@ -43,17 +43,17 @@ export default {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style lang="scss">
|
||||||
.about { padding: 24rpx; }
|
.about { padding: 24rpx; }
|
||||||
.hero { padding: 32rpx 24rpx; display: flex; flex-direction: column; align-items: center; gap: 10rpx; }
|
.hero { padding: 32rpx 24rpx; display: flex; flex-direction: column; align-items: center; gap: 10rpx; }
|
||||||
.logo { width: 160rpx; height: 160rpx; border-radius: 32rpx; }
|
.logo { width: 160rpx; height: 160rpx; border-radius: 32rpx; }
|
||||||
.title { margin-top: 8rpx; font-size: 36rpx; font-weight: 800; color: #333; }
|
.title { margin-top: 8rpx; font-size: 36rpx; font-weight: 800; color: $uni-text-color; }
|
||||||
.subtitle { font-size: 26rpx; color: #888; }
|
.subtitle { font-size: 26rpx; color: $uni-text-color-grey; }
|
||||||
.card { margin-top: 18rpx; background: #fff; border-radius: 16rpx; overflow: hidden; }
|
.card { margin-top: 18rpx; background: $uni-bg-color-grey; border-radius: 16rpx; overflow: hidden; }
|
||||||
.row { display: flex; align-items: center; padding: 24rpx; border-top: 1rpx solid #f2f2f2; }
|
.row { display: flex; align-items: center; padding: 24rpx; border-top: 1rpx solid $uni-border-color; }
|
||||||
.label { color: #666; }
|
.label { color: $uni-text-color-grey; }
|
||||||
.value { margin-left: auto; color: #333; }
|
.value { margin-left: auto; color: $uni-text-color; }
|
||||||
.link { margin-left: auto; color: #1aad19; }
|
.link { margin-left: auto; color: $uni-color-primary; }
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -132,20 +132,20 @@ export default {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style lang="scss">
|
||||||
.me { padding: 24rpx; }
|
.me { padding: 24rpx; }
|
||||||
.card.user { display: flex; gap: 18rpx; padding: 22rpx; background: #fff; border-radius: 16rpx; box-shadow: 0 6rpx 16rpx rgba(0,0,0,0.06); align-items: center; }
|
.card.user { display: flex; gap: 18rpx; padding: 22rpx; background: $uni-bg-color-grey; border-radius: 16rpx; box-shadow: 0 6rpx 16rpx rgba(0,0,0,0.16); align-items: center; }
|
||||||
.avatar { width: 120rpx; height: 120rpx; border-radius: 60rpx; background: #f5f5f5; }
|
.avatar { width: 120rpx; height: 120rpx; border-radius: 60rpx; background: $uni-bg-color-hover; }
|
||||||
.meta { display: flex; flex-direction: column; gap: 6rpx; }
|
.meta { display: flex; flex-direction: column; gap: 6rpx; }
|
||||||
.name { font-size: 34rpx; font-weight: 700; color: #333; }
|
.name { font-size: 34rpx; font-weight: 700; color: $uni-text-color; }
|
||||||
.phone { font-size: 26rpx; color: #888; }
|
.phone { font-size: 26rpx; color: $uni-text-color-grey; }
|
||||||
.role { font-size: 22rpx; color: #999; }
|
.role { font-size: 22rpx; color: $uni-text-color-grey; }
|
||||||
|
|
||||||
.group { margin-top: 24rpx; background: #fff; border-radius: 16rpx; overflow: hidden; }
|
.group { margin-top: 24rpx; background: $uni-bg-color-grey; border-radius: 16rpx; overflow: hidden; }
|
||||||
.group-title { padding: 18rpx 22rpx; font-size: 26rpx; color: #999; background: #fafafa; }
|
.group-title { padding: 18rpx 22rpx; font-size: 26rpx; color: $uni-text-color-grey; background: $uni-bg-color-hover; }
|
||||||
.cell { display: flex; align-items: center; padding: 26rpx 22rpx; border-top: 1rpx solid #f0f0f0; color: #333; }
|
.cell { display: flex; align-items: center; padding: 26rpx 22rpx; border-top: 1rpx solid $uni-border-color; color: $uni-text-color; }
|
||||||
.cell .desc { margin-left: auto; margin-right: 8rpx; font-size: 22rpx; color: #999; }
|
.cell .desc { margin-left: auto; margin-right: 8rpx; font-size: 22rpx; color: $uni-text-color-grey; }
|
||||||
.cell .arrow { margin-left: auto; color: #bbb; }
|
.cell .arrow { margin-left: auto; color: #99a2b3; }
|
||||||
.cell.danger { color: #dd524d; justify-content: center; font-weight: 700; }
|
.cell.danger { color: #dd524d; justify-content: center; font-weight: 700; }
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|||||||
@@ -78,6 +78,23 @@
|
|||||||
|
|
||||||
<!-- 已选商品与合计(销售/进货 出入库) -->
|
<!-- 已选商品与合计(销售/进货 出入库) -->
|
||||||
<view v-else-if="biz==='sale' || biz==='purchase'">
|
<view v-else-if="biz==='sale' || biz==='purchase'">
|
||||||
|
<!-- 快捷操作:加商品/选择客户(或供应商)/选择日期 → 不改功能,只换排版 -->
|
||||||
|
<view class="info-card">
|
||||||
|
<view class="info-field" @click="biz==='sale' ? chooseCustomer() : chooseSupplier()">
|
||||||
|
<text class="info-label">{{ biz==='sale' ? '客户' : '供应商' }}</text>
|
||||||
|
<text class="info-value">{{ biz==='sale' ? customerLabel : supplierLabel }}</text>
|
||||||
|
</view>
|
||||||
|
<picker class="info-field" mode="date" :value="order.orderTime" @change="onDateChange">
|
||||||
|
<view>
|
||||||
|
<text class="info-label">时间</text>
|
||||||
|
<text class="info-value">{{ order.orderTime }}</text>
|
||||||
|
</view>
|
||||||
|
</picker>
|
||||||
|
<button class="info-action" @click="chooseProduct">
|
||||||
|
<image src="/static/icons/icons8-shopping-cart-100.png" class="info-icon" mode="aspectFit" />
|
||||||
|
<text>加商品</text>
|
||||||
|
</button>
|
||||||
|
</view>
|
||||||
<view class="summary">
|
<view class="summary">
|
||||||
<text>选中货品({{ totalQuantity }})</text>
|
<text>选中货品({{ totalQuantity }})</text>
|
||||||
<text>合计金额:¥ {{ totalAmount.toFixed(2) }}</text>
|
<text>合计金额:¥ {{ totalAmount.toFixed(2) }}</text>
|
||||||
@@ -116,7 +133,7 @@
|
|||||||
|
|
||||||
<!-- 购物车空态 -->
|
<!-- 购物车空态 -->
|
||||||
<view class="empty" v-if="!items.length">
|
<view class="empty" v-if="!items.length">
|
||||||
<image src="/static/logo.png" mode="widthFix" class="empty-img"></image>
|
<image src="/static/icons/icons8-shopping-cart-100.png" mode="widthFix" class="empty-img"></image>
|
||||||
<text class="empty-text">购物车里空空如也</text>
|
<text class="empty-text">购物车里空空如也</text>
|
||||||
<text class="empty-sub">扫描或点击 “+” 选择商品吧</text>
|
<text class="empty-sub">扫描或点击 “+” 选择商品吧</text>
|
||||||
</view>
|
</view>
|
||||||
@@ -344,37 +361,51 @@
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style lang="scss">
|
||||||
.order { padding-bottom: 140rpx; }
|
.order { padding-bottom: 140rpx; }
|
||||||
.tabs { display: flex; justify-content: space-around; padding: 16rpx 24rpx; }
|
.tabs { display: flex; justify-content: space-around; padding: 16rpx 24rpx; }
|
||||||
.tabs text { color: #666; }
|
.tabs text { color: $uni-text-color-grey; }
|
||||||
.tabs text.active { color: #333; font-weight: 700; }
|
.tabs text.active { color: $uni-text-color; font-weight: 700; }
|
||||||
.subtabs { display: flex; gap: 16rpx; padding: 0 24rpx 16rpx; }
|
.subtabs { display: flex; gap: 16rpx; padding: 0 24rpx 16rpx; }
|
||||||
.subbtn { padding: 10rpx 20rpx; border-radius: 999rpx; background: #f4f4f4; color: #666; }
|
.subbtn { padding: 10rpx 20rpx; border-radius: 999rpx; background: $uni-bg-color-hover; color: $uni-text-color-grey; }
|
||||||
.subbtn.active { background: #ffe69a; color: #3f320f; }
|
.subbtn.active { background: $uni-color-primary; color: #fff; }
|
||||||
.field { display:flex; justify-content: space-between; padding: 22rpx 24rpx; background: #fff; border-bottom: 1rpx solid #eee; }
|
.field { display:flex; justify-content: space-between; padding: 22rpx 24rpx; background: $uni-bg-color-grey; border-bottom: 1rpx solid $uni-border-color; }
|
||||||
.label { color:#666; }
|
.label { color:$uni-text-color-grey; }
|
||||||
.value { color:#333; }
|
.value { color:$uni-text-color; }
|
||||||
.summary { display:flex; justify-content: space-between; padding: 22rpx 24rpx; color:#333; }
|
/* 汇总卡片:白底卡片+主色按钮 */
|
||||||
.add { margin: 24rpx auto; width: 120rpx; height: 120rpx; border-radius: 20rpx; background: #c7eef7; color:#16a1c4; font-size: 72rpx; display:flex; align-items:center; justify-content:center; }
|
.summary { display:flex; justify-content: space-between; align-items:center; padding: 16rpx 18rpx; margin: 12rpx 16rpx; background:#fff; border:2rpx solid $uni-border-color; border-radius: 16rpx; color:$uni-text-color; }
|
||||||
.empty { display:flex; flex-direction: column; align-items:center; padding: 60rpx 0; color:#888; }
|
/* 加号改为图标按钮 */
|
||||||
.empty-img { width: 220rpx; margin-bottom: 20rpx; }
|
.add { margin: 18rpx auto; width: 120rpx; height: 120rpx; border-radius: 24rpx; background: #fff; border:2rpx solid $uni-color-primary; color:$uni-color-primary; font-size: 72rpx; display:flex; align-items:center; justify-content:center; box-shadow: 0 6rpx 16rpx rgba(76,141,255,0.12); }
|
||||||
|
.empty { display:flex; flex-direction: column; align-items:center; padding: 60rpx 0; color:$uni-text-color-grey; }
|
||||||
|
.empty-img { width: 160rpx; margin-bottom: 16rpx; }
|
||||||
.empty-text { margin-bottom: 8rpx; }
|
.empty-text { margin-bottom: 8rpx; }
|
||||||
.list { background:#fff; }
|
.list { background:#fff; margin: 0 16rpx 12rpx; border:2rpx solid $uni-border-color; border-radius: 16rpx; overflow: hidden; }
|
||||||
.row { display:grid; grid-template-columns: 1.5fr 1fr 1fr 1fr; gap: 12rpx; padding: 16rpx 12rpx; align-items:center; border-bottom: 1rpx solid #f3f3f3; }
|
.row { display:grid; grid-template-columns: 1.5fr 1fr 1fr 1fr; gap: 12rpx; padding: 16rpx 12rpx; align-items:center; border-bottom: 1rpx solid $uni-border-color; }
|
||||||
.col.name { padding-left: 12rpx; }
|
.col.name { padding-left: 12rpx; }
|
||||||
.col.amount { text-align:right; padding-right: 12rpx; color:#333; }
|
.col.amount { text-align:right; padding-right: 12rpx; color:$uni-text-color; }
|
||||||
.bottom { position: fixed; left:0; right:0; bottom:0; background:#fff; padding: 16rpx 24rpx calc(env(safe-area-inset-bottom) + 16rpx); box-shadow: 0 -4rpx 12rpx rgba(0,0,0,0.06); }
|
.bottom { position: fixed; left:0; right:0; bottom:0; background:$uni-bg-color-grey; padding: 16rpx 24rpx calc(env(safe-area-inset-bottom) + 16rpx); box-shadow: 0 -4rpx 12rpx rgba(0,0,0,0.16); }
|
||||||
.primary { width: 100%; background: linear-gradient(135deg, #FFE69A 0%, #F4CF62 45%, #D7A72E 100%); color:#493c1b; border-radius: 999rpx; padding: 20rpx 0; font-weight:800; }
|
.primary { width: 100%; background: $uni-color-primary; color:#fff; border-radius: 999rpx; padding: 20rpx 0; font-weight:800; }
|
||||||
/* 收款/付款页样式 */
|
/* 收款/付款页样式 */
|
||||||
.pay-row .pay-input { text-align: right; color:#333; }
|
.pay-row .pay-input { text-align: right; color:$uni-text-color; }
|
||||||
.textarea { position: relative; padding: 16rpx 24rpx; background:#fff; border-top: 1rpx solid #eee; }
|
.textarea { position: relative; padding: 16rpx 24rpx; background:$uni-bg-color-grey; border-top: 1rpx solid $uni-border-color; }
|
||||||
.amount-badge { position: absolute; right: 24rpx; top: -36rpx; background: #d1f0ff; color:#107e9b; padding: 8rpx 16rpx; border-radius: 12rpx; font-size: 24rpx; }
|
.amount-badge { position: absolute; right: 24rpx; top: -36rpx; background: $uni-color-primary; color:#fff; padding: 8rpx 16rpx; border-radius: 12rpx; font-size: 24rpx; }
|
||||||
.date-mini { position: absolute; right: 24rpx; bottom: 20rpx; color:#666; font-size: 24rpx; }
|
.date-mini { position: absolute; right: 24rpx; bottom: 20rpx; color:$uni-text-color-grey; font-size: 24rpx; }
|
||||||
/* 分类chips样式:选中后文字变红 */
|
/* 分类chips样式:选中后文字变红 */
|
||||||
.chips { display:flex; flex-wrap: wrap; gap: 12rpx; padding: 12rpx 24rpx; }
|
.chips { display:flex; flex-wrap: wrap; gap: 12rpx; padding: 12rpx 24rpx; }
|
||||||
.chip { padding: 10rpx 20rpx; border-radius: 999rpx; background: #f4f4f4; color:#666; }
|
.chip { padding: 10rpx 20rpx; border-radius: 999rpx; background: $uni-bg-color-hover; color:$uni-text-color-grey; }
|
||||||
.chip.active { color: #e54d42; }
|
.chip.active { background: $uni-color-primary; color:#fff; }
|
||||||
|
|
||||||
|
/* 顶部旧 tabs 简化隐藏(改为更简洁布局) */
|
||||||
|
.tabs { display: none; }
|
||||||
|
|
||||||
|
/* 快捷操作宫格 */
|
||||||
|
/* 信息卡片式表达(更稳重) */
|
||||||
|
.info-card { display:grid; grid-template-columns: 1fr 1fr auto; gap: 10rpx; margin: 12rpx 16rpx 0; background:#fff; border:2rpx solid $uni-border-color; border-radius: 16rpx; padding: 10rpx; align-items:center; }
|
||||||
|
.info-field { background:$uni-bg-color-grey; border:2rpx solid $uni-border-color; border-radius: 12rpx; padding: 10rpx 12rpx; }
|
||||||
|
.info-label { color:$uni-text-color-grey; font-size: 24rpx; margin-right: 8rpx; }
|
||||||
|
.info-value { color:$uni-text-color; font-weight: 700; }
|
||||||
|
.info-action { display:flex; align-items:center; gap: 6rpx; background:$uni-color-primary; color:#fff; border-radius: 12rpx; padding: 12rpx 14rpx; }
|
||||||
|
.info-icon { width: 32rpx; height: 32rpx; }
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,11 @@
|
|||||||
<template>
|
<template>
|
||||||
<scroll-view scroll-y class="page">
|
<scroll-view scroll-y class="page">
|
||||||
<view class="card">
|
<!-- 顶部标题与操作提示 -->
|
||||||
|
<view class="hero small">
|
||||||
|
<text class="title">编辑货品</text>
|
||||||
|
<text class="sub">完善基础信息与价格</text>
|
||||||
|
</view>
|
||||||
|
<view class="card">
|
||||||
<view class="row">
|
<view class="row">
|
||||||
<text class="label">商品名称</text>
|
<text class="label">商品名称</text>
|
||||||
<input v-model.trim="form.name" placeholder="必填" />
|
<input v-model.trim="form.name" placeholder="必填" />
|
||||||
@@ -37,7 +42,7 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="card">
|
<view class="card">
|
||||||
<view class="row">
|
<view class="row">
|
||||||
<text class="label">库存与安全库存</text>
|
<text class="label">库存与安全库存</text>
|
||||||
</view>
|
</view>
|
||||||
@@ -70,10 +75,10 @@
|
|||||||
<textarea v-model.trim="form.remark" placeholder="可选" auto-height />
|
<textarea v-model.trim="form.remark" placeholder="可选" auto-height />
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="fixed">
|
<view class="fixed">
|
||||||
<button type="default" @click="save(false)">保存</button>
|
<button class="ghost" @click="save(false)">保存</button>
|
||||||
<button type="primary" @click="save(true)">保存并继续</button>
|
<button class="primary" @click="save(true)">保存并继续</button>
|
||||||
</view>
|
</view>
|
||||||
</scroll-view>
|
</scroll-view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -199,15 +204,20 @@ export default {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style lang="scss">
|
||||||
.page { background:#f6f6f6; height: 100vh; }
|
.page { background:$uni-bg-color; height: 100vh; }
|
||||||
.card { background:#fff; margin: 16rpx; padding: 16rpx; border-radius: 12rpx; }
|
.hero.small { margin: 16rpx; padding: 16rpx; background: #ffffff; border: 2rpx solid $uni-border-color; border-radius: 16rpx; }
|
||||||
|
.hero.small .title { font-size: 32rpx; font-weight: 800; color: $uni-text-color; }
|
||||||
|
.hero.small .sub { margin-left: 12rpx; color: $uni-text-color-grey; font-size: 24rpx; }
|
||||||
|
.card { background:#ffffff; margin: 16rpx; padding: 16rpx; border-radius: 16rpx; border: 2rpx solid $uni-border-color; }
|
||||||
.row { display:flex; gap: 12rpx; align-items: center; margin-bottom: 12rpx; }
|
.row { display:flex; gap: 12rpx; align-items: center; margin-bottom: 12rpx; }
|
||||||
.label { width: 180rpx; color:#666; }
|
.label { width: 180rpx; color:$uni-text-color-grey; }
|
||||||
.row input { flex:1; background:#f7f7f7; border-radius: 10rpx; padding: 12rpx; }
|
.row input { flex:1; background:$uni-bg-color-hover; border-radius: 12rpx; padding: 14rpx; color:$uni-text-color; border: 2rpx solid $uni-border-color; }
|
||||||
.picker { padding: 8rpx 12rpx; background:#f0f0f0; border-radius: 10rpx; color:#666; margin-left: 8rpx; }
|
.picker { padding: 10rpx 14rpx; background:$uni-bg-color-hover; border-radius: 12rpx; color:$uni-text-color-grey; margin-left: 8rpx; border: 2rpx solid $uni-border-color; }
|
||||||
.prices input { width: 30%; }
|
.prices input { width: 30%; }
|
||||||
.fixed { position: fixed; left: 0; right: 0; bottom: 0; background:#fff; padding: 12rpx 16rpx; display:flex; gap: 16rpx; }
|
.fixed { position: fixed; left: 0; right: 0; bottom: 0; background:#ffffff; padding: 12rpx 16rpx; display:flex; gap: 16rpx; border-top: 2rpx solid $uni-border-color; }
|
||||||
|
.fixed .primary { flex:1; background: $uni-color-primary; color:#fff; border-radius: 999rpx; padding: 18rpx 0; font-weight: 700; }
|
||||||
|
.fixed .ghost { flex:1; background:#ffffff; color:$uni-color-primary; border: 2rpx solid rgba($uni-color-primary, .45); border-radius: 999rpx; padding: 18rpx 0; }
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -113,23 +113,23 @@ export default {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style lang="scss">
|
||||||
.page { display:flex; flex-direction: column; height: 100vh; }
|
.page { display:flex; flex-direction: column; height: 100vh; }
|
||||||
.tabs { display:flex; background:#fff; }
|
.tabs { display:flex; background:$uni-bg-color-grey; }
|
||||||
.tab { flex:1; text-align:center; padding: 20rpx 0; color:#666; }
|
.tab { flex:1; text-align:center; padding: 20rpx 0; color:$uni-text-color-grey; }
|
||||||
.tab.active { color:#18b566; font-weight: 600; }
|
.tab.active { color:$uni-color-primary; font-weight: 600; }
|
||||||
.search { display:flex; gap: 12rpx; padding: 16rpx; background:#fff; align-items: center; }
|
.search { display:flex; gap: 12rpx; padding: 16rpx; background:$uni-bg-color-grey; align-items: center; }
|
||||||
.search input { flex:1; background:#f6f6f6; border-radius: 12rpx; padding: 12rpx; }
|
.search input { flex:1; background:$uni-bg-color-hover; border-radius: 12rpx; padding: 12rpx; color: $uni-text-color; }
|
||||||
.picker { padding: 8rpx 12rpx; background:#f0f0f0; border-radius: 10rpx; color:#666; }
|
.picker { padding: 8rpx 12rpx; background:$uni-bg-color-hover; border-radius: 10rpx; color:$uni-text-color-grey; }
|
||||||
.list { flex:1; }
|
.list { flex:1; }
|
||||||
.item { display:flex; padding: 20rpx; background:#fff; border-bottom: 1rpx solid #f1f1f1; }
|
.item { display:flex; padding: 20rpx; background:$uni-bg-color-grey; border-bottom: 1rpx solid $uni-border-color; }
|
||||||
.thumb { width: 120rpx; height: 120rpx; border-radius: 12rpx; margin-right: 16rpx; background:#fafafa; }
|
.thumb { width: 120rpx; height: 120rpx; border-radius: 12rpx; margin-right: 16rpx; background:$uni-bg-color-hover; }
|
||||||
.content { flex:1; }
|
.content { flex:1; }
|
||||||
.name { color:#333; margin-bottom: 6rpx; font-weight: 600; }
|
.name { color:$uni-text-color; margin-bottom: 6rpx; font-weight: 600; }
|
||||||
.meta { color:#888; font-size: 24rpx; }
|
.meta { color:$uni-text-color-grey; font-size: 24rpx; }
|
||||||
.price { margin-left: 20rpx; color:#f60; }
|
.price { margin-left: 20rpx; color:$uni-color-primary; }
|
||||||
.empty { height: 60vh; display:flex; align-items:center; justify-content:center; color:#999; }
|
.empty { height: 60vh; display:flex; align-items:center; justify-content:center; color:$uni-text-color-grey; }
|
||||||
.fab { position: fixed; right: 30rpx; bottom: 120rpx; width: 100rpx; height: 100rpx; background:#18b566; color:#fff; border-radius: 50rpx; text-align:center; line-height: 100rpx; font-size: 48rpx; box-shadow: 0 8rpx 20rpx rgba(0,0,0,0.15); }
|
.fab { position: fixed; right: 30rpx; bottom: 120rpx; width: 100rpx; height: 100rpx; background:$uni-color-primary; color:#fff; border-radius: 50rpx; text-align:center; line-height: 100rpx; font-size: 48rpx; box-shadow: 0 8rpx 20rpx rgba(0,0,0,0.15); }
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -37,14 +37,14 @@
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style lang="scss">
|
||||||
.page { display:flex; flex-direction: column; height: 100vh; }
|
.page { display:flex; flex-direction: column; height: 100vh; }
|
||||||
.search { display:flex; gap: 12rpx; padding: 16rpx; background:#fff; }
|
.search { display:flex; gap: 12rpx; padding: 16rpx; background:$uni-bg-color-grey; }
|
||||||
.search input { flex:1; background:#f6f6f6; border-radius: 12rpx; padding: 12rpx; }
|
.search input { flex:1; background:$uni-bg-color-hover; border-radius: 12rpx; padding: 12rpx; color:$uni-text-color; }
|
||||||
.list { flex:1; }
|
.list { flex:1; }
|
||||||
.item { padding: 20rpx 24rpx; background:#fff; border-bottom: 1rpx solid #f1f1f1; }
|
.item { padding: 20rpx 24rpx; background:$uni-bg-color-grey; border-bottom: 1rpx solid $uni-border-color; }
|
||||||
.name { color:#333; margin-bottom: 6rpx; }
|
.name { color:$uni-text-color; margin-bottom: 6rpx; }
|
||||||
.meta { color:#888; font-size: 24rpx; }
|
.meta { color:$uni-text-color-grey; font-size: 24rpx; }
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -267,25 +267,25 @@ export default {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style lang="scss">
|
||||||
.report { padding: 20rpx; }
|
.report { padding: 20rpx; }
|
||||||
.modes { display: flex; gap: 12rpx; margin-bottom: 14rpx; }
|
.modes { display: flex; gap: 12rpx; margin-bottom: 14rpx; }
|
||||||
.mode-tab { flex: 1; text-align: center; padding: 16rpx 0; border-radius: 999rpx; background: #f4f4f4; color: #666; border: 1rpx solid #e9e9e9; }
|
.mode-tab { flex: 1; text-align: center; padding: 16rpx 0; border-radius: 999rpx; background: $uni-bg-color-hover; color: $uni-text-color-grey; border: 1rpx solid $uni-border-color; }
|
||||||
.mode-tab.active { background: #1aad19; color: #fff; border-color: #1aad19; font-weight: 700; }
|
.mode-tab.active { background: $uni-color-primary; color: #fff; border-color: $uni-color-primary; font-weight: 700; }
|
||||||
.toolbar { display: flex; align-items: center; gap: 8rpx; background: #fff; padding: 14rpx 16rpx; border-radius: 12rpx; }
|
.toolbar { display: flex; align-items: center; gap: 8rpx; background: $uni-bg-color-grey; padding: 14rpx 16rpx; border-radius: 12rpx; }
|
||||||
.date { padding: 10rpx 16rpx; border: 1rpx solid #eee; border-radius: 8rpx; }
|
.date { padding: 10rpx 16rpx; border: 1rpx solid $uni-border-color; border-radius: 8rpx; color: $uni-text-color; }
|
||||||
.tabs { display: flex; gap: 16rpx; margin-top: 14rpx; }
|
.tabs { display: flex; gap: 16rpx; margin-top: 14rpx; }
|
||||||
.tab { padding: 12rpx 18rpx; border-radius: 999rpx; background: #f4f4f4; color: #666; }
|
.tab { padding: 12rpx 18rpx; border-radius: 999rpx; background: $uni-bg-color-hover; color: $uni-text-color-grey; }
|
||||||
.tab.active { background: #1aad19; color: #fff; }
|
.tab.active { background: $uni-color-primary; color: #fff; }
|
||||||
.summary { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8rpx; margin-top: 14rpx; }
|
.summary { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8rpx; margin-top: 14rpx; }
|
||||||
.summary .item { background: #fff; border-radius: 12rpx; padding: 16rpx; }
|
.summary .item { background: $uni-bg-color-grey; border-radius: 12rpx; padding: 16rpx; }
|
||||||
.summary .label { font-size: 22rpx; color: #888; }
|
.summary .label { font-size: 22rpx; color: $uni-text-color-grey; }
|
||||||
.summary .value { display: block; margin-top: 8rpx; font-weight: 700; color: #333; }
|
.summary .value { display: block; margin-top: 8rpx; font-weight: 700; color: $uni-text-color; }
|
||||||
.card { margin-top: 16rpx; background: #fff; border-radius: 12rpx; padding: 16rpx; }
|
.card { margin-top: 16rpx; background: $uni-bg-color-grey; border-radius: 12rpx; padding: 16rpx; }
|
||||||
.row-head { display: flex; align-items: center; gap: 12rpx; }
|
.row-head { display: flex; align-items: center; gap: 12rpx; }
|
||||||
.thumb { width: 72rpx; height: 72rpx; border-radius: 8rpx; background: #f2f2f2; }
|
.thumb { width: 72rpx; height: 72rpx; border-radius: 8rpx; background: $uni-bg-color-hover; }
|
||||||
.title { font-size: 28rpx; font-weight: 700; }
|
.title { font-size: 28rpx; font-weight: 700; color: $uni-text-color; }
|
||||||
.row-body { margin-top: 10rpx; color: #666; }
|
.row-body { margin-top: 10rpx; color: $uni-text-color-grey; }
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -37,14 +37,14 @@ export default {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style lang="scss">
|
||||||
.page { padding-bottom: 140rpx; }
|
.page { padding-bottom: 140rpx; }
|
||||||
.field { display:flex; justify-content: space-between; padding: 22rpx 24rpx; background:#fff; border-bottom:1rpx solid #eee; }
|
.field { display:flex; justify-content: space-between; padding: 22rpx 24rpx; background:$uni-bg-color-grey; border-bottom:1rpx solid $uni-border-color; }
|
||||||
.label { color:#666; }
|
.label { color:$uni-text-color-grey; }
|
||||||
.value { color:#333; text-align: right; flex: 1; }
|
.value { color:$uni-text-color; text-align: right; flex: 1; }
|
||||||
.textarea { padding: 16rpx 24rpx; background:#fff; margin-top: 12rpx; }
|
.textarea { padding: 16rpx 24rpx; background:$uni-bg-color-grey; margin-top: 12rpx; }
|
||||||
.bottom { position: fixed; left:0; right:0; bottom:0; background:#fff; padding: 16rpx 24rpx calc(env(safe-area-inset-bottom) + 16rpx); box-shadow: 0 -4rpx 12rpx rgba(0,0,0,0.06); }
|
.bottom { position: fixed; left:0; right:0; bottom:0; background:$uni-bg-color-grey; padding: 16rpx 24rpx calc(env(safe-area-inset-bottom) + 16rpx); box-shadow: 0 -4rpx 12rpx rgba(0,0,0,0.10); }
|
||||||
.primary { width: 100%; background: linear-gradient(135deg, #A0E4FF 0%, #17A2C4 100%); color:#fff; border-radius: 999rpx; padding: 20rpx 0; }
|
.primary { width: 100%; background: $uni-color-primary; color:#fff; border-radius: 999rpx; padding: 20rpx 0; }
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
BIN
frontend/static/icons/home.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
frontend/static/icons/icons8-account-male-100.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
frontend/static/icons/icons8-more-details-100.png
Normal file
|
After Width: | Height: | Size: 831 B |
BIN
frontend/static/icons/icons8-purchase-order-100.png
Normal file
|
After Width: | Height: | Size: 387 B |
BIN
frontend/static/icons/icons8-shopping-cart-100.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
frontend/static/icons/product.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
@@ -15,26 +15,26 @@
|
|||||||
/* 颜色变量 */
|
/* 颜色变量 */
|
||||||
|
|
||||||
/* 行为相关颜色 */
|
/* 行为相关颜色 */
|
||||||
$uni-color-primary: #D7A72E; /* 奢华金色主色 */
|
$uni-color-primary: #4C8DFF; /* 藏青系主色(高亮) */
|
||||||
$uni-color-success: #4cd964;
|
$uni-color-success: #4cd964;
|
||||||
$uni-color-warning: #f0ad4e;
|
$uni-color-warning: #f0ad4e;
|
||||||
$uni-color-error: #dd524d;
|
$uni-color-error: #dd524d;
|
||||||
|
|
||||||
/* 文字基本颜色 */
|
/* 文字基本颜色 */
|
||||||
$uni-text-color:#333;//基本色
|
$uni-text-color:#111;//基本色(更高对比深色文字)
|
||||||
$uni-text-color-inverse:#fff;//反色
|
$uni-text-color-inverse:#fff;//反色(浅色背景下的反向场景)
|
||||||
$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
|
$uni-text-color-grey:#444;//辅助灰(提升对比度)
|
||||||
$uni-text-color-placeholder: #808080;
|
$uni-text-color-placeholder: #808080;
|
||||||
$uni-text-color-disable:#c0c0c0;
|
$uni-text-color-disable:#c0c0c0;
|
||||||
|
|
||||||
/* 背景颜色 */
|
/* 背景颜色 */
|
||||||
$uni-bg-color:#ffffff;
|
$uni-bg-color:#ffffff; // 浅色基础背景
|
||||||
$uni-bg-color-grey:#f8f8f8;
|
$uni-bg-color-grey:#ffffff; // 面板/卡片统一白底
|
||||||
$uni-bg-color-hover:#f1f1f1;//点击状态颜色
|
$uni-bg-color-hover:#f1f1f1;//点击状态颜色
|
||||||
$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
|
$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色回调为浅色适配
|
||||||
|
|
||||||
/* 边框颜色 */
|
/* 边框颜色 */
|
||||||
$uni-border-color:#c8c7cc;
|
$uni-border-color:#e5e7eb;
|
||||||
|
|
||||||
/* 尺寸变量 */
|
/* 尺寸变量 */
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ $uni-spacing-col-lg: 12px;
|
|||||||
$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
|
$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
|
||||||
|
|
||||||
/* 文章场景相关 */
|
/* 文章场景相关 */
|
||||||
$uni-color-title: #2C405A; // 文章标题颜色
|
$uni-color-title: #2C405A; // 文章标题颜色(深色)
|
||||||
$uni-font-size-title:20px;
|
$uni-font-size-title:20px;
|
||||||
$uni-color-subtitle: #555555; // 二级标题颜色
|
$uni-color-subtitle: #555555; // 二级标题颜色
|
||||||
$uni-font-size-subtitle:26px;
|
$uni-font-size-subtitle:26px;
|
||||||
|
|||||||
11
frontend/unpackage/dist/dev/.nvue/app.css.js
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||||
|
var __commonJS = (cb, mod) => function __require() {
|
||||||
|
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
||||||
|
};
|
||||||
|
var require_app_css = __commonJS({
|
||||||
|
"app.css.js"(exports) {
|
||||||
|
const _style_0 = {};
|
||||||
|
exports.styles = [_style_0];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
export default require_app_css();
|
||||||
2
frontend/unpackage/dist/dev/.nvue/app.js
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
Promise.resolve("./app.css.js").then(() => {
|
||||||
|
});
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"app.js","sources":["App.vue","main.js"],"sourcesContent":["<script>\r\n\texport default {\r\n\t\tonLaunch: function() {\r\n\t\t\tconsole.log('App Launch')\r\n\t\t},\r\n\t\tonShow: function() {\r\n\t\t\tconsole.log('App Show')\r\n\t\t},\r\n\t\tonHide: function() {\r\n\t\t\tconsole.log('App Hide')\r\n\t\t}\r\n\t}\r\n</script>\r\n\r\n<style>\r\n\t/*每个页面公共css */\r\n</style>\r\n","import App from './App'\r\n\r\n// #ifndef VUE3\r\nimport Vue from 'vue'\r\nimport './uni.promisify.adaptor'\r\nVue.config.productionTip = false\r\nApp.mpType = 'app'\r\nconst app = new Vue({\r\n ...App\r\n})\r\napp.$mount()\r\n// #endif\r\n\r\n// #ifdef VUE3\r\nimport { createSSRApp } from 'vue'\r\nexport function createApp() {\r\n const app = createSSRApp(App)\r\n return {\r\n app\r\n }\r\n}\r\n// #endif\r\n\r\n// 规范化 WebSocket 关闭码(仅微信小程序)\r\n// #ifdef MP-WEIXIN\r\nif (typeof uni !== 'undefined' && typeof uni.connectSocket === 'function') {\r\n const _connectSocket = uni.connectSocket\r\n uni.connectSocket = function(options) {\r\n const task = _connectSocket.call(this, options)\r\n if (task && typeof task.close === 'function') {\r\n const _close = task.close\r\n task.close = function(params = {}) {\r\n if (params && typeof params === 'object') {\r\n const codeNum = Number(params.code)\r\n const isValid = codeNum === 1000 || (codeNum >= 3000 && codeNum <= 4999)\r\n if (!isValid) {\r\n params.code = 1000\r\n if (!params.reason) params.reason = 'normalized from invalid close code'\r\n }\r\n }\r\n return _close.call(this, params)\r\n }\r\n }\r\n return task\r\n }\r\n}\r\n// #endif"],"names":["uni","createSSRApp","App"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AACC,MAAK,YAAU;AAAA,EACd,UAAU,WAAW;AACpBA,kBAAAA,MAAA,MAAA,OAAA,gBAAY,YAAY;AAAA,EACxB;AAAA,EACD,QAAQ,WAAW;AAClBA,kBAAAA,MAAY,MAAA,OAAA,gBAAA,UAAU;AAAA,EACtB;AAAA,EACD,QAAQ,WAAW;AAClBA,kBAAAA,MAAY,MAAA,OAAA,iBAAA,UAAU;AAAA,EACvB;AACD;ACIM,SAAS,YAAY;AAC1B,QAAM,MAAMC,cAAY,aAACC,SAAG;AAC5B,SAAO;AAAA,IACL;AAAA,EACD;AACH;AAKA,IAAI,OAAOF,cAAG,UAAK,eAAe,OAAOA,cAAAA,MAAI,kBAAkB,YAAY;AACzE,QAAM,iBAAiBA,cAAAA,MAAI;AAC3BA,sBAAI,gBAAgB,SAAS,SAAS;AACpC,UAAM,OAAO,eAAe,KAAK,MAAM,OAAO;AAC9C,QAAI,QAAQ,OAAO,KAAK,UAAU,YAAY;AAC5C,YAAM,SAAS,KAAK;AACpB,WAAK,QAAQ,SAAS,SAAS,IAAI;AACjC,YAAI,UAAU,OAAO,WAAW,UAAU;AACxC,gBAAM,UAAU,OAAO,OAAO,IAAI;AAClC,gBAAM,UAAU,YAAY,OAAS,WAAW,OAAQ,WAAW;AACnE,cAAI,CAAC,SAAS;AACZ,mBAAO,OAAO;AACd,gBAAI,CAAC,OAAO;AAAQ,qBAAO,SAAS;AAAA,UACrC;AAAA,QACF;AACD,eAAO,OAAO,KAAK,MAAM,MAAM;AAAA,MAChC;AAAA,IACF;AACD,WAAO;AAAA,EACR;AACH;;;"}
|
{"version":3,"file":"app.js","sources":["App.vue","main.js"],"sourcesContent":["\"D:\\wx\\PartsInquiry\\frontend\\static\\icons\\icons8-account-male-100.png\"<script>\n\texport default {\n\t\tonLaunch: function() {\n\t\t\tconsole.log('App Launch')\n\t\t},\n\t\tonShow: function() {\n\t\t\tconsole.log('App Show')\n\t\t},\n\t\tonHide: function() {\n\t\t\tconsole.log('App Hide')\n\t\t}\n\t}\n</script>\n\n<style lang=\"scss\">\n\t/*每个页面公共css */\n\tpage{\n\t\tbackground-color: $uni-bg-color;\n\t\tcolor: $uni-text-color;\n\t\t-webkit-font-smoothing: antialiased;\n\t\t-moz-osx-font-smoothing: grayscale;\n\t}\n\t/* 强制所有端白底(防止小程序旧样式残留覆盖) */\n\t.uni-page-body, uni-page-body {\n\t\tbackground-color: $uni-bg-color !important;\n\t}\n\t/* 小程序节点:强制 wx-view 白底 */\n\twx-view { background-color: #ffffff !important; }\n\t/* 例外:需要有主色底的元素,强制还原 */\n\t.cta, .notice-left, .fab {\n\t\tbackground-color: $uni-color-primary !important;\n\t\tborder-color: $uni-color-primary !important;\n\t\tcolor: #ffffff !important;\n\t}\n\t.cta .cta-text { color:#ffffff !important; font-weight: 700; }\n\t/* 覆盖历史深色背景(统一纯白/浅灰) */\n\t.home, .report, .order, .me, .page { background: $uni-bg-color !important; }\n\t.notice, .hero, .grid-wrap, .panel, .card, .tabs, .seg, .list, .search, .summary, .toolbar, .item { background: $uni-bg-color-grey !important; }\n\t.text-secondary{\n\t\tcolor:$uni-text-color-grey;\n\t}\n\t.card{\n\t\tbackground-color:$uni-bg-color-grey;\n\t\tborder:1px solid $uni-border-color;\n\t\tborder-radius: 8rpx;\n\t}\n\t.primary{\n\t\tcolor:$uni-color-primary;\n\t}\n\n\t/* 底部原生 tabBar(H5/APP端可生效)字体加大 */\n\t.uni-tabbar__label, .uni-tabbar__text{\n\t\tfont-size: 28rpx !important;\n\t\tfont-weight: 700 !important;\n\t}\n\n\t/* 图表统一透明底(常见容器/画布选择器) */\n\tcanvas, .ec-canvas, .echarts, .charts, .chart, .ucharts-box{\n\t\tbackground-color: transparent !important;\n\t}\n</style>\n","import App from './App'\r\n\r\n// #ifndef VUE3\r\nimport Vue from 'vue'\r\nimport './uni.promisify.adaptor'\r\nVue.config.productionTip = false\r\nApp.mpType = 'app'\r\nconst app = new Vue({\r\n ...App\r\n})\r\napp.$mount()\r\n// #endif\r\n\r\n// #ifdef VUE3\r\nimport { createSSRApp } from 'vue'\r\nexport function createApp() {\r\n const app = createSSRApp(App)\r\n return {\r\n app\r\n }\r\n}\r\n// #endif\r\n\r\n// 规范化 WebSocket 关闭码(仅微信小程序)\r\n// #ifdef MP-WEIXIN\r\nif (typeof uni !== 'undefined' && typeof uni.connectSocket === 'function') {\r\n const _connectSocket = uni.connectSocket\r\n uni.connectSocket = function(options) {\r\n const task = _connectSocket.call(this, options)\r\n if (task && typeof task.close === 'function') {\r\n const _close = task.close\r\n task.close = function(params = {}) {\r\n if (params && typeof params === 'object') {\r\n const codeNum = Number(params.code)\r\n const isValid = codeNum === 1000 || (codeNum >= 3000 && codeNum <= 4999)\r\n if (!isValid) {\r\n params.code = 1000\r\n if (!params.reason) params.reason = 'normalized from invalid close code'\r\n }\r\n }\r\n return _close.call(this, params)\r\n }\r\n }\r\n return task\r\n }\r\n}\r\n// #endif"],"names":["uni","createSSRApp","App"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AACC,MAAK,YAAU;AAAA,EACd,UAAU,WAAW;AACpBA,kBAAAA,MAAY,MAAA,OAAA,gBAAA,YAAY;AAAA,EACxB;AAAA,EACD,QAAQ,WAAW;AAClBA,kBAAAA,MAAY,MAAA,OAAA,gBAAA,UAAU;AAAA,EACtB;AAAA,EACD,QAAQ,WAAW;AAClBA,kBAAAA,MAAY,MAAA,OAAA,iBAAA,UAAU;AAAA,EACvB;AACD;ACIM,SAAS,YAAY;AAC1B,QAAM,MAAMC,cAAY,aAACC,SAAG;AAC5B,SAAO;AAAA,IACL;AAAA,EACD;AACH;AAKA,IAAI,OAAOF,cAAG,UAAK,eAAe,OAAOA,cAAAA,MAAI,kBAAkB,YAAY;AACzE,QAAM,iBAAiBA,cAAAA,MAAI;AAC3BA,sBAAI,gBAAgB,SAAS,SAAS;AACpC,UAAM,OAAO,eAAe,KAAK,MAAM,OAAO;AAC9C,QAAI,QAAQ,OAAO,KAAK,UAAU,YAAY;AAC5C,YAAM,SAAS,KAAK;AACpB,WAAK,QAAQ,SAAS,SAAS,IAAI;AACjC,YAAI,UAAU,OAAO,WAAW,UAAU;AACxC,gBAAM,UAAU,OAAO,OAAO,IAAI;AAClC,gBAAM,UAAU,YAAY,OAAS,WAAW,OAAQ,WAAW;AACnE,cAAI,CAAC,SAAS;AACZ,mBAAO,OAAO;AACd,gBAAI,CAAC,OAAO;AAAQ,qBAAO,SAAS;AAAA,UACrC;AAAA,QACF;AACD,eAAO,OAAO,KAAK,MAAM,MAAM;AAAA,MAChC;AAAA,IACF;AACD,WAAO;AAAA,EACR;AACH;;;"}
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"assets.js","sources":["../../../../../../static/metal-bg.jpg","static/logo.png"],"sourcesContent":["export default \"/static/metal-bg.jpg\"","export default \"__VITE_ASSET__46719607__\""],"names":[],"mappings":";AAAA,MAAe,eAAA;ACAf,MAAe,aAAA;;;"}
|
{"version":3,"file":"assets.js","sources":["static/icons/icons8-shopping-cart-100.png","static/logo.png"],"sourcesContent":["export default \"__VITE_ASSET__c6fa5b3f__\"","export default \"__VITE_ASSET__46719607__\""],"names":[],"mappings":";AAAA,MAAe,eAAA;ACAf,MAAe,aAAA;;;"}
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"config.js","sources":["common/config.js"],"sourcesContent":["// 统一配置:禁止在业务代码中硬编码\n// 优先级:环境变量(Vite/HBuilderX 构建注入) > 本地存储 > 默认值\n\nconst envBaseUrl = (typeof process !== 'undefined' && process.env && (process.env.VITE_APP_API_BASE_URL || process.env.API_BASE_URL)) || '';\nconst storageBaseUrl = typeof uni !== 'undefined' ? (uni.getStorageSync('API_BASE_URL') || '') : '';\nconst fallbackBaseUrl = 'http://192.168.31.193:8080';\n\nexport const API_BASE_URL = (envBaseUrl || storageBaseUrl || fallbackBaseUrl).replace(/\\/$/, '');\n\n// 多地址候选(按优先级顺序,自动去重与去尾斜杠)\nconst candidateBases = [envBaseUrl, storageBaseUrl, fallbackBaseUrl, 'http://127.0.0.1:8080', 'http://localhost:8080'];\nexport const API_BASE_URL_CANDIDATES = Array.from(new Set(candidateBases.filter(Boolean))).map(u => String(u).replace(/\\/$/, ''));\n\nconst envShopId = (typeof process !== 'undefined' && process.env && (process.env.VITE_APP_SHOP_ID || process.env.SHOP_ID)) || '';\nconst storageShopId = typeof uni !== 'undefined' ? (uni.getStorageSync('SHOP_ID') || '') : '';\nexport const SHOP_ID = Number(envShopId || storageShopId || 1);\n\n\n// 默认用户(可移除):\n// - 用途:开发/演示环境,自动将用户固定为“张老板”(id=2)\n// - 开关优先级:环境变量 > 本地存储 > 默认值\n// - 生产默认关闭(false);开发可通过本地存储或环境变量开启\nconst envEnableDefaultUser = (typeof process !== 'undefined' && process.env && (process.env.VITE_APP_ENABLE_DEFAULT_USER || process.env.ENABLE_DEFAULT_USER)) || '';\nconst storageEnableDefaultUser = typeof uni !== 'undefined' ? (uni.getStorageSync('ENABLE_DEFAULT_USER') || '') : '';\nexport const ENABLE_DEFAULT_USER = String(envEnableDefaultUser || storageEnableDefaultUser || 'true').toLowerCase() === 'true';\n\nconst envDefaultUserId = (typeof process !== 'undefined' && process.env && (process.env.VITE_APP_DEFAULT_USER_ID || process.env.DEFAULT_USER_ID)) || '';\nconst storageDefaultUserId = typeof uni !== 'undefined' ? (uni.getStorageSync('DEFAULT_USER_ID') || '') : '';\nexport const DEFAULT_USER_ID = Number(envDefaultUserId || storageDefaultUserId || 2);\n\n\n"],"names":["uni"],"mappings":";;AAGA,MAAM,aAAc,OAAO,YAAY,eAAe,QAAQ,QAAQ,QAAQ,IAAI,yBAAyB,QAAQ,IAAI,iBAAkB;AACzI,MAAM,iBAAiB,OAAOA,cAAG,UAAK,cAAeA,cAAAA,MAAI,eAAe,cAAc,KAAK,KAAM;AACjG,MAAM,kBAAkB;AAEZ,MAAC,gBAAgB,cAAc,kBAAkB,iBAAiB,QAAQ,OAAO,EAAE;AAG/F,MAAM,iBAAiB,CAAC,YAAY,gBAAgB,iBAAiB,yBAAyB,uBAAuB;AACzG,MAAC,0BAA0B,MAAM,KAAK,IAAI,IAAI,eAAe,OAAO,OAAO,CAAC,CAAC,EAAE,IAAI,OAAK,OAAO,CAAC,EAAE,QAAQ,OAAO,EAAE,CAAC;AAEhI,MAAM,YAAa,OAAO,YAAY,eAAe,QAAQ,QAAQ,QAAQ,IAAI,oBAAoB,QAAQ,IAAI,YAAa;AAC9H,MAAM,gBAAgB,OAAOA,cAAG,UAAK,cAAeA,cAAAA,MAAI,eAAe,SAAS,KAAK,KAAM;AAC/E,MAAC,UAAU,OAAO,aAAa,iBAAiB,CAAC;AAO7D,MAAM,uBAAwB,OAAO,YAAY,eAAe,QAAQ,QAAQ,QAAQ,IAAI,gCAAgC,QAAQ,IAAI,wBAAyB;AACjK,MAAM,2BAA2B,OAAOA,cAAG,UAAK,cAAeA,cAAAA,MAAI,eAAe,qBAAqB,KAAK,KAAM;AACtG,MAAC,sBAAsB,OAAO,wBAAwB,4BAA4B,MAAM,EAAE,YAAW,MAAO;AAExH,MAAM,mBAAoB,OAAO,YAAY,eAAe,QAAQ,QAAQ,QAAQ,IAAI,4BAA4B,QAAQ,IAAI,oBAAqB;AACrJ,MAAM,uBAAuB,OAAOA,cAAG,UAAK,cAAeA,cAAAA,MAAI,eAAe,iBAAiB,KAAK,KAAM;AAC9F,MAAC,kBAAkB,OAAO,oBAAoB,wBAAwB,CAAC;;;;;;"}
|
{"version":3,"file":"config.js","sources":["common/config.js"],"sourcesContent":["// 统一配置:禁止在业务代码中硬编码\r\n// 优先级:环境变量(Vite/HBuilderX 构建注入) > 本地存储 > 默认值\r\n\r\nconst envBaseUrl = (typeof process !== 'undefined' && process.env && (process.env.VITE_APP_API_BASE_URL || process.env.API_BASE_URL)) || '';\r\nconst storageBaseUrl = typeof uni !== 'undefined' ? (uni.getStorageSync('API_BASE_URL') || '') : '';\r\nconst fallbackBaseUrl = 'http://192.168.31.193:8080';\r\n\r\nexport const API_BASE_URL = (envBaseUrl || storageBaseUrl || fallbackBaseUrl).replace(/\\/$/, '');\r\n\r\n// 多地址候选(按优先级顺序,自动去重与去尾斜杠)\r\nconst candidateBases = [envBaseUrl, storageBaseUrl, fallbackBaseUrl, 'http://127.0.0.1:8080', 'http://localhost:8080'];\r\nexport const API_BASE_URL_CANDIDATES = Array.from(new Set(candidateBases.filter(Boolean))).map(u => String(u).replace(/\\/$/, ''));\r\n\r\nconst envShopId = (typeof process !== 'undefined' && process.env && (process.env.VITE_APP_SHOP_ID || process.env.SHOP_ID)) || '';\r\nconst storageShopId = typeof uni !== 'undefined' ? (uni.getStorageSync('SHOP_ID') || '') : '';\r\nexport const SHOP_ID = Number(envShopId || storageShopId || 1);\r\n\r\n\r\n// 默认用户(可移除):\r\n// - 用途:开发/演示环境,自动将用户固定为“张老板”(id=2)\r\n// - 开关优先级:环境变量 > 本地存储 > 默认值\r\n// - 生产默认关闭(false);开发可通过本地存储或环境变量开启\r\nconst envEnableDefaultUser = (typeof process !== 'undefined' && process.env && (process.env.VITE_APP_ENABLE_DEFAULT_USER || process.env.ENABLE_DEFAULT_USER)) || '';\r\nconst storageEnableDefaultUser = typeof uni !== 'undefined' ? (uni.getStorageSync('ENABLE_DEFAULT_USER') || '') : '';\r\nexport const ENABLE_DEFAULT_USER = String(envEnableDefaultUser || storageEnableDefaultUser || 'true').toLowerCase() === 'true';\r\n\r\nconst envDefaultUserId = (typeof process !== 'undefined' && process.env && (process.env.VITE_APP_DEFAULT_USER_ID || process.env.DEFAULT_USER_ID)) || '';\r\nconst storageDefaultUserId = typeof uni !== 'undefined' ? (uni.getStorageSync('DEFAULT_USER_ID') || '') : '';\r\nexport const DEFAULT_USER_ID = Number(envDefaultUserId || storageDefaultUserId || 2);\r\n\r\n\r\n"],"names":["uni"],"mappings":";;AAGA,MAAM,aAAc,OAAO,YAAY,eAAe,QAAQ,QAAQ,QAAQ,IAAI,yBAAyB,QAAQ,IAAI,iBAAkB;AACzI,MAAM,iBAAiB,OAAOA,cAAG,UAAK,cAAeA,cAAAA,MAAI,eAAe,cAAc,KAAK,KAAM;AACjG,MAAM,kBAAkB;AAEZ,MAAC,gBAAgB,cAAc,kBAAkB,iBAAiB,QAAQ,OAAO,EAAE;AAG/F,MAAM,iBAAiB,CAAC,YAAY,gBAAgB,iBAAiB,yBAAyB,uBAAuB;AACzG,MAAC,0BAA0B,MAAM,KAAK,IAAI,IAAI,eAAe,OAAO,OAAO,CAAC,CAAC,EAAE,IAAI,OAAK,OAAO,CAAC,EAAE,QAAQ,OAAO,EAAE,CAAC;AAEhI,MAAM,YAAa,OAAO,YAAY,eAAe,QAAQ,QAAQ,QAAQ,IAAI,oBAAoB,QAAQ,IAAI,YAAa;AAC9H,MAAM,gBAAgB,OAAOA,cAAG,UAAK,cAAeA,cAAAA,MAAI,eAAe,SAAS,KAAK,KAAM;AAC/E,MAAC,UAAU,OAAO,aAAa,iBAAiB,CAAC;AAO7D,MAAM,uBAAwB,OAAO,YAAY,eAAe,QAAQ,QAAQ,QAAQ,IAAI,gCAAgC,QAAQ,IAAI,wBAAyB;AACjK,MAAM,2BAA2B,OAAOA,cAAG,UAAK,cAAeA,cAAAA,MAAI,eAAe,qBAAqB,KAAK,KAAM;AACtG,MAAC,sBAAsB,OAAO,wBAAwB,4BAA4B,MAAM,EAAE,YAAW,MAAO;AAExH,MAAM,mBAAoB,OAAO,YAAY,eAAe,QAAQ,QAAQ,QAAQ,IAAI,4BAA4B,QAAQ,IAAI,oBAAqB;AACrJ,MAAM,uBAAuB,OAAOA,cAAG,UAAK,cAAeA,cAAAA,MAAI,eAAe,iBAAiB,KAAK,KAAM;AAC9F,MAAC,kBAAkB,OAAO,oBAAoB,wBAAwB,CAAC;;;;;;"}
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"select.js","sources":["pages/account/select.vue","../../../../Downloads/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvYWNjb3VudC9zZWxlY3QudnVl"],"sourcesContent":["<template>\r\n\t<view class=\"page\">\r\n\t\t<scroll-view scroll-y class=\"list\">\r\n\t\t\t<view class=\"item\" v-for=\"a in accounts\" :key=\"a.id\" @click=\"select(a)\">\r\n\t\t\t\t<view class=\"name\">{{ a.name }}</view>\r\n\t\t\t\t<view class=\"meta\">{{ typeLabel(a.type) }} · 余额:{{ a.balance?.toFixed ? a.balance.toFixed(2) : a.balance }}</view>\r\n\t\t\t</view>\r\n\t\t</scroll-view>\r\n\t\t<view class=\"fab\" @click=\"create\">+</view>\r\n\t</view>\r\n</template>\r\n\r\n<script>\r\n\timport { get } from '../../common/http.js'\r\n\tconst TYPE_MAP = { cash: '现金', bank: '银行', alipay: '支付宝', wechat: '微信', other: '其他' }\r\n\texport default {\r\n\t\tdata() { return { accounts: [], mode: 'view' } },\r\n\t\tasync onLoad(q) {\r\n\t\t\tthis.mode = (q && q.mode) || 'view'\r\n\t\t\ttry {\r\n\t\t\t\tconst res = await get('/api/accounts')\r\n\t\t\t\tthis.accounts = Array.isArray(res) ? res : (res?.list || [])\r\n\t\t\t} catch(e) { uni.showToast({ title: '加载失败', icon: 'none' }) }\r\n\t\t},\r\n\t\tmethods: {\r\n\t\t\tselect(a) {\r\n\t\t\t\tif (this.mode === 'pick') {\r\n\t\t\t\t\tconst opener = getCurrentPages()[getCurrentPages().length-2]\r\n\t\t\t\t\tif (opener && opener.$vm) {\r\n\t\t\t\t\t\topener.$vm.selectedAccountId = a.id\r\n\t\t\t\t\t\topener.$vm.selectedAccountName = a.name\r\n\t\t\t\t\t}\r\n\t\t\t\t\tuni.navigateBack()\r\n\t\t\t\t} else {\r\n\t\t\t\t\tuni.navigateTo({ url: `/pages/account/ledger?id=${a.id}` })\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tcreate() { uni.navigateTo({ url: '/pages/account/form' }) },\r\n\t\t\ttypeLabel(t) { return TYPE_MAP[t] || t }\r\n\t\t}\r\n\t}\r\n</script>\r\n\r\n<style>\r\n\t.page { display:flex; flex-direction: column; height: 100vh; }\r\n\t.list { flex:1; }\r\n\t.item { padding: 20rpx 24rpx; background:#fff; border-bottom: 1rpx solid #f1f1f1; }\r\n\t.name { color:#333; margin-bottom: 6rpx; }\r\n\t.meta { color:#888; font-size: 24rpx; }\r\n\t.fab { position: fixed; right: 32rpx; bottom: 120rpx; width: 100rpx; height: 100rpx; border-radius: 50%; background:#3c9cff; color:#fff; display:flex; align-items:center; justify-content:center; font-size: 52rpx; box-shadow: 0 10rpx 20rpx rgba(0,0,0,0.18); }\r\n</style>\r\n\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/21826/Desktop/Wj/PartsInquiry/frontend/pages/account/select.vue'\nwx.createPage(MiniProgramPage)"],"names":["get","uni"],"mappings":";;;AAcC,MAAM,WAAW,EAAE,MAAM,MAAM,MAAM,MAAM,QAAQ,OAAO,QAAQ,MAAM,OAAO,KAAK;AACpF,MAAK,YAAU;AAAA,EACd,OAAO;AAAE,WAAO,EAAE,UAAU,CAAA,GAAI,MAAM;EAAU;AAAA,EAChD,MAAM,OAAO,GAAG;AACf,SAAK,OAAQ,KAAK,EAAE,QAAS;AAC7B,QAAI;AACH,YAAM,MAAM,MAAMA,YAAG,IAAC,eAAe;AACrC,WAAK,WAAW,MAAM,QAAQ,GAAG,IAAI,OAAO,2BAAK,SAAQ;aAClD,GAAG;AAAEC,oBAAAA,MAAI,UAAU,EAAE,OAAO,QAAQ,MAAM,OAAO,CAAC;AAAA,IAAE;AAAA,EAC5D;AAAA,EACD,SAAS;AAAA,IACR,OAAO,GAAG;AACT,UAAI,KAAK,SAAS,QAAQ;AACzB,cAAM,SAAS,gBAAiB,EAAC,gBAAe,EAAG,SAAO,CAAC;AAC3D,YAAI,UAAU,OAAO,KAAK;AACzB,iBAAO,IAAI,oBAAoB,EAAE;AACjC,iBAAO,IAAI,sBAAsB,EAAE;AAAA,QACpC;AACAA,sBAAAA,MAAI,aAAa;AAAA,aACX;AACNA,4BAAI,WAAW,EAAE,KAAK,4BAA4B,EAAE,EAAE,IAAI;AAAA,MAC3D;AAAA,IACA;AAAA,IACD,SAAS;AAAEA,oBAAAA,MAAI,WAAW,EAAE,KAAK,sBAAoB,CAAG;AAAA,IAAG;AAAA,IAC3D,UAAU,GAAG;AAAE,aAAO,SAAS,CAAC,KAAK;AAAA,IAAE;AAAA,EACxC;AACD;;;;;;;;;;;;;;;;;ACvCD,GAAG,WAAW,eAAe;"}
|
{"version":3,"file":"select.js","sources":["pages/account/select.vue","../../../软件/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvYWNjb3VudC9zZWxlY3QudnVl"],"sourcesContent":["<template>\n\t<view class=\"page\">\n\t\t<scroll-view scroll-y class=\"list\">\n\t\t\t<view class=\"item\" v-for=\"a in accounts\" :key=\"a.id\" @click=\"select(a)\">\n\t\t\t\t<view class=\"name\">{{ a.name }}</view>\n\t\t\t\t<view class=\"meta\">{{ typeLabel(a.type) }} · 余额:{{ a.balance?.toFixed ? a.balance.toFixed(2) : a.balance }}</view>\n\t\t\t</view>\n\t\t</scroll-view>\n\t\t<view class=\"fab\" @click=\"create\">+</view>\n\t</view>\n</template>\n\n<script>\n\timport { get } from '../../common/http.js'\n\tconst TYPE_MAP = { cash: '现金', bank: '银行', alipay: '支付宝', wechat: '微信', other: '其他' }\n\texport default {\n\t\tdata() { return { accounts: [], mode: 'view' } },\n\t\tasync onLoad(q) {\n\t\t\tthis.mode = (q && q.mode) || 'view'\n\t\t\ttry {\n\t\t\t\tconst res = await get('/api/accounts')\n\t\t\t\tthis.accounts = Array.isArray(res) ? res : (res?.list || [])\n\t\t\t} catch(e) { uni.showToast({ title: '加载失败', icon: 'none' }) }\n\t\t},\n\t\tmethods: {\n\t\t\tselect(a) {\n\t\t\t\tif (this.mode === 'pick') {\n\t\t\t\t\tconst opener = getCurrentPages()[getCurrentPages().length-2]\n\t\t\t\t\tif (opener && opener.$vm) {\n\t\t\t\t\t\topener.$vm.selectedAccountId = a.id\n\t\t\t\t\t\topener.$vm.selectedAccountName = a.name\n\t\t\t\t\t}\n\t\t\t\t\tuni.navigateBack()\n\t\t\t\t} else {\n\t\t\t\t\tuni.navigateTo({ url: `/pages/account/ledger?id=${a.id}` })\n\t\t\t\t}\n\t\t\t},\n\t\t\tcreate() { uni.navigateTo({ url: '/pages/account/form' }) },\n\t\t\ttypeLabel(t) { return TYPE_MAP[t] || t }\n\t\t}\n\t}\n</script>\n\n<style lang=\"scss\">\n\t.page { display:flex; flex-direction: column; height: 100vh; }\n\t.list { flex:1; }\n\t.item { padding: 20rpx 24rpx; background:$uni-bg-color-grey; border-bottom: 1rpx solid $uni-border-color; }\n\t.name { color:$uni-text-color; margin-bottom: 6rpx; }\n\t.meta { color:$uni-text-color-grey; font-size: 24rpx; }\n\t.fab { position: fixed; right: 32rpx; bottom: 120rpx; width: 100rpx; height: 100rpx; border-radius: 50%; background:$uni-color-primary; color:#fff; display:flex; align-items:center; justify-content:center; font-size: 52rpx; box-shadow: 0 10rpx 20rpx rgba(0,0,0,0.18); }\n</style>\n\n\n\n","import MiniProgramPage from 'D:/wx/PartsInquiry/frontend/pages/account/select.vue'\nwx.createPage(MiniProgramPage)"],"names":["get","uni"],"mappings":";;;AAcC,MAAM,WAAW,EAAE,MAAM,MAAM,MAAM,MAAM,QAAQ,OAAO,QAAQ,MAAM,OAAO,KAAK;AACpF,MAAK,YAAU;AAAA,EACd,OAAO;AAAE,WAAO,EAAE,UAAU,CAAA,GAAI,MAAM;EAAU;AAAA,EAChD,MAAM,OAAO,GAAG;AACf,SAAK,OAAQ,KAAK,EAAE,QAAS;AAC7B,QAAI;AACH,YAAM,MAAM,MAAMA,YAAG,IAAC,eAAe;AACrC,WAAK,WAAW,MAAM,QAAQ,GAAG,IAAI,OAAO,2BAAK,SAAQ;aAClD,GAAG;AAAEC,oBAAAA,MAAI,UAAU,EAAE,OAAO,QAAQ,MAAM,OAAO,CAAC;AAAA,IAAE;AAAA,EAC5D;AAAA,EACD,SAAS;AAAA,IACR,OAAO,GAAG;AACT,UAAI,KAAK,SAAS,QAAQ;AACzB,cAAM,SAAS,gBAAiB,EAAC,gBAAe,EAAG,SAAO,CAAC;AAC3D,YAAI,UAAU,OAAO,KAAK;AACzB,iBAAO,IAAI,oBAAoB,EAAE;AACjC,iBAAO,IAAI,sBAAsB,EAAE;AAAA,QACpC;AACAA,sBAAAA,MAAI,aAAa;AAAA,aACX;AACNA,4BAAI,WAAW,EAAE,KAAK,4BAA4B,EAAE,EAAE,IAAI;AAAA,MAC3D;AAAA,IACA;AAAA,IACD,SAAS;AAAEA,oBAAAA,MAAI,WAAW,EAAE,KAAK,sBAAoB,CAAG;AAAA,IAAG;AAAA,IAC3D,UAAU,GAAG;AAAE,aAAO,SAAS,CAAC,KAAK;AAAA,IAAE;AAAA,EACxC;AACD;;;;;;;;;;;;;;;;;ACvCD,GAAG,WAAW,eAAe;"}
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"form.js","sources":["pages/customer/form.vue","../../../../Downloads/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvY3VzdG9tZXIvZm9ybS52dWU"],"sourcesContent":["<template>\r\n\t<view class=\"page\">\r\n\t\t<view class=\"field\"><text class=\"label\">客户名称</text><input class=\"value\" v-model=\"form.name\" placeholder=\"必填\" /></view>\r\n\t\t<view class=\"field\"><text class=\"label\">客户等级</text><input class=\"value\" v-model=\"form.level\" placeholder=\"可选,如 VIP/A/B\" /></view>\r\n <view class=\"field\">\r\n <text class=\"label\">售价档位</text>\r\n <picker :range=\"priceLabels\" :value=\"priceIdx\" @change=\"onPriceChange\">\r\n <view class=\"value\">{{ priceLabels[priceIdx] }}</view>\r\n </picker>\r\n </view>\r\n\t\t<view class=\"field\"><text class=\"label\">联系人</text><input class=\"value\" v-model=\"form.contactName\" placeholder=\"可选\" /></view>\r\n\t\t<view class=\"field\"><text class=\"label\">手机</text><input class=\"value\" v-model=\"form.mobile\" placeholder=\"可选\" /></view>\r\n\t\t<view class=\"field\"><text class=\"label\">电话</text><input class=\"value\" v-model=\"form.phone\" placeholder=\"可选(座机)\" /></view>\r\n\t\t<view class=\"field\"><text class=\"label\">送货地址</text><input class=\"value\" v-model=\"form.address\" placeholder=\"可选\" /></view>\r\n\t\t<view class=\"field\"><text class=\"label\">初始应收</text><input class=\"value\" type=\"digit\" v-model.number=\"form.arOpening\" placeholder=\"默认 0.00\" /></view>\r\n\t\t<view class=\"textarea\"><textarea v-model=\"form.remark\" maxlength=\"200\" placeholder=\"备注(最多200字)\"></textarea></view>\r\n\r\n\t\t<view class=\"bottom\"><button class=\"primary\" @click=\"save\">保存</button></view>\r\n\t</view>\r\n</template>\r\n\r\n<script>\r\nimport { post, put } from '../../common/http.js'\r\nexport default {\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tid: null,\r\n\t\t\tform: { name:'', level:'', priceLevel:'retail', contactName:'', mobile:'', phone:'', address:'', arOpening:0, remark:'' },\r\n priceLevels: ['零售价','批发价','大单报价'],\r\n priceLabels: ['零售价','批发价','大单报价'],\r\n\t\t\tpriceIdx: 0\r\n\t\t}\r\n\t},\r\n\tonLoad(query) { if (query && query.id) { this.id = Number(query.id) } },\r\n\tmethods: {\r\n onPriceChange(e){ this.priceIdx = Number(e.detail.value); this.form.priceLevel = this.priceLevels[this.priceIdx] },\r\n\t\tasync save() {\r\n\t\t\tif (!this.form.name) return uni.showToast({ title:'请填写客户名称', icon:'none' })\r\n\t\t\ttry {\r\n\t\t\t\tif (this.id) await put(`/api/customers/${this.id}`, this.form)\r\n\t\t\t\telse await post('/api/customers', this.form)\r\n\t\t\t\tuni.showToast({ title:'保存成功', icon:'success' })\r\n\t\t\t\tsetTimeout(() => uni.navigateBack(), 500)\r\n\t\t\t} catch(e) { uni.showToast({ title: e?.message || '保存失败', icon:'none' }) }\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style>\r\n.page { padding-bottom: 140rpx; }\r\n.field { display:flex; justify-content: space-between; padding: 22rpx 24rpx; background:#fff; border-bottom:1rpx solid #eee; }\r\n.label { color:#666; }\r\n.value { color:#333; text-align: right; flex: 1; }\r\n.textarea { padding: 16rpx 24rpx; background:#fff; margin-top: 12rpx; }\r\n.bottom { position: fixed; left:0; right:0; bottom:0; background:#fff; padding: 16rpx 24rpx calc(env(safe-area-inset-bottom) + 16rpx); box-shadow: 0 -4rpx 12rpx rgba(0,0,0,0.06); }\r\n.primary { width: 100%; background: linear-gradient(135deg, #A0E4FF 0%, #17A2C4 100%); color:#fff; border-radius: 999rpx; padding: 20rpx 0; }\r\n</style>\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/21826/Desktop/Wj/PartsInquiry/frontend/pages/customer/form.vue'\nwx.createPage(MiniProgramPage)"],"names":["uni","put","post"],"mappings":";;;AAuBA,MAAK,YAAU;AAAA,EACd,OAAO;AACN,WAAO;AAAA,MACN,IAAI;AAAA,MACJ,MAAM,EAAE,MAAK,IAAI,OAAM,IAAI,YAAW,UAAU,aAAY,IAAI,QAAO,IAAI,OAAM,IAAI,SAAQ,IAAI,WAAU,GAAG,QAAO,GAAI;AAAA,MACtH,aAAa,CAAC,OAAM,OAAM,MAAM;AAAA,MAChC,aAAa,CAAC,OAAM,OAAM,MAAM;AAAA,MACnC,UAAU;AAAA,IACX;AAAA,EACA;AAAA,EACD,OAAO,OAAO;AAAE,QAAI,SAAS,MAAM,IAAI;AAAE,WAAK,KAAK,OAAO,MAAM,EAAE;AAAA,IAAE;AAAA,EAAG;AAAA,EACvE,SAAS;AAAA,IACN,cAAc,GAAE;AAAE,WAAK,WAAW,OAAO,EAAE,OAAO,KAAK;AAAG,WAAK,KAAK,aAAa,KAAK,YAAY,KAAK,QAAQ;AAAA,IAAG;AAAA,IACpH,MAAM,OAAO;AACZ,UAAI,CAAC,KAAK,KAAK;AAAM,eAAOA,cAAG,MAAC,UAAU,EAAE,OAAM,WAAW,MAAK,QAAQ;AAC1E,UAAI;AACH,YAAI,KAAK;AAAI,gBAAMC,YAAAA,IAAI,kBAAkB,KAAK,EAAE,IAAI,KAAK,IAAI;AAAA;AACxD,gBAAMC,iBAAK,kBAAkB,KAAK,IAAI;AAC3CF,sBAAG,MAAC,UAAU,EAAE,OAAM,QAAQ,MAAK,WAAW;AAC9C,mBAAW,MAAMA,cAAAA,MAAI,aAAY,GAAI,GAAG;AAAA,MACzC,SAAQ,GAAG;AAAEA,sBAAG,MAAC,UAAU,EAAE,QAAO,uBAAG,YAAW,QAAQ,MAAK,OAAQ,CAAA;AAAA,MAAE;AAAA,IAC1E;AAAA,EACD;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7CA,GAAG,WAAW,eAAe;"}
|
{"version":3,"file":"form.js","sources":["pages/customer/form.vue","../../../软件/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvY3VzdG9tZXIvZm9ybS52dWU"],"sourcesContent":["<template>\n\t<view class=\"page\">\n\t\t<view class=\"field\"><text class=\"label\">客户名称</text><input class=\"value\" v-model=\"form.name\" placeholder=\"必填\" /></view>\n\t\t<view class=\"field\"><text class=\"label\">客户等级</text><input class=\"value\" v-model=\"form.level\" placeholder=\"可选,如 VIP/A/B\" /></view>\n <view class=\"field\">\n <text class=\"label\">售价档位</text>\n <picker :range=\"priceLabels\" :value=\"priceIdx\" @change=\"onPriceChange\">\n <view class=\"value\">{{ priceLabels[priceIdx] }}</view>\n </picker>\n </view>\n\t\t<view class=\"field\"><text class=\"label\">联系人</text><input class=\"value\" v-model=\"form.contactName\" placeholder=\"可选\" /></view>\n\t\t<view class=\"field\"><text class=\"label\">手机</text><input class=\"value\" v-model=\"form.mobile\" placeholder=\"可选\" /></view>\n\t\t<view class=\"field\"><text class=\"label\">电话</text><input class=\"value\" v-model=\"form.phone\" placeholder=\"可选(座机)\" /></view>\n\t\t<view class=\"field\"><text class=\"label\">送货地址</text><input class=\"value\" v-model=\"form.address\" placeholder=\"可选\" /></view>\n\t\t<view class=\"field\"><text class=\"label\">初始应收</text><input class=\"value\" type=\"digit\" v-model.number=\"form.arOpening\" placeholder=\"默认 0.00\" /></view>\n\t\t<view class=\"textarea\"><textarea v-model=\"form.remark\" maxlength=\"200\" placeholder=\"备注(最多200字)\"></textarea></view>\n\n\t\t<view class=\"bottom\"><button class=\"primary\" @click=\"save\">保存</button></view>\n\t</view>\n</template>\n\n<script>\nimport { post, put } from '../../common/http.js'\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tid: null,\n\t\t\tform: { name:'', level:'', priceLevel:'retail', contactName:'', mobile:'', phone:'', address:'', arOpening:0, remark:'' },\n priceLevels: ['零售价','批发价','大单报价'],\n priceLabels: ['零售价','批发价','大单报价'],\n\t\t\tpriceIdx: 0\n\t\t}\n\t},\n\tonLoad(query) { if (query && query.id) { this.id = Number(query.id) } },\n\tmethods: {\n onPriceChange(e){ this.priceIdx = Number(e.detail.value); this.form.priceLevel = this.priceLevels[this.priceIdx] },\n\t\tasync save() {\n\t\t\tif (!this.form.name) return uni.showToast({ title:'请填写客户名称', icon:'none' })\n\t\t\ttry {\n\t\t\t\tif (this.id) await put(`/api/customers/${this.id}`, this.form)\n\t\t\t\telse await post('/api/customers', this.form)\n\t\t\t\tuni.showToast({ title:'保存成功', icon:'success' })\n\t\t\t\tsetTimeout(() => uni.navigateBack(), 500)\n\t\t\t} catch(e) { uni.showToast({ title: e?.message || '保存失败', icon:'none' }) }\n\t\t}\n\t}\n}\n</script>\n\n<style lang=\"scss\">\n.page { padding-bottom: 140rpx; }\n.field { display:flex; justify-content: space-between; padding: 22rpx 24rpx; background:$uni-bg-color-grey; border-bottom:1rpx solid $uni-border-color; }\n.label { color:$uni-text-color-grey; }\n.value { color:$uni-text-color; text-align: right; flex: 1; }\n.textarea { padding: 16rpx 24rpx; background:$uni-bg-color-grey; margin-top: 12rpx; }\n.bottom { position: fixed; left:0; right:0; bottom:0; background:$uni-bg-color-grey; padding: 16rpx 24rpx calc(env(safe-area-inset-bottom) + 16rpx); box-shadow: 0 -4rpx 12rpx rgba(0,0,0,0.10); }\n.primary { width: 100%; background: $uni-color-primary; color:#fff; border-radius: 999rpx; padding: 20rpx 0; }\n</style>\n\n\n","import MiniProgramPage from 'D:/wx/PartsInquiry/frontend/pages/customer/form.vue'\nwx.createPage(MiniProgramPage)"],"names":["uni","put","post"],"mappings":";;;AAuBA,MAAK,YAAU;AAAA,EACd,OAAO;AACN,WAAO;AAAA,MACN,IAAI;AAAA,MACJ,MAAM,EAAE,MAAK,IAAI,OAAM,IAAI,YAAW,UAAU,aAAY,IAAI,QAAO,IAAI,OAAM,IAAI,SAAQ,IAAI,WAAU,GAAG,QAAO,GAAI;AAAA,MACtH,aAAa,CAAC,OAAM,OAAM,MAAM;AAAA,MAChC,aAAa,CAAC,OAAM,OAAM,MAAM;AAAA,MACnC,UAAU;AAAA,IACX;AAAA,EACA;AAAA,EACD,OAAO,OAAO;AAAE,QAAI,SAAS,MAAM,IAAI;AAAE,WAAK,KAAK,OAAO,MAAM,EAAE;AAAA,IAAE;AAAA,EAAG;AAAA,EACvE,SAAS;AAAA,IACN,cAAc,GAAE;AAAE,WAAK,WAAW,OAAO,EAAE,OAAO,KAAK;AAAG,WAAK,KAAK,aAAa,KAAK,YAAY,KAAK,QAAQ;AAAA,IAAG;AAAA,IACpH,MAAM,OAAO;AACZ,UAAI,CAAC,KAAK,KAAK;AAAM,eAAOA,cAAG,MAAC,UAAU,EAAE,OAAM,WAAW,MAAK,QAAQ;AAC1E,UAAI;AACH,YAAI,KAAK;AAAI,gBAAMC,YAAAA,IAAI,kBAAkB,KAAK,EAAE,IAAI,KAAK,IAAI;AAAA;AACxD,gBAAMC,iBAAK,kBAAkB,KAAK,IAAI;AAC3CF,sBAAG,MAAC,UAAU,EAAE,OAAM,QAAQ,MAAK,WAAW;AAC9C,mBAAW,MAAMA,cAAAA,MAAI,aAAY,GAAI,GAAG;AAAA,MACzC,SAAQ,GAAG;AAAEA,sBAAG,MAAC,UAAU,EAAE,QAAO,uBAAG,YAAW,QAAQ,MAAK,OAAQ,CAAA;AAAA,MAAE;AAAA,IAC1E;AAAA,EACD;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7CA,GAAG,WAAW,eAAe;"}
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"select.js","sources":["pages/customer/select.vue","../../../../Downloads/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvY3VzdG9tZXIvc2VsZWN0LnZ1ZQ"],"sourcesContent":["<template>\n\t<view class=\"page\">\n\t\t<view class=\"search\">\n\t\t\t<input v-model=\"kw\" placeholder=\"搜索客户名称/电话\" @confirm=\"search\" />\n\t\t\t<button size=\"mini\" @click=\"search\">搜索</button>\n\t\t\t<button size=\"mini\" :type=\"debtOnly ? 'primary' : 'default'\" @click=\"toggleDebtOnly\">只看欠款</button>\n\t\t</view>\n\t\t<scroll-view scroll-y class=\"list\">\n\t\t\t<view class=\"item\" v-for=\"c in customers\" :key=\"c.id\" @click=\"openDetail(c)\">\n\t\t\t\t<view class=\"name\">{{ c.name }}</view>\n\t\t\t\t<view class=\"meta\">\n\t\t\t\t\t{{ c.mobile || '—' }}\n\t\t\t\t\t<text v-if=\"typeof c.receivable === 'number'\">|应收:¥ {{ Number(c.receivable).toFixed(2) }}</text>\n\t\t\t\t</view>\n\t\t\t</view>\n\t\t</scroll-view>\n\t\t<view class=\"bottom\">\n\t\t\t<button class=\"primary\" @click=\"createCustomer\">新增客户</button>\n\t\t</view>\n\t</view>\n</template>\n\n<script>\n\timport { get } from '../../common/http.js'\n\texport default {\n\t\tdata() { return { kw: '', debtOnly: false, customers: [] } },\n\t\tonLoad() { this.search() },\n\t\tonShow() { this.search() },\n\t\tmethods: {\n\t\t\ttoggleDebtOnly() { this.debtOnly = !this.debtOnly; this.search() },\n\t\t\tasync search() {\n\t\t\t\ttry {\n\t\t\t\t\tconst res = await get('/api/customers', { kw: this.kw, debtOnly: this.debtOnly, page: 1, size: 50 })\n\t\t\t\t\tthis.customers = Array.isArray(res?.list) ? res.list : (Array.isArray(res) ? res : [])\n\t\t\t\t} catch(e) { uni.showToast({ title: '加载失败', icon: 'none' }) }\n\t\t\t},\n\t\t\tcreateCustomer() { uni.navigateTo({ url: '/pages/customer/form' }) },\n\t\t\tselect(c) {\n\t\t\t\tconst pages = getCurrentPages()\n\t\t\t\tconst prev = pages.length >= 2 ? pages[pages.length - 2] : null\n\t\t\t\tconst vm = prev && prev.$vm ? prev.$vm : null\n\t\t\t\tif (vm && vm.order) {\n\t\t\t\t\tvm.order.customerId = c.id\n\t\t\t\t\tvm.customerName = c.name\n\t\t\t\t}\n\t\t\t\tuni.navigateBack()\n\t\t\t}\n\t\t\t,\n\t\t\topenDetail(c) { uni.navigateTo({ url: '/pages/customer/detail?id=' + c.id }) }\n\t\t}\n\t}\n</script>\n\n<style>\n\t.page { display:flex; flex-direction: column; height: 100vh; }\n\t.search { display:flex; gap: 12rpx; padding: 16rpx; background:#fff; align-items:center; }\n\t.search input { flex:1; background:#f6f6f6; border-radius: 12rpx; padding: 12rpx; }\n\t.list { flex:1; }\n\t.item { padding: 20rpx 24rpx; background:#fff; border-bottom: 1rpx solid #f1f1f1; }\n\t.name { color:#333; margin-bottom: 6rpx; }\n\t.meta { color:#888; font-size: 24rpx; }\n\t.bottom { position: fixed; left:0; right:0; bottom:0; background:#fff; padding: 16rpx 24rpx calc(env(safe-area-inset-bottom) + 16rpx); box-shadow: 0 -4rpx 12rpx rgba(0,0,0,0.06); }\n\t.primary { width: 100%; background: linear-gradient(135deg, #A0E4FF 0%, #17A2C4 100%); color:#fff; border-radius: 999rpx; padding: 20rpx 0; }\n</style>\n\n\n\n","import MiniProgramPage from 'C:/Users/21826/Desktop/Wj/PartsInquiry/frontend/pages/customer/select.vue'\nwx.createPage(MiniProgramPage)"],"names":["get","uni"],"mappings":";;;AAwBC,MAAK,YAAU;AAAA,EACd,OAAO;AAAE,WAAO,EAAE,IAAI,IAAI,UAAU,OAAO,WAAW,CAAA;EAAM;AAAA,EAC5D,SAAS;AAAE,SAAK;EAAU;AAAA,EAC1B,SAAS;AAAE,SAAK;EAAU;AAAA,EAC1B,SAAS;AAAA,IACR,iBAAiB;AAAE,WAAK,WAAW,CAAC,KAAK;AAAU,WAAK;IAAU;AAAA,IAClE,MAAM,SAAS;AACd,UAAI;AACH,cAAM,MAAM,MAAMA,YAAG,IAAC,kBAAkB,EAAE,IAAI,KAAK,IAAI,UAAU,KAAK,UAAU,MAAM,GAAG,MAAM,IAAI;AACnG,aAAK,YAAY,MAAM,QAAQ,2BAAK,IAAI,IAAI,IAAI,OAAQ,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAA;AAAA,eAC5E,GAAG;AAAEC,sBAAAA,MAAI,UAAU,EAAE,OAAO,QAAQ,MAAM,OAAO,CAAC;AAAA,MAAE;AAAA,IAC5D;AAAA,IACD,iBAAiB;AAAEA,oBAAAA,MAAI,WAAW,EAAE,KAAK,uBAAqB,CAAG;AAAA,IAAG;AAAA,IACpE,OAAO,GAAG;AACT,YAAM,QAAQ,gBAAgB;AAC9B,YAAM,OAAO,MAAM,UAAU,IAAI,MAAM,MAAM,SAAS,CAAC,IAAI;AAC3D,YAAM,KAAK,QAAQ,KAAK,MAAM,KAAK,MAAM;AACzC,UAAI,MAAM,GAAG,OAAO;AACnB,WAAG,MAAM,aAAa,EAAE;AACxB,WAAG,eAAe,EAAE;AAAA,MACrB;AACAA,oBAAAA,MAAI,aAAa;AAAA,IAClB;AAAA,IAEA,WAAW,GAAG;AAAEA,oBAAAA,MAAI,WAAW,EAAE,KAAK,+BAA+B,EAAE,GAAC,CAAG;AAAA,IAAE;AAAA,EAC9E;AACD;;;;;;;;;;;;;;;;;;;;;;;;;ACjDD,GAAG,WAAW,eAAe;"}
|
{"version":3,"file":"select.js","sources":["pages/customer/select.vue","../../../软件/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvY3VzdG9tZXIvc2VsZWN0LnZ1ZQ"],"sourcesContent":["<template>\n\t<view class=\"page\">\n\t\t<view class=\"search\">\n\t\t\t<input v-model=\"kw\" placeholder=\"搜索客户名称/电话\" @confirm=\"search\" />\n\t\t\t<button size=\"mini\" @click=\"search\">搜索</button>\n\t\t\t<button size=\"mini\" :type=\"debtOnly ? 'primary' : 'default'\" @click=\"toggleDebtOnly\">只看欠款</button>\n\t\t</view>\n\t\t<scroll-view scroll-y class=\"list\">\n\t\t\t<view class=\"item\" v-for=\"c in customers\" :key=\"c.id\" @click=\"openDetail(c)\">\n\t\t\t\t<view class=\"name\">{{ c.name }}</view>\n\t\t\t\t<view class=\"meta\">\n\t\t\t\t\t{{ c.mobile || '—' }}\n\t\t\t\t\t<text v-if=\"typeof c.receivable === 'number'\">|应收:¥ {{ Number(c.receivable).toFixed(2) }}</text>\n\t\t\t\t</view>\n\t\t\t</view>\n\t\t</scroll-view>\n\t\t<view class=\"bottom\">\n\t\t\t<button class=\"primary\" @click=\"createCustomer\">新增客户</button>\n\t\t</view>\n\t</view>\n</template>\n\n<script>\n\timport { get } from '../../common/http.js'\n\texport default {\n\t\tdata() { return { kw: '', debtOnly: false, customers: [] } },\n\t\tonLoad() { this.search() },\n\t\tonShow() { this.search() },\n\t\tmethods: {\n\t\t\ttoggleDebtOnly() { this.debtOnly = !this.debtOnly; this.search() },\n\t\t\tasync search() {\n\t\t\t\ttry {\n\t\t\t\t\tconst res = await get('/api/customers', { kw: this.kw, debtOnly: this.debtOnly, page: 1, size: 50 })\n\t\t\t\t\tthis.customers = Array.isArray(res?.list) ? res.list : (Array.isArray(res) ? res : [])\n\t\t\t\t} catch(e) { uni.showToast({ title: '加载失败', icon: 'none' }) }\n\t\t\t},\n\t\t\tcreateCustomer() { uni.navigateTo({ url: '/pages/customer/form' }) },\n\t\t\tselect(c) {\n\t\t\t\tconst pages = getCurrentPages()\n\t\t\t\tconst prev = pages.length >= 2 ? pages[pages.length - 2] : null\n\t\t\t\tconst vm = prev && prev.$vm ? prev.$vm : null\n\t\t\t\tif (vm && vm.order) {\n\t\t\t\t\tvm.order.customerId = c.id\n\t\t\t\t\tvm.customerName = c.name\n\t\t\t\t}\n\t\t\t\tuni.navigateBack()\n\t\t\t}\n\t\t\t,\n\t\t\topenDetail(c) { uni.navigateTo({ url: '/pages/customer/detail?id=' + c.id }) }\n\t\t}\n\t}\n</script>\n\n<style lang=\"scss\">\n\t.page { display:flex; flex-direction: column; height: 100vh; }\n\t.search { display:flex; gap: 12rpx; padding: 16rpx; background:$uni-bg-color-grey; align-items:center; }\n\t.search input { flex:1; background:$uni-bg-color-hover; border-radius: 12rpx; padding: 12rpx; color: $uni-text-color; }\n\t.list { flex:1; }\n\t.item { padding: 20rpx 24rpx; background:$uni-bg-color-grey; border-bottom: 1rpx solid $uni-border-color; }\n\t.name { color:$uni-text-color; margin-bottom: 6rpx; }\n\t.meta { color:$uni-text-color-grey; font-size: 24rpx; }\n\t.bottom { position: fixed; left:0; right:0; bottom:0; background:$uni-bg-color-grey; padding: 16rpx 24rpx calc(env(safe-area-inset-bottom) + 16rpx); box-shadow: 0 -4rpx 12rpx rgba(0,0,0,0.10); }\n\t.primary { width: 100%; background: $uni-color-primary; color:#fff; border-radius: 999rpx; padding: 20rpx 0; }\n</style>\n\n\n\n","import MiniProgramPage from 'D:/wx/PartsInquiry/frontend/pages/customer/select.vue'\nwx.createPage(MiniProgramPage)"],"names":["get","uni"],"mappings":";;;AAwBC,MAAK,YAAU;AAAA,EACd,OAAO;AAAE,WAAO,EAAE,IAAI,IAAI,UAAU,OAAO,WAAW,CAAA;EAAM;AAAA,EAC5D,SAAS;AAAE,SAAK;EAAU;AAAA,EAC1B,SAAS;AAAE,SAAK;EAAU;AAAA,EAC1B,SAAS;AAAA,IACR,iBAAiB;AAAE,WAAK,WAAW,CAAC,KAAK;AAAU,WAAK;IAAU;AAAA,IAClE,MAAM,SAAS;AACd,UAAI;AACH,cAAM,MAAM,MAAMA,YAAG,IAAC,kBAAkB,EAAE,IAAI,KAAK,IAAI,UAAU,KAAK,UAAU,MAAM,GAAG,MAAM,IAAI;AACnG,aAAK,YAAY,MAAM,QAAQ,2BAAK,IAAI,IAAI,IAAI,OAAQ,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAA;AAAA,eAC5E,GAAG;AAAEC,sBAAAA,MAAI,UAAU,EAAE,OAAO,QAAQ,MAAM,OAAO,CAAC;AAAA,MAAE;AAAA,IAC5D;AAAA,IACD,iBAAiB;AAAEA,oBAAAA,MAAI,WAAW,EAAE,KAAK,uBAAqB,CAAG;AAAA,IAAG;AAAA,IACpE,OAAO,GAAG;AACT,YAAM,QAAQ,gBAAgB;AAC9B,YAAM,OAAO,MAAM,UAAU,IAAI,MAAM,MAAM,SAAS,CAAC,IAAI;AAC3D,YAAM,KAAK,QAAQ,KAAK,MAAM,KAAK,MAAM;AACzC,UAAI,MAAM,GAAG,OAAO;AACnB,WAAG,MAAM,aAAa,EAAE;AACxB,WAAG,eAAe,EAAE;AAAA,MACrB;AACAA,oBAAAA,MAAI,aAAa;AAAA,IAClB;AAAA,IAEA,WAAW,GAAG;AAAEA,oBAAAA,MAAI,WAAW,EAAE,KAAK,+BAA+B,EAAE,GAAC,CAAG;AAAA,IAAE;AAAA,EAC9E;AACD;;;;;;;;;;;;;;;;;;;;;;;;;ACjDD,GAAG,WAAW,eAAe;"}
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"about.js","sources":["pages/my/about.vue","../../../../Downloads/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvbXkvYWJvdXQudnVl"],"sourcesContent":["<template>\r\n\t<view class=\"about\">\r\n\t\t<view class=\"hero\">\r\n\t\t\t<image class=\"logo\" src=\"/static/logo.png\" mode=\"aspectFit\" />\r\n\t\t\t<text class=\"title\">五金配件管家</text>\r\n\t\t\t<text class=\"subtitle\">专注小微门店的极简进销存</text>\r\n\t\t</view>\r\n\r\n\t\t<view class=\"card\">\r\n\t\t\t<view class=\"row\">\r\n\t\t\t\t<text class=\"label\">版本</text>\r\n\t\t\t\t<text class=\"value\">1.0.0</text>\r\n\t\t\t</view>\r\n\t\t\t<view class=\"row\">\r\n\t\t\t\t<text class=\"label\">隐私协议</text>\r\n\t\t\t\t<text class=\"link\" @click=\"openPolicy\">查看</text>\r\n\t\t\t</view>\r\n\t\t\t<view class=\"row\">\r\n\t\t\t\t<text class=\"label\">用户协议</text>\r\n\t\t\t\t<text class=\"link\" @click=\"openTerms\">查看</text>\r\n\t\t\t</view>\r\n\t\t\t<view class=\"row\">\r\n\t\t\t\t<text class=\"label\">个人信息安全投诉</text>\r\n\t\t\t\t<text class=\"link\" @click=\"openComplaint\">提交</text>\r\n\t\t\t</view>\r\n\t\t</view>\r\n\t</view>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n\tmethods: {\r\n\t\topenPolicy() {\r\n\t\t\tuni.showModal({ title: '隐私协议', content: '隐私协议(静态占位)', showCancel: false })\r\n\t\t},\r\n\t\topenTerms() {\r\n\t\t\tuni.showModal({ title: '用户协议', content: '用户协议(静态占位)', showCancel: false })\r\n\t\t},\r\n\t\topenComplaint() {\r\n\t\t\tuni.showToast({ title: '暂未开通', icon: 'none' })\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style>\r\n.about { padding: 24rpx; }\r\n.hero { padding: 32rpx 24rpx; display: flex; flex-direction: column; align-items: center; gap: 10rpx; }\r\n.logo { width: 160rpx; height: 160rpx; border-radius: 32rpx; }\r\n.title { margin-top: 8rpx; font-size: 36rpx; font-weight: 800; color: #333; }\r\n.subtitle { font-size: 26rpx; color: #888; }\r\n.card { margin-top: 18rpx; background: #fff; border-radius: 16rpx; overflow: hidden; }\r\n.row { display: flex; align-items: center; padding: 24rpx; border-top: 1rpx solid #f2f2f2; }\r\n.label { color: #666; }\r\n.value { margin-left: auto; color: #333; }\r\n.link { margin-left: auto; color: #1aad19; }\r\n</style>\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/21826/Desktop/Wj/PartsInquiry/frontend/pages/my/about.vue'\nwx.createPage(MiniProgramPage)"],"names":["uni"],"mappings":";;;AA8BA,MAAK,YAAU;AAAA,EACd,SAAS;AAAA,IACR,aAAa;AACZA,0BAAI,UAAU,EAAE,OAAO,QAAQ,SAAS,cAAc,YAAY,OAAO;AAAA,IACzE;AAAA,IACD,YAAY;AACXA,0BAAI,UAAU,EAAE,OAAO,QAAQ,SAAS,cAAc,YAAY,OAAO;AAAA,IACzE;AAAA,IACD,gBAAgB;AACfA,oBAAG,MAAC,UAAU,EAAE,OAAO,QAAQ,MAAM,QAAQ;AAAA,IAC9C;AAAA,EACD;AACD;;;;;;;;;;ACzCA,GAAG,WAAW,eAAe;"}
|
{"version":3,"file":"about.js","sources":["pages/my/about.vue","../../../软件/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvbXkvYWJvdXQudnVl"],"sourcesContent":["<template>\n\t<view class=\"about\">\n\t\t<view class=\"hero\">\n\t\t\t<image class=\"logo\" src=\"/static/logo.png\" mode=\"aspectFit\" />\n\t\t\t<text class=\"title\">五金配件管家</text>\n\t\t\t<text class=\"subtitle\">专注小微门店的极简进销存</text>\n\t\t</view>\n\n\t\t<view class=\"card\">\n\t\t\t<view class=\"row\">\n\t\t\t\t<text class=\"label\">版本</text>\n\t\t\t\t<text class=\"value\">1.0.0</text>\n\t\t\t</view>\n\t\t\t<view class=\"row\">\n\t\t\t\t<text class=\"label\">隐私协议</text>\n\t\t\t\t<text class=\"link\" @click=\"openPolicy\">查看</text>\n\t\t\t</view>\n\t\t\t<view class=\"row\">\n\t\t\t\t<text class=\"label\">用户协议</text>\n\t\t\t\t<text class=\"link\" @click=\"openTerms\">查看</text>\n\t\t\t</view>\n\t\t\t<view class=\"row\">\n\t\t\t\t<text class=\"label\">个人信息安全投诉</text>\n\t\t\t\t<text class=\"link\" @click=\"openComplaint\">提交</text>\n\t\t\t</view>\n\t\t</view>\n\t</view>\n</template>\n\n<script>\nexport default {\n\tmethods: {\n\t\topenPolicy() {\n\t\t\tuni.showModal({ title: '隐私协议', content: '隐私协议(静态占位)', showCancel: false })\n\t\t},\n\t\topenTerms() {\n\t\t\tuni.showModal({ title: '用户协议', content: '用户协议(静态占位)', showCancel: false })\n\t\t},\n\t\topenComplaint() {\n\t\t\tuni.showToast({ title: '暂未开通', icon: 'none' })\n\t\t}\n\t}\n}\n</script>\n\n<style lang=\"scss\">\n.about { padding: 24rpx; }\n.hero { padding: 32rpx 24rpx; display: flex; flex-direction: column; align-items: center; gap: 10rpx; }\n.logo { width: 160rpx; height: 160rpx; border-radius: 32rpx; }\n.title { margin-top: 8rpx; font-size: 36rpx; font-weight: 800; color: $uni-text-color; }\n.subtitle { font-size: 26rpx; color: $uni-text-color-grey; }\n.card { margin-top: 18rpx; background: $uni-bg-color-grey; border-radius: 16rpx; overflow: hidden; }\n.row { display: flex; align-items: center; padding: 24rpx; border-top: 1rpx solid $uni-border-color; }\n.label { color: $uni-text-color-grey; }\n.value { margin-left: auto; color: $uni-text-color; }\n.link { margin-left: auto; color: $uni-color-primary; }\n</style>\n\n\n","import MiniProgramPage from 'D:/wx/PartsInquiry/frontend/pages/my/about.vue'\nwx.createPage(MiniProgramPage)"],"names":["uni"],"mappings":";;;AA8BA,MAAK,YAAU;AAAA,EACd,SAAS;AAAA,IACR,aAAa;AACZA,0BAAI,UAAU,EAAE,OAAO,QAAQ,SAAS,cAAc,YAAY,OAAO;AAAA,IACzE;AAAA,IACD,YAAY;AACXA,0BAAI,UAAU,EAAE,OAAO,QAAQ,SAAS,cAAc,YAAY,OAAO;AAAA,IACzE;AAAA,IACD,gBAAgB;AACfA,oBAAG,MAAC,UAAU,EAAE,OAAO,QAAQ,MAAM,QAAQ;AAAA,IAC9C;AAAA,EACD;AACD;;;;;;;;;;ACzCA,GAAG,WAAW,eAAe;"}
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"categories.js","sources":["pages/product/categories.vue","../../../../Downloads/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvcHJvZHVjdC9jYXRlZ29yaWVzLnZ1ZQ"],"sourcesContent":["<template>\r\n\t<view class=\"page\">\r\n\t\t<view class=\"toolbar\">\r\n\t\t\t<input v-model.trim=\"name\" placeholder=\"新类别名称\" />\r\n\t\t\t<button size=\"mini\" @click=\"create\">新增</button>\r\n\t\t</view>\r\n\t\t<scroll-view scroll-y class=\"list\">\r\n\t\t\t<view class=\"item\" v-for=\"c in list\" :key=\"c.id\">\r\n\t\t\t\t<input v-model.trim=\"c.name\" />\r\n\t\t\t\t<view class=\"ops\">\r\n\t\t\t\t\t<button size=\"mini\" @click=\"update(c)\">保存</button>\r\n\t\t\t\t\t<button size=\"mini\" type=\"warn\" @click=\"remove(c)\">删除</button>\r\n\t\t\t\t</view>\r\n\t\t\t</view>\r\n\t\t</scroll-view>\r\n\t</view>\r\n</template>\r\n\r\n<script>\r\nimport { get, post, put, del } from '../../common/http.js'\r\n\r\nexport default {\r\n\tdata() {\r\n\t\treturn { name: '', list: [] }\r\n\t},\r\n\tonLoad() { this.reload() },\r\n\tmethods: {\r\n\t\tasync reload() {\r\n\t\t\ttry {\r\n\t\t\t\tconst res = await get('/api/product-categories')\r\n\t\t\t\tthis.list = Array.isArray(res?.list) ? res.list : (Array.isArray(res) ? res : [])\r\n\t\t\t} catch (_) {}\r\n\t\t},\r\n\t\tasync create() {\r\n\t\t\tif (!this.name) return\r\n\t\t\tawait post('/api/product-categories', { name: this.name })\r\n\t\t\tthis.name = ''\r\n\t\t\tthis.reload()\r\n\t\t},\r\n\t\tasync update(c) {\r\n\t\t\tawait put('/api/product-categories/' + c.id, { name: c.name })\r\n\t\t\tuni.showToast({ title: '已保存', icon: 'success' })\r\n\t\t},\r\n\t\tasync remove(c) {\r\n\t\t\tuni.showModal({ content: '确定删除该类别?', success: async (r) => {\r\n\t\t\t\tif (!r.confirm) return\r\n\t\t\t\tawait del('/api/product-categories/' + c.id)\r\n\t\t\t\tthis.reload()\r\n\t\t\t}})\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style>\r\n.page { display:flex; flex-direction: column; height: 100vh; }\r\n.toolbar { display:flex; gap: 12rpx; padding: 16rpx; background:#fff; }\r\n.toolbar input { flex:1; background:#f6f6f6; border-radius: 12rpx; padding: 12rpx; }\r\n.list { flex:1; }\r\n.item { display:flex; gap: 12rpx; align-items:center; padding: 16rpx; background:#fff; border-bottom: 1rpx solid #f1f1f1; }\r\n.item input { flex:1; background:#f7f7f7; border-radius: 10rpx; padding: 12rpx; }\r\n.ops { display:flex; gap: 10rpx; }\r\n</style>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/21826/Desktop/Wj/PartsInquiry/frontend/pages/product/categories.vue'\nwx.createPage(MiniProgramPage)"],"names":["get","post","put","uni","del"],"mappings":";;;AAqBA,MAAK,YAAU;AAAA,EACd,OAAO;AACN,WAAO,EAAE,MAAM,IAAI,MAAM,CAAA,EAAG;AAAA,EAC5B;AAAA,EACD,SAAS;AAAE,SAAK;EAAU;AAAA,EAC1B,SAAS;AAAA,IACR,MAAM,SAAS;AACd,UAAI;AACH,cAAM,MAAM,MAAMA,YAAG,IAAC,yBAAyB;AAC/C,aAAK,OAAO,MAAM,QAAQ,2BAAK,IAAI,IAAI,IAAI,OAAQ,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAA;AAAA,eACtE,GAAG;AAAA,MAAC;AAAA,IACb;AAAA,IACD,MAAM,SAAS;AACd,UAAI,CAAC,KAAK;AAAM;AAChB,YAAMC,YAAAA,KAAK,2BAA2B,EAAE,MAAM,KAAK,KAAG,CAAG;AACzD,WAAK,OAAO;AACZ,WAAK,OAAO;AAAA,IACZ;AAAA,IACD,MAAM,OAAO,GAAG;AACf,YAAMC,YAAG,IAAC,6BAA6B,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM;AAC7DC,oBAAG,MAAC,UAAU,EAAE,OAAO,OAAO,MAAM,WAAW;AAAA,IAC/C;AAAA,IACD,MAAM,OAAO,GAAG;AACfA,oBAAG,MAAC,UAAU,EAAE,SAAS,YAAY,SAAS,OAAO,MAAM;AAC1D,YAAI,CAAC,EAAE;AAAS;AAChB,cAAMC,gBAAI,6BAA6B,EAAE,EAAE;AAC3C,aAAK,OAAO;AAAA,MACb,EAAC,CAAC;AAAA,IACH;AAAA,EACD;AACD;;;;;;;;;;;;;;;;;;;;;;AClDA,GAAG,WAAW,eAAe;"}
|
{"version":3,"file":"categories.js","sources":["pages/product/categories.vue","../../../软件/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvcHJvZHVjdC9jYXRlZ29yaWVzLnZ1ZQ"],"sourcesContent":["<template>\r\n\t<view class=\"page\">\r\n\t\t<view class=\"toolbar\">\r\n\t\t\t<input v-model.trim=\"name\" placeholder=\"新类别名称\" />\r\n\t\t\t<button size=\"mini\" @click=\"create\">新增</button>\r\n\t\t</view>\r\n\t\t<scroll-view scroll-y class=\"list\">\r\n\t\t\t<view class=\"item\" v-for=\"c in list\" :key=\"c.id\">\r\n\t\t\t\t<input v-model.trim=\"c.name\" />\r\n\t\t\t\t<view class=\"ops\">\r\n\t\t\t\t\t<button size=\"mini\" @click=\"update(c)\">保存</button>\r\n\t\t\t\t\t<button size=\"mini\" type=\"warn\" @click=\"remove(c)\">删除</button>\r\n\t\t\t\t</view>\r\n\t\t\t</view>\r\n\t\t</scroll-view>\r\n\t</view>\r\n</template>\r\n\r\n<script>\r\nimport { get, post, put, del } from '../../common/http.js'\r\n\r\nexport default {\r\n\tdata() {\r\n\t\treturn { name: '', list: [] }\r\n\t},\r\n\tonLoad() { this.reload() },\r\n\tmethods: {\r\n\t\tasync reload() {\r\n\t\t\ttry {\r\n\t\t\t\tconst res = await get('/api/product-categories')\r\n\t\t\t\tthis.list = Array.isArray(res?.list) ? res.list : (Array.isArray(res) ? res : [])\r\n\t\t\t} catch (_) {}\r\n\t\t},\r\n\t\tasync create() {\r\n\t\t\tif (!this.name) return\r\n\t\t\tawait post('/api/product-categories', { name: this.name })\r\n\t\t\tthis.name = ''\r\n\t\t\tthis.reload()\r\n\t\t},\r\n\t\tasync update(c) {\r\n\t\t\tawait put('/api/product-categories/' + c.id, { name: c.name })\r\n\t\t\tuni.showToast({ title: '已保存', icon: 'success' })\r\n\t\t},\r\n\t\tasync remove(c) {\r\n\t\t\tuni.showModal({ content: '确定删除该类别?', success: async (r) => {\r\n\t\t\t\tif (!r.confirm) return\r\n\t\t\t\tawait del('/api/product-categories/' + c.id)\r\n\t\t\t\tthis.reload()\r\n\t\t\t}})\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style>\r\n.page { display:flex; flex-direction: column; height: 100vh; }\r\n.toolbar { display:flex; gap: 12rpx; padding: 16rpx; background:#fff; }\r\n.toolbar input { flex:1; background:#f6f6f6; border-radius: 12rpx; padding: 12rpx; }\r\n.list { flex:1; }\r\n.item { display:flex; gap: 12rpx; align-items:center; padding: 16rpx; background:#fff; border-bottom: 1rpx solid #f1f1f1; }\r\n.item input { flex:1; background:#f7f7f7; border-radius: 10rpx; padding: 12rpx; }\r\n.ops { display:flex; gap: 10rpx; }\r\n</style>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'D:/wx/PartsInquiry/frontend/pages/product/categories.vue'\nwx.createPage(MiniProgramPage)"],"names":["get","post","put","uni","del"],"mappings":";;;AAqBA,MAAK,YAAU;AAAA,EACd,OAAO;AACN,WAAO,EAAE,MAAM,IAAI,MAAM,CAAA,EAAG;AAAA,EAC5B;AAAA,EACD,SAAS;AAAE,SAAK;EAAU;AAAA,EAC1B,SAAS;AAAA,IACR,MAAM,SAAS;AACd,UAAI;AACH,cAAM,MAAM,MAAMA,YAAG,IAAC,yBAAyB;AAC/C,aAAK,OAAO,MAAM,QAAQ,2BAAK,IAAI,IAAI,IAAI,OAAQ,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAA;AAAA,eACtE,GAAG;AAAA,MAAC;AAAA,IACb;AAAA,IACD,MAAM,SAAS;AACd,UAAI,CAAC,KAAK;AAAM;AAChB,YAAMC,YAAAA,KAAK,2BAA2B,EAAE,MAAM,KAAK,KAAG,CAAG;AACzD,WAAK,OAAO;AACZ,WAAK,OAAO;AAAA,IACZ;AAAA,IACD,MAAM,OAAO,GAAG;AACf,YAAMC,YAAG,IAAC,6BAA6B,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM;AAC7DC,oBAAG,MAAC,UAAU,EAAE,OAAO,OAAO,MAAM,WAAW;AAAA,IAC/C;AAAA,IACD,MAAM,OAAO,GAAG;AACfA,oBAAG,MAAC,UAAU,EAAE,SAAS,YAAY,SAAS,OAAO,MAAM;AAC1D,YAAI,CAAC,EAAE;AAAS;AAChB,cAAMC,gBAAI,6BAA6B,EAAE,EAAE;AAC3C,aAAK,OAAO;AAAA,MACb,EAAC,CAAC;AAAA,IACH;AAAA,EACD;AACD;;;;;;;;;;;;;;;;;;;;;;AClDA,GAAG,WAAW,eAAe;"}
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"select.js","sources":["pages/product/select.vue","../../../../Downloads/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvcHJvZHVjdC9zZWxlY3QudnVl"],"sourcesContent":["<template>\r\n\t<view class=\"page\">\r\n\t\t<view class=\"search\">\r\n\t\t\t<input v-model=\"kw\" placeholder=\"搜索商品名称/编码\" @confirm=\"search\" />\r\n\t\t\t<button size=\"mini\" @click=\"search\">搜索</button>\r\n\t\t</view>\r\n\t\t<scroll-view scroll-y class=\"list\">\r\n\t\t\t<view class=\"item\" v-for=\"p in products\" :key=\"p.id\" @click=\"select(p)\">\r\n\t\t\t\t<view class=\"name\">{{ p.name }}</view>\r\n\t\t\t\t<view class=\"meta\">{{ (p.brand||'') + ' ' + (p.model||'') + ' ' + (p.spec||'') }} · 库存:{{ p.stock ?? 0 }}</view>\r\n\t\t\t</view>\r\n\t\t</scroll-view>\r\n\t</view>\r\n</template>\r\n\r\n<script>\r\n\timport { get } from '../../common/http.js'\r\n\texport default {\r\n\t\tdata() { return { kw: '', products: [] } },\r\n\t\tonLoad() { this.search() },\r\n\t\tmethods: {\r\n\t\t\tasync search() {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst res = await get('/api/products', { kw: this.kw, page: 1, size: 50 })\r\n\t\t\t\t\tthis.products = Array.isArray(res?.list) ? res.list : (Array.isArray(res) ? res : [])\r\n\t\t\t\t} catch(e) { uni.showToast({ title: '加载失败', icon: 'none' }) }\r\n\t\t\t},\r\n\t\t\tselect(p) {\r\n\t\t\t\tconst opener = getCurrentPages()[getCurrentPages().length-2]\r\n\t\t\t\tif (opener && opener.$vm && opener.$vm.items) {\r\n\t\t\t\t\tconst initPrice = Number((p.retailPrice != null ? p.retailPrice : (p.price || 0)))\r\n\t\t\t\t\topener.$vm.items.push({ productId: p.id, productName: p.name, quantity: 1, unitPrice: initPrice, _autoPrice: true })\r\n\t\t\t\t}\r\n\t\t\t\tuni.navigateBack()\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n</script>\r\n\r\n<style>\r\n\t.page { display:flex; flex-direction: column; height: 100vh; }\r\n\t.search { display:flex; gap: 12rpx; padding: 16rpx; background:#fff; }\r\n\t.search input { flex:1; background:#f6f6f6; border-radius: 12rpx; padding: 12rpx; }\r\n\t.list { flex:1; }\r\n\t.item { padding: 20rpx 24rpx; background:#fff; border-bottom: 1rpx solid #f1f1f1; }\r\n\t.name { color:#333; margin-bottom: 6rpx; }\r\n\t.meta { color:#888; font-size: 24rpx; }\r\n</style>\r\n\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/21826/Desktop/Wj/PartsInquiry/frontend/pages/product/select.vue'\nwx.createPage(MiniProgramPage)"],"names":["get","uni"],"mappings":";;;AAiBC,MAAK,YAAU;AAAA,EACd,OAAO;AAAE,WAAO,EAAE,IAAI,IAAI,UAAU,CAAA;EAAM;AAAA,EAC1C,SAAS;AAAE,SAAK;EAAU;AAAA,EAC1B,SAAS;AAAA,IACR,MAAM,SAAS;AACd,UAAI;AACH,cAAM,MAAM,MAAMA,gBAAI,iBAAiB,EAAE,IAAI,KAAK,IAAI,MAAM,GAAG,MAAM,GAAC,CAAG;AACzE,aAAK,WAAW,MAAM,QAAQ,2BAAK,IAAI,IAAI,IAAI,OAAQ,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAA;AAAA,eAC3E,GAAG;AAAEC,sBAAAA,MAAI,UAAU,EAAE,OAAO,QAAQ,MAAM,OAAO,CAAC;AAAA,MAAE;AAAA,IAC5D;AAAA,IACD,OAAO,GAAG;AACT,YAAM,SAAS,gBAAiB,EAAC,gBAAe,EAAG,SAAO,CAAC;AAC3D,UAAI,UAAU,OAAO,OAAO,OAAO,IAAI,OAAO;AAC7C,cAAM,YAAY,OAAQ,EAAE,eAAe,OAAO,EAAE,cAAe,EAAE,SAAS,CAAG;AACjF,eAAO,IAAI,MAAM,KAAK,EAAE,WAAW,EAAE,IAAI,aAAa,EAAE,MAAM,UAAU,GAAG,WAAW,WAAW,YAAY,MAAM;AAAA,MACpH;AACAA,oBAAAA,MAAI,aAAa;AAAA,IAClB;AAAA,EACD;AACD;;;;;;;;;;;;;;;;;;;ACnCD,GAAG,WAAW,eAAe;"}
|
{"version":3,"file":"select.js","sources":["pages/product/select.vue","../../../软件/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvcHJvZHVjdC9zZWxlY3QudnVl"],"sourcesContent":["<template>\n\t<view class=\"page\">\n\t\t<view class=\"search\">\n\t\t\t<input v-model=\"kw\" placeholder=\"搜索商品名称/编码\" @confirm=\"search\" />\n\t\t\t<button size=\"mini\" @click=\"search\">搜索</button>\n\t\t</view>\n\t\t<scroll-view scroll-y class=\"list\">\n\t\t\t<view class=\"item\" v-for=\"p in products\" :key=\"p.id\" @click=\"select(p)\">\n\t\t\t\t<view class=\"name\">{{ p.name }}</view>\n\t\t\t\t<view class=\"meta\">{{ (p.brand||'') + ' ' + (p.model||'') + ' ' + (p.spec||'') }} · 库存:{{ p.stock ?? 0 }}</view>\n\t\t\t</view>\n\t\t</scroll-view>\n\t</view>\n</template>\n\n<script>\n\timport { get } from '../../common/http.js'\n\texport default {\n\t\tdata() { return { kw: '', products: [] } },\n\t\tonLoad() { this.search() },\n\t\tmethods: {\n\t\t\tasync search() {\n\t\t\t\ttry {\n\t\t\t\t\tconst res = await get('/api/products', { kw: this.kw, page: 1, size: 50 })\n\t\t\t\t\tthis.products = Array.isArray(res?.list) ? res.list : (Array.isArray(res) ? res : [])\n\t\t\t\t} catch(e) { uni.showToast({ title: '加载失败', icon: 'none' }) }\n\t\t\t},\n\t\t\tselect(p) {\n\t\t\t\tconst opener = getCurrentPages()[getCurrentPages().length-2]\n\t\t\t\tif (opener && opener.$vm && opener.$vm.items) {\n\t\t\t\t\tconst initPrice = Number((p.retailPrice != null ? p.retailPrice : (p.price || 0)))\n\t\t\t\t\topener.$vm.items.push({ productId: p.id, productName: p.name, quantity: 1, unitPrice: initPrice, _autoPrice: true })\n\t\t\t\t}\n\t\t\t\tuni.navigateBack()\n\t\t\t}\n\t\t}\n\t}\n</script>\n\n<style lang=\"scss\">\n\t.page { display:flex; flex-direction: column; height: 100vh; }\n\t.search { display:flex; gap: 12rpx; padding: 16rpx; background:$uni-bg-color-grey; }\n\t.search input { flex:1; background:$uni-bg-color-hover; border-radius: 12rpx; padding: 12rpx; color:$uni-text-color; }\n\t.list { flex:1; }\n\t.item { padding: 20rpx 24rpx; background:$uni-bg-color-grey; border-bottom: 1rpx solid $uni-border-color; }\n\t.name { color:$uni-text-color; margin-bottom: 6rpx; }\n\t.meta { color:$uni-text-color-grey; font-size: 24rpx; }\n</style>\n\n\n\n","import MiniProgramPage from 'D:/wx/PartsInquiry/frontend/pages/product/select.vue'\nwx.createPage(MiniProgramPage)"],"names":["get","uni"],"mappings":";;;AAiBC,MAAK,YAAU;AAAA,EACd,OAAO;AAAE,WAAO,EAAE,IAAI,IAAI,UAAU,CAAA;EAAM;AAAA,EAC1C,SAAS;AAAE,SAAK;EAAU;AAAA,EAC1B,SAAS;AAAA,IACR,MAAM,SAAS;AACd,UAAI;AACH,cAAM,MAAM,MAAMA,gBAAI,iBAAiB,EAAE,IAAI,KAAK,IAAI,MAAM,GAAG,MAAM,GAAC,CAAG;AACzE,aAAK,WAAW,MAAM,QAAQ,2BAAK,IAAI,IAAI,IAAI,OAAQ,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAA;AAAA,eAC3E,GAAG;AAAEC,sBAAAA,MAAI,UAAU,EAAE,OAAO,QAAQ,MAAM,OAAO,CAAC;AAAA,MAAE;AAAA,IAC5D;AAAA,IACD,OAAO,GAAG;AACT,YAAM,SAAS,gBAAiB,EAAC,gBAAe,EAAG,SAAO,CAAC;AAC3D,UAAI,UAAU,OAAO,OAAO,OAAO,IAAI,OAAO;AAC7C,cAAM,YAAY,OAAQ,EAAE,eAAe,OAAO,EAAE,cAAe,EAAE,SAAS,CAAG;AACjF,eAAO,IAAI,MAAM,KAAK,EAAE,WAAW,EAAE,IAAI,aAAa,EAAE,MAAM,UAAU,GAAG,WAAW,WAAW,YAAY,MAAM;AAAA,MACpH;AACAA,oBAAAA,MAAI,aAAa;AAAA,IAClB;AAAA,EACD;AACD;;;;;;;;;;;;;;;;;;;ACnCD,GAAG,WAAW,eAAe;"}
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"settings.js","sources":["pages/product/settings.vue","../../../../Downloads/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvcHJvZHVjdC9zZXR0aW5ncy52dWU"],"sourcesContent":["<template>\r\n\t<view class=\"page\">\r\n\t\t<view class=\"item\">\r\n\t\t\t<text>隐藏零库存商品</text>\r\n\t\t\t<switch :checked=\"settings.hideZeroStock\" @change=\"(e)=>update('hideZeroStock', e.detail.value)\" />\r\n\t\t</view>\r\n\t\t<view class=\"item\">\r\n\t\t\t<text>隐藏进货价</text>\r\n\t\t\t<switch :checked=\"settings.hidePurchasePrice\" @change=\"(e)=>update('hidePurchasePrice', e.detail.value)\" />\r\n\t\t</view>\r\n\t</view>\r\n</template>\r\n\r\n<script>\r\nimport { get, put } from '../../common/http.js'\r\n\r\nexport default {\r\n\tdata() {\r\n\t\treturn { settings: { hideZeroStock: false, hidePurchasePrice: false } }\r\n\t},\r\n\tonLoad() { this.load() },\r\n\tmethods: {\r\n\t\tasync load() {\r\n\t\t\ttry {\r\n\t\t\t\tconst res = await get('/api/product-settings')\r\n\t\t\t\tthis.settings = { hideZeroStock: !!res?.hideZeroStock, hidePurchasePrice: !!res?.hidePurchasePrice }\r\n\t\t\t} catch (_) {}\r\n\t\t},\r\n\t\tasync update(key, val) {\r\n\t\t\tconst next = { ...this.settings, [key]: val }\r\n\t\t\tthis.settings = next\r\n\t\t\ttry { await put('/api/product-settings', next) } catch (_) {}\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style>\r\n.page { background:#fff; }\r\n.item { display:flex; justify-content: space-between; align-items:center; padding: 20rpx; border-bottom: 1rpx solid #f1f1f1; }\r\n</style>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/21826/Desktop/Wj/PartsInquiry/frontend/pages/product/settings.vue'\nwx.createPage(MiniProgramPage)"],"names":["get","put"],"mappings":";;;AAgBA,MAAK,YAAU;AAAA,EACd,OAAO;AACN,WAAO,EAAE,UAAU,EAAE,eAAe,OAAO,mBAAmB,QAAQ;AAAA,EACtE;AAAA,EACD,SAAS;AAAE,SAAK;EAAQ;AAAA,EACxB,SAAS;AAAA,IACR,MAAM,OAAO;AACZ,UAAI;AACH,cAAM,MAAM,MAAMA,YAAG,IAAC,uBAAuB;AAC7C,aAAK,WAAW,EAAE,eAAe,CAAC,EAAC,2BAAK,gBAAe,mBAAmB,CAAC,EAAC,2BAAK,mBAAkB;AAAA,eAC3F,GAAG;AAAA,MAAC;AAAA,IACb;AAAA,IACD,MAAM,OAAO,KAAK,KAAK;AACtB,YAAM,OAAO,EAAE,GAAG,KAAK,UAAU,CAAC,GAAG,GAAG,IAAI;AAC5C,WAAK,WAAW;AAChB,UAAI;AAAE,cAAMC,YAAAA,IAAI,yBAAyB,IAAI;AAAA,MAAI,SAAO,GAAG;AAAA,MAAC;AAAA,IAC7D;AAAA,EACD;AACD;;;;;;;;;;ACjCA,GAAG,WAAW,eAAe;"}
|
{"version":3,"file":"settings.js","sources":["pages/product/settings.vue","../../../软件/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvcHJvZHVjdC9zZXR0aW5ncy52dWU"],"sourcesContent":["<template>\r\n\t<view class=\"page\">\r\n\t\t<view class=\"item\">\r\n\t\t\t<text>隐藏零库存商品</text>\r\n\t\t\t<switch :checked=\"settings.hideZeroStock\" @change=\"(e)=>update('hideZeroStock', e.detail.value)\" />\r\n\t\t</view>\r\n\t\t<view class=\"item\">\r\n\t\t\t<text>隐藏进货价</text>\r\n\t\t\t<switch :checked=\"settings.hidePurchasePrice\" @change=\"(e)=>update('hidePurchasePrice', e.detail.value)\" />\r\n\t\t</view>\r\n\t</view>\r\n</template>\r\n\r\n<script>\r\nimport { get, put } from '../../common/http.js'\r\n\r\nexport default {\r\n\tdata() {\r\n\t\treturn { settings: { hideZeroStock: false, hidePurchasePrice: false } }\r\n\t},\r\n\tonLoad() { this.load() },\r\n\tmethods: {\r\n\t\tasync load() {\r\n\t\t\ttry {\r\n\t\t\t\tconst res = await get('/api/product-settings')\r\n\t\t\t\tthis.settings = { hideZeroStock: !!res?.hideZeroStock, hidePurchasePrice: !!res?.hidePurchasePrice }\r\n\t\t\t} catch (_) {}\r\n\t\t},\r\n\t\tasync update(key, val) {\r\n\t\t\tconst next = { ...this.settings, [key]: val }\r\n\t\t\tthis.settings = next\r\n\t\t\ttry { await put('/api/product-settings', next) } catch (_) {}\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style>\r\n.page { background:#fff; }\r\n.item { display:flex; justify-content: space-between; align-items:center; padding: 20rpx; border-bottom: 1rpx solid #f1f1f1; }\r\n</style>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'D:/wx/PartsInquiry/frontend/pages/product/settings.vue'\nwx.createPage(MiniProgramPage)"],"names":["get","put"],"mappings":";;;AAgBA,MAAK,YAAU;AAAA,EACd,OAAO;AACN,WAAO,EAAE,UAAU,EAAE,eAAe,OAAO,mBAAmB,QAAQ;AAAA,EACtE;AAAA,EACD,SAAS;AAAE,SAAK;EAAQ;AAAA,EACxB,SAAS;AAAA,IACR,MAAM,OAAO;AACZ,UAAI;AACH,cAAM,MAAM,MAAMA,YAAG,IAAC,uBAAuB;AAC7C,aAAK,WAAW,EAAE,eAAe,CAAC,EAAC,2BAAK,gBAAe,mBAAmB,CAAC,EAAC,2BAAK,mBAAkB;AAAA,eAC3F,GAAG;AAAA,MAAC;AAAA,IACb;AAAA,IACD,MAAM,OAAO,KAAK,KAAK;AACtB,YAAM,OAAO,EAAE,GAAG,KAAK,UAAU,CAAC,GAAG,GAAG,IAAI;AAC5C,WAAK,WAAW;AAChB,UAAI;AAAE,cAAMC,YAAAA,IAAI,yBAAyB,IAAI;AAAA,MAAI,SAAO,GAAG;AAAA,MAAC;AAAA,IAC7D;AAAA,EACD;AACD;;;;;;;;;;ACjCA,GAAG,WAAW,eAAe;"}
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"units.js","sources":["pages/product/units.vue","../../../../Downloads/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvcHJvZHVjdC91bml0cy52dWU"],"sourcesContent":["<template>\r\n\t<view class=\"page\">\r\n\t\t<view class=\"toolbar\">\r\n\t\t\t<input v-model.trim=\"name\" placeholder=\"新单位名称\" />\r\n\t\t\t<button size=\"mini\" @click=\"create\">新增</button>\r\n\t\t</view>\r\n\t\t<scroll-view scroll-y class=\"list\">\r\n\t\t\t<view class=\"item\" v-for=\"u in list\" :key=\"u.id\">\r\n\t\t\t\t<input v-model.trim=\"u.name\" />\r\n\t\t\t\t<view class=\"ops\">\r\n\t\t\t\t\t<button size=\"mini\" @click=\"update(u)\">保存</button>\r\n\t\t\t\t\t<button size=\"mini\" type=\"warn\" @click=\"remove(u)\">删除</button>\r\n\t\t\t\t</view>\r\n\t\t\t</view>\r\n\t\t</scroll-view>\r\n\t</view>\r\n</template>\r\n\r\n<script>\r\nimport { get, post, put, del } from '../../common/http.js'\r\n\r\nexport default {\r\n\tdata() {\r\n\t\treturn { name: '', list: [] }\r\n\t},\r\n\tonLoad() { this.reload() },\r\n\tmethods: {\r\n\t\tasync reload() {\r\n\t\t\ttry {\r\n\t\t\t\tconst res = await get('/api/product-units')\r\n\t\t\t\tthis.list = Array.isArray(res?.list) ? res.list : (Array.isArray(res) ? res : [])\r\n\t\t\t} catch (_) {}\r\n\t\t},\r\n\t\tasync create() {\r\n\t\t\tif (!this.name) return\r\n\t\t\tawait post('/api/product-units', { name: this.name })\r\n\t\t\tthis.name = ''\r\n\t\t\tthis.reload()\r\n\t\t},\r\n\t\tasync update(u) {\r\n\t\t\tawait put('/api/product-units/' + u.id, { name: u.name })\r\n\t\t\tuni.showToast({ title: '已保存', icon: 'success' })\r\n\t\t},\r\n\t\tasync remove(u) {\r\n\t\t\tuni.showModal({ content: '确定删除该单位?', success: async (r) => {\r\n\t\t\t\tif (!r.confirm) return\r\n\t\t\t\tawait del('/api/product-units/' + u.id)\r\n\t\t\t\tthis.reload()\r\n\t\t\t}})\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style>\r\n.page { display:flex; flex-direction: column; height: 100vh; }\r\n.toolbar { display:flex; gap: 12rpx; padding: 16rpx; background:#fff; }\r\n.toolbar input { flex:1; background:#f6f6f6; border-radius: 12rpx; padding: 12rpx; }\r\n.list { flex:1; }\r\n.item { display:flex; gap: 12rpx; align-items:center; padding: 16rpx; background:#fff; border-bottom: 1rpx solid #f1f1f1; }\r\n.item input { flex:1; background:#f7f7f7; border-radius: 10rpx; padding: 12rpx; }\r\n.ops { display:flex; gap: 10rpx; }\r\n</style>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/21826/Desktop/Wj/PartsInquiry/frontend/pages/product/units.vue'\nwx.createPage(MiniProgramPage)"],"names":["get","post","put","uni","del"],"mappings":";;;AAqBA,MAAK,YAAU;AAAA,EACd,OAAO;AACN,WAAO,EAAE,MAAM,IAAI,MAAM,CAAA,EAAG;AAAA,EAC5B;AAAA,EACD,SAAS;AAAE,SAAK;EAAU;AAAA,EAC1B,SAAS;AAAA,IACR,MAAM,SAAS;AACd,UAAI;AACH,cAAM,MAAM,MAAMA,YAAG,IAAC,oBAAoB;AAC1C,aAAK,OAAO,MAAM,QAAQ,2BAAK,IAAI,IAAI,IAAI,OAAQ,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAA;AAAA,eACtE,GAAG;AAAA,MAAC;AAAA,IACb;AAAA,IACD,MAAM,SAAS;AACd,UAAI,CAAC,KAAK;AAAM;AAChB,YAAMC,YAAAA,KAAK,sBAAsB,EAAE,MAAM,KAAK,KAAG,CAAG;AACpD,WAAK,OAAO;AACZ,WAAK,OAAO;AAAA,IACZ;AAAA,IACD,MAAM,OAAO,GAAG;AACf,YAAMC,YAAG,IAAC,wBAAwB,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM;AACxDC,oBAAG,MAAC,UAAU,EAAE,OAAO,OAAO,MAAM,WAAW;AAAA,IAC/C;AAAA,IACD,MAAM,OAAO,GAAG;AACfA,oBAAG,MAAC,UAAU,EAAE,SAAS,YAAY,SAAS,OAAO,MAAM;AAC1D,YAAI,CAAC,EAAE;AAAS;AAChB,cAAMC,gBAAI,wBAAwB,EAAE,EAAE;AACtC,aAAK,OAAO;AAAA,MACb,EAAC,CAAC;AAAA,IACH;AAAA,EACD;AACD;;;;;;;;;;;;;;;;;;;;;;AClDA,GAAG,WAAW,eAAe;"}
|
{"version":3,"file":"units.js","sources":["pages/product/units.vue","../../../软件/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvcHJvZHVjdC91bml0cy52dWU"],"sourcesContent":["<template>\r\n\t<view class=\"page\">\r\n\t\t<view class=\"toolbar\">\r\n\t\t\t<input v-model.trim=\"name\" placeholder=\"新单位名称\" />\r\n\t\t\t<button size=\"mini\" @click=\"create\">新增</button>\r\n\t\t</view>\r\n\t\t<scroll-view scroll-y class=\"list\">\r\n\t\t\t<view class=\"item\" v-for=\"u in list\" :key=\"u.id\">\r\n\t\t\t\t<input v-model.trim=\"u.name\" />\r\n\t\t\t\t<view class=\"ops\">\r\n\t\t\t\t\t<button size=\"mini\" @click=\"update(u)\">保存</button>\r\n\t\t\t\t\t<button size=\"mini\" type=\"warn\" @click=\"remove(u)\">删除</button>\r\n\t\t\t\t</view>\r\n\t\t\t</view>\r\n\t\t</scroll-view>\r\n\t</view>\r\n</template>\r\n\r\n<script>\r\nimport { get, post, put, del } from '../../common/http.js'\r\n\r\nexport default {\r\n\tdata() {\r\n\t\treturn { name: '', list: [] }\r\n\t},\r\n\tonLoad() { this.reload() },\r\n\tmethods: {\r\n\t\tasync reload() {\r\n\t\t\ttry {\r\n\t\t\t\tconst res = await get('/api/product-units')\r\n\t\t\t\tthis.list = Array.isArray(res?.list) ? res.list : (Array.isArray(res) ? res : [])\r\n\t\t\t} catch (_) {}\r\n\t\t},\r\n\t\tasync create() {\r\n\t\t\tif (!this.name) return\r\n\t\t\tawait post('/api/product-units', { name: this.name })\r\n\t\t\tthis.name = ''\r\n\t\t\tthis.reload()\r\n\t\t},\r\n\t\tasync update(u) {\r\n\t\t\tawait put('/api/product-units/' + u.id, { name: u.name })\r\n\t\t\tuni.showToast({ title: '已保存', icon: 'success' })\r\n\t\t},\r\n\t\tasync remove(u) {\r\n\t\t\tuni.showModal({ content: '确定删除该单位?', success: async (r) => {\r\n\t\t\t\tif (!r.confirm) return\r\n\t\t\t\tawait del('/api/product-units/' + u.id)\r\n\t\t\t\tthis.reload()\r\n\t\t\t}})\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style>\r\n.page { display:flex; flex-direction: column; height: 100vh; }\r\n.toolbar { display:flex; gap: 12rpx; padding: 16rpx; background:#fff; }\r\n.toolbar input { flex:1; background:#f6f6f6; border-radius: 12rpx; padding: 12rpx; }\r\n.list { flex:1; }\r\n.item { display:flex; gap: 12rpx; align-items:center; padding: 16rpx; background:#fff; border-bottom: 1rpx solid #f1f1f1; }\r\n.item input { flex:1; background:#f7f7f7; border-radius: 10rpx; padding: 12rpx; }\r\n.ops { display:flex; gap: 10rpx; }\r\n</style>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'D:/wx/PartsInquiry/frontend/pages/product/units.vue'\nwx.createPage(MiniProgramPage)"],"names":["get","post","put","uni","del"],"mappings":";;;AAqBA,MAAK,YAAU;AAAA,EACd,OAAO;AACN,WAAO,EAAE,MAAM,IAAI,MAAM,CAAA,EAAG;AAAA,EAC5B;AAAA,EACD,SAAS;AAAE,SAAK;EAAU;AAAA,EAC1B,SAAS;AAAA,IACR,MAAM,SAAS;AACd,UAAI;AACH,cAAM,MAAM,MAAMA,YAAG,IAAC,oBAAoB;AAC1C,aAAK,OAAO,MAAM,QAAQ,2BAAK,IAAI,IAAI,IAAI,OAAQ,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAA;AAAA,eACtE,GAAG;AAAA,MAAC;AAAA,IACb;AAAA,IACD,MAAM,SAAS;AACd,UAAI,CAAC,KAAK;AAAM;AAChB,YAAMC,YAAAA,KAAK,sBAAsB,EAAE,MAAM,KAAK,KAAG,CAAG;AACpD,WAAK,OAAO;AACZ,WAAK,OAAO;AAAA,IACZ;AAAA,IACD,MAAM,OAAO,GAAG;AACf,YAAMC,YAAG,IAAC,wBAAwB,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM;AACxDC,oBAAG,MAAC,UAAU,EAAE,OAAO,OAAO,MAAM,WAAW;AAAA,IAC/C;AAAA,IACD,MAAM,OAAO,GAAG;AACfA,oBAAG,MAAC,UAAU,EAAE,SAAS,YAAY,SAAS,OAAO,MAAM;AAC1D,YAAI,CAAC,EAAE;AAAS;AAChB,cAAMC,gBAAI,wBAAwB,EAAE,EAAE;AACtC,aAAK,OAAO;AAAA,MACb,EAAC,CAAC;AAAA,IACH;AAAA,EACD;AACD;;;;;;;;;;;;;;;;;;;;;;AClDA,GAAG,WAAW,eAAe;"}
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"form.js","sources":["pages/supplier/form.vue","../../../../Downloads/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvc3VwcGxpZXIvZm9ybS52dWU"],"sourcesContent":["<template>\r\n\t<view class=\"page\">\r\n\t\t<view class=\"field\"><text class=\"label\">供应商名称</text><input class=\"value\" v-model=\"form.name\" placeholder=\"必填\" /></view>\r\n\t\t<view class=\"field\"><text class=\"label\">联系人</text><input class=\"value\" v-model=\"form.contactName\" placeholder=\"可选\" /></view>\r\n\t\t<view class=\"field\"><text class=\"label\">手机</text><input class=\"value\" v-model=\"form.mobile\" placeholder=\"可选\" /></view>\r\n\t\t<view class=\"field\"><text class=\"label\">电话</text><input class=\"value\" v-model=\"form.phone\" placeholder=\"可选(座机)\" /></view>\r\n\t\t<view class=\"field\"><text class=\"label\">经营地址</text><input class=\"value\" v-model=\"form.address\" placeholder=\"可选\" /></view>\r\n\t\t<view class=\"field\"><text class=\"label\">初始应付款</text><input class=\"value\" type=\"digit\" v-model.number=\"form.apOpening\" placeholder=\"默认 0.00\" /></view>\r\n\t\t<view class=\"field\"><text class=\"label\">应付款</text><input class=\"value\" type=\"digit\" v-model.number=\"form.apPayable\" placeholder=\"默认 0.00\" /></view>\r\n\t\t<view class=\"textarea\"><textarea v-model=\"form.remark\" maxlength=\"200\" placeholder=\"备注(最多200字)\"></textarea></view>\r\n\r\n\t\t<view class=\"bottom\"><button class=\"primary\" @click=\"save\">保存</button></view>\r\n\t</view>\r\n</template>\r\n\r\n<script>\r\nimport { post, put } from '../../common/http.js'\r\nexport default {\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tid: null,\r\n\t\t\tform: { name:'', contactName:'', mobile:'', phone:'', address:'', apOpening:0, apPayable:0, remark:'' }\r\n\t\t}\r\n\t},\r\n\tonLoad(query) { if (query && query.id) { this.id = Number(query.id) } },\r\n\tmethods: {\r\n\t\tasync save() {\r\n\t\t\tif (!this.form.name) return uni.showToast({ title:'请填写供应商名称', icon:'none' })\r\n\t\t\ttry {\r\n\t\t\t\tif (this.id) await put(`/api/suppliers/${this.id}`, this.form)\r\n\t\t\t\telse await post('/api/suppliers', this.form)\r\n\t\t\t\tuni.showToast({ title:'保存成功', icon:'success' })\r\n\t\t\t\tsetTimeout(() => uni.navigateBack(), 500)\r\n\t\t\t} catch(e) { uni.showToast({ title: e?.message || '保存失败', icon:'none' }) }\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style>\r\n.page { padding-bottom: 140rpx; }\r\n.field { display:flex; justify-content: space-between; padding: 22rpx 24rpx; background:#fff; border-bottom:1rpx solid #eee; }\r\n.label { color:#666; }\r\n.value { color:#333; text-align: right; flex: 1; }\r\n.textarea { padding: 16rpx 24rpx; background:#fff; margin-top: 12rpx; }\r\n.bottom { position: fixed; left:0; right:0; bottom:0; background:#fff; padding: 16rpx 24rpx calc(env(safe-area-inset-bottom) + 16rpx); box-shadow: 0 -4rpx 12rpx rgba(0,0,0,0.06); }\r\n.primary { width: 100%; background: linear-gradient(135deg, #A0E4FF 0%, #17A2C4 100%); color:#fff; border-radius: 999rpx; padding: 20rpx 0; }\r\n</style>\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/21826/Desktop/Wj/PartsInquiry/frontend/pages/supplier/form.vue'\nwx.createPage(MiniProgramPage)"],"names":["uni","put","post"],"mappings":";;;AAiBA,MAAK,YAAU;AAAA,EACd,OAAO;AACN,WAAO;AAAA,MACN,IAAI;AAAA,MACJ,MAAM,EAAE,MAAK,IAAI,aAAY,IAAI,QAAO,IAAI,OAAM,IAAI,SAAQ,IAAI,WAAU,GAAG,WAAU,GAAG,QAAO,GAAG;AAAA,IACvG;AAAA,EACA;AAAA,EACD,OAAO,OAAO;AAAE,QAAI,SAAS,MAAM,IAAI;AAAE,WAAK,KAAK,OAAO,MAAM,EAAE;AAAA,IAAE;AAAA,EAAG;AAAA,EACvE,SAAS;AAAA,IACR,MAAM,OAAO;AACZ,UAAI,CAAC,KAAK,KAAK;AAAM,eAAOA,cAAG,MAAC,UAAU,EAAE,OAAM,YAAY,MAAK,QAAQ;AAC3E,UAAI;AACH,YAAI,KAAK;AAAI,gBAAMC,YAAAA,IAAI,kBAAkB,KAAK,EAAE,IAAI,KAAK,IAAI;AAAA;AACxD,gBAAMC,iBAAK,kBAAkB,KAAK,IAAI;AAC3CF,sBAAG,MAAC,UAAU,EAAE,OAAM,QAAQ,MAAK,WAAW;AAC9C,mBAAW,MAAMA,cAAAA,MAAI,aAAY,GAAI,GAAG;AAAA,MACzC,SAAQ,GAAG;AAAEA,sBAAG,MAAC,UAAU,EAAE,QAAO,uBAAG,YAAW,QAAQ,MAAK,OAAQ,CAAA;AAAA,MAAE;AAAA,IAC1E;AAAA,EACD;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnCA,GAAG,WAAW,eAAe;"}
|
{"version":3,"file":"form.js","sources":["pages/supplier/form.vue","../../../软件/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvc3VwcGxpZXIvZm9ybS52dWU"],"sourcesContent":["<template>\n\t<view class=\"page\">\n\t\t<view class=\"field\"><text class=\"label\">供应商名称</text><input class=\"value\" v-model=\"form.name\" placeholder=\"必填\" /></view>\n\t\t<view class=\"field\"><text class=\"label\">联系人</text><input class=\"value\" v-model=\"form.contactName\" placeholder=\"可选\" /></view>\n\t\t<view class=\"field\"><text class=\"label\">手机</text><input class=\"value\" v-model=\"form.mobile\" placeholder=\"可选\" /></view>\n\t\t<view class=\"field\"><text class=\"label\">电话</text><input class=\"value\" v-model=\"form.phone\" placeholder=\"可选(座机)\" /></view>\n\t\t<view class=\"field\"><text class=\"label\">经营地址</text><input class=\"value\" v-model=\"form.address\" placeholder=\"可选\" /></view>\n\t\t<view class=\"field\"><text class=\"label\">初始应付款</text><input class=\"value\" type=\"digit\" v-model.number=\"form.apOpening\" placeholder=\"默认 0.00\" /></view>\n\t\t<view class=\"field\"><text class=\"label\">应付款</text><input class=\"value\" type=\"digit\" v-model.number=\"form.apPayable\" placeholder=\"默认 0.00\" /></view>\n\t\t<view class=\"textarea\"><textarea v-model=\"form.remark\" maxlength=\"200\" placeholder=\"备注(最多200字)\"></textarea></view>\n\n\t\t<view class=\"bottom\"><button class=\"primary\" @click=\"save\">保存</button></view>\n\t</view>\n</template>\n\n<script>\nimport { post, put } from '../../common/http.js'\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tid: null,\n\t\t\tform: { name:'', contactName:'', mobile:'', phone:'', address:'', apOpening:0, apPayable:0, remark:'' }\n\t\t}\n\t},\n\tonLoad(query) { if (query && query.id) { this.id = Number(query.id) } },\n\tmethods: {\n\t\tasync save() {\n\t\t\tif (!this.form.name) return uni.showToast({ title:'请填写供应商名称', icon:'none' })\n\t\t\ttry {\n\t\t\t\tif (this.id) await put(`/api/suppliers/${this.id}`, this.form)\n\t\t\t\telse await post('/api/suppliers', this.form)\n\t\t\t\tuni.showToast({ title:'保存成功', icon:'success' })\n\t\t\t\tsetTimeout(() => uni.navigateBack(), 500)\n\t\t\t} catch(e) { uni.showToast({ title: e?.message || '保存失败', icon:'none' }) }\n\t\t}\n\t}\n}\n</script>\n\n<style lang=\"scss\">\n.page { padding-bottom: 140rpx; }\n.field { display:flex; justify-content: space-between; padding: 22rpx 24rpx; background:$uni-bg-color-grey; border-bottom:1rpx solid $uni-border-color; }\n.label { color:$uni-text-color-grey; }\n.value { color:$uni-text-color; text-align: right; flex: 1; }\n.textarea { padding: 16rpx 24rpx; background:$uni-bg-color-grey; margin-top: 12rpx; }\n.bottom { position: fixed; left:0; right:0; bottom:0; background:$uni-bg-color-grey; padding: 16rpx 24rpx calc(env(safe-area-inset-bottom) + 16rpx); box-shadow: 0 -4rpx 12rpx rgba(0,0,0,0.10); }\n.primary { width: 100%; background: $uni-color-primary; color:#fff; border-radius: 999rpx; padding: 20rpx 0; }\n</style>\n\n\n","import MiniProgramPage from 'D:/wx/PartsInquiry/frontend/pages/supplier/form.vue'\nwx.createPage(MiniProgramPage)"],"names":["uni","put","post"],"mappings":";;;AAiBA,MAAK,YAAU;AAAA,EACd,OAAO;AACN,WAAO;AAAA,MACN,IAAI;AAAA,MACJ,MAAM,EAAE,MAAK,IAAI,aAAY,IAAI,QAAO,IAAI,OAAM,IAAI,SAAQ,IAAI,WAAU,GAAG,WAAU,GAAG,QAAO,GAAG;AAAA,IACvG;AAAA,EACA;AAAA,EACD,OAAO,OAAO;AAAE,QAAI,SAAS,MAAM,IAAI;AAAE,WAAK,KAAK,OAAO,MAAM,EAAE;AAAA,IAAE;AAAA,EAAG;AAAA,EACvE,SAAS;AAAA,IACR,MAAM,OAAO;AACZ,UAAI,CAAC,KAAK,KAAK;AAAM,eAAOA,cAAG,MAAC,UAAU,EAAE,OAAM,YAAY,MAAK,QAAQ;AAC3E,UAAI;AACH,YAAI,KAAK;AAAI,gBAAMC,YAAAA,IAAI,kBAAkB,KAAK,EAAE,IAAI,KAAK,IAAI;AAAA;AACxD,gBAAMC,iBAAK,kBAAkB,KAAK,IAAI;AAC3CF,sBAAG,MAAC,UAAU,EAAE,OAAM,QAAQ,MAAK,WAAW;AAC9C,mBAAW,MAAMA,cAAAA,MAAI,aAAY,GAAI,GAAG;AAAA,MACzC,SAAQ,GAAG;AAAEA,sBAAG,MAAC,UAAU,EAAE,QAAO,uBAAG,YAAW,QAAQ,MAAK,OAAQ,CAAA;AAAA,MAAE;AAAA,IAC1E;AAAA,EACD;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnCA,GAAG,WAAW,eAAe;"}
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"select.js","sources":["pages/supplier/select.vue","../../../../Downloads/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvc3VwcGxpZXIvc2VsZWN0LnZ1ZQ"],"sourcesContent":["<template>\r\n\t<view class=\"page\">\r\n\t\t<view class=\"search\">\r\n\t\t\t<input v-model=\"kw\" placeholder=\"搜索供应商名称/电话\" @confirm=\"search\" />\r\n\t\t\t<button size=\"mini\" @click=\"search\">搜索</button>\r\n\t\t\t<button size=\"mini\" :type=\"debtOnly ? 'primary' : 'default'\" @click=\"toggleDebtOnly\">只看欠款</button>\r\n\t\t</view>\r\n\t\t<scroll-view scroll-y class=\"list\">\r\n\t\t\t<view class=\"item\" v-for=\"s in suppliers\" :key=\"s.id\" @click=\"select(s)\">\r\n\t\t\t\t<view class=\"name\">{{ s.name }}</view>\r\n\t\t\t\t<view class=\"meta\">\r\n\t\t\t\t\t{{ s.mobile || '—' }}\r\n\t\t\t\t\t<text v-if=\"typeof s.apPayable === 'number'\">|应付:¥ {{ Number(s.apPayable).toFixed(2) }}</text>\r\n\t\t\t\t</view>\r\n\t\t\t</view>\r\n\t\t</scroll-view>\r\n\t\t<view class=\"bottom\">\r\n\t\t\t<button class=\"primary\" @click=\"createSupplier\">新增供应商</button>\r\n\t\t</view>\r\n\t</view>\r\n</template>\r\n\r\n<script>\r\n\timport { get } from '../../common/http.js'\r\n\texport default {\r\n data() { return { kw: '', debtOnly: false, suppliers: [] } },\r\n\t\tonLoad() { this.search() },\r\n\t\tmethods: {\r\n\t\t\ttoggleDebtOnly() { this.debtOnly = !this.debtOnly; this.search() },\r\n\t\t\tasync search() {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst res = await get('/api/suppliers', { kw: this.kw, debtOnly: this.debtOnly, page: 1, size: 50 })\r\n\t\t\t\t\tthis.suppliers = Array.isArray(res?.list) ? res.list : (Array.isArray(res) ? res : [])\r\n\t\t\t\t} catch(e) { uni.showToast({ title: '加载失败', icon: 'none' }) }\r\n\t\t\t},\r\n\t\t\tcreateSupplier() { uni.navigateTo({ url: '/pages/supplier/form' }) },\r\n\t\t\tselect(s) {\r\n\t\t\t\tconst opener = getCurrentPages()[getCurrentPages().length-2]\r\n\t\t\t\tif (opener && opener.$vm) {\r\n\t\t\t\t\topener.$vm.order.supplierId = s.id\r\n\t\t\t\t\topener.$vm.supplierName = s.name\r\n\t\t\t\t}\r\n\t\t\t\tuni.navigateBack()\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n</script>\r\n\r\n<style>\r\n\t.page { display:flex; flex-direction: column; height: 100vh; }\r\n\t.search { display:flex; gap: 12rpx; padding: 16rpx; background:#fff; }\r\n\t.search input { flex:1; background:#f6f6f6; border-radius: 12rpx; padding: 12rpx; }\r\n\t.list { flex:1; }\r\n\t.item { padding: 20rpx 24rpx; background:#fff; border-bottom: 1rpx solid #f1f1f1; }\r\n\t.name { color:#333; margin-bottom: 6rpx; }\r\n\t.meta { color:#888; font-size: 24rpx; }\r\n</style>\r\n\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/21826/Desktop/Wj/PartsInquiry/frontend/pages/supplier/select.vue'\nwx.createPage(MiniProgramPage)"],"names":["get","uni"],"mappings":";;;AAwBC,MAAK,YAAU;AAAA,EACZ,OAAO;AAAE,WAAO,EAAE,IAAI,IAAI,UAAU,OAAO,WAAW,CAAA;EAAM;AAAA,EAC9D,SAAS;AAAE,SAAK;EAAU;AAAA,EAC1B,SAAS;AAAA,IACR,iBAAiB;AAAE,WAAK,WAAW,CAAC,KAAK;AAAU,WAAK;IAAU;AAAA,IAClE,MAAM,SAAS;AACd,UAAI;AACH,cAAM,MAAM,MAAMA,YAAG,IAAC,kBAAkB,EAAE,IAAI,KAAK,IAAI,UAAU,KAAK,UAAU,MAAM,GAAG,MAAM,IAAI;AACnG,aAAK,YAAY,MAAM,QAAQ,2BAAK,IAAI,IAAI,IAAI,OAAQ,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAA;AAAA,eAC5E,GAAG;AAAEC,sBAAAA,MAAI,UAAU,EAAE,OAAO,QAAQ,MAAM,OAAO,CAAC;AAAA,MAAE;AAAA,IAC5D;AAAA,IACD,iBAAiB;AAAEA,oBAAAA,MAAI,WAAW,EAAE,KAAK,uBAAqB,CAAG;AAAA,IAAG;AAAA,IACpE,OAAO,GAAG;AACT,YAAM,SAAS,gBAAiB,EAAC,gBAAe,EAAG,SAAO,CAAC;AAC3D,UAAI,UAAU,OAAO,KAAK;AACzB,eAAO,IAAI,MAAM,aAAa,EAAE;AAChC,eAAO,IAAI,eAAe,EAAE;AAAA,MAC7B;AACAA,oBAAAA,MAAI,aAAa;AAAA,IAClB;AAAA,EACD;AACD;;;;;;;;;;;;;;;;;;;;;;;;;AC5CD,GAAG,WAAW,eAAe;"}
|
{"version":3,"file":"select.js","sources":["pages/supplier/select.vue","../../../软件/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvc3VwcGxpZXIvc2VsZWN0LnZ1ZQ"],"sourcesContent":["<template>\r\n\t<view class=\"page\">\r\n\t\t<view class=\"search\">\r\n\t\t\t<input v-model=\"kw\" placeholder=\"搜索供应商名称/电话\" @confirm=\"search\" />\r\n\t\t\t<button size=\"mini\" @click=\"search\">搜索</button>\r\n\t\t\t<button size=\"mini\" :type=\"debtOnly ? 'primary' : 'default'\" @click=\"toggleDebtOnly\">只看欠款</button>\r\n\t\t</view>\r\n\t\t<scroll-view scroll-y class=\"list\">\r\n\t\t\t<view class=\"item\" v-for=\"s in suppliers\" :key=\"s.id\" @click=\"select(s)\">\r\n\t\t\t\t<view class=\"name\">{{ s.name }}</view>\r\n\t\t\t\t<view class=\"meta\">\r\n\t\t\t\t\t{{ s.mobile || '—' }}\r\n\t\t\t\t\t<text v-if=\"typeof s.apPayable === 'number'\">|应付:¥ {{ Number(s.apPayable).toFixed(2) }}</text>\r\n\t\t\t\t</view>\r\n\t\t\t</view>\r\n\t\t</scroll-view>\r\n\t\t<view class=\"bottom\">\r\n\t\t\t<button class=\"primary\" @click=\"createSupplier\">新增供应商</button>\r\n\t\t</view>\r\n\t</view>\r\n</template>\r\n\r\n<script>\r\n\timport { get } from '../../common/http.js'\r\n\texport default {\r\n data() { return { kw: '', debtOnly: false, suppliers: [] } },\r\n\t\tonLoad() { this.search() },\r\n\t\tmethods: {\r\n\t\t\ttoggleDebtOnly() { this.debtOnly = !this.debtOnly; this.search() },\r\n\t\t\tasync search() {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst res = await get('/api/suppliers', { kw: this.kw, debtOnly: this.debtOnly, page: 1, size: 50 })\r\n\t\t\t\t\tthis.suppliers = Array.isArray(res?.list) ? res.list : (Array.isArray(res) ? res : [])\r\n\t\t\t\t} catch(e) { uni.showToast({ title: '加载失败', icon: 'none' }) }\r\n\t\t\t},\r\n\t\t\tcreateSupplier() { uni.navigateTo({ url: '/pages/supplier/form' }) },\r\n\t\t\tselect(s) {\r\n\t\t\t\tconst opener = getCurrentPages()[getCurrentPages().length-2]\r\n\t\t\t\tif (opener && opener.$vm) {\r\n\t\t\t\t\topener.$vm.order.supplierId = s.id\r\n\t\t\t\t\topener.$vm.supplierName = s.name\r\n\t\t\t\t}\r\n\t\t\t\tuni.navigateBack()\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n</script>\r\n\r\n<style>\r\n\t.page { display:flex; flex-direction: column; height: 100vh; }\r\n\t.search { display:flex; gap: 12rpx; padding: 16rpx; background:#fff; }\r\n\t.search input { flex:1; background:#f6f6f6; border-radius: 12rpx; padding: 12rpx; }\r\n\t.list { flex:1; }\r\n\t.item { padding: 20rpx 24rpx; background:#fff; border-bottom: 1rpx solid #f1f1f1; }\r\n\t.name { color:#333; margin-bottom: 6rpx; }\r\n\t.meta { color:#888; font-size: 24rpx; }\r\n</style>\r\n\r\n\r\n\r\n","import MiniProgramPage from 'D:/wx/PartsInquiry/frontend/pages/supplier/select.vue'\nwx.createPage(MiniProgramPage)"],"names":["get","uni"],"mappings":";;;AAwBC,MAAK,YAAU;AAAA,EACZ,OAAO;AAAE,WAAO,EAAE,IAAI,IAAI,UAAU,OAAO,WAAW,CAAA;EAAM;AAAA,EAC9D,SAAS;AAAE,SAAK;EAAU;AAAA,EAC1B,SAAS;AAAA,IACR,iBAAiB;AAAE,WAAK,WAAW,CAAC,KAAK;AAAU,WAAK;IAAU;AAAA,IAClE,MAAM,SAAS;AACd,UAAI;AACH,cAAM,MAAM,MAAMA,YAAG,IAAC,kBAAkB,EAAE,IAAI,KAAK,IAAI,UAAU,KAAK,UAAU,MAAM,GAAG,MAAM,IAAI;AACnG,aAAK,YAAY,MAAM,QAAQ,2BAAK,IAAI,IAAI,IAAI,OAAQ,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAA;AAAA,eAC5E,GAAG;AAAEC,sBAAAA,MAAI,UAAU,EAAE,OAAO,QAAQ,MAAM,OAAO,CAAC;AAAA,MAAE;AAAA,IAC5D;AAAA,IACD,iBAAiB;AAAEA,oBAAAA,MAAI,WAAW,EAAE,KAAK,uBAAqB,CAAG;AAAA,IAAG;AAAA,IACpE,OAAO,GAAG;AACT,YAAM,SAAS,gBAAiB,EAAC,gBAAe,EAAG,SAAO,CAAC;AAC3D,UAAI,UAAU,OAAO,KAAK;AACzB,eAAO,IAAI,MAAM,aAAa,EAAE;AAChC,eAAO,IAAI,eAAe,EAAE;AAAA,MAC7B;AACAA,oBAAAA,MAAI,aAAa;AAAA,IAClB;AAAA,EACD;AACD;;;;;;;;;;;;;;;;;;;;;;;;;AC5CD,GAAG,WAAW,eAAe;"}
|
||||||
16
frontend/unpackage/dist/dev/app-plus/__uniappautomator.js
vendored
Normal file
32
frontend/unpackage/dist/dev/app-plus/__uniappchooselocation.js
vendored
Normal file
BIN
frontend/unpackage/dist/dev/app-plus/__uniapperror.png
vendored
Normal file
|
After Width: | Height: | Size: 5.7 KiB |
32
frontend/unpackage/dist/dev/app-plus/__uniappopenlocation.js
vendored
Normal file
33
frontend/unpackage/dist/dev/app-plus/__uniapppicker.js
vendored
Normal file
8
frontend/unpackage/dist/dev/app-plus/__uniappquill.js
vendored
Normal file
1
frontend/unpackage/dist/dev/app-plus/__uniappquillimageresize.js
vendored
Normal file
32
frontend/unpackage/dist/dev/app-plus/__uniappscan.js
vendored
Normal file
BIN
frontend/unpackage/dist/dev/app-plus/__uniappsuccess.png
vendored
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
24
frontend/unpackage/dist/dev/app-plus/__uniappview.html
vendored
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<title>View</title>
|
||||||
|
<link rel="icon" href="data:,">
|
||||||
|
<link rel="stylesheet" href="app.css" />
|
||||||
|
<script>var __uniConfig = {"globalStyle":{},"darkmode":false}</script>
|
||||||
|
<script>
|
||||||
|
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
|
||||||
|
CSS.supports('top: constant(a)'))
|
||||||
|
document.write(
|
||||||
|
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
|
||||||
|
(coverSupport ? ', viewport-fit=cover' : '') + '" />')
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="app"></div>
|
||||||
|
<script src="uni-app-view.umd.js"></script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
11
frontend/unpackage/dist/dev/app-plus/app-config-service.js
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
|
||||||
|
;(function(){
|
||||||
|
let u=void 0,isReady=false,onReadyCallbacks=[],isServiceReady=false,onServiceReadyCallbacks=[];
|
||||||
|
const __uniConfig = {"pages":[],"globalStyle":{"backgroundColor":"#F8F8F8","navigationBar":{"backgroundColor":"#F8F8F8","titleText":"五金配件管家","type":"default","titleColor":"#000000"},"isNVue":false},"nvue":{"compiler":"uni-app","styleCompiler":"uni-app","flex-direction":"column"},"renderer":"auto","appname":"林林林","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":true},"compilerVersion":"4.76","entryPagePath":"pages/index/index","entryPageQuery":"","realEntryPagePath":"","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000},"tabBar":{"position":"bottom","color":"#8a7535","selectedColor":"#B4880F","borderStyle":"black","blurEffect":"none","fontSize":"10px","iconWidth":"24px","spacing":"3px","height":"50px","list":[{"pagePath":"pages/index/index","text":"首页","iconPath":"/static/logo.png","selectedIconPath":"/static/logo.png"},{"pagePath":"pages/product/list","text":"货品","iconPath":"/static/logo.png","selectedIconPath":"/static/logo.png"},{"pagePath":"pages/order/create","text":"开单","iconPath":"/static/logo.png","selectedIconPath":"/static/logo.png"},{"pagePath":"pages/detail/index","text":"明细","iconPath":"/static/logo.png","selectedIconPath":"/static/logo.png"},{"pagePath":"pages/my/index","text":"我的","iconPath":"/static/logo.png","selectedIconPath":"/static/logo.png"}],"backgroundColor":"#ffffff","selectedIndex":0,"shown":true},"locales":{},"darkmode":false,"themeConfig":{}};
|
||||||
|
const __uniRoutes = [{"path":"pages/index/index","meta":{"isQuit":true,"isEntry":true,"isTabBar":true,"tabBarIndex":0,"navigationBar":{"titleText":"五金配件管家","type":"default"},"isNVue":false}},{"path":"pages/order/create","meta":{"isQuit":true,"isTabBar":true,"tabBarIndex":2,"navigationBar":{"titleText":"开单","type":"default"},"isNVue":false}},{"path":"pages/product/select","meta":{"navigationBar":{"titleText":"选择商品","type":"default"},"isNVue":false}},{"path":"pages/product/list","meta":{"isQuit":true,"isTabBar":true,"tabBarIndex":1,"navigationBar":{"titleText":"货品列表","type":"default"},"isNVue":false}},{"path":"pages/product/form","meta":{"navigationBar":{"titleText":"编辑货品","type":"default"},"isNVue":false}},{"path":"pages/product/categories","meta":{"navigationBar":{"titleText":"类别管理","type":"default"},"isNVue":false}},{"path":"pages/product/units","meta":{"navigationBar":{"titleText":"单位管理","type":"default"},"isNVue":false}},{"path":"pages/product/settings","meta":{"navigationBar":{"titleText":"货品设置","type":"default"},"isNVue":false}},{"path":"pages/customer/select","meta":{"navigationBar":{"titleText":"选择客户","type":"default"},"isNVue":false}},{"path":"pages/customer/form","meta":{"navigationBar":{"titleText":"新增客户","type":"default"},"isNVue":false}},{"path":"pages/customer/detail","meta":{"navigationBar":{"titleText":"客户详情","type":"default"},"isNVue":false}},{"path":"pages/supplier/select","meta":{"navigationBar":{"titleText":"选择供应商","type":"default"},"isNVue":false}},{"path":"pages/supplier/form","meta":{"navigationBar":{"titleText":"新增/编辑供应商","type":"default"},"isNVue":false}},{"path":"pages/account/select","meta":{"navigationBar":{"titleText":"选择账户","type":"default"},"isNVue":false}},{"path":"pages/account/ledger","meta":{"navigationBar":{"titleText":"账户流水","type":"default"},"isNVue":false}},{"path":"pages/account/form","meta":{"navigationBar":{"titleText":"新增/编辑账户","type":"default"},"isNVue":false}},{"path":"pages/detail/index","meta":{"isQuit":true,"isTabBar":true,"tabBarIndex":3,"navigationBar":{"titleText":"明细","type":"default"},"isNVue":false}},{"path":"pages/my/index","meta":{"isQuit":true,"isTabBar":true,"tabBarIndex":4,"navigationBar":{"titleText":"我的","type":"default"},"isNVue":false}},{"path":"pages/my/about","meta":{"navigationBar":{"titleText":"关于与协议","type":"default"},"isNVue":false}},{"path":"pages/report/index","meta":{"navigationBar":{"titleText":"报表","type":"default"},"isNVue":false}}].map(uniRoute=>(uniRoute.meta.route=uniRoute.path,__uniConfig.pages.push(uniRoute.path),uniRoute.path='/'+uniRoute.path,uniRoute));
|
||||||
|
__uniConfig.styles=[];//styles
|
||||||
|
__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
|
||||||
|
__uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
|
||||||
|
service.register("uni-app-config",{create(a,b,c){if(!__uniConfig.viewport){var d=b.weex.config.env.scale,e=b.weex.config.env.deviceWidth,f=Math.ceil(e/d);Object.assign(__uniConfig,{viewport:f,defaultFontSize:16})}return{instance:{__uniConfig:__uniConfig,__uniRoutes:__uniRoutes,global:u,window:u,document:u,frames:u,self:u,location:u,navigator:u,localStorage:u,history:u,Caches:u,screen:u,alert:u,confirm:u,prompt:u,fetch:u,XMLHttpRequest:u,WebSocket:u,webkit:u,print:u}}}});
|
||||||
|
})();
|
||||||
|
|
||||||
1
frontend/unpackage/dist/dev/app-plus/app-config.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
(function(){})();
|
||||||
5076
frontend/unpackage/dist/dev/app-plus/app-service.js
vendored
Normal file
4
frontend/unpackage/dist/dev/app-plus/app.css
vendored
Normal file
168
frontend/unpackage/dist/dev/app-plus/manifest.json
vendored
Normal file
@@ -0,0 +1,168 @@
|
|||||||
|
{
|
||||||
|
"@platforms": [
|
||||||
|
"android",
|
||||||
|
"iPhone",
|
||||||
|
"iPad"
|
||||||
|
],
|
||||||
|
"id": "",
|
||||||
|
"name": "林林林",
|
||||||
|
"version": {
|
||||||
|
"name": "1.0.0",
|
||||||
|
"code": "100"
|
||||||
|
},
|
||||||
|
"description": "",
|
||||||
|
"developer": {
|
||||||
|
"name": "",
|
||||||
|
"email": "",
|
||||||
|
"url": ""
|
||||||
|
},
|
||||||
|
"permissions": {
|
||||||
|
"UniNView": {
|
||||||
|
"description": "UniNView原生渲染"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"plus": {
|
||||||
|
"useragent": {
|
||||||
|
"value": "uni-app",
|
||||||
|
"concatenate": true
|
||||||
|
},
|
||||||
|
"splashscreen": {
|
||||||
|
"target": "id:1",
|
||||||
|
"autoclose": true,
|
||||||
|
"waiting": true,
|
||||||
|
"delay": 0
|
||||||
|
},
|
||||||
|
"popGesture": "close",
|
||||||
|
"launchwebview": {
|
||||||
|
"id": "1",
|
||||||
|
"kernel": "WKWebview"
|
||||||
|
},
|
||||||
|
"usingComponents": true,
|
||||||
|
"nvueStyleCompiler": "uni-app",
|
||||||
|
"compilerVersion": 3,
|
||||||
|
"distribute": {
|
||||||
|
"google": {
|
||||||
|
"permissions": [
|
||||||
|
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
|
||||||
|
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
|
||||||
|
"<uses-feature android:name=\"android.hardware.camera\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"apple": {},
|
||||||
|
"plugins": {
|
||||||
|
"audio": {
|
||||||
|
"mp3": {
|
||||||
|
"description": "Android平台录音支持MP3格式文件"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"statusbar": {
|
||||||
|
"immersed": "supportedDevice",
|
||||||
|
"style": "dark",
|
||||||
|
"background": "#F8F8F8"
|
||||||
|
},
|
||||||
|
"uniStatistics": {
|
||||||
|
"enable": false
|
||||||
|
},
|
||||||
|
"allowsInlineMediaPlayback": true,
|
||||||
|
"safearea": {
|
||||||
|
"background": "#ffffff",
|
||||||
|
"bottom": {
|
||||||
|
"offset": "auto"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"uni-app": {
|
||||||
|
"control": "uni-v3",
|
||||||
|
"vueVersion": "3",
|
||||||
|
"compilerVersion": "4.76",
|
||||||
|
"nvueCompiler": "uni-app",
|
||||||
|
"renderer": "auto",
|
||||||
|
"nvue": {
|
||||||
|
"flex-direction": "column"
|
||||||
|
},
|
||||||
|
"nvueLaunchMode": "normal",
|
||||||
|
"webView": {
|
||||||
|
"minUserAgentVersion": "49.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tabBar": {
|
||||||
|
"position": "bottom",
|
||||||
|
"color": "#8a7535",
|
||||||
|
"selectedColor": "#B4880F",
|
||||||
|
"borderStyle": "rgba(0,0,0,0.4)",
|
||||||
|
"blurEffect": "none",
|
||||||
|
"fontSize": "10px",
|
||||||
|
"iconWidth": "24px",
|
||||||
|
"spacing": "3px",
|
||||||
|
"height": "50px",
|
||||||
|
"list": [
|
||||||
|
{
|
||||||
|
"pagePath": "pages/index/index",
|
||||||
|
"text": "首页",
|
||||||
|
"iconPath": "/static/logo.png",
|
||||||
|
"selectedIconPath": "/static/logo.png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pagePath": "pages/product/list",
|
||||||
|
"text": "货品",
|
||||||
|
"iconPath": "/static/logo.png",
|
||||||
|
"selectedIconPath": "/static/logo.png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pagePath": "pages/order/create",
|
||||||
|
"text": "开单",
|
||||||
|
"iconPath": "/static/logo.png",
|
||||||
|
"selectedIconPath": "/static/logo.png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pagePath": "pages/detail/index",
|
||||||
|
"text": "明细",
|
||||||
|
"iconPath": "/static/logo.png",
|
||||||
|
"selectedIconPath": "/static/logo.png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pagePath": "pages/my/index",
|
||||||
|
"text": "我的",
|
||||||
|
"iconPath": "/static/logo.png",
|
||||||
|
"selectedIconPath": "/static/logo.png"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"backgroundColor": "#ffffff",
|
||||||
|
"selectedIndex": 0,
|
||||||
|
"shown": true,
|
||||||
|
"child": [
|
||||||
|
"lauchwebview"
|
||||||
|
],
|
||||||
|
"selected": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"app-harmony": {
|
||||||
|
"useragent": {
|
||||||
|
"value": "uni-app",
|
||||||
|
"concatenate": true
|
||||||
|
},
|
||||||
|
"uniStatistics": {
|
||||||
|
"enable": false
|
||||||
|
},
|
||||||
|
"safearea": {
|
||||||
|
"background": "#ffffff",
|
||||||
|
"bottom": {
|
||||||
|
"offset": "auto"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"launch_path": "__uniappview.html"
|
||||||
|
}
|
||||||
23
frontend/unpackage/dist/dev/app-plus/pages/account/form.css
vendored
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
|
||||||
|
.page { display:flex; flex-direction: column; height: 100vh;
|
||||||
|
}
|
||||||
|
.form { background:#fff;
|
||||||
|
}
|
||||||
|
.field { display:flex; align-items:center; justify-content: space-between; padding: 0.5625rem 0.625rem; border-bottom:0.03125rem solid #f3f3f3;
|
||||||
|
}
|
||||||
|
.label { color:#666;
|
||||||
|
}
|
||||||
|
.input { flex:1; text-align: right; color:#333;
|
||||||
|
}
|
||||||
|
.value { color:#333;
|
||||||
|
}
|
||||||
|
.actions { margin-top: 0.625rem; padding: 0 0.625rem;
|
||||||
|
}
|
||||||
|
.primary { width: 100%; background: #3c9cff; color:#fff; border-radius: 0.25rem; padding: 0.6875rem 0;
|
||||||
|
}
|
||||||
|
.sheet { background:#fff;
|
||||||
|
}
|
||||||
|
.sheet-item { padding: 0.8125rem; text-align:center; border-bottom:0.03125rem solid #f2f2f2;
|
||||||
|
}
|
||||||
|
.sheet-cancel { padding: 0.8125rem; text-align:center; color:#666;
|
||||||
|
}
|
||||||
35
frontend/unpackage/dist/dev/app-plus/pages/account/ledger.css
vendored
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
|
||||||
|
.page { display:flex; flex-direction: column; height: 100vh;
|
||||||
|
}
|
||||||
|
.filters { display:flex; gap: 0.5rem; padding: 0.5rem; background:#fff;
|
||||||
|
}
|
||||||
|
.field { display:flex; justify-content: space-between; align-items:center; padding: 0.5rem; border:0.03125rem solid #eee; border-radius: 0.375rem; min-width: 9.375rem;
|
||||||
|
}
|
||||||
|
.label { color:#666;
|
||||||
|
}
|
||||||
|
.value { color:#333;
|
||||||
|
}
|
||||||
|
.summary { display:grid; grid-template-columns: repeat(4,1fr); gap: 0.375rem; padding: 0.375rem 0.5rem; background:#fff; border-top:0.03125rem solid #f1f1f1; border-bottom:0.03125rem solid #f1f1f1;
|
||||||
|
}
|
||||||
|
.sum-item { padding: 0.375rem; text-align:center;
|
||||||
|
}
|
||||||
|
.k { display:block; color:#888; font-size: 0.75rem;
|
||||||
|
}
|
||||||
|
.v { display:block; margin-top:0.1875rem; font-weight:700; color:#333;
|
||||||
|
}
|
||||||
|
.list { flex:1;
|
||||||
|
}
|
||||||
|
.item { padding: 0.5625rem 0.5rem; border-bottom:0.03125rem solid #f4f4f4; background:#fff;
|
||||||
|
}
|
||||||
|
.row { display:flex; align-items:center; justify-content: space-between; margin-bottom: 0.1875rem;
|
||||||
|
}
|
||||||
|
.title { color:#333;
|
||||||
|
}
|
||||||
|
.amount { font-weight:700;
|
||||||
|
}
|
||||||
|
.amount.in { color:#2a9d8f;
|
||||||
|
}
|
||||||
|
.amount.out { color:#d35b5b;
|
||||||
|
}
|
||||||
|
.meta { color:#999; font-size: 0.75rem;
|
||||||
|
}
|
||||||
13
frontend/unpackage/dist/dev/app-plus/pages/account/select.css
vendored
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
|
||||||
|
.page { display:flex; flex-direction: column; height: 100vh;
|
||||||
|
}
|
||||||
|
.list { flex:1;
|
||||||
|
}
|
||||||
|
.item { padding: 0.625rem 0.75rem; background:#fff; border-bottom: 0.03125rem solid #f1f1f1;
|
||||||
|
}
|
||||||
|
.name { color:#333; margin-bottom: 0.1875rem;
|
||||||
|
}
|
||||||
|
.meta { color:#888; font-size: 0.75rem;
|
||||||
|
}
|
||||||
|
.fab { position: fixed; right: 1rem; bottom: 3.75rem; width: 3.125rem; height: 3.125rem; border-radius: 50%; background:#3c9cff; color:#fff; display:flex; align-items:center; justify-content:center; font-size: 1.625rem; box-shadow: 0 0.3125rem 0.625rem rgba(0,0,0,0.18);
|
||||||
|
}
|
||||||
23
frontend/unpackage/dist/dev/app-plus/pages/customer/detail.css
vendored
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
|
||||||
|
.page { padding-bottom: 4.375rem;
|
||||||
|
}
|
||||||
|
.card { background:#fff; margin: 0.5rem; padding: 0.375rem 0.5rem; border-radius: 0.5rem;
|
||||||
|
}
|
||||||
|
.row { display:flex; justify-content: space-between; padding: 0.5625rem 0.25rem; border-bottom: 0.03125rem solid #f3f3f3;
|
||||||
|
}
|
||||||
|
.row:last-child { border-bottom: 0;
|
||||||
|
}
|
||||||
|
.label { color:#666;
|
||||||
|
}
|
||||||
|
.value { color:#333; max-width: 60%; text-align: right;
|
||||||
|
}
|
||||||
|
.value-input { color:#333; text-align: right; flex: 1;
|
||||||
|
}
|
||||||
|
.emp { color:#107e9b; font-weight: 700;
|
||||||
|
}
|
||||||
|
.bottom { position: fixed; left:0; right:0; bottom:0; background:#fff; padding: 0.5rem 0.75rem calc(env(safe-area-inset-bottom) + 0.5rem); box-shadow: 0 -0.125rem 0.375rem rgba(0,0,0,0.06); display:flex; gap: 0.375rem;
|
||||||
|
}
|
||||||
|
.primary { flex:1; background: linear-gradient(135deg, #A0E4FF 0%, #17A2C4 100%); color:#fff; border-radius: 31.21875rem; padding: 0.625rem 0;
|
||||||
|
}
|
||||||
|
.ghost { flex:1; background:#fff; color:#107e9b; border: 0.0625rem solid #A0E4FF; border-radius: 31.21875rem; padding: 0.5625rem 0;
|
||||||
|
}
|
||||||
15
frontend/unpackage/dist/dev/app-plus/pages/customer/form.css
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
.page { padding-bottom: 4.375rem;
|
||||||
|
}
|
||||||
|
.field { display:flex; justify-content: space-between; padding: 0.6875rem 0.75rem; background:#fff; border-bottom:0.03125rem solid #eee;
|
||||||
|
}
|
||||||
|
.label { color:#666;
|
||||||
|
}
|
||||||
|
.value { color:#333; text-align: right; flex: 1;
|
||||||
|
}
|
||||||
|
.textarea { padding: 0.5rem 0.75rem; background:#fff; margin-top: 0.375rem;
|
||||||
|
}
|
||||||
|
.bottom { position: fixed; left:0; right:0; bottom:0; background:#fff; padding: 0.5rem 0.75rem calc(env(safe-area-inset-bottom) + 0.5rem); box-shadow: 0 -0.125rem 0.375rem rgba(0,0,0,0.06);
|
||||||
|
}
|
||||||
|
.primary { width: 100%; background: linear-gradient(135deg, #A0E4FF 0%, #17A2C4 100%); color:#fff; border-radius: 31.21875rem; padding: 0.625rem 0;
|
||||||
|
}
|
||||||
19
frontend/unpackage/dist/dev/app-plus/pages/customer/select.css
vendored
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
|
||||||
|
.page { display:flex; flex-direction: column; height: 100vh;
|
||||||
|
}
|
||||||
|
.search { display:flex; gap: 0.375rem; padding: 0.5rem; background:#fff; align-items:center;
|
||||||
|
}
|
||||||
|
.search uni-input { flex:1; background:#f6f6f6; border-radius: 0.375rem; padding: 0.375rem;
|
||||||
|
}
|
||||||
|
.list { flex:1;
|
||||||
|
}
|
||||||
|
.item { padding: 0.625rem 0.75rem; background:#fff; border-bottom: 0.03125rem solid #f1f1f1;
|
||||||
|
}
|
||||||
|
.name { color:#333; margin-bottom: 0.1875rem;
|
||||||
|
}
|
||||||
|
.meta { color:#888; font-size: 0.75rem;
|
||||||
|
}
|
||||||
|
.bottom { position: fixed; left:0; right:0; bottom:0; background:#fff; padding: 0.5rem 0.75rem calc(env(safe-area-inset-bottom) + 0.5rem); box-shadow: 0 -0.125rem 0.375rem rgba(0,0,0,0.06);
|
||||||
|
}
|
||||||
|
.primary { width: 100%; background: linear-gradient(135deg, #A0E4FF 0%, #17A2C4 100%); color:#fff; border-radius: 31.21875rem; padding: 0.625rem 0;
|
||||||
|
}
|
||||||
49
frontend/unpackage/dist/dev/app-plus/pages/detail/index.css
vendored
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
|
||||||
|
.page { display:flex; flex-direction: column; height: 100vh;
|
||||||
|
}
|
||||||
|
.seg { display:flex; background:#fff;
|
||||||
|
}
|
||||||
|
.seg-item { flex:1; padding: 0.6875rem 0; text-align:center; color:#666;
|
||||||
|
}
|
||||||
|
.seg-item.active { color:#18b566; font-weight: 600;
|
||||||
|
}
|
||||||
|
.content { display:flex; flex:1; min-height: 0;
|
||||||
|
}
|
||||||
|
.biz-tabs { width: 3.75rem; background:#eef6ff; display:flex; flex-direction: column;
|
||||||
|
}
|
||||||
|
.biz { flex:0 0 3.75rem; display:flex; align-items:center; justify-content:center; color:#4aa3d6;
|
||||||
|
}
|
||||||
|
.biz.active { background:#3ac1c9; color:#fff; border-radius: 0 0.5rem 0.5rem 0;
|
||||||
|
}
|
||||||
|
.panel { flex:1; display:flex; flex-direction: column; background:#fff; margin: 0.5rem; border-radius: 0.5rem; padding: 0.375rem;
|
||||||
|
}
|
||||||
|
.toolbar { display:flex; align-items: center; gap: 0.375rem; padding: 0.25rem 0.1875rem;
|
||||||
|
}
|
||||||
|
.search { flex:1;
|
||||||
|
}
|
||||||
|
.search-input { width:100%; background:#f6f6f6; border-radius: 0.375rem; padding: 0.375rem;
|
||||||
|
}
|
||||||
|
.period { color:#999; font-size: 0.75rem; padding: 0 0.1875rem;
|
||||||
|
}
|
||||||
|
.total { color:#18b566; font-weight: 700; padding: 0.1875rem 0.1875rem 0.375rem;
|
||||||
|
}
|
||||||
|
.list { flex:1;
|
||||||
|
}
|
||||||
|
.item { display:flex; align-items:center; padding: 0.625rem 0.3125rem; border-bottom: 0.03125rem solid #f1f1f1;
|
||||||
|
}
|
||||||
|
.item-left { flex:1;
|
||||||
|
}
|
||||||
|
.date { color:#999; font-size: 0.75rem;
|
||||||
|
}
|
||||||
|
.name { color:#333; margin: 0.125rem 0; font-weight: 600;
|
||||||
|
}
|
||||||
|
.no { color:#bbb; font-size: 0.6875rem;
|
||||||
|
}
|
||||||
|
.amount { color:#333; font-weight: 700;
|
||||||
|
}
|
||||||
|
.arrow { color:#ccc; font-size: 1.25rem; margin-left: 0.25rem;
|
||||||
|
}
|
||||||
|
.empty { height: 50vh; display:flex; align-items:center; justify-content:center; color:#999;
|
||||||
|
}
|
||||||
|
.fab { position: fixed; right: 0.9375rem; bottom: 3.75rem; width: 3.125rem; height: 3.125rem; background:#18b566; color:#fff; border-radius: 1.5625rem; text-align:center; line-height: 3.125rem; font-size: 1.5rem; box-shadow: 0 0.25rem 0.625rem rgba(0,0,0,0.15);
|
||||||
|
}
|
||||||
185
frontend/unpackage/dist/dev/app-plus/pages/index/index.css
vendored
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
|
||||||
|
.home {
|
||||||
|
padding-bottom: 4.375rem;
|
||||||
|
position: relative;
|
||||||
|
/* 明亮奢华背景:金属拉丝纹理覆盖层 + 柔和浅色渐变 */
|
||||||
|
background:
|
||||||
|
repeating-linear-gradient(0deg, rgba(180,180,180,0.12) 0, rgba(180,180,180,0.12) 0.0625rem, rgba(255,255,255,0.0) 0.0625rem, rgba(255,255,255,0.0) 0.3125rem),
|
||||||
|
linear-gradient(180deg, rgba(255, 255, 255, 0.75) 0%, rgba(255, 255, 255, 0.55) 40%, rgba(255, 255, 255, 0.35) 100%);
|
||||||
|
min-height: 100vh;
|
||||||
|
}
|
||||||
|
.home-bg {
|
||||||
|
position: fixed;
|
||||||
|
left: 0; top: 0; right: 0; bottom: 0;
|
||||||
|
width: 100%; height: 100%;
|
||||||
|
pointer-events: none;
|
||||||
|
z-index: -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 公告栏 */
|
||||||
|
.notice {
|
||||||
|
margin: 0 0.75rem 0.75rem;
|
||||||
|
padding: 0.625rem 0.6875rem;
|
||||||
|
border-radius: 0.625rem;
|
||||||
|
background: rgba(255,255,255,0.78);
|
||||||
|
-webkit-backdrop-filter: blur(0.375rem);
|
||||||
|
backdrop-filter: blur(0.375rem);
|
||||||
|
border: 0.0625rem solid rgba(203, 166, 61, 0.28);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.5rem;
|
||||||
|
}
|
||||||
|
.notice-left {
|
||||||
|
flex: 0 0 auto;
|
||||||
|
display: inline-flex; align-items: center; justify-content: center;
|
||||||
|
min-width: 3rem; height: 1.375rem;
|
||||||
|
padding: 0 0.5rem;
|
||||||
|
border-radius: 31.21875rem;
|
||||||
|
background: linear-gradient(135deg, #FFE69A, #F4CF62);
|
||||||
|
color: #3f320f;
|
||||||
|
font-size: 0.75rem;
|
||||||
|
font-weight: 800;
|
||||||
|
}
|
||||||
|
.notice-swiper { height: 2.25rem; flex: 1;
|
||||||
|
}
|
||||||
|
.notice-item { display: flex; align-items: center; gap: 0.375rem; min-height: 2.25rem;
|
||||||
|
}
|
||||||
|
.notice-text { color: #4b3e19; font-size: 0.875rem; line-height: 1.125rem; font-weight: 600; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
|
||||||
|
}
|
||||||
|
.notice-tag { color: #B4880F; font-size: 0.6875rem; padding: 0.125rem 0.3125rem; border-radius: 31.21875rem; background: rgba(215,167,46,0.18);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* 分割标题 */
|
||||||
|
.section-title { display: flex; align-items: center; gap: 0.5rem; padding: 0.3125rem 0.875rem 0;
|
||||||
|
}
|
||||||
|
.section-title::before { content: ''; display: block; width: 0.25rem; height: 0.875rem; border-radius: 0.25rem; background: linear-gradient(180deg, #FFE69A, #D7A72E);
|
||||||
|
}
|
||||||
|
.section-text { color: #6b5a2a; font-size: 0.875rem; font-weight: 700; letter-spacing: 0.03125rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 顶部英雄区:浅色玻璃卡片,带金色描边与柔和阴影 */
|
||||||
|
.hero {
|
||||||
|
margin: 0.75rem;
|
||||||
|
padding: 1rem;
|
||||||
|
border-radius: 0.875rem;
|
||||||
|
background: rgba(255, 255, 255, 0.65);
|
||||||
|
-webkit-backdrop-filter: blur(0.4375rem);
|
||||||
|
backdrop-filter: blur(0.4375rem);
|
||||||
|
border: 0.0625rem solid rgba(203, 166, 61, 0.35);
|
||||||
|
box-shadow: 0 0.375rem 0.875rem rgba(0, 0, 0, 0.10), 0 0 0 0.0625rem rgba(255,255,255,0.60) inset;
|
||||||
|
color: #473c22;
|
||||||
|
}
|
||||||
|
.hero-top {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 0.625rem;
|
||||||
|
}
|
||||||
|
.brand {
|
||||||
|
font-size: 1.3125rem;
|
||||||
|
font-weight: 700;
|
||||||
|
letter-spacing: 0.0625rem;
|
||||||
|
color: #B4880F; /* 金色标题 */
|
||||||
|
}
|
||||||
|
.cta {
|
||||||
|
padding: 0.3125rem 0.6875rem;
|
||||||
|
border-radius: 31.21875rem;
|
||||||
|
background: linear-gradient(135deg, rgba(255, 220, 128, 0.65), rgba(255, 240, 190, 0.65));
|
||||||
|
border: 0.0625rem solid rgba(203, 166, 61, 0.45);
|
||||||
|
box-shadow: 0 0.1875rem 0.4375rem rgba(203, 166, 61, 0.25);
|
||||||
|
}
|
||||||
|
.cta-text { color: #5a4712; font-size: 0.8125rem;
|
||||||
|
}
|
||||||
|
.kpi { display: flex;
|
||||||
|
}
|
||||||
|
.kpi-item { flex: 1;
|
||||||
|
}
|
||||||
|
.kpi-label { opacity: 0.9; font-size: 0.75rem; color: #6b5a2a;
|
||||||
|
}
|
||||||
|
.kpi-value { display: block; margin-top: 0.375rem; font-size: 1.4375rem; font-weight: 800; color: #B4880F;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 功能容器:整体玻璃面板,增强融入感 */
|
||||||
|
.grid-wrap {
|
||||||
|
margin: 0 0.625rem 1rem;
|
||||||
|
padding: 0.875rem 0.625rem 0.375rem;
|
||||||
|
border-radius: 0.75rem;
|
||||||
|
background: rgba(255,255,255,0.55);
|
||||||
|
-webkit-backdrop-filter: blur(0.3125rem);
|
||||||
|
backdrop-filter: blur(0.3125rem);
|
||||||
|
border: 0.0625rem solid rgba(203,166,61,0.22);
|
||||||
|
box-shadow: 0 0.25rem 0.5625rem rgba(0,0,0,0.06);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 功能九宫格 */
|
||||||
|
.grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(3, 1fr);
|
||||||
|
grid-row-gap: 2rem;
|
||||||
|
grid-column-gap: 1.125rem;
|
||||||
|
padding: 1.25rem 0.875rem 0.875rem;
|
||||||
|
}
|
||||||
|
.grid-item { display: flex; flex-direction: column; align-items: center; text-align: center;
|
||||||
|
}
|
||||||
|
.icon { display: flex; align-items: center; justify-content: center; color: #6b5a2a; position: relative;
|
||||||
|
}
|
||||||
|
.icon-squircle {
|
||||||
|
width: 4.125rem; height: 4.125rem;
|
||||||
|
border-radius: 0.875rem;
|
||||||
|
background: linear-gradient(145deg, rgba(255,255,255,0.92), rgba(255,255,255,0.70));
|
||||||
|
-webkit-backdrop-filter: blur(0.375rem);
|
||||||
|
backdrop-filter: blur(0.375rem);
|
||||||
|
border: 0.0625rem solid rgba(203,166,61,0.22);
|
||||||
|
box-shadow: 0 0.3125rem 0.75rem rgba(0,0,0,0.10), 0 0 0 0.0625rem rgba(255,255,255,0.65) inset;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.icon-squircle::before { content: ''; position: absolute; left: -30%; top: -40%; width: 160%; height: 70%; background: linear-gradient( to bottom, rgba(255,255,255,0.9), rgba(255,255,255,0.0) ); transform: rotate(12deg);
|
||||||
|
}
|
||||||
|
.icon-img { width: 3rem; height: 3rem;
|
||||||
|
}
|
||||||
|
.icon-emoji { font-size: 1.875rem; line-height: 1;
|
||||||
|
}
|
||||||
|
.icon-placeholder { width: 2.625rem; height: 2.625rem; border-radius: 0.5625rem; background:
|
||||||
|
linear-gradient(135deg, rgba(212,175,55,0.18), rgba(255,255,255,0.0)),
|
||||||
|
repeating-linear-gradient(90deg, rgba(180,150,60,0.35) 0, rgba(180,150,60,0.35) 0.25rem, transparent 0.25rem, transparent 0.5rem),
|
||||||
|
repeating-linear-gradient(0deg, rgba(180,150,60,0.20) 0, rgba(180,150,60,0.20) 0.25rem, transparent 0.25rem, transparent 0.5rem);
|
||||||
|
box-shadow: inset 0 0 0 0.0625rem rgba(203,166,61,0.28);
|
||||||
|
}
|
||||||
|
.icon-text { font-size: 1.4375rem; font-weight: 700;
|
||||||
|
}
|
||||||
|
.grid-title { display: none;
|
||||||
|
}
|
||||||
|
.grid-chip { margin-top: 0.4375rem; padding: 0.1875rem 0.4375rem; border-radius: 31.21875rem; background: rgba(215,167,46,0.16); color: #5a4a1f; font-size: 0.6875rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 底部操作条:浅色半透明 + 金色主按钮 */
|
||||||
|
.bottom-bar {
|
||||||
|
position: fixed;
|
||||||
|
left: 0; right: 0; bottom: 0;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-around;
|
||||||
|
padding: 0.4375rem 0.5625rem calc(env(safe-area-inset-bottom) + 0.4375rem);
|
||||||
|
background: rgba(255,255,255,0.85);
|
||||||
|
box-shadow: 0 -0.1875rem 0.5625rem rgba(0,0,0,0.08);
|
||||||
|
-webkit-backdrop-filter: blur(0.3125rem);
|
||||||
|
backdrop-filter: blur(0.3125rem);
|
||||||
|
z-index: 9999;
|
||||||
|
}
|
||||||
|
.tab { flex: 1; text-align: center; color: #8a7535; font-size: 0.8125rem;
|
||||||
|
}
|
||||||
|
.tab.active { color: #B4880F;
|
||||||
|
}
|
||||||
|
.tab.primary {
|
||||||
|
flex: 0 0 auto;
|
||||||
|
min-width: 5.625rem;
|
||||||
|
margin: 0 0.5625rem;
|
||||||
|
padding: 0.5625rem 1rem;
|
||||||
|
background: linear-gradient(135deg, #FFE69A 0%, #F4CF62 45%, #D7A72E 100%);
|
||||||
|
color: #493c1b;
|
||||||
|
border-radius: 31.21875rem;
|
||||||
|
font-size: 0.9375rem;
|
||||||
|
font-weight: 800;
|
||||||
|
box-shadow: 0 0.3125rem 0.6875rem rgba(215,167,46,0.25), 0 0 0 0.0625rem rgba(255,255,255,0.70) inset;
|
||||||
|
}
|
||||||
21
frontend/unpackage/dist/dev/app-plus/pages/my/about.css
vendored
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
|
||||||
|
.about { padding: 0.75rem;
|
||||||
|
}
|
||||||
|
.hero { padding: 1rem 0.75rem; display: flex; flex-direction: column; align-items: center; gap: 0.3125rem;
|
||||||
|
}
|
||||||
|
.logo { width: 5rem; height: 5rem; border-radius: 1rem;
|
||||||
|
}
|
||||||
|
.title { margin-top: 0.25rem; font-size: 1.125rem; font-weight: 800; color: #333;
|
||||||
|
}
|
||||||
|
.subtitle { font-size: 0.8125rem; color: #888;
|
||||||
|
}
|
||||||
|
.card { margin-top: 0.5625rem; background: #fff; border-radius: 0.5rem; overflow: hidden;
|
||||||
|
}
|
||||||
|
.row { display: flex; align-items: center; padding: 0.75rem; border-top: 0.03125rem solid #f2f2f2;
|
||||||
|
}
|
||||||
|
.label { color: #666;
|
||||||
|
}
|
||||||
|
.value { margin-left: auto; color: #333;
|
||||||
|
}
|
||||||
|
.link { margin-left: auto; color: #1aad19;
|
||||||
|
}
|
||||||
27
frontend/unpackage/dist/dev/app-plus/pages/my/index.css
vendored
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
|
||||||
|
.me { padding: 0.75rem;
|
||||||
|
}
|
||||||
|
.card.user { display: flex; gap: 0.5625rem; padding: 0.6875rem; background: #fff; border-radius: 0.5rem; box-shadow: 0 0.1875rem 0.5rem rgba(0,0,0,0.06); align-items: center;
|
||||||
|
}
|
||||||
|
.avatar { width: 3.75rem; height: 3.75rem; border-radius: 1.875rem; background: #f5f5f5;
|
||||||
|
}
|
||||||
|
.meta { display: flex; flex-direction: column; gap: 0.1875rem;
|
||||||
|
}
|
||||||
|
.name { font-size: 1.0625rem; font-weight: 700; color: #333;
|
||||||
|
}
|
||||||
|
.phone { font-size: 0.8125rem; color: #888;
|
||||||
|
}
|
||||||
|
.role { font-size: 0.6875rem; color: #999;
|
||||||
|
}
|
||||||
|
.group { margin-top: 0.75rem; background: #fff; border-radius: 0.5rem; overflow: hidden;
|
||||||
|
}
|
||||||
|
.group-title { padding: 0.5625rem 0.6875rem; font-size: 0.8125rem; color: #999; background: #fafafa;
|
||||||
|
}
|
||||||
|
.cell { display: flex; align-items: center; padding: 0.8125rem 0.6875rem; border-top: 0.03125rem solid #f0f0f0; color: #333;
|
||||||
|
}
|
||||||
|
.cell .desc { margin-left: auto; margin-right: 0.25rem; font-size: 0.6875rem; color: #999;
|
||||||
|
}
|
||||||
|
.cell .arrow { margin-left: auto; color: #bbb;
|
||||||
|
}
|
||||||
|
.cell.danger { color: #dd524d; justify-content: center; font-weight: 700;
|
||||||
|
}
|
||||||
59
frontend/unpackage/dist/dev/app-plus/pages/order/create.css
vendored
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
|
||||||
|
.order { padding-bottom: 4.375rem;
|
||||||
|
}
|
||||||
|
.tabs { display: flex; justify-content: space-around; padding: 0.5rem 0.75rem;
|
||||||
|
}
|
||||||
|
.tabs uni-text { color: #666;
|
||||||
|
}
|
||||||
|
.tabs uni-text.active { color: #333; font-weight: 700;
|
||||||
|
}
|
||||||
|
.subtabs { display: flex; gap: 0.5rem; padding: 0 0.75rem 0.5rem;
|
||||||
|
}
|
||||||
|
.subbtn { padding: 0.3125rem 0.625rem; border-radius: 31.21875rem; background: #f4f4f4; color: #666;
|
||||||
|
}
|
||||||
|
.subbtn.active { background: #ffe69a; color: #3f320f;
|
||||||
|
}
|
||||||
|
.field { display:flex; justify-content: space-between; padding: 0.6875rem 0.75rem; background: #fff; border-bottom: 0.03125rem solid #eee;
|
||||||
|
}
|
||||||
|
.label { color:#666;
|
||||||
|
}
|
||||||
|
.value { color:#333;
|
||||||
|
}
|
||||||
|
.summary { display:flex; justify-content: space-between; padding: 0.6875rem 0.75rem; color:#333;
|
||||||
|
}
|
||||||
|
.add { margin: 0.75rem auto; width: 3.75rem; height: 3.75rem; border-radius: 0.625rem; background: #c7eef7; color:#16a1c4; font-size: 2.25rem; display:flex; align-items:center; justify-content:center;
|
||||||
|
}
|
||||||
|
.empty { display:flex; flex-direction: column; align-items:center; padding: 1.875rem 0; color:#888;
|
||||||
|
}
|
||||||
|
.empty-img { width: 6.875rem; margin-bottom: 0.625rem;
|
||||||
|
}
|
||||||
|
.empty-text { margin-bottom: 0.25rem;
|
||||||
|
}
|
||||||
|
.list { background:#fff;
|
||||||
|
}
|
||||||
|
.row { display:grid; grid-template-columns: 1.5fr 1fr 1fr 1fr; gap: 0.375rem; padding: 0.5rem 0.375rem; align-items:center; border-bottom: 0.03125rem solid #f3f3f3;
|
||||||
|
}
|
||||||
|
.col.name { padding-left: 0.375rem;
|
||||||
|
}
|
||||||
|
.col.amount { text-align:right; padding-right: 0.375rem; color:#333;
|
||||||
|
}
|
||||||
|
.bottom { position: fixed; left:0; right:0; bottom:0; background:#fff; padding: 0.5rem 0.75rem calc(env(safe-area-inset-bottom) + 0.5rem); box-shadow: 0 -0.125rem 0.375rem rgba(0,0,0,0.06);
|
||||||
|
}
|
||||||
|
.primary { width: 100%; background: linear-gradient(135deg, #FFE69A 0%, #F4CF62 45%, #D7A72E 100%); color:#493c1b; border-radius: 31.21875rem; padding: 0.625rem 0; font-weight:800;
|
||||||
|
}
|
||||||
|
/* 收款/付款页样式 */
|
||||||
|
.pay-row .pay-input { text-align: right; color:#333;
|
||||||
|
}
|
||||||
|
.textarea { position: relative; padding: 0.5rem 0.75rem; background:#fff; border-top: 0.03125rem solid #eee;
|
||||||
|
}
|
||||||
|
.amount-badge { position: absolute; right: 0.75rem; top: -1.125rem; background: #d1f0ff; color:#107e9b; padding: 0.25rem 0.5rem; border-radius: 0.375rem; font-size: 0.75rem;
|
||||||
|
}
|
||||||
|
.date-mini { position: absolute; right: 0.75rem; bottom: 0.625rem; color:#666; font-size: 0.75rem;
|
||||||
|
}
|
||||||
|
/* 分类chips样式:选中后文字变红 */
|
||||||
|
.chips { display:flex; flex-wrap: wrap; gap: 0.375rem; padding: 0.375rem 0.75rem;
|
||||||
|
}
|
||||||
|
.chip { padding: 0.3125rem 0.625rem; border-radius: 31.21875rem; background: #f4f4f4; color:#666;
|
||||||
|
}
|
||||||
|
.chip.active { color: #e54d42;
|
||||||
|
}
|
||||||
15
frontend/unpackage/dist/dev/app-plus/pages/product/categories.css
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
.page { display:flex; flex-direction: column; height: 100vh;
|
||||||
|
}
|
||||||
|
.toolbar { display:flex; gap: 0.375rem; padding: 0.5rem; background:#fff;
|
||||||
|
}
|
||||||
|
.toolbar uni-input { flex:1; background:#f6f6f6; border-radius: 0.375rem; padding: 0.375rem;
|
||||||
|
}
|
||||||
|
.list { flex:1;
|
||||||
|
}
|
||||||
|
.item { display:flex; gap: 0.375rem; align-items:center; padding: 0.5rem; background:#fff; border-bottom: 0.03125rem solid #f1f1f1;
|
||||||
|
}
|
||||||
|
.item uni-input { flex:1; background:#f7f7f7; border-radius: 0.3125rem; padding: 0.375rem;
|
||||||
|
}
|
||||||
|
.ops { display:flex; gap: 0.3125rem;
|
||||||
|
}
|
||||||
33
frontend/unpackage/dist/dev/app-plus/pages/product/form.css
vendored
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
|
||||||
|
.uploader[data-v-7bd1ddd2] { padding: 0.375rem; background: #fff;
|
||||||
|
}
|
||||||
|
.grid[data-v-7bd1ddd2] { position: relative;
|
||||||
|
}
|
||||||
|
.area[data-v-7bd1ddd2] { width: 100%; position: relative;
|
||||||
|
}
|
||||||
|
.cell[data-v-7bd1ddd2] { position: absolute; border-radius: 0.375rem; overflow: hidden; box-shadow: 0 0 0.03125rem rgba(0,0,0,0.08);
|
||||||
|
}
|
||||||
|
.thumb[data-v-7bd1ddd2] { width: 100%; height: 100%;
|
||||||
|
}
|
||||||
|
.remove[data-v-7bd1ddd2] { position: absolute; right: 0.1875rem; top: 0.1875rem; background: rgba(0,0,0,0.45); color: #fff; width: 1.25rem; height: 1.25rem; text-align: center; line-height: 1.25rem; border-radius: 0.625rem; font-size: 0.875rem;
|
||||||
|
}
|
||||||
|
.adder[data-v-7bd1ddd2] { width: 6.5625rem; height: 6.5625rem; border: 0.0625rem dashed #ccc; border-radius: 0.375rem; display: flex; align-items: center; justify-content: center; color: #999; position: absolute; left: 0; top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.page { background:#f6f6f6; height: 100vh;
|
||||||
|
}
|
||||||
|
.card { background:#fff; margin: 0.5rem; padding: 0.5rem; border-radius: 0.375rem;
|
||||||
|
}
|
||||||
|
.row { display:flex; gap: 0.375rem; align-items: center; margin-bottom: 0.375rem;
|
||||||
|
}
|
||||||
|
.label { width: 5.625rem; color:#666;
|
||||||
|
}
|
||||||
|
.row uni-input { flex:1; background:#f7f7f7; border-radius: 0.3125rem; padding: 0.375rem;
|
||||||
|
}
|
||||||
|
.picker { padding: 0.25rem 0.375rem; background:#f0f0f0; border-radius: 0.3125rem; color:#666; margin-left: 0.25rem;
|
||||||
|
}
|
||||||
|
.prices uni-input { width: 30%;
|
||||||
|
}
|
||||||
|
.fixed { position: fixed; left: 0; right: 0; bottom: 0; background:#fff; padding: 0.375rem 0.5rem; display:flex; gap: 0.5rem;
|
||||||
|
}
|
||||||
33
frontend/unpackage/dist/dev/app-plus/pages/product/list.css
vendored
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
|
||||||
|
.page { display:flex; flex-direction: column; height: 100vh;
|
||||||
|
}
|
||||||
|
.tabs { display:flex; background:#fff;
|
||||||
|
}
|
||||||
|
.tab { flex:1; text-align:center; padding: 0.625rem 0; color:#666;
|
||||||
|
}
|
||||||
|
.tab.active { color:#18b566; font-weight: 600;
|
||||||
|
}
|
||||||
|
.search { display:flex; gap: 0.375rem; padding: 0.5rem; background:#fff; align-items: center;
|
||||||
|
}
|
||||||
|
.search uni-input { flex:1; background:#f6f6f6; border-radius: 0.375rem; padding: 0.375rem;
|
||||||
|
}
|
||||||
|
.picker { padding: 0.25rem 0.375rem; background:#f0f0f0; border-radius: 0.3125rem; color:#666;
|
||||||
|
}
|
||||||
|
.list { flex:1;
|
||||||
|
}
|
||||||
|
.item { display:flex; padding: 0.625rem; background:#fff; border-bottom: 0.03125rem solid #f1f1f1;
|
||||||
|
}
|
||||||
|
.thumb { width: 3.75rem; height: 3.75rem; border-radius: 0.375rem; margin-right: 0.5rem; background:#fafafa;
|
||||||
|
}
|
||||||
|
.content { flex:1;
|
||||||
|
}
|
||||||
|
.name { color:#333; margin-bottom: 0.1875rem; font-weight: 600;
|
||||||
|
}
|
||||||
|
.meta { color:#888; font-size: 0.75rem;
|
||||||
|
}
|
||||||
|
.price { margin-left: 0.625rem; color:#f60;
|
||||||
|
}
|
||||||
|
.empty { height: 60vh; display:flex; align-items:center; justify-content:center; color:#999;
|
||||||
|
}
|
||||||
|
.fab { position: fixed; right: 0.9375rem; bottom: 3.75rem; width: 3.125rem; height: 3.125rem; background:#18b566; color:#fff; border-radius: 1.5625rem; text-align:center; line-height: 3.125rem; font-size: 1.5rem; box-shadow: 0 0.25rem 0.625rem rgba(0,0,0,0.15);
|
||||||
|
}
|
||||||
15
frontend/unpackage/dist/dev/app-plus/pages/product/select.css
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
.page { display:flex; flex-direction: column; height: 100vh;
|
||||||
|
}
|
||||||
|
.search { display:flex; gap: 0.375rem; padding: 0.5rem; background:#fff;
|
||||||
|
}
|
||||||
|
.search uni-input { flex:1; background:#f6f6f6; border-radius: 0.375rem; padding: 0.375rem;
|
||||||
|
}
|
||||||
|
.list { flex:1;
|
||||||
|
}
|
||||||
|
.item { padding: 0.625rem 0.75rem; background:#fff; border-bottom: 0.03125rem solid #f1f1f1;
|
||||||
|
}
|
||||||
|
.name { color:#333; margin-bottom: 0.1875rem;
|
||||||
|
}
|
||||||
|
.meta { color:#888; font-size: 0.75rem;
|
||||||
|
}
|
||||||
5
frontend/unpackage/dist/dev/app-plus/pages/product/settings.css
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
|
||||||
|
.page { background:#fff;
|
||||||
|
}
|
||||||
|
.item { display:flex; justify-content: space-between; align-items:center; padding: 0.625rem; border-bottom: 0.03125rem solid #f1f1f1;
|
||||||
|
}
|
||||||
15
frontend/unpackage/dist/dev/app-plus/pages/product/units.css
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
.page { display:flex; flex-direction: column; height: 100vh;
|
||||||
|
}
|
||||||
|
.toolbar { display:flex; gap: 0.375rem; padding: 0.5rem; background:#fff;
|
||||||
|
}
|
||||||
|
.toolbar uni-input { flex:1; background:#f6f6f6; border-radius: 0.375rem; padding: 0.375rem;
|
||||||
|
}
|
||||||
|
.list { flex:1;
|
||||||
|
}
|
||||||
|
.item { display:flex; gap: 0.375rem; align-items:center; padding: 0.5rem; background:#fff; border-bottom: 0.03125rem solid #f1f1f1;
|
||||||
|
}
|
||||||
|
.item uni-input { flex:1; background:#f7f7f7; border-radius: 0.3125rem; padding: 0.375rem;
|
||||||
|
}
|
||||||
|
.ops { display:flex; gap: 0.3125rem;
|
||||||
|
}
|
||||||
37
frontend/unpackage/dist/dev/app-plus/pages/report/index.css
vendored
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
|
||||||
|
.report { padding: 0.625rem;
|
||||||
|
}
|
||||||
|
.modes { display: flex; gap: 0.375rem; margin-bottom: 0.4375rem;
|
||||||
|
}
|
||||||
|
.mode-tab { flex: 1; text-align: center; padding: 0.5rem 0; border-radius: 31.21875rem; background: #f4f4f4; color: #666; border: 0.03125rem solid #e9e9e9;
|
||||||
|
}
|
||||||
|
.mode-tab.active { background: #1aad19; color: #fff; border-color: #1aad19; font-weight: 700;
|
||||||
|
}
|
||||||
|
.toolbar { display: flex; align-items: center; gap: 0.25rem; background: #fff; padding: 0.4375rem 0.5rem; border-radius: 0.375rem;
|
||||||
|
}
|
||||||
|
.date { padding: 0.3125rem 0.5rem; border: 0.03125rem solid #eee; border-radius: 0.25rem;
|
||||||
|
}
|
||||||
|
.tabs { display: flex; gap: 0.5rem; margin-top: 0.4375rem;
|
||||||
|
}
|
||||||
|
.tab { padding: 0.375rem 0.5625rem; border-radius: 31.21875rem; background: #f4f4f4; color: #666;
|
||||||
|
}
|
||||||
|
.tab.active { background: #1aad19; color: #fff;
|
||||||
|
}
|
||||||
|
.summary { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.25rem; margin-top: 0.4375rem;
|
||||||
|
}
|
||||||
|
.summary .item { background: #fff; border-radius: 0.375rem; padding: 0.5rem;
|
||||||
|
}
|
||||||
|
.summary .label { font-size: 0.6875rem; color: #888;
|
||||||
|
}
|
||||||
|
.summary .value { display: block; margin-top: 0.25rem; font-weight: 700; color: #333;
|
||||||
|
}
|
||||||
|
.card { margin-top: 0.5rem; background: #fff; border-radius: 0.375rem; padding: 0.5rem;
|
||||||
|
}
|
||||||
|
.row-head { display: flex; align-items: center; gap: 0.375rem;
|
||||||
|
}
|
||||||
|
.thumb { width: 2.25rem; height: 2.25rem; border-radius: 0.25rem; background: #f2f2f2;
|
||||||
|
}
|
||||||
|
.title { font-size: 0.875rem; font-weight: 700;
|
||||||
|
}
|
||||||
|
.row-body { margin-top: 0.3125rem; color: #666;
|
||||||
|
}
|
||||||
15
frontend/unpackage/dist/dev/app-plus/pages/supplier/form.css
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
.page { padding-bottom: 4.375rem;
|
||||||
|
}
|
||||||
|
.field { display:flex; justify-content: space-between; padding: 0.6875rem 0.75rem; background:#fff; border-bottom:0.03125rem solid #eee;
|
||||||
|
}
|
||||||
|
.label { color:#666;
|
||||||
|
}
|
||||||
|
.value { color:#333; text-align: right; flex: 1;
|
||||||
|
}
|
||||||
|
.textarea { padding: 0.5rem 0.75rem; background:#fff; margin-top: 0.375rem;
|
||||||
|
}
|
||||||
|
.bottom { position: fixed; left:0; right:0; bottom:0; background:#fff; padding: 0.5rem 0.75rem calc(env(safe-area-inset-bottom) + 0.5rem); box-shadow: 0 -0.125rem 0.375rem rgba(0,0,0,0.06);
|
||||||
|
}
|
||||||
|
.primary { width: 100%; background: linear-gradient(135deg, #A0E4FF 0%, #17A2C4 100%); color:#fff; border-radius: 31.21875rem; padding: 0.625rem 0;
|
||||||
|
}
|
||||||
15
frontend/unpackage/dist/dev/app-plus/pages/supplier/select.css
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
.page { display:flex; flex-direction: column; height: 100vh;
|
||||||
|
}
|
||||||
|
.search { display:flex; gap: 0.375rem; padding: 0.5rem; background:#fff;
|
||||||
|
}
|
||||||
|
.search uni-input { flex:1; background:#f6f6f6; border-radius: 0.375rem; padding: 0.375rem;
|
||||||
|
}
|
||||||
|
.list { flex:1;
|
||||||
|
}
|
||||||
|
.item { padding: 0.625rem 0.75rem; background:#fff; border-bottom: 0.03125rem solid #f1f1f1;
|
||||||
|
}
|
||||||
|
.name { color:#333; margin-bottom: 0.1875rem;
|
||||||
|
}
|
||||||
|
.meta { color:#888; font-size: 0.75rem;
|
||||||
|
}
|
||||||
0
frontend/unpackage/dist/dev/app-plus/static/icons/detail.png
vendored
Normal file
BIN
frontend/unpackage/dist/dev/app-plus/static/logo.png
vendored
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
7
frontend/unpackage/dist/dev/app-plus/uni-app-view.umd.js
vendored
Normal file
1
frontend/unpackage/dist/dev/cache/.app-plus/tsc/app-android/.tsbuildInfo
vendored
Normal file
31
frontend/unpackage/dist/dev/mp-weixin/app.json
vendored
@@ -24,44 +24,45 @@
|
|||||||
"window": {
|
"window": {
|
||||||
"navigationBarTextStyle": "black",
|
"navigationBarTextStyle": "black",
|
||||||
"navigationBarTitleText": "五金配件管家",
|
"navigationBarTitleText": "五金配件管家",
|
||||||
"navigationBarBackgroundColor": "#F8F8F8",
|
"navigationBarBackgroundColor": "#FFFFFF",
|
||||||
"backgroundColor": "#F8F8F8"
|
"backgroundColor": "#FFFFFF",
|
||||||
|
"backgroundTextStyle": "dark"
|
||||||
},
|
},
|
||||||
"tabBar": {
|
"tabBar": {
|
||||||
"color": "#8a7535",
|
"color": "#444444",
|
||||||
"selectedColor": "#B4880F",
|
"selectedColor": "#4C8DFF",
|
||||||
"backgroundColor": "#ffffff",
|
"backgroundColor": "#FFFFFF",
|
||||||
"borderStyle": "black",
|
"borderStyle": "black",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"pagePath": "pages/index/index",
|
"pagePath": "pages/index/index",
|
||||||
"text": "首页",
|
"text": "首页",
|
||||||
"iconPath": "static/logo.png",
|
"iconPath": "static/icons/home.png",
|
||||||
"selectedIconPath": "static/logo.png"
|
"selectedIconPath": "static/icons/home.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"pagePath": "pages/product/list",
|
"pagePath": "pages/product/list",
|
||||||
"text": "货品",
|
"text": "货品",
|
||||||
"iconPath": "static/logo.png",
|
"iconPath": "static/icons/product.png",
|
||||||
"selectedIconPath": "static/logo.png"
|
"selectedIconPath": "static/icons/product.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"pagePath": "pages/order/create",
|
"pagePath": "pages/order/create",
|
||||||
"text": "开单",
|
"text": "开单",
|
||||||
"iconPath": "static/logo.png",
|
"iconPath": "static/icons/icons8-purchase-order-100.png",
|
||||||
"selectedIconPath": "static/logo.png"
|
"selectedIconPath": "static/icons/icons8-purchase-order-100.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"pagePath": "pages/detail/index",
|
"pagePath": "pages/detail/index",
|
||||||
"text": "明细",
|
"text": "明细",
|
||||||
"iconPath": "static/logo.png",
|
"iconPath": "static/icons/icons8-more-details-100.png",
|
||||||
"selectedIconPath": "static/logo.png"
|
"selectedIconPath": "static/icons/icons8-more-details-100.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"pagePath": "pages/my/index",
|
"pagePath": "pages/my/index",
|
||||||
"text": "我的",
|
"text": "我的",
|
||||||
"iconPath": "static/logo.png",
|
"iconPath": "static/icons/icons8-account-male-100.png",
|
||||||
"selectedIconPath": "static/logo.png"
|
"selectedIconPath": "static/icons/icons8-account-male-100.png"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
85
frontend/unpackage/dist/dev/mp-weixin/app.wxss
vendored
@@ -1,3 +1,84 @@
|
|||||||
|
/**
|
||||||
|
* 这里是uni-app内置的常用样式变量
|
||||||
|
*
|
||||||
|
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
|
||||||
|
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
|
||||||
|
*
|
||||||
|
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
|
||||||
|
*/
|
||||||
|
/* 颜色变量 */
|
||||||
|
/* 行为相关颜色 */
|
||||||
|
/* 藏青系主色(高亮) */
|
||||||
|
/* 文字基本颜色 */
|
||||||
|
/* 背景颜色 */
|
||||||
|
/* 边框颜色 */
|
||||||
|
/* 尺寸变量 */
|
||||||
|
/* 文字尺寸 */
|
||||||
|
/* 图片尺寸 */
|
||||||
|
/* Border Radius */
|
||||||
|
/* 水平间距 */
|
||||||
|
/* 垂直间距 */
|
||||||
|
/* 透明度 */
|
||||||
|
/* 文章场景相关 */
|
||||||
|
/*每个页面公共css */
|
||||||
|
page {
|
||||||
|
background-color: #ffffff;
|
||||||
|
color: #111;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
|
||||||
/*每个页面公共css */
|
/* 强制所有端白底(防止小程序旧样式残留覆盖) */
|
||||||
page{--status-bar-height:25px;--top-window-height:0px;--window-top:0px;--window-bottom:0px;--window-left:0px;--window-right:0px;--window-magin:0px}[data-c-h="true"]{display: none !important;}
|
.uni-page-body, uni-page-body {
|
||||||
|
background-color: #ffffff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 小程序节点:强制 wx-view 白底 */
|
||||||
|
wx-view {
|
||||||
|
background-color: #ffffff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 例外:需要有主色底的元素,强制还原 */
|
||||||
|
.cta, .notice-left, .fab {
|
||||||
|
background-color: #4C8DFF !important;
|
||||||
|
border-color: #4C8DFF !important;
|
||||||
|
color: #ffffff !important;
|
||||||
|
}
|
||||||
|
.cta .cta-text {
|
||||||
|
color: #ffffff !important;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 覆盖历史深色背景(统一纯白/浅灰) */
|
||||||
|
.home, .report, .order, .me, .page {
|
||||||
|
background: #ffffff !important;
|
||||||
|
}
|
||||||
|
.notice, .hero, .grid-wrap, .panel, .card, .tabs, .seg, .list, .search, .summary, .toolbar, .item {
|
||||||
|
background: #ffffff !important;
|
||||||
|
}
|
||||||
|
.text-secondary {
|
||||||
|
color: #444;
|
||||||
|
}
|
||||||
|
.card {
|
||||||
|
background-color: #ffffff;
|
||||||
|
border: 1px solid #e5e7eb;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
}
|
||||||
|
.primary {
|
||||||
|
color: #4C8DFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 底部原生 tabBar(H5/APP端可生效)字体加大 */
|
||||||
|
.uni-tabbar__label, .uni-tabbar__text {
|
||||||
|
font-size: 28rpx !important;
|
||||||
|
font-weight: 700 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 图表统一透明底(常见容器/画布选择器) */
|
||||||
|
canvas, .ec-canvas, .echarts, .charts, .chart, .ucharts-box {
|
||||||
|
background-color: transparent !important;
|
||||||
|
}page{--status-bar-height:25px;--top-window-height:0px;--window-top:0px;--window-bottom:0px;--window-left:0px;--window-right:0px;--window-magin:0px}[data-c-h="true"]{display: none !important;}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
const _imports_0$1 = "/static/metal-bg.jpg";
|
const _imports_0$1 = "/static/icons/icons8-shopping-cart-100.png";
|
||||||
const _imports_0 = "/static/logo.png";
|
const _imports_0 = "/static/logo.png";
|
||||||
exports._imports_0 = _imports_0$1;
|
exports._imports_0 = _imports_0$1;
|
||||||
exports._imports_0$1 = _imports_0;
|
exports._imports_0$1 = _imports_0;
|
||||||
|
|||||||
@@ -7072,9 +7072,9 @@ function isConsoleWritable() {
|
|||||||
return isWritable;
|
return isWritable;
|
||||||
}
|
}
|
||||||
function initRuntimeSocketService() {
|
function initRuntimeSocketService() {
|
||||||
const hosts = "198.18.0.1,192.168.31.192,127.0.0.1";
|
const hosts = "198.18.0.1,192.168.31.107,127.0.0.1";
|
||||||
const port = "8090";
|
const port = "8090";
|
||||||
const id = "mp-weixin_HpGDB1";
|
const id = "mp-weixin_nY_uy5";
|
||||||
const lazy = typeof swan !== "undefined";
|
const lazy = typeof swan !== "undefined";
|
||||||
let restoreError = lazy ? () => {
|
let restoreError = lazy ? () => {
|
||||||
} : initOnError();
|
} : initOnError();
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|||||||
};
|
};
|
||||||
}),
|
}),
|
||||||
o: common_vendor.o(($event) => $data.showType = false),
|
o: common_vendor.o(($event) => $data.showType = false),
|
||||||
p: common_vendor.sr("popup", "4430e2e8-0"),
|
p: common_vendor.sr("popup", "42e126a9-0"),
|
||||||
q: common_vendor.o(($event) => $data.showType = $event),
|
q: common_vendor.o(($event) => $data.showType = $event),
|
||||||
r: common_vendor.p({
|
r: common_vendor.p({
|
||||||
type: "bottom",
|
type: "bottom",
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
<view class="page"><view class="form"><view class="field"><text class="label">账户名称</text><input class="input" placeholder="必填" value="{{a}}" bindinput="{{b}}"/></view><view class="field" bindtap="{{d}}"><text class="label">账户类型</text><text class="value">{{c}}</text></view><view wx:if="{{e}}" class="field"><text class="label">银行名称</text><input class="input" placeholder="选填" value="{{f}}" bindinput="{{g}}"/></view><view wx:if="{{h}}" class="field"><text class="label">银行账号</text><input class="input" placeholder="选填" value="{{i}}" bindinput="{{j}}"/></view><view class="field"><text class="label">当前余额</text><input class="input" type="number" placeholder="0.00" value="{{k}}" bindinput="{{l}}"/></view></view><view class="actions"><button class="primary" bindtap="{{m}}">保存</button></view><uni-popup wx:if="{{r}}" class="r" u-s="{{['d']}}" u-r="popup" u-i="4430e2e8-0" bind:__l="__l" bindupdateModelValue="{{q}}" u-p="{{r}}"><view class="sheet"><view wx:for="{{n}}" wx:for-item="t" wx:key="b" class="sheet-item" bindtap="{{t.c}}">{{t.a}}</view><view class="sheet-cancel" bindtap="{{o}}">取消</view></view></uni-popup></view>
|
<view class="page"><view class="form"><view class="field"><text class="label">账户名称</text><input class="input" placeholder="必填" value="{{a}}" bindinput="{{b}}"/></view><view class="field" bindtap="{{d}}"><text class="label">账户类型</text><text class="value">{{c}}</text></view><view wx:if="{{e}}" class="field"><text class="label">银行名称</text><input class="input" placeholder="选填" value="{{f}}" bindinput="{{g}}"/></view><view wx:if="{{h}}" class="field"><text class="label">银行账号</text><input class="input" placeholder="选填" value="{{i}}" bindinput="{{j}}"/></view><view class="field"><text class="label">当前余额</text><input class="input" type="number" placeholder="0.00" value="{{k}}" bindinput="{{l}}"/></view></view><view class="actions"><button class="primary" bindtap="{{m}}">保存</button></view><uni-popup wx:if="{{r}}" class="r" u-s="{{['d']}}" u-r="popup" u-i="42e126a9-0" bind:__l="__l" bindupdateModelValue="{{q}}" u-p="{{r}}"><view class="sheet"><view wx:for="{{n}}" wx:for-item="t" wx:key="b" class="sheet-item" bindtap="{{t.c}}">{{t.a}}</view><view class="sheet-cancel" bindtap="{{o}}">取消</view></view></uni-popup></view>
|
||||||
@@ -1,23 +1,76 @@
|
|||||||
|
/**
|
||||||
.page { display:flex; flex-direction: column; height: 100vh;
|
* 这里是uni-app内置的常用样式变量
|
||||||
|
*
|
||||||
|
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
|
||||||
|
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
|
||||||
|
*
|
||||||
|
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
|
||||||
|
*/
|
||||||
|
/* 颜色变量 */
|
||||||
|
/* 行为相关颜色 */
|
||||||
|
/* 藏青系主色(高亮) */
|
||||||
|
/* 文字基本颜色 */
|
||||||
|
/* 背景颜色 */
|
||||||
|
/* 边框颜色 */
|
||||||
|
/* 尺寸变量 */
|
||||||
|
/* 文字尺寸 */
|
||||||
|
/* 图片尺寸 */
|
||||||
|
/* Border Radius */
|
||||||
|
/* 水平间距 */
|
||||||
|
/* 垂直间距 */
|
||||||
|
/* 透明度 */
|
||||||
|
/* 文章场景相关 */
|
||||||
|
.page {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
height: 100vh;
|
||||||
}
|
}
|
||||||
.form { background:#fff;
|
.form {
|
||||||
|
background: #ffffff;
|
||||||
}
|
}
|
||||||
.field { display:flex; align-items:center; justify-content: space-between; padding: 18rpx 20rpx; border-bottom:1rpx solid #f3f3f3;
|
.field {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 18rpx 20rpx;
|
||||||
|
border-bottom: 1rpx solid #e5e7eb;
|
||||||
}
|
}
|
||||||
.label { color:#666;
|
.label {
|
||||||
|
color: #444;
|
||||||
}
|
}
|
||||||
.input { flex:1; text-align: right; color:#333;
|
.input {
|
||||||
|
flex: 1;
|
||||||
|
text-align: right;
|
||||||
|
color: #111;
|
||||||
}
|
}
|
||||||
.value { color:#333;
|
.value {
|
||||||
|
color: #111;
|
||||||
}
|
}
|
||||||
.actions { margin-top: 20rpx; padding: 0 20rpx;
|
.actions {
|
||||||
|
margin-top: 20rpx;
|
||||||
|
padding: 0 20rpx;
|
||||||
}
|
}
|
||||||
.primary { width: 100%; background: #3c9cff; color:#fff; border-radius: 8rpx; padding: 22rpx 0;
|
.primary {
|
||||||
|
width: 100%;
|
||||||
|
background: #4C8DFF;
|
||||||
|
color: #fff;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
padding: 22rpx 0;
|
||||||
}
|
}
|
||||||
.sheet { background:#fff;
|
.sheet {
|
||||||
|
background: #ffffff;
|
||||||
}
|
}
|
||||||
.sheet-item { padding: 26rpx; text-align:center; border-bottom:1rpx solid #f2f2f2;
|
.sheet-item {
|
||||||
|
padding: 26rpx;
|
||||||
|
text-align: center;
|
||||||
|
border-bottom: 1rpx solid #e5e7eb;
|
||||||
}
|
}
|
||||||
.sheet-cancel { padding: 26rpx; text-align:center; color:#666;
|
.sheet-cancel {
|
||||||
|
padding: 26rpx;
|
||||||
|
text-align: center;
|
||||||
|
color: #444;
|
||||||
}
|
}
|
||||||