diff --git a/src/api/system/orderGoods/index.ts b/src/api/system/orderGoods/index.ts index 0c6cc04..be464e9 100644 --- a/src/api/system/orderGoods/index.ts +++ b/src/api/system/orderGoods/index.ts @@ -1,17 +1,14 @@ import request from '@/utils/request'; import type { ApiResult, PageResult } from '@/api/index'; import type { OrderGoods, OrderGoodsParam } from './model'; -import {SERVER_API_URL} from '@/config/setting'; /** * 分页查询订单商品 */ export async function pageOrderGoods(params: OrderGoodsParam) { const res = await request.get>>( - SERVER_API_URL + '/system/order-goods/page', - { - params - } + '/shop/shop-goods/page', + params ); if (res.code === 0) { return res.data; @@ -24,10 +21,8 @@ export async function pageOrderGoods(params: OrderGoodsParam) { */ export async function listOrderGoods(params?: OrderGoodsParam) { const res = await request.get>( - SERVER_API_URL + '/system/order-goods', - { - params - } + '/shop/shop-goods', + params ); if (res.code === 0 && res.data) { return res.data; @@ -40,7 +35,7 @@ export async function listOrderGoods(params?: OrderGoodsParam) { */ export async function addOrderGoods(data: OrderGoods) { const res = await request.post>( - SERVER_API_URL + '/system/order-goods', + '/shop/shop-goods', data ); if (res.code === 0) { @@ -54,7 +49,7 @@ export async function addOrderGoods(data: OrderGoods) { */ export async function updateOrderGoods(data: OrderGoods) { const res = await request.put>( - SERVER_API_URL + '/system/order-goods', + '/shop/shop-goods', data ); if (res.code === 0) { @@ -68,7 +63,7 @@ export async function updateOrderGoods(data: OrderGoods) { */ export async function removeOrderGoods(id?: number) { const res = await request.del>( - SERVER_API_URL + '/system/order-goods/' + id + '/shop/shop-goods/' + id ); if (res.code === 0) { return res.message; @@ -81,7 +76,7 @@ export async function removeOrderGoods(id?: number) { */ export async function removeBatchOrderGoods(data: (number | undefined)[]) { const res = await request.del>( - SERVER_API_URL + '/system/order-goods/batch', + '/shop/shop-goods/batch', { data } @@ -97,7 +92,7 @@ export async function removeBatchOrderGoods(data: (number | undefined)[]) { */ export async function getOrderGoods(id: number) { const res = await request.get>( - SERVER_API_URL + '/system/order-goods/' + id + '/shop/shop-goods/' + id ); if (res.code === 0 && res.data) { return res.data; diff --git a/src/api/system/orderGoods/model/index.ts b/src/api/system/orderGoods/model/index.ts index dddbbbe..948d932 100644 --- a/src/api/system/orderGoods/model/index.ts +++ b/src/api/system/orderGoods/model/index.ts @@ -1,4 +1,4 @@ -import type { PageParam } from '@/api'; +import type { PageParam } from '@/api/index'; /** * 订单商品 @@ -12,6 +12,8 @@ export interface OrderGoods { orderId?: number; // 项目ID itemId?: number; + // 商品ID + goodsId?: number; // 实际付款 payPrice?: string; // 购买数量 @@ -51,5 +53,6 @@ export interface OrderGoods { */ export interface OrderGoodsParam extends PageParam { id?: number; + orderId?: number; // 添加 orderId 属性 keywords?: string; } diff --git a/src/app.config.ts b/src/app.config.ts index 902e9fc..c4c4efa 100644 --- a/src/app.config.ts +++ b/src/app.config.ts @@ -4,7 +4,7 @@ export default defineAppConfig({ 'pages/order/order', 'pages/kefu/kefu', 'pages/user/user', - 'pages/find/find' + // 'pages/find/find' ], "subpackages": [ { @@ -37,29 +37,14 @@ export default defineAppConfig({ "userVerify/index" ] }, - // { - // "root": "hjm", - // "pages": [ - // "list", - // "location", - // "query", - // "fence", - // "video/video", - // "exam/exam", - // "bx/bx", - // "bx/bx-add", - // "trajectory/trajectory", - // "gps-log/gps-log" - // // "bx/bx-list", - // // "question/detail" - // ] - // } - // { - // "root": "shop", - // "pages": [ - // - // ] - // } + { + "root": "shop", + "pages": [ + 'orderDetail/index', + 'goodsDetail/index', + 'orderConfirm/index', + ] + } ], window: { backgroundTextStyle: 'dark', @@ -79,12 +64,12 @@ export default defineAppConfig({ selectedIconPath: "assets/tabbar/home-active.png", text: "首页", }, - { - pagePath: "pages/find/find", - iconPath: "assets/tabbar/find.png", - selectedIconPath: "assets/tabbar/find-active.png", - text: "发现", - }, + // { + // pagePath: "pages/find/find", + // iconPath: "assets/tabbar/find.png", + // selectedIconPath: "assets/tabbar/find-active.png", + // text: "发现", + // }, { pagePath: "pages/order/order", iconPath: "assets/tabbar/order.png", diff --git a/src/app.scss b/src/app.scss index c546fd5..b24f82d 100644 --- a/src/app.scss +++ b/src/app.scss @@ -34,3 +34,18 @@ button[open-type="chooseAvatar"] { line-height: inherit !important; border-radius: 0 !important; } + +.buy-btn{ + height: 70px; + background: linear-gradient(to bottom, #1cd98a, #24ca94); + border-radius: 100px; + color: #ffffff; + display: flex; + align-items: center; + justify-content: space-around; + .cart-icon{ + background: linear-gradient(to bottom, #bbe094, #4ee265); + border-radius: 100px 0 0 100px; + height: 70px; + } +} diff --git a/src/bszx/bm-cert/bm-cert.config.ts b/src/bszx/bm-cert/bm-cert.config.ts deleted file mode 100644 index 48b266b..0000000 --- a/src/bszx/bm-cert/bm-cert.config.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default definePageConfig({ - navigationBarTitleText: '邀请函', - navigationBarBackgroundColor: '#ffe0e0' -}) diff --git a/src/bszx/bm-cert/bm-cert.scss b/src/bszx/bm-cert/bm-cert.scss deleted file mode 100644 index b973363..0000000 --- a/src/bszx/bm-cert/bm-cert.scss +++ /dev/null @@ -1,13 +0,0 @@ -.cert-bg{ - width: 750px; - height: 1320px; - margin: 0 auto; - background: url("https://oss.wsdns.cn/20250304/5147356628a3460e811cf5fb90df26a7.png") no-repeat; - background-size: 100%; -} -.cert-content{ - width: 480px; - height: 720px; - font-size: 24px; - padding-top: 250px; -} diff --git a/src/bszx/bm-cert/bm-cert.tsx b/src/bszx/bm-cert/bm-cert.tsx deleted file mode 100644 index 99566ea..0000000 --- a/src/bszx/bm-cert/bm-cert.tsx +++ /dev/null @@ -1,89 +0,0 @@ -import './bm-cert.scss' -import {useEffect, useState} from "react"; -import Taro from '@tarojs/taro' -import {getPoster} from "@/api/bszx/bszxBm"; -import {ConfigProvider, Loading} from "@nutui/nutui-react-taro"; - -function BmCert() { - const [poster, setPoster] = useState('') - const [loading, setLoading] = useState(true) - - const generatePoster = () => { - if (process.env.NODE_ENV === 'development') { - // setPoster("https://oss.wsdns.cn/20250306/deec1c968aed4bc58a168a0f63ac8c87.jpg") - } - // 保存到临时地址 - Taro.downloadFile({ - url: poster, - success: function (res) { - Taro.saveImageToPhotosAlbum({ - filePath: res.tempFilePath, - success: function () { - Taro.showToast({ - title: '保存成功', - icon: 'success', - duration: 2000 - }); - }, - fail: function (err) { - if (err.errMsg === 'saveImageToPhotosAlbum:fail auth deny') { - } - } - }) - } - }) - } - const reload = () => { - getPoster().then(img => { - setPoster(`${img}`) - setTimeout(() => { - setLoading(false) - },1000) - if (process.env.NODE_ENV === 'development') { - // setPoster("https://oss.wsdns.cn/20250306/deec1c968aed4bc58a168a0f63ac8c87.jpg") - } - }) - } - useEffect(() => { - reload() - }, []); - - return ( - <> - { - loading ? -
- - 加载中 - -
- : -
- - {/*
*/} - {/*

尊敬的 {nickName} 校友 :

*/} - {/* 百廿风华,桃李百中。2025年,百色市百色中学迎来建校 120*/} - {/* 周年。十秩沧桑砺洗、薪火相继,百色中学走过百折不挠、上下求索的光辉历程;爱党爱国、无私奉献、团结务实、积极进取的百中精神,始终引领学校风雨兼程、砥砺奋进;一代代百中人的耕耘与拼搏,闪耀着不同时期特有的亮点,积淀深厚的文化底蕴,承载着国家和人民殷切期望,铸造了今日的辉煌。兹定于*/} - {/* 2025年5月1日(星期四)上午9:00 举行百色中学建校 120*/} - {/* 周年庆典活动。诚邀您拨冗莅临出席、共襄盛举,为母校的改革发展献计献策!相约浓浓绎夏,畅谈别后心路,共话同窗师友情;相信您的到来必定令校庆活动添光异彩。*/} - {/* 专此诚邀,敬祈惠允。*/} - {/*

百色市百色中学

*/} - {/*

2025年1月2日

*/} - {/*
*/} -
- {/* -
-
- } - - ) -} - -export default BmCert; diff --git a/src/bszx/bm-log/bm-log.config.ts b/src/bszx/bm-log/bm-log.config.ts deleted file mode 100644 index 2aead7f..0000000 --- a/src/bszx/bm-log/bm-log.config.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default definePageConfig({ - navigationBarTitleText: '我的报名', - navigationBarBackgroundColor: '#ffe0e0' -}) diff --git a/src/bszx/bm-log/bm-log.tsx b/src/bszx/bm-log/bm-log.tsx deleted file mode 100644 index f107e63..0000000 --- a/src/bszx/bm-log/bm-log.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import { Cell } from '@nutui/nutui-react-taro' -import {useEffect, useState} from "react"; -import {myPageBszxBm} from "@/api/bszx/bszxBm"; -import {BszxBm} from "@/api/bszx/bszxBm/model"; -import navTo from "@/utils/common"; - -const BmLog = () => { - const [list, setList] = useState() - const reload = () => { - myPageBszxBm({limit: 1000}).then(res => { - if(res.list){ - setList(res.list); - } - }) - } - - useEffect(() => { - reload() - }, []) - - return ( -
- {list?.map((item, index) => { - return ( - { - navTo('/bszx/bm-cert/bm-cert?id=' + item.id,true) - }} /> - ) - })} -
- ) -} -export default BmLog diff --git a/src/bszx/bm.config.ts b/src/bszx/bm.config.ts deleted file mode 100644 index 18640b4..0000000 --- a/src/bszx/bm.config.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default definePageConfig({ - navigationBarTitleText: '我要报名', - navigationBarBackgroundColor: '#ffe0e0' -}) diff --git a/src/bszx/bm.tsx b/src/bszx/bm.tsx deleted file mode 100644 index 250e8fc..0000000 --- a/src/bszx/bm.tsx +++ /dev/null @@ -1,388 +0,0 @@ -import {useEffect, useState} from 'react' -import Taro, {getCurrentInstance} from '@tarojs/taro' -import { - Form, - Button, - Input, - Radio, - SideNavBar, - SubSideNavBar, - SideNavBarItem -} from '@nutui/nutui-react-taro' -import {DictData} from "@/api/system/dict-data/model"; -import {Picker} from '@nutui/nutui-react-taro' -import {pageDictData} from "@/api/system/dict-data"; -import {addBszxBm, myPageBszxBm} from "@/api/bszx/bszxBm"; -import {BszxBm} from "@/api/bszx/bszxBm/model"; -import {getBszxClassForTree} from "@/api/bszx/bszxClass"; -// import {User} from "@/api/system/user/model"; -// import Banner from "../pages/index/Banner"; - -const {router} = getCurrentInstance() -const Bm = () => { - const formId = Number(router?.params.id) - - const [form] = Form.useForm() - const [sex, setSex] = useState() - const [gradeName, setGradeName] = useState('') - const [className, setClassName] = useState('') - const [phone, setPhone] = useState('') - const [classList, setClassList] = useState() - const [gradeList, setGradeList] = useState() - const [present, setPresent] = useState() - const [isVisibleClass, setIsVisibleClass] = useState(false) - const [isVisibleGrade, setIsVisibleGrade] = useState(false) - const [FormData, setFormData] = useState( - { - type: 0, - name: undefined, - sex: undefined, - phone: undefined, - className: undefined, - gradeName: undefined, - address: undefined, - workUnit: undefined, - position: undefined, - present: undefined, - formId: undefined, - comments: undefined - } - ) - - // 提交表单 - const submitSucceed = (values: any) => { - addBszxBm({ - formId, - name: values.name || FormData.name, - sex: values.sex || FormData.sex, - phone: phone, - type: values.type || FormData.type, - className: className || FormData.className, - gradeName: gradeName || FormData.gradeName, - address: values.address || FormData.address, - workUnit: values.workUnit || FormData.workUnit, - position: values.position || FormData.position, - present: values.present ? '能' : '', - comments: values.comments || FormData.comments - }).then((data) => { - if (data) { - console.log(data,'data') - Taro.showToast({title: `报名成功`, icon: 'success'}) - // setFormData(); - Taro.setStorageSync('NickName', values.name || FormData.name) - setTimeout(() => { - Taro.navigateTo({ - url: '/bszx/bm-cert/bm-cert' - }) - }, 1000) - } - }).catch(() => { - Taro.showToast({ - title: '请勿重复报名', - icon: 'error' - }); - }) - } - - const submitFailed = (error: any) => { - console.log(error, 'err...') - // Taro.showToast({ title: error[0].message, icon: 'error' }) - } - - const classConfirmPicker = ( - options: any[] - ) => { - let description = '' - options.forEach((option: any) => { - description += ` ${option.text}` - }) - setClassName(description) - } - const gradeNameConfirmPicker = ( - options: any[] - ) => { - let description = '' - options.forEach((option: any) => { - description += ` ${option.text}` - }) - setGradeName(description) - } - const changePicker = (options: any[], values: any, columnIndex: number) => { - form.setFieldValue('className', values) - console.log(options, columnIndex) - } - - const [navBarState, setNavBarState] = useState({ - visible: false - }) - const changeNarBar = (visible) => { - setNavBarState({ - visible - }) - } - - const onClassChange = (gradeName: string, className: string) => { - console.log(gradeName,className) - setGradeName(gradeName); - setClassName(className); - setFormData({ - ...FormData, - gradeName, - className - }) - setNavBarState({ - visible: false - }) - } - - const reload = () => { - if (!Taro.getStorageSync('access_token')) { - Taro.showModal({ - title: '提示', - content: '请先登录', - showCancel: false, - success: function (res) { - if (res.confirm) { - Taro.switchTab({ - url: '/pages/user/user' - }) - } - } - }) - return false; - } - myPageBszxBm().then(res => { - const item = res.list[0]; - console.log(item, 'myPageBszxBm') - if (item) { - setFormData(item) - if (item.gradeName) { - setGradeName(item.gradeName) - } - if (item.className) { - setClassName(item.className) - } - } - }) - getBszxClassForTree().then(res => { - console.log(res, 'setClassList'); - setClassList(res); - }) - pageDictData({limit: 200}).then(res => { - setSex(res?.list.filter((item) => item.dictCode === 'sex')) - setPresent(res?.list.filter((item) => item.dictCode === 'present')) - // setClassList([res?.list.filter((item) => item.dictCode === 'Class')]) - setGradeList(res?.list.filter((item) => { - if (item.dictCode === 'Grade') { - item.value = item.dictDataCode; - item.text = item.dictDataName; - return item - } - })) - }) - setPhone(Taro.getStorageSync('Phone')) - form.setFieldValue('phone', Taro.getStorageSync('Phone')) // 确保 form 已经初始化 - } - - useEffect(() => { - reload() - }, [form]) // 确保 form 已经初始化 - - return ( - <> - {/**/} - {/*
*/} - {/* */} - {/* 返回*/} - {/*
*/} -
-
submitSucceed(values)} - onFinishFailed={(errors) => submitFailed(errors)} - footer={ -
- -
- } - > - - - 校友 - 单位 - - - - - - - - { - sex?.map((item, index) => ( - - {item.dictDataName} - - )) - } - - - - - - - - - - - - - - - - - - - - { - present?.map((item, index) => ( - - {item.dictDataName} - - )) - } - - - - - -
- classConfirmPicker(list)} - defaultValue={[2]} - threeDimensional={false} - duration={1000} - onClose={() => setIsVisibleClass(false)} - onChange={changePicker} - /> - gradeNameConfirmPicker(list)} - defaultValue={[2]} - threeDimensional={false} - duration={1000} - onClose={() => setIsVisibleGrade(false)} - onChange={changePicker} - /> - { - changeNarBar(false) - }} - > - { - classList?.map((item) => { - return ( - - { - item.children?.map((sub) => { - return ( - <> - - { - sub.children?.map((sub2) => { - return ( - { - onClassChange(sub.name,sub2.name) - }}/> - ) - }) - } - - - ) - }) - } - - ); - }) - } - -
- - ) -} - -export default Bm diff --git a/src/bszx/cert-query/cert-query.scss b/src/bszx/cert-query/cert-query.scss deleted file mode 100644 index 2e0cd9b..0000000 --- a/src/bszx/cert-query/cert-query.scss +++ /dev/null @@ -1,13 +0,0 @@ -.cert-bg{ - width: 720px; - height: 1320px; - margin: 15px auto; - background: url("https://oss.wsdns.cn/20250127/cb1088c3b1354a118477a0b1a3cdac41.png") no-repeat; - background-size: 100%; -} -.cert-content{ - width: 480px; - height: 720px; - font-size: 24px; - padding-top: 450px; -} diff --git a/src/bszx/cert-query/cert-query.ts b/src/bszx/cert-query/cert-query.ts deleted file mode 100644 index 9b36178..0000000 --- a/src/bszx/cert-query/cert-query.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default definePageConfig({ - navigationBarTitleText: '捐款凭证', - navigationBarBackgroundColor: '#ffe0e0' -}) diff --git a/src/bszx/cert-query/cert-query.tsx b/src/bszx/cert-query/cert-query.tsx deleted file mode 100644 index 331fd70..0000000 --- a/src/bszx/cert-query/cert-query.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import './pay-cert.scss' -import {useEffect, useState} from "react"; -import {useRouter} from '@tarojs/taro' -import dayjs from 'dayjs' -import {getBszxPay} from "@/api/bszx/bszxPay"; -import {BszxPay} from "@/api/bszx/bszxPay/model"; -function CertQuery() { - const {params} = useRouter(); - const [nickName, setNickName] = useState() - const [payLog, setPayLog] = useState() - - const reload = () => { - if (params.id) { - getBszxPay(Number(params.id)).then(res => { - if(res){ - setNickName(res.name) - setPayLog(res); - console.log(nickName) - console.log(res,'log.....') - } - }) - } - } - useEffect(() => { - reload() - }, []); - return ( -
-
-

亲爱的 { payLog?.name || '匿名'} :

- 感谢您支持捐赠百色市百色中学温暖校园项目!您捐赠金额:{payLog?.price || 0}元,单号:{payLog?.id},时间:{payLog?.createTime}。对您的奉献表示诚挚的敬意,特此证明! -

百色市百色中学

-

{dayjs(payLog?.createTime).format('YYYY-MM-DD')}

-
-
- ) -} - -export default CertQuery; diff --git a/src/bszx/flash.config.ts b/src/bszx/flash.config.ts deleted file mode 100644 index 40dad92..0000000 --- a/src/bszx/flash.config.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default definePageConfig({ - navigationBarTitleText: '烟花特效', - navigationBarBackgroundColor: '#000000' -}) diff --git a/src/bszx/flash.scss b/src/bszx/flash.scss deleted file mode 100644 index 7a23325..0000000 --- a/src/bszx/flash.scss +++ /dev/null @@ -1,58 +0,0 @@ -.fireworks-container { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 40%; - overflow: hidden; - pointer-events: none; -} - -.firework { - position: absolute; - left: var(--x); - top: var(--y); -} - -.particle { - position: absolute; - width: 6px; - height: 6px; - border-radius: 50%; - background-color: var(--color); - transform-origin: center; - animation: explode 1.5s ease-out forwards; - opacity: 0; - - &::before { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - border-radius: 50%; - background-color: var(--color); - animation: particle-glow 1.5s ease-out forwards; - } -} - -@keyframes explode { - 0% { - transform: rotate(var(--angle)) translateX(0) scale(1); - opacity: 1; - } - 100% { - transform: rotate(var(--angle)) translateX(100px) scale(0); - opacity: 0; - } -} - -@keyframes particle-glow { - 0% { - filter: brightness(1) blur(0); - } - 100% { - filter: brightness(2) blur(3px); - } -} diff --git a/src/bszx/flash.tsx b/src/bszx/flash.tsx deleted file mode 100644 index f58ae79..0000000 --- a/src/bszx/flash.tsx +++ /dev/null @@ -1,101 +0,0 @@ -import { useEffect, useState } from 'react' -import './flash.scss' -import {CmsAd} from "@/api/cms/cmsAd/model"; -import {getCmsAd} from "@/api/cms/cmsAd"; -import { Swiper } from '@nutui/nutui-react-taro' - -interface Firework { - id: number - x: number - y: number - color: string -} - -const MyPage = () => { - const [item, setItem] = useState() - const reload = () => { - getCmsAd(366).then(data => { - setItem(data) - }) - } - const [fireworks, setFireworks] = useState([]) - - // 生成随机颜色 - const getRandomColor = () => { - const colors = [ - '#ff0000', '#00ff00', '#0000ff', '#ffff00', - '#ff00ff', '#00ffff', '#ff9900', '#ff0099' - ] - return colors[Math.floor(Math.random() * colors.length)] - } - - // 创建新烟花 - const createFirework = () => { - const firework: Firework = { - id: Date.now(), - x: Math.random() * 100, // 随机横向位置 (0-100%) - y: Math.random() * 40, // 修改为随机纵向位置 (0-40%) - color: getRandomColor() - } - setFireworks(prev => [...prev, firework]) - - // 1.5秒后移除烟花 - setTimeout(() => { - setFireworks(prev => prev.filter(f => f.id !== firework.id)) - }, 1500) - } - - useEffect(() => { - reload(); - // 初始创建更多烟花 - for (let i = 0; i < 6; i++) { // 修改初始烟花数量为6个 - createFirework() - } - - // 缩短创建间隔,增加密度 - const interval = setInterval(() => { - createFirework() - }, 500) // 修改为500ms创建一次 - - return () => clearInterval(interval) - }, []) - - return ( - <> - - {item?.imageList?.map((item) => ( - - - - ))} - -
- {fireworks.map(firework => ( -
- {/* 生成30个粒子 */} - {Array.from({ length: 30 }).map((_, i) => ( -
- ))} -
- ))} -
- - ) -} - -export default MyPage diff --git a/src/bszx/item.config.ts b/src/bszx/item.config.ts deleted file mode 100644 index 3f5dbea..0000000 --- a/src/bszx/item.config.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default definePageConfig({ - navigationBarTitleText: '文章详情', - navigationBarBackgroundColor: '#ffe0e0' -}) diff --git a/src/bszx/item.scss b/src/bszx/item.scss deleted file mode 100644 index c73ac7b..0000000 --- a/src/bszx/item.scss +++ /dev/null @@ -1,11 +0,0 @@ -.content{ - padding: 32px; - line-height: 2.4rem; -} -.content p{ - text-indent: 2rem; -} - -.nr-bg{ - background: linear-gradient(to bottom, #ffe0e0, #ffffff); -} diff --git a/src/bszx/item.tsx b/src/bszx/item.tsx deleted file mode 100644 index 699f4d6..0000000 --- a/src/bszx/item.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import {useEffect, useState} from 'react' -import {Tag} from '@nutui/nutui-react-taro' -import {useRouter, useShareAppMessage, useShareTimeline} from '@tarojs/taro' -import {CmsArticle} from "@/api/cms/cmsArticle/model" -import {Eye} from '@nutui/icons-react-taro' -// 显示html富文本 -import {View, RichText} from '@tarojs/components' -import './item.scss' -import {wxParse} from "@/utils/common"; -import {getCmsArticle} from "@/api/cms/cmsArticle"; - -function Item() { - const {params} = useRouter(); - // 文章详情 - const [item, setItem] = useState() - // 浏览量 - const [views, setViews] = useState() - - const reload = () => { - getCmsArticle(Number(params.id)).then(data => { - if(data){ - data.content = wxParse(data.content) - setItem(data) - setViews(data.actualViews) - } - }) - } - - useShareTimeline(() => { - return { - title: item?.title, - path: `/bszx/item?id=${item?.articleId}` - }; - }); - - useShareAppMessage(() => { - return { - title: item?.title, - path: `/bszx/item?id=${item?.articleId}`, - success: function (res) { - console.log('分享成功', res); - }, - fail: function (res) { - console.log('分享失败', res); - } - }; - }); - - useEffect(() => { - reload(); - }, []); - - return ( -
-
{item?.title}
-
- {item?.categoryName} -
{views}
-
- - - -
- ) -} - -export default Item diff --git a/src/bszx/pay-cert/pay-cert.config.ts b/src/bszx/pay-cert/pay-cert.config.ts deleted file mode 100644 index 9b36178..0000000 --- a/src/bszx/pay-cert/pay-cert.config.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default definePageConfig({ - navigationBarTitleText: '捐款凭证', - navigationBarBackgroundColor: '#ffe0e0' -}) diff --git a/src/bszx/pay-cert/pay-cert.scss b/src/bszx/pay-cert/pay-cert.scss deleted file mode 100644 index 8cf2c84..0000000 --- a/src/bszx/pay-cert/pay-cert.scss +++ /dev/null @@ -1,13 +0,0 @@ -.cert-bg{ - width: 750px; - height: 100vh; - margin: 0 auto; - background: url("https://oss.wsdns.cn/20250127/cb1088c3b1354a118477a0b1a3cdac41.png") no-repeat; - background-size: 100%; -} -.cert-content{ - width: 480px; - height: 720px; - font-size: 24px; - padding-top: 450px; -} diff --git a/src/bszx/pay-cert/pay-cert.tsx b/src/bszx/pay-cert/pay-cert.tsx deleted file mode 100644 index 567bf04..0000000 --- a/src/bszx/pay-cert/pay-cert.tsx +++ /dev/null @@ -1,84 +0,0 @@ -import './pay-cert.scss' -import {useEffect, useState} from "react"; -import {useRouter} from '@tarojs/taro' -import Taro from '@tarojs/taro' -import {getPayCert} from "@/api/bszx/bszxPay"; -import {ConfigProvider, Loading} from "@nutui/nutui-react-taro"; - -function PayCert() { - const {params} = useRouter(); - const [poster, setPoster] = useState('') - const [loading, setLoading] = useState(true) - - const generatePayCert = () => { - if (process.env.NODE_ENV === 'development') { - // setPoster("https://oss.wsdns.cn/20250304/8a9aac182ac94494a806c4bda5766fee.png") - } - // 保存到临时地址 - Taro.downloadFile({ - url: poster, - success: function (res) { - Taro.saveImageToPhotosAlbum({ - filePath: res.tempFilePath, - success: function () { - Taro.showToast({ - title: '保存成功', - icon: 'success', - duration: 2000 - }); - }, - fail: function (err) { - if (err.errMsg === 'saveImageToPhotosAlbum:fail auth deny') { - } - } - }) - } - }) - } - - const reload = () => { - if (params.id) { - getPayCert(Number(params.id)).then(img => { - console.log(img, 'img....') - setPoster(`${img}`) - setTimeout(() => { - setLoading(false) - },1000) - if (process.env.NODE_ENV === 'development') { - // setPoster("https://oss.wsdns.cn/20250304/8a9aac182ac94494a806c4bda5766fee.png") - } - }) - } - } - useEffect(() => { - reload() - }, []); - return ( - <> - {loading ? -
- - 加载中 - -
: - -
- -
- {/* -
-
- } - - - ) -} - -export default PayCert; diff --git a/src/bszx/pay-log/pay-log.config.ts b/src/bszx/pay-log/pay-log.config.ts deleted file mode 100644 index 53c7c30..0000000 --- a/src/bszx/pay-log/pay-log.config.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default definePageConfig({ - navigationBarTitleText: '捐款记录', - navigationBarBackgroundColor: '#ffe0e0' -}) diff --git a/src/bszx/pay-log/pay-log.tsx b/src/bszx/pay-log/pay-log.tsx deleted file mode 100644 index afa91d8..0000000 --- a/src/bszx/pay-log/pay-log.tsx +++ /dev/null @@ -1,104 +0,0 @@ -import {Avatar, Button, Cell, Space} from '@nutui/nutui-react-taro' -import {useEffect, useState, CSSProperties} from "react"; -import {BszxPay} from "@/api/bszx/bszxPay/model"; -import {myPageBszxPay} from "@/api/bszx/bszxPay"; -import {InfiniteLoading} from '@nutui/nutui-react-taro' -import dayjs from "dayjs"; -import navTo from "@/utils/common"; - -const InfiniteUlStyle: CSSProperties = { - height: '80vh', - width: '100%', - padding: '0', - overflowY: 'auto', - overflowX: 'hidden', -} -function PayRecord() { - const [list, setList] = useState([]) - const [page, setPage] = useState(1) - const [hasMore, setHasMore] = useState(true) - const reload = async () => { - myPageBszxPay({page}).then(res => { - if (res?.list && res?.list.length > 0) { - const newList = list?.concat(res.list) - setList(newList); - setHasMore(true) - } else { - setHasMore(false) - } - }) - } - - const reloadMore = async () => { - setPage(page + 1) - reload(); - } - - useEffect(() => { - setPage(2) - reload() - }, []) - - return ( -
- -
    - { - console.log('onScroll') - }} - onScrollToUpper={() => { - console.log('onScrollToUpper') - }} - loadingText={ - <> - 加载中 - - } - loadMoreText={ - <> - 没有更多了 - - } - > - {list?.map(item => { - return ( - -
    -
    - - -
    -
    - {item.name || '匿名'} -
    -
    {item.formName},{dayjs(item.createTime).format('YYYY-MM-DD HH:mm')}
    -
    心愿:{item.comments}
    -
    -
    -
    -
    - ¥{item.price} - -
    -
    -
    - ) - })} -
    -
-
-
- ) -} - -export default PayRecord diff --git a/src/bszx/pay-record/pay-record.config.ts b/src/bszx/pay-record/pay-record.config.ts deleted file mode 100644 index 6bb86a9..0000000 --- a/src/bszx/pay-record/pay-record.config.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default definePageConfig({ - navigationBarTitleText: '善款明细', - navigationBarBackgroundColor: '#ffe0e0' -}) diff --git a/src/bszx/pay-record/pay-record.tsx b/src/bszx/pay-record/pay-record.tsx deleted file mode 100644 index 5763bdf..0000000 --- a/src/bszx/pay-record/pay-record.tsx +++ /dev/null @@ -1,118 +0,0 @@ -import {Avatar, Cell, Space} from '@nutui/nutui-react-taro' -import {useEffect, useState, CSSProperties} from "react"; -import {BszxPay} from "@/api/bszx/bszxPay/model"; -import {getCount, pageBszxPay} from "@/api/bszx/bszxPay"; -import {InfiniteLoading} from '@nutui/nutui-react-taro' -import dayjs from "dayjs"; - -const InfiniteUlStyle: CSSProperties = { - height: '70vh', - width: '100%', - padding: '0', - overflowY: 'auto', - overflowX: 'hidden', -} -function PayRecord() { - const [list, setList] = useState([]) - const [page, setPage] = useState(1) - const [hasMore, setHasMore] = useState(true) - const [totalMoney, setTotalMoney] = useState() - const [numbers, setNumbers] = useState() - const reload = async () => { - pageBszxPay({page}).then(res => { - let newList: BszxPay[] | undefined = [] - if (res?.list && res?.list.length > 0) { - newList = list?.concat(res.list) - setHasMore(true) - } else { - newList = res?.list - setHasMore(false) - } - setList(newList || []); - }) - getCount().then(res => { - setNumbers(res.numbers); - setTotalMoney(res.totalMoney); - }) - } - - const reloadMore = async () => { - setPage(page + 1) - reload(); - } - - useEffect(() => { - setPage(2) - reload() - }, []) - - return ( -
- -
-
- 已筹资金(元) - ¥{totalMoney}元 -
-
- 爱心人次 - {numbers}次 -
-
-
- -
    - { - console.log('onScroll') - }} - onScrollToUpper={() => { - console.log('onScrollToUpper') - }} - loadingText={ - <> - 加载中 - - } - loadMoreText={ - <> - 没有更多了 - - } - > - {list?.map(item => { - return ( - -
    -
    - - -
    -
    - {item.name || '匿名'} -
    -
    {item.formName},{dayjs(item.createTime).format('YYYY-MM-DD HH:mm')}
    -
    心愿:{item.comments}
    -
    -
    -
    -
    - ¥{item.price} -
    -
    -
    - ) - })} -
    -
-
-
- ) -} - -export default PayRecord diff --git a/src/bszx/pay/detail.config.ts b/src/bszx/pay/detail.config.ts deleted file mode 100644 index abc7b3c..0000000 --- a/src/bszx/pay/detail.config.ts +++ /dev/null @@ -1,6 +0,0 @@ -export default definePageConfig({ - navigationBarTitleText: '捐款详情', - enableShareTimeline: true, - enableShareAppMessage: true, - navigationBarBackgroundColor: '#ffe0e0' -}) diff --git a/src/bszx/pay/detail.scss b/src/bszx/pay/detail.scss deleted file mode 100644 index 9322cd7..0000000 --- a/src/bszx/pay/detail.scss +++ /dev/null @@ -1,18 +0,0 @@ -.content { - padding: 32px; - line-height: 2.4rem; -} -.content-bg{ - background-image: url("https://oss.wsdns.cn/20250224/7230c35b276f420a8527d08358759d8c.jpg"); - background-repeat: no-repeat; - background-size: 100%; - background-position: bottom; -} - -page{ - background-color: #fff2ee !important; -} - -.nr-bg{ - background: linear-gradient(to bottom, #ffe0e0, #ffffff); -} diff --git a/src/bszx/pay/detail.tsx b/src/bszx/pay/detail.tsx deleted file mode 100644 index fb80862..0000000 --- a/src/bszx/pay/detail.tsx +++ /dev/null @@ -1,173 +0,0 @@ -import {useEffect, useState} from 'react' -import {Image, Tag} from '@nutui/nutui-react-taro' -import {useRouter} from '@tarojs/taro' -import {Divider} from '@nutui/nutui-react-taro' -import dayjs from 'dayjs' -import Taro, { - useLoad, - useShareAppMessage, - useShareTimeline, -} from '@tarojs/taro'; -import {CmsArticle} from "@/api/cms/cmsArticle/model" -import {Eye, Clock, PickedUp, Purse, Coupon} from '@nutui/icons-react-taro' -import AddCartBar from "@/components/AddCartBar"; -// 显示html富文本 -import {View, RichText} from '@tarojs/components' -import './detail.scss' -import Line from "@/components/Gap"; -import {wxParse} from "@/utils/common"; -import {getCmsArticle} from "@/api/cms/cmsArticle"; -import {pageBszxPay} from "@/api/bszx/bszxPay"; -import {getUserInfo, getWxOpenId} from "@/api/layout"; - -function Detail() { - const {params} = useRouter(); - // 文章详情 - const [item, setItem] = useState() - // 浏览量 - const [views, setViews] = useState() - // 报名人数 - const [bmUsers, setBmUsers] = useState() - // 是否登录 - const [isLogin, setIsLogin] = useState(false) - const reload = () => { - getCmsArticle(Number(params.id)).then(data => { - if (data) { - data.content = wxParse(data.content) - setItem(data) - setViews(data.actualViews) - } - }) - pageBszxPay({ - formId: Number(params.id), - }).then(res => { - if (res) { - setBmUsers(res.count) - } - }) - // 登录 - Taro.getUserInfo({ - success: (res) => { - console.log(res.userInfo.avatarUrl) - getUserInfo().then((data) => { - if (data) { - setIsLogin(true); - console.log(isLogin,'isLogin') - Taro.setStorageSync('UserId', data.userId) - // 获取openId - if (!data.openid) { - Taro.login({ - success: (res) => { - getWxOpenId({code: res.code}).then(() => { - }) - } - }) - } - } - }).catch(() => { - console.log('未登录') - }); - } - }); - } - - useLoad(async () => { - //获取进入页面参数 scene为1154===朋友圈进入 - const data = Taro.getLaunchOptionsSync(); - console.log(data, 'data') - //开启分享 - Taro.showShareMenu({ - withShareTicket: true, - }); - }) - - useShareTimeline(() => { - return { - title: item?.title, - path: `/bszx/pay/detail?id=${item?.articleId}`, - imageUrl: item?.image, - }; - }); - - useShareAppMessage(() => { - return { - title: item?.title, - path: `/bszx/pay/detail?id=${item?.articleId}`, - imageUrl: item?.image, - success: function (res) { - console.log('分享成功', res); - }, - fail: function (res) { - console.log('分享失败', res); - } - }; - }); - - useEffect(() => { - reload(); - }, []); - - return ( - <> - - {/*linear-gradient(to bottom, #ffe0e0, #ffb6c1)*/} -
-
{item?.title}
-
- {item?.categoryName} -
{views}
-
- - { - item?.model == 'bm' ? '' : -
- { - !item?.endTime ? '' : - <> -
- -
{dayjs(item?.startTime).format('YYYY-MM-DD')} 至 {dayjs(item?.endTime).format('YYYY-MM-DD')}
-
- - - } - { - !item?.price ? '' : - <> -
- -
{item?.price == 0 ? '线下收费' : '¥' + item?.price} -
-
- - - } -
- -
已捐款人数 {bmUsers} -
-
-
- } - - -
- -
活动详情 -
-
- - - - -
- - - ) -} - -export default Detail diff --git a/src/bszx/pay/pay.config.ts b/src/bszx/pay/pay.config.ts deleted file mode 100644 index c3df326..0000000 --- a/src/bszx/pay/pay.config.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default definePageConfig({ - navigationBarTitleText: '我要捐款', - navigationBarBackgroundColor: '#ffe0e0' -}) diff --git a/src/bszx/pay/pay.tsx b/src/bszx/pay/pay.tsx deleted file mode 100644 index 398cac6..0000000 --- a/src/bszx/pay/pay.tsx +++ /dev/null @@ -1,212 +0,0 @@ -import {useEffect, useState} from 'react' -import Taro, {getCurrentInstance} from '@tarojs/taro' -import { - Form, - Button, - Input, - RadioGroup, - Radio -} from '@nutui/nutui-react-taro' -import {navigateTo} from '@tarojs/taro' -import {addBszxPay,myPageBszxPay} from "@/api/bszx/bszxPay"; -import {BszxPay} from "@/api/bszx/bszxPay/model"; -import {TenantId} from "@/utils/config"; -import {myPageBszxBm} from "@/api/bszx/bszxBm"; - -const Bm = () => { - const { router } = getCurrentInstance(); - const [formId, setFormId] = useState() - const [gradeName, setGradeName] = useState('') - const [className, setClassName] = useState('') - const [FormData, setFormData] = useState( - { - name: undefined, - sex: undefined, - phone: undefined, - className: undefined, - gradeName: undefined, - address: undefined, - workUnit: undefined, - position: undefined, - present: undefined, - formId: undefined - } - ) - - // 提交表单 - const submitSucceed = (values: any) => { - // if(values.price < 10){ - // Taro.showToast({ - // title: '捐款金额不能低于10元', - // icon: 'none' - // }) - // return false; - // } - Taro.request({ - url: 'https://cms-api.websoft.top/api/shop/shop-order', - method: 'POST', - header: { - 'content-type': 'application/json', - 'Authorization': Taro.getStorageSync('access_token'), - TenantId - }, - data: { - totalPrice: values.price, - payPrice: values.price, - tenantId: TenantId, - payType: 1, - comments: values.comments, - name: values.name || FormData.name, - sex: values.sex || FormData.sex, - phone: values.phone || FormData.phone, - className: className || FormData.className, - gradeName: gradeName || FormData.gradeName, - address: values.address || FormData.address, - workUnit: values.workUnit || FormData.workUnit, - position: values.position || FormData.position, - formId - }, - success: function (res) { - const data = res.data.data - if(data){ - Taro.requestPayment({ - timeStamp: data.timeStamp, - nonceStr: data.nonceStr, - package: data.package, - signType: data.signType, - paySign: data.paySign, - success: function (res) { - if(res.errMsg == "requestPayment:ok"){ - console.log('捐款成功') - addBszxPay({ - formId, - orderNo: data.orderNo, - name: values.name || FormData.name, - sex: values.sex || FormData.sex, - phone: values.phone || FormData.phone, - className: className || FormData.className, - gradeName: gradeName || FormData.gradeName, - address: values.address || FormData.address, - workUnit: values.workUnit || FormData.workUnit, - position: values.position || FormData.position, - present: values.present === '能', - price: values.price || FormData.price, - comments: values.comments, - }).then((data) => { - console.log(data,'payRes') - console.log('跳转证书页面') - setTimeout(() => { - navigateTo({url: `/bszx/pay-cert/pay-cert?id=${data?.id}&orderNo=${data?.orderNo}`}); - }, 1000) - }).catch(err => { - console.log(err,'errr....') - }) - } - }, - fail: function (res) { - console.log(res) - } - }) - } - } - }) - } - - const submitFailed = (error: any) => { - console.log(error,'err...') - // Taro.showToast({ title: error[0].message, icon: 'error' }) - } - const reload = () => { - myPageBszxBm().then(res => { - if(res.count == 0){ - Taro.showToast({ - title: '请先完善个人资料', - icon: 'error' - }) - setTimeout(() => { - Taro.navigateTo({ - url: '/user/profile/profile' - }) - }, 1000) - } - }) - myPageBszxPay({limit: 1}).then(res => { - const item = res.list[0]; - if(item){ - setFormData(item) - if(item.gradeName){ - setGradeName(item.gradeName) - } - if(item.className){ - setClassName(item.className) - } - } - }) - } - - useEffect(() => { - const id = router?.params.id as number | undefined; - setFormId(id) - reload() - }, []) - - return ( -
-
submitSucceed(values)} - onFinishFailed={(errors) => submitFailed(errors)} - footer={ -
- -
- } - > - - - 100元 - 200元 - 300元 - 500元 - 1000元 - 2000元 - 3000元 - 5000元 - 10000元 - - - - - - - - -
-
- ) -} - -export default Bm diff --git a/src/bszx/pdf.config.ts b/src/bszx/pdf.config.ts deleted file mode 100644 index 3f5dbea..0000000 --- a/src/bszx/pdf.config.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default definePageConfig({ - navigationBarTitleText: '文章详情', - navigationBarBackgroundColor: '#ffe0e0' -}) diff --git a/src/bszx/pdf.scss b/src/bszx/pdf.scss deleted file mode 100644 index 395131e..0000000 --- a/src/bszx/pdf.scss +++ /dev/null @@ -1,8 +0,0 @@ -.content{ - padding: 32px; - line-height: 2.4rem; -} - -.nr-bg{ - background: linear-gradient(to bottom, #ffe0e0, #ffffff); -} diff --git a/src/bszx/pdf.tsx b/src/bszx/pdf.tsx deleted file mode 100644 index 3be31ab..0000000 --- a/src/bszx/pdf.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import {useEffect, useState} from 'react' -import {useRouter} from '@tarojs/taro' -import {CmsArticle} from "@/api/cms/cmsArticle/model" -import {Eye} from '@nutui/icons-react-taro' -// 显示html富文本 -import {View, RichText} from '@tarojs/components' -import './pdf.scss' -import {wxParse} from "@/utils/common"; -import {getCmsArticle} from "@/api/cms/cmsArticle"; - -function Item() { - const {params} = useRouter(); - // 文章详情 - const [item, setItem] = useState() - // 浏览量 - const [views, setViews] = useState() - - const reload = () => { - getCmsArticle(Number(params.id)).then(data => { - if(data){ - data.content = wxParse(data.content) - setItem(data) - setViews(data.actualViews) - } - }) - } - - useEffect(() => { - reload(); - }, []); - - return ( -
-
{item?.title}
-
-
{views}
-
- - - -
- ) -} - -export default Item diff --git a/src/components/OrderList.tsx b/src/components/OrderList.tsx index 37e182d..0f0fe9d 100644 --- a/src/components/OrderList.tsx +++ b/src/components/OrderList.tsx @@ -1,5 +1,6 @@ import {Avatar, Cell, Space, Tabs, Button, TabPane} from '@nutui/nutui-react-taro' import {useEffect, useState, CSSProperties} from "react"; +import Taro from '@tarojs/taro'; import {BszxPay} from "@/api/bszx/bszxPay/model"; import {InfiniteLoading} from '@nutui/nutui-react-taro' import dayjs from "dayjs"; @@ -50,29 +51,55 @@ function OrderList(props: any) { const [tapIndex, setTapIndex] = useState('0') console.log(props.statusBarHeight, 'ppp') - const reload = async () => { - pageShopOrder({page}).then(res => { - let newList: BszxPay[] | undefined = [] + + const getOrderStatusParams = (index: string | number) => { + let params: { payStatus?: number; deliveryStatus?: number; orderStatus?: number } = {}; + switch (index) { + case '1': // 待付款 + params.payStatus = 0; + break; + case '2': // 待发货 + params.payStatus = 1; + params.deliveryStatus = 10; + break; + case '3': // 已收货 + params.deliveryStatus = 30; + break; + case '4': // 已完成 + params.orderStatus = 1; + break; + case '0': // 全部 + default: + break; + } + return params; + }; + + const reload = async (resetPage = false) => { + const currentPage = resetPage ? 1 : page; + const params = getOrderStatusParams(tapIndex); + pageShopOrder({ page: currentPage, ...params }).then(res => { + let newList: ShopOrder[] | undefined = []; if (res?.list && res?.list.length > 0) { - newList = list?.concat(res.list) - setHasMore(true) + newList = resetPage ? res.list : list?.concat(res.list); + setHasMore(true); } else { - newList = res?.list - setHasMore(false) + newList = res?.list; + setHasMore(false); } setList(newList || []); - }) - } + setPage(currentPage); + }); + }; const reloadMore = async () => { - setPage(page + 1) + setPage(page + 1); reload(); - } + }; useEffect(() => { - setPage(2) - reload() - }, []) + reload(true); // 首次加载或tab切换时重置页码 + }, [tapIndex]); // 监听tapIndex变化 return ( <> @@ -116,12 +143,12 @@ function OrderList(props: any) { > {list?.map(item => { return ( - + Taro.navigateTo({url: `/shop/orderDetail/index?orderId=${item.orderId}`})}>
copyText(`${item.orderNo}`)}>{item.orderNo} - 待付款 + onClick={(e) => {e.stopPropagation(); copyText(`${item.orderNo}`)}}>{item.orderNo} + 待付款 {/* 这里可以根据item.orderStatus显示不同的状态 */}
{dayjs(item.createTime).format('YYYY年MM月DD日 HH:mm:ss')}
diff --git a/src/hjm/BestSellers.tsx b/src/hjm/BestSellers.tsx deleted file mode 100644 index 5136f7d..0000000 --- a/src/hjm/BestSellers.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import {useEffect} from "react"; -import {Image, Space} from '@nutui/nutui-react-taro' -import Taro from '@tarojs/taro' - -const BestSellers = (props: any) => { - const reload = () => { - - } - - useEffect(() => { - reload() - }, []) - - return ( -
-
- {props.data?.map((item, index) => { - return ( -
Taro.navigateTo({url: '/hjm/query?id=' + item.code})}> - { item.image && ( - - )} -
- -
{item.code}
-
快递公司:{item.parentOrganization}
-
所属站点:{item.organization}
-
保险状态:{item.insuranceStatus} -
-
绑定操作员:{item.driver}
-
-
-
- ) - })} -
-
-
- ) -} -export default BestSellers diff --git a/src/hjm/bx/BestSellers.tsx b/src/hjm/bx/BestSellers.tsx deleted file mode 100644 index 25249af..0000000 --- a/src/hjm/bx/BestSellers.tsx +++ /dev/null @@ -1,202 +0,0 @@ -import React from "react"; -import {Image, Space, Tag, Button} from '@nutui/nutui-react-taro' -import {Truck, User, Shield, Location} from '@nutui/icons-react-taro' -import Taro from '@tarojs/taro' -import {HjmCar} from "@/api/hjm/hjmCar/model"; - -interface BestSellersProps { - data: HjmCar[] - onRefresh?: () => void -} - -/** - * 车辆列表组件 - */ -const BestSellers: React.FC = ({data, onRefresh}) => { - - // 获取保险状态显示 - const getInsuranceStatusDisplay = (status?: number) => { - switch (status) { - case 0: - return {text: '未投保', color: '#ff4d4f', bgColor: '#fff2f0'} - case 1: - return {text: '已投保', color: '#52c41a', bgColor: '#f6ffed'} - case 2: - return {text: '即将到期', color: '#faad14', bgColor: '#fffbe6'} - default: - return {text: '未知', color: '#8c8c8c', bgColor: '#f5f5f5'} - } - } - - // 跳转到车辆详情 - const navigateToDetail = (item: HjmCar) => { - Taro.navigateTo({ - url: `/hjm/query?id=${item.id}` - }) - } - - // 快速报险 - const quickInsurance = (item: HjmCar, event: any) => { - event.stopPropagation() - Taro.navigateTo({ - url: `/hjm/bx/bx-add?carId=${item.id}&carCode=${item.code}` - }) - } - - if (!data || data.length === 0) { - return null - } - - return ( -
-
- {data.map((item, index) => { - const insuranceStatus = getInsuranceStatusDisplay(item.insuranceStatus) - - return ( -
navigateToDetail(item)} - > -
- {/* 车辆图片 */} -
- -
- - {/* 车辆信息 */} -
- - {/* 车辆编号 */} -
- - - {item.code || '未知编号'} - -
- - {/* 快递公司 */} -
- - - 快递公司: - - - {item.parentOrganization || '未知'} - -
- - {/* 保险状态 */} -
- - - 保险状态: - - - {insuranceStatus.text} - -
- - {/* 操作员 */} -
- - - 操作员: - - - {item.driver || '未绑定'} - -
-
-
-
- - {/* 操作按钮 */} -
- - - -
-
- ) - })} -
-
- ) -} - -export default BestSellers diff --git a/src/hjm/bx/bx-add.config.ts b/src/hjm/bx/bx-add.config.ts deleted file mode 100644 index 4c9a8b6..0000000 --- a/src/hjm/bx/bx-add.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default definePageConfig({ - navigationBarTitleText: '一键报险' -}) diff --git a/src/hjm/bx/bx-add.tsx b/src/hjm/bx/bx-add.tsx deleted file mode 100644 index 44d6d04..0000000 --- a/src/hjm/bx/bx-add.tsx +++ /dev/null @@ -1,549 +0,0 @@ -import {useEffect, useState} from "react"; -import Taro from '@tarojs/taro' -import { - Button, - TextArea, - Cell, - Loading, - Space -} from '@nutui/nutui-react-taro' -import {Truck} from '@nutui/icons-react-taro' -import {addHjmBxLog} from "@/api/hjm/hjmBxLog"; -import {pageHjmCar} from "@/api/hjm/hjmCar"; -import {HjmBxLog} from "@/api/hjm/hjmBxLog/model"; -import {HjmCar} from "@/api/hjm/hjmCar/model"; -import {listCmsWebsiteField} from "@/api/cms/cmsWebsiteField"; -import {CmsWebsiteField} from "@/api/cms/cmsWebsiteField/model"; -import {TenantId} from "@/utils/config"; - -// 图片数据接口 -interface UploadedImageData { - url: string; -} - -/** - * 一键报险 - 添加报险记录页面 - */ -function BxAdd() { - const [loading, setLoading] = useState(false) - const [bxFiled, setBxFiled] = useState() - const [bxFiled2, setBxFiled2] = useState() - const [carInfo, setCarInfo] = useState(null) - const [fileList, setFileList] = useState([]) // 图片文件列表 - const [lastSubmitTime, setLastSubmitTime] = useState(0) // 最后提交时间 - const [formData, setFormData] = useState({ - carId: undefined, - accidentType: undefined, - image: undefined, - comments: '', - status: 0 // 0: 待审核, 1: 已通过, 2: 已驳回 - }) - - // 事故类型选项 - const accidentTypes = [ - {text: '轻微刮擦', value: '轻微刮擦'}, - {text: '碰撞事故', value: '碰撞事故'}, - {text: '追尾事故', value: '追尾事故'}, - {text: '侧翻事故', value: '侧翻事故'}, - {text: '其他事故', value: '其他事故'} - ] - - const [accidentType, setAccidentType] = useState('') - const [accidentDescription, setAccidentDescription] = useState('') - - // 初始化页面数据 - const initPageData = async () => { - try { - listCmsWebsiteField({}).then(data => { - const bxPhone = data.find(item => item.name === 'bxPhone'); - const bxPhone2 = data.find(item => item.name === 'bxPhone2'); - if (bxPhone) { - setBxFiled(bxPhone); - } - if (bxPhone2) { - setBxFiled2(bxPhone2); - } - }) - pageHjmCar({driverId: Taro.getStorageSync('UserId')}).then(res => { - const car = res?.list[0]; - if (car) { - setCarInfo(car) - setFormData(prev => ({ - ...prev, - carId: car.id - })) - } else { - Taro.showToast({ - title: '获取车辆信息失败', - icon: 'none' - }) - setTimeout(() => { - Taro.navigateBack() - }, 1000) - } - }) - } catch (error) { - console.error('获取车辆信息失败:', error) - Taro.showToast({ - title: '获取车辆信息失败', - icon: 'none' - }) - } finally { - setLoading(false) - } - } - - // 选择并上传图片 - const handleChooseImage = () => { - if (fileList.length >= 5) { - Taro.showToast({ - title: '最多只能上传5张图片', - icon: 'none' - }) - return - } - - Taro.chooseImage({ - count: 5 - fileList.length, // 剩余可选择的数量 - sizeType: ['compressed'], - sourceType: ['album', 'camera'], - success: (res) => { - console.log('选择图片成功:', res) - - // 逐个上传选中的图片 - res.tempFilePaths.forEach((filePath, index) => { - uploadSingleImage(filePath, index) - }) - }, - fail: (err) => { - console.log('选择图片失败:', err) - Taro.showToast({ - title: '选择图片失败', - icon: 'error' - }) - } - }) - } - - // 上传单张图片 - const uploadSingleImage = (filePath: string, index: number) => { - - Taro.uploadFile({ - url: 'https://server.gxwebsoft.com/api/oss/upload', - filePath: filePath, - name: 'file', - header: { - 'content-type': 'application/json', - TenantId - }, - success: (res) => { - try { - const data = JSON.parse(res.data); - console.log('上传成功', data) - if (data.code === 0) { - // 更新文件列表 - const newFile = { - name: `图片${Date.now()}_${index}`, - url: data.data.url, - status: 'success', - message: '上传成功', - type: 'image', - uid: `${Date.now()}_${index}`, - } - - setFileList(prev => { - const newList = [...prev, newFile] - // 同时更新表单数据 - 使用JSON格式存储 - const imageData: UploadedImageData[] = newList.map(f => ({ - url: f.url - })) - setFormData(prevForm => ({ - ...prevForm, - image: JSON.stringify(imageData) - })) - return newList - }) - - Taro.showToast({ - title: '上传成功', - icon: 'success' - }) - } else { - Taro.showToast({ - title: data.message || '上传失败', - icon: 'error' - }) - } - } catch (error) { - console.error('解析响应失败:', error) - Taro.showToast({ - title: '上传失败', - icon: 'error' - }) - } - }, - fail: (err) => { - console.log('上传请求失败', err); - Taro.showToast({ - title: '上传失败', - icon: 'error' - }) - } - }) - } - - // 处理文件删除 - const handleFileRemove = (file: any) => { - console.log('删除文件:', file) - const newFileList = fileList.filter(f => f.uid !== file.uid) - setFileList(newFileList) - - // 更新表单数据 - 使用JSON格式存储 - if (newFileList.length === 0) { - setFormData(prev => ({ - ...prev, - image: undefined - })) - } else { - const imageData: UploadedImageData[] = newFileList.map(f => ({ - url: f.url - })) - setFormData(prev => ({ - ...prev, - image: JSON.stringify(imageData) - })) - } - } - -// 提交表单 - const handleSubmit = async () => { - // 防止重复提交 - 检查loading状态 - if (loading) { - Taro.showToast({ - title: '正在提交中,请稍候...', - icon: 'loading' - }) - return - } - - // 防止快速连续点击 - 2秒内不允许重复提交 - const now = Date.now() - if (now - lastSubmitTime < 2000) { - Taro.showToast({ - title: '请勿频繁提交', - icon: 'none' - }) - return - } - setLastSubmitTime(now) - - // 表单验证 - if (!formData.carId) { - Taro.showToast({ - title: '请选择车辆', - icon: 'none' - }) - return - } - - if (!accidentType) { - Taro.showToast({ - title: '请选择事故类型', - icon: 'none' - }) - return - } - - if (!formData.image || fileList.length === 0) { - Taro.showToast({ - title: '请上传现场照片', - icon: 'none' - }) - return - } - - try { - setLoading(true) - - // 构建提交数据 - const submitData: HjmBxLog = { - ...formData, - accidentType: accidentType, - comments: `${accidentDescription || '无'}` - } - - console.log('提交的图片数据:', formData.image) - console.log('完整提交数据:', submitData) - - // 解析JSON格式的图片数据示例 - if (formData.image) { - try { - const parsedImages: UploadedImageData[] = JSON.parse(formData.image) - console.log('解析后的图片数据:', parsedImages) - console.log('图片数量:', parsedImages.length) - parsedImages.forEach((img, index) => { - console.log(`图片${index + 1}:`, { - url: img.url - }) - }) - } catch (error) { - console.error('解析图片数据失败:', error) - } - } - - await addHjmBxLog(submitData) - - Taro.showToast({ - title: '报险提交成功', - icon: 'success' - }) - - formData.image = '' - - setTimeout(() => { - Taro.navigateBack() - }, 2000) - - } catch (error) { - console.error('提交失败:', error) - Taro.showToast({ - title: '提交失败', - icon: 'error' - }) - } finally { - setLoading(false) - } - } - - useEffect(() => { - initPageData().then(r => { - console.log(r,'rr') - }) - }, []) - - if (loading && !carInfo) { - return ( -
- 加载中... -
- ) - } - - return ( -
-
- {bxFiled && (
{bxFiled.comments}:{bxFiled.value}
)} - {bxFiled2 && (
{bxFiled2.comments}:{bxFiled2.value}
)} -
- {/* 车辆信息卡片 */} - {carInfo && ( -
-
- - 车辆信息 -
- - -
- 车辆编号: - {carInfo.code} -
-
- 快递公司: - {carInfo.parentOrganization} -
-
- 操作员: - {carInfo.driver || '未绑定'} -
-
-
- )} - - - - {/* 现场照片 */} -
-
- 现场照片 - *必填(最多5张) - {fileList.length > 0 && ( - - 已上传{fileList.length}张 - - )} -
-
- {/* 显示已上传的图片 */} - {fileList.map((file) => ( -
- {file.name} - -
- ))} - - {/* 添加图片按钮 */} - {fileList.length < 5 && ( - - )} -
-
- - {/* 事故信息表单 */} -
-
- 事故信息 -
- - { - Taro.showActionSheet({ - itemList: accidentTypes.map(item => item.text), - success: (res) => { - setAccidentType(accidentTypes[res.tapIndex].value) - } - }) - }} - /> - -
- - {/* 事故描述 */} -
-
- 事故描述 - (选填) -
-