Browse Source

2026-05-06

增加【外部链接】功能
master
fengyuan_yang 1 month ago
parent
commit
10351202d2
  1. 37
      src/views/modules/qc/FQCResultEntry.vue
  2. 37
      src/views/modules/qc/IPQCResultEntry.vue
  3. 37
      src/views/modules/qc/IQCResultEntry.vue
  4. 37
      src/views/modules/qc/OQCResultEntry.vue
  5. 25
      src/views/modules/qc/sopListComponent.vue
  6. 18
      src/views/modules/shopOrder/productionReport/searchSfdcRollsReport.vue
  7. 47
      src/views/modules/yieldReport/com_produce_report_normal.vue

37
src/views/modules/qc/FQCResultEntry.vue

@ -939,7 +939,11 @@
</el-dialog> </el-dialog>
<!-- 文件清单 --> <!-- 文件清单 -->
<el-dialog title="文件清单" :close-on-click-modal="false" v-drag :visible.sync="fileFlag" width="900px">
<el-dialog :close-on-click-modal="false" v-drag :visible.sync="fileFlag" width="900px">
<span slot="title" class="file-dialog-title">
<span>文件清单</span>
<a class="file-dialog-link" href="#" @click.prevent="openFileExternalLink">外部链接</a>
</span>
<el-tabs v-model="fileActiveTab" type="border-card"> <el-tabs v-model="fileActiveTab" type="border-card">
<el-tab-pane label="QC检验文件" name="qcFile"> <el-tab-pane label="QC检验文件" name="qcFile">
<el-form :inline="true" label-position="top" style="margin-bottom: 10px;"> <el-form :inline="true" label-position="top" style="margin-bottom: 10px;">
@ -3648,6 +3652,18 @@
this.fileFlag = true this.fileFlag = true
}, },
//
openFileExternalLink () {
const partNo = (this.currentFileRow && this.currentFileRow.partNo) || this.detailData.partNo
if (!partNo) {
this.$message.error('物料号不能为空')
return false
}
const baseUrl = window.SITE_CONFIG['processDataUrl'] || 'http://pdm.bt.in/#/public/processData'
const targetUrl = `${baseUrl}/${partNo}`
window.open(targetUrl, '_blank')
},
// SOPFQCsite, partNo, operationDesc, workcenterNo, orderNo // SOPFQCsite, partNo, operationDesc, workcenterNo, orderNo
getSopFileList(row) { getSopFileList(row) {
this.sopFileLoading = true this.sopFileLoading = true
@ -4678,6 +4694,25 @@
</script> </script>
<style scoped> <style scoped>
.file-dialog-title {
display: inline-flex;
align-items: center;
gap: 10px;
}
.file-dialog-link {
color: #17b3a3;
text-decoration: underline;
font-size: 13px;
cursor: pointer;
}
.file-dialog-link:visited,
.file-dialog-link:active,
.file-dialog-link:hover {
color: #17b3a3;
}
/* 搜索卡片样式 */ /* 搜索卡片样式 */
.search-card { .search-card {
margin-bottom: 16px; margin-bottom: 16px;

37
src/views/modules/qc/IPQCResultEntry.vue

@ -1051,7 +1051,11 @@
</el-dialog> </el-dialog>
<!-- 文件清单 --> <!-- 文件清单 -->
<el-dialog title="文件清单" :close-on-click-modal="false" v-drag :visible.sync="fileFlag" width="900px">
<el-dialog :close-on-click-modal="false" v-drag :visible.sync="fileFlag" width="900px">
<span slot="title" class="file-dialog-title">
<span>文件清单</span>
<a class="file-dialog-link" href="#" @click.prevent="openFileExternalLink">外部链接</a>
</span>
<el-tabs v-model="fileActiveTab" type="border-card"> <el-tabs v-model="fileActiveTab" type="border-card">
<!-- QC检验文件标签页 --> <!-- QC检验文件标签页 -->
<el-tab-pane label="QC检验文件" name="qcFile"> <el-tab-pane label="QC检验文件" name="qcFile">
@ -3612,6 +3616,18 @@
this.fileFlag = true this.fileFlag = true
}, },
//
openFileExternalLink () {
const partNo = (this.currentFileRow && this.currentFileRow.partNo) || this.detailData.partNo
if (!partNo) {
this.$message.error('物料号不能为空')
return false
}
const baseUrl = window.SITE_CONFIG['processDataUrl'] || 'http://pdm.bt.in/#/public/processData'
const targetUrl = `${baseUrl}/${partNo}`
window.open(targetUrl, '_blank')
},
// SOPIPQCsite, partNo, operationDesc, workcenterNo, orderNo // SOPIPQCsite, partNo, operationDesc, workcenterNo, orderNo
getSopFileList(row) { getSopFileList(row) {
this.sopFileLoading = true this.sopFileLoading = true
@ -5062,6 +5078,25 @@
<!--</style>--> <!--</style>-->
<style scoped> <style scoped>
.file-dialog-title {
display: inline-flex;
align-items: center;
gap: 10px;
}
.file-dialog-link {
color: #17b3a3;
text-decoration: underline;
font-size: 13px;
cursor: pointer;
}
.file-dialog-link:visited,
.file-dialog-link:active,
.file-dialog-link:hover {
color: #17b3a3;
}
/* 搜索卡片样式 */ /* 搜索卡片样式 */
.search-card { .search-card {
margin-bottom: 16px; margin-bottom: 16px;

37
src/views/modules/qc/IQCResultEntry.vue

@ -684,7 +684,11 @@
</el-dialog> </el-dialog>
<!-- 文件清单 --> <!-- 文件清单 -->
<el-dialog title="文件清单" :close-on-click-modal="false" v-drag :visible.sync="fileFlag" width="900px">
<el-dialog :close-on-click-modal="false" v-drag :visible.sync="fileFlag" width="900px">
<span slot="title" class="file-dialog-title">
<span>文件清单</span>
<a class="file-dialog-link" href="#" @click.prevent="openFileExternalLink">外部链接</a>
</span>
<el-tabs v-model="fileActiveTab" type="border-card"> <el-tabs v-model="fileActiveTab" type="border-card">
<!-- QC检验文件标签页 --> <!-- QC检验文件标签页 -->
<el-tab-pane label="QC检验文件" name="qcFile"> <el-tab-pane label="QC检验文件" name="qcFile">
@ -2823,6 +2827,18 @@
this.fileFlag = true this.fileFlag = true
}, },
//
openFileExternalLink () {
const partNo = (this.currentFileRow && this.currentFileRow.partNo) || this.detailData.partNo
if (!partNo) {
this.$message.error('物料号不能为空')
return false
}
const baseUrl = window.SITE_CONFIG['processDataUrl'] || 'http://pdm.bt.in/#/public/processData'
const targetUrl = `${baseUrl}/${partNo}`
window.open(targetUrl, '_blank')
},
// SOPIQCsitepartNo // SOPIQCsitepartNo
getSopFileList(row) { getSopFileList(row) {
this.sopFileLoading = true this.sopFileLoading = true
@ -3942,6 +3958,25 @@
</script> </script>
<style scoped> <style scoped>
.file-dialog-title {
display: inline-flex;
align-items: center;
gap: 10px;
}
.file-dialog-link {
color: #17b3a3;
text-decoration: underline;
font-size: 13px;
cursor: pointer;
}
.file-dialog-link:visited,
.file-dialog-link:active,
.file-dialog-link:hover {
color: #17b3a3;
}
/* 搜索卡片样式 */ /* 搜索卡片样式 */
.search-card { .search-card {
margin-bottom: 16px; margin-bottom: 16px;

37
src/views/modules/qc/OQCResultEntry.vue

@ -620,7 +620,11 @@
</el-dialog> </el-dialog>
<!-- 文件清单 --> <!-- 文件清单 -->
<el-dialog title="文件清单" :close-on-click-modal="false" v-drag :visible.sync="fileFlag" width="900px">
<el-dialog :close-on-click-modal="false" v-drag :visible.sync="fileFlag" width="900px">
<span slot="title" class="file-dialog-title">
<span>文件清单</span>
<a class="file-dialog-link" href="#" @click.prevent="openFileExternalLink">外部链接</a>
</span>
<el-tabs v-model="fileActiveTab" type="border-card"> <el-tabs v-model="fileActiveTab" type="border-card">
<el-tab-pane label="QC检验文件" name="qcFile"> <el-tab-pane label="QC检验文件" name="qcFile">
<el-form :inline="true" label-position="top" style="margin-bottom: 10px;"> <el-form :inline="true" label-position="top" style="margin-bottom: 10px;">
@ -2482,6 +2486,18 @@
this.fileFlag = true this.fileFlag = true
}, },
//
openFileExternalLink () {
const partNo = (this.currentFileRow && this.currentFileRow.partNo) || this.detailData.partNo
if (!partNo) {
this.$message.error('物料号不能为空')
return false
}
const baseUrl = window.SITE_CONFIG['processDataUrl'] || 'http://pdm.bt.in/#/public/processData'
const targetUrl = `${baseUrl}/${partNo}`
window.open(targetUrl, '_blank')
},
// SOPOQCsitepartNoorderNo // SOPOQCsitepartNoorderNo
getSopFileList(row) { getSopFileList(row) {
this.sopFileLoading = true this.sopFileLoading = true
@ -3622,6 +3638,25 @@
</script> </script>
<style scoped> <style scoped>
.file-dialog-title {
display: inline-flex;
align-items: center;
gap: 10px;
}
.file-dialog-link {
color: #17b3a3;
text-decoration: underline;
font-size: 13px;
cursor: pointer;
}
.file-dialog-link:visited,
.file-dialog-link:active,
.file-dialog-link:hover {
color: #17b3a3;
}
/* 搜索卡片样式 */ /* 搜索卡片样式 */
.search-card { .search-card {
margin-bottom: 16px; margin-bottom: 16px;

25
src/views/modules/qc/sopListComponent.vue

@ -4,6 +4,7 @@
<el-form-item> <el-form-item>
<el-button @click="fileLibraryHandle()">从文件库添加</el-button> <el-button @click="fileLibraryHandle()">从文件库添加</el-button>
<el-button type="danger" @click="batchDeleteHandle()" :disabled="dataListSelections.length === 0" :loading="deleteLoading">删除</el-button> <el-button type="danger" @click="batchDeleteHandle()" :disabled="dataListSelections.length === 0" :loading="deleteLoading">删除</el-button>
<a class="sop-external-link" href="#" @click.prevent="openExternalLink">外部链接</a>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -228,6 +229,16 @@ export default {
this.$refs.sopFileUpload.init(this.partNo, this.site, this.buNo) this.$refs.sopFileUpload.init(this.partNo, this.site, this.buNo)
}) })
}, },
//
openExternalLink () {
if (!this.partNo) {
this.$message.warning('请先选择物料')
return false
}
const baseUrl = window.SITE_CONFIG['processDataUrl'] || 'http://pdm.bt.in/#/public/processData'
const targetUrl = `${baseUrl}/${this.partNo}`
window.open(targetUrl, '_blank')
},
// //
previewHandle (row) { previewHandle (row) {
if (!row.sopUrl) { if (!row.sopUrl) {
@ -293,4 +304,18 @@ export default {
.sop-list-component { .sop-list-component {
padding: 10px; padding: 10px;
} }
.sop-external-link {
margin-left: 10px;
color: #17b3a3;
text-decoration: underline;
font-size: 13px;
cursor: pointer;
}
.sop-external-link:visited,
.sop-external-link:active,
.sop-external-link:hover {
color: #17b3a3;
}
</style> </style>

18
src/views/modules/shopOrder/productionReport/searchSfdcRollsReport.vue

@ -1270,10 +1270,20 @@ import labelPrintTemplates from '@/mixins/labelPrintTemplates.js';
this.getData(); this.getData();
}, },
//excel //excel
createExportData() {
return this.dataList;
async createExportData() {
try {
const params = {
...this.searchData,
page: 0,
limit: 1000000
};
const { data } = await searchSfdcRollsReport(params);
return data.rows || [];
} catch (error) {
console.error('获取导出数据失败:', error);
this.$message.error('获取导出数据失败!');
return [];
}
}, },
selectionChangeHandle(val){ selectionChangeHandle(val){
this.selectionDataList = val this.selectionDataList = val

47
src/views/modules/yieldReport/com_produce_report_normal.vue

@ -823,7 +823,13 @@
<ComMrbRegister ref="comMrbRegister" :visible.sync="showMrbRegisterFlag" @confirmed="onMrbConfirmed"></ComMrbRegister> <ComMrbRegister ref="comMrbRegister" :visible.sync="showMrbRegisterFlag" @confirmed="onMrbConfirmed"></ComMrbRegister>
<!-- SOP预览弹出框 --> <!-- SOP预览弹出框 -->
<el-dialog title="SOP预览" :visible.sync="showSopPreviewFlag" width="50%" top="5vh" :before-close="closeSopPreview">
<el-dialog :visible.sync="showSopPreviewFlag" width="50%" top="5vh" :before-close="closeSopPreview">
<span slot="title" class="sop-preview-title">
<span>SOP预览</span>
<a class="sop-preview-link" href="#" @click.prevent="openSopExternalLink">
外部链接
</a>
</span>
<div class="sop-preview-content"> <div class="sop-preview-content">
<el-table <el-table
:data="sopPreviewList" :data="sopPreviewList"
@ -5575,6 +5581,23 @@ export default {
window.open(targetUrl, '_blank'); window.open(targetUrl, '_blank');
}, },
// SOP
openSopExternalLink() {
const partNo = this.scheduleData.partNo;
if (!partNo) {
this.$message.error('物料号不能为空');
return false;
}
// URL
const baseUrl = window.SITE_CONFIG['processDataUrl'] || 'http://pdm.bt.in/#/public/processData';
const targetUrl = `${baseUrl}/${partNo}`;
//
window.open(targetUrl, '_blank');
},
// SOP // SOP
// SOP // SOP
sopPreviewModal() { sopPreviewModal() {
@ -5763,6 +5786,28 @@ export default {
color: #387877; color: #387877;
} }
.sop-preview-title {
display: inline-flex;
align-items: center;
gap: 10px;
}
.sop-preview-link {
color: #17b3a3;
text-decoration: underline;
font-size: 13px;
cursor: pointer;
}
.sop-preview-link:visited,
.sop-preview-link:active {
color: #17b3a3;
}
.sop-preview-link:hover {
color: #17b3a3;
}
/*定制组件的样式*/ /*定制组件的样式*/
.customer-css /deep/ .el-dialog { .customer-css /deep/ .el-dialog {
top: 3vh !important; top: 3vh !important;

Loading…
Cancel
Save