From bd125eecd57d2f4e559c6170d20157591300fe3d Mon Sep 17 00:00:00 2001 From: p-honggang.li <p-honggang.li@pcitc.com> Date: 星期四, 04 九月 2025 20:57:44 +0800 Subject: [PATCH] 修改购物车等BUG --- src/views/productManage/price/index.vue | 153 +++++++++++++++++++++++++++----------------------- 1 files changed, 82 insertions(+), 71 deletions(-) diff --git a/src/views/productManage/price/index.vue b/src/views/productManage/price/index.vue index 55821cb..6c6701c 100644 --- a/src/views/productManage/price/index.vue +++ b/src/views/productManage/price/index.vue @@ -19,14 +19,14 @@ <el-descriptions v-if="productDetail" :column="2" border> <el-descriptions-item label="浜у搧鍚嶇О" label-width="10%">{{ productDetail.name }}</el-descriptions-item> - <el-descriptions-item label="鎻愭姤鍗曚綅" label-width="10%">{{ productDetail.submitUnit }}</el-descriptions-item> - <el-descriptions-item label="鎻愭姤浜�" label-width="10%">{{ productDetail.submitter }}</el-descriptions-item> - <el-descriptions-item label="琛屼笟棰嗗煙" label-width="10%">{{ productDetail.industry }}</el-descriptions-item> - <el-descriptions-item label="鍗曚綅宸ョ▼" label-width="10%">{{ productDetail.projectUnit }}</el-descriptions-item> - <el-descriptions-item label="浜т笟闃舵" label-width="10%">{{ productDetail.industryStage }}</el-descriptions-item> - <el-descriptions-item label="浜у搧绫诲瀷"label-width="10%">{{ productDetail.productType }}</el-descriptions-item> + <el-descriptions-item label="鎻愭姤鍗曚綅" label-width="10%">{{ productDetail.submissionUnit }}</el-descriptions-item> + <el-descriptions-item label="鎻愭姤浜�" label-width="10%">{{ productDetail.createBy }}</el-descriptions-item> + <el-descriptions-item label="琛屼笟棰嗗煙" label-width="10%">{{ productDetail.industrialChainName }}</el-descriptions-item> + <el-descriptions-item label="鍗曚綅宸ョ▼" label-width="10%">{{ productDetail.importantAreaName }}</el-descriptions-item> + <el-descriptions-item label="浜т笟闃舵" label-width="10%">{{ productDetail.businessProcessName }}</el-descriptions-item> + <el-descriptions-item label="浜у搧绫诲瀷"label-width="10%">{{ productDetail.typeName }}</el-descriptions-item> <el-descriptions-item label="浜у搧绠�浠�" :span="3"> - <div class="intro">{{ productDetail.description }}</div> + <div class="intro">{{ productDetail.describe }}</div> </el-descriptions-item> </el-descriptions> <el-empty v-else description="鏈壘鍒拌浜у搧鐨勮鎯�" /> @@ -49,16 +49,16 @@ class="pricing-group" > <div class="group-header">{{ group.suiteName }}</div> - <div class="pricing-cards-wrapper"> - <div + <div class="pricing-cards-wrapper"> + <div v-for="pricing in group.items" - :key="pricing.id" - class="pricing-card" - :class="{ - 'pricing-card-enabled': pricing.enableStatus === 'ENABLED', - 'pricing-card-disabled': pricing.enableStatus === 'DISABLED' - }" - > + :key="pricing.id" + class="pricing-card" + :class="{ + 'pricing-card-enabled': pricing.enableStatus === 'ENABLED', + 'pricing-card-disabled': pricing.enableStatus === 'DISABLED' + }" + > <div class="pricing-card-table"> <div class="pricing-row"> <div class="pricing-cell label-cell">閿�鍞舰寮�</div> @@ -144,16 +144,16 @@ class="price-form" > - <el-form-item label="浜у搧濂椾欢" prop="productSuite"> + <el-form-item label="浜у搧濂椾欢" prop="productSuite"> <el-select v-model="formData.productSuite" placeholder="璇烽�夋嫨" style="width: 60%"> <el-option v-for="opt in productSuiteOptions" :key="opt.value" :label="opt.label" :value="opt.value" /> </el-select> </el-form-item> - <el-form-item label="瀹㈡埛瀵硅薄" prop="customerObject"> + <el-form-item label="瀹㈡埛瀵硅薄" prop="customerObject"> <el-radio-group v-model="formData.customerObject"> <el-radio v-for="opt in customerObjectOptions" :key="opt.value" :label="opt.value">{{ opt.label }}</el-radio> </el-radio-group> - </el-form-item> + </el-form-item> <el-form-item label="閿�鍞舰寮�" prop="salesForm" class="sales-form-item"> <el-radio-group v-model="formData.salesForm" class="sales-form-group"> <el-radio v-for="opt in salesFormOptions" :key="opt.value" :label="opt.value">{{ opt.label }}</el-radio> @@ -208,7 +208,7 @@ <el-radio v-for="opt in enableStatusOptions" :key="opt.value" :label="opt.value">{{ opt.label }}</el-radio> </el-radio-group> </el-form-item> - + <el-form-item label="澶囨敞"> <el-input type="textarea" v-model="formData.remark" :rows="3" placeholder="璇疯緭鍏ュ娉�" /> @@ -223,12 +223,6 @@ </template> </el-dialog> - <!-- 浠锋牸鏌ョ湅鍣� --> - <ProductPriceViewer - v-model="showPriceViewer" - :product-id="currentProductId" - @order="handleOrderResult" - /> </div> </template> @@ -239,19 +233,21 @@ import { Goods, Lock, Unlock } from '@element-plus/icons-vue' import ProductPriceViewer from '@/views/productManage/productPriceViewer/index.vue' import productPricingApi from '@/api/productPricingApi' +import productApi from '@/api/productApi' interface ProductDetail { id: string name: string - submitUnit: string - submitter: string - industry: string - projectUnit: string - industryStage: string - productType: string - description: string + submissionUnit: string + createBy: string + industrialChainName: string + importantAreaName: string + businessProcessName: string + typeName: string + describe: string shelfStatus?: '寰呬笂鏋�' | '宸蹭笂鏋�' | '宸蹭笅鏋�' + listingStatusName?: '' } interface PriceItem { @@ -282,7 +278,7 @@ }) const productDetail = ref<ProductDetail | null>(null) -const shelfStatus = computed(() => productDetail.value?.shelfStatus || '寰呬笂鏋�') +const shelfStatus = computed(() => productDetail.value?.listingStatusName || '寰呬笂鏋�') const statusClass = computed(() => { switch (shelfStatus.value) { case '宸蹭笂鏋�': @@ -297,32 +293,32 @@ }) // 妯℃嫙浜у搧璇︽儏鏁版嵁婧� -const mockProductMap: Record<string, ProductDetail> = { - '1': { - id: '1', - name: '鏁板瓧鍖栦骇鍝丄', - submitUnit: '涓氦涓�鍏眬', - submitter: '寮犱笁', - industry: '浜ら�氬熀纭�璁炬柦', - projectUnit: '鏌愰珮閫熷叕璺伐绋�', - industryStage: '搴旂敤闃舵', - productType: '杞欢/骞冲彴', - description: '鏈骇鍝佸畾浣嶄负浠ュ缓璁炬湡BIM鏁板瓧璧勪骇浣滀负鏁板瓧搴曠洏锛岀粨鍚堥」鐩繍钀ョ淮淇濋渶姹傜殑瀹炴椂鎬с�佷氦浜掓�с�佷究鎹锋�х殑涓夌淮鍙鍖栬繍缁寸鐞嗙郴缁熴�傜郴缁熸彁渚涢」鐩暟瀛楀寲銆佹櫤鑳藉寲杩愮淮绠$悊鍔熻兘锛岃兘澶熻В鍐冲缓绛戣繍琛岀淮鎶ょ鐞嗕腑鐨勫疄闄呴棶棰橈紝瀹炵幇淇℃伅蹇�熸暣鍚堜笌鏌ヨ銆佷俊鎭湁鏁堝叡浜笌浼犻�掞紝鎻愬崌椤圭洰缁煎悎绠$悊涓庣淮鎶ゆ按骞炽��', - shelfStatus: '寰呬笂鏋�' - }, - '2': { - id: '2', - name: '鏁板瓧鍖栦骇鍝丅', - submitUnit: '涓氦浜岃埅灞�', - submitter: '鏉庡洓', - industry: '甯傛斂宸ョ▼', - projectUnit: '鏅烘収绠″粖椤圭洰', - industryStage: '鐮斿彂闃舵', - productType: '纭欢/浼犳劅', - description: '闈㈠悜鍩庡競绠″粖鐩戞祴鐨勪紶鎰熻澶囦笌閲囬泦缃戝叧锛屾敮鎸佽竟缂樿绠椾笌杩滅▼杩愮淮銆�', - shelfStatus: '宸蹭笂鏋�' - } -} +// const mockProductMap: Record<string, ProductDetail> = { +// '1': { +// id: '1', +// name: '鏁板瓧鍖栦骇鍝丄', +// submitUnit: '涓氦涓�鍏眬', +// submitter: '寮犱笁', +// industry: '浜ら�氬熀纭�璁炬柦', +// projectUnit: '鏌愰珮閫熷叕璺伐绋�', +// industryStage: '搴旂敤闃舵', +// productType: '杞欢/骞冲彴', +// description: '鏈骇鍝佸畾浣嶄负浠ュ缓璁炬湡BIM鏁板瓧璧勪骇浣滀负鏁板瓧搴曠洏锛岀粨鍚堥」鐩繍钀ョ淮淇濋渶姹傜殑瀹炴椂鎬с�佷氦浜掓�с�佷究鎹锋�х殑涓夌淮鍙鍖栬繍缁寸鐞嗙郴缁熴�傜郴缁熸彁渚涢」鐩暟瀛楀寲銆佹櫤鑳藉寲杩愮淮绠$悊鍔熻兘锛岃兘澶熻В鍐冲缓绛戣繍琛岀淮鎶ょ鐞嗕腑鐨勫疄闄呴棶棰橈紝瀹炵幇淇℃伅蹇�熸暣鍚堜笌鏌ヨ銆佷俊鎭湁鏁堝叡浜笌浼犻�掞紝鎻愬崌椤圭洰缁煎悎绠$悊涓庣淮鎶ゆ按骞炽��', +// shelfStatus: '寰呬笂鏋�' +// }, +// '2': { +// id: '2', +// name: '鏁板瓧鍖栦骇鍝丅', +// submitUnit: '涓氦浜岃埅灞�', +// submitter: '鏉庡洓', +// industry: '甯傛斂宸ョ▼', +// projectUnit: '鏅烘収绠″粖椤圭洰', +// industryStage: '鐮斿彂闃舵', +// productType: '纭欢/浼犳劅', +// description: '闈㈠悜鍩庡競绠″粖鐩戞祴鐨勪紶鎰熻澶囦笌閲囬泦缃戝叧锛屾敮鎸佽竟缂樿绠椾笌杩滅▼杩愮淮銆�', +// shelfStatus: '宸蹭笂鏋�' +// } +// } const loading = ref(false) const priceList = ref<any[]>([]) @@ -503,14 +499,17 @@ } loading.value = true try { - productDetail.value = mockProductMap[productId] || null - // const detailRes: any = await productApi.getProductDetail({ id: productId }) - // if (detailRes?.code === 200) { - // productDetail.value = detailRes.data || null - // } else { - // productDetail.value = null - // ElMessage.error(detailRes?.msg || '鑾峰彇浜у搧璇︽儏澶辫触') - // } + // productDetail.value = mockProductMap[productId] || null + const data = { + id: productId + } + const detailRes: any = await productApi.getProductById(data) + if (detailRes?.code === 200) { + productDetail.value = detailRes.data || null + } else { + productDetail.value = null + ElMessage.error(detailRes?.msg || '鑾峰彇浜у搧璇︽儏澶辫触') + } await loadPricingList(productId) } catch (e) { productDetail.value = null @@ -638,7 +637,7 @@ return { id: row.id, - productId: Number(row.productId), + productId: row.productId, productName: productDetail.value?.name, suiteName: row.productSuite, salesForm: mapSalesFormToCN(row.salesForm), @@ -789,7 +788,7 @@ return { id: isEditMode.value && formData.id ? formData.id : undefined, - productId: Number(currentProductId.value), + productId: currentProductId.value, productName: productDetail.value?.name, suiteName: formData.productSuite, salesForm: mapSalesFormToCN(formData.salesForm), @@ -812,7 +811,7 @@ const res: any = await productPricingApi.update(payload) if (res?.code === 200) { ElMessage.success('淇敼鎴愬姛') - } else { + } else { ElMessage.error(res?.msg || '淇敼澶辫触') return } @@ -826,6 +825,18 @@ return } ElMessage.success('鏂板缓鎴愬姛') + // 淇敼浜у搧鐘舵�佷负宸茶浠� + // 鍒ゆ柇 浜у搧瀹氫环鍒楄〃鏄惁涓虹┖锛屼负绌哄垯鏇存柊鐘舵�侊紝涓嶄负绌哄垯璇存槑鏇存柊杩囦簡锛屼笉闇�瑕佸湪姝ゆ洿鏂� + if (priceList.value.length === 0) { + const updateParams = { + id: currentProductId.value, + listingStatus: 'PRICED' + } + const res: any = await productApi.updateProductStatus(updateParams) + if (res?.code !== 200) { + console.log('浜у搧鐘舵�佹洿鏂板け璐ワ紒锛�') + } + } } dialogVisible.value = false -- Gitblit v1.8.0