| | |
| | | <!-- 头é¨ä¿¡æ¯ --> |
| | | <view class="sheet-header"> |
| | | <h1>å·¡æ£å</h1> |
| | | <view class="inspection-number">æ£éªåå·ï¼{{ formData.releaseNo }}</view> |
| | | <view class="inspection-number">æ£éªåå·ï¼{{ formData.billNo }}</view> |
| | | </view> |
| | | |
| | | <!-- åºæ¬ä¿¡æ¯åº --> |
| | | <view class="basic-info"> |
| | | <view class="info-row"> |
| | | <span class="info-label">å建人ï¼</span> |
| | | <span class="info-value">{{ formData.createBy }}</span> |
| | | <span class="info-label">å建æ¶é´ï¼</span> |
| | | <span class="info-value">{{ formData.createDate }}</span> |
| | | <span class="info-value">{{ formData.createTime }}</span> |
| | | <span class="info-label">æ£éªäººï¼</span> |
| | | <span class="info-value">{{ formData.statusUser }}</span> |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- ç©æä¿¡æ¯åº --> |
| | | <view class="material-info"> |
| | | <view class="info-block"> |
| | | <view class="info-label">线ä½ç¼å·ï¼</view> |
| | | <view class="info-label">ç产线å«ï¼</view> |
| | | <view v-if="!isUpdate" class="info-value">{{ formData.daa020 }}</view> |
| | | <picker v-if="isUpdate" :range="DAA020List" class="picker info-value-input" name="selector" |
| | | @change="onDaa020Change"> |
| | | <view>{{ DAA020List[DAA020Index] }}</view> |
| | | </picker> |
| | | <superwei-combox v-else v-model="formData.daa020" :candidates="DAA020List" |
| | | class="picker info-value-input" placeholder="è¯·éæ©æè¾å
¥" |
| | | @select="onDaa020Change"></superwei-combox> |
| | | </view> |
| | | <view class="info-block"> |
| | | <view class="info-label">ç©æç¼ç ï¼</view> |
| | | <view v-if="!isUpdate" class="info-value">{{ formData.itemNo }}</view> |
| | | <picker v-if="isUpdate" :range="ItemList" class="picker info-value-input" name="selector" |
| | | @change="onItemChange"> |
| | | <view>{{ ItemList[ItemIndex] }}</view> |
| | | </picker> |
| | | <superwei-combox v-else v-model="formData.itemNo" :candidates="boardItems" :isJSON="true" |
| | | class="picker info-value-input" keyName="itemName" placeholder="è¯·éæ©æè¾å
¥" |
| | | @select="onItemChange"></superwei-combox> |
| | | </view> |
| | | <view class="info-block"> |
| | | <view class="info-label">计åç¼å·ï¼</view> |
| | | <view v-if="!isUpdate" class="info-value">{{ formData.billNo }}</view> |
| | | <picker v-if="isUpdate" :range="DAA001List" class="picker info-value-input" name="selector" |
| | | @change="onDaa001Change"> |
| | | <view>{{ DAA001List[DAA001Index] }}</view> |
| | | </picker> |
| | | </view> |
| | | <view class="info-block"> |
| | | <view class="info-label">ç©æåç§°ï¼</view> |
| | | <view class="info-label">产ååç§°ï¼</view> |
| | | <view class="info-value">{{ formData.itemName }}</view> |
| | | </view> |
| | | <view class="info-block"> |
| | |
| | | <view class="info-value">{{ formData.itemModel }}</view> |
| | | </view> |
| | | <view class="info-block"> |
| | | <view class="info-label">å·¥åç¼å·ï¼</view> |
| | | <view v-if="!isUpdate" class="info-value">{{ formData.billNo }}</view> |
| | | <picker v-else :range="DAA001List" class="picker info-value-input" name="selector" |
| | | @change="onDaa001Change"> |
| | | <view>{{ DAA001List[DAA001Index] }}</view> |
| | | </picker> |
| | | <view class="info-label">项ç®ï¼</view> |
| | | <view class="info-value">{{ formData.projecT_CODE }}</view> |
| | | <view class="info-label">工忰éï¼</view> |
| | | <view class="info-value highlight">{{ formData.planQty }}</view> |
| | | </view> |
| | | <view v-if="formData.remarks" class="info-block"> |
| | | <view class="info-label">ä¸åæ ¼æè¿°ï¼</view> |
| | | <view v-if="formData.remarks && current" class="info-block"> |
| | | <view class="info-label">夿³¨ï¼</view> |
| | | <view class="info-value">{{ formData.remarks }}</view> |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- æä½æé®åº - æ£éªé¡¹ç®è·å --> |
| | | <view v-if="isUpdate" class="action-buttons"> |
| | | <button class="secondary-btn" @click="getTable">è·åæ£éªé¡¹ç®</button> |
| | | <!-- æä½æé®åº --> |
| | | <view class="action-buttons"> |
| | | <button v-if="current" class="secondary-btn" @click="getTable">è·åæ£éªé¡¹ç®</button> |
| | | <button v-if="formData.billNo" class="secondary-btn" @click="closeInspection">å
³éæ¤æ¬¡æ£éª</button> |
| | | <!-- <button v-if="isShowTable && isUpdate" class="primary-btn" @click="saveTable">çææ£éªé¡¹ç®</button> --> |
| | | </view> |
| | | |
| | | <!-- æ£éªé¡¹ç®è¡¨æ ¼ --> |
| | | <view v-if="tableData.length > 0" class="inspection-table"> |
| | | <!-- è¡¨æ ¼å¤´é¨ç»è®¡ä¿¡æ¯ --> |
| | | <view class="table-header-stats"> |
| | | <view class="stats-left"> |
| | | <view class="stats-title">æ£éªé¡¹ç®æ¸
å</view> |
| | | <view class="stats-subtitle">å
± {{ tableData.length }} 个æ£éªé¡¹ç®</view> |
| | | </view> |
| | | <view class="stats-right"> |
| | | <view class="stat-item passed"> |
| | | <span class="stat-count">{{ getPassedCount() }}</span> |
| | | <span class="stat-label">å·²åæ ¼</span> |
| | | </view> |
| | | <view class="stat-item failed"> |
| | | <span class="stat-count">{{ getFailedCount() }}</span> |
| | | <span class="stat-label">ä¸åæ ¼</span> |
| | | </view> |
| | | <view class="stat-item pending"> |
| | | <span class="stat-count">{{ getPendingCount() }}</span> |
| | | <span class="stat-label">å¾
æ£éª</span> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <table> |
| | | <thead> |
| | | <tr> |
| | |
| | | </thead> |
| | | <tbody> |
| | | <tr v-for="(item, index) in tableData" :key="index"> |
| | | <td>{{ item.projName }}</td> |
| | | <td> |
| | | <view class="project-name-wrapper"> |
| | | <span :class="{ |
| | | 'status-approved': item.result=='åæ ¼', |
| | | 'status-rejected': item.result=='ä¸åæ ¼', |
| | | 'status-pending': item.result=='æªå®æ' |
| | | }" class="status-indicator"></span> |
| | | <span>{{ item.projName }}</span> |
| | | </view> |
| | | </td> |
| | | <td> |
| | | <view v-if="item.result=='åæ ¼'" class="watermark approved"> |
| | | åæ ¼ |
| | | </view> |
| | | <view v-if="item.result=='ä¸åæ ¼'" class="watermark rejected"> |
| | | ä¸åæ ¼ |
| | | </view> |
| | | <view v-if="item.result=='æªå®æ'" class="watermark pending"> |
| | | å¾
æ£éª |
| | | </view> |
| | | <view v-if="item.result=='åæ ¼'" class="watermark approved">åæ ¼</view> |
| | | <view v-if="item.result=='ä¸åæ ¼'" class="watermark rejected">ä¸åæ ¼</view> |
| | | <view v-if="item.result=='æªå®æ'" class="watermark pending">å¾
确认</view> |
| | | <view class="description-text">{{ item.itemMod }}</view> |
| | | </td> |
| | | <td> |
| | | <button v-if="item.isCheck < item.levelNum" class="record-btn record-btn-fill" |
| | | <button v-if="item.isCheck < item.levelNum" class="record-btn record-btn-fill" |
| | | @click="toDetail(item)"> |
| | | å¡«å ({{ item.isCheck }}/{{ item.levelNum }}) |
| | | å¡«å <!--({{ item.isCheck }}/{{ item.levelNum }})--> |
| | | </button> |
| | | <button v-else class="record-btn record-btn-view" @click="toDetail(item)"> |
| | | æ¥ç ({{ item.isCheck }}/{{ item.levelNum }}) |
| | | |
| | | <button v-else class="record-btn record-btn-view" @click="toDetail(item, index)"> |
| | | æ¥ç<!--({{ item.isCheck }}/{{ item.levelNum }})--> |
| | | </button> |
| | | </td> |
| | | </tr> |
| | |
| | | <!-- æä½æé®åº --> |
| | | <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"> |
| | | <button v-if="!isUpdate && !isShowTable" class="secondary-btn" @click="uploadImages">æ¥çææå¾ç</button> |
| | | <button v-if="!isUpdate && !isShowTable" class="secondary-btn" @click="addDefectDescription">æ¥çä¸è¯æè¿°</button> |
| | | <!-- <button v-if="!isUpdate && !formData.statusUser && !isShowTable" class="secondary-btn" @click="removeXJ"> |
| | | å é¤åæ® |
| | | </button> |
| | | <button v-if="!isUpdate && !isShowTable" class="secondary-btn" @click="saveRemarks">æ·»å 夿³¨</button> |
| | | <button v-if="!isUpdate && !isShowTable && formData.fsubmit !== 1 && getPendingCount() === 0 && tableData.length > 0" class="primary-btn" @click="submit">å®¡æ ¸åæ®</button> |
| | | <button v-if="isShowTable" class="secondary-btn" @click="getTable">è·åæ£éªé¡¹ç®</button> |
| | | <button v-if="isShowTable && isUpdate" class="primary-btn" @click="saveTable">çææ£éªé¡¹ç®</button> |
| | | </button> --> |
| | | <!-- <button v-if="!isUpdate && !isShowTable" class="secondary-btn" @click="saveRemarks">æ·»å 夿³¨</button> --> |
| | | <button v-if="!isUpdate && !isShowTable && current" class="primary-btn" @click="submit">æ£éªæäº¤</button> |
| | | </view> |
| | | |
| | | <!-- ä¸åæ ¼æè¿°å¼¹çª --> |
| | |
| | | data() { |
| | | return { |
| | | formData: { |
| | | createTime: "", |
| | | id: "", |
| | | releaseNo: "", |
| | | createBy: "", |
| | | createDate: "", |
| | | daa020: "", |
| | | itemNo: "", |
| | | billNo: "", |
| | | catQty: "", |
| | | detailMem: "", |
| | | taskNo: "", |
| | | fcheckResu: 0, |
| | | boardModel: "", |
| | | planQty: "", |
| | | mocode: "", |
| | | boardStyle: "", |
| | | fSubmit: 0 |
| | | itemNo: "", |
| | | itemName: "", |
| | | workshopCode: "", |
| | | workshopName: "", |
| | | line: "", |
| | | lineName: "", |
| | | comments: "", |
| | | statusUser: "", |
| | | itemId: "", |
| | | fSubmit: 0, |
| | | }, |
| | | |
| | | DAA020List: [], |
| | | DAA020Index: -1, |
| | | |
| | | DAA001List: [], |
| | | DAA001Index: -1, |
| | | schemeResult: [], |
| | | |
| | | isShowTable: false, |
| | | DAA001Index: -1, |
| | | |
| | | ItemList: [], |
| | | ItemIndex: -1, |
| | | |
| | | boardItems: [], |
| | | |
| | | lineList: [], |
| | | |
| | | lineNo: "", |
| | | womdaaList: [], |
| | | |
| | | tableData: [], |
| | | |
| | |
| | | |
| | | isUpdate: true, |
| | | |
| | | isShowTable: false, |
| | | |
| | | remarks: "", |
| | | remarksPopup: false, |
| | | |
| | | comments: "", |
| | | commentsPopup: false, |
| | | current: true, |
| | | }; |
| | | }, |
| | | 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"]; |
| | | this.formData.releaseNo = params["releaseNo"]; |
| | | //getQaItemXj02 |
| | | this.init(); |
| | | } else { |
| | | //åå§åæ£éªåå· |
| | | this.$post({ |
| | | url: "/XJ/getMaxReleaseNo" |
| | | }).then(res => { |
| | | this.formData.releaseNo = res.data.tbBillList; |
| | | this.formData.createBy = this.$loginInfo.account; |
| | | this.formData.createDate = this.$getDate("yyyy-mm-dd"); |
| | | }); |
| | | |
| | | //车é´ä¸ææ¡çåå§å |
| | | this.$post({ |
| | | url: "/XJ/getLineAll" |
| | | }).then(res => { |
| | | this.lineList = res.data.tbBillList; |
| | | this.DAA020List = res.data.tbBillList.map(item => item.lineName); |
| | | }) |
| | | let params = options; |
| | | |
| | | // tab ç¶æè¯å« |
| | | if(params["current"] === 'A') { |
| | | this.current = true; |
| | | } else if(params["current"] === 'B') { |
| | | this.current = false; |
| | | } |
| | | }, |
| | | |
| | | if (params["id"]) { |
| | | |
| | | this.isUpdate = false; |
| | | |
| | | // âââ æ°å¢ï¼å¿
é¡»ä¿åå° this.idï¼åç»æ¥å£æè½ä½¿ç¨ |
| | | this.id = params["id"]; // âââ å¿
é¡»å è¿ä¸å¥ï¼ï¼ï¼ |
| | | |
| | | // åæ¥ä½ çé»è¾ä¿æä¸å¨ |
| | | this.formData.id = params["id"]; |
| | | this.formData.billNo = params["billNo"]; |
| | | |
| | | // åå§åæç» |
| | | this.init(); |
| | | |
| | | } else { |
| | | |
| | | // åå§åæ£éªåå· |
| | | this.$post({ |
| | | url: "/XJ/getMaxReleaseNo" |
| | | }).then(res => { |
| | | this.formData.billNo = res.data.tbBillList; |
| | | this.formData.createTime = this.$getDate("yyyy-mm-dd"); |
| | | }); |
| | | |
| | | // 产åç¼ç 䏿æ¡åå§å |
| | | this.$post({ |
| | | url: "/XJ/getLineAll" |
| | | }).then(res => { |
| | | this.lineList = res.data.tbBillList; |
| | | this.DAA020List = res.data.tbBillList.map(item => item.lineName); |
| | | this.formData.itemNo = ""; |
| | | this.formData.itemName = ""; |
| | | this.formData.workshopCode = ""; |
| | | this.formData.workshopName = ""; |
| | | this.formData.line = ""; |
| | | this.formData.lineName = ""; |
| | | this.formData.pbaid = null; |
| | | }) |
| | | } |
| | | } |
| | | , |
| | | methods: { |
| | | // è·ååæ ¼é¡¹ç®æ°é |
| | | getPassedCount() { |
| | |
| | | getPendingCount() { |
| | | return this.tableData.filter(item => item.result === 'æªå®æ').length; |
| | | }, |
| | | submit() { |
| | | // åéä¿é©ï¼æ£æ¥æ¯å¦è¿ææªå®æçæ£éªé¡¹ç® |
| | | const pendingCount = this.getPendingCount(); |
| | | if (pendingCount > 0) { |
| | | this.$showMessage(`è¿æ ${pendingCount} 个æ£éªé¡¹ç®æªå®æï¼è¯·å®ææææ£éªé¡¹ç®ååæäº¤å®¡æ ¸`); |
| | | return; |
| | | // å
³éæ¤æ¬¡æ£éªå¹¶ä¼ å·¡æ£åå·ç»å端 |
| | | closeInspection() { |
| | | if (this.formData.billNo) { |
| | | this.$post({ |
| | | url: "/XJ/closeInspection", |
| | | data: { |
| | | billNo: this.formData.billNo, |
| | | id: this.formData.id |
| | | } |
| | | }).then(res => { |
| | | this.$showMessage("æ£éªå·²å
³é"); |
| | | // å
³éå½å页é¢ï¼è¿åä¸ä¸é¡µé¢ |
| | | uni.navigateBack(); |
| | | }).catch(err => { |
| | | this.$showMessage("å
³éæ£éªå¤±è´¥ï¼è¯·éè¯"); |
| | | }); |
| | | } else { |
| | | this.$showMessage("å·¡æ£åå·ä¸åå¨"); |
| | | } |
| | | |
| | | // æ£æ¥æ¯å¦ææ£éªé¡¹ç® |
| | | if (this.tableData.length === 0) { |
| | | this.$showMessage("æ²¡ææ£éªé¡¹ç®ï¼æ æ³æäº¤å®¡æ ¸"); |
| | | return; |
| | | } |
| | | |
| | | this.$post({ |
| | | url: "/XJ/XJQaSubmit", |
| | | data: { |
| | | userNo: this.$loginInfo.account, |
| | | gid: this.formData.id |
| | | } |
| | | }).then(res => { |
| | | console.log("宿´ååºæ°æ®:", res); |
| | | console.log("Status Codeçå¼:", res.statusCode); |
| | | console.log("è¿åçæ°æ®:", res.data); |
| | | |
| | | // æ£æ¥å¤ç§æåæ¡ä»¶ |
| | | if (res.statusCode === 200 || res.status === 0 || res.data === true || res.data.tbBillList === true) { |
| | | this.$showMessage("æåæäº¤æ£éª"); |
| | | // æäº¤æåå跳转å°åè¡¨é¡µé¢ |
| | | setTimeout(() => { |
| | | uni.navigateTo({ |
| | | url: '/pages/QC/XJ/List' |
| | | }); |
| | | }, 1500); // 1.5ç§å跳转ï¼è®©ç¨æ·çå°æåæç¤º |
| | | } else { |
| | | this.$showMessage(res.data.message || res.message || "æäº¤å¤±è´¥"); |
| | | } |
| | | }).catch(err => { |
| | | console.log("æäº¤åºé:", err); |
| | | this.$showMessage("æäº¤å¤±è´¥ï¼è¯·éè¯"); |
| | | }) |
| | | }, |
| | | |
| | | removeXJ() { |
| | | if (this.formData.id) { |
| | | this.$post({ |
| | |
| | | this.$showMessage("请å
éæ©æ£éªåå·"); |
| | | } |
| | | }, |
| | | getItem() { |
| | | |
| | | if (this.isSubmit) { |
| | | this.$showMessage("æ¤ç©ææ å¯ç¨çæ£éªé¡¹ç®ï¼è¯·ç»´æ¤!"); |
| | | return; |
| | | } |
| | | |
| | | if (!this.formData.billNo) { |
| | | this.$showMessage("è¯·éæ©è®¡åç¼å·"); |
| | | return; |
| | | } |
| | | |
| | | submit() { |
| | | this.$post({ |
| | | url: "/XJ/save", |
| | | url: "/XJ/XJQaSubmit", |
| | | data: { |
| | | from: this.formData, |
| | | userNo: this.$loginInfo.account, |
| | | items: this.tableData |
| | | gid: this.formData.id |
| | | } |
| | | }).then(res => { |
| | | this.formData.id = res.data.tbBillList; |
| | | this.$showMessage("çææ£éªé¡¹ç®æå"); |
| | | this.init(); |
| | | this.isUpdate = false; |
| | | }); |
| | | |
| | | //2024-11-28 kyy æ ¡éªåæ ¼æäº¤å¢å æç¤º |
| | | console.log("宿´ååºæ°æ®:", res); |
| | | console.log("Status Codeçå¼:", res.statusCode); |
| | | console.log("è¿åçæ°æ®:", res.data); |
| | | |
| | | // æ£æ¥å¤ç§æåæ¡ä»¶ |
| | | if (res.statusCode === 200 || res.status === 0 || res.data === true || res.data.tbBillList === true) { |
| | | |
| | | this.$showMessage("æåæäº¤æ£éª"); |
| | | // æäº¤æåå跳转å°åè¡¨é¡µé¢ |
| | | setTimeout(() => { |
| | | uni.navigateTo({ |
| | | url: '/pages/QC/XJ/List' |
| | | }); |
| | | }, 1500); // 1.5ç§å跳转ï¼è®©ç¨æ·çå°æåæç¤º |
| | | } else { |
| | | this.$showMessage(res.data.message || res.message || "æäº¤å¤±è´¥"); |
| | | } |
| | | }).catch(err => { |
| | | console.log("æäº¤åºé:", err); |
| | | this.$showMessage("æäº¤å¤±è´¥ï¼è¯·éè¯"); |
| | | }) |
| | | }, |
| | | //ç产线å«éæ©å¹¶åå§è¯å·¥åå· |
| | | |
| | | init() { |
| | | if (this.formData.id) { |
| | | this.$post({ |
| | | url: "/XJ/getPage", |
| | | data: { |
| | | pageIndex: 1, |
| | | limit: 1, |
| | | id: this.formData.id |
| | | } |
| | | }).then(res => { |
| | | let tbBillListElement = res.data.tbBillList[0]; |
| | | if (tbBillListElement) { |
| | | // ä¿ååæçIDå¼ |
| | | const originalId = this.formData.id; |
| | | |
| | | // ä¿ååæçbillNoå¼ |
| | | const originalBillNo = this.formData.billNo; |
| | | |
| | | // å°æå¡å¨è¿åçæ°æ®åå¹¶å°ç°ææ°æ®ä¸ï¼è䏿¯ç´æ¥æ¿æ¢ |
| | | Object.assign(this.formData, tbBillListElement); |
| | | |
| | | // ç¡®ä¿å
³é®å段å¼ä¸è¢«è¦ç |
| | | if ((!this.formData.id || this.formData.id === null || this.formData.id === undefined || this.formData.id === "") && originalId) { |
| | | this.formData.id = originalId; |
| | | } |
| | | |
| | | if ((!this.formData.billNo || this.formData.billNo === null || this.formData.billNo === undefined || this.formData.billNo === "") && originalBillNo) { |
| | | this.formData.billNo = originalBillNo; |
| | | } |
| | | |
| | | this.$post({ |
| | | url: "/XJ/getJYItem", |
| | | data: { |
| | | pid: this.formData.id |
| | | } |
| | | }).then(res => { |
| | | this.tableData.splice(0, this.tableData.length, ...res.data.tbBillList); |
| | | |
| | | this.tableData.sort((a, b) => { |
| | | if (a.result === 'æªå®æ' && b.result === 'åæ ¼') { |
| | | return -1; |
| | | } else if (a.result === 'åæ ¼' && b.result === 'æªå®æ') { |
| | | return 1; |
| | | } else { |
| | | return 0; |
| | | } |
| | | }); |
| | | |
| | | if (this.tableData.length === 0) { |
| | | this.isShowTable = true; |
| | | } |
| | | |
| | | console.log('init宿åtableDataé¿åº¦:', this.tableData.length, 'isShowTable:', this.isShowTable); |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | onDaa020Change(event) { |
| | | //è·åç产线å«ç䏿 å°å |
| | | this.DAA020Index = event.mp.detail.value; |
| | | //this.formData.line = event; |
| | | |
| | | this.lineNo = this.lineList[this.DAA020Index].lineNo; |
| | | this.lineNo = this.lineList[this.DAA020List.indexOf(event)].lineNo; |
| | | |
| | | this.formData.line = this.lineNo; |
| | | |
| | | this.$post({ |
| | | url: "/XJ/getBoardItem", |
| | |
| | | }).then(res => { |
| | | //å¡«å
å·¥åå·çæ°æ®æº |
| | | this.boardItems = res.data.tbBillList; |
| | | |
| | | this.ItemList = this.boardItems.map(item => item.itemName); |
| | | //å为é»è®¤ç©ºå¼çç¶æ |
| | | this.ItemIndex = -1; |
| | | }) |
| | | |
| | | }, |
| | | onItemChange(event) { |
| | | this.ItemIndex = event.mp.detail.value; |
| | | this.formData.itemNo = this.boardItems[this.ItemIndex].itemNo;//ä¸»è¦æ¯æ¹è¿é |
| | | this.formData.itemId = this.boardItems[this.ItemIndex].id;//ä¸»è¦æ¯æ¹è¿é |
| | | this.formData.itemName = this.boardItems[this.ItemIndex].itemName;//ä¸»è¦æ¯æ¹è¿é |
| | | this.formData.itemModel = this.boardItems[this.ItemIndex].itemModel;//ä¸»è¦æ¯æ¹è¿é |
| | | |
| | | this.formData.itemNo = event.itemNo; |
| | | |
| | | this.$post({ |
| | | url: "/XJ/getDaa001", |
| | | data: { |
| | |
| | | this.DAA001List = this.schemeResult.map(s => s.daa001); |
| | | //å为é»è®¤ç©ºå¼çç¶æ |
| | | this.DAA001Index = -1; |
| | | |
| | | this.formData.billNo = ""; |
| | | this.formData.daa001 = ""; |
| | | }) |
| | | }, |
| | | //éåå·¥åå¡«å
ç©æå·åå
¶ä»ä¿¡æ¯ |
| | | onDaa001Change(event) { |
| | | this.DAA001Index = event.mp.detail.value; |
| | | this.formData.billNo = this.schemeResult[this.DAA001Index].daa001; |
| | | this.formData.planQty = this.schemeResult[this.DAA001Index].daa008; |
| | | |
| | | this.formData.daa001 = this.schemeResult[this.DAA001Index].daa001; |
| | | |
| | | //表åä¸çé¨ååæ®µèµå¼ |
| | | this.$post({ |
| | | url: "/XJ/getItem", |
| | | data: { |
| | | daa001: this.formData.billNo |
| | | daa001: this.formData.daa001 |
| | | } |
| | | }).then(res => { |
| | | let data = res.data.tbBillList[0]; |
| | | //å½è¿åçç»æé为空æ¶ç½®ç©ºåæçå¼ |
| | | if (!data) { |
| | | this.formData.billNo = ""; |
| | | this.formData.taskNo = ""; |
| | | this.formData.itemNo = ""; |
| | | this.formData.planQty = ""; |
| | | this.tableData = []; |
| | | this.tableData.splice(0, this.tableData.length); |
| | | return; |
| | | } |
| | | //ä¸ä¸ºç©ºæ¶èµå¼ |
| | | this.formData.daa001 = data.daa001; |
| | | this.formData.daa003 = data.daa003; |
| | | this.formData.daa004 = data.daa004; |
| | | this.formData.daa008 = data.daa008; |
| | | this.formData.projecT_CODE = data.projecT_CODE; |
| | | this.formData.itemId = data.itemId; |
| | | this.formData.pbaid = data.pbaid; |
| | | this.formData.remarks = data.remarks; |
| | | }) |
| | | }, |
| | | toDetail(item, index) { |
| | | // æ£æ¥æ£éªåæ¯å¦åå¨ |
| | | if (!this.formData.id) { |
| | | this.$showMessage("æ£éªåæ°æ®ä¸å®æ´ï¼è¯·å
è·åæ£éªé¡¹ç®æéæ°å 载页é¢"); |
| | | return; |
| | | } |
| | | |
| | | this.$post({ |
| | | url: "/XJ/setJYItem", |
| | | data: { |
| | | itemNo: this.formData.itemNo |
| | | } |
| | | }).then(res => { |
| | | if (res.data.tbBillList.length > 0) { |
| | | this.tableData = res.data.tbBillList; // å¨ç®å¤´å½æ°ä¸ï¼this æåå¤å±ä½ç¨åç this |
| | | this.isSubmit = false; |
| | | } else { |
| | | this.$showMessage("æ¤ç©ææ²¡æå¯ç¨çæ£éªé¡¹ç®ï¼è¯·ç»´æ¤!"); |
| | | this.isSubmit = true; |
| | | this.tableData = []; |
| | | } |
| | | }); |
| | | if (this.isUpdate) { |
| | | uni.showToast({ |
| | | icon: "none", |
| | | title: "请å
çææ£éªé¡¹ç®", |
| | | duration: 2000, |
| | | }); |
| | | return; |
| | | } |
| | | |
| | | // 妿 item.id ä¸åå¨ï¼å°±ä¼ 空å符串æè
ç¹æ®æ è¯ |
| | | const itemId = item.id != null ? item.id : ''; |
| | | const billNo = this.formData.billNo || ''; |
| | | const gid = this.formData.id || ''; |
| | | const itemIndex = index != null ? index : 0; |
| | | |
| | | uni.navigateTo({ |
| | | url: 'detail?id=' + encodeURIComponent(itemId) + |
| | | '&billNo=' + encodeURIComponent(billNo) + |
| | | '&gid=' + encodeURIComponent(gid) + |
| | | '&index=' + encodeURIComponent(itemIndex) |
| | | }); |
| | | }, |
| | | getTable() { |
| | | // å¨å¼å§æ¶æ¸
ç©ºç°ææ°æ®ï¼é¿å
ç´¯å |
| | | this.tableData.splice(0, this.tableData.length); |
| | | |
| | | // ç¡®ä¿itemNoåå¨ |
| | | if (!this.formData || !this.formData.itemNo) { |
| | | this.$showMessage("请å
éæ©ç©æç¼ç "); |
| | | return; |
| | | } |
| | | |
| | | // æ¾ç¤ºå è½½æç¤ºï¼é²æ¢ç¨æ·å¨ä¿åè¿ç¨ä¸ç¹å»å¡«åæé® |
| | | uni.showLoading({ |
| | | title: 'æ£å¨è·åæ£éªé¡¹ç®...' |
| | | }); |
| | | }, toYzxSubmitFrom(releaseNo){ |
| | | uni.navigateTo({ |
| | | url: 'yzxFrom?id=' +this.formData.id+'¤t='+this.current |
| | | }); |
| | | }, |
| | | init() { |
| | | |
| | | this.$post({ |
| | | url: "/XJ/getPage", |
| | | url: "/XJ/setJYItem", |
| | | data: { |
| | | id: this.formData.id, |
| | | pageIndex: 1, |
| | | limit: 1, |
| | | itemNo: this.formData.itemNo |
| | | } |
| | | }).then(res => { |
| | | let data = res.data.tbBillList[0]; |
| | | if (data) { |
| | | this.formData = data; |
| | | if (res.data && res.data.tbBillList && res.data.tbBillList.length > 0) { |
| | | // ç´æ¥èµå¼ï¼é¿å
ç´¯å |
| | | this.tableData.splice(0, this.tableData.length, ...res.data.tbBillList); |
| | | |
| | | // è®¾ç½®ç¶æä»¥æ¾ç¤ºçææ£éªé¡¹ç®æé® |
| | | this.isShowTable = true; |
| | | this.isUpdate = true; // 注æè¿éæ¯trueï¼è¡¨ç¤ºå¯ä»¥çææ£éªé¡¹ç® |
| | | |
| | | console.log('getTable宿åçç¶æ:', { |
| | | isShowTable: this.isShowTable, |
| | | isUpdate: this.isUpdate, |
| | | tableDataLength: this.tableData.length |
| | | }); |
| | | |
| | | // æ¾ç¤ºæåæ¶æ¯ |
| | | this.$showMessage("æ£éªé¡¹ç®è·åæå"); |
| | | |
| | | this.$post({ |
| | | url: "/XJ/getJYItem", |
| | | data: { |
| | | pid: this.formData.id |
| | | } |
| | | }).then(res1 => { |
| | | let tableData = res1.data.tbBillList |
| | | //å½å·²æ£éªä¸ªæ°é½ä¸ä¸ºç©ºæ¶æç
§æ£æµç»ææåº |
| | | tableData.sort((a, b) => { |
| | | if (a.result === 'æªå®æ' && b.result === 'åæ ¼') { |
| | | return -1; |
| | | } else if (a.result === 'åæ ¼' && b.result === 'æªå®æ') { |
| | | return 1; |
| | | } else { |
| | | return 0; |
| | | } |
| | | }); |
| | | this.tableData = tableData; |
| | | if (this.tableData.length === 0) { |
| | | this.isShowTable = true; |
| | | } |
| | | }) |
| | | //çææ£éªé¡¹ç®çé»è¾(æ ¹æ®è§è已注é) |
| | | this.saveTable(); |
| | | |
| | | // èªå¨å·æ°é»è¾(æ ¹æ®è§è已注é) |
| | | // è·åå½å页é¢è·¯å¾ååæ° |
| | | const pages = getCurrentPages(); |
| | | const currentPage = pages[pages.length - 1]; |
| | | const route = '/' + currentPage.route; |
| | | const options = currentPage.options; // 页é¢åæ°å¯¹è±¡ |
| | | |
| | | // æ¼æ¥åæ° |
| | | let query = ''; |
| | | for (let key in options) { |
| | | query += `${key}=${options[key]}&`; |
| | | } |
| | | query = query.slice(0, -1); |
| | | |
| | | // å·æ°å½åé¡µé¢ |
| | | uni.redirectTo({ |
| | | url: query ? `${route}?${query}` : route |
| | | }); |
| | | |
| | | location.reload() |
| | | } else { |
| | | this.$showMessage("æ¤ç©ææ²¡æå¯ç¨çæ£éªé¡¹ç®ï¼è¯·ç»´æ¤!"); |
| | | this.tableData.splice(0, this.tableData.length); |
| | | } |
| | | |
| | | // éèå è½½æç¤ºï¼å
è®¸ç¨æ·æä½ |
| | | uni.hideLoading(); |
| | | }).catch(err => { |
| | | console.error("è·åæ£éªé¡¹ç®å¤±è´¥:", err); |
| | | this.$showMessage("è·åæ£éªé¡¹ç®å¤±è´¥ï¼è¯·æ£æ¥ç½ç»è¿æ¥"); |
| | | uni.hideLoading(); |
| | | }); |
| | | }, |
| | | toDetail(item) { |
| | | if (this.isUpdate) { |
| | | uni.showToast({ |
| | | icon: "none", |
| | | title: "请å
çææ£éªé¡¹ç®", |
| | | duration: 2000, |
| | | }); |
| | | } else { |
| | | uni.navigateTo({ |
| | | url: 'detail?id=' + item.id + '&billNo=' + this.formData.billNo + '&gid=' + this.formData |
| | | .id |
| | | }); |
| | | saveTable() { |
| | | if (this.tableData.length === 0) { |
| | | return; |
| | | } |
| | | }, saveRemarks() { |
| | | |
| | | // æ¾ç¤ºå è½½æç¤º |
| | | uni.showLoading({ |
| | | title: 'æ£å¨ä¿å...' |
| | | }); |
| | | |
| | | this.$post({ |
| | | url: "/XJ/saveItem", |
| | | data: { |
| | | gid: this.formData.id, |
| | | items: this.tableData, |
| | | statusUser: this.$loginInfo.account, |
| | | ItemNo:this.formData.itemNo |
| | | } |
| | | }).then(res => { |
| | | // åªå¨éè¦æ¶æ´æ°tableDataï¼é¿å
éå¤ç´¯å |
| | | if (res.data && res.data.tbBillList && res.data.tbBillList.items) { |
| | | // ç¡®ä¿å®å
¨æ¿æ¢è䏿¯ç´¯å |
| | | this.tableData.splice(0, this.tableData.length, ...res.data.tbBillList.items); |
| | | } |
| | | |
| | | // éè¦ï¼ç¡®ä¿formData.idä¸è¢«è¦ç |
| | | if (!this.formData.id) { |
| | | this.$showMessage("è¦åï¼æ£éªåID丢失ï¼è¯·éæ°å 载页é¢"); |
| | | } |
| | | |
| | | // è®¾ç½®ç¶æä»¥æ¾ç¤ºæ£éªæäº¤æé® |
| | | this.isShowTable = false; |
| | | this.isUpdate = false; |
| | | |
| | | console.log('saveTable宿åçç¶æ:', { |
| | | isShowTable: this.isShowTable, |
| | | isUpdate: this.isUpdate, |
| | | tableDataLength: this.tableData.length |
| | | }); |
| | | |
| | | // æ¾ç¤ºæåæ¶æ¯ |
| | | this.$showMessage("çææ£éªé¡¹ç®æå"); |
| | | |
| | | // éèå è½½æç¤ºï¼å
è®¸ç¨æ·æä½ |
| | | uni.hideLoading(); |
| | | }).catch(err => { |
| | | console.error("ä¿åæ£éªé¡¹ç®å¤±è´¥:", err); |
| | | this.$showMessage("ä¿åæ£éªé¡¹ç®å¤±è´¥ï¼è¯·éè¯"); |
| | | uni.hideLoading(); |
| | | }) |
| | | }, |
| | | toYzxSubmitFrom(releaseNo){ |
| | | uni.navigateTo({ |
| | | url: 'yzxFrom?id=' +this.formData.id+'¤t='+(this.current ? 'true' : 'false') |
| | | }); |
| | | }, |
| | | toSNScanCode(releaseNo){ |
| | | uni.navigateTo({ |
| | | url: 'ScanCode?id=' +this.formData.id+'¤t='+(this.current ? 'true' : 'false') |
| | | }); |
| | | }, |
| | | save() { |
| | | |
| | | // if (this.tableData.length === 0) { |
| | | // this.$showMessage(this.formData.itemNo + "ç©ææ²¡ææ£éªé¡¹ç®"); |
| | | // return; |
| | | // } |
| | | |
| | | if (!this.formData.daa001) { |
| | | this.$showMessage("è¯·éæ©è®¡åç¼å·"); |
| | | return; |
| | | } |
| | | |
| | | this.formData.statusUser = this.$loginInfo.account; |
| | | |
| | | this.$post({ |
| | | url: "/XJ/save", |
| | | data: { |
| | | from: this.formData, |
| | | userNo: this.$loginInfo.account, |
| | | items: this.tableData |
| | | } |
| | | }).then(res => { |
| | | // ä¿ååæçIDå¼ |
| | | const originalId = this.formData.id; |
| | | |
| | | // 设置æ°çIDå¼ï¼å¦æè¿åçæ¯IDï¼ |
| | | if (res.data.tbBillList && typeof res.data.tbBillList === 'string' && res.data.tbBillList !== null && res.data.tbBillList !== undefined && res.data.tbBillList !== "") { |
| | | this.formData.id = res.data.tbBillList; |
| | | } |
| | | |
| | | // å¦ææ²¡æè¿åæ°çIDï¼åä¿æåæçID |
| | | if (!this.formData.id && originalId) { |
| | | this.formData.id = originalId; |
| | | } |
| | | |
| | | this.$showMessage("çææ£éªé¡¹ç®æå"); |
| | | this.init(); |
| | | this.isUpdate = false; |
| | | }); |
| | | }, |
| | | saveRemarks() { |
| | | this.remarksPopup = !this.remarksPopup; |
| | | this.remarks = this.formData.remarks; |
| | | }, |
| | | saveComments() { |
| | | this.commentsPopup = !this.commentsPopup; |
| | | this.comments = this.formData.comments; |
| | | }, |
| | | editRemarks() { |
| | | if (this.remarks) { |
| | |
| | | }) |
| | | } |
| | | }, |
| | | toImage() { |
| | | uni.navigateTo({ |
| | | url: 'ImageItem?id=' + this.formData.id |
| | | }); |
| | | }, |
| | | getTable() { |
| | | this.$post({ |
| | | url: "/XJ/setJYItem", |
| | | data: { |
| | | itemNo: this.formData.itemNo |
| | | } |
| | | }).then(res => { |
| | | if (res.data.tbBillList.length > 0) { |
| | | this.tableData = res.data.tbBillList; // å¨ç®å¤´å½æ°ä¸ï¼this æåå¤å±ä½ç¨åç this |
| | | this.isShowTable = true; |
| | | this.isUpdate = true; |
| | | } else { |
| | | this.$showMessage("æ¤ç©ææ²¡æå¯ç¨çæ£éªé¡¹ç®ï¼è¯·ç»´æ¤!"); |
| | | this.isShowTable = true; |
| | | this.isUpdate = false; |
| | | this.tableData = []; |
| | | } |
| | | }); |
| | | }, |
| | | saveTable() { |
| | | if (this.tableData.length === 0) { |
| | | return; |
| | | editComments() { |
| | | if (this.comments) { |
| | | //saveRemarksGid |
| | | this.$post({ |
| | | url: "/XJ/saveCommentGid", |
| | | data: { |
| | | gid: this.formData.id, |
| | | comments: this.comments |
| | | } |
| | | }).then(res => { |
| | | if (res.data.tbBillList > 0) { |
| | | this.formData.comments = this.comments; |
| | | this.commentsPopup = !this.commentsPopup; |
| | | this.$showMessage("ä¿åæå"); |
| | | } |
| | | }) |
| | | } |
| | | this.$post({ |
| | | url: "/XJ/saveItem", |
| | | data: { |
| | | gid: this.formData.id, |
| | | items: this.tableData, |
| | | userNo: this.$loginInfo.account |
| | | } |
| | | }).then(res => { |
| | | this.formData.id = res.data.tbBillList; |
| | | this.isShowTable = false; |
| | | this.isUpdate = false; |
| | | this.init(); |
| | | }) |
| | | } |
| | | }, |
| | | uploadImages() { |
| | | // æ¥çææå¾ççé»è¾ |
| | | console.log('ç¹å»äºæ¥çææå¾çæé®ï¼billNo:', this.formData.billNo); |
| | | uni.navigateTo({ |
| | | url: 'ImageItemALL?id=' + this.formData.id |
| | | }); |
| | | }, |
| | | addDefectDescription() { |
| | | // æ¥çææä¸è¯æè¿°çé»è¾ |
| | | console.log('ç¹å»äºæ¥çä¸è¯æè¿°æé®ï¼billNo:', this.formData.billNo); |
| | | uni.navigateTo({ |
| | | url: 'Blms?id=' + this.formData.id |
| | | }); |
| | | }, |
| | | }, |
| | | onShow() { |
| | | //æ¯æ¬¡è¿å
¥é¡µé¢é½ä¼æ§è¡çæ¹æ³ |
| | | if (this.formData.id) { |
| | | this.init(); |
| | | } |
| | | this.init(); |
| | | } |
| | | }; |
| | | </script> |
| | |
| | | /* è¡¨æ ¼æ ·å¼ */ |
| | | .inspection-table { |
| | | margin: 25px 0; |
| | | border-radius: 8px; |
| | | overflow: hidden; |
| | | box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); |
| | | background: #fff; |
| | | } |
| | | |
| | | /* è¡¨æ ¼å¤´é¨ç»è®¡ä¿¡æ¯ */ |
| | | .table-header-stats { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | padding: 16px 20px; |
| | | background: linear-gradient(135deg, #f8f9fa, #e9ecef); |
| | | border-bottom: 1px solid #e0e0e0; |
| | | } |
| | | |
| | | .stats-left .stats-title { |
| | | font-size: 18px; |
| | | font-weight: bold; |
| | | color: #2c3e50; |
| | | margin-bottom: 4px; |
| | | } |
| | | |
| | | .stats-left .stats-subtitle { |
| | | font-size: 14px; |
| | | color: #7f8c8d; |
| | | } |
| | | |
| | | .stats-right { |
| | | display: flex; |
| | | gap: 16px; |
| | | } |
| | | |
| | | .stat-item { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | padding: 8px 12px; |
| | | border-radius: 6px; |
| | | min-width: 60px; |
| | | box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); |
| | | } |
| | | |
| | | .stat-item.passed { |
| | | background: linear-gradient(135deg, rgba(39, 174, 96, 0.1), rgba(39, 174, 96, 0.2)); |
| | | border: 1px solid rgba(39, 174, 96, 0.3); |
| | | } |
| | | |
| | | .stat-item.failed { |
| | | background: linear-gradient(135deg, rgba(230, 126, 34, 0.1), rgba(230, 126, 34, 0.2)); |
| | | border: 1px solid rgba(230, 126, 34, 0.3); |
| | | } |
| | | |
| | | .stat-item.pending { |
| | | background: linear-gradient(135deg, rgba(243, 156, 18, 0.1), rgba(243, 156, 18, 0.2)); |
| | | border: 1px solid rgba(243, 156, 18, 0.3); |
| | | } |
| | | |
| | | .stat-count { |
| | | font-size: 20px; |
| | | font-weight: bold; |
| | | line-height: 1; |
| | | margin-bottom: 2px; |
| | | } |
| | | |
| | | .stat-item.passed .stat-count { |
| | | color: #27ae60; |
| | | } |
| | | |
| | | .stat-item.failed .stat-count { |
| | | color: #e67e22; |
| | | } |
| | | |
| | | .stat-item.pending .stat-count { |
| | | color: #f39c12; |
| | | } |
| | | |
| | | .stat-label { |
| | | font-size: 12px; |
| | | color: #7f8c8d; |
| | | font-weight: 500; |
| | | } |
| | | |
| | | /* ç§»å¨ç«¯è¡¨æ ¼å¤´é¨ç»è®¡ */ |
| | | @media (max-width: 500px) { |
| | | .table-header-stats { |
| | | flex-direction: column; |
| | | gap: 12px; |
| | | align-items: flex-start; |
| | | padding: 12px 16px; |
| | | } |
| | | |
| | | .stats-right { |
| | | width: 100%; |
| | | justify-content: space-around; |
| | | gap: 8px; |
| | | } |
| | | |
| | | .stat-item { |
| | | flex: 1; |
| | | min-width: auto; |
| | | padding: 6px 8px; |
| | | } |
| | | |
| | | .stat-count { |
| | | font-size: 16px; |
| | | } |
| | | |
| | | .stat-label { |
| | | font-size: 11px; |
| | | } |
| | | |
| | | .stats-left .stats-title { |
| | | font-size: 16px; |
| | | } |
| | | |
| | | .stats-left .stats-subtitle { |
| | | font-size: 13px; |
| | | } |
| | | } |
| | | |
| | | .inspection-table table { |
| | |
| | | } |
| | | |
| | | .inspection-table th, .inspection-table td { |
| | | padding: 16px 20px; |
| | | border: none; |
| | | padding: 12px 15px; |
| | | border: 1px solid #ddd; |
| | | text-align: left; |
| | | border-bottom: 1px solid #eee; |
| | | } |
| | | |
| | | .inspection-table th { |
| | | background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
| | | font-weight: 600; |
| | | color: #fff; |
| | | font-size: 14px; |
| | | letter-spacing: 0.5px; |
| | | position: relative; |
| | | background-color: #f8f9fa; |
| | | font-weight: bold; |
| | | color: #34495e; |
| | | } |
| | | |
| | | .inspection-table tbody tr { |
| | | transition: all 0.3s ease; |
| | | border-left: 4px solid transparent; |
| | | .inspection-table tr:nth-child(even) { |
| | | background-color: #f9f9f9; |
| | | } |
| | | |
| | | .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:first-child { |
| | | font-weight: 600; |
| | | color: #2c3e50; |
| | | font-size: 15px; |
| | | } |
| | | |
| | | /* 项ç®åç§°å
è£
å¨ */ |
| | | .project-name-wrapper { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 8px; |
| | | } |
| | | |
| | | /* ç¶ææç¤ºå¨ */ |
| | | .status-indicator { |
| | | width: 8px; |
| | | height: 8px; |
| | | border-radius: 50%; |
| | | display: inline-block; |
| | | flex-shrink: 0; |
| | | box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.8); |
| | | } |
| | | |
| | | .status-indicator.status-approved { |
| | | background-color: #27ae60; |
| | | box-shadow: 0 0 0 2px rgba(39, 174, 96, 0.3); |
| | | } |
| | | |
| | | .status-indicator.status-rejected { |
| | | background-color: #e67e22; |
| | | box-shadow: 0 0 0 2px rgba(230, 126, 34, 0.3); |
| | | } |
| | | |
| | | .status-indicator.status-pending { |
| | | background-color: #f39c12; |
| | | box-shadow: 0 0 0 2px rgba(243, 156, 18, 0.3); |
| | | .inspection-table tr:hover { |
| | | background-color: #f1f5f9; |
| | | } |
| | | |
| | | /* æ£éªæè¿°åç¹æ®æ ·å¼ */ |
| | | .inspection-table td:nth-child(2) { |
| | | position: relative; |
| | | min-height: 80px; |
| | | vertical-align: top; |
| | | padding: 16px 20px; |
| | | overflow: hidden; |
| | | padding: 0; |
| | | } |
| | | |
| | | /* æé®æ ·å¼ */ |
| | |
| | | } |
| | | |
| | | .record-btn { |
| | | padding: 8px 16px; |
| | | background: linear-gradient(135deg, #3498db, #2980b9); |
| | | color: #fff; |
| | | border: none; |
| | | border-radius: 6px; |
| | | padding: 6px 12px; |
| | | background-color: #f8f9fa; |
| | | border: 1px solid #ddd; |
| | | cursor: pointer; |
| | | transition: all 0.3s ease; |
| | | font-weight: 500; |
| | | font-size: 13px; |
| | | box-shadow: 0 2px 4px rgba(52, 152, 219, 0.3); |
| | | transition: all 0.2s; |
| | | } |
| | | |
| | | .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); |
| | | background-color: #e9ecef; |
| | | } |
| | | |
| | | /* å¡«åç¶ææé® */ |
| | | .record-btn-fill { |
| | | background: linear-gradient(135deg, #2ecc71, #27ae60); |
| | | box-shadow: 0 2px 4px rgba(46, 204, 113, 0.3); |
| | | background-color: #f8f9fa; |
| | | border: 1px solid #ddd; |
| | | } |
| | | |
| | | .record-btn-fill:hover { |
| | | background: linear-gradient(135deg, #27ae60, #229954); |
| | | box-shadow: 0 4px 8px rgba(46, 204, 113, 0.4); |
| | | background-color: #e9ecef; |
| | | } |
| | | |
| | | /* æ¥çç¶ææé® */ |
| | | .record-btn-view { |
| | | background: linear-gradient(135deg, #95a5a6, #7f8c8d); |
| | | box-shadow: 0 2px 4px rgba(149, 165, 166, 0.3); |
| | | background-color: #f8f9fa; |
| | | border: 1px solid #ddd; |
| | | } |
| | | |
| | | .record-btn-view:hover { |
| | | background: linear-gradient(135deg, #7f8c8d, #6c7b7d); |
| | | box-shadow: 0 4px 8px rgba(149, 165, 166, 0.4); |
| | | background-color: #e9ecef; |
| | | } |
| | | |
| | | /* æ°´å°æ ·å¼ */ |
| | | .watermark { |
| | | position: absolute; |
| | | font-size: 32px; |
| | | font-size: 40px; |
| | | font-weight: bold; |
| | | opacity: 0.4; |
| | | z-index: 3; |
| | | opacity: 1; |
| | | z-index: 1; |
| | | pointer-events: none; |
| | | bottom: 8px; |
| | | right: 8px; |
| | | transform: rotate(-15deg); |
| | | transform-origin: bottom right; |
| | | text-shadow: 1px 1px 2px rgba(255, 255, 255, 0.8); |
| | | min-width: 60px; |
| | | width: 100%; |
| | | text-align: center; |
| | | top: 50%; |
| | | left: 50%; |
| | | transform: translate(-50%, -50%) rotate(-15deg); |
| | | } |
| | | |
| | | .watermark.approved { |
| | | color: #27ae60; /* æ´æ·¡çç»¿è² */ |
| | | color: #2ecc71; /* ç»¿è² */ |
| | | } |
| | | |
| | | .watermark.rejected { |
| | | color: #e67e22; /* æ´æ·¡ççº¢è² */ |
| | | color: #e74c3c; /* çº¢è² */ |
| | | } |
| | | |
| | | .watermark.pending { |
| | | color: #f39c12; /* æ©è² */ |
| | | } |
| | | |
| | | /* æè¿°ææ¬æ ·å¼ */ |
| | | /* æè¿°ææ¬å®¹å¨ */ |
| | | .description-text { |
| | | 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; |
| | | padding: 25px; |
| | | background-color: rgba(255, 255, 255, 0.7); |
| | | } |
| | | |
| | | /* å¼¹åºå±æ ·å¼ */ |
| | | /* å¼¹çªæ ·å¼ */ |
| | | .overlay { |
| | | position: fixed; |
| | | top: 0; |
| | |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | z-index: 10; |
| | | z-index: 1000; |
| | | } |
| | | |
| | | .popup { |
| | | background-color: #fff; |
| | | background-color: white; |
| | | padding: 20px; |
| | | border: 1px solid #ccc; |
| | | box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); |
| | | width: 85vw; |
| | | min-height: 35vh; |
| | | max-height: 60vh; |
| | | border-radius: 8px; |
| | | box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); |
| | | max-width: 500px; |
| | | width: 90%; |
| | | } |
| | | |
| | | .popup h3 { |
| | | margin-top: 0; |
| | | color: #2c3e50; |
| | | border-bottom: 1px solid #eee; |
| | | padding-bottom: 10px; |
| | | margin-bottom: 15px; |
| | | font-size: 16px; |
| | | text-align: center; |
| | | color: #333; |
| | | } |
| | | |
| | | .popup .form-group { |
| | | .form-group { |
| | | margin-bottom: 15px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | } |
| | | |
| | | .popup .form-label { |
| | | .form-label { |
| | | display: block; |
| | | margin-bottom: 5px; |
| | | font-weight: bold; |
| | | font-size: 14px; |
| | | color: #555; |
| | | } |
| | | |
| | | .popup .form-input { |
| | | .form-input { |
| | | width: 100%; |
| | | padding: 8px; |
| | | padding: 8px 12px; |
| | | border: 1px solid #ddd; |
| | | border-radius: 4px; |
| | | font-size: 14px; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .popup .form-textarea { |
| | | min-height: 120px; |
| | | .form-textarea { |
| | | height: 100px; |
| | | resize: vertical; |
| | | font-family: inherit; |
| | | line-height: 1.5; |
| | | } |
| | | |
| | | .popup-buttons { |
| | | display: flex; |
| | | justify-content: flex-end; |
| | | gap: 10px; |
| | | margin-top: 20px; |
| | | } |
| | | |
| | | .updateBut { |
| | | background-color: #3498db; |
| | | color: white; |
| | | padding: 10px 20px; |
| | | border: none; |
| | | padding: 8px 15px; |
| | | border-radius: 4px; |
| | | margin-right: 10px; |
| | | cursor: pointer; |
| | | transition: all 0.3s; |
| | | margin-right: 10px; |
| | | } |
| | | |
| | | .updateBut:hover { |
| | |
| | | } |
| | | |
| | | /* ååºå¼è®¾è®¡ */ |
| | | @media (max-width: 500px) { |
| | | .info-row, |
| | | .info-block { |
| | | flex-direction: column; |
| | | align-items: flex-start; |
| | | @media (max-width: 768px) { |
| | | .inspection-sheet { |
| | | padding: 10px; |
| | | } |
| | | |
| | | |
| | | .info-row { |
| | | flex-direction: column; |
| | | } |
| | | |
| | | .info-label, .info-value { |
| | | margin-bottom: 5px; |
| | | } |
| | | |
| | | .action-buttons { |
| | | flex-direction: column; |
| | | } |
| | | |
| | | .inspection-table table { |
| | | display: block; |
| | | overflow-x: auto; |
| | | } |
| | | |
| | | /* ç§»å¨ç«¯å¼¹åºæ¡ä¼å */ |
| | | .popup { |
| | | width: 95vw; |
| | | min-height: 40vh; |
| | | max-height: 70vh; |
| | | padding: 15px; |
| | | } |
| | | |
| | | .popup .form-textarea { |
| | | min-height: 100px; |
| | | |
| | | .primary-btn, .secondary-btn { |
| | | width: 100%; |
| | | margin-bottom: 10px; |
| | | } |
| | | } |
| | | </style> |