地址修改

This commit is contained in:
quantulr
2024-05-16 11:29:44 +08:00
parent 21029bcf0d
commit bae7c9766b
7 changed files with 63 additions and 51 deletions

62
.idea/workspace.xml generated
View File

@ -5,20 +5,13 @@
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="bdad98b9-7a5e-48f7-b79e-ed6a34d55dab" name="Default Changelist" comment="第一次提交"> <list default="true" id="bdad98b9-7a5e-48f7-b79e-ed6a34d55dab" name="Default Changelist" comment="第一次提交">
<change afterPath="$PROJECT_DIR$/src/main/java/com/wisdo/mmining/controller/dto/ApprovalUpdateAddressDto.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/wisdo/mmining/controller/dto/GoodsDeDto.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/wisdo/mmining/controller/dto/LogisticsDto.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/wisdo/mmining/controller/dto/PackageDto.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/webapp/static/core/js/base/babel.min.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/wisdo/mmining/api/dto/EditOrderAddressDto.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/wisdo/mmining/api/dto/EditOrderAddressDto.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/wisdo/mmining/controller/OrderController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/wisdo/mmining/controller/OrderController.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/main/java/com/wisdo/mmining/controller/OrderController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/wisdo/mmining/controller/OrderController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/wisdo/mmining/controller/dto/GoodsDeDto.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/wisdo/mmining/controller/dto/GoodsDeDto.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/application-db.yml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/application-db.yml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/main/resources/application-db.yml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/application-db.yml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/webapp/WEB-INF/view/pages/order/order_edit_address.jsp" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/WEB-INF/view/pages/order/order_edit_address.jsp" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/main/webapp/WEB-INF/view/pages/order/order_edit_address.jsp" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/WEB-INF/view/pages/order/order_edit_address.jsp" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/webapp/WEB-INF/view/pages/order/order_list.jsp" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/WEB-INF/view/pages/order/order_list.jsp" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/webapp/WEB-INF/view/pages/order/order_logistics.jsp" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/WEB-INF/view/pages/order/order_logistics.jsp" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/main/webapp/WEB-INF/view/pages/order/order_logistics.jsp" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/WEB-INF/view/pages/order/order_logistics.jsp" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/webapp/WEB-INF/view/pages/order/order_update_address.jsp" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/WEB-INF/view/pages/order/order_update_address.jsp" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/main/webapp/WEB-INF/view/pages/order/order_update_address.jsp" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/WEB-INF/view/pages/order/order_update_address.jsp" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/webapp/WEB-INF/view/sys/base.jsp" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/WEB-INF/view/sys/base.jsp" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -453,33 +446,33 @@
<option name="hideEmptyMiddlePackages" value="true" /> <option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" /> <option name="showLibraryContents" value="true" />
</component> </component>
<component name="PropertiesComponent">{ <component name="PropertiesComponent"><![CDATA[{
&quot;keyToString&quot;: { "keyToString": {
&quot;Maven.wisdommining [clean].executor&quot;: &quot;Run&quot;, "Maven.wisdommining [clean].executor": "Run",
&quot;Maven.wisdommining [package].executor&quot;: &quot;Run&quot;, "Maven.wisdommining [package].executor": "Run",
&quot;RequestMappingsPanelOrder0&quot;: &quot;0&quot;, "RequestMappingsPanelOrder0": "0",
&quot;RequestMappingsPanelOrder1&quot;: &quot;1&quot;, "RequestMappingsPanelOrder1": "1",
&quot;RequestMappingsPanelWidth0&quot;: &quot;75&quot;, "RequestMappingsPanelWidth0": "75",
&quot;RequestMappingsPanelWidth1&quot;: &quot;75&quot;, "RequestMappingsPanelWidth1": "75",
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;, "RunOnceActivity.ShowReadmeOnStart": "true",
&quot;Spring Boot.WisdoMminingApplication.executor&quot;: &quot;Debug&quot;, "Spring Boot.WisdoMminingApplication.executor": "Debug",
&quot;dart.analysis.tool.window.visible&quot;: &quot;false&quot;, "dart.analysis.tool.window.visible": "false",
&quot;git-widget-placeholder&quot;: &quot;master&quot;, "git-widget-placeholder": "master",
&quot;kotlin-language-version-configured&quot;: &quot;true&quot;, "kotlin-language-version-configured": "true",
&quot;last_opened_file_path&quot;: &quot;D:/Documents/IdeaProjects/wisdommining-serve/src/main/webapp/static/dist/order_logistics&quot;, "last_opened_file_path": "D:/Documents/IdeaProjects/wisdommining-serve/src/main/webapp/static/dist/order_logistics",
&quot;node.js.detected.package.eslint&quot;: &quot;true&quot;, "node.js.detected.package.eslint": "true",
&quot;node.js.detected.package.tslint&quot;: &quot;true&quot;, "node.js.detected.package.tslint": "true",
&quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;, "node.js.selected.package.eslint": "(autodetect)",
&quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;, "node.js.selected.package.tslint": "(autodetect)",
&quot;nodejs_package_manager_path&quot;: &quot;npm&quot;, "nodejs_package_manager_path": "npm",
&quot;project.structure.last.edited&quot;: &quot;全局库&quot;, "project.structure.last.edited": "全局库",
&quot;project.structure.proportion&quot;: &quot;0.0&quot;, "project.structure.proportion": "0.0",
&quot;project.structure.side.proportion&quot;: &quot;0.2&quot;, "project.structure.side.proportion": "0.2",
&quot;settings.editor.selected.configurable&quot;: &quot;project.propVCSSupport.DirectoryMappings&quot;, "settings.editor.selected.configurable": "project.propVCSSupport.DirectoryMappings",
&quot;show.migrate.to.gradle.popup&quot;: &quot;false&quot;, "show.migrate.to.gradle.popup": "false",
&quot;vue.rearranger.settings.migration&quot;: &quot;true&quot; "vue.rearranger.settings.migration": "true"
} }
}</component> }]]></component>
<component name="ReactorSettings"> <component name="ReactorSettings">
<option name="notificationShown" value="true" /> <option name="notificationShown" value="true" />
</component> </component>
@ -626,6 +619,7 @@
<workItem from="1715569361646" duration="7895000" /> <workItem from="1715569361646" duration="7895000" />
<workItem from="1715648805827" duration="24869000" /> <workItem from="1715648805827" duration="24869000" />
<workItem from="1715733500690" duration="26406000" /> <workItem from="1715733500690" duration="26406000" />
<workItem from="1715820168403" duration="8722000" />
</task> </task>
<task id="LOCAL-00001" summary="第一次提交"> <task id="LOCAL-00001" summary="第一次提交">
<created>1623736948713</created> <created>1623736948713</created>

View File

@ -208,7 +208,7 @@ public class OrderController {
modelAndView.addObject("orderId", orderId); modelAndView.addObject("orderId", orderId);
modelAndView.addObject("type", type); modelAndView.addObject("type", type);
modelAndView.addObject("order", order); modelAndView.addObject("order", order);
modelAndView.addObject("logistics", order.getLogistics()); modelAndView.addObject("logistics", order.getLogistics() == null ? "[]" : order.getLogistics());
return modelAndView; return modelAndView;
} }
@ -229,7 +229,7 @@ public class OrderController {
modelAndView.addObject("orderId", orderId); modelAndView.addObject("orderId", orderId);
modelAndView.addObject("type", type); modelAndView.addObject("type", type);
modelAndView.addObject("order", order); modelAndView.addObject("order", order);
modelAndView.addObject("logistics", order.getLogistics()); modelAndView.addObject("logistics", order.getLogistics() == null ? "[]" : order.getLogistics());
return modelAndView; return modelAndView;
} }

View File

@ -7,4 +7,6 @@ public class GoodsDeDto {
private Long id; private Long id;
private String name; private String name;
private Integer num; private Integer num;
private Long specId;
private String spec;
} }

View File

@ -1,7 +1,7 @@
#开发环境 #开发环境
spring: spring:
datasource: datasource:
url: jdbc:mysql://192.168.0.142:3306/wisdo?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8 url: jdbc:mysql://192.168.0.145:3306/wisdo?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
# url: jdbc:mysql://146.56.198.32:3306/wisdo?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8 # url: jdbc:mysql://146.56.198.32:3306/wisdo?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
username: yshop username: yshop
# username: root # username: root

View File

@ -20,29 +20,35 @@
<script> <script>
let layer = null let layer = null
layui.use(['layer'], function () { layui.use(['layer'], function () {
layer = layui.layer layer = layui.layer;
}); });
<%--if("${logistics}"){--%>
// }
</script> </script>
</head> </head>
<body style="background-color: white"> <body style="background-color: white">
<div id="root"></div> <div id="root"></div>
<script type="text/babel"> <script type="text/babel">
// let __logistics = []
const __logistics = ${logistics}; const __logistics = ${logistics};
const orderId = ${orderId}; const orderId = ${orderId};
const orderAddress = "${order.orderAddress}"; const __orderAddress = "${order.orderAddress}";
const __logisticsName = "${order.logisticsName}"; const __logisticsName = "${order.logisticsName}";
const type = ${type}; const type = ${type};
const {useState} = React const {useState} = React
const App = () => { const App = () => {
const [logisticsName, setLogisticsName] = useState(__logisticsName) const [logisticsName, setLogisticsName] = useState(__logisticsName)
const [orderAddress, setOrderAddress] = useState(__orderAddress)
const [logistics, setLogistics] = useState(__logistics) const [logistics, setLogistics] = useState(__logistics)
return <div className="p-4"> return <div className="p-4">
<form> <form>
<div className="layui-form-item"> <div className="layui-form-item">
<label htmlFor="orderAddress" className="layui-form-label w-24">收货地址</label> <label htmlFor="orderAddress" className="layui-form-label w-24">收货地址</label>
<div className="layui-input-block"> <div className="layui-input-block">
<input type="text" id="orderAddress" name="orderAddress" readOnly value={orderAddress} <input type="text" id="orderAddress" name="orderAddress" value={orderAddress}
onInput={ev => {
setOrderAddress(ev.target.value)
}}
placeholder="请输入收货地址" autoComplete="off" className="layui-input"/> placeholder="请输入收货地址" autoComplete="off" className="layui-input"/>
</div> </div>
</div> </div>
@ -78,13 +84,15 @@
<thead> <thead>
<tr> <tr>
<th>名称</th> <th>名称</th>
<th>规格</th>
<th>数量</th> <th>数量</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{ {
pack.goods.map((goods, idx) => <tr key={goods.id}> pack.goods.map((goods, idx) => <tr key={goods.id + "" + goods.specId}>
<td>{goods.name}</td> <td>{goods.name}</td>
<td>{goods.spec}</td>
<td>{goods.num}</td> <td>{goods.num}</td>
</tr> </tr>
) )

View File

@ -34,7 +34,7 @@
</script> </script>
</head> </head>
<body style="background-color: white"> <body>
<div id="root"></div> <div id="root"></div>
<script type="text/babel"> <script type="text/babel">
const {useState} = React const {useState} = React
@ -52,6 +52,7 @@
<thead> <thead>
<tr> <tr>
<th>名称</th> <th>名称</th>
<th>规格</th>
<th>数量</th> <th>数量</th>
<th>操作</th> <th>操作</th>
</tr> </tr>
@ -60,24 +61,27 @@
{ {
goodsList.filter(el => el.goodsNum > 0).map(goods => <tr key={goods.id}> goodsList.filter(el => el.goodsNum > 0).map(goods => <tr key={goods.id}>
<td>{goods.goodsName}</td> <td>{goods.goodsName}</td>
<td>{goods?.wisdGoodsSpec?.specName ?? ""}</td>
<td>{goods.goodsNum}</td> <td>{goods.goodsNum}</td>
<td> <td>
<button className="layui-btn layui-btn-xs" onClick={() => { <button className="layui-btn layui-btn-xs" onClick={() => {
// TODO: STEP1: 将商品添加到 packages 中 // TODO: STEP1: 将商品添加到 packages 中
const _packages = [...packages] const _packages = [...packages]
const goodsInPackageIndex = _packages[activePackage].goods.findIndex(el => el.id === goods.id) const goodsInPackageIndex = _packages[activePackage].goods.findIndex(el => el.id === goods.id && goods.wisdGoodsSpec.id === el.specId)
if (goodsInPackageIndex !== -1) { if (goodsInPackageIndex !== -1) {
_packages[activePackage].goods[goodsInPackageIndex].num += 1 _packages[activePackage].goods[goodsInPackageIndex].num += 1
} else { } else {
_packages[activePackage].goods.push({ _packages[activePackage].goods.push({
id: goods.id, id: goods.id,
specId: goods.wisdGoodsSpec.id,
name: goods.goodsName, name: goods.goodsName,
spec: goods?.wisdGoodsSpec?.specName ?? "",
num: 1 num: 1
}) })
} }
setPackages(_packages) setPackages(_packages)
const _goodsList = [...goodsList] const _goodsList = [...goodsList]
_goodsList.find(el => el.id === goods.id).goodsNum -= 1 _goodsList.find(el => el.id === goods.id && el.wisdGoodsSpec.id === goods.wisdGoodsSpec.id).goodsNum -= 1
setGoodsList(_goodsList) setGoodsList(_goodsList)
}}> }}>
@ -120,13 +124,13 @@
// TODO: WHY // TODO: WHY
setTimeout(() => { setTimeout(() => {
setActivePackage(state => state - 1) setActivePackage(state => state - 1)
}, 0) }, 100)
} }
setPackages(state => state.filter(el => pack.id !== el.id)) setPackages(state => state.filter(el => pack.id !== el.id))
// TODO: 删除该包裹中所有商品 // TODO: 删除该包裹中所有商品
const _goodsList = [...goodsList] const _goodsList = [...goodsList]
for (const p of pack.goods) { for (const p of pack.goods) {
_goodsList.find(g => g.id === p.id).goodsNum += p.num _goodsList.find(g => g.id === p.id && g.wisdGoodsSpec.id === p.specId).goodsNum += p.num
} }
setGoodsList(_goodsList) setGoodsList(_goodsList)
@ -154,6 +158,7 @@
<thead> <thead>
<tr> <tr>
<th>名称</th> <th>名称</th>
<th>规格</th>
<th>数量</th> <th>数量</th>
<th>操作</th> <th>操作</th>
</tr> </tr>
@ -162,6 +167,7 @@
{ {
pack.goods.map((goods, idx) => <tr key={goods.id}> pack.goods.map((goods, idx) => <tr key={goods.id}>
<td>{goods.name}</td> <td>{goods.name}</td>
<td>{goods.spec}</td>
<td>{goods.num}</td> <td>{goods.num}</td>
<td> <td>
<button className="layui-btn layui-btn-xs" type="button" <button className="layui-btn layui-btn-xs" type="button"
@ -175,7 +181,7 @@
}))) })))
// TODO: goodsList 中数量 +1 // TODO: goodsList 中数量 +1
const _goodsList = [...goodsList] const _goodsList = [...goodsList]
_goodsList.find(el => el.id === _packages[index].goods[idx].id).goodsNum += 1 _goodsList.find(el => el.id === _packages[index].goods[idx].id && el.wisdGoodsSpec.id === _packages[index].goods[idx].specId).goodsNum += 1
setGoodsList(_goodsList) setGoodsList(_goodsList)
}}>移除 }}>移除
</button> </button>

View File

@ -30,7 +30,7 @@
const __logistics = ${logistics}; const __logistics = ${logistics};
const type = ${type}; const type = ${type};
const orderId = ${orderId}; const orderId = ${orderId};
const orderAddress = ${order.pendingApprovalOrderAddress}; const orderAddress = "${order.pendingApprovalOrderAddress}";
const {useState} = React const {useState} = React
const App = () => { const App = () => {
const [logistics, setLogistics] = useState(__logistics) const [logistics, setLogistics] = useState(__logistics)
@ -65,13 +65,15 @@
<thead> <thead>
<tr> <tr>
<th>名称</th> <th>名称</th>
<th>规格</th>
<th>数量</th> <th>数量</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{ {
pack.goods.map((goods) => <tr key={goods.id}> pack.goods.map((goods) => <tr key={goods.id + "" + goods.specId}>
<td>{goods.name}</td> <td>{goods.name}</td>
<td>{goods.spec}</td>
<td>{goods.num}</td> <td>{goods.num}</td>
</tr> </tr>
) )
@ -81,7 +83,7 @@
</div> </div>
</div>)} </div>)}
<div className="flex justify-center"> <div className="flex justify-center">
<button type="button" onClick={() => { <button type="button" className="layui-btn layui-btn-primary mt-2" onClick={() => {
const formData = { const formData = {
orderId, orderId,
type: 1, type: 1,