From f00281e8dd4f2b5297cf430d8440ff23a2f3e628 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期二, 11 十一月 2025 14:36:38 +0800
Subject: [PATCH] *
---
src/main/java/com/zy/asrs/controller/OrderPakoutController.java | 6
src/main/java/com/zy/asrs/task/handler/GroupOrderFormHandler.java | 52 +++++++--
src/main/java/com/zy/asrs/controller/OrderDetlPakoutController.java | 23 ++-
src/main/resources/mapper/OrderDetlPakoutMapper.xml | 19 ++-
src/main/resources/mapper/OrderPakoutMapper.xml | 37 ++++---
src/main/webapp/views/orderCargoGrouping/orderCargoGroupingOperate.html | 112 ++++++++++++++++++++--
src/main/webapp/views/orderPakout/order.html | 4
7 files changed, 191 insertions(+), 62 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/OrderDetlPakoutController.java b/src/main/java/com/zy/asrs/controller/OrderDetlPakoutController.java
index 2e5996f..2c8b610 100644
--- a/src/main/java/com/zy/asrs/controller/OrderDetlPakoutController.java
+++ b/src/main/java/com/zy/asrs/controller/OrderDetlPakoutController.java
@@ -46,7 +46,7 @@
excludeTrash(param);
convert(param, wrapper);
if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} else {
- wrapper.orderBy("create_time", false);
+ wrapper.orderBy("update_time", false);
}
wrapper.eq("status", 1);
Page<OrderDetlPakout> orderDetlPage = orderDetlService.selectPage(new Page<>(curr, limit), wrapper);
@@ -170,14 +170,6 @@
}
}
-// @RequestMapping(value = "/orderDetl/batch/report/auth")
-// @ManagerAuth(memo = "淇敼涓婃姤椤�")
-// public R reportBatch(@RequestBody JSONObject param) {
-// String.valueOf(param.get("key"))), param.get("val")
-// System.out.println(param);
-// return R.ok();
-// }
-
@RequestMapping(value = "/orderDetl/batch/report/auth")
@ManagerAuth(memo = "淇敼涓婃姤椤�")
public R reportBatch(ReportOrderBatchDetlParam param) {
@@ -191,6 +183,19 @@
return R.ok();
}
+ @RequestMapping(value = "/orderDetl/order/v1/report/auth")
+ @ManagerAuth(memo = "涓婃姤MES瀹為檯缁勮揣鍗�")
+ public R reportBatchOrder(ReportOrderBatchDetlParam param) {
+ List<OrderDetlPakout> orderDetlPakoutList = orderDetlPakoutService.selectList(new EntityWrapper<OrderDetlPakout>()
+ .eq("batch", param.getBatch())
+ );
+ for (OrderDetlPakout orderDetl : orderDetlPakoutList){
+ orderDetl.setStatus(param.getStatus());
+ orderDetlService.updateById(orderDetl);
+ }
+ return R.ok();
+ }
+
}
diff --git a/src/main/java/com/zy/asrs/controller/OrderPakoutController.java b/src/main/java/com/zy/asrs/controller/OrderPakoutController.java
index ddd7ac5..95377a2 100644
--- a/src/main/java/com/zy/asrs/controller/OrderPakoutController.java
+++ b/src/main/java/com/zy/asrs/controller/OrderPakoutController.java
@@ -82,8 +82,10 @@
EntityWrapper<OrderPakout> wrapper = new EntityWrapper<>();
excludeTrash(param);
convert(param, wrapper);
- if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} else {
- wrapper.orderBy("settle").orderBy("create_time", false);
+ if (!Cools.isEmpty(orderByField)){
+ wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));
+ } else {
+ wrapper.orderBy("update_time", false);
}
wrapper.eq("status", 1);
return R.ok(orderService.selectPage(new Page<>(curr, limit), wrapper));
diff --git a/src/main/java/com/zy/asrs/task/handler/GroupOrderFormHandler.java b/src/main/java/com/zy/asrs/task/handler/GroupOrderFormHandler.java
index 235c4ec..c8ca7d1 100644
--- a/src/main/java/com/zy/asrs/task/handler/GroupOrderFormHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/GroupOrderFormHandler.java
@@ -7,11 +7,13 @@
import com.core.common.R;
import com.core.common.SnowflakeIdWorker;
import com.zy.asrs.entity.LocDetl;
+import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.OrderDetlPakout;
import com.zy.asrs.entity.OrderPakout;
import com.zy.asrs.entity.param.OrderInspectionRollParam;
import com.zy.asrs.entity.param.OrderOutLocBoxCsUtilParam;
import com.zy.asrs.service.*;
+import com.zy.asrs.service.impl.LocMastServiceImpl;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.utils.CodeDetectionUtil;
@@ -44,6 +46,8 @@
private SnowflakeIdWorker snowflakeIdWorker;
@Autowired
private LocDetlService locDetlService;
+ @Autowired
+ private LocMastServiceImpl locMastService;
@Transactional
public ReturnT<String> abandoned(OrderPakout orderPakout) {
@@ -81,6 +85,15 @@
if (!CodeDetectionUtil.barcodeDetection(orderDetl.getManu(),7)){
LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("model", orderDetl.getModel()));
if (!Cools.isEmpty(locDetl)){
+ LocMast locMast = locMastService.selectById(locDetl.getLocNo());
+ if (Cools.isEmpty(locMast) || !locMast.getLocSts().equals("F")){
+ if (Cools.isEmpty(memo)){
+ memo = "鍗峰彿"+ orderDetl.getModel()+"鎵�鍦ㄥ簱浣�"+locDetl.getLocNo()+"涓嶆槸鍦ㄥ簱鐘舵��";
+ }else {
+ memo = memo+";鍗峰彿"+ orderDetl.getModel()+"鎵�鍦ㄥ簱浣�"+locDetl.getLocNo()+"涓嶆槸鍦ㄥ簱鐘舵��";
+ }
+ continue;
+ }
signD = false;
orderDetl.sync(locDetl);
orderDetl.setManu(locDetl.getLocNo());
@@ -92,25 +105,38 @@
orderDetlPakoutService.updateById(orderDetl);
continue;
}
+
} else {
if (Cools.isEmpty(memo)){
- memo = "鏃犲簱瀛�";
+ memo = "鍗峰彿"+ orderDetl.getModel()+"鏃犲簱瀛�";
}else {
- memo = memo+";鏃犲簱瀛�";
+ memo = memo+";鍗峰彿"+ orderDetl.getModel()+"鏃犲簱瀛�";
}
continue;
}
}
if (signD){
+ LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("model", orderDetl.getModel()));
+ if (!Cools.isEmpty(locDetl)){
+ LocMast locMast = locMastService.selectById(locDetl.getLocNo());
+ if (Cools.isEmpty(locMast) || !locMast.getLocSts().equals("F")){
+ if (Cools.isEmpty(memo)){
+ memo = "鍗峰彿"+ orderDetl.getModel()+"鎵�鍦ㄥ簱浣�"+locDetl.getLocNo()+"涓嶆槸鍦ㄥ簱鐘舵��";
+ }else {
+ memo = memo+";鍗峰彿"+ orderDetl.getModel()+"鎵�鍦ㄥ簱浣�"+locDetl.getLocNo()+"涓嶆槸鍦ㄥ簱鐘舵��";
+ }
+ continue;
+ }
+ }
if (!Cools.isEmpty(orderDetl.getDanger$()) && orderDetl.getDanger()==1){//鍚堟牸涓嶉渶瑕佹楠�
continue;
} else {
- LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("model", orderDetl.getModel()));
if (!Cools.isEmpty(locDetl.getDanger$()) && locDetl.getDanger()==1){
orderDetl.setDanger(1);
orderDetlPakoutService.updateById(orderDetl);
continue;
}
+
}
}
OrderInspectionRollParam orderInspectionRollParam = new OrderInspectionRollParam(orderDetl.getModel());
@@ -132,16 +158,16 @@
orderDetlPakoutService.updateById(orderDetl);
} else if (!Cools.isEmpty(orderDetl.getDanger$()) && value.equals(orderDetl.getDanger$())){
if (Cools.isEmpty(memo)){
- memo = "鏌ヨ鍗峰彿缁撴灉锛�"+jsonObject.getString("message");
+ memo = "鍗峰彿"+ orderDetl.getModel()+"鏌ヨ缁撴灉锛�"+jsonObject.getString("message");
}else {
- memo = memo+";鏌ヨ鍗峰彿缁撴灉锛�"+jsonObject.getString("message");
+ memo = memo+";鍗峰彿"+ orderDetl.getModel()+"鏌ヨ缁撴灉锛�"+jsonObject.getString("message");
}
continue;
} else {
if (Cools.isEmpty(memo)){
- memo = "鏌ヨ鍗峰彿缁撴灉锛�"+jsonObject.getString("message");
+ memo = "鍗峰彿"+ orderDetl.getModel()+"鏌ヨ缁撴灉锛�"+jsonObject.getString("message");
}else {
- memo = memo+";鏌ヨ鍗峰彿缁撴灉锛�"+jsonObject.getString("message");
+ memo = memo+";鍗峰彿"+ orderDetl.getModel()+"鏌ヨ缁撴灉锛�"+jsonObject.getString("message");
}
if (value.equals("涓嶅悎鏍�")){
orderDetl.setDanger(2);
@@ -151,26 +177,26 @@
}
} else {
if (Cools.isEmpty(memo)){
- memo = "鏌ヨ鍗峰彿缁撴灉锛�"+jsonObject.getString("message");
+ memo = "鍗峰彿"+ orderDetl.getModel()+"鏌ヨ缁撴灉锛�"+jsonObject.getString("message");
}else {
- memo = memo+";鏌ヨ鍗峰彿缁撴灉锛�"+jsonObject.getString("message");
+ memo = memo+";鍗峰彿"+ orderDetl.getModel()+"鏌ヨ缁撴灉锛�"+jsonObject.getString("message");
}
}
success = true;
} else {
if (Cools.isEmpty(memo)){
- memo = "鏌ヨ鍗峰彿缁撴灉锛�"+jsonObject.getString("message");
+ memo = "鍗峰彿"+ orderDetl.getModel()+"鏌ヨ缁撴灉锛�"+jsonObject.getString("message");
}else {
- memo = memo+";鏌ヨ鍗峰彿缁撴灉锛�"+jsonObject.getString("message");
+ memo = memo+";鍗峰彿"+ orderDetl.getModel()+"鏌ヨ缁撴灉锛�"+jsonObject.getString("message");
}
log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL+MesConstant.PAKIN_URL, JSON.toJSONString(orderInspectionRollParam), response);
// throw new CoolException("鏌ヨ鍗峰彿鏄惁鍚堟牸澶辫触");
}
} catch (Exception e) {
if (Cools.isEmpty(memo)){
- memo = "鏌ヨ鍗峰彿缁撴灉锛�"+"寮傚父"+e.getMessage();
+ memo = "鍗峰彿"+ orderDetl.getModel()+"鏌ヨ缁撴灉锛�"+"寮傚父"+e.getMessage();
}else {
- memo = memo+";鏌ヨ鍗峰彿缁撴灉锛�"+"寮傚父"+e.getMessage();
+ memo = memo+"鍗峰彿"+ orderDetl.getModel()+"鏌ヨ缁撴灉锛�"+"寮傚父"+e.getMessage();
}
log.error("fail", e);
// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
diff --git a/src/main/resources/mapper/OrderDetlPakoutMapper.xml b/src/main/resources/mapper/OrderDetlPakoutMapper.xml
index 45632cd..5957e37 100644
--- a/src/main/resources/mapper/OrderDetlPakoutMapper.xml
+++ b/src/main/resources/mapper/OrderDetlPakoutMapper.xml
@@ -257,13 +257,18 @@
</update>
<select id="selectOrderPakoutDetailVoList" resultMap="PakoutDetailResultMap">
- SELECT * FROM v_pakout_detail
- WHERE 1 = 1
- <if test="itemName != null and itemName != ''">
- AND item_name LIKE CONCAT('%', #{itemName}, '%')
- </if>
- AND row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
- ORDER BY create_time DESC
+ select d.* from (
+ select
+ ROW_NUMBER() over (order by c.update_time desc) as row1,
+ c.* from (
+ select a.* from v_pakout_detail as a
+ where 1=1
+ <if test="itemName != null and itemName != ''">
+ AND item_name LIKE CONCAT('%', #{itemName}, '%')
+ </if>
+ ) as c
+ ) as d
+ where d.row1 between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize}) order by d.update_time desc
</select>
<select id="selectOrderPakoutDetailVoListTotal" resultType="Long">
diff --git a/src/main/resources/mapper/OrderPakoutMapper.xml b/src/main/resources/mapper/OrderPakoutMapper.xml
index 7ba6da6..1aade50 100644
--- a/src/main/resources/mapper/OrderPakoutMapper.xml
+++ b/src/main/resources/mapper/OrderPakoutMapper.xml
@@ -145,22 +145,27 @@
</update>
<select id="selectOrderPakoutMainVoList" resultMap="PakoutMainResultMap">
- SELECT * FROM v_pakout_main
- WHERE status = 1
- <if test="itemName != null and itemName != ''">
- AND item_name LIKE CONCAT('%', #{itemName}, '%')
- </if>
- <if test="cstmrName != null and cstmrName != ''">
- AND cstmr_name LIKE CONCAT('%', #{cstmrName}, '%')
- </if>
- <if test="settle != null and settle != ''">
- AND settle = #{settle}
- </if>
- <if test="status != null and status != ''">
- AND status = #{status}
- </if>
- AND row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
- ORDER BY create_time DESC
+ select d.* from (
+ select
+ ROW_NUMBER() over (order by c.update_time desc) as row1,
+ c.* from (
+ select a.* from v_pakout_main as a
+ where 1=1 AND status = 1
+ <if test="itemName != null and itemName != ''">
+ AND item_name LIKE CONCAT('%', #{itemName}, '%')
+ </if>
+ <if test="cstmrName != null and cstmrName != ''">
+ AND cstmr_name LIKE CONCAT('%', #{cstmrName}, '%')
+ </if>
+ <if test="settle != null and settle != ''">
+ AND settle = #{settle}
+ </if>
+ <if test="status != null and status != ''">
+ AND status = #{status}
+ </if>
+ ) as c
+ ) as d
+ where d.row1 between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize}) order by d.update_time desc
</select>
<select id="selectOrderPakoutMainVoListTotal" resultType="Long">
diff --git a/src/main/webapp/views/orderCargoGrouping/orderCargoGroupingOperate.html b/src/main/webapp/views/orderCargoGrouping/orderCargoGroupingOperate.html
index 401945f..cc09ec8 100644
--- a/src/main/webapp/views/orderCargoGrouping/orderCargoGroupingOperate.html
+++ b/src/main/webapp/views/orderCargoGrouping/orderCargoGroupingOperate.html
@@ -158,9 +158,12 @@
style="width: 100%"
v-loading="loading"
@sort-change="handleSortChange">
- <el-table-column prop="itemName" label="缁勮揣鍗曞彿" width="120" align="center" sortable="custom"></el-table-column>
+ <el-table-column prop="itemName" label="缁勮揣鍗曞彿" width="240" align="center" sortable="custom"></el-table-column>
<el-table-column prop="cstmrName" label="瀹㈡埛鍚嶇О" min-width="120" align="center"></el-table-column>
+ <el-table-column prop="orderCount" label="缁勮揣鍗曟暟" width="80" align="center"></el-table-column>
<el-table-column prop="settle" label="鐘舵��" min-width="100" align="center" :formatter="formatStatus"></el-table-column>
+ <el-table-column prop="createTime" label="鏃ユ湡" min-width="100" align="center" :formatter="formatDateColumn"></el-table-column>
+ <el-table-column prop="updateTime" label="鏇存柊鏃ユ湡" min-width="100" align="center" :formatter="formatDateColumn"></el-table-column>
<el-table-column label="鎿嶄綔" width="150" align="center" fixed="right">
<template slot-scope="scope">
<div class="operation-cell">
@@ -426,7 +429,7 @@
const status = 2; // 绠卞彿
this.$confirm(
- `纭畾灏嗙粍璐у崟鍙凤細 <strong style="color: #409EFF;">${groupOrderNo}</strong> 銆佺鍙凤細 <strong style="color: #409EFF;">${batch}</strong> 娣诲姞鍒颁笂鎶ュ垪鍚楋紵`,
+ `纭畾灏嗙粍璐у崟鍙凤細 <strong style="color: #409EFF;">${groupOrderNo}</strong> 涓殑绠卞彿锛� <strong style="color: #409EFF;">${batch}</strong> 娣诲姞鍒颁笂鎶ュ垪鍚楋紵`,
'纭淇敼',
{
confirmButtonText: '纭淇敼',
@@ -484,7 +487,6 @@
background: 'rgba(0, 0, 0, 0.7)'
});
- // 璋冪敤鍚庡彴API鎻愪氦淇敼
$.ajax({
url: baseUrl + "/order/pakout/orderDetl/batch/report/auth",
headers: {'token': localStorage.getItem('token')},
@@ -504,7 +506,6 @@
duration: 3000
});
- // 淇敼鎴愬姛鍚庡彲浠ュ埛鏂板瓙琛ㄦ暟鎹�
this.getTableDataB(groupOrderNo);
} else {
this.$message.error(res.message || '淇敼澶辫触');
@@ -531,7 +532,6 @@
this.getTableDataA();
},
- // 鏄剧ず浜屾纭瀵硅瘽妗�
showConfirmDialog() {
if (!this.currentRow) {
this.$message.error('娌℃湁閫夋嫨瑕佷笂鎶ョ殑鏁版嵁');
@@ -733,13 +733,6 @@
return '楼0.00';
},
- // 鏍煎紡鍖栨棩鏈熸樉绀�
- formatDate(dateStr) {
- if (!dateStr) return '';
- // 绠�鍗曠殑鏃ユ湡鏍煎紡鍖栵紝鍙互鏍规嵁瀹為檯鏍煎紡璋冩暣
- return dateStr;
- },
-
// 妯℃嫙涓昏〃鏁版嵁 - 瀹為檯椤圭洰涓簲鍒犻櫎
mockTableAData() {
this.tableDataA = [
@@ -772,6 +765,101 @@
];
this.detailTotal = 1;
this.detailLoading = false;
+ },
+
+ // 涓鸿〃鏍煎垪娣诲姞鏍煎紡鍖栨柟娉�
+ formatDateColumn(row, column, cellValue) {
+ return this.formatDate(cellValue);
+ },
+
+
+
+ // // 鏍煎紡鍖栨棩鏈熸樉绀�
+ // formatDate(dateStr) {
+ // if (!dateStr) return '';
+ // // 绠�鍗曠殑鏃ユ湡鏍煎紡鍖栵紝鍙互鏍规嵁瀹為檯鏍煎紡璋冩暣
+ // return dateStr;
+ // },
+
+ // 鍦╒ue瀹炰緥鐨刴ethods涓坊鍔犳垨淇敼formatDate鏂规硶
+ formatDate(dateStr) {
+ if (!dateStr) return '';
+
+ try {
+ // 鍒涘缓Date瀵硅薄
+ const date = new Date(dateStr);
+
+ // 妫�鏌ユ棩鏈熸槸鍚︽湁鏁�
+ if (isNaN(date.getTime())) {
+ return dateStr; // 濡傛灉瑙f瀽澶辫触锛岃繑鍥炲師瀛楃涓�
+ }
+
+ // 鑾峰彇鍚勪釜鏃堕棿缁勪欢
+ const year = date.getFullYear();
+ const month = String(date.getMonth() + 1).padStart(2, '0');
+ const day = String(date.getDate()).padStart(2, '0');
+ const hours = String(date.getHours()).padStart(2, '0');
+ const minutes = String(date.getMinutes()).padStart(2, '0');
+ const seconds = String(date.getSeconds()).padStart(2, '0');
+
+ // 杩斿洖鏍煎紡鍖栧悗鐨勫瓧绗︿覆锛歒YYY-MM-DD HH:mm:ss
+ return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
+ } catch (error) {
+ console.error('鏃ユ湡鏍煎紡鍖栭敊璇�:', error);
+ return dateStr; // 濡傛灉鍑洪敊锛岃繑鍥炲師瀛楃涓�
+ }
+ },
+
+//鏈湴鏃跺尯鐨勬椂闂�
+ formatDate2(dateStr) {
+ if (!dateStr) return '';
+
+ try {
+ const date = new Date(dateStr);
+
+ if (isNaN(date.getTime())) {
+ return dateStr;
+ }
+
+ // 浣跨敤鏈湴鏃跺尯
+ const year = date.getFullYear();
+ const month = String(date.getMonth() + 1).padStart(2, '0');
+ const day = String(date.getDate()).padStart(2, '0');
+ const hours = String(date.getHours()).padStart(2, '0');
+ const minutes = String(date.getMinutes()).padStart(2, '0');
+ const seconds = String(date.getSeconds()).padStart(2, '0');
+
+ return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
+ } catch (error) {
+ console.error('鏃ユ湡鏍煎紡鍖栭敊璇�:', error);
+ return dateStr;
+ }
+ },
+ //淇濇寔UTC鏃堕棿浣嗚浆鎹负鏇存槗璇荤殑鏍煎紡
+ formatDate3(dateStr) {
+ if (!dateStr) return '';
+
+ try {
+ // 鐩存帴瑙f瀽瀛楃涓诧紝涓嶈浆鎹㈡椂鍖�
+ const date = new Date(dateStr);
+
+ if (isNaN(date.getTime())) {
+ return dateStr;
+ }
+
+ // 浣跨敤UTC鏃堕棿缁勪欢
+ const year = date.getUTCFullYear();
+ const month = String(date.getUTCMonth() + 1).padStart(2, '0');
+ const day = String(date.getUTCDate()).padStart(2, '0');
+ const hours = String(date.getUTCHours()).padStart(2, '0');
+ const minutes = String(date.getUTCMinutes()).padStart(2, '0');
+ const seconds = String(date.getUTCSeconds()).padStart(2, '0');
+
+ return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
+ } catch (error) {
+ console.error('鏃ユ湡鏍煎紡鍖栭敊璇�:', error);
+ return dateStr;
+ }
}
}
});
diff --git a/src/main/webapp/views/orderPakout/order.html b/src/main/webapp/views/orderPakout/order.html
index 7a64fd8..74e7d1b 100644
--- a/src/main/webapp/views/orderPakout/order.html
+++ b/src/main/webapp/views/orderPakout/order.html
@@ -120,9 +120,7 @@
<a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="complete">妫�楠屽嚭搴�</a>
{{# } }}
{{# if (d.settle == 13 || d.settle == 98) { }}
- <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="inspection">鍑哄簱鍚堟牸鍝�</a>
- {{# } }}
- {{# if (d.settle == 98) { }}
+ <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="inspection">鍑哄簱鍚堟牸鍝�</a>
<a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="complete">閲嶆柊妫�楠屽嚭搴�</a>
{{# } }}
</script>
--
Gitblit v1.9.1