first commit
Some checks failed
build and push / build-and-push (push) Has been cancelled

This commit is contained in:
编码猿
2025-10-07 03:17:55 +08:00
commit b77e36a178
83 changed files with 6356 additions and 0 deletions

View File

@@ -0,0 +1 @@
# 临时占位,上传空文件夹,保存文件结构用,后面删除

View File

@@ -0,0 +1 @@
# 临时占位,上传空文件夹,保存文件结构用,后面删除

View File

@@ -0,0 +1 @@
# 临时占位,上传空文件夹,保存文件结构用,后面删除

View File

View File

@@ -0,0 +1,16 @@
import { RouteRecordRaw } from 'vue-router';
export const productRouter: Array<RouteRecordRaw> = [
{
path: '/Products',
name: 'ProductList',
component: () => import('../views/ProductList/ProductList.jsx'),
meta: { title: '商品列表' }
},
{
path: '/ProductDetail',
name: 'ProductDetail',
component: () => import('../views/ProductDetail/ProductDetail.jsx'),
meta: { title: '商品详情' }
},
]

View File

@@ -0,0 +1,5 @@
.ProductDetail {
.title {
color: blue;
}
}

View File

@@ -0,0 +1,62 @@
import styles from './ProductDetail.module.less'
import { product } from '@domains/product/di/productModule';
import { ProductType } from '@domains/product/domain/type/ProductType';
import { defineComponent, onMounted, reactive } from 'vue'
import { useRoute } from 'vue-router'
interface storeType {
item: ProductType
id: number
}
export default defineComponent({
setup() {
const route = useRoute();
const productService = product.createProductApplicationService();
const state = reactive<storeType>({
item: {} as ProductType,
id: 0
})
onMounted(() => {
if (!route.query.id) {
throw new Error("缺少id参数");
}
state.id = Number(route.query.id)
console.log("id: ", state.id);
loadProductDetail()
})
const loadProductDetail = async () => {
state.item = await productService.getProductInfo(state.id);
console.log("state.item: ", state.item);
}
return () => (
<div class={ styles.ProductDetail }>
<h1 class={ styles.title }> - </h1>
<hr/>
<p>id{ state.id }</p>
{ state.item.name }
<ul>
{
Object.entries(state.item).map(([ key, value ]) =>
<li>{ key }: { value }</li>
)
}
</ul>
</div>
)
}
})
// export default defineComponent({
// setup() {
// return () => (
// <div>商品详情</div>
// )
// }
// })

View File

@@ -0,0 +1,5 @@
.ProductList {
.test {
color: var(--theme-color);
}
}

View File

@@ -0,0 +1,79 @@
import styles from './ProductList.module.less'
import { defineComponent, onMounted, reactive } from 'vue'
import { useRouter } from 'vue-router';
import { product } from '@domains/product/di/productModule';
import { ProductType } from '@domains/product/domain/type/ProductType';
import { ElCard, ElIcon, Icons } from "shared/element-plus";
interface storeType {
list: Array<ProductType>
}
export default defineComponent({
setup() {
const router = useRouter();
const productService = product.createProductApplicationService();
const state = reactive<storeType>({
list: []
})
onMounted(() => {
loadProductList()
})
const loadProductList = async () => {
state.list = await productService.getProductList();
console.log("state.list: ", state.list);
}
const ElCardHeader = () => {
return (
<div class="card-header">
<ElIcon size={ 15 }>
<Icons.Position></Icons.Position>
</ElIcon>
<span>Card </span>
</div>
)
}
const ElCardFooter = () => {
return <div>Footer </div>
}
return () => (
<div class={ styles.ProductList }>
<h1 class={ styles.test }> - 3</h1>
<hr/>
<h2>Deno </h2>
<ElCard>
{ {
header: () => ElCardHeader(),
footer: () => ElCardFooter(),
default: () =>
state.list.map(item =>
<p key={ item.id } onClick={ () => {
router.push({ name: 'ProductDetail', query: { id: item.id } });
} }>
{ item.id } | { item.name } | ¥{ item.price }
</p>
)
} }
</ElCard>
</div>
)
}
})
// export default defineComponent({
// setup() {
// return () => (
// <div>商品列表</div>
// )
// }
// })