3
@@ -1 +1 @@
|
||||
{"version":3,"file":"constants.js","sources":["common/constants.js"],"sourcesContent":["// 统一常量配置:其他收入/支出分类,禁止在业务中硬编码\r\nexport const INCOME_CATEGORIES = [\r\n\t{ key: 'sale_income', label: '销售收入' },\r\n\t{ key: 'operation_income', label: '经营所得' },\r\n\t{ key: 'interest_income', label: '利息收入' },\r\n\t{ key: 'investment_income', label: '投资收入' },\r\n\t{ key: 'other_income', label: '其它收入' }\r\n]\r\n\r\nexport const EXPENSE_CATEGORIES = [\r\n\t{ key: 'operation_expense', label: '经营支出' },\r\n\t{ key: 'office_supplies', label: '办公用品' },\r\n\t{ key: 'rent', label: '房租' },\r\n\t{ key: 'interest_expense', label: '利息支出' },\r\n\t{ key: 'other_expense', label: '其它支出' }\r\n]\r\n\r\n// 路由常量(集中管理页面路径,避免在业务中硬编码)\r\nexport const ROUTES = {\r\n\thome: '/pages/index/index',\r\n\tproductList: '/pages/product/list',\r\n\tproductForm: '/pages/product/form',\r\n\tproductSelect: '/pages/product/select',\r\n\tproductSettings: '/pages/product/settings',\r\n\torderCreate: '/pages/order/create',\r\n\tdetail: '/pages/detail/index',\r\n\tmy: '/pages/my/index',\r\n\tmyAbout: '/pages/my/about',\r\n\tmyVip: '/pages/my/vip',\r\n\treport: '/pages/report/index',\r\n\tcustomerSelect: '/pages/customer/select',\r\n\tsupplierSelect: '/pages/supplier/select',\r\n\taccountSelect: '/pages/account/select'\r\n}\r\n\r\n\r\n// 本地存储键:统一管理,避免在业务中散落硬编码\r\nexport const STORAGE_KEYS = {\r\n\tVIP_IS_VIP: 'USER_VIP_IS_VIP',\r\n\tVIP_START: 'USER_VIP_START',\r\n\tVIP_END: 'USER_VIP_END'\r\n}\r\n\r\n\r\n"],"names":[],"mappings":";AACY,MAAC,oBAAoB;AAAA,EAChC,EAAE,KAAK,eAAe,OAAO,OAAQ;AAAA,EACrC,EAAE,KAAK,oBAAoB,OAAO,OAAQ;AAAA,EAC1C,EAAE,KAAK,mBAAmB,OAAO,OAAQ;AAAA,EACzC,EAAE,KAAK,qBAAqB,OAAO,OAAQ;AAAA,EAC3C,EAAE,KAAK,gBAAgB,OAAO,OAAQ;AACvC;AAEY,MAAC,qBAAqB;AAAA,EACjC,EAAE,KAAK,qBAAqB,OAAO,OAAQ;AAAA,EAC3C,EAAE,KAAK,mBAAmB,OAAO,OAAQ;AAAA,EACzC,EAAE,KAAK,QAAQ,OAAO,KAAM;AAAA,EAC5B,EAAE,KAAK,oBAAoB,OAAO,OAAQ;AAAA,EAC1C,EAAE,KAAK,iBAAiB,OAAO,OAAQ;AACxC;AAGY,MAAC,SAAS;AAAA,EACrB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,aAAa;AAAA,EACb,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,IAAI;AAAA,EACJ,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,eAAe;AAChB;;;;"}
|
||||
{"version":3,"file":"constants.js","sources":["common/constants.js"],"sourcesContent":["// 统一常量配置:其他收入/支出分类,禁止在业务中硬编码\nexport const INCOME_CATEGORIES = [\n\t{ key: 'sale_income', label: '销售收入' },\n\t{ key: 'operation_income', label: '经营所得' },\n\t{ key: 'interest_income', label: '利息收入' },\n\t{ key: 'investment_income', label: '投资收入' },\n\t{ key: 'other_income', label: '其它收入' }\n]\n\nexport const EXPENSE_CATEGORIES = [\n\t{ key: 'operation_expense', label: '经营支出' },\n\t{ key: 'office_supplies', label: '办公用品' },\n\t{ key: 'rent', label: '房租' },\n\t{ key: 'interest_expense', label: '利息支出' },\n\t{ key: 'other_expense', label: '其它支出' }\n]\n\n// 路由常量(集中管理页面路径,避免在业务中硬编码)\nexport const ROUTES = {\n\thome: '/pages/index/index',\n\tproductList: '/pages/product/list',\n\tproductForm: '/pages/product/form',\n\tproductSelect: '/pages/product/select',\n\tproductSettings: '/pages/product/settings',\n\torderCreate: '/pages/order/create',\n\tdetail: '/pages/detail/index',\n\tmy: '/pages/my/index',\n\tmyAbout: '/pages/my/about',\n\tmyVip: '/pages/my/vip',\n\treport: '/pages/report/index',\n\tcustomerSelect: '/pages/customer/select',\n\tsupplierSelect: '/pages/supplier/select',\n\taccountSelect: '/pages/account/select'\n}\n\n\n// 本地存储键:统一管理,避免在业务中散落硬编码\nexport const STORAGE_KEYS = {\n\tVIP_IS_VIP: 'USER_VIP_IS_VIP',\n\tVIP_START: 'USER_VIP_START',\n\tVIP_END: 'USER_VIP_END'\n}\n\n\n// KPI 标签常量,避免页面硬编码\nexport const KPI_LABELS = {\n todaySales: '今日销售额',\n monthSales: '本月销售额',\n monthProfit: '本月利润',\n stockCount: '库存量'\n}\n\n"],"names":[],"mappings":";AACY,MAAC,oBAAoB;AAAA,EAChC,EAAE,KAAK,eAAe,OAAO,OAAQ;AAAA,EACrC,EAAE,KAAK,oBAAoB,OAAO,OAAQ;AAAA,EAC1C,EAAE,KAAK,mBAAmB,OAAO,OAAQ;AAAA,EACzC,EAAE,KAAK,qBAAqB,OAAO,OAAQ;AAAA,EAC3C,EAAE,KAAK,gBAAgB,OAAO,OAAQ;AACvC;AAEY,MAAC,qBAAqB;AAAA,EACjC,EAAE,KAAK,qBAAqB,OAAO,OAAQ;AAAA,EAC3C,EAAE,KAAK,mBAAmB,OAAO,OAAQ;AAAA,EACzC,EAAE,KAAK,QAAQ,OAAO,KAAM;AAAA,EAC5B,EAAE,KAAK,oBAAoB,OAAO,OAAQ;AAAA,EAC1C,EAAE,KAAK,iBAAiB,OAAO,OAAQ;AACxC;AAGY,MAAC,SAAS;AAAA,EACrB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,aAAa;AAAA,EACb,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,IAAI;AAAA,EACJ,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,eAAe;AAChB;AAYY,MAAC,aAAa;AAAA,EACtB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,YAAY;AAChB;;;;;"}
|
||||
1
frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/product/detail.js.map
vendored
Normal file
1
frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/product/product-detail.js.map
vendored
Normal file
1
frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/product/submission-detail.js.map
vendored
Normal file
@@ -1,8 +1,8 @@
|
||||
|
||||
;(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));
|
||||
const __uniConfig = {"pages":[],"globalStyle":{"backgroundColor":"#FFFFFF","backgroundTextStyle":"dark","navigationBar":{"backgroundColor":"#FFFFFF","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":"#444444","selectedColor":"#4C8DFF","borderStyle":"black","blurEffect":"none","fontSize":"10px","iconWidth":"24px","spacing":"3px","height":"50px","list":[{"pagePath":"pages/index/index","text":"首页","iconPath":"/static/icons/home.png","selectedIconPath":"/static/icons/home.png"},{"pagePath":"pages/product/list","text":"货品","iconPath":"/static/icons/product.png","selectedIconPath":"/static/icons/product.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/icons/icons8-more-details-100.png","selectedIconPath":"/static/icons/icons8-more-details-100.png"},{"pagePath":"pages/my/index","text":"我的","iconPath":"/static/icons/icons8-account-male-100.png","selectedIconPath":"/static/icons/icons8-account-male-100.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/submit","meta":{"navigationBar":{"backgroundColor":"#ffffff","titleText":"提交配件","type":"default"},"isNVue":false}},{"path":"pages/product/submissions","meta":{"navigationBar":{"titleText":"我的提交","type":"default"},"isNVue":false}},{"path":"pages/product/submission-detail","meta":{"navigationBar":{"titleText":"提交详情","type":"default"},"isNVue":false}},{"path":"pages/product/form","meta":{"navigationBar":{"titleText":"编辑货品","type":"default"},"isNVue":false}},{"path":"pages/product/product-detail","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/auth/login","meta":{"navigationBar":{"titleText":"登录","type":"default"},"isNVue":false}},{"path":"pages/auth/register","meta":{"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/my/security","meta":{"navigationBar":{"titleText":"账号与安全","type":"default"},"isNVue":false}},{"path":"pages/my/vip","meta":{"backgroundColor":"#1a1a2e","backgroundTextStyle":"light","navigationBar":{"backgroundColor":"#1a1a2e","titleText":"VIP会员","type":"default","titleColor":"#ffffff"},"isNVue":false}},{"path":"pages/my/orders","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()})}});
|
||||
|
||||
5981
frontend/unpackage/dist/dev/app-plus/app-service.js
vendored
85
frontend/unpackage/dist/dev/app-plus/app.css
vendored
@@ -72,14 +72,14 @@
|
||||
"statusbar": {
|
||||
"immersed": "supportedDevice",
|
||||
"style": "dark",
|
||||
"background": "#F8F8F8"
|
||||
"background": "#FFFFFF"
|
||||
},
|
||||
"uniStatistics": {
|
||||
"enable": false
|
||||
},
|
||||
"allowsInlineMediaPlayback": true,
|
||||
"safearea": {
|
||||
"background": "#ffffff",
|
||||
"background": "#FFFFFF",
|
||||
"bottom": {
|
||||
"offset": "auto"
|
||||
}
|
||||
@@ -100,8 +100,8 @@
|
||||
},
|
||||
"tabBar": {
|
||||
"position": "bottom",
|
||||
"color": "#8a7535",
|
||||
"selectedColor": "#B4880F",
|
||||
"color": "#444444",
|
||||
"selectedColor": "#4C8DFF",
|
||||
"borderStyle": "rgba(0,0,0,0.4)",
|
||||
"blurEffect": "none",
|
||||
"fontSize": "10px",
|
||||
@@ -112,35 +112,35 @@
|
||||
{
|
||||
"pagePath": "pages/index/index",
|
||||
"text": "首页",
|
||||
"iconPath": "/static/logo.png",
|
||||
"selectedIconPath": "/static/logo.png"
|
||||
"iconPath": "/static/icons/home.png",
|
||||
"selectedIconPath": "/static/icons/home.png"
|
||||
},
|
||||
{
|
||||
"pagePath": "pages/product/list",
|
||||
"text": "货品",
|
||||
"iconPath": "/static/logo.png",
|
||||
"selectedIconPath": "/static/logo.png"
|
||||
"iconPath": "/static/icons/product.png",
|
||||
"selectedIconPath": "/static/icons/product.png"
|
||||
},
|
||||
{
|
||||
"pagePath": "pages/order/create",
|
||||
"text": "开单",
|
||||
"iconPath": "/static/logo.png",
|
||||
"selectedIconPath": "/static/logo.png"
|
||||
"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"
|
||||
"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"
|
||||
"iconPath": "/static/icons/icons8-account-male-100.png",
|
||||
"selectedIconPath": "/static/icons/icons8-account-male-100.png"
|
||||
}
|
||||
],
|
||||
"backgroundColor": "#ffffff",
|
||||
"backgroundColor": "#FFFFFF",
|
||||
"selectedIndex": 0,
|
||||
"shown": true,
|
||||
"child": [
|
||||
@@ -158,7 +158,7 @@
|
||||
"enable": false
|
||||
},
|
||||
"safearea": {
|
||||
"background": "#ffffff",
|
||||
"background": "#FFFFFF",
|
||||
"bottom": {
|
||||
"offset": "auto"
|
||||
}
|
||||
|
||||
@@ -1,23 +1,77 @@
|
||||
|
||||
.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: 0.5625rem 0.625rem; border-bottom:0.03125rem solid #f3f3f3;
|
||||
.field {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 0.5625rem 0.625rem;
|
||||
border-bottom: 0.03125rem 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: 0.625rem; padding: 0 0.625rem;
|
||||
.actions {
|
||||
margin-top: 0.625rem;
|
||||
padding: 0 0.625rem;
|
||||
}
|
||||
.primary { width: 100%; background: #3c9cff; color:#fff; border-radius: 0.25rem; padding: 0.6875rem 0;
|
||||
.primary {
|
||||
width: 100%;
|
||||
background: #4C8DFF;
|
||||
color: #fff;
|
||||
border-radius: 0.25rem;
|
||||
padding: 0.6875rem 0;
|
||||
}
|
||||
.sheet { background:#fff;
|
||||
.sheet {
|
||||
background: #ffffff;
|
||||
}
|
||||
.sheet-item { padding: 0.8125rem; text-align:center; border-bottom:0.03125rem solid #f2f2f2;
|
||||
}
|
||||
.sheet-cancel { padding: 0.8125rem; text-align:center; color:#666;
|
||||
.sheet-item {
|
||||
padding: 0.8125rem;
|
||||
text-align: center;
|
||||
border-bottom: 0.03125rem solid #e5e7eb;
|
||||
}
|
||||
.sheet-cancel {
|
||||
padding: 0.8125rem;
|
||||
text-align: center;
|
||||
color: #444;
|
||||
}
|
||||
@@ -1,35 +1,107 @@
|
||||
|
||||
.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;
|
||||
}
|
||||
.filters { display:flex; gap: 0.5rem; padding: 0.5rem; background:#fff;
|
||||
.filters {
|
||||
display: flex;
|
||||
gap: 0.5rem;
|
||||
padding: 0.5rem;
|
||||
background: #ffffff;
|
||||
}
|
||||
.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;
|
||||
.field {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 0.5rem;
|
||||
border: 0.03125rem solid #e5e7eb;
|
||||
border-radius: 0.375rem;
|
||||
min-width: 9.375rem;
|
||||
}
|
||||
.label { color:#666;
|
||||
.label {
|
||||
color: #444;
|
||||
}
|
||||
.value { color:#333;
|
||||
.value {
|
||||
color: #111;
|
||||
}
|
||||
.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;
|
||||
.summary {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 0.375rem;
|
||||
padding: 0.375rem 0.5rem;
|
||||
background: #ffffff;
|
||||
border-top: 0.03125rem solid #e5e7eb;
|
||||
border-bottom: 0.03125rem solid #e5e7eb;
|
||||
}
|
||||
.sum-item { padding: 0.375rem; text-align:center;
|
||||
.sum-item {
|
||||
padding: 0.375rem;
|
||||
text-align: center;
|
||||
}
|
||||
.k { display:block; color:#888; font-size: 0.75rem;
|
||||
.k {
|
||||
display: block;
|
||||
color: #444;
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
.v { display:block; margin-top:0.1875rem; font-weight:700; color:#333;
|
||||
.v {
|
||||
display: block;
|
||||
margin-top: 0.1875rem;
|
||||
font-weight: 700;
|
||||
color: #111;
|
||||
}
|
||||
.list { flex:1;
|
||||
.list {
|
||||
flex: 1;
|
||||
}
|
||||
.item { padding: 0.5625rem 0.5rem; border-bottom:0.03125rem solid #f4f4f4; background:#fff;
|
||||
.item {
|
||||
padding: 0.5625rem 0.5rem;
|
||||
border-bottom: 0.03125rem solid #e5e7eb;
|
||||
background: #ffffff;
|
||||
}
|
||||
.row { display:flex; align-items:center; justify-content: space-between; margin-bottom: 0.1875rem;
|
||||
.row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 0.1875rem;
|
||||
}
|
||||
.title { color:#333;
|
||||
.title {
|
||||
color: #111;
|
||||
}
|
||||
.amount { font-weight:700;
|
||||
.amount {
|
||||
font-weight: 700;
|
||||
}
|
||||
.amount.in { color:#2a9d8f;
|
||||
.amount.in {
|
||||
color: #2a9d8f;
|
||||
}
|
||||
.amount.out { color:#d35b5b;
|
||||
}
|
||||
.meta { color:#999; font-size: 0.75rem;
|
||||
.amount.out {
|
||||
color: #d35b5b;
|
||||
}
|
||||
.meta {
|
||||
color: #444;
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
@@ -1,13 +1,63 @@
|
||||
|
||||
.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;
|
||||
}
|
||||
.list { flex:1;
|
||||
.list {
|
||||
flex: 1;
|
||||
}
|
||||
.item { padding: 0.625rem 0.75rem; background:#fff; border-bottom: 0.03125rem solid #f1f1f1;
|
||||
.item {
|
||||
padding: 0.625rem 0.75rem;
|
||||
background: #ffffff;
|
||||
border-bottom: 0.03125rem solid #e5e7eb;
|
||||
}
|
||||
.name { color:#333; margin-bottom: 0.1875rem;
|
||||
.name {
|
||||
color: #111;
|
||||
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);
|
||||
.meta {
|
||||
color: #444;
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
.fab {
|
||||
position: fixed;
|
||||
right: 1rem;
|
||||
bottom: 3.75rem;
|
||||
width: 3.125rem;
|
||||
height: 3.125rem;
|
||||
border-radius: 50%;
|
||||
background: #4C8DFF;
|
||||
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);
|
||||
}
|
||||
163
frontend/unpackage/dist/dev/app-plus/pages/auth/login.css
vendored
Normal file
@@ -0,0 +1,163 @@
|
||||
/**
|
||||
* 这里是uni-app内置的常用样式变量
|
||||
*
|
||||
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
|
||||
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
|
||||
*
|
||||
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
|
||||
*/
|
||||
/* 颜色变量 */
|
||||
/* 行为相关颜色 */
|
||||
/* 藏青系主色(高亮) */
|
||||
/* 文字基本颜色 */
|
||||
/* 背景颜色 */
|
||||
/* 边框颜色 */
|
||||
/* 尺寸变量 */
|
||||
/* 文字尺寸 */
|
||||
/* 图片尺寸 */
|
||||
/* Border Radius */
|
||||
/* 水平间距 */
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
/**
|
||||
* 这里是uni-app内置的常用样式变量
|
||||
*
|
||||
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
|
||||
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
|
||||
*
|
||||
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
|
||||
*/
|
||||
/* 颜色变量 */
|
||||
/* 行为相关颜色 */
|
||||
/* 藏青系主色(高亮) */
|
||||
/* 文字基本颜色 */
|
||||
/* 背景颜色 */
|
||||
/* 边框颜色 */
|
||||
/* 尺寸变量 */
|
||||
/* 文字尺寸 */
|
||||
/* 图片尺寸 */
|
||||
/* Border Radius */
|
||||
/* 水平间距 */
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.auth-page {
|
||||
padding: 1rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.75rem;
|
||||
position: relative;
|
||||
min-height: 100vh;
|
||||
}
|
||||
.header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 0.25rem 0 0;
|
||||
}
|
||||
.title {
|
||||
font-size: 1.0625rem;
|
||||
font-weight: 800;
|
||||
color: #111;
|
||||
}
|
||||
.login-hero {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
padding: 0.5rem 0 0;
|
||||
}
|
||||
.login-hero-img {
|
||||
width: 72%;
|
||||
max-width: 17.5rem;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
.panel {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.5rem;
|
||||
background: transparent;
|
||||
padding: 0;
|
||||
border-radius: 0;
|
||||
border: none;
|
||||
}
|
||||
.panel.minor {
|
||||
margin-top: 0.375rem;
|
||||
}
|
||||
.input {
|
||||
background: #ffffff;
|
||||
border: 0.0625rem solid #e5e7eb;
|
||||
border-radius: 0.375rem;
|
||||
padding: 0.6875rem 0.625rem;
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
.row {
|
||||
display: flex;
|
||||
gap: 0.375rem;
|
||||
align-items: center;
|
||||
}
|
||||
.flex1 {
|
||||
flex: 1;
|
||||
}
|
||||
.btn {
|
||||
padding: 0.6875rem 0.625rem;
|
||||
border-radius: 0.375rem;
|
||||
font-weight: 800;
|
||||
text-align: center;
|
||||
}
|
||||
.btn.primary {
|
||||
background: linear-gradient(135deg, #4788ff 0%, #2d6be6 100%);
|
||||
color: #fff;
|
||||
border: 0.03125rem solid rgba(45, 107, 230, 0.25);
|
||||
width: 72%;
|
||||
margin: 0 auto;
|
||||
padding: 0.4375rem 0.5rem;
|
||||
}
|
||||
.btn.ghost {
|
||||
background: #eef3ff;
|
||||
color: #2d6be6;
|
||||
}
|
||||
/* 右下角快捷入口:贴着登录功能,无边框、无背景 */
|
||||
.quick-inline {
|
||||
display: flex;
|
||||
gap: 0.875rem;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
margin-top: 0.3125rem;
|
||||
}
|
||||
.quick-link {
|
||||
background: transparent !important;
|
||||
color: #2d6be6;
|
||||
border: none !important;
|
||||
outline: none;
|
||||
padding: 0;
|
||||
font-size: 0.8125rem;
|
||||
font-weight: 700;
|
||||
box-shadow: none;
|
||||
line-height: 1.2;
|
||||
}
|
||||
.quick-link::after {
|
||||
border: none !important;
|
||||
}
|
||||
/* 注册/重置页:验证码按钮与左侧输入框等高,且更紧凑 */
|
||||
.panel.minor .row > .input {
|
||||
height: 2.375rem;
|
||||
padding: 0 0.625rem;
|
||||
}
|
||||
.panel.minor .row > .btn.ghost {
|
||||
height: 2.375rem;
|
||||
padding: 0 0.625rem;
|
||||
border-radius: 0.375rem;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
292
frontend/unpackage/dist/dev/app-plus/pages/auth/register.css
vendored
Normal file
@@ -0,0 +1,292 @@
|
||||
/**
|
||||
* 这里是uni-app内置的常用样式变量
|
||||
*
|
||||
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
|
||||
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
|
||||
*
|
||||
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
|
||||
*/
|
||||
/* 颜色变量 */
|
||||
/* 行为相关颜色 */
|
||||
/* 藏青系主色(高亮) */
|
||||
/* 文字基本颜色 */
|
||||
/* 背景颜色 */
|
||||
/* 边框颜色 */
|
||||
/* 尺寸变量 */
|
||||
/* 文字尺寸 */
|
||||
/* 图片尺寸 */
|
||||
/* Border Radius */
|
||||
/* 水平间距 */
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.register-container {
|
||||
position: relative;
|
||||
min-height: 100vh;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
padding: 1.25rem 0.625rem;
|
||||
overflow: hidden;
|
||||
}
|
||||
.background-decoration {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
z-index: 0;
|
||||
}
|
||||
.background-decoration .circle {
|
||||
position: absolute;
|
||||
border-radius: 50%;
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.background-decoration .circle.circle-1 {
|
||||
width: 6.875rem;
|
||||
height: 6.875rem;
|
||||
top: 8%;
|
||||
left: 12%;
|
||||
animation: float 7s ease-in-out infinite;
|
||||
}
|
||||
.background-decoration .circle.circle-2 {
|
||||
width: 5.625rem;
|
||||
height: 5.625rem;
|
||||
top: 65%;
|
||||
right: 10%;
|
||||
animation: float 9s ease-in-out infinite reverse;
|
||||
}
|
||||
.background-decoration .circle.circle-3 {
|
||||
width: 3.75rem;
|
||||
height: 3.75rem;
|
||||
bottom: 15%;
|
||||
left: 25%;
|
||||
animation: float 6s ease-in-out infinite;
|
||||
}
|
||||
@keyframes float {
|
||||
0%, 100% {
|
||||
transform: translateY(0px) rotate(0deg);
|
||||
}
|
||||
50% {
|
||||
transform: translateY(-25px) rotate(5deg);
|
||||
}
|
||||
}
|
||||
.register-card {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
width: 90%;
|
||||
max-width: 21.25rem;
|
||||
background: rgba(255, 255, 255, 0.95);
|
||||
-webkit-backdrop-filter: blur(0.625rem);
|
||||
backdrop-filter: blur(0.625rem);
|
||||
border-radius: 1rem;
|
||||
padding: 1.5625rem 1.25rem 1.40625rem;
|
||||
box-shadow: 0 0.78125rem 2.1875rem rgba(0, 0, 0, 0.12);
|
||||
border: 0.03125rem solid rgba(255, 255, 255, 0.3);
|
||||
}
|
||||
.header-section {
|
||||
text-align: center;
|
||||
margin-bottom: 1.40625rem;
|
||||
}
|
||||
.header-section .logo-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 0.5rem;
|
||||
margin-bottom: 0.625rem;
|
||||
}
|
||||
.header-section .logo-container .logo-icon {
|
||||
width: 1.875rem;
|
||||
height: 1.875rem;
|
||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
border-radius: 0.5rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.header-section .logo-container .logo-icon .icon {
|
||||
width: 1.125rem;
|
||||
height: 1.125rem;
|
||||
fill: white;
|
||||
}
|
||||
.header-section .logo-container .app-name {
|
||||
font-size: 1.125rem;
|
||||
font-weight: 700;
|
||||
color: #2d3748;
|
||||
letter-spacing: 0.03125rem;
|
||||
}
|
||||
.header-section .welcome-text {
|
||||
display: block;
|
||||
font-size: 1.5rem;
|
||||
font-weight: 700;
|
||||
color: #2d3748;
|
||||
margin-bottom: 0.25rem;
|
||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
}
|
||||
.header-section .subtitle {
|
||||
display: block;
|
||||
font-size: 0.875rem;
|
||||
color: #718096;
|
||||
font-weight: 400;
|
||||
}
|
||||
.form-section {
|
||||
margin-bottom: 1.25rem;
|
||||
}
|
||||
.form-section .input-group {
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
.form-section .input-group .input-container {
|
||||
position: relative;
|
||||
background: #f7fafc;
|
||||
border: 0.0625rem solid #e2e8f0;
|
||||
border-radius: 0.5rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
.form-section .input-group .input-container.focused {
|
||||
border-color: #667eea;
|
||||
background: #ffffff;
|
||||
box-shadow: 0 0 0 0.1875rem rgba(102, 126, 234, 0.1);
|
||||
transform: translateY(-0.0625rem);
|
||||
}
|
||||
.form-section .input-group .input-container.filled {
|
||||
background: #ffffff;
|
||||
border-color: #cbd5e0;
|
||||
}
|
||||
.form-section .input-group .input-container .input-icon {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 1.5625rem;
|
||||
margin-left: 0.625rem;
|
||||
}
|
||||
.form-section .input-group .input-container .input-icon .icon {
|
||||
width: 1rem;
|
||||
height: 1rem;
|
||||
fill: #a0aec0;
|
||||
transition: fill 0.3s ease;
|
||||
}
|
||||
.form-section .input-group .input-container.focused .input-icon .icon {
|
||||
fill: #667eea;
|
||||
}
|
||||
.form-section .input-group .input-container .input-field {
|
||||
flex: 1;
|
||||
background: transparent;
|
||||
border: none;
|
||||
padding: 0.75rem 0.625rem 0.75rem 0.375rem;
|
||||
font-size: 1rem;
|
||||
color: #2d3748;
|
||||
}
|
||||
.form-section .input-group .input-container .input-field::-webkit-input-placeholder {
|
||||
color: #a0aec0;
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
.form-section .input-group .input-container .input-field::placeholder {
|
||||
color: #a0aec0;
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
.actions-section {
|
||||
margin-bottom: 0.9375rem;
|
||||
}
|
||||
.actions-section .register-button {
|
||||
width: 100%;
|
||||
height: 3rem;
|
||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
border: none;
|
||||
border-radius: 0.5rem;
|
||||
margin-bottom: 0.625rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
box-shadow: 0 0.25rem 0.75rem rgba(102, 126, 234, 0.3);
|
||||
transition: all 0.3s ease;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
.actions-section .register-button:active {
|
||||
transform: translateY(0.0625rem);
|
||||
box-shadow: 0 0.125rem 0.5rem rgba(102, 126, 234, 0.3);
|
||||
}
|
||||
.actions-section .register-button::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: linear-gradient(135deg, rgba(255, 255, 255, 0.2) 0%, transparent 50%);
|
||||
opacity: 0;
|
||||
transition: opacity 0.3s ease;
|
||||
}
|
||||
.actions-section .register-button:active::before {
|
||||
opacity: 1;
|
||||
}
|
||||
.actions-section .register-button .button-text {
|
||||
font-size: 1rem;
|
||||
font-weight: 600;
|
||||
color: white;
|
||||
letter-spacing: 0.03125rem;
|
||||
}
|
||||
.actions-section .login-button {
|
||||
width: 100%;
|
||||
height: 2.6875rem;
|
||||
background: transparent;
|
||||
border: 0.0625rem solid #e2e8f0;
|
||||
border-radius: 0.5rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
.actions-section .login-button:active {
|
||||
background: #f7fafc;
|
||||
border-color: #cbd5e0;
|
||||
transform: translateY(0.03125rem);
|
||||
}
|
||||
.actions-section .login-button .button-text {
|
||||
font-size: 0.875rem;
|
||||
font-weight: 500;
|
||||
color: #718096;
|
||||
}
|
||||
.footer-section {
|
||||
text-align: center;
|
||||
}
|
||||
.footer-section .hint-text {
|
||||
display: block;
|
||||
font-size: 0.75rem;
|
||||
color: #a0aec0;
|
||||
line-height: 1.6;
|
||||
margin-bottom: 0.375rem;
|
||||
}
|
||||
.footer-section .static-hint {
|
||||
display: block;
|
||||
font-size: 0.6875rem;
|
||||
color: #a0aec0;
|
||||
line-height: 1.5;
|
||||
background: rgba(160, 174, 192, 0.1);
|
||||
padding: 0.375rem 0.5rem;
|
||||
border-radius: 0.3125rem;
|
||||
border: 0.03125rem solid rgba(160, 174, 192, 0.2);
|
||||
}
|
||||
@media (max-width: 750rpx) {
|
||||
.register-card {
|
||||
margin: 0.625rem;
|
||||
padding: 1.25rem 0.9375rem 1.09375rem;
|
||||
}
|
||||
.header-section .welcome-text {
|
||||
font-size: 1.3125rem;
|
||||
}
|
||||
.form-section .input-group {
|
||||
margin-bottom: 0.625rem;
|
||||
}
|
||||
}
|
||||
@@ -1,23 +1,88 @@
|
||||
|
||||
.page { padding-bottom: 4.375rem;
|
||||
/**
|
||||
* 这里是uni-app内置的常用样式变量
|
||||
*
|
||||
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
|
||||
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
|
||||
*
|
||||
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
|
||||
*/
|
||||
/* 颜色变量 */
|
||||
/* 行为相关颜色 */
|
||||
/* 藏青系主色(高亮) */
|
||||
/* 文字基本颜色 */
|
||||
/* 背景颜色 */
|
||||
/* 边框颜色 */
|
||||
/* 尺寸变量 */
|
||||
/* 文字尺寸 */
|
||||
/* 图片尺寸 */
|
||||
/* Border Radius */
|
||||
/* 水平间距 */
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.page {
|
||||
padding-bottom: 4.375rem;
|
||||
}
|
||||
.card { background:#fff; margin: 0.5rem; padding: 0.375rem 0.5rem; border-radius: 0.5rem;
|
||||
.card {
|
||||
background: #ffffff;
|
||||
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 {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 0.5625rem 0.25rem;
|
||||
border-bottom: 0.03125rem solid #e5e7eb;
|
||||
}
|
||||
.row:last-child { border-bottom: 0;
|
||||
.row:last-child {
|
||||
border-bottom: 0;
|
||||
}
|
||||
.label { color:#666;
|
||||
.label {
|
||||
color: #444;
|
||||
}
|
||||
.value { color:#333; max-width: 60%; text-align: right;
|
||||
.value {
|
||||
color: #111;
|
||||
max-width: 60%;
|
||||
text-align: right;
|
||||
}
|
||||
.value-input { color:#333; text-align: right; flex: 1;
|
||||
.value-input {
|
||||
color: #111;
|
||||
text-align: right;
|
||||
flex: 1;
|
||||
}
|
||||
.emp { color:#107e9b; font-weight: 700;
|
||||
.emp {
|
||||
color: #4C8DFF;
|
||||
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;
|
||||
.bottom {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: #ffffff;
|
||||
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.1);
|
||||
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;
|
||||
.primary {
|
||||
flex: 1;
|
||||
background: #4C8DFF;
|
||||
color: #fff;
|
||||
border-radius: 31.21875rem;
|
||||
padding: 0.625rem 0;
|
||||
}
|
||||
.ghost {
|
||||
flex: 1;
|
||||
background: #ffffff;
|
||||
color: #4C8DFF;
|
||||
border: 0.0625rem solid rgba(76, 141, 255, 0.35);
|
||||
border-radius: 31.21875rem;
|
||||
padding: 0.5625rem 0;
|
||||
}
|
||||
@@ -1,15 +1,66 @@
|
||||
|
||||
.page { padding-bottom: 4.375rem;
|
||||
/**
|
||||
* 这里是uni-app内置的常用样式变量
|
||||
*
|
||||
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
|
||||
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
|
||||
*
|
||||
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
|
||||
*/
|
||||
/* 颜色变量 */
|
||||
/* 行为相关颜色 */
|
||||
/* 藏青系主色(高亮) */
|
||||
/* 文字基本颜色 */
|
||||
/* 背景颜色 */
|
||||
/* 边框颜色 */
|
||||
/* 尺寸变量 */
|
||||
/* 文字尺寸 */
|
||||
/* 图片尺寸 */
|
||||
/* Border Radius */
|
||||
/* 水平间距 */
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.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;
|
||||
.field {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 0.6875rem 0.75rem;
|
||||
background: #ffffff;
|
||||
border-bottom: 0.03125rem solid #e5e7eb;
|
||||
}
|
||||
.label { color:#666;
|
||||
.label {
|
||||
color: #444;
|
||||
}
|
||||
.value { color:#333; text-align: right; flex: 1;
|
||||
.value {
|
||||
color: #111;
|
||||
text-align: right;
|
||||
flex: 1;
|
||||
}
|
||||
.textarea { padding: 0.5rem 0.75rem; background:#fff; margin-top: 0.375rem;
|
||||
.textarea {
|
||||
padding: 0.5rem 0.75rem;
|
||||
background: #ffffff;
|
||||
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;
|
||||
.bottom {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: #ffffff;
|
||||
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.1);
|
||||
}
|
||||
.primary {
|
||||
width: 100%;
|
||||
background: #4C8DFF;
|
||||
color: #fff;
|
||||
border-radius: 31.21875rem;
|
||||
padding: 0.625rem 0;
|
||||
}
|
||||
@@ -1,19 +1,78 @@
|
||||
|
||||
.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;
|
||||
}
|
||||
.search { display:flex; gap: 0.375rem; padding: 0.5rem; background:#fff; align-items:center;
|
||||
.search {
|
||||
display: flex;
|
||||
gap: 0.375rem;
|
||||
padding: 0.5rem;
|
||||
background: #ffffff;
|
||||
align-items: center;
|
||||
}
|
||||
.search uni-input { flex:1; background:#f6f6f6; border-radius: 0.375rem; padding: 0.375rem;
|
||||
.search uni-input {
|
||||
flex: 1;
|
||||
background: #f1f1f1;
|
||||
border-radius: 0.375rem;
|
||||
padding: 0.375rem;
|
||||
color: #111;
|
||||
}
|
||||
.list { flex:1;
|
||||
.list {
|
||||
flex: 1;
|
||||
}
|
||||
.item { padding: 0.625rem 0.75rem; background:#fff; border-bottom: 0.03125rem solid #f1f1f1;
|
||||
.item {
|
||||
padding: 0.625rem 0.75rem;
|
||||
background: #ffffff;
|
||||
border-bottom: 0.03125rem solid #e5e7eb;
|
||||
}
|
||||
.name { color:#333; margin-bottom: 0.1875rem;
|
||||
.name {
|
||||
color: #111;
|
||||
margin-bottom: 0.1875rem;
|
||||
}
|
||||
.meta { color:#888; font-size: 0.75rem;
|
||||
.meta {
|
||||
color: #444;
|
||||
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;
|
||||
.bottom {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: #ffffff;
|
||||
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.1);
|
||||
}
|
||||
.primary {
|
||||
width: 100%;
|
||||
background: #4C8DFF;
|
||||
color: #fff;
|
||||
border-radius: 31.21875rem;
|
||||
padding: 0.625rem 0;
|
||||
}
|
||||
@@ -1,49 +1,220 @@
|
||||
/**
|
||||
* 这里是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;
|
||||
}
|
||||
|
||||
.page { display:flex; flex-direction: column; height: 100vh;
|
||||
/* 顶部分段(如需保留,可以隐藏或后续扩展) */
|
||||
.seg {
|
||||
display: none;
|
||||
}
|
||||
.seg { display:flex; background:#fff;
|
||||
.content {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
}
|
||||
.seg-item { flex:1; padding: 0.6875rem 0; text-align:center; color:#666;
|
||||
.biz-tabs {
|
||||
width: 4.375rem;
|
||||
background: #fff;
|
||||
border-right: 0.0625rem solid #e5e7eb;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.seg-item.active { color:#18b566; font-weight: 600;
|
||||
.biz {
|
||||
flex: 0 0 3.75rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: #4C8DFF;
|
||||
}
|
||||
.content { display:flex; flex:1; min-height: 0;
|
||||
.biz.active {
|
||||
background: rgba(76, 141, 255, 0.1);
|
||||
color: #4C8DFF;
|
||||
font-weight: 700;
|
||||
}
|
||||
.biz-tabs { width: 3.75rem; background:#eef6ff; display:flex; flex-direction: column;
|
||||
.panel {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
background: #fff;
|
||||
margin: 0.5rem;
|
||||
border-radius: 0.5rem;
|
||||
padding: 0.375rem;
|
||||
}
|
||||
.biz { flex:0 0 3.75rem; display:flex; align-items:center; justify-content:center; color:#4aa3d6;
|
||||
.toolbar {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.3125rem;
|
||||
padding: 0.3125rem 0.1875rem 0.1875rem;
|
||||
border-bottom: 0.0625rem solid #e5e7eb;
|
||||
}
|
||||
.biz.active { background:#3ac1c9; color:#fff; border-radius: 0 0.5rem 0.5rem 0;
|
||||
.period-group {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.25rem;
|
||||
background: #f6f8fb;
|
||||
border-radius: 0.3125rem;
|
||||
padding: 0.25rem 0.3125rem;
|
||||
}
|
||||
.panel { flex:1; display:flex; flex-direction: column; background:#fff; margin: 0.5rem; border-radius: 0.5rem; padding: 0.375rem;
|
||||
.period-label {
|
||||
color: #6b778c;
|
||||
}
|
||||
.toolbar { display:flex; align-items: center; gap: 0.375rem; padding: 0.25rem 0.1875rem;
|
||||
.date-chip {
|
||||
padding: 0.25rem 0.375rem;
|
||||
background: #fff;
|
||||
border: 0.0625rem solid #e6ebf2;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
.search { flex:1;
|
||||
.sep {
|
||||
color: #99a2b3;
|
||||
padding: 0 0.1875rem;
|
||||
}
|
||||
.search-input { width:100%; background:#f6f6f6; border-radius: 0.375rem; padding: 0.375rem;
|
||||
.search-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
.period { color:#999; font-size: 0.75rem; padding: 0 0.1875rem;
|
||||
.search {
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
display: flex;
|
||||
}
|
||||
.total { color:#18b566; font-weight: 700; padding: 0.1875rem 0.1875rem 0.375rem;
|
||||
.search-input {
|
||||
flex: 1;
|
||||
height: 2.25rem;
|
||||
line-height: 2.25rem;
|
||||
padding: 0 0.75rem;
|
||||
box-sizing: border-box;
|
||||
background: #fff;
|
||||
border-radius: 0.375rem;
|
||||
color: #111;
|
||||
border: 0.0625rem solid #e6ebf2;
|
||||
font-size: 0.8125rem;
|
||||
}
|
||||
.list { flex:1;
|
||||
.btn {
|
||||
flex-shrink: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 2.25rem;
|
||||
padding: 0 1rem;
|
||||
margin-left: 0.125rem;
|
||||
border-radius: 0.375rem;
|
||||
background: #4C8DFF;
|
||||
color: #fff;
|
||||
border: none;
|
||||
font-size: 0.8125rem;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.item { display:flex; align-items:center; padding: 0.625rem 0.3125rem; border-bottom: 0.03125rem solid #f1f1f1;
|
||||
.btn::after {
|
||||
border: none;
|
||||
}
|
||||
.item-left { flex:1;
|
||||
.total {
|
||||
color: #4C8DFF;
|
||||
font-weight: 700;
|
||||
padding: 0.3125rem 0.1875rem 0.375rem;
|
||||
background: #fff;
|
||||
}
|
||||
.date { color:#999; font-size: 0.75rem;
|
||||
.list {
|
||||
flex: 1;
|
||||
}
|
||||
.name { color:#333; margin: 0.125rem 0; font-weight: 600;
|
||||
.loading {
|
||||
text-align: center;
|
||||
padding: 0.625rem 0;
|
||||
color: #444;
|
||||
}
|
||||
.no { color:#bbb; font-size: 0.6875rem;
|
||||
.finished {
|
||||
text-align: center;
|
||||
padding: 0.625rem 0;
|
||||
color: #444;
|
||||
}
|
||||
.amount { color:#333; font-weight: 700;
|
||||
.item {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr auto auto;
|
||||
align-items: center;
|
||||
gap: 0.25rem;
|
||||
padding: 0.5625rem 0.375rem;
|
||||
border-bottom: 0.03125rem solid #e5e7eb;
|
||||
}
|
||||
.arrow { color:#ccc; font-size: 1.25rem; margin-left: 0.25rem;
|
||||
.item-left {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.empty { height: 50vh; display:flex; align-items:center; justify-content:center; color:#999;
|
||||
.date {
|
||||
color: #444;
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
.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);
|
||||
.name {
|
||||
color: #111;
|
||||
margin: 0.125rem 0;
|
||||
font-weight: 600;
|
||||
}
|
||||
.no {
|
||||
color: #99a2b3;
|
||||
font-size: 0.6875rem;
|
||||
}
|
||||
.amount {
|
||||
color: #111;
|
||||
font-weight: 700;
|
||||
text-align: right;
|
||||
}
|
||||
.amount.in {
|
||||
color: #16a34a;
|
||||
}
|
||||
.amount.out {
|
||||
color: #dc2626;
|
||||
}
|
||||
.arrow {
|
||||
color: #8c99b0;
|
||||
font-size: 1.25rem;
|
||||
margin-left: 0.25rem;
|
||||
}
|
||||
.empty {
|
||||
height: 50vh;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: #444;
|
||||
}
|
||||
.fab {
|
||||
position: fixed;
|
||||
right: 0.9375rem;
|
||||
bottom: 3.75rem;
|
||||
width: 3.125rem;
|
||||
height: 3.125rem;
|
||||
background: #fff;
|
||||
color: #4C8DFF;
|
||||
border: 0.0625rem solid #4C8DFF;
|
||||
border-radius: 1.5625rem;
|
||||
text-align: center;
|
||||
line-height: 3.125rem;
|
||||
font-size: 1.5rem;
|
||||
box-shadow: 0 0.25rem 0.625rem rgba(76, 141, 255, 0.18);
|
||||
}
|
||||
@@ -1,185 +1,418 @@
|
||||
|
||||
/**
|
||||
* 这里是uni-app内置的常用样式变量
|
||||
*
|
||||
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
|
||||
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
|
||||
*
|
||||
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
|
||||
*/
|
||||
/* 颜色变量 */
|
||||
/* 行为相关颜色 */
|
||||
/* 藏青系主色(高亮) */
|
||||
/* 文字基本颜色 */
|
||||
/* 背景颜色 */
|
||||
/* 边框颜色 */
|
||||
/* 尺寸变量 */
|
||||
/* 文字尺寸 */
|
||||
/* 图片尺寸 */
|
||||
/* Border Radius */
|
||||
/* 水平间距 */
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
body {
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
background: linear-gradient(180deg, #f8fbff 0%, #ffffff 60%);
|
||||
}
|
||||
.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;
|
||||
height: 100vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding-bottom: calc(env(safe-area-inset-bottom) + 1rem);
|
||||
position: relative;
|
||||
/* 渐变背景:顶部淡蓝过渡到白色 */
|
||||
background: linear-gradient(180deg, #f8fbff 0%, #ffffff 60%);
|
||||
overflow: hidden;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
/* 公告栏 */
|
||||
/* 首页横幅(移除) */
|
||||
/* 公告栏 */
|
||||
.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;
|
||||
margin: 0 0.75rem 0.75rem;
|
||||
padding: 0.625rem 0.6875rem;
|
||||
border-radius: 0.625rem;
|
||||
background: #ffffff;
|
||||
border: 0.0625rem solid #e5e7eb;
|
||||
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;
|
||||
flex: 0 0 auto;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
min-width: 3.125rem;
|
||||
height: 1.625rem;
|
||||
padding: 0 0.5rem;
|
||||
border-radius: 31.21875rem;
|
||||
background: #4C8DFF;
|
||||
color: #fff;
|
||||
font-size: 0.875rem;
|
||||
font-weight: 800;
|
||||
}
|
||||
.notice-swiper { height: 2.25rem; flex: 1;
|
||||
.notice-swiper {
|
||||
height: 2.25rem;
|
||||
flex: 1;
|
||||
}
|
||||
.notice-item { display: flex; align-items: center; gap: 0.375rem; min-height: 2.25rem;
|
||||
.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-text {
|
||||
color: #111;
|
||||
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);
|
||||
.notice-tag {
|
||||
color: #4C8DFF;
|
||||
font-size: 0.6875rem;
|
||||
padding: 0.125rem 0.3125rem;
|
||||
border-radius: 31.21875rem;
|
||||
background: rgba(76, 141, 255, 0.18);
|
||||
}
|
||||
|
||||
|
||||
/* 分割标题 */
|
||||
.section-title { display: flex; align-items: center; gap: 0.5rem; padding: 0.3125rem 0.875rem 0;
|
||||
/* 分割标题 */
|
||||
.section-title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
padding: 0.3125rem 0.875rem 0;
|
||||
flex: 0 0 auto;
|
||||
}
|
||||
.section-title::before { content: ''; display: block; width: 0.25rem; height: 0.875rem; border-radius: 0.25rem; background: linear-gradient(180deg, #FFE69A, #D7A72E);
|
||||
.section-title::before {
|
||||
content: "";
|
||||
display: block;
|
||||
width: 0.25rem;
|
||||
height: 0.875rem;
|
||||
border-radius: 0.25rem;
|
||||
background: #4C8DFF;
|
||||
}
|
||||
.section-text { color: #6b5a2a; font-size: 0.875rem; font-weight: 700; letter-spacing: 0.03125rem;
|
||||
.section-text {
|
||||
color: #111;
|
||||
font-size: 0.9375rem;
|
||||
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;
|
||||
margin: 0.5rem 0.625rem;
|
||||
padding: 0.5625rem 0.5625rem 0.375rem;
|
||||
border-radius: 0.625rem;
|
||||
background: #ffffff;
|
||||
border: 0.0625rem solid #e5e7eb;
|
||||
box-shadow: none;
|
||||
color: #111;
|
||||
flex: 0 0 auto;
|
||||
}
|
||||
.hero-top {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 0.625rem;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 0.625rem;
|
||||
}
|
||||
.hero-sub {
|
||||
display: flex;
|
||||
gap: 0.375rem;
|
||||
margin-bottom: 0.6875rem;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.chip {
|
||||
padding: 0.25rem 0.5rem;
|
||||
border-radius: 31.21875rem;
|
||||
background: rgba(76, 141, 255, 0.1);
|
||||
color: #4C8DFF;
|
||||
font-size: 0.75rem;
|
||||
font-weight: 700;
|
||||
border: 0.0625rem solid rgba(76, 141, 255, 0.25);
|
||||
}
|
||||
.brand {
|
||||
font-size: 1.3125rem;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.0625rem;
|
||||
color: #B4880F; /* 金色标题 */
|
||||
font-size: 1.125rem;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.03125rem;
|
||||
color: #4C8DFF;
|
||||
}
|
||||
.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);
|
||||
padding: 0.25rem 0.5625rem;
|
||||
border-radius: 31.21875rem;
|
||||
background: #4C8DFF;
|
||||
border: 0.0625rem solid #4C8DFF;
|
||||
box-shadow: none;
|
||||
}
|
||||
.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;
|
||||
.cta-text {
|
||||
color: #fff;
|
||||
font-size: 0.9375rem;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.03125rem;
|
||||
}
|
||||
|
||||
/* 功能容器:整体玻璃面板,增强融入感 */
|
||||
.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);
|
||||
/* 简易弹层样式 */
|
||||
.dialog-mask {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
background: rgba(0, 0, 0, 0.45);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
z-index: 10000;
|
||||
}
|
||||
.dialog {
|
||||
width: 82vw;
|
||||
background: #fff;
|
||||
border-radius: 0.5rem;
|
||||
padding: 0.625rem;
|
||||
border: 0.0625rem solid #eef2f6;
|
||||
}
|
||||
.dialog-title {
|
||||
font-size: 1rem;
|
||||
font-weight: 800;
|
||||
color: #111;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
.dialog-textarea {
|
||||
width: 100%;
|
||||
min-height: 5.625rem;
|
||||
border: 0.0625rem solid #e8eef8;
|
||||
border-radius: 0.375rem;
|
||||
padding: 0.375rem;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.dialog-actions {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
gap: 0.5625rem;
|
||||
margin-top: 0.5rem;
|
||||
}
|
||||
.btn {
|
||||
padding: 0.3125rem 0.6875rem;
|
||||
border-radius: 31.21875rem;
|
||||
background: #f3f6fb;
|
||||
color: #334155;
|
||||
border: 0.0625rem solid #e2e8f0;
|
||||
font-weight: 700;
|
||||
}
|
||||
.btn.primary {
|
||||
background: #4C8DFF;
|
||||
color: #fff;
|
||||
border-color: #4C8DFF;
|
||||
}
|
||||
|
||||
/* 功能九宫格 */
|
||||
/* KPI 卡片化布局:横向铺满 */
|
||||
.kpi {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 0.375rem;
|
||||
}
|
||||
.kpi-item {
|
||||
text-align: center;
|
||||
background: #ffffff;
|
||||
border: 0.0625rem solid #e5e7eb;
|
||||
border-radius: 0.5rem;
|
||||
padding: 0.5rem 0.25rem;
|
||||
}
|
||||
|
||||
/* KPI 卡片(更扁平,降低高度) */
|
||||
.kpi-grid {
|
||||
gap: 0.375rem;
|
||||
}
|
||||
.kpi-card {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
justify-content: center;
|
||||
gap: 0.25rem;
|
||||
text-align: left;
|
||||
padding: 0.375rem 0.4375rem;
|
||||
border-radius: 0.4375rem;
|
||||
background: #fff;
|
||||
border: 0.0625rem solid #eef2f6;
|
||||
box-shadow: 0 0.0625rem 0.25rem rgba(0, 0, 0, 0.04);
|
||||
min-height: 3.75rem;
|
||||
}
|
||||
.kpi-icon {
|
||||
width: 1.375rem;
|
||||
height: 1.375rem;
|
||||
opacity: 0.9;
|
||||
}
|
||||
.kpi-content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.kpi-label {
|
||||
color: #6b778c;
|
||||
font-weight: 700;
|
||||
font-size: 0.75rem;
|
||||
line-height: 0.9375rem;
|
||||
}
|
||||
.kpi-value {
|
||||
color: #4C8DFF;
|
||||
font-size: 1.0625rem;
|
||||
line-height: 1.1875rem;
|
||||
margin-top: 0;
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
/* 常用功能:胶囊+阴影卡片样式的图标栅格(旧风格保留以防回退) */
|
||||
.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-row-gap: 1.125rem;
|
||||
grid-column-gap: 0.8125rem;
|
||||
padding: 1rem 0.75rem 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;
|
||||
.grid-item {
|
||||
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;
|
||||
width: 4.375rem;
|
||||
height: 4.375rem;
|
||||
border-radius: 0.875rem;
|
||||
background: #fff;
|
||||
border: 0.0625rem solid #e5e7eb;
|
||||
box-shadow: 0 0.3125rem 0.625rem rgba(0, 0, 0, 0.06);
|
||||
}
|
||||
.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;
|
||||
.grid-chip {
|
||||
margin-top: 0.375rem;
|
||||
padding: 0.1875rem 0.4375rem;
|
||||
border-radius: 31.21875rem;
|
||||
background: rgba(76, 141, 255, 0.12);
|
||||
color: #4C8DFF;
|
||||
font-size: 0.8125rem;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
/* 底部操作条:浅色半透明 + 金色主按钮 */
|
||||
/* 功能容器:更轻的留白 */
|
||||
.grid-wrap {
|
||||
flex: 1 1 auto;
|
||||
display: flex;
|
||||
align-items: stretch;
|
||||
justify-content: center;
|
||||
margin: 0.5rem 0.625rem 0.875rem;
|
||||
padding: 1rem 0.9375rem;
|
||||
border-radius: 0.8125rem;
|
||||
background: rgba(255, 255, 255, 0.96);
|
||||
border: 0.0625rem solid #edf2f9;
|
||||
box-shadow: 0 0.375rem 0.875rem rgba(32, 75, 143, 0.1);
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
/* 功能卡片宫格:方形竖排,图标在上文字在下(与截图一致) */
|
||||
.feature-grid {
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
grid-auto-rows: 1fr;
|
||||
gap: 1rem 0.875rem;
|
||||
align-content: space-evenly;
|
||||
justify-items: center;
|
||||
}
|
||||
.feature-card {
|
||||
width: 5.25rem;
|
||||
height: 5.5rem;
|
||||
background: #fff;
|
||||
border: 0.0625rem solid #eef2f6;
|
||||
border-radius: 0.625rem;
|
||||
box-shadow: 0 0.3125rem 0.75rem rgba(0, 0, 0, 0.05);
|
||||
padding: 0.5625rem 0.5rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.fc-icon {
|
||||
width: 2.4375rem;
|
||||
height: 2.4375rem;
|
||||
border-radius: 0.5625rem;
|
||||
background: #f7faff;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.fc-img {
|
||||
width: 1.6875rem;
|
||||
height: 1.6875rem;
|
||||
opacity: 0.95;
|
||||
}
|
||||
.fc-emoji {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
.fc-placeholder {
|
||||
width: 1.75rem;
|
||||
height: 1.75rem;
|
||||
border-radius: 0.375rem;
|
||||
background: #f1f1f1;
|
||||
border: 0.0625rem solid #e8eef8;
|
||||
}
|
||||
.fc-title {
|
||||
margin-top: 0.375rem;
|
||||
font-size: 0.875rem;
|
||||
font-weight: 700;
|
||||
color: #111;
|
||||
letter-spacing: 0.03125rem;
|
||||
}
|
||||
|
||||
/* 底部操作条:浅色半透明 + 金色主按钮 */
|
||||
.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;
|
||||
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 {
|
||||
flex: 1;
|
||||
text-align: center;
|
||||
color: #8a7535;
|
||||
font-size: 0.8125rem;
|
||||
}
|
||||
.tab.active { color: #B4880F;
|
||||
.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;
|
||||
}
|
||||
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.7) inset;
|
||||
}
|
||||
@@ -1,21 +1,75 @@
|
||||
|
||||
.about { padding: 0.75rem;
|
||||
/**
|
||||
* 这里是uni-app内置的常用样式变量
|
||||
*
|
||||
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
|
||||
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
|
||||
*
|
||||
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
|
||||
*/
|
||||
/* 颜色变量 */
|
||||
/* 行为相关颜色 */
|
||||
/* 藏青系主色(高亮) */
|
||||
/* 文字基本颜色 */
|
||||
/* 背景颜色 */
|
||||
/* 边框颜色 */
|
||||
/* 尺寸变量 */
|
||||
/* 文字尺寸 */
|
||||
/* 图片尺寸 */
|
||||
/* Border Radius */
|
||||
/* 水平间距 */
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.about {
|
||||
padding: 0.75rem;
|
||||
}
|
||||
.hero { padding: 1rem 0.75rem; display: flex; flex-direction: column; align-items: center; gap: 0.3125rem;
|
||||
.hero {
|
||||
padding: 1rem 0.75rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 0.3125rem;
|
||||
}
|
||||
.logo { width: 5rem; height: 5rem; border-radius: 1rem;
|
||||
.logo {
|
||||
width: 5rem;
|
||||
height: 5rem;
|
||||
border-radius: 1rem;
|
||||
}
|
||||
.title { margin-top: 0.25rem; font-size: 1.125rem; font-weight: 800; color: #333;
|
||||
.title {
|
||||
margin-top: 0.25rem;
|
||||
font-size: 1.125rem;
|
||||
font-weight: 800;
|
||||
color: #111;
|
||||
}
|
||||
.subtitle { font-size: 0.8125rem; color: #888;
|
||||
.subtitle {
|
||||
font-size: 0.8125rem;
|
||||
color: #444;
|
||||
}
|
||||
.card { margin-top: 0.5625rem; background: #fff; border-radius: 0.5rem; overflow: hidden;
|
||||
.card {
|
||||
margin-top: 0.5625rem;
|
||||
background: #ffffff;
|
||||
border-radius: 0.5rem;
|
||||
overflow: hidden;
|
||||
}
|
||||
.row { display: flex; align-items: center; padding: 0.75rem; border-top: 0.03125rem solid #f2f2f2;
|
||||
.row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0.75rem;
|
||||
border-top: 0.03125rem solid #e5e7eb;
|
||||
}
|
||||
.label { color: #666;
|
||||
.label {
|
||||
color: #444;
|
||||
}
|
||||
.value { margin-left: auto; color: #333;
|
||||
}
|
||||
.link { margin-left: auto; color: #1aad19;
|
||||
.value {
|
||||
margin-left: auto;
|
||||
color: #111;
|
||||
}
|
||||
.link {
|
||||
margin-left: auto;
|
||||
color: #4C8DFF;
|
||||
}
|
||||
@@ -1,27 +1,254 @@
|
||||
/**
|
||||
* 这里是uni-app内置的常用样式变量
|
||||
*
|
||||
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
|
||||
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
|
||||
*
|
||||
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
|
||||
*/
|
||||
/* 颜色变量 */
|
||||
/* 行为相关颜色 */
|
||||
/* 藏青系主色(高亮) */
|
||||
/* 文字基本颜色 */
|
||||
/* 背景颜色 */
|
||||
/* 边框颜色 */
|
||||
/* 尺寸变量 */
|
||||
/* 文字尺寸 */
|
||||
/* 图片尺寸 */
|
||||
/* Border Radius */
|
||||
/* 水平间距 */
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.me {
|
||||
padding: 0.75rem;
|
||||
}
|
||||
.card.login {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.5rem;
|
||||
padding: 0.6875rem;
|
||||
background: #ffffff;
|
||||
border-radius: 0.5rem;
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
.login-title {
|
||||
font-size: 0.875rem;
|
||||
font-weight: 700;
|
||||
}
|
||||
.login-btn.minor {
|
||||
background: #f1f1f1;
|
||||
color: #111;
|
||||
}
|
||||
.hint {
|
||||
font-size: 0.6875rem;
|
||||
color: #444;
|
||||
}
|
||||
.card.user {
|
||||
display: flex;
|
||||
gap: 0.5625rem;
|
||||
padding: 0.6875rem;
|
||||
background: #ffffff;
|
||||
border-radius: 0.5rem;
|
||||
box-shadow: 0 0.1875rem 0.5rem rgba(0, 0, 0, 0.16);
|
||||
align-items: center;
|
||||
}
|
||||
.card.user.guest {
|
||||
justify-content: space-between;
|
||||
}
|
||||
.card.user.guest .meta {
|
||||
flex: 1;
|
||||
}
|
||||
.card.user.guest .login-entry {
|
||||
padding: 0.375rem 0.9375rem;
|
||||
border-radius: 31.21875rem;
|
||||
background: #4C8DFF;
|
||||
color: #fff;
|
||||
font-size: 0.875rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
.avatar {
|
||||
width: 3.75rem;
|
||||
height: 3.75rem;
|
||||
border-radius: 1.875rem;
|
||||
background: #f1f1f1;
|
||||
}
|
||||
.meta {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.1875rem;
|
||||
}
|
||||
.name {
|
||||
font-size: 1.0625rem;
|
||||
font-weight: 700;
|
||||
color: #111;
|
||||
}
|
||||
.phone {
|
||||
font-size: 0.8125rem;
|
||||
color: #444;
|
||||
}
|
||||
.role {
|
||||
font-size: 0.6875rem;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.me { padding: 0.75rem;
|
||||
/* VIP 卡片样式 */
|
||||
.card.vip {
|
||||
margin-top: 0.75rem;
|
||||
padding: 0.6875rem;
|
||||
background: #ffffff;
|
||||
border-radius: 0.5rem;
|
||||
box-shadow: 0 0.1875rem 0.5rem rgba(0, 0, 0, 0.12);
|
||||
}
|
||||
.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;
|
||||
.card.vip.active {
|
||||
border: 0.03125rem solid rgba(255, 208, 0, 0.6);
|
||||
background-image: radial-gradient(60% 60% at 80% 0%, rgba(255, 214, 0, 0.08), transparent 60%);
|
||||
}
|
||||
.avatar { width: 3.75rem; height: 3.75rem; border-radius: 1.875rem; background: #f5f5f5;
|
||||
.vip-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.375rem;
|
||||
margin-bottom: 0.3125rem;
|
||||
}
|
||||
.meta { display: flex; flex-direction: column; gap: 0.1875rem;
|
||||
.vip-badge {
|
||||
background: #f1c40f;
|
||||
color: #111;
|
||||
font-weight: 800;
|
||||
padding: 0.0625rem 0.3125rem;
|
||||
border-radius: 0.25rem;
|
||||
font-size: 0.6875rem;
|
||||
}
|
||||
.name { font-size: 1.0625rem; font-weight: 700; color: #333;
|
||||
.vip-title {
|
||||
font-size: 0.875rem;
|
||||
font-weight: 700;
|
||||
color: #111;
|
||||
}
|
||||
.phone { font-size: 0.8125rem; color: #888;
|
||||
.vip-meta {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: 0.25rem 0.5rem;
|
||||
}
|
||||
.role { font-size: 0.6875rem; color: #999;
|
||||
.vip-meta .item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.3125rem;
|
||||
}
|
||||
.group { margin-top: 0.75rem; background: #fff; border-radius: 0.5rem; overflow: hidden;
|
||||
.vip-meta .label {
|
||||
width: 2.5rem;
|
||||
color: #444;
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
.group-title { padding: 0.5625rem 0.6875rem; font-size: 0.8125rem; color: #999; background: #fafafa;
|
||||
.vip-meta .value {
|
||||
color: #111;
|
||||
font-size: 0.8125rem;
|
||||
word-break: break-all;
|
||||
}
|
||||
.cell { display: flex; align-items: center; padding: 0.8125rem 0.6875rem; border-top: 0.03125rem solid #f0f0f0; color: #333;
|
||||
.group {
|
||||
margin-top: 0.75rem;
|
||||
background: #ffffff;
|
||||
border-radius: 0.5rem;
|
||||
overflow: hidden;
|
||||
}
|
||||
.cell .desc { margin-left: auto; margin-right: 0.25rem; font-size: 0.6875rem; color: #999;
|
||||
.group-title {
|
||||
padding: 0.5625rem 0.6875rem;
|
||||
font-size: 0.8125rem;
|
||||
color: #444;
|
||||
background: #f1f1f1;
|
||||
}
|
||||
.cell .arrow { margin-left: auto; color: #bbb;
|
||||
.cell {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0.8125rem 0.6875rem;
|
||||
border-top: 0.03125rem solid #e5e7eb;
|
||||
color: #111;
|
||||
gap: 0.5625rem;
|
||||
}
|
||||
.cell.danger { color: #dd524d; justify-content: center; font-weight: 700;
|
||||
.cell-left {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.4375rem;
|
||||
}
|
||||
.vip-tag {
|
||||
padding: 0.125rem 0.375rem;
|
||||
border-radius: 31.21875rem;
|
||||
background: rgba(76, 141, 255, 0.15);
|
||||
color: #4C8DFF;
|
||||
font-size: 0.6875rem;
|
||||
}
|
||||
.vip-tag.pending {
|
||||
background: rgba(76, 141, 255, 0.06);
|
||||
color: #99a2b3;
|
||||
}
|
||||
.cell .desc {
|
||||
margin-left: auto;
|
||||
margin-right: 0.25rem;
|
||||
font-size: 0.6875rem;
|
||||
color: #444;
|
||||
}
|
||||
.cell .arrow {
|
||||
margin-left: auto;
|
||||
color: #99a2b3;
|
||||
}
|
||||
.cell.danger {
|
||||
color: #dd524d;
|
||||
justify-content: center;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
/* 简易对话框样式 */
|
||||
.dialog-mask {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
background: rgba(0, 0, 0, 0.45);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
z-index: 999;
|
||||
}
|
||||
.dialog {
|
||||
width: 18.75rem;
|
||||
background: #fff;
|
||||
border-radius: 0.5rem;
|
||||
padding: 0.75rem;
|
||||
box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
.dialog-title {
|
||||
font-size: 0.9375rem;
|
||||
font-weight: 700;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
.dialog-input {
|
||||
width: 100%;
|
||||
height: 2.25rem;
|
||||
padding: 0 0.5rem;
|
||||
border: 0.03125rem solid #e5e7eb;
|
||||
border-radius: 0.3125rem;
|
||||
background: #fff;
|
||||
color: #111;
|
||||
}
|
||||
.dialog-actions {
|
||||
display: flex;
|
||||
gap: 0.5rem;
|
||||
margin-top: 0.5625rem;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
.dialog-btn {
|
||||
padding: 0.5rem 0.6875rem;
|
||||
border-radius: 0.3125rem;
|
||||
}
|
||||
.dialog-btn.cancel {
|
||||
background: #f1f1f1;
|
||||
color: #111;
|
||||
}
|
||||
.dialog-btn.confirm {
|
||||
background: #2979ff;
|
||||
color: #fff;
|
||||
}
|
||||
73
frontend/unpackage/dist/dev/app-plus/pages/my/orders.css
vendored
Normal file
@@ -0,0 +1,73 @@
|
||||
/**
|
||||
* 这里是uni-app内置的常用样式变量
|
||||
*
|
||||
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
|
||||
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
|
||||
*
|
||||
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
|
||||
*/
|
||||
/* 颜色变量 */
|
||||
/* 行为相关颜色 */
|
||||
/* 藏青系主色(高亮) */
|
||||
/* 文字基本颜色 */
|
||||
/* 背景颜色 */
|
||||
/* 边框颜色 */
|
||||
/* 尺寸变量 */
|
||||
/* 文字尺寸 */
|
||||
/* 图片尺寸 */
|
||||
/* Border Radius */
|
||||
/* 水平间距 */
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.orders {
|
||||
padding: 0.5rem 0.5rem calc(env(safe-area-inset-bottom) + 0.5rem);
|
||||
}
|
||||
.hint {
|
||||
color: #444;
|
||||
padding: 0.75rem;
|
||||
text-align: center;
|
||||
}
|
||||
.item {
|
||||
background: #fff;
|
||||
border: 0.03125rem solid #e5e7eb;
|
||||
border-radius: 0.5rem;
|
||||
padding: 0.5625rem;
|
||||
margin: 0.375rem 0;
|
||||
}
|
||||
.row1 {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 0.1875rem;
|
||||
}
|
||||
.price {
|
||||
color: #111;
|
||||
font-weight: 800;
|
||||
font-size: 1.0625rem;
|
||||
}
|
||||
.channel {
|
||||
color: #666;
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
.row2 {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
color: #666;
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
.row3 {
|
||||
margin-top: 0.1875rem;
|
||||
color: #4C8DFF;
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
.empty {
|
||||
text-align: center;
|
||||
color: #999;
|
||||
padding: 1.25rem 0;
|
||||
}
|
||||
99
frontend/unpackage/dist/dev/app-plus/pages/my/security.css
vendored
Normal file
@@ -0,0 +1,99 @@
|
||||
/**
|
||||
* 这里是uni-app内置的常用样式变量
|
||||
*
|
||||
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
|
||||
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
|
||||
*
|
||||
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
|
||||
*/
|
||||
/* 颜色变量 */
|
||||
/* 行为相关颜色 */
|
||||
/* 藏青系主色(高亮) */
|
||||
/* 文字基本颜色 */
|
||||
/* 背景颜色 */
|
||||
/* 边框颜色 */
|
||||
/* 尺寸变量 */
|
||||
/* 文字尺寸 */
|
||||
/* 图片尺寸 */
|
||||
/* Border Radius */
|
||||
/* 水平间距 */
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.security {
|
||||
padding: 0.75rem;
|
||||
}
|
||||
.card {
|
||||
background: #ffffff;
|
||||
border-radius: 0.5rem;
|
||||
padding: 0.6875rem;
|
||||
margin-bottom: 0.75rem;
|
||||
box-shadow: 0 0.1875rem 0.5rem rgba(0, 0, 0, 0.08);
|
||||
}
|
||||
.cell {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
padding: 0.625rem 0;
|
||||
border-bottom: 0.03125rem solid #e5e7eb;
|
||||
}
|
||||
.cell:last-of-type {
|
||||
border-bottom: none;
|
||||
}
|
||||
.cell-label {
|
||||
flex: 1;
|
||||
font-size: 0.875rem;
|
||||
color: #111;
|
||||
}
|
||||
.cell-input {
|
||||
flex: 2;
|
||||
height: 2.25rem;
|
||||
padding: 0 0.5rem;
|
||||
border: 0.03125rem solid #e5e7eb;
|
||||
border-radius: 0.3125rem;
|
||||
background: #fff;
|
||||
color: #111;
|
||||
}
|
||||
.avatar-preview {
|
||||
width: 3.125rem;
|
||||
height: 3.125rem;
|
||||
border-radius: 0.5rem;
|
||||
background: #f1f1f1;
|
||||
}
|
||||
.arrow {
|
||||
margin-left: 0.375rem;
|
||||
color: #99a2b3;
|
||||
font-size: 1rem;
|
||||
}
|
||||
.row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
.label {
|
||||
width: 5rem;
|
||||
color: #111;
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
.input {
|
||||
flex: 1;
|
||||
height: 2.25rem;
|
||||
padding: 0 0.5rem;
|
||||
border: 0.03125rem solid #e5e7eb;
|
||||
border-radius: 0.3125rem;
|
||||
background: #fff;
|
||||
color: #111;
|
||||
}
|
||||
.btn {
|
||||
margin-top: 0.25rem;
|
||||
}
|
||||
.btn.minor {
|
||||
background: #f1f1f1;
|
||||
color: #111;
|
||||
}
|
||||
289
frontend/unpackage/dist/dev/app-plus/pages/my/vip.css
vendored
Normal file
@@ -0,0 +1,289 @@
|
||||
/**
|
||||
* 这里是uni-app内置的常用样式变量
|
||||
*
|
||||
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
|
||||
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
|
||||
*
|
||||
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
|
||||
*/
|
||||
/* 颜色变量 */
|
||||
/* 行为相关颜色 */
|
||||
/* 藏青系主色(高亮) */
|
||||
/* 文字基本颜色 */
|
||||
/* 背景颜色 */
|
||||
/* 边框颜色 */
|
||||
/* 尺寸变量 */
|
||||
/* 文字尺寸 */
|
||||
/* 图片尺寸 */
|
||||
/* Border Radius */
|
||||
/* 水平间距 */
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
body {
|
||||
background: linear-gradient(180deg, #f8fbff 0%, #ffffff 60%) !important;
|
||||
}
|
||||
.vip-page {
|
||||
min-height: 100vh;
|
||||
padding: 1rem 0.75rem 3.75rem;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.875rem;
|
||||
}
|
||||
.vip-hero {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.625rem;
|
||||
padding: 0.8125rem 0.875rem;
|
||||
border-radius: 0.75rem;
|
||||
background: rgba(255, 255, 255, 0.98);
|
||||
border: 0.0625rem solid #edf2f9;
|
||||
box-shadow: 0 0.3125rem 0.9375rem rgba(76, 141, 255, 0.12);
|
||||
}
|
||||
.hero-icon {
|
||||
width: 2.75rem;
|
||||
height: 2.75rem;
|
||||
border-radius: 0.75rem;
|
||||
background: #f0f6ff;
|
||||
padding: 0.375rem;
|
||||
}
|
||||
.hero-text {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.25rem;
|
||||
}
|
||||
.hero-title {
|
||||
font-size: 1.125rem;
|
||||
font-weight: 800;
|
||||
color: #4C8DFF;
|
||||
letter-spacing: 0.03125rem;
|
||||
}
|
||||
.hero-subtitle {
|
||||
font-size: 0.8125rem;
|
||||
color: #5175b5;
|
||||
line-height: 1.125rem;
|
||||
}
|
||||
.status-pill {
|
||||
flex: 0 0 auto;
|
||||
padding: 0.375rem 0.625rem;
|
||||
border-radius: 31.21875rem;
|
||||
background: #e6edfb;
|
||||
color: #4463a6;
|
||||
font-size: 0.75rem;
|
||||
font-weight: 700;
|
||||
border: 0.0625rem solid rgba(76, 141, 255, 0.2);
|
||||
}
|
||||
.status-pill.active {
|
||||
background: #4c8dff;
|
||||
color: #fff;
|
||||
border-color: #4c8dff;
|
||||
}
|
||||
|
||||
/* 指定 hero 内激活态徽标文本为黑色 */
|
||||
.vip-hero .status-pill.active uni-text {
|
||||
color: #000 !important;
|
||||
}
|
||||
.vip-summary {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 0.5rem;
|
||||
background: rgba(255, 255, 255, 0.98);
|
||||
padding: 0.75rem;
|
||||
border-radius: 0.75rem;
|
||||
border: 0.0625rem solid #eef3fb;
|
||||
box-shadow: 0 0.25rem 0.75rem rgba(99, 132, 191, 0.1);
|
||||
}
|
||||
.summary-item {
|
||||
background: #f6f9ff;
|
||||
border-radius: 0.5625rem;
|
||||
padding: 0.6875rem 0.75rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.375rem;
|
||||
border: 0.0625rem solid rgba(76, 141, 255, 0.12);
|
||||
}
|
||||
.summary-label {
|
||||
font-size: 0.75rem;
|
||||
color: #5f7394;
|
||||
}
|
||||
.summary-value {
|
||||
font-size: 0.9375rem;
|
||||
font-weight: 700;
|
||||
color: #1f2c3d;
|
||||
}
|
||||
.summary-value.success {
|
||||
color: #1ead91;
|
||||
}
|
||||
.summary-value.highlight {
|
||||
color: #2f58d1;
|
||||
}
|
||||
.benefit-section {
|
||||
background: rgba(255, 255, 255, 0.98);
|
||||
border-radius: 0.75rem;
|
||||
padding: 0.875rem;
|
||||
border: 0.0625rem solid #edf2f9;
|
||||
box-shadow: 0 0.375rem 0.875rem rgba(32, 75, 143, 0.1);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.75rem;
|
||||
}
|
||||
.section-header {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.25rem;
|
||||
}
|
||||
.section-title {
|
||||
font-size: 1.0625rem;
|
||||
font-weight: 800;
|
||||
color: #111;
|
||||
}
|
||||
.section-subtitle {
|
||||
font-size: 0.75rem;
|
||||
color: #5f7394;
|
||||
line-height: 1.0625rem;
|
||||
}
|
||||
.benefit-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
gap: 0.625rem;
|
||||
}
|
||||
.benefit-card {
|
||||
background: #f7faff;
|
||||
border-radius: 0.625rem;
|
||||
padding: 0.75rem 0.625rem;
|
||||
border: 0.0625rem solid rgba(76, 141, 255, 0.12);
|
||||
box-shadow: 0 0.25rem 0.625rem rgba(0, 0, 0, 0.04);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
gap: 0.4375rem;
|
||||
}
|
||||
.benefit-icon {
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
}
|
||||
.benefit-title {
|
||||
font-size: 0.875rem;
|
||||
font-weight: 700;
|
||||
color: #111;
|
||||
}
|
||||
.benefit-desc {
|
||||
font-size: 0.75rem;
|
||||
line-height: 1.0625rem;
|
||||
color: #5f7394;
|
||||
}
|
||||
.purchase-card {
|
||||
margin-top: auto;
|
||||
background: linear-gradient(135deg, rgba(76, 141, 255, 0.14) 0%, rgba(76, 141, 255, 0.06) 100%);
|
||||
border-radius: 0.875rem;
|
||||
padding: 0.9375rem 0.875rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.75rem;
|
||||
border: 0.0625rem solid rgba(76, 141, 255, 0.18);
|
||||
box-shadow: 0 0.3125rem 0.75rem rgba(76, 141, 255, 0.15);
|
||||
}
|
||||
.purchase-text {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.3125rem;
|
||||
}
|
||||
.purchase-title {
|
||||
font-size: 1rem;
|
||||
font-weight: 800;
|
||||
color: #4C8DFF;
|
||||
}
|
||||
.purchase-desc {
|
||||
font-size: 0.75rem;
|
||||
color: #4463a6;
|
||||
line-height: 1.0625rem;
|
||||
}
|
||||
.purchase-btn {
|
||||
flex: 0 0 auto;
|
||||
padding: 0.625rem 1.125rem;
|
||||
border-radius: 31.21875rem;
|
||||
border: none;
|
||||
background: linear-gradient(135deg, #4788ff 0%, #2d6be6 100%);
|
||||
color: #fff;
|
||||
font-size: 0.875rem;
|
||||
font-weight: 700;
|
||||
box-shadow: 0 0.3125rem 0.6875rem rgba(45, 107, 230, 0.2);
|
||||
}
|
||||
.purchase-btn:active {
|
||||
opacity: 0.88;
|
||||
}
|
||||
.apply-card {
|
||||
margin-top: 0;
|
||||
background: linear-gradient(135deg, rgba(30, 173, 145, 0.14) 0%, rgba(30, 173, 145, 0.06) 100%);
|
||||
border-radius: 0.875rem;
|
||||
padding: 0.9375rem 0.875rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.75rem;
|
||||
border: 0.0625rem solid rgba(30, 173, 145, 0.18);
|
||||
box-shadow: 0 0.3125rem 0.75rem rgba(30, 173, 145, 0.15);
|
||||
}
|
||||
.apply-text {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.3125rem;
|
||||
}
|
||||
.apply-title {
|
||||
font-size: 1rem;
|
||||
font-weight: 800;
|
||||
color: #1ead91;
|
||||
}
|
||||
.apply-desc {
|
||||
font-size: 0.75rem;
|
||||
color: #247a66;
|
||||
line-height: 1.0625rem;
|
||||
}
|
||||
.apply-btn {
|
||||
flex: 0 0 auto;
|
||||
padding: 0.625rem 1.125rem;
|
||||
border-radius: 31.21875rem;
|
||||
border: none;
|
||||
background-color: transparent;
|
||||
background: linear-gradient(135deg, #1ead91 0%, #159b7e 100%);
|
||||
color: #fff;
|
||||
font-size: 0.875rem;
|
||||
font-weight: 700;
|
||||
box-shadow: 0 0.3125rem 0.6875rem rgba(21, 155, 126, 0.2);
|
||||
}
|
||||
.apply-btn::after {
|
||||
border: none;
|
||||
}
|
||||
.apply-btn:active {
|
||||
opacity: 0.9;
|
||||
}
|
||||
.apply-btn.disabled {
|
||||
opacity: 0.5;
|
||||
background: #c7e8df;
|
||||
color: #fff;
|
||||
box-shadow: none;
|
||||
pointer-events: none;
|
||||
}
|
||||
@media (max-width: 375px) {
|
||||
.vip-summary {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
.benefit-grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
.purchase-card {
|
||||
flex-direction: column;
|
||||
align-items: stretch;
|
||||
}
|
||||
.status-pill {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@@ -1,59 +1,281 @@
|
||||
/**
|
||||
* 这里是uni-app内置的常用样式变量
|
||||
*
|
||||
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
|
||||
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
|
||||
*
|
||||
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
|
||||
*/
|
||||
/* 颜色变量 */
|
||||
/* 行为相关颜色 */
|
||||
/* 藏青系主色(高亮) */
|
||||
/* 文字基本颜色 */
|
||||
/* 背景颜色 */
|
||||
/* 边框颜色 */
|
||||
/* 尺寸变量 */
|
||||
/* 文字尺寸 */
|
||||
/* 图片尺寸 */
|
||||
/* Border Radius */
|
||||
/* 水平间距 */
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.order {
|
||||
padding-bottom: 4.375rem;
|
||||
}
|
||||
.tabs {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
padding: 0.5rem 0.75rem;
|
||||
}
|
||||
.tabs uni-text {
|
||||
color: #444;
|
||||
}
|
||||
.tabs uni-text.active {
|
||||
color: #111;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.order { padding-bottom: 4.375rem;
|
||||
/* 三段式胶囊切换 */
|
||||
.seg3 {
|
||||
display: flex;
|
||||
gap: 0;
|
||||
margin: 0.375rem 0.5rem;
|
||||
padding: 0.1875rem;
|
||||
background: #fff;
|
||||
border-radius: 31.21875rem;
|
||||
box-shadow: 0 0.125rem 0.375rem rgba(0, 0, 0, 0.04);
|
||||
}
|
||||
.tabs { display: flex; justify-content: space-around; padding: 0.5rem 0.75rem;
|
||||
.seg3-item {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 0.25rem;
|
||||
padding: 0.375rem 0;
|
||||
color: #111;
|
||||
border-radius: 31.21875rem;
|
||||
transition: box-shadow 0.2s ease, background 0.2s ease;
|
||||
}
|
||||
.tabs uni-text { color: #666;
|
||||
|
||||
/* 间隔通过内边距处理,避免空选择器 */
|
||||
.seg3-item.active {
|
||||
background: #fff;
|
||||
color: #4C8DFF;
|
||||
box-shadow: 0 0.09375rem 0.3125rem rgba(76, 141, 255, 0.16);
|
||||
}
|
||||
.tabs uni-text.active { color: #333; font-weight: 700;
|
||||
.seg3-icon {
|
||||
width: 0.875rem;
|
||||
height: 0.875rem;
|
||||
opacity: 0.9;
|
||||
}
|
||||
.subtabs { display: flex; gap: 0.5rem; padding: 0 0.75rem 0.5rem;
|
||||
.field {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
padding: 0.6875rem 0.75rem;
|
||||
background: #f8faff;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
.subbtn { padding: 0.3125rem 0.625rem; border-radius: 31.21875rem; background: #f4f4f4; color: #666;
|
||||
.label {
|
||||
width: 5rem;
|
||||
color: #444;
|
||||
}
|
||||
.subbtn.active { background: #ffe69a; color: #3f320f;
|
||||
.value {
|
||||
flex: 1;
|
||||
color: #111;
|
||||
text-align: right;
|
||||
}
|
||||
.field { display:flex; justify-content: space-between; padding: 0.6875rem 0.75rem; background: #fff; border-bottom: 0.03125rem solid #eee;
|
||||
|
||||
/* 汇总卡片:白底卡片+主色按钮 */
|
||||
.summary {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 0.5625rem 0.625rem;
|
||||
margin: 0.5rem 0.5625rem 0.3125rem;
|
||||
background: none;
|
||||
border-radius: 0.5625rem;
|
||||
color: #111;
|
||||
}
|
||||
.label { color:#666;
|
||||
|
||||
/* 加号改为图标按钮 */
|
||||
.add {
|
||||
margin: 0.75rem auto 0.5625rem;
|
||||
width: 3.75rem;
|
||||
height: 3.75rem;
|
||||
border-radius: 0.875rem;
|
||||
background: none;
|
||||
border: 0;
|
||||
color: #4C8DFF;
|
||||
font-size: 2.25rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
box-shadow: none;
|
||||
}
|
||||
.value { color:#333;
|
||||
.empty {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
padding: 1.875rem 0;
|
||||
color: #444;
|
||||
}
|
||||
.summary { display:flex; justify-content: space-between; padding: 0.6875rem 0.75rem; color:#333;
|
||||
.empty-img {
|
||||
width: 5rem;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
.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-text {
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
.empty { display:flex; flex-direction: column; align-items:center; padding: 1.875rem 0; color:#888;
|
||||
.list {
|
||||
background: #fff;
|
||||
margin: 0 0.5625rem 0.625rem;
|
||||
border-radius: 0.5625rem;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.06);
|
||||
}
|
||||
.empty-img { width: 6.875rem; margin-bottom: 0.625rem;
|
||||
.row {
|
||||
display: grid;
|
||||
grid-template-columns: 1.5fr 1fr 1fr 1fr;
|
||||
gap: 0.375rem;
|
||||
padding: 0.5625rem 0.5rem;
|
||||
align-items: center;
|
||||
}
|
||||
.empty-text { margin-bottom: 0.25rem;
|
||||
.col.name {
|
||||
padding-left: 0.375rem;
|
||||
}
|
||||
.list { background:#fff;
|
||||
.col.amount {
|
||||
text-align: right;
|
||||
padding-right: 0.375rem;
|
||||
color: #111;
|
||||
}
|
||||
.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;
|
||||
.bottom {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: #ffffff;
|
||||
padding: 0.1875rem 0.5625rem calc(env(safe-area-inset-bottom) + 0.0625rem);
|
||||
box-shadow: 0 -0.125rem 0.375rem rgba(0, 0, 0, 0.16);
|
||||
}
|
||||
.col.name { padding-left: 0.375rem;
|
||||
.order .bottom uni-button {
|
||||
margin: 0;
|
||||
}
|
||||
.col.amount { text-align:right; padding-right: 0.375rem; color:#333;
|
||||
|
||||
/* 仅限开单页底部按钮样式(缩小高度) */
|
||||
.order .bottom .primary {
|
||||
width: 100%;
|
||||
background: #4C8DFF;
|
||||
color: #fff;
|
||||
border-radius: 31.21875rem;
|
||||
padding: 0.4375rem 0;
|
||||
font-weight: 700;
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
.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);
|
||||
.order .bottom .ghost {
|
||||
background: transparent;
|
||||
color: #4C8DFF;
|
||||
border: 0;
|
||||
border-radius: 31.21875rem;
|
||||
padding: 0.375rem 0;
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
.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: #111;
|
||||
}
|
||||
/* 收款/付款页样式 */
|
||||
.pay-row .pay-input { text-align: right; color:#333;
|
||||
.textarea {
|
||||
position: relative;
|
||||
padding: 0.5rem 0.75rem;
|
||||
background: #f8faff;
|
||||
}
|
||||
.textarea { position: relative; padding: 0.5rem 0.75rem; background:#fff; border-top: 0.03125rem solid #eee;
|
||||
.amount-badge {
|
||||
position: absolute;
|
||||
right: 0.75rem;
|
||||
top: -1rem;
|
||||
background: #4C8DFF;
|
||||
color: #fff;
|
||||
padding: 0.3125rem 0.625rem;
|
||||
border-radius: 0.4375rem;
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
.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: #444;
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
.date-mini { position: absolute; right: 0.75rem; bottom: 0.625rem; color:#666; font-size: 0.75rem;
|
||||
|
||||
/* 分类chips样式:选中后文字变红 */
|
||||
.chips {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 0.375rem 0.5rem;
|
||||
padding: 0.375rem 0.75rem;
|
||||
}
|
||||
/* 分类chips样式:选中后文字变红 */
|
||||
.chips { display:flex; flex-wrap: wrap; gap: 0.375rem; padding: 0.375rem 0.75rem;
|
||||
.chip {
|
||||
padding: 0.375rem 0.625rem;
|
||||
border-radius: 31.21875rem;
|
||||
background: #f1f1f1;
|
||||
color: #444;
|
||||
text-align: center;
|
||||
}
|
||||
.chip { padding: 0.3125rem 0.625rem; border-radius: 31.21875rem; background: #f4f4f4; color:#666;
|
||||
.chip.active {
|
||||
background: rgba(76, 141, 255, 0.15);
|
||||
color: #4C8DFF;
|
||||
}
|
||||
.chip.active { color: #e54d42;
|
||||
|
||||
/* 顶部业务 Tabs 显示 */
|
||||
/* 快捷操作宫格 */
|
||||
/* 信息卡片式表达(更稳重) */
|
||||
.info-card {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr auto;
|
||||
gap: 0.3125rem;
|
||||
margin: 0.3125rem 0.375rem 0;
|
||||
background: transparent;
|
||||
padding: 0;
|
||||
align-items: center;
|
||||
}
|
||||
.info-field {
|
||||
background: #fff;
|
||||
border: 0;
|
||||
border-radius: 0.4375rem;
|
||||
padding: 0.375rem 0.4375rem;
|
||||
box-shadow: 0 0.1875rem 0.5rem rgba(0, 0, 0, 0.06);
|
||||
}
|
||||
.info-label {
|
||||
color: #444;
|
||||
font-size: 0.75rem;
|
||||
margin-right: 0.25rem;
|
||||
}
|
||||
.info-value {
|
||||
color: #111;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
/* 缩小“加商品”按钮尺寸,仅在本页卡片内 */
|
||||
.order .info-card .info-action {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.1875rem;
|
||||
background: #4C8DFF;
|
||||
color: #fff;
|
||||
border-radius: 0.375rem;
|
||||
padding: 0.25rem 0.375rem;
|
||||
box-shadow: 0 0.15625rem 0.375rem rgba(76, 141, 255, 0.18);
|
||||
font-size: 0.8125rem;
|
||||
}
|
||||
.order .info-card .info-icon {
|
||||
width: 0.75rem;
|
||||
height: 0.75rem;
|
||||
}
|
||||
@@ -9,25 +9,169 @@
|
||||
}
|
||||
.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;
|
||||
.remove[data-v-7bd1ddd2] { position: absolute; right: 0.1875rem; top: 0.1875rem; width: 1.3125rem; height: 1.3125rem;
|
||||
}
|
||||
.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;
|
||||
/**
|
||||
* 这里是uni-app内置的常用样式变量
|
||||
*
|
||||
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
|
||||
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
|
||||
*
|
||||
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
|
||||
*/
|
||||
/* 颜色变量 */
|
||||
/* 行为相关颜色 */
|
||||
/* 藏青系主色(高亮) */
|
||||
/* 文字基本颜色 */
|
||||
/* 背景颜色 */
|
||||
/* 边框颜色 */
|
||||
/* 尺寸变量 */
|
||||
/* 文字尺寸 */
|
||||
/* 图片尺寸 */
|
||||
/* Border Radius */
|
||||
/* 水平间距 */
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.page {
|
||||
background: #ffffff;
|
||||
min-height: 100vh;
|
||||
padding-bottom: 5rem;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.card { background:#fff; margin: 0.5rem; padding: 0.5rem; border-radius: 0.375rem;
|
||||
.hero.small {
|
||||
margin: 0.6875rem 0.75rem 0.375rem;
|
||||
padding: 0 0.125rem 0.5625rem;
|
||||
color: #111;
|
||||
border-bottom: 0.0625rem solid rgba(94, 124, 174, 0.12);
|
||||
}
|
||||
.row { display:flex; gap: 0.375rem; align-items: center; margin-bottom: 0.375rem;
|
||||
.hero.small .title {
|
||||
font-size: 1.0625rem;
|
||||
font-weight: 800;
|
||||
}
|
||||
.label { width: 5.625rem; color:#666;
|
||||
.hero.small .sub {
|
||||
display: block;
|
||||
margin-top: 0.1875rem;
|
||||
color: #444;
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
.row uni-input { flex:1; background:#f7f7f7; border-radius: 0.3125rem; padding: 0.375rem;
|
||||
.section {
|
||||
margin: 0 0.75rem 0.875rem;
|
||||
padding-bottom: 0.1875rem;
|
||||
border-bottom: 0.0625rem solid rgba(94, 124, 174, 0.1);
|
||||
}
|
||||
.picker { padding: 0.25rem 0.375rem; background:#f0f0f0; border-radius: 0.3125rem; color:#666; margin-left: 0.25rem;
|
||||
.section:last-of-type {
|
||||
border-bottom: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.prices uni-input { width: 30%;
|
||||
.section .row:first-child .label {
|
||||
font-weight: 700;
|
||||
color: #111;
|
||||
}
|
||||
.fixed { position: fixed; left: 0; right: 0; bottom: 0; background:#fff; padding: 0.375rem 0.5rem; display:flex; gap: 0.5rem;
|
||||
.row {
|
||||
display: flex;
|
||||
gap: 0.25rem;
|
||||
align-items: center;
|
||||
margin-top: 0.5625rem;
|
||||
}
|
||||
.row .input-long {
|
||||
flex: 1.2;
|
||||
}
|
||||
.row:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
.label {
|
||||
width: 4.6875rem;
|
||||
color: #444;
|
||||
font-size: 0.8125rem;
|
||||
}
|
||||
.row uni-input {
|
||||
flex: 1;
|
||||
background: #f7f9fc;
|
||||
border-radius: 0.4375rem;
|
||||
padding: 0.5625rem 0.625rem;
|
||||
color: #111;
|
||||
border: 0;
|
||||
box-shadow: inset 0 0 0 0.0625rem rgba(134, 155, 191, 0.06);
|
||||
}
|
||||
.picker-btn {
|
||||
background: #ffffff;
|
||||
border: 0.0625rem solid rgba(76, 141, 255, 0.45);
|
||||
color: #4C8DFF;
|
||||
padding: 0 0.75rem;
|
||||
border-radius: 31.21875rem;
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
.picker {
|
||||
padding: 0.5rem 0.6875rem;
|
||||
background: #f7f9fc;
|
||||
border-radius: 0.4375rem;
|
||||
color: #444;
|
||||
margin-left: 0.25rem;
|
||||
border: 0;
|
||||
box-shadow: inset 0 0 0 0.0625rem rgba(134, 155, 191, 0.06);
|
||||
}
|
||||
.prices uni-input {
|
||||
width: 30%;
|
||||
}
|
||||
.section uni-textarea {
|
||||
width: 100%;
|
||||
min-height: 5rem;
|
||||
background: #f7f9fc;
|
||||
border-radius: 0.4375rem;
|
||||
padding: 0.625rem 0.6875rem;
|
||||
box-sizing: border-box;
|
||||
color: #111;
|
||||
border: 0;
|
||||
box-shadow: inset 0 0 0 0.0625rem rgba(134, 155, 191, 0.06);
|
||||
}
|
||||
.fixed {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: env(safe-area-inset-bottom);
|
||||
background: #ffffff;
|
||||
padding: 0.5rem 0.5rem calc(0.5rem + constant(safe-area-inset-bottom)) 0.5rem;
|
||||
display: flex;
|
||||
gap: 0.5rem;
|
||||
box-shadow: 0 -0.1875rem 0.5625rem rgba(24, 55, 105, 0.08);
|
||||
z-index: 999;
|
||||
}
|
||||
.fixed .primary {
|
||||
flex: 1;
|
||||
background: #4C8DFF;
|
||||
color: #fff;
|
||||
border-radius: 31.21875rem;
|
||||
padding: 0.5625rem 0;
|
||||
font-weight: 700;
|
||||
}
|
||||
.fixed .ghost {
|
||||
flex: 1;
|
||||
background: #ffffff;
|
||||
color: #4C8DFF;
|
||||
border: 0.0625rem solid rgba(76, 141, 255, 0.45);
|
||||
border-radius: 31.21875rem;
|
||||
padding: 0.5625rem 0;
|
||||
}
|
||||
.tip {
|
||||
margin: 0 0.9375rem 0.625rem;
|
||||
padding: 0.5rem 0.625rem;
|
||||
border-radius: 0.5rem;
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
.tip.platform {
|
||||
background: rgba(45, 140, 240, 0.12);
|
||||
color: #2d8cf0;
|
||||
}
|
||||
.tip.custom {
|
||||
background: rgba(103, 194, 58, 0.12);
|
||||
color: #67c23a;
|
||||
}
|
||||
@@ -1,33 +1,163 @@
|
||||
|
||||
.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;
|
||||
}
|
||||
.tabs { display:flex; background:#fff;
|
||||
.tabs {
|
||||
display: flex;
|
||||
background: #ffffff;
|
||||
}
|
||||
.tab { flex:1; text-align:center; padding: 0.625rem 0; color:#666;
|
||||
.tab {
|
||||
flex: 1;
|
||||
text-align: center;
|
||||
padding: 0.625rem 0;
|
||||
color: #444;
|
||||
}
|
||||
.tab.active { color:#18b566; font-weight: 600;
|
||||
.tab.active {
|
||||
color: #4C8DFF;
|
||||
font-weight: 600;
|
||||
}
|
||||
.search { display:flex; gap: 0.375rem; padding: 0.5rem; background:#fff; align-items: center;
|
||||
.tab.extra {
|
||||
flex: 0 0 5.625rem;
|
||||
color: #4C8DFF;
|
||||
font-weight: 600;
|
||||
}
|
||||
.search uni-input { flex:1; background:#f6f6f6; border-radius: 0.375rem; padding: 0.375rem;
|
||||
.search {
|
||||
display: flex;
|
||||
gap: 0.375rem;
|
||||
padding: 0.5rem;
|
||||
background: #ffffff;
|
||||
align-items: center;
|
||||
}
|
||||
.picker { padding: 0.25rem 0.375rem; background:#f0f0f0; border-radius: 0.3125rem; color:#666;
|
||||
.search uni-input {
|
||||
flex: 1;
|
||||
background: #f1f1f1;
|
||||
border-radius: 0.375rem;
|
||||
padding: 0.375rem;
|
||||
color: #111;
|
||||
}
|
||||
.list { flex:1;
|
||||
.picker {
|
||||
padding: 0.25rem 0.375rem;
|
||||
background: #f1f1f1;
|
||||
border-radius: 0.3125rem;
|
||||
color: #444;
|
||||
}
|
||||
.item { display:flex; padding: 0.625rem; background:#fff; border-bottom: 0.03125rem solid #f1f1f1;
|
||||
.template-mode {
|
||||
flex-direction: column;
|
||||
align-items: stretch;
|
||||
gap: 0.25rem;
|
||||
}
|
||||
.thumb { width: 3.75rem; height: 3.75rem; border-radius: 0.375rem; margin-right: 0.5rem; background:#fafafa;
|
||||
.picker-row {
|
||||
display: flex;
|
||||
gap: 0.375rem;
|
||||
}
|
||||
.content { flex:1;
|
||||
.params-wrap {
|
||||
margin-top: 0.1875rem;
|
||||
background: #ffffff;
|
||||
border-radius: 0.375rem;
|
||||
padding: 0.25rem 0.25rem;
|
||||
}
|
||||
.name { color:#333; margin-bottom: 0.1875rem; font-weight: 600;
|
||||
.list {
|
||||
flex: 1;
|
||||
}
|
||||
.meta { color:#888; font-size: 0.75rem;
|
||||
.item {
|
||||
display: flex;
|
||||
padding: 0.625rem;
|
||||
background: #ffffff;
|
||||
border-bottom: 0.03125rem solid #e5e7eb;
|
||||
}
|
||||
.price { margin-left: 0.625rem; color:#f60;
|
||||
.thumb {
|
||||
width: 3.75rem;
|
||||
height: 3.75rem;
|
||||
border-radius: 0.375rem;
|
||||
margin-right: 0.5rem;
|
||||
background: #f1f1f1;
|
||||
}
|
||||
.empty { height: 60vh; display:flex; align-items:center; justify-content:center; color:#999;
|
||||
.content {
|
||||
flex: 1;
|
||||
}
|
||||
.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);
|
||||
.name {
|
||||
color: #111;
|
||||
margin-bottom: 0.1875rem;
|
||||
font-weight: 600;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.375rem;
|
||||
}
|
||||
.tag-platform {
|
||||
font-size: 0.6875rem;
|
||||
color: #fff;
|
||||
background: #2d8cf0;
|
||||
padding: 0.125rem 0.3125rem;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
.tag-custom {
|
||||
font-size: 0.6875rem;
|
||||
color: #fff;
|
||||
background: #67c23a;
|
||||
padding: 0.125rem 0.3125rem;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
.tag-deleted {
|
||||
font-size: 0.6875rem;
|
||||
color: #fff;
|
||||
background: #909399;
|
||||
padding: 0.125rem 0.3125rem;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
.meta {
|
||||
color: #444;
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
.price {
|
||||
margin-left: 0.625rem;
|
||||
color: #4C8DFF;
|
||||
}
|
||||
.empty {
|
||||
height: 60vh;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: #444;
|
||||
}
|
||||
.fab {
|
||||
position: fixed;
|
||||
right: 0.9375rem;
|
||||
bottom: 3.75rem;
|
||||
width: 3.125rem;
|
||||
height: 3.125rem;
|
||||
background: #4C8DFF;
|
||||
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);
|
||||
}
|
||||
124
frontend/unpackage/dist/dev/app-plus/pages/product/product-detail.css
vendored
Normal file
@@ -0,0 +1,124 @@
|
||||
/**
|
||||
* 这里是uni-app内置的常用样式变量
|
||||
*
|
||||
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
|
||||
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
|
||||
*
|
||||
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
|
||||
*/
|
||||
/* 颜色变量 */
|
||||
/* 行为相关颜色 */
|
||||
/* 藏青系主色(高亮) */
|
||||
/* 文字基本颜色 */
|
||||
/* 背景颜色 */
|
||||
/* 边框颜色 */
|
||||
/* 尺寸变量 */
|
||||
/* 文字尺寸 */
|
||||
/* 图片尺寸 */
|
||||
/* Border Radius */
|
||||
/* 水平间距 */
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.page {
|
||||
padding: 0.75rem 0.75rem 5rem;
|
||||
background: #f6f7fb;
|
||||
}
|
||||
.header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 0.625rem;
|
||||
}
|
||||
.model {
|
||||
font-size: 1.125rem;
|
||||
font-weight: 700;
|
||||
color: #2d3a4a;
|
||||
}
|
||||
.status.deleted {
|
||||
font-size: 0.75rem;
|
||||
padding: 0.1875rem 0.5625rem;
|
||||
border-radius: 31.21875rem;
|
||||
background: #c0c4cc;
|
||||
color: #fff;
|
||||
}
|
||||
.section {
|
||||
background: #fff;
|
||||
border-radius: 0.5rem;
|
||||
padding: 0.625rem 0.6875rem;
|
||||
margin-bottom: 0.75rem;
|
||||
box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.04);
|
||||
}
|
||||
.row {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 0.375rem 0;
|
||||
border-bottom: 0.03125rem solid #f1f2f5;
|
||||
}
|
||||
.row:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
.label {
|
||||
width: 5rem;
|
||||
font-size: 0.8125rem;
|
||||
color: #7a8899;
|
||||
}
|
||||
.value {
|
||||
flex: 1;
|
||||
text-align: right;
|
||||
font-size: 0.8125rem;
|
||||
color: #2d3a4a;
|
||||
word-break: break-all;
|
||||
}
|
||||
.block-title {
|
||||
font-size: 0.875rem;
|
||||
font-weight: 600;
|
||||
color: #2d3a4a;
|
||||
margin-bottom: 0.375rem;
|
||||
}
|
||||
.placeholder {
|
||||
font-size: 0.8125rem;
|
||||
color: #7a8899;
|
||||
}
|
||||
.params {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.375rem;
|
||||
}
|
||||
.param {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
font-size: 0.8125rem;
|
||||
color: #2d3a4a;
|
||||
}
|
||||
.param-key {
|
||||
color: #7a8899;
|
||||
}
|
||||
.images {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 0.375rem;
|
||||
}
|
||||
.image {
|
||||
width: 100%;
|
||||
height: 6.25rem;
|
||||
border-radius: 0.5rem;
|
||||
background: #f0f2f5;
|
||||
}
|
||||
.footer {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
gap: 0.625rem;
|
||||
}
|
||||
.loading {
|
||||
height: 100vh;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: #7a8899;
|
||||
}
|
||||
@@ -1,15 +1,61 @@
|
||||
|
||||
.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;
|
||||
}
|
||||
.search { display:flex; gap: 0.375rem; padding: 0.5rem; background:#fff;
|
||||
.search {
|
||||
display: flex;
|
||||
gap: 0.375rem;
|
||||
padding: 0.5rem;
|
||||
background: #ffffff;
|
||||
}
|
||||
.search uni-input { flex:1; background:#f6f6f6; border-radius: 0.375rem; padding: 0.375rem;
|
||||
.search uni-input {
|
||||
flex: 1;
|
||||
background: #f1f1f1;
|
||||
border-radius: 0.375rem;
|
||||
padding: 0.375rem;
|
||||
color: #111;
|
||||
}
|
||||
.list { flex:1;
|
||||
.list {
|
||||
flex: 1;
|
||||
}
|
||||
.item { padding: 0.625rem 0.75rem; background:#fff; border-bottom: 0.03125rem solid #f1f1f1;
|
||||
.item {
|
||||
padding: 0.625rem 0.75rem;
|
||||
background: #ffffff;
|
||||
border-bottom: 0.03125rem solid #e5e7eb;
|
||||
}
|
||||
.name { color:#333; margin-bottom: 0.1875rem;
|
||||
}
|
||||
.meta { color:#888; font-size: 0.75rem;
|
||||
.name {
|
||||
color: #111;
|
||||
margin-bottom: 0.1875rem;
|
||||
}
|
||||
.meta {
|
||||
color: #444;
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
134
frontend/unpackage/dist/dev/app-plus/pages/product/submission-detail.css
vendored
Normal file
@@ -0,0 +1,134 @@
|
||||
/**
|
||||
* 这里是uni-app内置的常用样式变量
|
||||
*
|
||||
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
|
||||
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
|
||||
*
|
||||
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
|
||||
*/
|
||||
/* 颜色变量 */
|
||||
/* 行为相关颜色 */
|
||||
/* 藏青系主色(高亮) */
|
||||
/* 文字基本颜色 */
|
||||
/* 背景颜色 */
|
||||
/* 边框颜色 */
|
||||
/* 尺寸变量 */
|
||||
/* 文字尺寸 */
|
||||
/* 图片尺寸 */
|
||||
/* Border Radius */
|
||||
/* 水平间距 */
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.page {
|
||||
padding: 0.75rem 0.75rem 5rem;
|
||||
background: #f6f7fb;
|
||||
}
|
||||
.header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 0.625rem;
|
||||
}
|
||||
.model {
|
||||
font-size: 1.125rem;
|
||||
font-weight: 700;
|
||||
color: #2d3a4a;
|
||||
}
|
||||
.status {
|
||||
font-size: 0.8125rem;
|
||||
padding: 0.1875rem 0.5625rem;
|
||||
border-radius: 31.21875rem;
|
||||
}
|
||||
.status.pending {
|
||||
background: rgba(246, 190, 0, 0.15);
|
||||
color: #c47f00;
|
||||
}
|
||||
.status.approved {
|
||||
background: rgba(103, 194, 58, 0.15);
|
||||
color: #409eff;
|
||||
}
|
||||
.status.rejected {
|
||||
background: rgba(255, 87, 115, 0.18);
|
||||
color: #f56c6c;
|
||||
}
|
||||
.section {
|
||||
background: #fff;
|
||||
border-radius: 0.5rem;
|
||||
padding: 0.625rem 0.6875rem;
|
||||
margin-bottom: 0.75rem;
|
||||
box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.04);
|
||||
}
|
||||
.row {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 0.375rem 0;
|
||||
border-bottom: 0.03125rem solid #f1f2f5;
|
||||
}
|
||||
.row:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
.label {
|
||||
width: 5rem;
|
||||
font-size: 0.8125rem;
|
||||
color: #7a8899;
|
||||
}
|
||||
.value {
|
||||
flex: 1;
|
||||
text-align: right;
|
||||
font-size: 0.8125rem;
|
||||
color: #2d3a4a;
|
||||
word-break: break-all;
|
||||
}
|
||||
.block-title {
|
||||
font-size: 0.875rem;
|
||||
font-weight: 600;
|
||||
color: #2d3a4a;
|
||||
margin-bottom: 0.375rem;
|
||||
}
|
||||
.placeholder {
|
||||
font-size: 0.8125rem;
|
||||
color: #7a8899;
|
||||
}
|
||||
.params {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.375rem;
|
||||
}
|
||||
.param {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
font-size: 0.8125rem;
|
||||
color: #2d3a4a;
|
||||
}
|
||||
.param-key {
|
||||
color: #7a8899;
|
||||
}
|
||||
.images {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 0.375rem;
|
||||
}
|
||||
.image {
|
||||
width: 100%;
|
||||
height: 6.25rem;
|
||||
border-radius: 0.5rem;
|
||||
background: #f0f2f5;
|
||||
}
|
||||
.footer {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
gap: 0.625rem;
|
||||
}
|
||||
.loading {
|
||||
height: 100vh;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: #7a8899;
|
||||
}
|
||||
164
frontend/unpackage/dist/dev/app-plus/pages/product/submissions.css
vendored
Normal file
@@ -0,0 +1,164 @@
|
||||
/**
|
||||
* 这里是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;
|
||||
background: #f6f7fb;
|
||||
padding-bottom: 4.375rem;
|
||||
}
|
||||
.hero {
|
||||
padding: 0.75rem;
|
||||
background: #fff;
|
||||
box-shadow: 0 0.3125rem 0.9375rem rgba(0, 0, 0, 0.04);
|
||||
}
|
||||
.title {
|
||||
font-size: 1.0625rem;
|
||||
font-weight: 700;
|
||||
color: #2d3a4a;
|
||||
}
|
||||
.desc {
|
||||
font-size: 0.75rem;
|
||||
color: #7a8899;
|
||||
margin-top: 0.25rem;
|
||||
}
|
||||
.tabs {
|
||||
display: flex;
|
||||
background: #fff;
|
||||
margin: 0.5rem;
|
||||
border-radius: 31.21875rem;
|
||||
overflow: hidden;
|
||||
box-shadow: inset 0 0 0 0.03125rem rgba(76, 141, 255, 0.1);
|
||||
}
|
||||
.tab {
|
||||
flex: 1;
|
||||
text-align: center;
|
||||
padding: 0.625rem 0;
|
||||
font-size: 0.875rem;
|
||||
color: #7a8899;
|
||||
}
|
||||
.tab.active {
|
||||
background: linear-gradient(135deg, #4c8dff, #6ab7ff);
|
||||
color: #fff;
|
||||
font-weight: 600;
|
||||
}
|
||||
.list {
|
||||
flex: 1;
|
||||
padding: 0 0.625rem;
|
||||
}
|
||||
.cards {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.625rem;
|
||||
padding-bottom: 1.25rem;
|
||||
}
|
||||
.card {
|
||||
background: #fff;
|
||||
border-radius: 0.5625rem;
|
||||
padding: 0.6875rem;
|
||||
box-shadow: 0 0.3125rem 0.9375rem rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
.card-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 0.375rem;
|
||||
}
|
||||
.model {
|
||||
font-size: 0.9375rem;
|
||||
font-weight: 700;
|
||||
color: #2d3a4a;
|
||||
}
|
||||
.status {
|
||||
font-size: 0.75rem;
|
||||
padding: 0.1875rem 0.5625rem;
|
||||
border-radius: 31.21875rem;
|
||||
}
|
||||
.status.pending {
|
||||
background: rgba(246, 190, 0, 0.15);
|
||||
color: #c47f00;
|
||||
}
|
||||
.status.approved {
|
||||
background: rgba(103, 194, 58, 0.15);
|
||||
color: #409eff;
|
||||
}
|
||||
.status.rejected {
|
||||
background: rgba(255, 87, 115, 0.18);
|
||||
color: #f56c6c;
|
||||
}
|
||||
.card-body {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.1875rem;
|
||||
color: #4f5969;
|
||||
font-size: 0.8125rem;
|
||||
}
|
||||
.name {
|
||||
font-weight: 600;
|
||||
color: #2d3a4a;
|
||||
}
|
||||
.card-footer {
|
||||
display: flex;
|
||||
gap: 0.375rem;
|
||||
margin-top: 0.5rem;
|
||||
}
|
||||
.empty {
|
||||
height: 60vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: #8894a3;
|
||||
gap: 0.625rem;
|
||||
}
|
||||
.empty .primary {
|
||||
background: #4c8dff;
|
||||
color: #fff;
|
||||
border-radius: 31.21875rem;
|
||||
padding: 0.375rem 0.9375rem;
|
||||
}
|
||||
.loading, .finished {
|
||||
text-align: center;
|
||||
padding: 0.625rem 0;
|
||||
color: #7a8899;
|
||||
}
|
||||
.fab {
|
||||
position: fixed;
|
||||
right: 0.9375rem;
|
||||
bottom: 3.75rem;
|
||||
width: 3.125rem;
|
||||
height: 3.125rem;
|
||||
background: linear-gradient(135deg, #4c8dff, #6ab7ff);
|
||||
color: #fff;
|
||||
border-radius: 1.5625rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 1.5rem;
|
||||
box-shadow: 0 0.625rem 1.25rem rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
142
frontend/unpackage/dist/dev/app-plus/pages/product/submit.css
vendored
Normal file
@@ -0,0 +1,142 @@
|
||||
|
||||
.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; width: 1.3125rem; height: 1.3125rem;
|
||||
}
|
||||
.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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 这里是uni-app内置的常用样式变量
|
||||
*
|
||||
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
|
||||
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
|
||||
*
|
||||
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
|
||||
*/
|
||||
/* 颜色变量 */
|
||||
/* 行为相关颜色 */
|
||||
/* 藏青系主色(高亮) */
|
||||
/* 文字基本颜色 */
|
||||
/* 背景颜色 */
|
||||
/* 边框颜色 */
|
||||
/* 尺寸变量 */
|
||||
/* 文字尺寸 */
|
||||
/* 图片尺寸 */
|
||||
/* Border Radius */
|
||||
/* 水平间距 */
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.page {
|
||||
padding: 0.75rem 0.75rem 3.75rem;
|
||||
background: #f6f7fb;
|
||||
}
|
||||
.hero {
|
||||
padding: 0.75rem;
|
||||
background: linear-gradient(135deg, #4c8dff, #6ab7ff);
|
||||
border-radius: 0.625rem;
|
||||
color: #fff;
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
.title {
|
||||
font-size: 1.125rem;
|
||||
font-weight: 700;
|
||||
}
|
||||
.desc {
|
||||
font-size: 0.8125rem;
|
||||
margin-top: 0.25rem;
|
||||
opacity: 0.9;
|
||||
}
|
||||
.section {
|
||||
background: #fff;
|
||||
border-radius: 0.5rem;
|
||||
padding: 0.625rem 0.6875rem;
|
||||
margin-bottom: 0.75rem;
|
||||
box-shadow: 0 0.3125rem 0.9375rem rgba(0, 0, 0, 0.04);
|
||||
}
|
||||
.row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
padding: 0.5rem 0;
|
||||
border-bottom: 0.03125rem solid #f1f2f5;
|
||||
}
|
||||
.row:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
.row.required .label::after {
|
||||
content: "*";
|
||||
color: #ff5b5b;
|
||||
margin-left: 0.1875rem;
|
||||
}
|
||||
.label {
|
||||
width: 4.0625rem;
|
||||
font-size: 0.875rem;
|
||||
color: #2d3a4a;
|
||||
}
|
||||
uni-input {
|
||||
flex: 1;
|
||||
background: #f8f9fb;
|
||||
border-radius: 0.375rem;
|
||||
padding: 0.5rem 0.5625rem;
|
||||
font-size: 0.875rem;
|
||||
color: #222;
|
||||
}
|
||||
.textarea {
|
||||
width: 100%;
|
||||
min-height: 5rem;
|
||||
background: #f8f9fb;
|
||||
border-radius: 0.375rem;
|
||||
padding: 0.5625rem;
|
||||
font-size: 0.875rem;
|
||||
color: #222;
|
||||
}
|
||||
.picker {
|
||||
flex: 1;
|
||||
background: #f8f9fb;
|
||||
border-radius: 0.375rem;
|
||||
padding: 0.5625rem;
|
||||
font-size: 0.875rem;
|
||||
color: #222;
|
||||
}
|
||||
.picker-btn {
|
||||
background: #4c8dff;
|
||||
color: #fff;
|
||||
border-radius: 31.21875rem;
|
||||
padding: 0.3125rem 0.6875rem;
|
||||
}
|
||||
.triple uni-input {
|
||||
flex: 1;
|
||||
}
|
||||
.fixed {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
padding: 0.625rem 0.75rem 1.25rem;
|
||||
background: rgba(255, 255, 255, 0.96);
|
||||
box-shadow: 0 -0.1875rem 0.625rem rgba(0, 0, 0, 0.08);
|
||||
}
|
||||
.primary {
|
||||
width: 100%;
|
||||
height: 2.75rem;
|
||||
border-radius: 31.21875rem;
|
||||
background: #4c8dff;
|
||||
color: #fff;
|
||||
font-size: 1rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
@@ -1,37 +1,158 @@
|
||||
|
||||
.report { padding: 0.625rem;
|
||||
/**
|
||||
* 这里是uni-app内置的常用样式变量
|
||||
*
|
||||
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
|
||||
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
|
||||
*
|
||||
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
|
||||
*/
|
||||
/* 颜色变量 */
|
||||
/* 行为相关颜色 */
|
||||
/* 藏青系主色(高亮) */
|
||||
/* 文字基本颜色 */
|
||||
/* 背景颜色 */
|
||||
/* 边框颜色 */
|
||||
/* 尺寸变量 */
|
||||
/* 文字尺寸 */
|
||||
/* 图片尺寸 */
|
||||
/* Border Radius */
|
||||
/* 水平间距 */
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.report {
|
||||
padding: 0.75rem 0.625rem 1.125rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.5625rem;
|
||||
}
|
||||
.modes { display: flex; gap: 0.375rem; margin-bottom: 0.4375rem;
|
||||
.header {
|
||||
font-size: 1.0625rem;
|
||||
font-weight: 700;
|
||||
color: #1f2a44;
|
||||
padding-left: 0.25rem;
|
||||
}
|
||||
.mode-tab { flex: 1; text-align: center; padding: 0.5rem 0; border-radius: 31.21875rem; background: #f4f4f4; color: #666; border: 0.03125rem solid #e9e9e9;
|
||||
.toolbar {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 0.375rem;
|
||||
background: #f7f9fc;
|
||||
border-radius: 0.5rem;
|
||||
padding: 0.5625rem;
|
||||
}
|
||||
.mode-tab.active { background: #1aad19; color: #fff; border-color: #1aad19; font-weight: 700;
|
||||
.date {
|
||||
min-width: 6.25rem;
|
||||
padding: 0.375rem 0.5625rem;
|
||||
border-radius: 0.375rem;
|
||||
background: #fff;
|
||||
border: 0.03125rem solid rgba(91, 107, 139, 0.16);
|
||||
text-align: center;
|
||||
color: #32445b;
|
||||
}
|
||||
.toolbar { display: flex; align-items: center; gap: 0.25rem; background: #fff; padding: 0.4375rem 0.5rem; border-radius: 0.375rem;
|
||||
.tabs {
|
||||
display: flex;
|
||||
gap: 0.375rem;
|
||||
justify-content: center;
|
||||
}
|
||||
.date { padding: 0.3125rem 0.5rem; border: 0.03125rem solid #eee; border-radius: 0.25rem;
|
||||
.tab {
|
||||
padding: 0.3125rem 0.625rem;
|
||||
border-radius: 31.21875rem;
|
||||
background: #f0f4ff;
|
||||
color: #5b6b8b;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
.tabs { display: flex; gap: 0.5rem; margin-top: 0.4375rem;
|
||||
.tab.active {
|
||||
background: rgba(76, 141, 255, 0.18);
|
||||
color: #3467d6;
|
||||
box-shadow: inset 0 0 0 0.0625rem rgba(76, 141, 255, 0.45);
|
||||
}
|
||||
.tab { padding: 0.375rem 0.5625rem; border-radius: 31.21875rem; background: #f4f4f4; color: #666;
|
||||
.summary {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(7.5rem, 1fr));
|
||||
gap: 0.375rem;
|
||||
}
|
||||
.tab.active { background: #1aad19; color: #fff;
|
||||
.summary-item {
|
||||
background: #f7f9fc;
|
||||
border-radius: 0.5rem;
|
||||
padding: 0.625rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.3125rem;
|
||||
}
|
||||
.summary { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.25rem; margin-top: 0.4375rem;
|
||||
.summary-item .label {
|
||||
font-size: 0.75rem;
|
||||
color: #6e7a96;
|
||||
}
|
||||
.summary .item { background: #fff; border-radius: 0.375rem; padding: 0.5rem;
|
||||
.summary-item .value {
|
||||
font-size: 1rem;
|
||||
font-weight: 700;
|
||||
color: #1f2a44;
|
||||
}
|
||||
.summary .label { font-size: 0.6875rem; color: #888;
|
||||
.card {
|
||||
background: #fff;
|
||||
border-radius: 0.5625rem;
|
||||
padding: 0.625rem;
|
||||
box-shadow: 0 0.25rem 0.625rem rgba(31, 42, 68, 0.08);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.4375rem;
|
||||
}
|
||||
.summary .value { display: block; margin-top: 0.25rem; font-weight: 700; color: #333;
|
||||
.row-head {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: flex-start;
|
||||
}
|
||||
.card { margin-top: 0.5rem; background: #fff; border-radius: 0.375rem; padding: 0.5rem;
|
||||
.row-title {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.1875rem;
|
||||
}
|
||||
.row-head { display: flex; align-items: center; gap: 0.375rem;
|
||||
.title {
|
||||
font-size: 0.9375rem;
|
||||
font-weight: 700;
|
||||
color: #1f2a44;
|
||||
}
|
||||
.thumb { width: 2.25rem; height: 2.25rem; border-radius: 0.25rem; background: #f2f2f2;
|
||||
.subtitle {
|
||||
font-size: 0.75rem;
|
||||
color: #6e7a96;
|
||||
}
|
||||
.title { font-size: 0.875rem; font-weight: 700;
|
||||
.row-body {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 0.375rem 0.75rem;
|
||||
}
|
||||
.row-body { margin-top: 0.3125rem; color: #666;
|
||||
.metric {
|
||||
display: flex;
|
||||
gap: 0.25rem;
|
||||
align-items: center;
|
||||
background: #f4f6fb;
|
||||
border-radius: 0.375rem;
|
||||
padding: 0.3125rem 0.5rem;
|
||||
}
|
||||
.metric-label {
|
||||
font-size: 0.75rem;
|
||||
color: #6e7a96;
|
||||
}
|
||||
.metric-value {
|
||||
font-size: 0.875rem;
|
||||
color: #1f2a44;
|
||||
font-weight: 600;
|
||||
}
|
||||
.empty {
|
||||
text-align: center;
|
||||
padding: 2.5rem 0;
|
||||
color: #9aa4be;
|
||||
font-size: 0.8125rem;
|
||||
}
|
||||
.loading {
|
||||
text-align: center;
|
||||
padding: 1.25rem 0;
|
||||
color: #5b6b8b;
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
@@ -1,15 +1,66 @@
|
||||
|
||||
.page { padding-bottom: 4.375rem;
|
||||
/**
|
||||
* 这里是uni-app内置的常用样式变量
|
||||
*
|
||||
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
|
||||
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
|
||||
*
|
||||
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
|
||||
*/
|
||||
/* 颜色变量 */
|
||||
/* 行为相关颜色 */
|
||||
/* 藏青系主色(高亮) */
|
||||
/* 文字基本颜色 */
|
||||
/* 背景颜色 */
|
||||
/* 边框颜色 */
|
||||
/* 尺寸变量 */
|
||||
/* 文字尺寸 */
|
||||
/* 图片尺寸 */
|
||||
/* Border Radius */
|
||||
/* 水平间距 */
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.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;
|
||||
.field {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 0.6875rem 0.75rem;
|
||||
background: #ffffff;
|
||||
border-bottom: 0.03125rem solid #e5e7eb;
|
||||
}
|
||||
.label { color:#666;
|
||||
.label {
|
||||
color: #444;
|
||||
}
|
||||
.value { color:#333; text-align: right; flex: 1;
|
||||
.value {
|
||||
color: #111;
|
||||
text-align: right;
|
||||
flex: 1;
|
||||
}
|
||||
.textarea { padding: 0.5rem 0.75rem; background:#fff; margin-top: 0.375rem;
|
||||
.textarea {
|
||||
padding: 0.5rem 0.75rem;
|
||||
background: #ffffff;
|
||||
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;
|
||||
.bottom {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: #ffffff;
|
||||
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.1);
|
||||
}
|
||||
.primary {
|
||||
width: 100%;
|
||||
background: #4C8DFF;
|
||||
color: #fff;
|
||||
border-radius: 31.21875rem;
|
||||
padding: 0.625rem 0;
|
||||
}
|
||||
BIN
frontend/unpackage/dist/dev/app-plus/static/icons/home.png
vendored
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
frontend/unpackage/dist/dev/app-plus/static/icons/icons8-account-male-100.png
vendored
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
frontend/unpackage/dist/dev/app-plus/static/icons/icons8-close-48.png
vendored
Normal file
|
After Width: | Height: | Size: 397 B |
BIN
frontend/unpackage/dist/dev/app-plus/static/icons/icons8-dollar-ethereum-exchange-50.png
vendored
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
frontend/unpackage/dist/dev/app-plus/static/icons/icons8-expenditure-64.png
vendored
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
frontend/unpackage/dist/dev/app-plus/static/icons/icons8-graph-report-50.png
vendored
Normal file
|
After Width: | Height: | Size: 607 B |
BIN
frontend/unpackage/dist/dev/app-plus/static/icons/icons8-login-50.png
vendored
Normal file
|
After Width: | Height: | Size: 990 B |
BIN
frontend/unpackage/dist/dev/app-plus/static/icons/icons8-mitt-24.png
vendored
Normal file
|
After Width: | Height: | Size: 518 B |
BIN
frontend/unpackage/dist/dev/app-plus/static/icons/icons8-more-64.png
vendored
Normal file
|
After Width: | Height: | Size: 336 B |
BIN
frontend/unpackage/dist/dev/app-plus/static/icons/icons8-more-details-100.png
vendored
Normal file
|
After Width: | Height: | Size: 831 B |
BIN
frontend/unpackage/dist/dev/app-plus/static/icons/icons8-profile-50.png
vendored
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
frontend/unpackage/dist/dev/app-plus/static/icons/icons8-profit-50.png
vendored
Normal file
|
After Width: | Height: | Size: 634 B |
BIN
frontend/unpackage/dist/dev/app-plus/static/icons/icons8-purchase-order-100.png
vendored
Normal file
|
After Width: | Height: | Size: 387 B |
BIN
frontend/unpackage/dist/dev/app-plus/static/icons/icons8-return-purchase-50.png
vendored
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
frontend/unpackage/dist/dev/app-plus/static/icons/icons8-shopping-cart-100.png
vendored
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
frontend/unpackage/dist/dev/app-plus/static/icons/icons8-supplier-50.png
vendored
Normal file
|
After Width: | Height: | Size: 964 B |
BIN
frontend/unpackage/dist/dev/app-plus/static/icons/icons8-vip-48 (1).png
vendored
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
frontend/unpackage/dist/dev/app-plus/static/icons/icons8-vip-48.png
vendored
Normal file
|
After Width: | Height: | Size: 845 B |
BIN
frontend/unpackage/dist/dev/app-plus/static/icons/product.png
vendored
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
frontend/unpackage/dist/dev/app-plus/static/icons/undraw_visual-data_1eya.png
vendored
Normal file
|
After Width: | Height: | Size: 94 KiB |
BIN
frontend/unpackage/dist/dev/app-plus/static/icons/webwxgetmsgimg.jpg
vendored
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
frontend/unpackage/dist/dev/app-plus/static/icons/webwxgetmsgimg.png
vendored
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
frontend/unpackage/dist/dev/app-plus/static/icons/配件审核_1758986693151.xlsx
vendored
Normal file
BIN
frontend/unpackage/dist/dev/app-plus/static/icons/配件审核_1758987353730.xlsx
vendored
Normal file
2
frontend/unpackage/dist/dev/mp-weixin/app.js
vendored
@@ -8,7 +8,9 @@ if (!Math) {
|
||||
"./pages/product/list.js";
|
||||
"./pages/product/submit.js";
|
||||
"./pages/product/submissions.js";
|
||||
"./pages/product/submission-detail.js";
|
||||
"./pages/product/form.js";
|
||||
"./pages/product/product-detail.js";
|
||||
"./pages/product/categories.js";
|
||||
"./pages/product/units.js";
|
||||
"./pages/product/settings.js";
|
||||
|
||||
@@ -6,7 +6,9 @@
|
||||
"pages/product/list",
|
||||
"pages/product/submit",
|
||||
"pages/product/submissions",
|
||||
"pages/product/submission-detail",
|
||||
"pages/product/form",
|
||||
"pages/product/product-detail",
|
||||
"pages/product/categories",
|
||||
"pages/product/units",
|
||||
"pages/product/settings",
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
/*每个页面公共css */
|
||||
page {
|
||||
background-color: #ffffff;
|
||||
|
||||
@@ -25,8 +25,12 @@ const KPI_ICONS = {
|
||||
monthProfit: "/static/icons/icons8-profit-50.png",
|
||||
stockCount: "/static/icons/product.png"
|
||||
};
|
||||
const envAuthLoginImg = typeof process !== "undefined" && process.env && (process.env.VITE_APP_AUTH_LOGIN_TOP_IMAGE || process.env.AUTH_LOGIN_TOP_IMAGE) || "";
|
||||
const storageAuthLoginImg = typeof common_vendor.index !== "undefined" ? common_vendor.index.getStorageSync("AUTH_LOGIN_TOP_IMAGE") || "" : "";
|
||||
const AUTH_LOGIN_TOP_IMAGE = String(envAuthLoginImg || storageAuthLoginImg || "/static/icons/undraw_visual-data_1eya.png");
|
||||
exports.API_BASE_URL = API_BASE_URL;
|
||||
exports.API_BASE_URL_CANDIDATES = API_BASE_URL_CANDIDATES;
|
||||
exports.AUTH_LOGIN_TOP_IMAGE = AUTH_LOGIN_TOP_IMAGE;
|
||||
exports.DEFAULT_USER_ID = DEFAULT_USER_ID;
|
||||
exports.ENABLE_DEFAULT_USER = ENABLE_DEFAULT_USER;
|
||||
exports.KPI_ICONS = KPI_ICONS;
|
||||
|
||||
@@ -29,7 +29,14 @@ const ROUTES = {
|
||||
supplierSelect: "/pages/supplier/select",
|
||||
accountSelect: "/pages/account/select"
|
||||
};
|
||||
const KPI_LABELS = {
|
||||
todaySales: "今日销售额",
|
||||
monthSales: "本月销售额",
|
||||
monthProfit: "本月利润",
|
||||
stockCount: "库存量"
|
||||
};
|
||||
exports.EXPENSE_CATEGORIES = EXPENSE_CATEGORIES;
|
||||
exports.INCOME_CATEGORIES = INCOME_CATEGORIES;
|
||||
exports.KPI_LABELS = KPI_LABELS;
|
||||
exports.ROUTES = ROUTES;
|
||||
//# sourceMappingURL=../../.sourcemap/mp-weixin/common/constants.js.map
|
||||
|
||||
@@ -7074,7 +7074,7 @@ function isConsoleWritable() {
|
||||
function initRuntimeSocketService() {
|
||||
const hosts = "198.18.0.1,192.168.31.192,127.0.0.1";
|
||||
const port = "8090";
|
||||
const id = "mp-weixin_t4IBTG";
|
||||
const id = "mp-weixin_kiZSAl";
|
||||
const lazy = typeof swan !== "undefined";
|
||||
let restoreError = lazy ? () => {
|
||||
} : initOnError();
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.page {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.page {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.page {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
"use strict";
|
||||
const common_vendor = require("../../common/vendor.js");
|
||||
const common_http = require("../../common/http.js");
|
||||
const common_config = require("../../common/config.js");
|
||||
const _sfc_main = {
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
tab: "login",
|
||||
authLoginTopImage: common_config.AUTH_LOGIN_TOP_IMAGE,
|
||||
loginForm: { email: "", password: "" },
|
||||
regForm: { name: "", email: "", code: "", password: "", password2: "" },
|
||||
resetForm: { email: "", code: "", password: "", password2: "" },
|
||||
@@ -18,6 +20,12 @@ const _sfc_main = {
|
||||
this._timers.forEach((t) => clearInterval(t));
|
||||
},
|
||||
methods: {
|
||||
gotoRegister() {
|
||||
this.tab = "register";
|
||||
},
|
||||
gotoReset() {
|
||||
this.tab = "reset";
|
||||
},
|
||||
toast(msg) {
|
||||
try {
|
||||
common_vendor.index.showToast({ title: String(msg || "操作失败"), icon: "none" });
|
||||
@@ -154,65 +162,64 @@ const _sfc_main = {
|
||||
};
|
||||
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
return common_vendor.e({
|
||||
a: common_vendor.n($data.tab === "login" ? "active" : ""),
|
||||
b: common_vendor.o(($event) => $data.tab = "login"),
|
||||
c: common_vendor.n($data.tab === "register" ? "active" : ""),
|
||||
d: common_vendor.o(($event) => $data.tab = "register"),
|
||||
e: common_vendor.n($data.tab === "reset" ? "active" : ""),
|
||||
f: common_vendor.o(($event) => $data.tab = "reset"),
|
||||
g: $data.tab === "login"
|
||||
a: $data.authLoginTopImage,
|
||||
b: $data.tab === "login"
|
||||
}, $data.tab === "login" ? {
|
||||
h: $data.loginForm.email,
|
||||
i: common_vendor.o(common_vendor.m(($event) => $data.loginForm.email = $event.detail.value, {
|
||||
c: $data.loginForm.email,
|
||||
d: common_vendor.o(common_vendor.m(($event) => $data.loginForm.email = $event.detail.value, {
|
||||
trim: true
|
||||
})),
|
||||
j: $data.loginForm.password,
|
||||
k: common_vendor.o(($event) => $data.loginForm.password = $event.detail.value),
|
||||
l: $data.loading,
|
||||
m: common_vendor.o((...args) => $options.onLogin && $options.onLogin(...args))
|
||||
} : $data.tab === "register" ? {
|
||||
o: $data.regForm.name,
|
||||
p: common_vendor.o(common_vendor.m(($event) => $data.regForm.name = $event.detail.value, {
|
||||
e: $data.loginForm.password,
|
||||
f: common_vendor.o(($event) => $data.loginForm.password = $event.detail.value),
|
||||
g: $data.loading,
|
||||
h: common_vendor.o((...args) => $options.onLogin && $options.onLogin(...args)),
|
||||
i: common_vendor.o((...args) => $options.gotoRegister && $options.gotoRegister(...args)),
|
||||
j: common_vendor.o((...args) => $options.gotoReset && $options.gotoReset(...args))
|
||||
} : {}, {
|
||||
k: $data.tab === "register"
|
||||
}, $data.tab === "register" ? {
|
||||
l: $data.regForm.name,
|
||||
m: common_vendor.o(common_vendor.m(($event) => $data.regForm.name = $event.detail.value, {
|
||||
trim: true
|
||||
})),
|
||||
q: $data.regForm.email,
|
||||
r: common_vendor.o(common_vendor.m(($event) => $data.regForm.email = $event.detail.value, {
|
||||
n: $data.regForm.email,
|
||||
o: common_vendor.o(common_vendor.m(($event) => $data.regForm.email = $event.detail.value, {
|
||||
trim: true
|
||||
})),
|
||||
s: $data.regForm.code,
|
||||
t: common_vendor.o(common_vendor.m(($event) => $data.regForm.code = $event.detail.value, {
|
||||
p: $data.regForm.code,
|
||||
q: common_vendor.o(common_vendor.m(($event) => $data.regForm.code = $event.detail.value, {
|
||||
trim: true
|
||||
})),
|
||||
v: common_vendor.t($data.regCountdown > 0 ? $data.regCountdown + "s" : "获取验证码"),
|
||||
w: $data.regCountdown > 0 || $data.loading,
|
||||
x: common_vendor.o((...args) => $options.sendRegCode && $options.sendRegCode(...args)),
|
||||
y: $data.regForm.password,
|
||||
z: common_vendor.o(($event) => $data.regForm.password = $event.detail.value),
|
||||
A: $data.regForm.password2,
|
||||
B: common_vendor.o(($event) => $data.regForm.password2 = $event.detail.value),
|
||||
C: $data.loading,
|
||||
D: common_vendor.o((...args) => $options.onRegister && $options.onRegister(...args))
|
||||
} : {
|
||||
E: $data.resetForm.email,
|
||||
F: common_vendor.o(common_vendor.m(($event) => $data.resetForm.email = $event.detail.value, {
|
||||
r: common_vendor.t($data.regCountdown > 0 ? $data.regCountdown + "s" : "获取验证码"),
|
||||
s: $data.regCountdown > 0 || $data.loading,
|
||||
t: common_vendor.o((...args) => $options.sendRegCode && $options.sendRegCode(...args)),
|
||||
v: $data.regForm.password,
|
||||
w: common_vendor.o(($event) => $data.regForm.password = $event.detail.value),
|
||||
x: $data.regForm.password2,
|
||||
y: common_vendor.o(($event) => $data.regForm.password2 = $event.detail.value),
|
||||
z: $data.loading,
|
||||
A: common_vendor.o((...args) => $options.onRegister && $options.onRegister(...args))
|
||||
} : {}, {
|
||||
B: $data.tab === "reset"
|
||||
}, $data.tab === "reset" ? {
|
||||
C: $data.resetForm.email,
|
||||
D: common_vendor.o(common_vendor.m(($event) => $data.resetForm.email = $event.detail.value, {
|
||||
trim: true
|
||||
})),
|
||||
G: $data.resetForm.code,
|
||||
H: common_vendor.o(common_vendor.m(($event) => $data.resetForm.code = $event.detail.value, {
|
||||
E: $data.resetForm.code,
|
||||
F: common_vendor.o(common_vendor.m(($event) => $data.resetForm.code = $event.detail.value, {
|
||||
trim: true
|
||||
})),
|
||||
I: common_vendor.t($data.resetCountdown > 0 ? $data.resetCountdown + "s" : "获取验证码"),
|
||||
J: $data.resetCountdown > 0 || $data.loading,
|
||||
K: common_vendor.o((...args) => $options.sendResetCode && $options.sendResetCode(...args)),
|
||||
L: $data.resetForm.password,
|
||||
M: common_vendor.o(($event) => $data.resetForm.password = $event.detail.value),
|
||||
N: $data.resetForm.password2,
|
||||
O: common_vendor.o(($event) => $data.resetForm.password2 = $event.detail.value),
|
||||
P: $data.loading,
|
||||
Q: common_vendor.o((...args) => $options.onReset && $options.onReset(...args))
|
||||
}, {
|
||||
n: $data.tab === "register"
|
||||
});
|
||||
G: common_vendor.t($data.resetCountdown > 0 ? $data.resetCountdown + "s" : "获取验证码"),
|
||||
H: $data.resetCountdown > 0 || $data.loading,
|
||||
I: common_vendor.o((...args) => $options.sendResetCode && $options.sendResetCode(...args)),
|
||||
J: $data.resetForm.password,
|
||||
K: common_vendor.o(($event) => $data.resetForm.password = $event.detail.value),
|
||||
L: $data.resetForm.password2,
|
||||
M: common_vendor.o(($event) => $data.resetForm.password2 = $event.detail.value),
|
||||
N: $data.loading,
|
||||
O: common_vendor.o((...args) => $options.onReset && $options.onReset(...args))
|
||||
} : {});
|
||||
}
|
||||
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]);
|
||||
wx.createPage(MiniProgramPage);
|
||||
|
||||
@@ -1 +1 @@
|
||||
<view class="auth-page"><view class="tabs"><view class="{{['tab', a]}}" bindtap="{{b}}">登录</view><view class="{{['tab', c]}}" bindtap="{{d}}">注册</view><view class="{{['tab', e]}}" bindtap="{{f}}">忘记密码</view></view><view wx:if="{{g}}" class="panel"><input class="input" type="text" placeholder="输入邮箱" value="{{h}}" bindinput="{{i}}"/><input class="input" type="password" placeholder="输入密码" value="{{j}}" bindinput="{{k}}"/><button class="btn primary" disabled="{{l}}" bindtap="{{m}}">登录</button></view><view wx:elif="{{n}}" class="panel"><input class="input" type="text" placeholder="输入用户名" value="{{o}}" bindinput="{{p}}"/><input class="input" type="text" placeholder="输入邮箱" value="{{q}}" bindinput="{{r}}"/><view class="row"><input class="input flex1" type="text" placeholder="邮箱验证码" value="{{s}}" bindinput="{{t}}"/><button class="btn ghost" disabled="{{w}}" bindtap="{{x}}">{{v}}</button></view><input class="input" type="password" placeholder="输入密码(≥6位)" value="{{y}}" bindinput="{{z}}"/><input class="input" type="password" placeholder="再次输入密码" value="{{A}}" bindinput="{{B}}"/><button class="btn primary" disabled="{{C}}" bindtap="{{D}}">注册新用户</button></view><view wx:else class="panel"><input class="input" type="text" placeholder="输入邮箱" value="{{E}}" bindinput="{{F}}"/><view class="row"><input class="input flex1" type="text" placeholder="邮箱验证码" value="{{G}}" bindinput="{{H}}"/><button class="btn ghost" disabled="{{J}}" bindtap="{{K}}">{{I}}</button></view><input class="input" type="password" placeholder="新密码(≥6位)" value="{{L}}" bindinput="{{M}}"/><input class="input" type="password" placeholder="再次输入新密码" value="{{N}}" bindinput="{{O}}"/><button class="btn primary" disabled="{{P}}" bindtap="{{Q}}">重置密码</button></view></view>
|
||||
<view class="auth-page"><view class="login-hero"><image class="login-hero-img" src="{{a}}" mode="widthFix"/></view><view class="header"><text class="title">邮箱密码登录</text></view><view wx:if="{{b}}" class="panel"><input class="input" type="text" placeholder="输入邮箱" value="{{c}}" bindinput="{{d}}"/><input class="input" type="password" placeholder="输入密码" value="{{e}}" bindinput="{{f}}"/><button class="btn primary" disabled="{{g}}" bindtap="{{h}}">登录</button><view class="quick-inline"><button class="quick-link" bindtap="{{i}}">注册</button><button class="quick-link" bindtap="{{j}}">忘记密码</button></view></view><view wx:if="{{k}}" class="panel minor"><input class="input" type="text" placeholder="输入用户名" value="{{l}}" bindinput="{{m}}"/><input class="input" type="text" placeholder="输入邮箱" value="{{n}}" bindinput="{{o}}"/><view class="row"><input class="input flex1" type="text" placeholder="邮箱验证码" value="{{p}}" bindinput="{{q}}"/><button class="btn ghost" disabled="{{s}}" bindtap="{{t}}">{{r}}</button></view><input class="input" type="password" placeholder="输入密码(≥6位)" value="{{v}}" bindinput="{{w}}"/><input class="input" type="password" placeholder="再次输入密码" value="{{x}}" bindinput="{{y}}"/><button class="btn primary" disabled="{{z}}" bindtap="{{A}}">注册新用户</button></view><view wx:if="{{B}}" class="panel minor"><input class="input" type="text" placeholder="输入邮箱" value="{{C}}" bindinput="{{D}}"/><view class="row"><input class="input flex1" type="text" placeholder="邮箱验证码" value="{{E}}" bindinput="{{F}}"/><button class="btn ghost" disabled="{{H}}" bindtap="{{I}}">{{G}}</button></view><input class="input" type="password" placeholder="新密码(≥6位)" value="{{J}}" bindinput="{{K}}"/><input class="input" type="password" placeholder="再次输入新密码" value="{{L}}" bindinput="{{M}}"/><button class="btn primary" disabled="{{N}}" bindtap="{{O}}">重置密码</button></view></view>
|
||||
@@ -24,39 +24,78 @@
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
/**
|
||||
* 这里是uni-app内置的常用样式变量
|
||||
*
|
||||
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
|
||||
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
|
||||
*
|
||||
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
|
||||
*/
|
||||
/* 颜色变量 */
|
||||
/* 行为相关颜色 */
|
||||
/* 藏青系主色(高亮) */
|
||||
/* 文字基本颜色 */
|
||||
/* 背景颜色 */
|
||||
/* 边框颜色 */
|
||||
/* 尺寸变量 */
|
||||
/* 文字尺寸 */
|
||||
/* 图片尺寸 */
|
||||
/* Border Radius */
|
||||
/* 水平间距 */
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.auth-page {
|
||||
padding: 32rpx;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 24rpx;
|
||||
position: relative;
|
||||
min-height: 100vh;
|
||||
}
|
||||
.tabs {
|
||||
.header {
|
||||
display: flex;
|
||||
gap: 24rpx;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 8rpx 0 0;
|
||||
}
|
||||
.tab {
|
||||
padding: 12rpx 20rpx;
|
||||
border-radius: 999rpx;
|
||||
background: #f2f4f8;
|
||||
color: #5b6b80;
|
||||
font-weight: 700;
|
||||
.title {
|
||||
font-size: 34rpx;
|
||||
font-weight: 800;
|
||||
color: #111;
|
||||
}
|
||||
.tab.active {
|
||||
background: #2d6be6;
|
||||
color: #fff;
|
||||
.login-hero {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
padding: 16rpx 0 0;
|
||||
}
|
||||
.login-hero-img {
|
||||
width: 72%;
|
||||
max-width: 560rpx;
|
||||
border-radius: 8rpx;
|
||||
}
|
||||
.panel {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 16rpx;
|
||||
background: #fff;
|
||||
padding: 24rpx;
|
||||
border-radius: 16rpx;
|
||||
border: 2rpx solid #eef2f9;
|
||||
background: transparent;
|
||||
padding: 0;
|
||||
border-radius: 0;
|
||||
border: none;
|
||||
}
|
||||
.panel.minor {
|
||||
margin-top: 12rpx;
|
||||
}
|
||||
.input {
|
||||
background: #f7f9ff;
|
||||
border: 2rpx solid rgba(45, 107, 230, 0.12);
|
||||
background: #ffffff;
|
||||
border: 2rpx solid #e5e7eb;
|
||||
border-radius: 12rpx;
|
||||
padding: 22rpx 20rpx;
|
||||
font-size: 28rpx;
|
||||
@@ -78,8 +117,47 @@
|
||||
.btn.primary {
|
||||
background: linear-gradient(135deg, #4788ff 0%, #2d6be6 100%);
|
||||
color: #fff;
|
||||
border: 1rpx solid rgba(45, 107, 230, 0.25);
|
||||
width: 72%;
|
||||
margin: 0 auto;
|
||||
padding: 14rpx 16rpx;
|
||||
}
|
||||
.btn.ghost {
|
||||
background: #eef3ff;
|
||||
color: #2d6be6;
|
||||
}
|
||||
/* 右下角快捷入口:贴着登录功能,无边框、无背景 */
|
||||
.quick-inline {
|
||||
display: flex;
|
||||
gap: 28rpx;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
.quick-link {
|
||||
background: transparent !important;
|
||||
color: #2d6be6;
|
||||
border: none !important;
|
||||
outline: none;
|
||||
padding: 0;
|
||||
font-size: 26rpx;
|
||||
font-weight: 700;
|
||||
box-shadow: none;
|
||||
line-height: 1.2;
|
||||
}
|
||||
.quick-link::after {
|
||||
border: none !important;
|
||||
}
|
||||
/* 注册/重置页:验证码按钮与左侧输入框等高,且更紧凑 */
|
||||
.panel.minor .row > .input {
|
||||
height: 76rpx;
|
||||
padding: 0 20rpx;
|
||||
}
|
||||
.panel.minor .row > .btn.ghost {
|
||||
height: 76rpx;
|
||||
padding: 0 20rpx;
|
||||
border-radius: 12rpx;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
@@ -24,6 +24,7 @@
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.register-container {
|
||||
position: relative;
|
||||
min-height: 100vh;
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.page {
|
||||
padding-bottom: 140rpx;
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.page {
|
||||
padding-bottom: 140rpx;
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.page {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.page {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
@@ -7,6 +7,7 @@ const _sfc_main = {
|
||||
data() {
|
||||
return {
|
||||
KPI_ICONS: common_config.KPI_ICONS,
|
||||
KPI_LABELS: common_constants.KPI_LABELS,
|
||||
kpi: { todaySales: "0.00", monthSales: "0.00", monthProfit: "0.00", stockCount: "0" },
|
||||
activeTab: "home",
|
||||
notices: [],
|
||||
@@ -166,6 +167,10 @@ const _sfc_main = {
|
||||
common_vendor.index.navigateTo({ url: common_constants.ROUTES.report });
|
||||
return;
|
||||
}
|
||||
if (item.key === "vip") {
|
||||
common_vendor.index.navigateTo({ url: "/pages/my/vip" });
|
||||
return;
|
||||
}
|
||||
if (item.key === "otherPay") {
|
||||
try {
|
||||
common_vendor.index.setStorageSync("ORDER_DEFAULT_PARAMS", { biz: "expense" });
|
||||
@@ -184,7 +189,7 @@ const _sfc_main = {
|
||||
},
|
||||
goDetail() {
|
||||
try {
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:253", "[index] goDetail → /pages/detail/index");
|
||||
common_vendor.index.__f__("log", "at pages/index/index.vue:259", "[index] goDetail → /pages/detail/index");
|
||||
} catch (e) {
|
||||
}
|
||||
common_vendor.index.switchTab({ url: "/pages/detail/index" });
|
||||
@@ -209,29 +214,33 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
a: common_vendor.t($data.consultLabel),
|
||||
b: common_vendor.o((...args) => $options.onConsultTap && $options.onConsultTap(...args)),
|
||||
c: $data.KPI_ICONS.todaySales,
|
||||
d: common_vendor.t($data.kpi.todaySales),
|
||||
e: $data.KPI_ICONS.monthSales,
|
||||
f: common_vendor.t($data.kpi.monthSales),
|
||||
g: $data.KPI_ICONS.monthProfit,
|
||||
h: common_vendor.t($data.kpi.monthProfit),
|
||||
i: $data.KPI_ICONS.stockCount,
|
||||
j: common_vendor.t($data.kpi.stockCount),
|
||||
k: $data.consultDialogVisible
|
||||
d: common_vendor.t($data.KPI_LABELS.todaySales),
|
||||
e: common_vendor.t($data.kpi.todaySales),
|
||||
f: $data.KPI_ICONS.monthSales,
|
||||
g: common_vendor.t($data.KPI_LABELS.monthSales),
|
||||
h: common_vendor.t($data.kpi.monthSales),
|
||||
i: $data.KPI_ICONS.monthProfit,
|
||||
j: common_vendor.t($data.KPI_LABELS.monthProfit),
|
||||
k: common_vendor.t($data.kpi.monthProfit),
|
||||
l: $data.KPI_ICONS.stockCount,
|
||||
m: common_vendor.t($data.KPI_LABELS.stockCount),
|
||||
n: common_vendor.t($data.kpi.stockCount),
|
||||
o: $data.consultDialogVisible
|
||||
}, $data.consultDialogVisible ? {
|
||||
l: $data.consultMessage,
|
||||
m: common_vendor.o(($event) => $data.consultMessage = $event.detail.value),
|
||||
n: common_vendor.o((...args) => $options.closeConsultDialog && $options.closeConsultDialog(...args)),
|
||||
o: common_vendor.o((...args) => $options.submitConsult && $options.submitConsult(...args)),
|
||||
p: common_vendor.o(() => {
|
||||
p: $data.consultMessage,
|
||||
q: common_vendor.o(($event) => $data.consultMessage = $event.detail.value),
|
||||
r: common_vendor.o((...args) => $options.closeConsultDialog && $options.closeConsultDialog(...args)),
|
||||
s: common_vendor.o((...args) => $options.submitConsult && $options.submitConsult(...args)),
|
||||
t: common_vendor.o(() => {
|
||||
}),
|
||||
q: common_vendor.o(() => {
|
||||
v: common_vendor.o(() => {
|
||||
})
|
||||
} : {}, {
|
||||
r: $data.loadingNotices
|
||||
w: $data.loadingNotices
|
||||
}, $data.loadingNotices ? {} : $data.noticeError ? {
|
||||
t: common_vendor.t($data.noticeError)
|
||||
y: common_vendor.t($data.noticeError)
|
||||
} : !$data.notices.length ? {} : {
|
||||
w: common_vendor.f($data.notices, (n, idx, i0) => {
|
||||
A: common_vendor.f($data.notices, (n, idx, i0) => {
|
||||
return common_vendor.e({
|
||||
a: common_vendor.t(n.text),
|
||||
b: n.tag
|
||||
@@ -243,9 +252,9 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
});
|
||||
})
|
||||
}, {
|
||||
s: $data.noticeError,
|
||||
v: !$data.notices.length,
|
||||
x: common_vendor.f($data.features, (item, k0, i0) => {
|
||||
x: $data.noticeError,
|
||||
z: !$data.notices.length,
|
||||
B: common_vendor.f($data.features, (item, k0, i0) => {
|
||||
return common_vendor.e({
|
||||
a: item.img
|
||||
}, item.img ? {
|
||||
|
||||
@@ -1 +1 @@
|
||||
<view class="home"><view class="hero"><view class="hero-top"><text class="brand">五金配件管家</text><view class="cta" bindtap="{{b}}" hover-class="cta-active" hover-stay-time="80"><text class="cta-text">{{a}}</text></view></view><view class="kpi kpi-grid"><view class="kpi-item kpi-card"><image src="{{c}}" class="kpi-icon" mode="aspectFit"></image><view class="kpi-content"><text class="kpi-label">今日销售额</text><text class="kpi-value">{{d}}</text></view></view><view class="kpi-item kpi-card"><image src="{{e}}" class="kpi-icon" mode="aspectFit"></image><view class="kpi-content"><text class="kpi-label">本月销售额</text><text class="kpi-value">{{f}}</text></view></view><view class="kpi-item kpi-card"><image src="{{g}}" class="kpi-icon" mode="aspectFit"></image><view class="kpi-content"><text class="kpi-label">本月利润</text><text class="kpi-value">{{h}}</text></view></view><view class="kpi-item kpi-card"><image src="{{i}}" class="kpi-icon" mode="aspectFit"></image><view class="kpi-content"><text class="kpi-label">库存商品数量</text><text class="kpi-value">{{j}}</text></view></view></view></view><view wx:if="{{k}}" class="dialog-mask" catchtouchmove="{{p}}" catchtap="{{q}}"><view class="dialog"><view class="dialog-title">咨询</view><block wx:if="{{r0}}"><textarea class="dialog-textarea" placeholder="请输入咨询内容..." maxlength="500" value="{{l}}" bindinput="{{m}}"></textarea></block><view class="dialog-actions"><view class="btn" bindtap="{{n}}">取消</view><view class="btn primary" bindtap="{{o}}">提交</view></view></view></view><view class="notice"><view class="notice-left">公告</view><view wx:if="{{r}}" class="notice-swiper" style="display:flex;align-items:center;color:#6b5a2a">加载中...</view><view wx:elif="{{s}}" class="notice-swiper" style="display:flex;align-items:center;color:#dd524d">{{t}}</view><view wx:elif="{{v}}" class="notice-swiper" style="display:flex;align-items:center;color:#6b5a2a">暂无公告</view><swiper wx:else class="notice-swiper" circular autoplay interval="4000" duration="400" vertical><swiper-item wx:for="{{w}}" wx:for-item="n" wx:key="e"><view class="notice-item" bindtap="{{n.d}}"><text class="notice-text">{{n.a}}</text><text wx:if="{{n.b}}" class="notice-tag">{{n.c}}</text></view></swiper-item></swiper></view><view class="section-title"><text class="section-text">常用功能</text></view><view class="grid-wrap"><view class="feature-grid"><view wx:for="{{x}}" wx:for-item="item" wx:key="g" class="feature-card" bindtap="{{item.h}}"><view class="fc-icon"><image wx:if="{{item.a}}" src="{{item.b}}" class="fc-img" mode="aspectFit" binderror="{{item.c}}"></image><text wx:elif="{{item.d}}" class="fc-emoji">{{item.e}}</text><view wx:else class="fc-placeholder"></view></view><view class="fc-title">{{item.f}}</view></view></view></view></view>
|
||||
<view class="home"><view class="hero"><view class="hero-top"><text class="brand">五金配件管家</text><view class="cta" bindtap="{{b}}" hover-class="cta-active" hover-stay-time="80"><text class="cta-text">{{a}}</text></view></view><view class="kpi kpi-grid"><view class="kpi-item kpi-card"><image src="{{c}}" class="kpi-icon" mode="aspectFit"></image><view class="kpi-content"><text class="kpi-label">{{d}}</text><text class="kpi-value">{{e}}</text></view></view><view class="kpi-item kpi-card"><image src="{{f}}" class="kpi-icon" mode="aspectFit"></image><view class="kpi-content"><text class="kpi-label">{{g}}</text><text class="kpi-value">{{h}}</text></view></view><view class="kpi-item kpi-card"><image src="{{i}}" class="kpi-icon" mode="aspectFit"></image><view class="kpi-content"><text class="kpi-label">{{j}}</text><text class="kpi-value">{{k}}</text></view></view><view class="kpi-item kpi-card"><image src="{{l}}" class="kpi-icon" mode="aspectFit"></image><view class="kpi-content"><text class="kpi-label">{{m}}</text><text class="kpi-value">{{n}}</text></view></view></view></view><view wx:if="{{o}}" class="dialog-mask" catchtouchmove="{{t}}" catchtap="{{v}}"><view class="dialog"><view class="dialog-title">咨询</view><block wx:if="{{r0}}"><textarea class="dialog-textarea" placeholder="请输入咨询内容..." maxlength="500" value="{{p}}" bindinput="{{q}}"></textarea></block><view class="dialog-actions"><view class="btn" bindtap="{{r}}">取消</view><view class="btn primary" bindtap="{{s}}">提交</view></view></view></view><view class="notice"><view class="notice-left">公告</view><view wx:if="{{w}}" class="notice-swiper" style="display:flex;align-items:center;color:#6b5a2a">加载中...</view><view wx:elif="{{x}}" class="notice-swiper" style="display:flex;align-items:center;color:#dd524d">{{y}}</view><view wx:elif="{{z}}" class="notice-swiper" style="display:flex;align-items:center;color:#6b5a2a">暂无公告</view><swiper wx:else class="notice-swiper" circular autoplay interval="4000" duration="400" vertical><swiper-item wx:for="{{A}}" wx:for-item="n" wx:key="e"><view class="notice-item" bindtap="{{n.d}}"><text class="notice-text">{{n.a}}</text><text wx:if="{{n.b}}" class="notice-tag">{{n.c}}</text></view></swiper-item></swiper></view><view class="section-title"><text class="section-text">常用功能</text></view><view class="grid-wrap"><view class="feature-grid"><view wx:for="{{B}}" wx:for-item="item" wx:key="g" class="feature-card" bindtap="{{item.h}}"><view class="fc-icon"><image wx:if="{{item.a}}" src="{{item.b}}" class="fc-img" mode="aspectFit" binderror="{{item.c}}"></image><text wx:elif="{{item.d}}" class="fc-emoji">{{item.e}}</text><view wx:else class="fc-placeholder"></view></view><view class="fc-title">{{item.f}}</view></view></view></view></view>
|
||||
@@ -24,6 +24,7 @@
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
page {
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.about {
|
||||
padding: 24rpx;
|
||||
}
|
||||
|
||||
@@ -182,9 +182,16 @@ const _sfc_main = {
|
||||
if (!value)
|
||||
return "-";
|
||||
const s = String(value);
|
||||
const m = s.match(/^(\d{4}-\d{2}-\d{2})([ T](\d{2}:\d{2}))/);
|
||||
const m = s.match(/^(\d{4}-\d{2}-\d{2})/);
|
||||
if (m)
|
||||
return `${m[1]} ${m[3]}`;
|
||||
return m[1];
|
||||
const d = new Date(s);
|
||||
if (!isNaN(d.getTime())) {
|
||||
const y = d.getFullYear();
|
||||
const mo = String(d.getMonth() + 1).padStart(2, "0");
|
||||
const da = String(d.getDate()).padStart(2, "0");
|
||||
return `${y}-${mo}-${da}`;
|
||||
}
|
||||
return s;
|
||||
},
|
||||
startLogin() {
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.me {
|
||||
padding: 24rpx;
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.orders {
|
||||
padding: 16rpx 16rpx calc(env(safe-area-inset-bottom) + 16rpx);
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.security {
|
||||
padding: 24rpx;
|
||||
}
|
||||
|
||||
@@ -8,21 +8,67 @@ const _sfc_main = {
|
||||
isVip: false,
|
||||
expire: "",
|
||||
price: 0,
|
||||
benefits: []
|
||||
benefits: [],
|
||||
normalAdmin: { isNormalAdmin: false, applicationStatus: "none" }
|
||||
};
|
||||
},
|
||||
onShow() {
|
||||
this.loadVip();
|
||||
this.loadNormalAdminStatus();
|
||||
this.composeBenefits();
|
||||
},
|
||||
computed: {
|
||||
expireDisplay() {
|
||||
const s = String(this.expire || "");
|
||||
return s || "11年11月11日";
|
||||
const v = this.expire;
|
||||
if (v === null || v === void 0)
|
||||
return "";
|
||||
if (typeof v === "number") {
|
||||
const d = new Date(v);
|
||||
if (!isNaN(d.getTime())) {
|
||||
const y = d.getFullYear();
|
||||
const m2 = String(d.getMonth() + 1).padStart(2, "0");
|
||||
const dd = String(d.getDate()).padStart(2, "0");
|
||||
return `${y}-${m2}-${dd}`;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
const s = String(v);
|
||||
const m = s.match(/^(\d{4}-\d{2}-\d{2})/);
|
||||
if (m)
|
||||
return m[1];
|
||||
const idx = s.search(/[ T]/);
|
||||
if (idx > 0) {
|
||||
const head = s.slice(0, idx);
|
||||
if (head)
|
||||
return head;
|
||||
}
|
||||
const d2 = new Date(s);
|
||||
if (!isNaN(d2.getTime())) {
|
||||
const y = d2.getFullYear();
|
||||
const m2 = String(d2.getMonth() + 1).padStart(2, "0");
|
||||
const dd2 = String(d2.getDate()).padStart(2, "0");
|
||||
return `${y}-${m2}-${dd2}`;
|
||||
}
|
||||
return s;
|
||||
},
|
||||
priceDisplay() {
|
||||
const n = Number(this.price);
|
||||
return Number.isFinite(n) && n > 0 ? n.toFixed(2) : "0.00";
|
||||
},
|
||||
applyDisabled() {
|
||||
var _a, _b;
|
||||
const s = String(((_a = this.normalAdmin) == null ? void 0 : _a.applicationStatus) || "none");
|
||||
return !!(((_b = this.normalAdmin) == null ? void 0 : _b.isNormalAdmin) || s === "approved" || s === "pending");
|
||||
},
|
||||
applyBtnText() {
|
||||
var _a, _b, _c;
|
||||
if (((_a = this.normalAdmin) == null ? void 0 : _a.isNormalAdmin) || ((_b = this.normalAdmin) == null ? void 0 : _b.applicationStatus) === "approved")
|
||||
return "已通过";
|
||||
if (((_c = this.normalAdmin) == null ? void 0 : _c.applicationStatus) === "pending")
|
||||
return "审核中";
|
||||
if (!this.isVip)
|
||||
return "仅限VIP";
|
||||
return "提交申请";
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@@ -44,6 +90,17 @@ const _sfc_main = {
|
||||
this.isVip = false;
|
||||
}
|
||||
},
|
||||
async loadNormalAdminStatus() {
|
||||
try {
|
||||
const data = await common_http.get("/api/normal-admin/application/status");
|
||||
this.normalAdmin = {
|
||||
isNormalAdmin: !!(data == null ? void 0 : data.isNormalAdmin),
|
||||
applicationStatus: String((data == null ? void 0 : data.applicationStatus) || "none")
|
||||
};
|
||||
} catch (e) {
|
||||
this.normalAdmin = { isNormalAdmin: false, applicationStatus: "none" };
|
||||
}
|
||||
},
|
||||
async onPay() {
|
||||
try {
|
||||
await common_http.post("/api/vip/pay", {});
|
||||
@@ -52,6 +109,20 @@ const _sfc_main = {
|
||||
} catch (e) {
|
||||
common_vendor.index.showToast({ title: String(e.message || "开通失败"), icon: "none" });
|
||||
}
|
||||
},
|
||||
async onApplyNormalAdmin() {
|
||||
var _a, _b, _c;
|
||||
if (this.applyDisabled) {
|
||||
const msg = ((_a = this.normalAdmin) == null ? void 0 : _a.isNormalAdmin) || ((_b = this.normalAdmin) == null ? void 0 : _b.applicationStatus) === "approved" ? "已通过,无需重复申请" : ((_c = this.normalAdmin) == null ? void 0 : _c.applicationStatus) === "pending" ? "审核中,请耐心等待" : "不可申请";
|
||||
return common_vendor.index.showToast({ title: msg, icon: "none" });
|
||||
}
|
||||
try {
|
||||
await common_http.post("/api/normal-admin/apply", { remark: "从我的-会员发起申请" });
|
||||
common_vendor.index.showToast({ title: "申请已提交", icon: "success" });
|
||||
await this.loadNormalAdminStatus();
|
||||
} catch (e) {
|
||||
common_vendor.index.showToast({ title: String(e.message || "申请失败"), icon: "none" });
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -79,9 +150,17 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
e: item.key
|
||||
});
|
||||
}),
|
||||
j: !$data.isVip
|
||||
j: $data.isVip
|
||||
}, $data.isVip ? {
|
||||
k: common_vendor.t($options.applyBtnText),
|
||||
l: common_vendor.n({
|
||||
disabled: $options.applyDisabled
|
||||
}),
|
||||
m: common_vendor.o((...args) => $options.onApplyNormalAdmin && $options.onApplyNormalAdmin(...args))
|
||||
} : {}, {
|
||||
n: !$data.isVip
|
||||
}, !$data.isVip ? {
|
||||
k: common_vendor.o((...args) => $options.onPay && $options.onPay(...args))
|
||||
o: common_vendor.o((...args) => $options.onPay && $options.onPay(...args))
|
||||
} : {});
|
||||
}
|
||||
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]);
|
||||
|
||||
@@ -1 +1 @@
|
||||
<view class="vip-page"><view class="vip-hero"><image class="hero-icon" src="{{a}}" mode="aspectFit"/><view class="hero-text"><text class="hero-title">{{b}}</text><text class="hero-subtitle">{{c}}</text></view><view class="{{['status-pill', e && 'active']}}"><text>{{d}}</text></view></view><view wx:if="{{f}}" class="vip-summary"><view class="summary-item"><text class="summary-label">会员状态</text><text class="summary-value success">已激活</text></view><view class="summary-item"><text class="summary-label">有效期至</text><text class="summary-value">{{g}}</text></view></view><view wx:else class="vip-summary"><view class="summary-item"><text class="summary-label">当前身份</text><text class="summary-value">普通用户</text></view><view class="summary-item"><text class="summary-label">会员价格</text><text class="summary-value highlight">¥{{h}}/月</text></view></view><view class="benefit-section"><view class="section-header"><text class="section-title">会员特权</text><text class="section-subtitle">聚焦数据留存与专业形象,让经营更有底气</text></view><view class="benefit-grid"><view wx:for="{{i}}" wx:for-item="item" wx:key="e" class="benefit-card"><image wx:if="{{item.a}}" src="{{item.b}}" class="benefit-icon" mode="aspectFit"/><text class="benefit-title">{{item.c}}</text><text class="benefit-desc">{{item.d}}</text></view></view></view><view wx:if="{{j}}" class="purchase-card"><view class="purchase-text"><text class="purchase-title">立即升级 VIP</text><text class="purchase-desc">不限历史数据、专属标识,助您高效管账</text></view><button class="purchase-btn" bindtap="{{k}}"><text>立即开通</text></button></view></view>
|
||||
<view class="vip-page"><view class="vip-hero"><image class="hero-icon" src="{{a}}" mode="aspectFit"/><view class="hero-text"><text class="hero-title">{{b}}</text><text class="hero-subtitle">{{c}}</text></view><view class="{{['status-pill', e && 'active']}}"><text>{{d}}</text></view></view><view wx:if="{{f}}" class="vip-summary"><view class="summary-item"><text class="summary-label">会员状态</text><text class="summary-value success">已激活</text></view><view class="summary-item"><text class="summary-label">有效期至</text><text class="summary-value">{{g}}</text></view></view><view wx:else class="vip-summary"><view class="summary-item"><text class="summary-label">当前身份</text><text class="summary-value">普通用户</text></view><view class="summary-item"><text class="summary-label">会员价格</text><text class="summary-value highlight">¥{{h}}/月</text></view></view><view class="benefit-section"><view class="section-header"><text class="section-title">会员特权</text><text class="section-subtitle">聚焦数据留存与专业形象,让经营更有底气</text></view><view class="benefit-grid"><view wx:for="{{i}}" wx:for-item="item" wx:key="e" class="benefit-card"><image wx:if="{{item.a}}" src="{{item.b}}" class="benefit-icon" mode="aspectFit"/><text class="benefit-title">{{item.c}}</text><text class="benefit-desc">{{item.d}}</text></view></view></view><view wx:if="{{j}}" class="apply-card"><view class="apply-text"><text class="apply-title">申请成为普通管理员</text><text class="apply-desc">在普通管理端参与配件审核</text></view><view role="button" class="{{['apply-btn', l]}}" bindtap="{{m}}"><text>{{k}}</text></view></view><view wx:if="{{n}}" class="purchase-card"><view class="purchase-text"><text class="purchase-title">立即升级 VIP</text><text class="purchase-desc">不限历史数据、专属标识,助您高效管账</text></view><button class="purchase-btn" bindtap="{{o}}"><text>立即开通</text></button></view></view>
|
||||
@@ -24,6 +24,7 @@
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
page {
|
||||
background: linear-gradient(180deg, #f8fbff 0%, #ffffff 60%) !important;
|
||||
}
|
||||
@@ -84,6 +85,11 @@ page {
|
||||
color: #fff;
|
||||
border-color: #4c8dff;
|
||||
}
|
||||
|
||||
/* 指定 hero 内激活态徽标文本为黑色 */
|
||||
.vip-hero .status-pill.active text {
|
||||
color: #000 !important;
|
||||
}
|
||||
.vip-summary {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
@@ -214,6 +220,58 @@ page {
|
||||
.purchase-btn:active {
|
||||
opacity: 0.88;
|
||||
}
|
||||
.apply-card {
|
||||
margin-top: 0;
|
||||
background: linear-gradient(135deg, rgba(30, 173, 145, 0.14) 0%, rgba(30, 173, 145, 0.06) 100%);
|
||||
border-radius: 28rpx;
|
||||
padding: 30rpx 28rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 24rpx;
|
||||
border: 2rpx solid rgba(30, 173, 145, 0.18);
|
||||
box-shadow: 0 10rpx 24rpx rgba(30, 173, 145, 0.15);
|
||||
}
|
||||
.apply-text {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 10rpx;
|
||||
}
|
||||
.apply-title {
|
||||
font-size: 32rpx;
|
||||
font-weight: 800;
|
||||
color: #1ead91;
|
||||
}
|
||||
.apply-desc {
|
||||
font-size: 24rpx;
|
||||
color: #247a66;
|
||||
line-height: 34rpx;
|
||||
}
|
||||
.apply-btn {
|
||||
flex: 0 0 auto;
|
||||
padding: 20rpx 36rpx;
|
||||
border-radius: 999rpx;
|
||||
border: none;
|
||||
background-color: transparent;
|
||||
background: linear-gradient(135deg, #1ead91 0%, #159b7e 100%);
|
||||
color: #fff;
|
||||
font-size: 28rpx;
|
||||
font-weight: 700;
|
||||
box-shadow: 0 10rpx 22rpx rgba(21, 155, 126, 0.2);
|
||||
}
|
||||
.apply-btn::after {
|
||||
border: none;
|
||||
}
|
||||
.apply-btn:active {
|
||||
opacity: 0.9;
|
||||
}
|
||||
.apply-btn.disabled {
|
||||
opacity: 0.5;
|
||||
background: #c7e8df;
|
||||
color: #fff;
|
||||
box-shadow: none;
|
||||
pointer-events: none;
|
||||
}
|
||||
@media (max-width: 375px) {
|
||||
.vip-summary {
|
||||
grid-template-columns: 1fr;
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.order {
|
||||
padding-bottom: 140rpx;
|
||||
}
|
||||
|
||||
@@ -13,22 +13,12 @@ const _sfc_main = {
|
||||
brand: "",
|
||||
model: "",
|
||||
spec: "",
|
||||
origin: "",
|
||||
categoryId: "",
|
||||
unitId: "",
|
||||
stock: null,
|
||||
safeMin: null,
|
||||
safeMax: null,
|
||||
purchasePrice: null,
|
||||
retailPrice: null,
|
||||
wholesalePrice: null,
|
||||
bigClientPrice: null,
|
||||
images: [],
|
||||
remark: "",
|
||||
platformStatus: "",
|
||||
sourceSubmissionId: ""
|
||||
},
|
||||
units: [],
|
||||
categories: [],
|
||||
keyboardHeight: 0
|
||||
};
|
||||
@@ -42,16 +32,9 @@ const _sfc_main = {
|
||||
this.disposeKeyboardListener();
|
||||
},
|
||||
computed: {
|
||||
unitNames() {
|
||||
return this.units.map((u) => u.name);
|
||||
},
|
||||
categoryNames() {
|
||||
return this.categories.map((c) => c.name);
|
||||
},
|
||||
unitLabel() {
|
||||
const u = this.units.find((x) => String(x.id) === String(this.form.unitId));
|
||||
return u ? u.name : "选择单位";
|
||||
},
|
||||
categoryLabel() {
|
||||
const c = this.categories.find((x) => String(x.id) === String(this.form.categoryId));
|
||||
return c ? c.name : "选择类别";
|
||||
@@ -59,7 +42,7 @@ const _sfc_main = {
|
||||
},
|
||||
methods: {
|
||||
async bootstrap() {
|
||||
await Promise.all([this.fetchUnits(), this.fetchCategories()]);
|
||||
await Promise.all([this.fetchCategories()]);
|
||||
if (this.id)
|
||||
this.loadDetail();
|
||||
},
|
||||
@@ -81,13 +64,6 @@ const _sfc_main = {
|
||||
} catch (_) {
|
||||
}
|
||||
},
|
||||
async fetchUnits() {
|
||||
try {
|
||||
const res = await common_http.get("/api/product-units");
|
||||
this.units = Array.isArray(res == null ? void 0 : res.list) ? res.list : Array.isArray(res) ? res : [];
|
||||
} catch (_) {
|
||||
}
|
||||
},
|
||||
async fetchCategories() {
|
||||
try {
|
||||
const res = await common_http.get("/api/product-categories");
|
||||
@@ -95,11 +71,6 @@ const _sfc_main = {
|
||||
} catch (_) {
|
||||
}
|
||||
},
|
||||
onPickUnit(e) {
|
||||
const idx = Number(e.detail.value);
|
||||
const u = this.units[idx];
|
||||
this.form.unitId = u ? u.id : "";
|
||||
},
|
||||
onPickCategory(e) {
|
||||
const idx = Number(e.detail.value);
|
||||
const c = this.categories[idx];
|
||||
@@ -136,16 +107,7 @@ const _sfc_main = {
|
||||
brand: data.brand,
|
||||
model: data.model,
|
||||
spec: data.spec,
|
||||
origin: data.origin,
|
||||
categoryId: data.categoryId,
|
||||
unitId: data.unitId,
|
||||
stock: data.stock,
|
||||
safeMin: data.safeMin,
|
||||
safeMax: data.safeMax,
|
||||
purchasePrice: data.purchasePrice,
|
||||
retailPrice: data.retailPrice,
|
||||
wholesalePrice: data.wholesalePrice,
|
||||
bigClientPrice: data.bigClientPrice,
|
||||
images: (data.images || []).map((i) => i.url || i),
|
||||
remark: data.remark || "",
|
||||
platformStatus: data.platformStatus || "",
|
||||
@@ -159,10 +121,6 @@ const _sfc_main = {
|
||||
common_vendor.index.showToast({ title: "请填写名称", icon: "none" });
|
||||
return false;
|
||||
}
|
||||
if (this.form.safeMin != null && this.form.safeMax != null && Number(this.form.safeMin) > Number(this.form.safeMax)) {
|
||||
common_vendor.index.showToast({ title: "安全库存区间不合法", icon: "none" });
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
buildPayload() {
|
||||
@@ -173,18 +131,7 @@ const _sfc_main = {
|
||||
brand: f.brand,
|
||||
model: f.model,
|
||||
spec: f.spec,
|
||||
origin: f.origin,
|
||||
categoryId: f.categoryId || null,
|
||||
unitId: f.unitId,
|
||||
safeMin: f.safeMin,
|
||||
safeMax: f.safeMax,
|
||||
prices: {
|
||||
purchasePrice: f.purchasePrice,
|
||||
retailPrice: f.retailPrice,
|
||||
wholesalePrice: f.wholesalePrice,
|
||||
bigClientPrice: f.bigClientPrice
|
||||
},
|
||||
stock: f.stock,
|
||||
images: f.images,
|
||||
remark: f.remark
|
||||
};
|
||||
@@ -204,7 +151,7 @@ const _sfc_main = {
|
||||
await common_http.post("/api/products", payload);
|
||||
common_vendor.index.showToast({ title: "保存成功", icon: "success", mask: false });
|
||||
if (goOn && !this.id) {
|
||||
this.form = { name: "", barcode: "", brand: "", model: "", spec: "", origin: "", categoryId: "", unitId: "", stock: null, safeMin: null, safeMax: null, purchasePrice: null, retailPrice: null, wholesalePrice: null, bigClientPrice: null, images: [], remark: "", platformStatus: "", sourceSubmissionId: "" };
|
||||
this.form = { name: "", barcode: "", brand: "", model: "", spec: "", categoryId: "", images: [], remark: "", platformStatus: "", sourceSubmissionId: "" };
|
||||
} else {
|
||||
setTimeout(() => common_vendor.index.navigateBack(), 400);
|
||||
}
|
||||
@@ -244,58 +191,23 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
m: common_vendor.o(common_vendor.m(($event) => $data.form.spec = $event.detail.value, {
|
||||
trim: true
|
||||
})),
|
||||
n: $data.form.origin,
|
||||
o: common_vendor.o(common_vendor.m(($event) => $data.form.origin = $event.detail.value, {
|
||||
trim: true
|
||||
})),
|
||||
p: common_vendor.t($options.unitLabel),
|
||||
q: $options.unitNames,
|
||||
r: common_vendor.o((...args) => $options.onPickUnit && $options.onPickUnit(...args)),
|
||||
s: common_vendor.t($options.categoryLabel),
|
||||
t: $options.categoryNames,
|
||||
v: common_vendor.o((...args) => $options.onPickCategory && $options.onPickCategory(...args)),
|
||||
w: $data.form.stock,
|
||||
x: common_vendor.o(common_vendor.m(($event) => $data.form.stock = $event.detail.value, {
|
||||
number: true
|
||||
})),
|
||||
y: $data.form.safeMin,
|
||||
z: common_vendor.o(common_vendor.m(($event) => $data.form.safeMin = $event.detail.value, {
|
||||
number: true
|
||||
})),
|
||||
A: $data.form.safeMax,
|
||||
B: common_vendor.o(common_vendor.m(($event) => $data.form.safeMax = $event.detail.value, {
|
||||
number: true
|
||||
})),
|
||||
C: $data.form.purchasePrice,
|
||||
D: common_vendor.o(common_vendor.m(($event) => $data.form.purchasePrice = $event.detail.value, {
|
||||
number: true
|
||||
})),
|
||||
E: $data.form.retailPrice,
|
||||
F: common_vendor.o(common_vendor.m(($event) => $data.form.retailPrice = $event.detail.value, {
|
||||
number: true
|
||||
})),
|
||||
G: $data.form.wholesalePrice,
|
||||
H: common_vendor.o(common_vendor.m(($event) => $data.form.wholesalePrice = $event.detail.value, {
|
||||
number: true
|
||||
})),
|
||||
I: $data.form.bigClientPrice,
|
||||
J: common_vendor.o(common_vendor.m(($event) => $data.form.bigClientPrice = $event.detail.value, {
|
||||
number: true
|
||||
})),
|
||||
K: common_vendor.o(($event) => $data.form.images = $event),
|
||||
L: common_vendor.p({
|
||||
n: common_vendor.t($options.categoryLabel),
|
||||
o: $options.categoryNames,
|
||||
p: common_vendor.o((...args) => $options.onPickCategory && $options.onPickCategory(...args)),
|
||||
q: common_vendor.o(($event) => $data.form.images = $event),
|
||||
r: common_vendor.p({
|
||||
formData: {
|
||||
ownerType: "product"
|
||||
},
|
||||
modelValue: $data.form.images
|
||||
}),
|
||||
M: $data.form.remark,
|
||||
N: common_vendor.o(common_vendor.m(($event) => $data.form.remark = $event.detail.value, {
|
||||
s: $data.form.remark,
|
||||
t: common_vendor.o(common_vendor.m(($event) => $data.form.remark = $event.detail.value, {
|
||||
trim: true
|
||||
})),
|
||||
O: common_vendor.o(($event) => $options.save(false)),
|
||||
P: common_vendor.o(($event) => $options.save(true)),
|
||||
Q: ($data.keyboardHeight || 0) + "px"
|
||||
v: common_vendor.o(($event) => $options.save(false)),
|
||||
w: common_vendor.o(($event) => $options.save(true)),
|
||||
x: ($data.keyboardHeight || 0) + "px"
|
||||
});
|
||||
}
|
||||
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]);
|
||||
|
||||
@@ -1 +1 @@
|
||||
<scroll-view scroll-y class="page"><view class="hero small"><text class="title">编辑货品</text><text class="sub">完善基础信息与价格</text></view><view wx:if="{{a}}" class="tip platform">平台推荐货品,建议谨慎修改核心字段</view><view wx:elif="{{b}}" class="tip custom">此货品源于我的提交,审核通过后已入库</view><view class="section"><view class="row"><text class="label">商品名称</text><input placeholder="必填" value="{{c}}" bindinput="{{d}}"/></view><view class="row"><text class="label">条形码</text><input class="input-long" placeholder="可扫码或输入" value="{{e}}" bindinput="{{f}}"/><button size="mini" class="picker-btn" bindtap="{{g}}">图片识码</button></view><view class="row"><input placeholder="品牌" value="{{h}}" bindinput="{{i}}"/></view><view class="row"><input placeholder="型号" value="{{j}}" bindinput="{{k}}"/></view><view class="row"><input placeholder="规格" value="{{l}}" bindinput="{{m}}"/></view><view class="row"><input placeholder="产地" value="{{n}}" bindinput="{{o}}"/></view><view class="row"><picker mode="selector" range="{{q}}" bindchange="{{r}}"><view class="picker">主单位:{{p}}</view></picker><picker mode="selector" range="{{t}}" bindchange="{{v}}"><view class="picker">类别:{{s}}</view></picker></view></view><view class="section"><view class="row"><text class="label">库存与安全库存</text></view><view class="row"><input type="number" placeholder="当前库存" value="{{w}}" bindinput="{{x}}"/><input type="number" placeholder="安全库存下限" value="{{y}}" bindinput="{{z}}"/><input type="number" placeholder="安全库存上限" value="{{A}}" bindinput="{{B}}"/></view></view><view class="section"><view class="row"><text class="label">价格(进价/零售/批发/大单)</text></view><view class="row prices"><input type="number" placeholder="进货价" value="{{C}}" bindinput="{{D}}"/><input type="number" placeholder="零售价" value="{{E}}" bindinput="{{F}}"/><input type="number" placeholder="批发价" value="{{G}}" bindinput="{{H}}"/><input type="number" placeholder="大单价" value="{{I}}" bindinput="{{J}}"/></view></view><view class="section"><text class="label">图片</text><image-uploader wx:if="{{L}}" u-i="4a3f460a-0" bind:__l="__l" bindupdateModelValue="{{K}}" u-p="{{L}}"/></view><view class="section"><text class="label">备注</text><block wx:if="{{r0}}"><textarea placeholder="可选" auto-height value="{{M}}" bindinput="{{N}}"/></block></view><view class="fixed" style="{{'bottom:' + Q}}"><button class="ghost" bindtap="{{O}}">保存</button><button class="primary" bindtap="{{P}}">保存并继续</button></view></scroll-view>
|
||||
<scroll-view scroll-y class="page"><view class="hero small"><text class="title">编辑货品</text><text class="sub">完善基础信息与价格</text></view><view wx:if="{{a}}" class="tip platform">平台推荐货品,建议谨慎修改核心字段</view><view wx:elif="{{b}}" class="tip custom">此货品源于我的提交,审核通过后已入库</view><view class="section"><view class="row"><text class="label">商品名称</text><input placeholder="必填" value="{{c}}" bindinput="{{d}}"/></view><view class="row"><text class="label">条形码</text><input class="input-long" placeholder="可扫码或输入" value="{{e}}" bindinput="{{f}}"/><button size="mini" class="picker-btn" bindtap="{{g}}">图片识码</button></view><view class="row"><input placeholder="品牌" value="{{h}}" bindinput="{{i}}"/></view><view class="row"><input placeholder="型号" value="{{j}}" bindinput="{{k}}"/></view><view class="row"><input placeholder="规格" value="{{l}}" bindinput="{{m}}"/></view><view class="row"><picker mode="selector" range="{{o}}" bindchange="{{p}}"><view class="picker">类别:{{n}}</view></picker></view></view><view class="section"><text class="label">图片</text><image-uploader wx:if="{{r}}" u-i="4a3f460a-0" bind:__l="__l" bindupdateModelValue="{{q}}" u-p="{{r}}"/></view><view class="section"><text class="label">备注</text><block wx:if="{{r0}}"><textarea placeholder="可选" auto-height value="{{s}}" bindinput="{{t}}"/></block></view><view class="fixed" style="{{'bottom:' + x}}"><button class="ghost" bindtap="{{v}}">保存</button><button class="primary" bindtap="{{w}}">保存并继续</button></view></scroll-view>
|
||||
@@ -24,6 +24,7 @@
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||||
.page {
|
||||
background: #ffffff;
|
||||
min-height: 100vh;
|
||||
|
||||