| ¶Ô±ÈÐÂÎļþ |
| | |
| | | // ä¸è¯åç¸å
³æ¥å£ |
| | | import request from "@/utils/request"; |
| | | |
| | | // æ¥è¯¢ä¸è¯åç»è®°å表 |
| | | export function pageDefectiveProduct(query) { |
| | | return request({ |
| | | url: "/defectiveProduct/page", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // æ°å¢ä¸è¯åç»è®° |
| | | export function addDefectiveProduct(data) { |
| | | return request({ |
| | | url: "/defectiveProduct/add", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // ä¿®æ¹ä¸è¯åç»è®° |
| | | export function updateDefectiveProduct(data) { |
| | | return request({ |
| | | url: "/defectiveProduct/update", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // å é¤ä¸è¯åç»è®° |
| | | export function deleteDefectiveProduct(query) { |
| | | return request({ |
| | | url: "/defectiveProduct/delete", |
| | | method: "delete", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // æ¥è¯¢ä¸è¯åå®¡æ ¸å表 |
| | | export function pageDefectiveProductAudit(query) { |
| | | return request({ |
| | | url: "/defectiveProduct/audit/page", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // ä¸è¯åå®¡æ ¸ |
| | | export function auditDefectiveProduct(data) { |
| | | return request({ |
| | | url: "/defectiveProduct/audit", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| | | |
| | | // è·åä¸è¯å详æ
|
| | | export function getDefectiveProduct(query) { |
| | | return request({ |
| | | url: "/defectiveProduct/get", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | // EIP线ç¼ç±»æ°æ®å¯¹æ¥æ¥å£ |
| | | import request from "@/utils/request"; |
| | | |
| | | // æ¥è¯¢é«åçµåçµç¼è¯éªæ°æ® |
| | | export function pageHighVoltageCable(query) { |
| | | return request({ |
| | | url: "/eip/highVoltageCable/page", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // æ¥è¯¢ä¸åçµåçµç¼è¯éªæ°æ® |
| | | export function pageMediumVoltageCable(query) { |
| | | return request({ |
| | | url: "/eip/mediumVoltageCable/page", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // æ¥è¯¢ä½å线ç¼è¯éªæ°æ® |
| | | export function pageLowVoltageCable(query) { |
| | | return request({ |
| | | url: "/eip/lowVoltageCable/page", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // æ¥è¯¢ä¸»ç½å·å°çº¿è¯éªæ°æ® |
| | | export function pageMainNetworkGroundWire(query) { |
| | | return request({ |
| | | url: "/eip/mainNetworkGroundWire/page", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // æ¥è¯¢é
ç½å·å°çº¿è¯éªæ°æ® |
| | | export function pageDistributionGroundWire(query) { |
| | | return request({ |
| | | url: "/eip/distributionGroundWire/page", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // æ¥è¯¢å
ç¼è¯éªæ°æ® |
| | | export function pageOpticalFiber(query) { |
| | | return request({ |
| | | url: "/eip/opticalFiber/page", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // æ¥è¯¢OPGWå
ç¼è¯éªæ°æ® |
| | | export function pageOPGWOpticalFiber(query) { |
| | | return request({ |
| | | url: "/eip/opgwOpticalFiber/page", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // æ¥è¯¢ADSSå
ç¼è¯éªæ°æ® |
| | | export function pageADSSOpticalFiber(query) { |
| | | return request({ |
| | | url: "/eip/adssOpticalFiber/page", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | // 忥EIPæ°æ® |
| | | export function syncEIPData(data) { |
| | | return request({ |
| | | url: "/eip/sync", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | export * from "./defectiveProduct"; |
| | | export * from "./eipCable"; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <!-- æ¥è¯¢åºå --> |
| | | <div class="search-form"> |
| | | <el-form :model="searchForm" inline size="small"> |
| | | <el-form-item label="æ¥åç¼å·"> |
| | | <el-input v-model="searchForm.reportNo" placeholder="请è¾å
¥æ¥åç¼å·" clearable></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="å®¡æ ¸ç¶æ"> |
| | | <el-select v-model="searchForm.status" placeholder="è¯·éæ©å®¡æ ¸ç¶æ" clearable> |
| | | <el-option label="å¾
å®¡æ ¸" value="0"></el-option> |
| | | <el-option label="å·²éè¿" value="1"></el-option> |
| | | <el-option label="已驳å" value="2"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" @click="searchList">æ¥è¯¢</el-button> |
| | | <el-button @click="resetSearch">éç½®</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | |
| | | <!-- æ°æ®è¡¨æ ¼ --> |
| | | <el-table v-loading="tableLoading" :data="tableData" border> |
| | | <el-table-column label="æ¥åç¼å·" prop="reportNo" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="产ååç§°" prop="productName" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="è§æ ¼åå·" prop="specModel" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="ä¸åæ ¼æè¿°" prop="unqualifiedDesc" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="æ£éªäººå" prop="inspector" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="ç»è®°æ¶é´" prop="registerDate" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="å®¡æ ¸ç¶æ" prop="status"> |
| | | <template slot-scope="scope"> |
| | | <el-tag :type="getStatusType(scope.row.status)"> |
| | | {{ getStatusText(scope.row.status) }} |
| | | </el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="å®¡æ ¸æè§" prop="auditOpinion" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="å®¡æ ¸äººå" prop="auditor" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="å®¡æ ¸æ¶é´" prop="auditDate" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="æä½" width="200"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" @click="viewDetail(scope.row)">æ¥ç</el-button> |
| | | <el-button type="text" v-if="scope.row.status === '0'" @click="openAuditDia(scope.row)">å®¡æ ¸</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <!-- å页 --> |
| | | <el-pagination |
| | | :current-page="page.current" |
| | | :page-size="page.size" |
| | | :total="page.total" |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange" |
| | | layout="total, sizes, prev, pager, next, jumper"> |
| | | </el-pagination> |
| | | |
| | | <!-- å®¡æ ¸å¼¹çª --> |
| | | <el-dialog title="ä¸è¯åå®¡æ ¸" :visible.sync="auditVisible" width="500px"> |
| | | <el-form :model="auditForm" label-width="100px" size="small"> |
| | | <el-form-item label="å®¡æ ¸ç¶æ"> |
| | | <el-radio-group v-model="auditForm.status"> |
| | | <el-radio label="1">éè¿</el-radio> |
| | | <el-radio label="2">驳å</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="å®¡æ ¸æè§"> |
| | | <el-textarea v-model="auditForm.opinion" :rows="3" placeholder="请è¾å
¥å®¡æ ¸æè§"></el-textarea> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button @click="auditVisible = false">åæ¶</el-button> |
| | | <el-button type="primary" @click="submitAudit" :loading="submitLoading">ç¡®å®å®¡æ ¸</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | |
| | | <!-- 详æ
å¼¹çª --> |
| | | <el-dialog title="ä¸è¯åå®¡æ ¸è¯¦æ
" :visible.sync="detailVisible" width="600px"> |
| | | <el-form :model="detailData" label-width="120px" size="small" disabled> |
| | | <el-form-item label="æ¥åç¼å·"> |
| | | <span>{{ detailData.reportNo }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="产ååç§°"> |
| | | <span>{{ detailData.productName }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="è§æ ¼åå·"> |
| | | <span>{{ detailData.specModel }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="ç产åå®¶"> |
| | | <span>{{ detailData.manufacturer }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="åææä¿¡æ¯"> |
| | | <span>{{ detailData.materialInfo }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="ä¸åæ ¼æè¿°"> |
| | | <span>{{ detailData.unqualifiedDesc }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="æ£éªäººå"> |
| | | <span>{{ detailData.inspector }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="ç»è®°æ¶é´"> |
| | | <span>{{ detailData.registerDate }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="å®¡æ ¸ç¶æ"> |
| | | <el-tag :type="getStatusType(detailData.status)"> |
| | | {{ getStatusText(detailData.status) }} |
| | | </el-tag> |
| | | </el-form-item> |
| | | <el-form-item label="å®¡æ ¸æè§"> |
| | | <span>{{ detailData.auditOpinion || "-" }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="å®¡æ ¸äººå"> |
| | | <span>{{ detailData.auditor || "-" }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="å®¡æ ¸æ¶é´"> |
| | | <span>{{ detailData.auditDate || "-" }}</span> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button @click="detailVisible = false">å
³é</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | pageDefectiveProductAudit, |
| | | auditDefectiveProduct, |
| | | getDefectiveProduct, |
| | | } from "@/api/quality/defectiveProduct"; |
| | | |
| | | export default { |
| | | name: "DefectiveProductAudit", |
| | | data() { |
| | | return { |
| | | searchForm: { |
| | | reportNo: "", |
| | | status: "", |
| | | }, |
| | | tableData: [], |
| | | tableLoading: false, |
| | | page: { |
| | | current: 1, |
| | | size: 20, |
| | | total: 0, |
| | | }, |
| | | auditVisible: false, |
| | | auditForm: { |
| | | id: null, |
| | | status: "1", |
| | | opinion: "", |
| | | }, |
| | | submitLoading: false, |
| | | detailVisible: false, |
| | | detailData: {}, |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.searchList(); |
| | | }, |
| | | methods: { |
| | | searchList() { |
| | | this.tableLoading = true; |
| | | pageDefectiveProductAudit({ |
| | | ...this.searchForm, |
| | | page: this.page.current, |
| | | size: this.page.size, |
| | | }).then((res) => { |
| | | this.tableData = res.data.records; |
| | | this.page.total = res.data.total; |
| | | this.tableLoading = false; |
| | | }).catch((err) => { |
| | | this.tableLoading = false; |
| | | console.error(err); |
| | | }); |
| | | }, |
| | | resetSearch() { |
| | | this.searchForm = { |
| | | reportNo: "", |
| | | status: "", |
| | | }; |
| | | this.searchList(); |
| | | }, |
| | | handleSizeChange(val) { |
| | | this.page.size = val; |
| | | this.searchList(); |
| | | }, |
| | | handleCurrentChange(val) { |
| | | this.page.current = val; |
| | | this.searchList(); |
| | | }, |
| | | getStatusType(status) { |
| | | switch (status) { |
| | | case "0": |
| | | return "warning"; |
| | | case "1": |
| | | return "success"; |
| | | case "2": |
| | | return "danger"; |
| | | default: |
| | | return "info"; |
| | | } |
| | | }, |
| | | getStatusText(status) { |
| | | switch (status) { |
| | | case "0": |
| | | return "å¾
å®¡æ ¸"; |
| | | case "1": |
| | | return "å·²éè¿"; |
| | | case "2": |
| | | return "已驳å"; |
| | | default: |
| | | return "æªç¥"; |
| | | } |
| | | }, |
| | | openAuditDia(row) { |
| | | this.auditForm = { |
| | | id: row.id, |
| | | status: "1", |
| | | opinion: "", |
| | | }; |
| | | this.auditVisible = true; |
| | | }, |
| | | submitAudit() { |
| | | this.submitLoading = true; |
| | | auditDefectiveProduct(this.auditForm).then((res) => { |
| | | if (res.code === 200) { |
| | | this.$message.success("å®¡æ ¸æå"); |
| | | this.auditVisible = false; |
| | | this.searchList(); |
| | | } else { |
| | | this.$message.error(res.msg || "å®¡æ ¸å¤±è´¥"); |
| | | } |
| | | this.submitLoading = false; |
| | | }).catch((err) => { |
| | | this.submitLoading = false; |
| | | console.error(err); |
| | | }); |
| | | }, |
| | | viewDetail(row) { |
| | | getDefectiveProduct({ id: row.id }).then((res) => { |
| | | this.detailData = res.data; |
| | | this.detailVisible = true; |
| | | }).catch((err) => { |
| | | console.error(err); |
| | | }); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .search-form { |
| | | margin-bottom: 15px; |
| | | } |
| | | |
| | | .dialog-footer { |
| | | text-align: right; |
| | | } |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <!-- æ¥è¯¢åºå --> |
| | | <div class="search-form"> |
| | | <el-form :model="searchForm" inline size="small"> |
| | | <el-form-item label="æ¥åç¼å·"> |
| | | <el-input v-model="searchForm.reportNo" placeholder="请è¾å
¥æ¥åç¼å·" clearable></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="产ååç§°"> |
| | | <el-input v-model="searchForm.productName" placeholder="请è¾å
¥äº§ååç§°" clearable></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç»è®°æ¶é´"> |
| | | <el-date-picker v-model="searchForm.registerDate" type="date" placeholder="éæ©æ¥æ" clearable></el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" @click="searchList">æ¥è¯¢</el-button> |
| | | <el-button @click="resetSearch">éç½®</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | |
| | | <!-- æä½æé® --> |
| | | <div class="btn-container"> |
| | | <el-button type="primary" icon="el-icon-plus" @click="openAddDia">æ°å¢ç»è®°</el-button> |
| | | <el-button type="danger" icon="el-icon-delete" @click="handleDelete" :disabled="selectedIds.length === 0">æ¹éå é¤</el-button> |
| | | </div> |
| | | |
| | | <!-- æ°æ®è¡¨æ ¼ --> |
| | | <el-table v-loading="tableLoading" :data="tableData" @selection-change="handleSelectionChange" border> |
| | | <el-table-column type="selection" width="55"></el-table-column> |
| | | <el-table-column label="æ¥åç¼å·" prop="reportNo" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="产ååç§°" prop="productName" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="è§æ ¼åå·" prop="specModel" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="ä¸åæ ¼æè¿°" prop="unqualifiedDesc" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="æ£éªäººå" prop="inspector" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="ç»è®°æ¶é´" prop="registerDate" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="ç¶æ" prop="status"> |
| | | <template slot-scope="scope"> |
| | | <el-tag :type="scope.row.status === '0' ? 'warning' : 'success'"> |
| | | {{ scope.row.status === '0' ? 'å¾
å®¡æ ¸' : 'å·²å®¡æ ¸' }} |
| | | </el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="æä½" width="180"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" @click="viewDetail(scope.row)">æ¥ç</el-button> |
| | | <el-button type="text" @click="openEditDia(scope.row)">ç¼è¾</el-button> |
| | | <el-button type="text" @click="handleSingleDelete(scope.row)">å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <!-- å页 --> |
| | | <el-pagination |
| | | :current-page="page.current" |
| | | :page-size="page.size" |
| | | :total="page.total" |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange" |
| | | layout="total, sizes, prev, pager, next, jumper"> |
| | | </el-pagination> |
| | | |
| | | <!-- æ°å¢/ç¼è¾å¼¹çª --> |
| | | <el-dialog :title="isEdit ? 'ç¼è¾ä¸è¯åç»è®°' : 'æ°å¢ä¸è¯åç»è®°'" :visible.sync="formVisible" width="500px"> |
| | | <el-form :model="formData" label-width="100px" size="small"> |
| | | <el-form-item label="æ¥åç¼å·" prop="reportNo"> |
| | | <el-input v-model="formData.reportNo" placeholder="请è¾å
¥æ¥åç¼å·"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="产ååç§°" prop="productName"> |
| | | <el-input v-model="formData.productName" placeholder="请è¾å
¥äº§ååç§°"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="è§æ ¼åå·" prop="specModel"> |
| | | <el-input v-model="formData.specModel" placeholder="请è¾å
¥è§æ ¼åå·"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç产åå®¶" prop="manufacturer"> |
| | | <el-input v-model="formData.manufacturer" placeholder="请è¾å
¥ç产åå®¶"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="åææä¿¡æ¯" prop="materialInfo"> |
| | | <el-input v-model="formData.materialInfo" placeholder="请è¾å
¥åææä¿¡æ¯"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ä¸åæ ¼æè¿°" prop="unqualifiedDesc"> |
| | | <el-textarea v-model="formData.unqualifiedDesc" :rows="3" placeholder="请è¾å
¥ä¸åæ ¼æè¿°"></el-textarea> |
| | | </el-form-item> |
| | | <el-form-item label="æ£éªäººå" prop="inspector"> |
| | | <el-input v-model="formData.inspector" placeholder="请è¾å
¥æ£éªäººå"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button @click="formVisible = false">åæ¶</el-button> |
| | | <el-button type="primary" @click="submitForm" :loading="submitLoading">ç¡®å®</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | |
| | | <!-- 详æ
å¼¹çª --> |
| | | <el-dialog title="ä¸è¯åç»è®°è¯¦æ
" :visible.sync="detailVisible" width="600px"> |
| | | <el-form :model="detailData" label-width="120px" size="small" disabled> |
| | | <el-form-item label="æ¥åç¼å·"> |
| | | <span>{{ detailData.reportNo }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="产ååç§°"> |
| | | <span>{{ detailData.productName }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="è§æ ¼åå·"> |
| | | <span>{{ detailData.specModel }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="ç产åå®¶"> |
| | | <span>{{ detailData.manufacturer }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="åææä¿¡æ¯"> |
| | | <span>{{ detailData.materialInfo }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="ä¸åæ ¼æè¿°"> |
| | | <span>{{ detailData.unqualifiedDesc }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="æ£éªäººå"> |
| | | <span>{{ detailData.inspector }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="ç»è®°æ¶é´"> |
| | | <span>{{ detailData.registerDate }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="å®¡æ ¸ç¶æ"> |
| | | <el-tag :type="detailData.status === '0' ? 'warning' : 'success'"> |
| | | {{ detailData.status === '0' ? 'å¾
å®¡æ ¸' : 'å·²å®¡æ ¸' }} |
| | | </el-tag> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button @click="detailVisible = false">å
³é</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | pageDefectiveProduct, |
| | | addDefectiveProduct, |
| | | updateDefectiveProduct, |
| | | deleteDefectiveProduct, |
| | | getDefectiveProduct, |
| | | } from "@/api/quality/defectiveProduct"; |
| | | |
| | | export default { |
| | | name: "DefectiveProduct", |
| | | data() { |
| | | return { |
| | | searchForm: { |
| | | reportNo: "", |
| | | productName: "", |
| | | registerDate: "", |
| | | }, |
| | | tableData: [], |
| | | tableLoading: false, |
| | | page: { |
| | | current: 1, |
| | | size: 20, |
| | | total: 0, |
| | | }, |
| | | selectedIds: [], |
| | | formVisible: false, |
| | | isEdit: false, |
| | | formData: { |
| | | id: null, |
| | | reportNo: "", |
| | | productName: "", |
| | | specModel: "", |
| | | manufacturer: "", |
| | | materialInfo: "", |
| | | unqualifiedDesc: "", |
| | | inspector: "", |
| | | }, |
| | | submitLoading: false, |
| | | detailVisible: false, |
| | | detailData: {}, |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.searchList(); |
| | | }, |
| | | methods: { |
| | | searchList() { |
| | | this.tableLoading = true; |
| | | pageDefectiveProduct({ |
| | | ...this.searchForm, |
| | | page: this.page.current, |
| | | size: this.page.size, |
| | | }).then((res) => { |
| | | this.tableData = res.data.records; |
| | | this.page.total = res.data.total; |
| | | this.tableLoading = false; |
| | | }).catch((err) => { |
| | | this.tableLoading = false; |
| | | console.error(err); |
| | | }); |
| | | }, |
| | | resetSearch() { |
| | | this.searchForm = { |
| | | reportNo: "", |
| | | productName: "", |
| | | registerDate: "", |
| | | }; |
| | | this.searchList(); |
| | | }, |
| | | handleSizeChange(val) { |
| | | this.page.size = val; |
| | | this.searchList(); |
| | | }, |
| | | handleCurrentChange(val) { |
| | | this.page.current = val; |
| | | this.searchList(); |
| | | }, |
| | | handleSelectionChange(val) { |
| | | this.selectedIds = val.map((item) => item.id); |
| | | }, |
| | | openAddDia() { |
| | | this.isEdit = false; |
| | | this.formData = { |
| | | id: null, |
| | | reportNo: "", |
| | | productName: "", |
| | | specModel: "", |
| | | manufacturer: "", |
| | | materialInfo: "", |
| | | unqualifiedDesc: "", |
| | | inspector: "", |
| | | }; |
| | | this.formVisible = true; |
| | | }, |
| | | openEditDia(row) { |
| | | this.isEdit = true; |
| | | this.formData = { ...row }; |
| | | this.formVisible = true; |
| | | }, |
| | | submitForm() { |
| | | if (!this.formData.reportNo) { |
| | | this.$message.error("请è¾å
¥æ¥åç¼å·"); |
| | | return; |
| | | } |
| | | if (!this.formData.productName) { |
| | | this.$message.error("请è¾å
¥äº§ååç§°"); |
| | | return; |
| | | } |
| | | this.submitLoading = true; |
| | | const api = this.isEdit ? updateDefectiveProduct : addDefectiveProduct; |
| | | api(this.formData).then((res) => { |
| | | if (res.code === 200) { |
| | | this.$message.success(this.isEdit ? "ä¿®æ¹æå" : "æ°å¢æå"); |
| | | this.formVisible = false; |
| | | this.searchList(); |
| | | } else { |
| | | this.$message.error(res.msg || "æä½å¤±è´¥"); |
| | | } |
| | | this.submitLoading = false; |
| | | }).catch((err) => { |
| | | this.submitLoading = false; |
| | | console.error(err); |
| | | }); |
| | | }, |
| | | viewDetail(row) { |
| | | getDefectiveProduct({ id: row.id }).then((res) => { |
| | | this.detailData = res.data; |
| | | this.detailVisible = true; |
| | | }).catch((err) => { |
| | | console.error(err); |
| | | }); |
| | | }, |
| | | handleDelete() { |
| | | this.$confirm("ç¡®å®å é¤éä¸çè®°å½åï¼", "æç¤º", { |
| | | type: "warning", |
| | | }).then(() => { |
| | | deleteDefectiveProduct({ ids: this.selectedIds.join(",") }).then((res) => { |
| | | if (res.code === 200) { |
| | | this.$message.success("å 餿å"); |
| | | this.searchList(); |
| | | } else { |
| | | this.$message.error(res.msg || "å é¤å¤±è´¥"); |
| | | } |
| | | }).catch((err) => { |
| | | console.error(err); |
| | | }); |
| | | }).catch(() => {}); |
| | | }, |
| | | handleSingleDelete(row) { |
| | | this.$confirm("ç¡®å®å é¤è¯¥è®°å½åï¼", "æç¤º", { |
| | | type: "warning", |
| | | }).then(() => { |
| | | deleteDefectiveProduct({ ids: row.id }).then((res) => { |
| | | if (res.code === 200) { |
| | | this.$message.success("å 餿å"); |
| | | this.searchList(); |
| | | } else { |
| | | this.$message.error(res.msg || "å é¤å¤±è´¥"); |
| | | } |
| | | }).catch((err) => { |
| | | console.error(err); |
| | | }); |
| | | }).catch(() => {}); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .search-form { |
| | | margin-bottom: 15px; |
| | | } |
| | | |
| | | .btn-container { |
| | | margin-bottom: 15px; |
| | | } |
| | | |
| | | .dialog-footer { |
| | | text-align: right; |
| | | } |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <!-- æ ç¾é¡µ --> |
| | | <el-tabs v-model="activeTab" type="card" @tab-click="handleTabClick"> |
| | | <el-tab-pane label="é«åçµåçµç¼" name="highVoltage"></el-tab-pane> |
| | | <el-tab-pane label="ä¸åçµåçµç¼" name="mediumVoltage"></el-tab-pane> |
| | | <el-tab-pane label="ä½å线ç¼" name="lowVoltage"></el-tab-pane> |
| | | <el-tab-pane label="主ç½å·å°çº¿" name="mainNetwork"></el-tab-pane> |
| | | <el-tab-pane label="é
ç½å·å°çº¿" name="distribution"></el-tab-pane> |
| | | <el-tab-pane label="å
ç¼" name="opticalFiber"></el-tab-pane> |
| | | <el-tab-pane label="OPGWå
ç¼" name="opgw"></el-tab-pane> |
| | | <el-tab-pane label="ADSSå
ç¼" name="adss"></el-tab-pane> |
| | | </el-tabs> |
| | | |
| | | <!-- æ¥è¯¢åºå --> |
| | | <div class="search-form"> |
| | | <el-form :model="searchForm" inline size="small"> |
| | | <el-form-item label="æ ·åç¼å·"> |
| | | <el-input v-model="searchForm.sampleCode" placeholder="请è¾å
¥æ ·åç¼å·" clearable></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="è¯éªç±»å"> |
| | | <el-input v-model="searchForm.testType" placeholder="请è¾å
¥è¯éªç±»å" clearable></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="è¯éªæ¶é´"> |
| | | <el-date-picker v-model="searchForm.testDate" type="date" placeholder="éæ©æ¥æ" clearable></el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" @click="searchList">æ¥è¯¢</el-button> |
| | | <el-button @click="resetSearch">éç½®</el-button> |
| | | <el-button type="success" @click="syncData">忥EIPæ°æ®</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | |
| | | <!-- æ°æ®è¡¨æ ¼ --> |
| | | <el-table v-loading="tableLoading" :data="tableData" border> |
| | | <el-table-column label="æ ·åç¼å·" prop="sampleCode" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="产ååç§°" prop="productName" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="è§æ ¼åå·" prop="specModel" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="è¯éªç±»å" prop="testType" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="è¯éªç»æ" prop="testResult" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="åææ" prop="rawMaterial" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="è¿ç¨æ£" prop="processInspection" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="æåæ£" prop="finalInspection" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="è¯éªæ¶é´" prop="testDate" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="æä½" width="100"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" @click="viewDetail(scope.row)">æ¥ç</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <!-- å页 --> |
| | | <el-pagination |
| | | :current-page="page.current" |
| | | :page-size="page.size" |
| | | :total="page.total" |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange" |
| | | layout="total, sizes, prev, pager, next, jumper"> |
| | | </el-pagination> |
| | | |
| | | <!-- 详æ
å¼¹çª --> |
| | | <el-dialog title="è¯éªæ°æ®è¯¦æ
" :visible.sync="detailVisible" width="600px"> |
| | | <el-form :model="detailData" label-width="120px" size="small" disabled> |
| | | <el-form-item label="æ ·åç¼å·"> |
| | | <span>{{ detailData.sampleCode }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="产ååç§°"> |
| | | <span>{{ detailData.productName }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="è§æ ¼åå·"> |
| | | <span>{{ detailData.specModel }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="è¯éªç±»å"> |
| | | <span>{{ detailData.testType }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="è¯éªç»æ"> |
| | | <span>{{ detailData.testResult }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="åææ"> |
| | | <span>{{ detailData.rawMaterial }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="è¿ç¨æ£"> |
| | | <span>{{ detailData.processInspection }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="æåæ£"> |
| | | <span>{{ detailData.finalInspection }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="è¯éªæ¶é´"> |
| | | <span>{{ detailData.testDate }}</span> |
| | | </el-form-item> |
| | | <el-form-item label="夿³¨"> |
| | | <span>{{ detailData.remark || "-" }}</span> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button @click="detailVisible = false">å
³é</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | pageHighVoltageCable, |
| | | pageMediumVoltageCable, |
| | | pageLowVoltageCable, |
| | | pageMainNetworkGroundWire, |
| | | pageDistributionGroundWire, |
| | | pageOpticalFiber, |
| | | pageOPGWOpticalFiber, |
| | | pageADSSOpticalFiber, |
| | | syncEIPData, |
| | | } from "@/api/quality/eipCable"; |
| | | |
| | | export default { |
| | | name: "EipCable", |
| | | data() { |
| | | return { |
| | | activeTab: "highVoltage", |
| | | searchForm: { |
| | | sampleCode: "", |
| | | testType: "", |
| | | testDate: "", |
| | | }, |
| | | tableData: [], |
| | | tableLoading: false, |
| | | page: { |
| | | current: 1, |
| | | size: 20, |
| | | total: 0, |
| | | }, |
| | | detailVisible: false, |
| | | detailData: {}, |
| | | syncLoading: false, |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.searchList(); |
| | | }, |
| | | methods: { |
| | | getApi() { |
| | | switch (this.activeTab) { |
| | | case "highVoltage": |
| | | return pageHighVoltageCable; |
| | | case "mediumVoltage": |
| | | return pageMediumVoltageCable; |
| | | case "lowVoltage": |
| | | return pageLowVoltageCable; |
| | | case "mainNetwork": |
| | | return pageMainNetworkGroundWire; |
| | | case "distribution": |
| | | return pageDistributionGroundWire; |
| | | case "opticalFiber": |
| | | return pageOpticalFiber; |
| | | case "opgw": |
| | | return pageOPGWOpticalFiber; |
| | | case "adss": |
| | | return pageADSSOpticalFiber; |
| | | default: |
| | | return pageHighVoltageCable; |
| | | } |
| | | }, |
| | | searchList() { |
| | | this.tableLoading = true; |
| | | const api = this.getApi(); |
| | | api({ |
| | | ...this.searchForm, |
| | | page: this.page.current, |
| | | size: this.page.size, |
| | | }).then((res) => { |
| | | this.tableData = res.data.records; |
| | | this.page.total = res.data.total; |
| | | this.tableLoading = false; |
| | | }).catch((err) => { |
| | | this.tableLoading = false; |
| | | console.error(err); |
| | | }); |
| | | }, |
| | | resetSearch() { |
| | | this.searchForm = { |
| | | sampleCode: "", |
| | | testType: "", |
| | | testDate: "", |
| | | }; |
| | | this.searchList(); |
| | | }, |
| | | handleTabClick() { |
| | | this.page.current = 1; |
| | | this.searchList(); |
| | | }, |
| | | handleSizeChange(val) { |
| | | this.page.size = val; |
| | | this.searchList(); |
| | | }, |
| | | handleCurrentChange(val) { |
| | | this.page.current = val; |
| | | this.searchList(); |
| | | }, |
| | | viewDetail(row) { |
| | | this.detailData = row; |
| | | this.detailVisible = true; |
| | | }, |
| | | syncData() { |
| | | this.syncLoading = true; |
| | | syncEIPData({ cableType: this.activeTab }).then((res) => { |
| | | if (res.code === 200) { |
| | | this.$message.success("忥æå"); |
| | | this.searchList(); |
| | | } else { |
| | | this.$message.error(res.msg || "åæ¥å¤±è´¥"); |
| | | } |
| | | this.syncLoading = false; |
| | | }).catch((err) => { |
| | | this.syncLoading = false; |
| | | console.error(err); |
| | | }); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .search-form { |
| | | margin-bottom: 15px; |
| | | } |
| | | |
| | | .dialog-footer { |
| | | text-align: right; |
| | | } |
| | | </style> |