From 0293d4f776f88ebc307a750f38a16454f4553701 Mon Sep 17 00:00:00 2001
From: zjh <2207896513@qq.com>
Date: 星期二, 19 八月 2025 21:01:35 +0800
Subject: [PATCH] 首检、巡检一致性前端代码提交
---
pages/QC/XJ/Add.vue | 19 +
pages/QC/XJ/yzxFrom.vue | 309 +++++++++++++++++++++++++
static/img/bj/1738973218634.png | 0
manifest.json | 2
pages/QC/SJ/yzxFrom.vue | 309 +++++++++++++++++++++++++
pages.json | 26 +
pages/QC/SJ/List.vue | 15 +
pages/QC/SJ/Add.vue | 13 +
pages/QC/XJ/List.vue | 10
9 files changed, 688 insertions(+), 15 deletions(-)
diff --git a/manifest.json b/manifest.json
index 6b15b35..72d3d09 100644
--- a/manifest.json
+++ b/manifest.json
@@ -2,7 +2,7 @@
"name" : "GS-MES-AP",
"appid" : "__UNI__B38B152",
"description" : "",
- "versionName" : "1.1.2.0001",
+ "versionName" : "1.1.2.0002",
"versionCode" : 1,
"transformPx" : false,
/* 5+App鐗规湁鐩稿叧 */
diff --git a/pages.json b/pages.json
index 4bd00da..c309b19 100644
--- a/pages.json
+++ b/pages.json
@@ -9,12 +9,12 @@
"iconPath": "static/img/home.png",
"selectedIconPath": "static/img/homeHL.png"
},
- {
- "pagePath": "pages/BasePages/message",
- "text": "娑堟伅涓績",
- "iconPath": "static/img/user.png",
- "selectedIconPath": "static/img/userHL.png"
- },
+ // {
+ // "pagePath": "pages/BasePages/message",
+ // "text": "娑堟伅涓績",
+ // "iconPath": "static/img/user.png",
+ // "selectedIconPath": "static/img/userHL.png"
+ // },
{
"pagePath": "pages/BasePages/user",
"text": "鎴戠殑",
@@ -161,6 +161,20 @@
}
},
{
+ "path": "pages/QC/SJ/yzxFrom",
+ "style": {
+ "navigationBarTitleText": "涓�鑷存�ф牳瀵�",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path": "pages/QC/XJ/yzxFrom",
+ "style": {
+ "navigationBarTitleText": "涓�鑷存�ф牳瀵�",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
"path": "pages/QC/LLJ/Blms",
"style": {
"navigationBarTitleText": "涓嶈壇鎻忚堪",
diff --git a/pages/QC/SJ/Add.vue b/pages/QC/SJ/Add.vue
index fdedfb1..060cb3c 100644
--- a/pages/QC/SJ/Add.vue
+++ b/pages/QC/SJ/Add.vue
@@ -130,6 +130,7 @@
<view class="action-buttons">
<button v-if="isUpdate && !isShowTable" class="secondary-btn" @click="save">鍒涘缓妫�楠屽崟骞剁敓鎴愰儴鍒嗛粯璁ゅ��</button>
<button v-if="!isUpdate && !isShowTable" class="secondary-btn" @click="toImage">涓婁紶/鏌ョ湅鍥剧墖</button>
+ <button v-if="!isUpdate && !isShowTable" class="secondary-btn" @click="toYzxSubmitFrom(formData.releaseNo)">涓�鑷存�ф牳瀵�</button>
<button v-if="!isUpdate && !formData.statusUser && !isShowTable" class="secondary-btn" @click="removeXJ">
鍒犻櫎鍗曟嵁
</button>
@@ -207,7 +208,12 @@
//options涓寘鍚簡url闄勫甫鐨勫弬鏁�
let params = options;
-
+ if(params["current"]==='A')
+ {
+ this.current=true;
+ }else if(params["current"]==='B'){
+ this.current=false;
+ }
if (params["id"]) {
this.isUpdate = false;
this.formData.id = params["id"];
@@ -483,6 +489,11 @@
this.isUpdate = false;
})
},
+ toYzxSubmitFrom(releaseNo){
+ uni.navigateTo({
+ url: 'yzxFrom?id=' +this.formData.id+'¤t='+this.current
+ });
+ },
save() {
// if (this.tableData.length === 0) {
diff --git a/pages/QC/SJ/List.vue b/pages/QC/SJ/List.vue
index 7125a48..6a25c8b 100644
--- a/pages/QC/SJ/List.vue
+++ b/pages/QC/SJ/List.vue
@@ -195,9 +195,18 @@
this.init();
},
navigateToDetail(item) {
- uni.navigateTo({
- url: 'Add?id=' + item.id + '&billNo=' + item.billNo
- });
+ if (this.current === 1) {
+ uni.navigateTo({
+ url: 'Add?id=' + item.id + '&billNo=' + item.billNo+
+ '¤t=B'
+ });
+ }else{
+ uni.navigateTo({
+ url: 'Add?id=' + item.id + '&billNo=' + item.billNo+
+ '¤t=A'
+ });
+ }
+
}
},
/**
diff --git a/pages/QC/SJ/yzxFrom.vue b/pages/QC/SJ/yzxFrom.vue
new file mode 100644
index 0000000..4b0cd2e
--- /dev/null
+++ b/pages/QC/SJ/yzxFrom.vue
@@ -0,0 +1,309 @@
+<template>
+ <view class="container">
+ <!-- 琛ㄦ牸澶撮儴 -->
+ <view class="table-header" v-if="components.length>0">
+ <view class="th name">鍏冨櫒浠跺悕绉�</view>
+ <view class="th spec">瑙勬牸</view>
+ <view class="th manufacturer">鍒堕�犲晢</view>
+ <view class="th operation">涓婁紶鍥剧墖</view>
+
+ </view>
+
+ <!-- 琛ㄦ牸鍐呭 -->
+ <view class="table-body" v-if="components.length>0">
+ <!-- 寰幆娓叉煋鍏冨櫒浠� -->
+ <view class="tr" v-for="(item, index) in components" :key="index">
+ <view class="td name">{{ item.name }}</view>
+
+ <!-- 瑙勬牸鍒� -->
+ <view class="td spec"v-if="current=='true'">
+ <view v-for="(spec, sIndex) in item.specs" :key="sIndex"
+ class="option-item" @click="selectSpec(item, sIndex)">
+ <radio :value="String(sIndex)"
+ :checked="item.selectedSpec === sIndex"/>
+ <text class="option-text">{{ spec }}</text>
+ </view>
+ </view>
+
+ <!-- 鍒堕�犲晢鍒� -->
+ <view class="td manufacturer" v-if="current=='true'">
+ <view v-for="(mfg, mIndex) in item.manufacturers" :key="mIndex"
+ class="option-item" @click="selectMfg(item, mIndex)">
+ <radio :value="String(mIndex)"
+ :checked="item.selectedMfg === mIndex"/>
+ <text class="option-text">{{ mfg }}</text>
+ </view>
+ </view>
+
+ <view class="td operation" v-if="current=='true'">
+ <button class="secondary-btn" @click="uploadImages(item.id)">涓婁紶/鏌ョ湅鍥剧墖</button>
+ </view>
+
+ <!-- 瑙勬牸鍒� -->
+ <view class="td spec" v-if="current!='true'">
+ <view v-for="(spec, sIndex) in item.specs" :key="sIndex"
+ class="option-item">
+ <radio :value="String(sIndex)"
+ :checked="item.selectedSpec === sIndex"
+ :disabled="true"/>
+ <text class="option-text">{{ spec }}</text>
+ </view>
+ </view>
+
+ <!-- 鍒堕�犲晢鍒� -->
+ <view class="td manufacturer" v-if="current!='true'">
+ <view v-for="(mfg, mIndex) in item.manufacturers" :key="mIndex"
+ class="option-item">
+ <radio :value="String(mIndex)"
+ :checked="item.selectedMfg === mIndex"
+ :disabled="true"/>
+ <text class="option-text">{{ mfg }}</text>
+ </view>
+ </view>
+ <view class="td operation" v-if="current!='true'">
+ <button class="secondary-btn" @click="uploadImages(item.id)">涓婁紶/鏌ョ湅鍥剧墖</button>
+ </view>
+
+
+ </view>
+ </view>
+
+ <!-- 鎻愪氦鎸夐挳 -->
+ <view class="submit-container" v-if="components.length>0">
+ <button v-if="this.current=='true'" class="primary-btn"
+ :disabled="isSubmitting"
+ @tap="handleSubmit">
+ {{ isSubmitting ? '鎻愪氦涓�...' : '淇濆瓨娓呭崟' }}
+ </button>
+ <!-- <button class="secondary-btn" @click="uploadImages">涓婁紶/鏌ョ湅鍥剧墖</button> -->
+ </view>
+ <view class="submit-container" v-if="components.length==0">
+ <h1>娓╅Θ鎻愮ず锛�</h1>
+ <h1>璇ョ墿鏂欐病鏈夌淮鎶や竴鑷存�ф牳瀵归」鐩紝璇峰厛缁存姢锛�</h1>
+ </view>
+ </view>
+</template>
+
+<script>
+export default {
+ data() {
+ return {
+ isSubmitting: false,
+ formid:0,
+ components: [],
+ current:'false'
+ }
+ },
+ methods: {
+ selectSpec(item, index) {
+ if (this.isSubmitting) return
+ item.selectedSpec = index
+ if (index < item.manufacturers.length) {
+ item.selectedMfg = index
+ }
+ },
+ selectMfg(item, index) {
+ if (this.isSubmitting) return
+ item.selectedMfg = index
+ if (index < item.specs.length) {
+ item.selectedSpec = index
+ }
+ },
+ uploadImages(id) {
+ // 涓婁紶/鏌ョ湅鍥剧墖鐨勯�昏緫
+ uni.navigateTo({
+ url: 'ImageItem?id=999' + id.sort()[0]
+ });
+ },
+ async handleSubmit() {
+ if (this.isSubmitting) return
+
+ try {
+ this.isSubmitting = true
+
+ // 琛ㄥ崟楠岃瘉
+ const validation = this.validateForm()
+ if (!validation.valid) {
+ uni.showToast({
+ title: validation.msg,
+ icon: 'none',
+ duration: 2000
+ })
+ return
+ }
+
+ // 鑾峰彇鎻愪氦鏁版嵁
+ const submitData = this.components.map(item => ({
+ name: item.name,
+ spec: item.specs[item.selectedSpec],
+ manufacturer: item.manufacturers[item.selectedMfg],
+ id: item.id[item.selectedMfg]
+ }))
+
+ // 瀹為檯鎻愪氦鏃跺彲鍙栨秷娉ㄩ噴浠ヤ笅浠g爜
+ // const res = await uni.request({
+ // url: 'your_api_url',
+ // method: 'POST',
+ // data: submitData
+ // })
+ this.$post({
+ url: "/SJ/saveYzxItem",
+ data: {
+ id:this.formid,
+ data: submitData
+ }
+ }).then(res => {
+ if(res.status==0){
+ uni.showToast({
+ title: '淇濆瓨鎴愬姛',
+ icon: 'success',
+ duration: 2000
+ })
+ }else{
+ uni.showModal({
+ title: "鎻愮ず",
+ content: res.message,
+ confirmText: "纭畾",
+ showCancel: false,
+ success: (res) => {
+
+ }
+ })
+ }
+ }).catch(() => {
+ this.isLoading = false; // 鍑虹幇閿欒鏃剁粨鏉熷姞杞�
+ });
+
+
+
+ } finally {
+ this.isSubmitting = false
+ }
+ },
+ validateForm() {
+ // for (const item of this.components) {
+ // if (item.selectedSpec === -1 || item.selectedMfg === -1) {
+ // return {
+ // valid: false,
+ // msg: `${item.name} 鏈畬鎴愰�夋嫨`
+ // }
+ // }
+ // }
+ return { valid: true }
+ },
+ onLoad(options) {
+ //options涓寘鍚簡url闄勫甫鐨勫弬鏁�
+ let params = options;
+ this.formid = params["id"];
+ this.current=params["current"];
+
+ //椤甸潰鍔犺浇鏃惰皟鐢ㄧ殑浜嬩欢
+ this.$post({
+ url: "/SJ/getYzxItem",
+ data: {
+ id:this.formid
+ }
+ }).then(res => {
+ console.log(res);
+ this.components=res.data
+ }).catch(() => {
+ this.isLoading = false; // 鍑虹幇閿欒鏃剁粨鏉熷姞杞�
+ });
+ },
+ }
+}
+</script>
+
+<style scoped>
+.container {
+ padding: 20rpx;
+ background-color: #f5f5f5;
+ min-height: 100vh;
+}
+
+/* 琛ㄦ牸鏍峰紡 */
+.table-header, .tr {
+ display: flex;
+ border-bottom: 1rpx solid #eee;
+ background-color: #fff;
+}
+
+.th, .td {
+ padding: 20rpx;
+ border-right: 1rpx solid #eee;
+}
+
+.th {
+ background-color: #f8f9fa;
+ font-weight: bold;
+ color: #333;
+}
+
+.name { width: 20%; }
+.spec { width: 30%; }
+.manufacturer { width: 30%; }
+.operation { width: 20%; }
+
+/* 閫夐」鏍峰紡 */
+.option-item {
+ display: flex;
+ align-items: center;
+ padding: 20rpx 0;
+ min-height: 80rpx;
+}
+
+radio {
+ transform: scale(0.9);
+ margin-right: 15rpx;
+}
+
+.option-text {
+ flex: 1;
+ font-size: 28rpx;
+ color: #444;
+}
+
+.primary-btn, .secondary-btn {
+ padding: 10px 20px;
+ border: none;
+ border-radius: 4px;
+ font-size: 14px;
+ cursor: pointer;
+ transition: all 0.3s;
+}
+
+.primary-btn {
+ background-color: #3498db;
+ color: white;
+}
+
+.primary-btn:hover {
+ background-color: #2980b9;
+}
+
+/* 鎻愪氦鎸夐挳鏍峰紡 */
+.submit-container {
+ /* margin: 40rpx 20rpx; */
+ padding: 20rpx 0;
+ background-color: #fff;
+ /* border-radius: 16rpx; */
+}
+
+
+/* 鍝嶅簲寮忛�傞厤 */
+@media (max-width: 768px) {
+ .th, .td {
+ padding: 16rpx;
+ font-size: 26rpx;
+ }
+
+ .option-text {
+ font-size: 26rpx;
+ }
+
+ .submit-btn {
+ width: 95%;
+ font-size: 28rpx;
+ }
+}
+</style>
\ No newline at end of file
diff --git a/pages/QC/XJ/Add.vue b/pages/QC/XJ/Add.vue
index 6190db1..02dfc45 100644
--- a/pages/QC/XJ/Add.vue
+++ b/pages/QC/XJ/Add.vue
@@ -137,6 +137,10 @@
<!-- 鎿嶄綔鎸夐挳鍖� -->
<view class="action-buttons">
<button v-if="isUpdate && !isShowTable" class="secondary-btn" @click="getItem">鍒涘缓妫�楠屽崟骞剁敓鎴愰儴鍒嗛粯璁ゅ��</button>
+
+ <!-- <button class="secondary-btn" @click="toYzxSubmitFrom(formData.releaseNo)">涓�鑷存�ф牳瀵�</button> -->
+
+ <button v-if="!isUpdate && !isShowTable" class="secondary-btn" @click="toYzxSubmitFrom(formData.releaseNo)">涓�鑷存�ф牳瀵�</button>
<button v-if="!isUpdate && !isShowTable" class="secondary-btn" @click="toImage">涓婁紶/鏌ョ湅鍥剧墖</button>
<button v-if="!isUpdate && !formData.fsubmit && !isShowTable" class="secondary-btn" @click="removeXJ">
鍒犻櫎鍗曟嵁
@@ -216,9 +220,14 @@
},
onLoad(options) {
//options涓寘鍚簡url闄勫甫鐨勫弬鏁�
-
+
let params = options;
-
+if(params["current"]==='A')
+ {
+ this.current=true;
+ }else if(params["current"]==='B'){
+ this.current=false;
+ }
if (params["id"]) {
this.isUpdate = false;
this.formData.id = params["id"];
@@ -427,7 +436,11 @@
}
});
});
- },
+ }, toYzxSubmitFrom(releaseNo){
+ uni.navigateTo({
+ url: 'yzxFrom?id=' +this.formData.id+'¤t='+this.current
+ });
+ },
init() {
this.$post({
url: "/XJ/getPage",
diff --git a/pages/QC/XJ/List.vue b/pages/QC/XJ/List.vue
index 4a165a2..76c110a 100644
--- a/pages/QC/XJ/List.vue
+++ b/pages/QC/XJ/List.vue
@@ -181,9 +181,17 @@
}
},
navigateToDetail(item) {
+ if (this.current === 1) {
uni.navigateTo({
- url: 'Add?id=' + item.id + '&releaseNo=' + item.releaseNo
+ url: 'Add?id=' + item.id + '&releaseNo=' + item.releaseNo+
+ '¤t=B'
});
+ }else{
+ uni.navigateTo({
+ url: 'Add?id=' + item.id + '&releaseNo=' + item.releaseNo+
+ '¤t=A'
+ });
+ }
}
},
/**
diff --git a/pages/QC/XJ/yzxFrom.vue b/pages/QC/XJ/yzxFrom.vue
new file mode 100644
index 0000000..a2c8c89
--- /dev/null
+++ b/pages/QC/XJ/yzxFrom.vue
@@ -0,0 +1,309 @@
+<template>
+ <view class="container">
+ <!-- 琛ㄦ牸澶撮儴 -->
+ <view class="table-header" v-if="components.length>0">
+ <view class="th name">鍏冨櫒浠跺悕绉�</view>
+ <view class="th spec">瑙勬牸</view>
+ <view class="th manufacturer">鍒堕�犲晢</view>
+ <view class="th operation">涓婁紶鍥剧墖</view>
+
+ </view>
+
+ <!-- 琛ㄦ牸鍐呭 -->
+ <view class="table-body" v-if="components.length>0">
+ <!-- 寰幆娓叉煋鍏冨櫒浠� -->
+ <view class="tr" v-for="(item, index) in components" :key="index">
+ <view class="td name">{{ item.name }}</view>
+
+ <!-- 瑙勬牸鍒� -->
+ <view class="td spec"v-if="current=='true'">
+ <view v-for="(spec, sIndex) in item.specs" :key="sIndex"
+ class="option-item" @click="selectSpec(item, sIndex)">
+ <radio :value="String(sIndex)"
+ :checked="item.selectedSpec === sIndex"/>
+ <text class="option-text">{{ spec }}</text>
+ </view>
+ </view>
+
+ <!-- 鍒堕�犲晢鍒� -->
+ <view class="td manufacturer" v-if="current=='true'">
+ <view v-for="(mfg, mIndex) in item.manufacturers" :key="mIndex"
+ class="option-item" @click="selectMfg(item, mIndex)">
+ <radio :value="String(mIndex)"
+ :checked="item.selectedMfg === mIndex"/>
+ <text class="option-text">{{ mfg }}</text>
+ </view>
+ </view>
+
+ <view class="td operation" v-if="current=='true'">
+ <button class="secondary-btn" @click="uploadImages(item.id)">涓婁紶/鏌ョ湅鍥剧墖</button>
+ </view>
+
+ <!-- 瑙勬牸鍒� -->
+ <view class="td spec" v-if="current!='true'">
+ <view v-for="(spec, sIndex) in item.specs" :key="sIndex"
+ class="option-item">
+ <radio :value="String(sIndex)"
+ :checked="item.selectedSpec === sIndex"
+ :disabled="true"/>
+ <text class="option-text">{{ spec }}</text>
+ </view>
+ </view>
+
+ <!-- 鍒堕�犲晢鍒� -->
+ <view class="td manufacturer" v-if="current!='true'">
+ <view v-for="(mfg, mIndex) in item.manufacturers" :key="mIndex"
+ class="option-item">
+ <radio :value="String(mIndex)"
+ :checked="item.selectedMfg === mIndex"
+ :disabled="true"/>
+ <text class="option-text">{{ mfg }}</text>
+ </view>
+ </view>
+ <view class="td operation" v-if="current!='true'">
+ <button class="secondary-btn" @click="uploadImages(item.id)">涓婁紶/鏌ョ湅鍥剧墖</button>
+ </view>
+
+
+ </view>
+ </view>
+
+ <!-- 鎻愪氦鎸夐挳 -->
+ <view class="submit-container" v-if="components.length>0">
+ <button v-if="this.current=='true'" class="primary-btn"
+ :disabled="isSubmitting"
+ @tap="handleSubmit">
+ {{ isSubmitting ? '鎻愪氦涓�...' : '淇濆瓨娓呭崟' }}
+ </button>
+ <!-- <button class="secondary-btn" @click="uploadImages">涓婁紶/鏌ョ湅鍥剧墖</button> -->
+ </view>
+ <view class="submit-container" v-if="components.length==0">
+ <h1>娓╅Θ鎻愮ず锛�</h1>
+ <h1>璇ョ墿鏂欐病鏈夌淮鎶や竴鑷存�ф牳瀵归」鐩紝璇峰厛缁存姢锛�</h1>
+ </view>
+ </view>
+</template>
+
+<script>
+export default {
+ data() {
+ return {
+ isSubmitting: false,
+ formid:0,
+ components: [],
+ current:'false'
+ }
+ },
+ methods: {
+ selectSpec(item, index) {
+ if (this.isSubmitting) return
+ item.selectedSpec = index
+ if (index < item.manufacturers.length) {
+ item.selectedMfg = index
+ }
+ },
+ selectMfg(item, index) {
+ if (this.isSubmitting) return
+ item.selectedMfg = index
+ if (index < item.specs.length) {
+ item.selectedSpec = index
+ }
+ },
+ uploadImages(id) {
+ // 涓婁紶/鏌ョ湅鍥剧墖鐨勯�昏緫
+ uni.navigateTo({
+ url: 'ImageItem?id=777' + id.sort()[0]
+ });
+ },
+ async handleSubmit() {
+ if (this.isSubmitting) return
+
+ try {
+ this.isSubmitting = true
+
+ // 琛ㄥ崟楠岃瘉
+ const validation = this.validateForm()
+ if (!validation.valid) {
+ uni.showToast({
+ title: validation.msg,
+ icon: 'none',
+ duration: 2000
+ })
+ return
+ }
+
+ // 鑾峰彇鎻愪氦鏁版嵁
+ const submitData = this.components.map(item => ({
+ name: item.name,
+ spec: item.specs[item.selectedSpec],
+ manufacturer: item.manufacturers[item.selectedMfg],
+ id: item.id[item.selectedMfg]
+ }))
+
+ // 瀹為檯鎻愪氦鏃跺彲鍙栨秷娉ㄩ噴浠ヤ笅浠g爜
+ // const res = await uni.request({
+ // url: 'your_api_url',
+ // method: 'POST',
+ // data: submitData
+ // })
+ this.$post({
+ url: "/XJ/saveYzxItem",
+ data: {
+ id:this.formid,
+ data: submitData
+ }
+ }).then(res => {
+ if(res.status==0){
+ uni.showToast({
+ title: '淇濆瓨鎴愬姛',
+ icon: 'success',
+ duration: 2000
+ })
+ }else{
+ uni.showModal({
+ title: "鎻愮ず",
+ content: res.message,
+ confirmText: "纭畾",
+ showCancel: false,
+ success: (res) => {
+
+ }
+ })
+ }
+ }).catch(() => {
+ this.isLoading = false; // 鍑虹幇閿欒鏃剁粨鏉熷姞杞�
+ });
+
+
+
+ } finally {
+ this.isSubmitting = false
+ }
+ },
+ validateForm() {
+ // for (const item of this.components) {
+ // if (item.selectedSpec === -1 || item.selectedMfg === -1) {
+ // return {
+ // valid: false,
+ // msg: `${item.name} 鏈畬鎴愰�夋嫨`
+ // }
+ // }
+ // }
+ return { valid: true }
+ },
+ onLoad(options) {
+ //options涓寘鍚簡url闄勫甫鐨勫弬鏁�
+ let params = options;
+ this.formid = params["id"];
+ this.current=params["current"];
+
+ //椤甸潰鍔犺浇鏃惰皟鐢ㄧ殑浜嬩欢
+ this.$post({
+ url: "/XJ/getYzxItem",
+ data: {
+ id:this.formid
+ }
+ }).then(res => {
+ console.log(res);
+ this.components=res.data
+ }).catch(() => {
+ this.isLoading = false; // 鍑虹幇閿欒鏃剁粨鏉熷姞杞�
+ });
+ },
+ }
+}
+</script>
+
+<style scoped>
+.container {
+ padding: 20rpx;
+ background-color: #f5f5f5;
+ min-height: 100vh;
+}
+
+/* 琛ㄦ牸鏍峰紡 */
+.table-header, .tr {
+ display: flex;
+ border-bottom: 1rpx solid #eee;
+ background-color: #fff;
+}
+
+.th, .td {
+ padding: 20rpx;
+ border-right: 1rpx solid #eee;
+}
+
+.th {
+ background-color: #f8f9fa;
+ font-weight: bold;
+ color: #333;
+}
+
+.name { width: 20%; }
+.spec { width: 30%; }
+.manufacturer { width: 30%; }
+.operation { width: 20%; }
+
+/* 閫夐」鏍峰紡 */
+.option-item {
+ display: flex;
+ align-items: center;
+ padding: 20rpx 0;
+ min-height: 80rpx;
+}
+
+radio {
+ transform: scale(0.9);
+ margin-right: 15rpx;
+}
+
+.option-text {
+ flex: 1;
+ font-size: 28rpx;
+ color: #444;
+}
+
+.primary-btn, .secondary-btn {
+ padding: 10px 20px;
+ border: none;
+ border-radius: 4px;
+ font-size: 14px;
+ cursor: pointer;
+ transition: all 0.3s;
+}
+
+.primary-btn {
+ background-color: #3498db;
+ color: white;
+}
+
+.primary-btn:hover {
+ background-color: #2980b9;
+}
+
+/* 鎻愪氦鎸夐挳鏍峰紡 */
+.submit-container {
+ /* margin: 40rpx 20rpx; */
+ padding: 20rpx 0;
+ background-color: #fff;
+ /* border-radius: 16rpx; */
+}
+
+
+/* 鍝嶅簲寮忛�傞厤 */
+@media (max-width: 768px) {
+ .th, .td {
+ padding: 16rpx;
+ font-size: 26rpx;
+ }
+
+ .option-text {
+ font-size: 26rpx;
+ }
+
+ .submit-btn {
+ width: 95%;
+ font-size: 28rpx;
+ }
+}
+</style>
\ No newline at end of file
diff --git a/static/img/bj/1738973218634.png b/static/img/bj/1738973218634.png
new file mode 100644
index 0000000..16d08ed
--- /dev/null
+++ b/static/img/bj/1738973218634.png
Binary files differ
--
Gitblit v1.9.3