From 526954dd5a2fe389a03a217cc827fc19935044c5 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期三, 19 十一月 2025 18:08:59 +0800
Subject: [PATCH] *号问题
---
seller/src/views/goods/goods-seller/goodsOperationSec.vue | 448 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 432 insertions(+), 16 deletions(-)
diff --git a/seller/src/views/goods/goods-seller/goodsOperationSec.vue b/seller/src/views/goods/goods-seller/goodsOperationSec.vue
index 0b8e8b0..847423c 100644
--- a/seller/src/views/goods/goods-seller/goodsOperationSec.vue
+++ b/seller/src/views/goods/goods-seller/goodsOperationSec.vue
@@ -74,6 +74,28 @@
@on-change="choosePreTime"></DatePicker>
</div>
</FormItem>
+ <FormItem v-if="baseInfoForm.goodsType == 'VIRTUAL_GOODS'" class="form-item-view-el" label="鍟嗗搧绫诲瀷">
+ <Select
+ v-model="baseInfoForm.virtualGoodsType"
+ clearable
+ style="width: 160px"
+ @on-clear="handleGoodsType"
+ @on-change="handleGoodsType"
+ >
+ <Option value="COUPON">浼樻儬鍔�</option>
+ </select>
+ </FormItem>
+ <FormItem v-if="baseInfoForm.goodsType == 'PHYSICAL_GOODS'" class="form-item-view-el" label="鍟嗗搧绫诲瀷">
+ <Select
+ v-model="baseInfoForm.customizeFlag"
+ clearable
+ style="width: 160px"
+ @on-clear="handleGoodsType"
+ @on-change="handleGoodsType"
+ >
+ <Option value="CUSTOMIZE">瀹氬埗鍟嗗搧</option>
+ </select>
+ </FormItem>
<FormItem v-if="baseInfoForm.salesModel == 'WHOLESALE'" class="form-item-view-el" label="閿�鍞鍒�"
prop="wholesaleRule">
<div class="form-item-view-wholesale">
@@ -118,6 +140,7 @@
</FormItem>
</div>
<h4>鍟嗗搧瑙勬牸鍙婂浘鐗�</h4>
+
<div class="form-item-view">
<FormItem class="form-item-view-el required" label="涓诲浘" prop="goodsGalleryFiles" >
<div style="display: flex; flex-wrap: wrap;">
@@ -156,6 +179,9 @@
<img v-if="goodsPictureVisible" :src="previewGoodsPicture" style="width: 100%"/>
</Modal>
</FormItem>
+
+
+
<FormItem>
<!-- <div class="demo-upload-list" v-for="(item,index) in showListImages">-->
@@ -221,9 +247,9 @@
@on-change="editSkuItem(item.name, $index, item)">
</AutoComplete>
-<!-- <iSwitch v-if="$index === 0" style="margin-left: 10px" size="small"-->
-<!-- @on-change="changeSkuOpenImage" v-model="openImage"/>-->
-<!-- <span v-if="$index === 0" style="margin-left: 5px">娣诲姞瑙勬牸鍥剧墖</span>-->
+ <iSwitch v-if="$index === 0" style="margin-left: 10px" size="small"
+ @on-change="changeSkuOpenImage" v-model="openImage"/>
+ <span v-if="$index === 0" style="margin-left: 5px">娣诲姞瑙勬牸鍥剧墖</span>
</div>
</FormItem>
@@ -313,8 +339,8 @@
</Button>
</div>
- <!-- <Button class="add-sku-btn" size="small" type="warning" @click="handleClearSku">娓呯┖瑙勬牸椤�-->
- <!-- </Button>-->
+ <Button class="add-sku-btn" size="small" type="warning" @click="handleClearSku">娓呯┖瑙勬牸椤�
+ </Button>
</div>
</Panel>
<Panel name="2">
@@ -346,6 +372,23 @@
}}</span>
</Input>
</template>
+ <template slot="COUPON" slot-scope="{ row }">
+ <div @click="showCouponListModal($event,row)">
+ <Input v-model="row.couponName" clearable placeholder="閫夋嫨浼樻儬鍔�"
+ >
+ </Input>
+ </div>
+
+ </template>
+ <template slot="CUSTOMIZE" slot-scope="{ row }">
+ <div @click="showTemplateListModal($event,row)">
+ <Input v-model="row.customizeTemplateName" clearable placeholder="閫夋嫨瀹氬埗妯℃澘"
+ >
+ </Input>
+ </div>
+
+ </template>
+
<template slot="cost" slot-scope="{ row }">
<Input v-model="row.cost" clearable placeholder="璇疯緭鍏ユ垚鏈环"
@on-change="updateSkuTable(row, 'cost')">
@@ -505,6 +548,82 @@
<Button type="primary" @click="saveToDraft">淇濆瓨涓烘ā鐗�</Button>
</ButtonGroup>
</div>
+ <Modal v-model="showCouponModal" title="浼樻儬鍔靛垪琛�" width="1200px">
+ <div style="display: flex; align-items: center; margin-bottom: 20px;">
+ <!-- 妯℃嫙琛ㄥ崟label鏍峰紡 -->
+ <label style="width: 100px; text-align: right; padding-right: 12px; font-size:14px;">
+ 宸查�夋嫨浼樻儬鍔�:
+ </label>
+ <Input
+ :disabled="true"
+ style="width: 30%;"
+ v-model="showCoupon"
+ placeholder="璇风偣鍑婚�夋嫨琛ㄦ牸鍐呬紭鎯犲姷"
+ ></Input>
+ </div>
+ <Table
+ :loading="couponLoading"
+ border
+ :columns="couponColumns"
+ :data="couponData"
+ ref="table"
+ @on-current-change="handleRowClick"
+ highlight-row
+ ></Table>
+ <Row type="flex" justify="center" class="mt_10">
+ <Page
+ :current="couponSearchForm.pageNumber"
+ :total="couponTotal"
+ :page-size="couponSearchForm.pageSize"
+ @on-change="couponChangePage"
+ @on-page-size-change="couponChangePageSize"
+ :page-size-opts="[10, 20, 50]"
+ size="small"
+ show-total
+ show-elevator
+ show-sizer
+ ></Page>
+ </Row>
+ </Modal>
+
+ <Modal v-model="showTemplateModal" title="妯℃澘鍒楄〃" width="1200px">
+ <div style="display: flex; align-items: center; margin-bottom: 20px;">
+ <!-- 妯℃嫙琛ㄥ崟label鏍峰紡 -->
+ <label style="width: 100px; text-align: right; padding-right: 12px; font-size:14px;">
+ 宸查�夋嫨妯℃澘:
+ </label>
+ <Input
+ :disabled="true"
+ style="width: 30%;"
+ v-model="showTemplate"
+ placeholder="璇风偣鍑婚�夋嫨琛ㄦ牸鍐呮ā鏉�"
+ ></Input>
+ </div>
+ <Table
+ :loading="templateLoading"
+ border
+ :columns="templateColumns"
+ :data="templateData"
+ ref="table"
+ @on-current-change="templateHandleRowClick"
+ highlight-row
+ ></Table>
+ <Row type="flex" justify="center" class="mt_10">
+ <Page
+ :current="templateSearchForm.pageNumber"
+ :total="templateTotal"
+ :page-size="templateSearchForm.pageSize"
+ @on-change="templateChangePage"
+ @on-page-size-change="templateChangePageSize"
+ :page-size-opts="[10, 20, 50]"
+ size="small"
+ show-total
+ show-elevator
+ show-sizer
+ ></Page>
+ </Row>
+ </Modal>
+
<Modal v-model="showGoodsVideo" title="鏌ョ湅瑙嗛">
<div id="dplayer">
@@ -546,6 +665,7 @@
</div>
</template>
<script>
+import * as API_GOODS_CUSTOMEIZE from "@/api/goods-customeize-template"
import * as API_GOODS from "@/api/goods";
import * as API_Shop from "@/api/shops";
import cloneObj from "@/utils/index";
@@ -561,7 +681,8 @@
import {getFileKey} from "@/utils/file.js";
import {getFilePreview, getSts} from "@/api/file";
import {formatDate} from "@/utils/filters";
-
+import {getShopCouponList} from '@/api/promotion'
+import {promotionsScopeTypeRender} from "../../../utils/promotions";
export default {
name: "goodsOperationSec",
@@ -593,6 +714,141 @@
}, 1000);
};
return {
+ showTemplateModal:false,
+ showTemplate:'',
+ templateSearchForm: {
+ // 鎼滅储妗嗗垵濮嬪寲瀵硅薄
+ pageNumber: 1, // 褰撳墠椤垫暟
+ pageSize: 10, // 椤甸潰澶у皬
+ status:"ENABLE"
+ },
+ templateLoading:false,
+ templateColumns:[
+ {
+ title: "妯℃澘鍚嶇О",
+ key: "templateName",
+ tooltip: true,
+ },
+ {
+ title: '鍚敤鐘舵��',
+ key: 'status',
+ width: 120,
+ align: 'center',
+ render: (h, params) => {
+ const status = params.row.status;
+ const color = status === 'ENABLE' ? 'success' : status === 'DISABLE' ? 'default' : 'warning';
+ const text = status === 'ENABLE' ? '鍚敤' : status === 'DISABLE' ? '鏈惎鐢�' : '鏈煡';
+
+ return h('Tag', {
+ props: {
+ color: color
+ }
+ }, text);
+ }
+ },
+ ],
+ templateData:[],
+ templateTotal:0,
+
+ currentRow:null,
+ showCouponModal:false,
+ showCoupon:'',
+
+ couponSearchForm: {
+ // 鎼滅储妗嗗垵濮嬪寲瀵硅薄
+ pageNumber: 1, // 褰撳墠椤垫暟
+ pageSize: 10, // 椤甸潰澶у皬
+ sort: "startTime", // 榛樿鎺掑簭瀛楁
+ order: "desc", // 榛樿鎺掑簭鏂瑰紡
+ promotionStatus:"START",
+ },
+ selectedRowId:'',
+ couponTotal:0,
+ couponData:[],
+ couponLoading:false,
+ couponColumns: [
+ // 琛ㄥご
+ {
+ title: "浼樻儬鍒稿悕绉�",
+ key: "couponName",
+ width: 180,
+ tooltip: true,
+ },
+ {
+ title: "闈㈤/鎶樻墸",
+ key: "price",
+ width: 150,
+ render: (h, params) => {
+ if (params.row.price) {
+ return h("priceColorScheme", {props:{value:params.row.price,color:this.$mainColor}} );
+
+ } else {
+ return h("div", params.row.couponDiscount + "鎶�");
+ }
+ },
+ },
+
+ {
+ title: "鑾峰彇鏂瑰紡",
+ width: 120,
+ key: "getType",
+ render: (h, params) => {
+ if (params.row.getType === "FREE") {
+ return h("Tag", { props: { color: "red" } }, "鍏嶈垂鑾峰彇");
+ } else if (params.row.getType === "ACTIVITY") {
+ return h("Tag", { props: { color: "volcano" } }, "娲诲姩鑾峰彇");
+ } else if (params.row.getType === "INSIDE") {
+ return h("Tag", { props: { color: "lime" } }, "鍐呰喘");
+ } else if (params.row.getType === "IGAME") {
+ return h("Tag", { props: { color: "lime" } }, "娓告垙浜虹敓");
+ } else {
+ return h("Tag", { props: { color: "purple" } }, "鏈煡");
+ }
+ },
+ },
+ {
+ title: "浼樻儬鍒哥被鍨�",
+ key: "couponType",
+ width: 150,
+ render: (h, params) => {
+ let text = "";
+ if (params.row.couponType === "DISCOUNT") {
+ return h("Tag", { props: { color: "blue" } }, "鎵撴姌");
+ } else if (params.row.couponType === "PRICE") {
+ return h("Tag", { props: { color: "geekblue" } }, "鍑忓厤鐜伴噾");
+ } else {
+ return h("Tag", { props: { color: "purple" } }, "鏈煡");
+ }
+ },
+ },
+ {
+ title: "鍝佺被鎻忚堪",
+ key: "scopeType",
+ width: 120,
+ render: (h, params) => {
+ return promotionsScopeTypeRender(h, params);
+ },
+ },
+ {
+ title: "娲诲姩鏃堕棿",
+ render: (h, params) => {
+ if (
+ params?.row?.getType === "ACTIVITY" &&
+ params?.row?.rangeDayType === "DYNAMICTIME"
+ ) {
+ return h("div", "闀挎湡鏈夋晥");
+ } else if (params?.row?.startTime && params?.row?.endTime) {
+ return h("div", {
+ domProps: {
+ innerHTML:
+ params.row.startTime + "<br/>" + params.row.endTime,
+ },
+ });
+ }
+ },
+ }
+ ],
+
showListImages: [],
regular,
openImage: false,
@@ -665,6 +921,8 @@
],
/** 鍙戝竷鍟嗗搧鍩烘湰鍙傛暟 */
baseInfoForm: {
+ customizeFlag:"",
+ virtualGoodsType:"",
salesModel: "RETAIL",
/** 鍟嗗搧鐩稿唽鍒楄〃 */
goodsGalleryFiles: [],
@@ -701,7 +959,8 @@
preSaleTime:[],
preSaleBeginDate:'',
preSaleEndDate:'',
- commission:5
+ commission:5,
+
},
/** 琛ㄦ牸澶� */
skuTableColumn: [],
@@ -759,6 +1018,10 @@
"price",
"weight",
"quantity",
+ "couponName",
+ "couponId",
+ "customizeTemplateName",
+ "customizetemplateId",
// "alertQuantity",
"specId",
"specValueId",
@@ -767,6 +1030,7 @@
selectedFormBtnName: "", // 鐐瑰嚮鍥剧墖缁戝畾form
selectedImage: [],
lastEditSkuValue: '',
+
};
},
watch: {
@@ -783,6 +1047,97 @@
}
},
methods: {
+ showTemplateListModal(event,row){
+ if (event.target.classList.contains('ivu-icon-ios-close-circle') ||
+ event.target.closest('.ivu-input-wrapper-clear-icon')) {
+ return; // 濡傛灉鏄竻闄ゆ寜閽紝涓嶆墽琛屽悗缁�昏緫
+ }
+ console.log(row)
+ console.log("瑙﹀彂鐐瑰嚮")
+ this.showTemplateModal = true;
+ this.showTemplate='';
+ this.getTemplateDataList()
+ this.currentRow = row;
+ },
+ showCouponListModal(event,row){
+ if (event.target.classList.contains('ivu-icon-ios-close-circle') ||
+ event.target.closest('.ivu-input-wrapper-clear-icon')) {
+ return; // 濡傛灉鏄竻闄ゆ寜閽紝涓嶆墽琛屽悗缁�昏緫
+ }
+ this.showCouponModal = true;
+ this.showCoupon ='';
+ this.getCouponDataList()
+ this.currentRow = row;
+ },
+ handleGoodsType(){
+ //閲嶆柊娓叉煋
+ this.renderTableData(this.skuTableData);
+ },
+ getTemplateDataList() {
+ // 鑾峰彇鏁版嵁
+ this.templateLoading = true;
+ API_GOODS_CUSTOMEIZE.getPage(this.templateSearchForm).then((res) => {
+ this.templateLoading = false;
+ if (res.code === 200) {
+ this.templateData = res.data;
+ this.templateTotal = res.total;
+ }
+ });
+ this.templateLoading = false;
+ },
+ getCouponDataList() {
+ // 鑾峰彇鏁版嵁
+ this.couponLoading = true;
+ getShopCouponList(this.couponSearchForm).then((res) => {
+ this.couponLoading = false;
+ if (res.success) {
+ this.couponData = res.result.records;
+ this.couponTotal = res.result.total;
+ }
+ });
+ this.couponLoading = false;
+ },
+ templateHandleRowClick(currentRow ,oldCurrentRow){
+ this.showTemplate = currentRow.templateName;
+ this.$set(this.currentRow, 'customizeTemplateName', currentRow.templateName);
+ this.currentRow.customizeTemplateId = currentRow.id
+ console.log(this.currentRow)
+ this.updateSkuTable(this.currentRow,"customizeTemplateName")
+ this.updateSkuTable(this.currentRow,"customizeTemplateId")
+ console.log(this.skuTableData)
+ },
+
+ // 澶勭悊琛岀偣鍑讳簨浠�
+ handleRowClick(currentRow ,oldCurrentRow){
+ this.showCoupon = currentRow.couponName;
+ this.$set(this.currentRow, 'couponName', currentRow.couponName);
+ this.currentRow.couponId = currentRow.id
+ console.log(this.currentRow)
+ this.updateSkuTable(this.currentRow,"couponName")
+ this.updateSkuTable(this.currentRow,"couponId")
+ console.log(this.skuTableData)
+ },
+ templateChangePage(v){
+ this.templateSearchForm.pageNumber = v;
+ this.getTemplateDataList();
+ },
+ templateChangePageSize(v){
+ this.templateSearchForm.pageNumber = 1;
+ this.templateSearchForm.pageSize = v;
+ this.getTemplateDataList();
+ },
+ couponChangePage(v) {
+ // 鏀瑰彉椤电爜
+ this.couponSearchForm.pageNumber = v;
+ this.getCouponDataList();
+ },
+ couponChangePageSize(v) {
+ // 鏀瑰彉椤垫暟
+ this.couponSearchForm.pageNumber = 1;
+ this.couponSearchForm.pageSize = v;
+ this.getCouponDataList();
+ },
+
// 鏍煎紡鍖栨樉绀哄��
formatter(date) {
return this.formatDate(date, 'yyyy-MM-dd');
@@ -1163,11 +1518,11 @@
},
});
console.log("涓婁紶鎴愬姛", upData)
- this.$nextTick(() => {
- this.listImages.push(fileKey);
- this.showListImages.push(sts.data.endpoint + "/" + fileKey);
- this.baseInfoForm.goodsGalleryFiles.push(fileKey);
- })
+ // this.$nextTick(() => {
+ // this.listImages.push(fileKey);
+ // this.showListImages.push(sts.data.endpoint + "/" + fileKey);
+ // this.baseInfoForm.goodsGalleryFiles.push(fileKey);
+ // })
} catch (e) {
console.log("涓婁紶澶辫触", upData)
@@ -1338,6 +1693,10 @@
// cost: e.cost,
quantity: e.quantity,
// alertQuantity: e.alertQuantity,
+ couponName:e.couponName,
+ couponId:e.couponId,
+ customizeTemplateName:e.customizeTemplateName,
+ customizeTemplateId:e.customizeTemplateId,
weight: e.weight,
};
if (e.goodsGalleryList && e.goodsGalleryList.length >= 1) {
@@ -1689,6 +2048,10 @@
// find.cost && (find.cost = "");
find.quantity && (find.quantity = "");
// find.alertQuantity && (find.alertQuantity = "");
+ find.couponName && (find.couponName = "");
+ find.couponId && (find.couponId = "");
+ find.customizeTemplateName && (find.customizeTemplateName = "");
+ find.customizeTemplateId && (find.customizeTemplateId ="");
find.weight && (find.weight = "");
this.skuTableData.splice(this.skuTableData.length, 0, find);
@@ -1703,6 +2066,10 @@
find.sn && (find.sn = "");
// find.cost && (find.cost = "");
find.quantity && (find.quantity = "");
+ find.couponName && (find.couponName = "");
+ find.couponId && (find.couponId = "");
+ find.customizeTemplateName && (find.customizeTemplateName = "");
+ find.customizeTemplateId && (find.customizeTemplateId ="");
// find.alertQuantity && (find.alertQuantity = "");
find.weight && (find.weight = "");
@@ -1795,6 +2162,21 @@
slot: "weight",
});
}
+ if (this.baseInfoForm.goodsType ==="VIRTUAL_GOODS" && this.baseInfoForm.virtualGoodsType==="COUPON"){
+ pushData.push(
+ {
+ title:"浼樻儬鍔�",
+ slot:"COUPON"
+ }
+ )
+ }
+ if(this.baseInfoForm.goodsType==="PHYSICAL_GOODS" &&this.baseInfoForm.customizeFlag==="CUSTOMIZE"){
+ pushData.push({
+ title:"瀹氬埗鍟嗗搧妯℃澘",
+ slot:"CUSTOMIZE"
+ })
+ }
+
pushData.push(
{
title: "搴撳瓨",
@@ -1847,6 +2229,8 @@
id: skus[index].id,
sn: skus[index].sn,
quantity: skus[index].quantity,
+ coupon: skus[index].coupon,
+ customize: skus[index].customize,
cost: skus[index].cost,
price: skus[index].price,
// [spec[0].name]: skus[index][spec[0].name] ? skus[index][spec[0].name] : specItem.value,
@@ -1996,6 +2380,7 @@
},
/** 娣诲姞鍟嗗搧 **/
save() {
+ console.log(this.skuTableData)
try {
this.submitLoading = true;
this.$refs["baseInfoForm"].validate((valid) => {
@@ -2010,7 +2395,7 @@
}
this.baseInfoForm.goodsId = this.goodsId;
let submit = JSON.parse(JSON.stringify(this.baseInfoForm));
- console.log('----------------->鎻愪氦', submit);
+
if (
submit.goodsGalleryFiles &&
submit.goodsGalleryFiles.length <= 0
@@ -2048,10 +2433,37 @@
cost: 1,
price: sku.price,
quantity: sku.quantity,
+ couponName:this.baseInfoForm.virtualGoodsType === "COUPON" ? sku.couponName:null,
+ couponId:this.baseInfoForm.virtualGoodsType === "COUPON" ? sku.couponId:null,
+ customizeTemplateName:this.baseInfoForm.customizeFlag === "CUSTOMIZE" ? sku.customizeTemplateName : null,
+ customizeTemplateId:this.baseInfoForm.customizeFlag === "CUSTOMIZE" ? sku.customizeTemplateId :null,
// alertQuantity: sku.alertQuantity,
sn: sku.sn,
images: [],
};
+ if(this.baseInfoForm.goodsType === "VIRTUAL_GOODS" &&
+ this.baseInfoForm.virtualGoodsType === "COUPON"
+ ){
+ if (sku.couponId === null || sku.couponId === undefined){
+ this.$Message.error("璇烽�夋嫨浼樻儬鍔�")
+ return;
+ }
+ if (sku.couponName === null || sku.couponName === undefined){
+ this.$Message.error("璇烽�夋嫨浼樻儬鍔�")
+ return;
+ }
+ }
+ if(this.baseInfoForm.goodsType === "PHYSICAL_GOODS" &&
+ this.baseInfoForm.customizeFlag === "CUSTOMIZE"){
+ if (sku.customizeTemplateId === null || sku.customizeTemplateId === undefined){
+ this.$Message.error("璇烽�夋嫨瀹氬埗妯℃澘")
+ return;
+ }
+ if (sku.customizeTemplateName === null || sku.customizeTemplateName === undefined){
+ this.$Message.error("璇烽�夋嫨瀹氬埗妯℃澘")
+ return;
+ }
+ }
if (this.openImage) {
this.skuInfo[0].spec_values.forEach(item => {
if (!item.images || item.images.length === 0) {
@@ -2078,6 +2490,7 @@
}
submit.skuList.push(skuCopy);
});
+ console.log('----------------->鎻愪氦', submit);
if (containEmptyImage) {
this.$Message.error("寮�鍚鏍煎浘鐗囷紝鎵�鏈夎鏍煎浘鐗囦笉鑳戒负绌猴紒");
this.submitLoading = false;
@@ -2096,6 +2509,7 @@
? (submit.recommend = true)
: (submit.recommend = false);
if (this.goodsId) {
+ console.log(this.submit)
API_GOODS.editGoods(this.goodsId, submit).then((res) => {
if (res.success) {
this.submitLoading = false;
@@ -2105,6 +2519,7 @@
}
});
} else {
+ console.log(submit)
API_GOODS.createGoods(submit).then((res) => {
if (res.success) {
this.submitLoading = false;
@@ -2198,8 +2613,8 @@
// todo 鏂囦欢涓婁紶
async upLoadImg(file) {
console.log(file, this.count++);
- if (this.listImages.length >= 5) {
- this.$Message.error("鍥剧墖涓婁紶涓嶈兘瓒呰繃5涓�");
+ if (this.listImages.length >= 10) {
+ this.$Message.error("鍥剧墖涓婁紶涓嶈兘瓒呰繃10涓�");
return;
}
try {
@@ -2293,6 +2708,7 @@
},
},
mounted() {
+
this.accessToken = {
accessToken: this.getStore("accessToken"),
};
@@ -2314,7 +2730,7 @@
this.categoryId = cateId[2];
this.baseInfoForm.categoryPath = cateId.toString();
this.baseInfoForm.goodsType = this.firstData.goodsType;
-
+ console.log(this.baseInfoForm)
if (this.categoryId != null && this.categoryId !== '') {
/** 鑾峰彇璇ュ晢鍩庡垎绫讳笅 鍟嗗搧鍙傛暟淇℃伅 */
--
Gitblit v1.8.0