From 816ab1967ee766e3e3f3631c08371f2e7704408e Mon Sep 17 00:00:00 2001
From: xwt <2740516069@qq.com>
Date: 星期三, 24 九月 2025 16:48:39 +0800
Subject: [PATCH] IQC穴数,RKJ,SJ,XJ
---
pages/QC/XJ/Add.vue | 158 +++++++--
pages/QC/RKJ/Add.vue | 14
manifest.json | 2
pages/QC/LLJ/Add.vue | 1
pages/QC/LLJ/detail.vue | 193 +++++++++++-
pages/QC/SJ/Add.vue | 517 ++++++++++++++++++++--------------
store/index.js | 4
7 files changed, 605 insertions(+), 284 deletions(-)
diff --git a/manifest.json b/manifest.json
index 889d4ef..2474b4b 100644
--- a/manifest.json
+++ b/manifest.json
@@ -2,7 +2,7 @@
"name" : "GS-MES-AP",
"appid" : "__UNI__F08FAE3",
"description" : "",
- "versionName" : "1.1.3.6",
+ "versionName" : "1.1.3.8",
"versionCode" : 1,
"transformPx" : false,
/* 5+App鐗规湁鐩稿叧 */
diff --git a/pages/QC/LLJ/Add.vue b/pages/QC/LLJ/Add.vue
index 030990e..1bed836 100644
--- a/pages/QC/LLJ/Add.vue
+++ b/pages/QC/LLJ/Add.vue
@@ -136,7 +136,6 @@
<button class="action-btn small" @click="addDestruction" v-if="this.current">鐮村潖瀹為獙</button>
<button class="action-btn small" @click="uploadImages">涓婁紶/鏌ョ湅鍥剧墖</button>
<button class="action-btn small" @click="fetchDrawingNumber">璋冨彇PLM鍥剧焊</button>
- <button class="action-btn small" @click="getBom">Bom鐢ㄦ枡娓呭崟</button>
<button class="action-btn small" @click="viewAttachmentInfo">鏌ョ湅闄勪欢淇℃伅</button>
<button class="action-btn small" @click="addDefectDescription" v-if="this.current">娣诲姞涓嶈壇鎻忚堪</button>
<button class="action-btn small primary" @click="submitInspection" v-if="this.current">妫�楠屾彁浜�</button>
diff --git a/pages/QC/LLJ/detail.vue b/pages/QC/LLJ/detail.vue
index 0b40165..0880f4c 100644
--- a/pages/QC/LLJ/detail.vue
+++ b/pages/QC/LLJ/detail.vue
@@ -25,6 +25,10 @@
<view class="info-label">椤圭洰鍚嶇О</view>
<view class="info-value">{{ formData.fcheckItem }}</view>
</view>
+ <view v-if="parseHoleCount(formData.fcheckItem)" class="info-item">
+ <view class="info-label">绌存暟</view>
+ <view class="info-value hole-count">{{ parseHoleCount(formData.fcheckItem) }}绌�</view>
+ </view>
<view class="info-item">
<view class="info-label">妫�楠屽伐鍏�</view>
<view class="info-value">{{ formData.fcheckTool }}</view>
@@ -204,29 +208,62 @@
<!-- 缁撴灉琛ㄦ牸 -->
<view v-if="tableData.length>0" class="table-container">
- <view class="table-header">
+ <!-- 鏈夌┐鏁版椂鐨勮〃鏍煎ご閮� -->
+ <view v-if="parseHoleCount(formData.fcheckItem)" class="table-header">
+ <view class="th">缂栧彿</view>
+ <view class="th">绌村彿</view>
+ <view class="th">璁板綍鍊�</view>
+ <view class="th">妫�楠岀粨鏋�<i style="color: rgb(0 212 68);"
+ v-if="!(tableData.length < formData.checkQyt)">锛堣緭鍏ュ凡瀹屾垚锛�</i></view>
+ <view class="th" v-if="current">鎿嶄綔</view>
+ </view>
+
+ <!-- 鏃犵┐鏁版椂鐨勮〃鏍煎ご閮� -->
+ <view v-else class="table-header">
<view class="th">缂栧彿</view>
<view class="th">妫�楠岀粨鏋�<i style="color: rgb(0 212 68);"
v-if="!(tableData.length < formData.checkQyt)">锛堣緭鍏ュ凡瀹屾垚锛�</i></view>
<view class="th" v-if="current">鎿嶄綔</view>
</view>
- <view v-for="(item, index) in tableData" :key="index" class="table-row">
- <view class="td">{{ index + 1 }}</view>
- <view class="td">
- <view :class="['result-badge', item.fcheckResu]">
- {{ item.fcheckResu }}
+ <!-- 鏈夌┐鏁版椂鐨勮〃鏍艰 -->
+ <template v-if="parseHoleCount(formData.fcheckItem)">
+ <view v-for="(item, index) in completeHoleList" :key="index" class="table-row">
+ <view class="td">{{ index + 1 }}</view>
+ <view class="td">{{ item.holeNumber }}绌�</view>
+ <view class="td">{{ item.recordValue }}</view>
+ <view class="td">
+ <view :class="['result-badge', getResultBadgeClass(item.resultStatus)]">
+ {{ item.resultStatus }}
+ </view>
+ </view>
+ <view class="td" v-if="current">
+ <button v-if="!item.isDefault && isNumber" class="btn danger-btn" @tap="toDetail(item)">
+ 淇敼
+ </button>
</view>
</view>
- <view class="td" v-if="current">
- <button v-if="!isNumber" class="btn danger-btn" @tap="toggleResult(item)">
- {{ editResult(item.fcheckResu) }}
- </button>
- <button v-if="isNumber" class="btn danger-btn" @tap="toDetail(item)">
- 淇敼
- </button>
+ </template>
+
+ <!-- 鏃犵┐鏁版椂鐨勮〃鏍艰 -->
+ <template v-else>
+ <view v-for="(item, index) in tableData" :key="index" class="table-row">
+ <view class="td">{{ index + 1 }}</view>
+ <view class="td">
+ <view :class="['result-badge', item.fcheckResu]">
+ {{ item.fcheckResu }}
+ </view>
+ </view>
+ <view class="td" v-if="current">
+ <button v-if="!isNumber" class="btn danger-btn" @tap="toggleResult(item)">
+ {{ editResult(item.fcheckResu) }}
+ </button>
+ <button v-if="isNumber" class="btn danger-btn" @tap="toDetail(item)">
+ 淇敼
+ </button>
+ </view>
</view>
- </view>
+ </template>
</view>
<view v-if="remarksPopup" class="overlay">
<view class="popup">
@@ -305,7 +342,100 @@
isFocus: false, // 鏂板锛屾帶鍒惰緭鍏ユ鑱氱劍
}
},
+ computed: {
+ // 鐢熸垚瀹屾暣鐨勭┐浣嶅垪琛紙鏍规嵁妫�楠屾暟閲忕敓鎴愶紝绌村彿寰幆鏄剧ず锛�
+ completeHoleList() {
+ const holeCount = this.parseHoleCount(this.formData.fcheckItem);
+ if (!holeCount) return this.tableData;
+
+ const checkQyt = this.formData.checkQyt || 0; // 妫�楠屾暟閲�
+ const completeList = [];
+
+ // 鏍规嵁妫�楠屾暟閲忕敓鎴愯褰曪紝绌村彿寰幆鏄剧ず
+ for (let i = 1; i <= checkQyt; i++) {
+ // 璁$畻褰撳墠璁板綍鐨勭┐鍙凤紙寰幆鏄剧ず锛�
+ const holeNumber = ((i - 1) % holeCount) + 1;
+
+ // 鏌ユ壘鏄惁宸叉湁璇ヤ綅缃殑璁板綍
+ const existingRecord = this.tableData.find((item, index) => {
+ return index === i - 1; // 鎸夐『搴忓尮閰�
+ });
+
+ if (existingRecord) {
+ // 濡傛灉宸叉湁璁板綍锛屼娇鐢ㄧ幇鏈夋暟鎹�
+ completeList.push({
+ ...existingRecord,
+ holeNumber: holeNumber,
+ recordValue: existingRecord.fcheckResu || 'N/A',
+ resultStatus: this.getResultStatus(existingRecord.fcheckResu) || '鏈~鍐�'
+ });
+ } else {
+ // 濡傛灉娌℃湁璁板綍锛屽垱寤洪粯璁よ褰�
+ completeList.push({
+ id: null,
+ holeNumber: holeNumber,
+ recordValue: 'N/A',
+ resultStatus: '鏈~鍐�',
+ fcheckResu: null,
+ isDefault: true // 鏍囪涓洪粯璁よ褰�
+ });
+ }
+ }
+ return completeList;
+ }
+ },
methods: {
+ // 瑙f瀽妫�楠岄」鐩悕绉颁腑鐨勭┐鏁�
+ parseHoleCount(checkItemName) {
+ if (!checkItemName) return null;
+
+ // 鍖归厤鏍煎紡锛氬昂瀵告鏌ワ紙5绌达級鎴� 灏哄妫�鏌�(5绌�)
+ const match = checkItemName.match(/[锛�(](\d+)绌碵锛�)]/);
+ return match ? parseInt(match[1]) : null;
+ },
+
+ // 鏍规嵁璁板綍鍊煎垽鏂楠岀粨鏋滅姸鎬�
+ getResultStatus(recordValue) {
+ if (!recordValue) return '';
+
+ // 濡傛灉鏈変笂涓嬮檺锛屾牴鎹暟鍊煎垽鏂�
+ if (this.formData.fupAllow && this.formData.fdownAllow) {
+ const numValue = parseFloat(recordValue);
+ if (isNaN(numValue)) return recordValue;
+
+ if (numValue >= parseFloat(this.formData.fdownAllow) &&
+ numValue <= parseFloat(this.formData.fupAllow)) {
+ return 'OK';
+ } else {
+ return 'NG';
+ }
+ }
+
+ // 鏃犱笂涓嬮檺鏃讹紝鐩存帴杩斿洖璁板綍鍊�
+ return recordValue;
+ },
+
+ // 鑾峰彇妫�楠岀粨鏋滃窘绔犵殑鏍峰紡绫�
+ getResultBadgeClass(resultStatus) {
+ switch(resultStatus) {
+ case 'OK':
+ return 'OK';
+ case 'NG':
+ return 'NG';
+ case '鏈~鍐�':
+ return 'pending';
+ default:
+ return 'default';
+ }
+ },
+
+ // 娣诲姞鏂拌褰曪紙鐢ㄤ簬鏈~鍐欑殑绌翠綅锛�
+ addNewRecord(item) {
+ // 杩欓噷鍙互瑙﹀彂濉啓閫昏緫锛屾瘮濡傚脊鍑鸿緭鍏ユ鎴栬烦杞埌濉啓椤甸潰
+ // 鏆傛椂鍏堟樉绀烘彁绀�
+ this.$showMessage(`璇峰~鍐欑${item.holeNumber}绌寸殑妫�楠岀粨鏋渀);
+ },
+
// 闃叉姈鑷姩淇濆瓨鏂规硶
autoSaveResult() {
// 娓呴櫎涔嬪墠鐨勫畾鏃跺櫒
@@ -504,7 +634,6 @@
this.remarksPopup = true;
},
saveResult() {
-
let count = this.formData.checkQyt;
let fstand = "鈭�";
@@ -522,8 +651,8 @@
}
if (!/^-?\d+(\.\d+)?$/.test(this.formData.fcheckResu)) {
- this.$showMessage("璇疯緭鍏ユ纭殑鏁板�硷紒");
- return;
+ this.$showMessage("璇疯緭鍏ユ纭殑鏁板�硷紒");
+ return;
}
if (parseFloat(this.formData.fcheckResu) >= parseFloat(this.formData.fdownAllow) && parseFloat(this
.formData
@@ -573,6 +702,7 @@
})
},
+
goBack() {
uni.navigateBack()
},
@@ -603,11 +733,8 @@
})
},
editResult(fcheckResu) {
- if (fcheckResu == 'OK') {
- return "鏀逛负涓嶅悎鏍�";
- } else {
- return "鏀逛负鍚堟牸";
- }
+ // 缁熶竴鏄剧ず"鏀逛负涓嶅悎鏍�"
+ return "鏀逛负涓嶅悎鏍�";
},
toDetail(item) {
this.showPopup = !this.showPopup;
@@ -952,6 +1079,7 @@
flex: 1;
padding: 12px;
font-weight: bold;
+ text-align: center;
}
}
@@ -968,6 +1096,8 @@
flex: 1;
display: flex;
align-items: center;
+ justify-content: center;
+ text-align: center;
}
}
}
@@ -987,6 +1117,16 @@
&.NG {
background-color: rgba($danger-color, 0.1);
color: $danger-color;
+ }
+
+ &.pending {
+ background-color: rgba(#f39c12, 0.1);
+ color: #f39c12;
+ }
+
+ &.default {
+ background-color: rgba(#909399, 0.1);
+ color: #909399;
}
}
@@ -1081,4 +1221,13 @@
opacity: 0.6;
cursor: not-allowed;
}
+
+ .hole-count {
+ color: #409EFF;
+ font-weight: bold;
+ background-color: rgba(64, 158, 255, 0.1);
+ padding: 2px 8px;
+ border-radius: 4px;
+ display: inline-block;
+ }
</style>
\ No newline at end of file
diff --git a/pages/QC/RKJ/Add.vue b/pages/QC/RKJ/Add.vue
index 1c04a15..dd65c69 100644
--- a/pages/QC/RKJ/Add.vue
+++ b/pages/QC/RKJ/Add.vue
@@ -2745,13 +2745,19 @@
}
.bottom-action-buttons {
- flex-direction: column;
- gap: 5px;
+ flex-direction: row;
+ align-items: center;
+ justify-content: center;
+ padding: 8px;
+ gap: 6px;
}
.action-btn.small {
- min-width: 100%;
- max-width: none;
+ min-width: 70px;
+ max-width: 100px;
+ padding: 8px 10px;
+ font-size: 13px;
+ min-height: 40px;
}
}
diff --git a/pages/QC/SJ/Add.vue b/pages/QC/SJ/Add.vue
index 4659047..558fd68 100644
--- a/pages/QC/SJ/Add.vue
+++ b/pages/QC/SJ/Add.vue
@@ -74,8 +74,8 @@
</view>
<!-- 妫�楠岄」鐩〃鏍� -->
- <view class="inspection-table" v-if="tableData.length > 0">
- <table>
+ <view class="inspection-table">
+ <table v-if="tableData.length > 0">
<thead>
<tr>
<th width="20%" style="text-align: center;">妫�楠岄」鐩�</th>
@@ -106,6 +106,12 @@
</tr>
</tbody>
</table>
+ <!-- 绌虹姸鎬佹樉绀� -->
+ <view v-else class="empty-state">
+ <view class="empty-icon">馃搵</view>
+ <view class="empty-text">鏆傛棤妫�楠岄」鐩�</view>
+ <view class="empty-desc">璇ユ楠屽崟杩樻病鏈夋楠岄」鐩�</view>
+ </view>
</view>
<!-- 琛ㄥ崟涓婃柟鎿嶄綔鎸夐挳鍖� -->
<view class="top-action-buttons">
@@ -386,7 +392,10 @@
});
if (this.tableData.length <= 0) {
- this.isShowTable = true;
+ this.isShowTable = true; // 娌℃湁妫�楠岄」鐩椂鏄剧ず鐢熸垚鎸夐挳
+ } else {
+ this.isShowTable = false; // 鏈夋楠岄」鐩椂鐩存帴杩涘叆濉啓闃舵
+ this.isUpdate = false; // 璁剧疆涓洪潪鏇存柊鐘舵�侊紝鍙互鐩存帴濉啓
}
})
}
@@ -476,10 +485,14 @@
if (res.data.tbBillList.length > 0) {
this.tableData = res.data.tbBillList; // 鍦ㄧ澶村嚱鏁颁腑锛宼his 鎸囧悜澶栧眰浣滅敤鍩熺殑 this
this.isSubmit = false;
+ // 娉ㄦ剰锛氳繖閲屼笉鑷姩淇濆瓨锛屽洜涓鸿繕娌℃湁鍒涘缓妫�楠屽崟锛岄渶瑕佸厛璋冪敤save()鍒涘缓妫�楠屽崟
+ this.isShowTable = false; // 鐩存帴杩涘叆濉啓闃舵
+ this.isUpdate = false; // 璁剧疆涓洪潪鏇存柊鐘舵�侊紝鍙互鐩存帴濉啓
} else {
this.$showMessage("姝ょ墿鏂欐病鏈夊惎鐢ㄧ殑妫�楠岄」鐩紝璇风淮鎶�!");
this.isSubmit = true;
this.tableData = [];
+ this.isShowTable = true; // 娌℃湁妫�楠岄」鐩椂鏄剧ず鐢熸垚鎸夐挳
}
});
@@ -509,8 +522,8 @@
}).then(res => {
if (res.data.tbBillList.length > 0) {
this.tableData = res.data.tbBillList; // 鍦ㄧ澶村嚱鏁颁腑锛宼his 鎸囧悜澶栧眰浣滅敤鍩熺殑 this
- this.isShowTable = true;
- this.isUpdate = true;
+ // 鑷姩淇濆瓨妫�楠岄」鐩埌鏁版嵁搴�
+ this.saveTable();
} else {
this.$showMessage("姝ょ墿鏂欐病鏈夊惎鐢ㄧ殑妫�楠岄」鐩紝璇风淮鎶�!");
this.isShowTable = true;
@@ -969,6 +982,9 @@
if (genRes.data.result === 0) {
this.$showMessage("鑾峰彇妫�楠岄」鐩垚鍔�");
this.init();
+ // 鑾峰彇鎴愬姛鍚庣洿鎺ヨ繘鍏ュ~鍐欓樁娈�
+ this.isShowTable = false;
+ this.isUpdate = false;
} else {
this.$showMessage(genRes.data.message || "鑾峰彇澶辫触");
}
@@ -988,6 +1004,9 @@
if (genRes.data.result === 0) {
this.$showMessage("鑾峰彇妫�楠岄」鐩垚鍔�");
this.init();
+ // 鑾峰彇鎴愬姛鍚庣洿鎺ヨ繘鍏ュ~鍐欓樁娈�
+ this.isShowTable = false;
+ this.isUpdate = false;
} else {
this.$showMessage(genRes.data.message || "鑾峰彇澶辫触");
}
@@ -1006,343 +1025,415 @@
<style scoped>
/* 鍩虹鏍峰紡 */
.inspection-sheet {
- font-family: 'Microsoft YaHei', 'Segoe UI', sans-serif;
- max-width: 1000px;
- margin: 0 auto;
- padding: 20px 20px 100px 20px; /* 搴曢儴澧炲姞鍐呰竟璺濅负鍥哄畾鎸夐挳鐣欑┖闂� */
- background-color: #fff;
- box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
- min-height: 100vh;
- position: relative;
- transition: all 0.3s ease;
+ padding: 10px;
+ background-color: #f5f7fa;
+ min-height: 100vh;
+ padding-bottom: 120px; /* 涓哄簳閮ㄥ浐瀹氭寜閽暀鍑虹┖闂� */
}
/* 澶撮儴鏍峰紡 */
.sheet-header {
- text-align: center;
- margin-bottom: 20px;
- padding-bottom: 15px;
- border-bottom: 2px solid #e0e0e0;
+ background-color: white;
+ padding: 20px;
+ border-radius: 8px;
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
+ margin-bottom: 20px;
}
.sheet-header h1 {
- color: #2c3e50;
- font-size: 24px;
- margin-bottom: 5px;
+ font-size: 24px;
+ font-weight: 600;
+ color: #2c3e50;
+ margin-bottom: 10px;
}
.inspection-number {
- font-size: 16px;
- font-weight: bold;
- color: #3498db;
+ font-size: 16px;
+ color: #3498db;
+ font-weight: 500;
}
-/* 鍩烘湰淇℃伅鍖烘牱寮� */
-.basic-info,
-.material-info {
- margin-bottom: 20px;
+/* 鍩烘湰淇℃伅鍖� */
+.basic-info {
+ background-color: white;
+ padding: 20px;
+ border-radius: 8px;
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
+ margin-bottom: 20px;
}
.info-row {
- display: flex;
- margin-bottom: 10px;
- flex-wrap: wrap;
+ display: flex;
+ align-items: center;
+ margin-bottom: 15px;
}
.info-label {
- font-weight: bold;
- color: #34495e;
- min-width: 80px;
- margin-right: 5px;
+ font-size: 14px;
+ color: #7f8c8d;
+ margin-right: 10px;
+ min-width: 80px;
}
.info-value {
- color: #2c3e50;
- margin-right: 20px;
+ font-size: 14px;
+ color: #2c3e50;
+ margin-right: 20px;
}
.info-picker {
- padding: 8px 12px;
- border: 1px solid #ddd;
- border-radius: 4px;
- background-color: white;
- font-size: 14px;
- margin-right: 20px;
+ padding: 8px 12px;
+ border: 1px solid #ddd;
+ border-radius: 4px;
+ background-color: white;
+ font-size: 14px;
+ margin-right: 20px;
}
-/* 鐗╂枡淇℃伅鍖烘牱寮� */
+/* 鐗╂枡淇℃伅鍖� */
.material-info {
- border: 1px solid #eee;
- padding: 15px;
- border-radius: 5px;
+ background-color: white;
+ padding: 20px;
+ border-radius: 8px;
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
+ margin-bottom: 20px;
}
.info-block {
- display: flex;
- align-items: center;
- margin-bottom: 10px;
- flex-wrap: wrap;
+ display: flex;
+ align-items: center;
+ margin-bottom: 15px;
}
.info-block .info-label {
- min-width: 100px;
- font-size: 14px;
- color: #7f8c8d;
+ min-width: 100px;
+ font-size: 14px;
+ color: #7f8c8d;
}
.info-block .info-value {
- font-size: 14px;
- color: #2c3e50;
- flex: 1;
+ font-size: 14px;
+ color: #2c3e50;
+ flex: 1;
}
.info-picker-input {
- flex: 1;
- padding: 8px 12px;
- border: 1px solid #ddd;
- border-radius: 4px;
- background-color: white;
- font-size: 14px;
+ flex: 1;
+ padding: 8px 12px;
+ border: 1px solid #ddd;
+ border-radius: 4px;
+ background-color: white;
+ font-size: 14px;
}
.info-input {
- flex: 1;
- padding: 8px 12px;
- border: 1px solid #ddd;
- border-radius: 4px;
- background-color: white;
- font-size: 14px;
+ flex: 1;
+ padding: 8px 12px;
+ border: 1px solid #ddd;
+ border-radius: 4px;
+ background-color: white;
+ font-size: 14px;
}
.highlight {
- font-weight: bold;
- color: #e74c3c;
+ font-weight: 600;
+ color: #e74c3c;
+ font-size: 16px;
}
-/* 琛ㄦ牸鏍峰紡 */
+/* 妫�楠岄」鐩〃鏍� */
.inspection-table {
- margin: 25px 0;
+ margin: 25px 0;
+ border-radius: 8px;
+ overflow: hidden;
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
+ background: #fff;
}
.inspection-table table {
- width: 100%;
- border-collapse: collapse;
+ width: 100%;
+ border-collapse: collapse;
}
-.inspection-table th,
-.inspection-table td {
- padding: 12px 15px;
- border: 1px solid #ddd;
- text-align: left;
+.inspection-table th, .inspection-table td {
+ padding: 16px 20px;
+ border: none;
+ text-align: left;
+ border-bottom: 1px solid #eee;
}
.inspection-table th {
- background-color: #f8f9fa;
- font-weight: bold;
- color: #34495e;
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ font-weight: 600;
+ color: #fff;
+ font-size: 14px;
+ letter-spacing: 0.5px;
+ position: relative;
}
-.inspection-table tr:nth-child(even) {
- background-color: #f9f9f9;
+.inspection-table tbody tr {
+ transition: all 0.3s ease;
+ border-left: 4px solid transparent;
}
-.inspection-table tr:hover {
- background-color: #f1f5f9;
+.inspection-table tbody tr:nth-child(even) {
+ background-color: #f8fafc;
+}
+
+.inspection-table tbody tr:hover {
+ background-color: #e8f4fd;
+ border-left-color: #3498db;
+ transform: translateY(-1px);
+ box-shadow: 0 4px 12px rgba(52, 152, 219, 0.15);
+}
+
+/* 妫�楠屾弿杩板垪鐗规畩鏍峰紡 */
+.inspection-table td:nth-child(2) {
+ position: relative;
+ min-height: 80px;
+ vertical-align: top;
+ padding: 16px 20px;
}
/* 姘村嵃鏍峰紡 */
.watermark {
- position: absolute;
- font-size: 40px;
- font-weight: bold;
- opacity: 1;
- z-index: 1;
- pointer-events: none;
- transform: rotate(-15deg);
- width: 100%;
- text-align: center;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%) rotate(-15deg);
+ position: absolute;
+ font-size: 32px;
+ font-weight: bold;
+ opacity: 0.4;
+ z-index: 3;
+ pointer-events: none;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%) rotate(-15deg);
+ text-shadow: 1px 1px 2px rgba(255, 255, 255, 0.8);
+ min-width: 60px;
+ text-align: center;
}
.watermark.approved {
- color: #2ecc71;
- /* 缁胯壊 */
+ color: #27ae60; /* 鏇存贰鐨勭豢鑹� */
}
.watermark.rejected {
- color: #e74c3c;
- /* 绾㈣壊 */
+ color: #e67e22; /* 鏇存贰鐨勭孩鑹� */
}
.watermark.pending {
- color: #f39c12;
- /* 姗欒壊 */
+ color: #f39c12; /* 姗欒壊 */
}
-/* 鎻忚堪鏂囨湰瀹瑰櫒 */
+/* 鎻忚堪鏂囨湰鏍峰紡 */
.description-text {
- position: relative;
- z-index: 2;
- padding: 25px;
- background-color: rgba(255, 255, 255, 0.7);
+ position: relative;
+ z-index: 2;
+ padding: 12px 16px;
+ background: transparent;
+ line-height: 1.6;
+ font-size: 14px;
+ color: #555;
+ margin: 0;
+ word-wrap: break-word;
+ word-break: break-word;
+ max-width: 100%;
+ /* 纭繚鏂囧瓧涓嶄細澶暱閬尅姘村嵃 */
+ padding-right: 80px;
+ min-height: 20px;
+ display: block;
}
-/* 璋冩暣琛ㄦ牸鍗曞厓鏍� */
-.inspection-table td:nth-child(2) {
- position: relative;
- overflow: hidden;
- padding: 0;
+.record-btn {
+ padding: 8px 16px;
+ background: linear-gradient(135deg, #3498db, #2980b9);
+ color: #fff;
+ border: none;
+ border-radius: 6px;
+ cursor: pointer;
+ transition: all 0.3s ease;
+ font-weight: 500;
+ font-size: 13px;
+ box-shadow: 0 2px 4px rgba(52, 152, 219, 0.3);
+}
+
+.record-btn:hover {
+ background: linear-gradient(135deg, #2980b9, #1f618d);
+ transform: translateY(-1px);
+ box-shadow: 0 4px 8px rgba(52, 152, 219, 0.4);
+}
+
+.record-btn:active {
+ transform: translateY(0);
}
/* 琛ㄥ崟涓婃柟鎿嶄綔鎸夐挳鍖烘牱寮� */
.top-action-buttons {
- display: flex;
- justify-content: flex-end;
- gap: 10px;
- margin: 20px 0;
- padding: 15px;
- background-color: #f8f9fa;
- border-radius: 8px;
- border: 1px solid #e9ecef;
+ display: flex;
+ justify-content: flex-end;
+ gap: 10px;
+ margin: 20px 0;
+ padding: 15px;
+ background-color: #f8f9fa;
+ border-radius: 8px;
+ border: 1px solid #e9ecef;
}
/* 琛ㄥ崟涓嬫柟鎿嶄綔鎸夐挳鍖烘牱寮� */
.bottom-action-buttons {
- display: flex;
- justify-content: center;
- gap: 8px;
- padding: 12px;
- flex-wrap: wrap;
- align-items: center;
- position: fixed; /* 鍥哄畾鍦ㄥ睆骞曞簳閮� */
- bottom: 0; /* 璺濈搴曢儴0px */
- left: 0; /* 璺濈宸﹁竟0px */
- right: 0; /* 璺濈鍙宠竟0px */
- background-color: #fff; /* 鑳屾櫙鑹� */
- border-top: 1px solid #e9ecef; /* 椤堕儴杈规 */
- z-index: 1000; /* 纭繚鍦ㄦ渶涓婂眰 */
- box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1); /* 椤堕儴闃村奖 */
+ display: flex;
+ justify-content: center;
+ gap: 8px;
+ padding: 12px;
+ flex-wrap: wrap;
+ align-items: center;
+ position: fixed; /* 鍥哄畾鍦ㄥ睆骞曞簳閮� */
+ bottom: 0; /* 璺濈搴曢儴0px */
+ left: 0; /* 璺濈宸﹁竟0px */
+ right: 0; /* 璺濈鍙宠竟0px */
+ background-color: #fff; /* 鑳屾櫙鑹� */
+ border-top: 1px solid #e9ecef; /* 椤堕儴杈规 */
+ z-index: 1000; /* 纭繚鍦ㄦ渶涓婂眰 */
+ box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1); /* 椤堕儴闃村奖 */
}
.action-btn {
- background-color: #ecf0f1;
- color: #34495e;
- padding: 12px 15px;
- border: none;
- border-radius: 6px;
- cursor: pointer;
- font-size: 14px;
- font-weight: 500;
- transition: all 0.3s ease;
- text-align: center;
- min-height: 44px;
- display: flex;
- align-items: center;
- justify-content: center;
+ background-color: #ecf0f1;
+ color: #34495e;
+ padding: 12px 15px;
+ border: none;
+ border-radius: 6px;
+ cursor: pointer;
+ font-size: 14px;
+ font-weight: 500;
+ transition: all 0.3s ease;
+ text-align: center;
+ min-height: 44px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
}
.action-btn:hover {
- background-color: #d5dbdb;
- transform: translateY(-1px);
+ background-color: #d5dbdb;
+ transform: translateY(-1px);
}
.action-btn.primary {
- background-color: #3498db;
- color: #fff;
+ background-color: #3498db;
+ color: #fff;
}
.action-btn.primary:hover {
- background-color: #2980b9;
+ background-color: #2980b9;
}
/* 灏忓昂瀵告寜閽牱寮� */
.action-btn.small {
- padding: 10px 12px;
- font-size: 14px;
- min-height: 44px;
- white-space: nowrap;
- flex-shrink: 0;
- min-width: 80px;
- max-width: 120px;
- flex: 1;
+ padding: 10px 12px;
+ font-size: 14px;
+ min-height: 44px;
+ white-space: nowrap;
+ flex-shrink: 0;
+ min-width: 80px;
+ max-width: 120px;
+ flex: 1;
}
/* 鍘熸湁鎸夐挳鏍峰紡淇濇寔鍏煎 */
.action-buttons {
- display: flex;
- gap: 10px;
- margin: 15px 0;
- justify-content: flex-end;
-}
-
-.record-btn {
- padding: 6px 12px;
- background-color: #f8f9fa;
- border: 1px solid #ddd;
- /* border-radius: 3px; */
- cursor: pointer;
- transition: all 0.2s;
-}
-
-.record-btn:hover {
- background-color: #e9ecef;
+ display: flex;
+ gap: 10px;
+ margin: 15px 0;
+ justify-content: flex-end;
}
.overlay {
- position: fixed;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- background-color: rgba(0, 0, 0, 0.5);
- display: flex;
- justify-content: center;
- align-items: center;
- z-index: 1000; /* 鎻愰珮灞傜骇锛岀‘淇濆湪鍥哄畾鎸夐挳涓婃柟 */
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background-color: rgba(0, 0, 0, 0.5);
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ z-index: 1000; /* 鎻愰珮灞傜骇锛岀‘淇濆湪鍥哄畾鎸夐挳涓婃柟 */
}
/* 寮圭獥鏁翠綋缇庡寲 */
.popup {
- background: #fff;
- border-radius: 16px;
- box-shadow: 0 8px 32px rgba(60,60,60,0.18);
- padding: 28px 28px 18px 28px;
- border: none;
- position: relative;
- min-width: 260px;
- z-index: 1001; /* 纭繚寮圭獥鍐呭鍦ㄦ渶涓婂眰 */
- max-height: 80vh; /* 闄愬埗鏈�澶ч珮搴︼紝閬垮厤琚簳閮ㄦ寜閽伄鎸� */
- overflow-y: auto; /* 鍐呭杩囧鏃跺彲婊氬姩 */
+ background: #fff;
+ border-radius: 16px;
+ box-shadow: 0 8px 32px rgba(60,60,60,0.18);
+ padding: 28px 28px 18px 28px;
+ border: none;
+ position: relative;
+ min-width: 260px;
+ z-index: 1001; /* 纭繚寮圭獥鍐呭鍦ㄦ渶涓婂眰 */
+ max-height: 80vh; /* 闄愬埗鏈�澶ч珮搴︼紝閬垮厤琚簳閮ㄦ寜閽伄鎸� */
+ overflow-y: auto; /* 鍐呭杩囧鏃跺彲婊氬姩 */
}
.popup-header {
- padding: 20px;
- border-bottom: 1px solid #eee;
+ padding: 20px;
+ border-bottom: 1px solid #eee;
}
.popup-header h3 {
- font-size: 18px;
- font-weight: 600;
- color: #2c3e50;
- margin: 0;
+ font-size: 18px;
+ font-weight: 600;
+ color: #2c3e50;
+ margin: 0;
}
.popup-content {
- padding: 20px;
+ padding: 20px;
}
.popup-actions {
- padding: 20px;
- border-top: 1px solid #eee;
- display: flex;
- gap: 10px;
- justify-content: flex-end;
+ padding: 20px;
+ border-top: 1px solid #eee;
+ display: flex;
+ gap: 10px;
+ justify-content: flex-end;
+}
+
+/* 绌虹姸鎬佹牱寮� */
+.empty-state {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ padding: 60px 20px;
+ text-align: center;
+ background-color: #fafafa;
+ border-radius: 8px;
+ margin: 20px 0;
+}
+
+.empty-icon {
+ font-size: 48px;
+ margin-bottom: 16px;
+ opacity: 0.6;
+}
+
+.empty-text {
+ font-size: 18px;
+ font-weight: 600;
+ color: #666;
+ margin-bottom: 8px;
+}
+
+.empty-desc {
+ font-size: 14px;
+ color: #999;
+ line-height: 1.5;
}
/* 鍝嶅簲寮忚璁� */
@media (max-width: 500px) {
+ .inspection-sheet {
+ padding-bottom: 100px; /* 灏忓睆骞曡澶囦笂鍑忓皯搴曢儴鍐呰竟璺� */
+ }
.info-row,
.info-block {
diff --git a/pages/QC/XJ/Add.vue b/pages/QC/XJ/Add.vue
index cc44bef..92453e0 100644
--- a/pages/QC/XJ/Add.vue
+++ b/pages/QC/XJ/Add.vue
@@ -1459,7 +1459,8 @@
<style scoped>
/* 鍩虹鏍峰紡 */
.container {
- padding: 10px;
+ padding: 20px;
+ padding-bottom: 120px; /* 涓哄浐瀹氭寜閽暀鍑烘洿澶氱┖闂达紝閬垮厤閬洊妫�楠岄」鐩� */
background-color: #f5f7fa;
min-height: 100vh;
}
@@ -1565,41 +1566,43 @@
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
margin: 25px 0;
}
-
+
.inspection-table table {
width: 100%;
border-collapse: collapse;
}
-
+
.inspection-table th {
- background-color: #f8f9fa;
- color: #34495e;
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ color: white;
padding: 12px 15px;
font-weight: bold;
- text-align: left;
- border: 1px solid #ddd;
+ text-align: center;
+ border: none;
}
-
+
.inspection-table td {
padding: 12px 15px;
text-align: left;
- border: 1px solid #ddd;
+ border: none;
}
-
+
.inspection-table tr:nth-child(even) {
background-color: #f9f9f9;
}
-
+
.inspection-table tr:hover {
background-color: #f1f5f9;
+ transform: translateY(-1px);
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
/* 姘村嵃鏍峰紡 */
.watermark {
position: absolute;
- font-size: 40px;
+ font-size: 32px;
font-weight: bold;
- opacity: 1;
+ opacity: 0.3;
z-index: 1;
pointer-events: none;
transform: rotate(-15deg);
@@ -1609,15 +1612,15 @@
left: 50%;
transform: translate(-50%, -50%) rotate(-15deg);
}
-
+
.watermark.approved {
color: #2ecc71;
}
-
+
.watermark.rejected {
color: #e74c3c;
}
-
+
.watermark.pending {
color: #f39c12;
}
@@ -1655,55 +1658,106 @@
/* 鎿嶄綔鎸夐挳 */
.action-buttons {
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ background-color: white;
+ border-top: 1px solid #e9ecef;
+ padding: 12px;
+ box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1);
+ z-index: 1000;
display: flex;
- flex-direction: column;
- gap: 10px;
- margin-bottom: 20px;
+ flex-wrap: wrap;
+ gap: 8px;
+ justify-content: center;
+ align-items: center;
}
.action-btn {
- padding: 12px 20px;
+ background-color: #ecf0f1;
+ color: #34495e;
+ padding: 12px 15px;
border: none;
border-radius: 6px;
- font-size: 14px;
- font-weight: 500;
cursor: pointer;
- transition: all 0.2s;
+ font-size: 12px;
+ font-weight: 500;
+ transition: all 0.3s ease;
+ text-align: center;
+ min-height: 44px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
}
-
+
+ .action-btn:hover {
+ background-color: #d5dbdb;
+ transform: translateY(-1px);
+ }
+
.action-btn.primary {
background-color: #3498db;
- color: white;
+ color: #fff;
}
-
+
+ .action-btn.primary:hover {
+ background-color: #2980b9;
+ }
+
.action-btn.secondary {
- background-color: #95a5a6;
- color: white;
+ background-color: #ecf0f1;
+ color: #34495e;
}
-
+
+ .action-btn.secondary:hover {
+ background-color: #d5dbdb;
+ }
+
.action-btn.danger {
background-color: #e74c3c;
- color: white;
+ color: #fff;
}
-
+
+ .action-btn.danger:hover {
+ background-color: #c0392b;
+ }
+
.action-btn.warning {
background-color: #f39c12;
- color: white;
+ color: #fff;
}
-
+
+ .action-btn.warning:hover {
+ background-color: #e67e22;
+ }
+
.action-btn.success {
background-color: #2ecc71;
- color: white;
+ color: #fff;
}
-
+
+ .action-btn.success:hover {
+ background-color: #27ae60;
+ }
+
.action-btn.info {
background-color: #17a2b8;
- color: white;
+ color: #fff;
+ }
+
+ .action-btn.info:hover {
+ background-color: #138496;
}
.action-btn.small {
- padding: 6px 12px;
+ padding: 10px 12px;
font-size: 12px;
+ min-height: 44px;
+ white-space: nowrap;
+ flex-shrink: 0;
+ min-width: 80px;
+ max-width: 120px;
}
/* 寮瑰嚭妗嗘牱寮� */
@@ -2324,12 +2378,36 @@
/* 鍝嶅簲寮忚璁� */
@media (max-width: 768px) {
+ .container {
+ padding-bottom: 120px; /* 涓哄浐瀹氭寜閽暀鍑虹┖闂达紝閬垮厤閬洊妫�楠岄」鐩� */
+ }
+
.info-grid {
grid-template-columns: 1fr;
}
.action-buttons {
- flex-direction: column;
+ flex-direction: row;
+ align-items: center;
+ justify-content: center;
+ padding: 8px;
+ gap: 6px;
+ }
+
+ .action-btn {
+ min-width: 70px;
+ max-width: 100px;
+ padding: 8px 10px;
+ font-size: 11px;
+ min-height: 40px;
+ }
+
+ .action-btn.small {
+ min-width: 70px;
+ max-width: 100px;
+ padding: 8px 10px;
+ font-size: 11px;
+ min-height: 40px;
}
/* 闄勪欢寮圭獥鍝嶅簲寮� */
@@ -2386,9 +2464,7 @@
.attachment-icon {
font-size: 20px;
}
- }
-
- @media (max-width: 480px) {
+
.attachment-popup-content {
padding: 16px;
}
diff --git a/store/index.js b/store/index.js
index 4b4ac80..28e71bd 100644
--- a/store/index.js
+++ b/store/index.js
@@ -10,9 +10,9 @@
networkFlag:'鍐呯綉',
serverURLInt:'http://192.168.11.251:10055',//鏈嶅姟鍣ㄤ綋妫� 10.0.1.104:10054
serverURL:'http://localhost:10055',//鏈湴璋冭瘯鍦板潃
- serverAPI:'http://localhost:5184/api',//褰撳墠姝e湪浣跨敤鐨勬湇鍔″櫒,榛樿涓哄缃� localhost
+ //serverAPI:'http://localhost:5184/api',//褰撳墠姝e湪浣跨敤鐨勬湇鍔″櫒,榛樿涓哄缃� localhost
//serverAPI:'http://192.168.1.22:10054/api',//鍐呯綉
- //serverAPI:'http://36.26.21.214:10054/api',
+ serverAPI:'http://36.26.21.214:10054/api',
ftpServer:'ftp://36.26.21.214',//FTP鏈嶅姟鍣ㄥ湴鍧�
}
},
--
Gitblit v1.9.3