From 7eb190f13437b2e67788e9f4bdea725fdb165f01 Mon Sep 17 00:00:00 2001
From: zhuo <2089219845@qq.com>
Date: 星期二, 20 五月 2025 10:41:01 +0800
Subject: [PATCH] 代码合并
---
src/components/Table/lims-table.vue | 3
src/views/CNAS/process/ensureResults/ensureResultsValidity/index.vue | 26 ++
src/views/CNAS/resourceDemand/device/index.vue | 24 ++
src/api/cnas/process/ensureResults/managementReview.js | 36 +++
src/views/CNAS/resourceDemand/device/component/management.vue | 20 +
src/views/structural/capabilityAndLaboratory/capabilityComponents/EditForm.vue | 17 +
src/api/cnas/process/reportResults.js | 1
src/layout/components/TagsView/index.vue | 6
src/views/CNAS/process/reportResults/index.vue | 45 +---
src/views/business/inspectionTask/inspection.vue | 13 +
src/views/business/productOrder/index.vue | 28 +
src/views/business/materialOrder/customsInspectionOrder.vue | 10
src/views/business/productOrder/components/addOrder.vue | 89 +++++--
src/views/CNAS/resourceDemand/device/component/record.vue | 10
src/views/CNAS/process/ensureResults/managementReview/index.vue | 284 +++++++++++++++++++++++++
src/components/Preview/filePreview.vue | 14
src/api/business/add.js | 8
17 files changed, 539 insertions(+), 95 deletions(-)
diff --git a/src/api/business/add.js b/src/api/business/add.js
index 68389df..053a9cf 100644
--- a/src/api/business/add.js
+++ b/src/api/business/add.js
@@ -16,6 +16,14 @@
data: query
})
}
+// 妫�楠岀被鍒负鎶芥鏃舵帀鎺ュ彛
+export function judgeNotSpotCheckOrder(query) {
+ return request({
+ url: '/insOrder/judgeNotSpotCheckOrder',
+ method: 'post',
+ data: query
+ })
+}
// 娣诲姞妫�楠屼笅鍗曟暟鎹�
export function addInsOrder(query) {
return request({
diff --git a/src/api/cnas/process/ensureResults/managementReview.js b/src/api/cnas/process/ensureResults/managementReview.js
new file mode 100644
index 0000000..35449f4
--- /dev/null
+++ b/src/api/cnas/process/ensureResults/managementReview.js
@@ -0,0 +1,36 @@
+//璐ㄩ噺鐩戠潱绠$悊璇勫杈撳叆鏉愭枡鐩稿叧鎺ュ彛
+import request from '@/utils/request'
+
+// 鍒嗛〉鏌ヨ
+export function pageManagementReview(query) {
+ return request({
+ url: '/managementReview/pageManagementReview',
+ method: 'get',
+ params: query
+ })
+}
+// 瀵煎嚭
+export function exportManagementReview(query) {
+ return request({
+ url: '/managementReview/exportManagementReview',
+ method: 'get',
+ params: query,
+ responseType: 'blob'
+ })
+}
+// 鍒犻櫎
+export function deleteManagementReview(query) {
+ return request({
+ url: '/managementReview/deleteManagementReview',
+ method: 'delete',
+ params: query
+ })
+}
+// 鏂板淇敼鎻愪氦
+export function saveOrUpdateManagementReview(query) {
+ return request({
+ url: '/managementReview/saveOrUpdateManagementReview',
+ method: 'post',
+ data: query
+ })
+}
diff --git a/src/api/cnas/process/reportResults.js b/src/api/cnas/process/reportResults.js
index 0dbeb96..1b1011f 100644
--- a/src/api/cnas/process/reportResults.js
+++ b/src/api/cnas/process/reportResults.js
@@ -7,6 +7,7 @@
url: "/processReport/exportProcessReport",
method: "get",
params: data,
+ responseType: "blob",
});
}
diff --git a/src/components/Preview/filePreview.vue b/src/components/Preview/filePreview.vue
index 7633c5e..aedb375 100644
--- a/src/components/Preview/filePreview.vue
+++ b/src/components/Preview/filePreview.vue
@@ -3,10 +3,11 @@
<div v-if="isImage">
<img :src="imgUrl" alt="Image Preview" />
</div>
- <div v-if="isPdf">
- <object :data="fileUrl" type="application/pdf" width="100%" height="750px">
- <p>鎮ㄧ殑娴忚鍣ㄤ笉鏀寔 PDF 棰勮銆�<a :href="fileUrl" style="color: #3a7bfa;" target="_blank">涓嬭浇 PDF 鏂囦欢</a></p>
- </object>
+ <div v-if="isPdf" style="height: 80vh;">
+<!-- <object :data="fileUrl" type="application/pdf" width="100%" height="750px">-->
+<!-- <p>鎮ㄧ殑娴忚鍣ㄤ笉鏀寔 PDF 棰勮銆�<a :href="fileUrl" style="color: #3a7bfa;" target="_blank">涓嬭浇 PDF 鏂囦欢</a></p>-->
+<!-- </object>-->
+ <onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" />
</div>
<div v-if="isDoc">
<p v-if="!isDocShow">鏂囨。鏃犳硶鐩存帴棰勮锛岃涓嬭浇鏌ョ湅銆�</p>
@@ -58,8 +59,10 @@
import VueOfficeExcel from '@vue-office/excel'
//寮曞叆鐩稿叧鏍峰紡
import '@vue-office/excel/lib/index.css'
+import onlyoffice from "@/components/Onlyoffice/onlyoffice.vue";
export default {
components: {
+ onlyoffice,
VueOfficeDocx,
VueOfficeExcel,
},
@@ -72,6 +75,9 @@
type: Object,
required: true
},
+ option: {
+ type: Object,
+ },
},
data() {
return {
diff --git a/src/components/Table/lims-table.vue b/src/components/Table/lims-table.vue
index 2df0ddc..1f4e431 100644
--- a/src/components/Table/lims-table.vue
+++ b/src/components/Table/lims-table.vue
@@ -505,4 +505,7 @@
.lims-table .highlight-danger-row-border td:last-child {
border-right: 4px solid #f56c6c;
}
+>>>.red-row td {
+ background: #FFCCCC !important;
+}
</style>
diff --git a/src/layout/components/TagsView/index.vue b/src/layout/components/TagsView/index.vue
index 73d03a4..3b014fb 100644
--- a/src/layout/components/TagsView/index.vue
+++ b/src/layout/components/TagsView/index.vue
@@ -168,7 +168,11 @@
closeSelectedTag(view) {
this.$tab.closePage(view).then(({ visitedViews }) => {
if (this.isActive(view)) {
- this.toLastView(visitedViews, view)
+ if (view.fullPath.includes('/materialOrder/customsInspectionOrder') || view.fullPath.includes('/materialOrder/customsInspectionView')) {
+ this.$router.push('/business/materialOrder')
+ } else {
+ this.toLastView(visitedViews, view)
+ }
}
})
},
diff --git a/src/views/CNAS/process/ensureResults/ensureResultsValidity/index.vue b/src/views/CNAS/process/ensureResults/ensureResultsValidity/index.vue
index efd399a..0ae1168 100644
--- a/src/views/CNAS/process/ensureResults/ensureResultsValidity/index.vue
+++ b/src/views/CNAS/process/ensureResults/ensureResultsValidity/index.vue
@@ -85,7 +85,7 @@
</el-dialog>
<!--棰勮鎶ュ憡-->
<el-dialog :visible.sync="lookDialogVisible" fullscreen title="鏌ョ湅闄勪欢" top="5vh" width="800px">
- <filePreview v-if="lookDialogVisible" :currentFile="{}"
+ <filePreview v-if="lookDialogVisible" :currentFile="{}" :option="option"
:fileUrl="javaApi + '/word/' + currentInfo.finishReportUrl" style="height: 70vh;overflow-y: auto;" />
<div>
鎵瑰噯鐘舵�侊細
@@ -153,7 +153,7 @@
<div style="margin: 0 auto;">
<el-upload ref="upload1" :action="action1" :auto-upload="false"
:data="{ qualityMonitorDetailsId: qualityMonitorDetailsId }" :file-list="fileList1" :headers="uploadHeader"
- :limit="1" :on-change="beforeUpload1" :on-error="onError1" :on-success="onSuccess1" accept='.doc,.docx' drag
+ :limit="1" :on-change="beforeUpload1" :on-error="onError1" :on-success="onSuccess1" accept='.doc,.docx,application/pdf,' drag
name="file">
<i class="el-icon-upload"></i>
<div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div>
@@ -569,7 +569,8 @@
ratifyRemark: '',
downloadDialog: false,
download: {},
- planYear: ''
+ planYear: '',
+ option: {}
};
},
mounted() {
@@ -802,6 +803,23 @@
if (row.finishReportUrl) {
this.currentInfo = row
this.ratifyStatus = row.ratifyStatus
+ const userName = this.nickName
+ const isPdf = /\.pdf$/i.test(row.finishReportUrl)
+ if (isPdf) {
+ this.option = {
+ url: this.javaApi + "/word/" + row.finishReportUrl,
+ isEdit: false,
+ fileType: 'pdf',
+ title: '鎶ュ憡',
+ lang: 'zh-CN',
+ isPrint: false,
+ user_id: 1,
+ user_name: userName,
+ editUrl: this.javaApi + "/insReport/onlyOffice/save?fileName=" + row.finishReportUrl
+ }
+ } else {
+ this.option = {}
+ }
this.lookDialogVisible = true
} else {
this.uploadDia1 = true
@@ -935,7 +953,7 @@
},
// 鐢ㄤ簬涓婁紶鏂囦欢鐨勪俊鎭�
computed: {
- ...mapGetters(["userId"]),
+ ...mapGetters(["userId", "nickName"]),
action() {
return this.javaApi + '/qualityMonitor/importQualityMonitor'
},
diff --git a/src/views/CNAS/process/ensureResults/managementReview/index.vue b/src/views/CNAS/process/ensureResults/managementReview/index.vue
new file mode 100644
index 0000000..9e7a2a9
--- /dev/null
+++ b/src/views/CNAS/process/ensureResults/managementReview/index.vue
@@ -0,0 +1,284 @@
+<template>
+ <div class="capacity-scope">
+ <div style="display: flex;justify-content: space-between">
+ <div style="display: flex;">
+ <div style="margin-bottom: 18px;margin-right: 10px;display: flex;align-items: center;line-height: 32px;">
+ <span style="width: 88px;font-size: 14px;font-weight: 700;color: #606266;">鏂囦欢鍚嶇О</span>
+ <el-input v-model="queryParams.fileName" clearable placeholder="璇疯緭鍏�" size="small"
+ @keyup.enter.native="refreshTable()"></el-input>
+ </div>
+ <div style="line-height: 30px;">
+ <el-button type="primary" size="mini" @click="refreshTable">鏌ヨ</el-button>
+ <el-button size="mini" @click="refresh">閲嶇疆</el-button>
+ </div>
+ </div>
+ <div style="line-height: 30px;">
+ <el-button :loading="outLoading" size="small" type="primary" style="margin-right: 10px" @click="openForm('add')">鏂板</el-button>
+ </div>
+ </div>
+ <div class="table">
+ <lims-table :tableData="tableData" :column="column" :tableLoading="tableLoading" :height="'calc(100vh - 270px)'"
+ :page="page" @pagination="pagination"></lims-table>
+ </div>
+ <el-dialog :visible.sync="addDialogVisible" title="璇勪环" width="900px" @close="closeDia">
+ <el-form ref="form" :model="form" label-position="right" label-width="120px" :rules="formRules">
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="鏂囦欢鍚嶇О:" prop="fileName">
+ <el-input v-model="form.fileName" placeholder="璇疯緭鍏�" size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="璁″垝鍐呭:" prop="implementationContent">
+ <el-input v-model="form.implementationContent" placeholder="璇疯緭鍏�"
+ size="small"
+ :rows="6"
+ type="textarea"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="鍔ㄦ�佸唴瀹�:" prop="dynamicContent">
+ <el-input v-model="form.dynamicContent" placeholder="璇疯緭鍏�"
+ size="small"
+ :rows="6"
+ type="textarea"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="鐩戠潱浜�:" prop="supervisor">
+ <el-select v-model="form.supervisor"
+ clearable filterable
+ placeholder="璇烽�夋嫨" size="small" style="width: 100%;">
+ <el-option v-for="item in responsibleOptions" :key="item.name" :label="item.name" :value="item.name">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="璐ㄩ噺璇勫鏃ユ湡:" prop="superviseDate">
+ <el-date-picker v-model="form.superviseDate" format="yyyy-MM-dd"
+ placeholder="閫夋嫨鏃ユ湡" size="small" value-format="yyyy-MM-dd"
+ type="date" style="width: 100%"></el-date-picker>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="closeDia">鍙� 娑�</el-button>
+ <el-button :loading="addLoading" type="primary" @click="handleAdd">纭� 瀹�</el-button>
+ </span>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import limsTable from "@/components/Table/lims-table.vue";
+import filePreview from "@/components/Preview/filePreview.vue";
+import {
+ exportProcessEvaluate,
+ doProcessEvaluate,
+ delProcessEvaluate,
+ pageProcessEvaluate,
+} from '@/api/cnas/process/uncertainty.js'
+import { mapGetters } from "vuex";
+import {
+ deleteManagementReview,
+ exportManagementReview,
+ pageManagementReview, saveOrUpdateManagementReview
+} from "@/api/cnas/process/ensureResults/managementReview";
+import {selectUserCondition} from "@/api/cnas/resourceDemand/facilitiesEnvironment/facilitiesAndEnvironment";
+export default {
+ name: 'Uncertainty',
+ components: {
+ limsTable,
+ filePreview
+ },
+ data() {
+ return {
+ addPower: false,
+ outPower: false,
+ outLoading: false,
+ addDialogVisible: false,
+ operationType: '',
+ addInfo: {},
+ addLoading: false,
+ queryParams: {},
+ tableData: [],
+ column: [
+ { label: "鏂囦欢鍚嶇О", prop: "fileName" },
+ { label: "鐩戠潱浜�", prop: "supervisor" },
+ { label: "璐ㄩ噺璇勫鏃ユ湡", prop: "superviseDate" },
+ {
+ dataType: "action",
+ label: "鎿嶄綔",
+ operation: [
+ {
+ name: "缂栬緫",
+ type: "text",
+ clickFun: (row) => {
+ this.openForm('edit', row);
+ },
+ },
+ {
+ name: "鍒犻櫎",
+ type: "text",
+ clickFun: (row) => {
+ this.handleDelete(row);
+ },
+ },
+ {
+ name: "瀵煎嚭",
+ type: "text",
+ clickFun: (row) => {
+ this.handleDown0(row);
+ },
+ },
+ ],
+ },
+ ],
+ page: {
+ total: 0,
+ size: 10,
+ current: 0,
+ },
+ tableLoading: false,
+ form: {
+ fileName: '',
+ implementationContent: '',
+ dynamicContent: '',
+ supervisor: '',
+ superviseDate: '',
+ },
+ formRules: {
+ fileName: [{required: true, message: '璇峰~鍐欐枃浠跺悕绉�',trigger: 'blur'}],
+ implementationContent: [{required: true, message: '璇峰~鍐欒鍒掑唴瀹�',trigger: 'blur'}],
+ dynamicContent: [{required: true, message: '璇峰~鍔ㄦ�佸唴瀹�',trigger: 'blur'}],
+ supervisor: [{required: true, message: '璇烽�夋嫨鐩戠潱浜�',trigger: 'change'}],
+ superviseDate: [{required: true, message: '璇烽�夋嫨鏃ユ湡',trigger: 'change'}],
+ },
+ responsibleOptions: [],
+ }
+ },
+ // 鐢ㄤ簬涓婁紶鏂囦欢鐨勪俊鎭�
+ computed: {
+ ...mapGetters(["userId"]),
+ },
+ mounted() {
+ this.getList()
+ },
+ methods: {
+ getList() {
+ this.tableLoading = true;
+ let param = { ...this.queryParams, ...this.page };
+ delete param.total;
+ pageManagementReview({ ...param })
+ .then((res) => {
+ this.tableLoading = false;
+ if (res.code === 200) {
+ this.tableData = res.data.records;
+ this.page.total = res.data.total;
+ }
+ })
+ .catch((err) => {
+ this.tableLoading = false;
+ });
+ },
+ pagination({ page, limit }) {
+ this.page.current = page;
+ this.page.size = limit;
+ this.getList();
+ },
+ refresh() {
+ this.queryParams = {};
+ this.page.current = 1;
+ this.getList();
+ },
+ refreshTable() {
+ this.page.current = 1;
+ this.getList();
+ },
+ handleDown0(row) {
+ exportManagementReview({managementReviewId: row.managementReviewId}).then(res => {
+ const blob = new Blob([res], { type: 'application/msword' });
+ this.$download.saveAs(blob, row.fileName + '.docx');
+ })
+ },
+ // 鎵撳紑鏂板缂栬緫寮规
+ openForm (type, row) {
+ this.addDialogVisible = true;
+ this.$nextTick(() => {
+ this.form = {}
+ this.$refs['form'].resetFields();
+ if (type === 'edit') {
+ this.form = {...row}
+ }
+ this.operationType = type;
+ this.getUserList()
+ })
+ },
+ // 鎻愪氦琛ㄥ崟
+ handleAdd() {
+ this.addLoading = true;
+ saveOrUpdateManagementReview(this.form).then((res) => {
+ this.addLoading = false;
+ this.$message.success('璇勪环鎴愬姛');
+ this.closeDia();
+ this.refreshTable()
+ })
+ },
+ closeDia() {
+ this.$refs['form'].resetFields();
+ this.addDialogVisible = false;
+ },
+ handleDelete(row) {
+ this.$confirm("鏄惁鍒犻櫎璇ユ潯鏁版嵁?", "鎻愮ず", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning",
+ }).then(() => {
+ deleteManagementReview({ managementReviewId: row.managementReviewId }).then((res) => {
+ this.$message.success("鍒犻櫎鎴愬姛");
+ this.refresh();
+ });
+ }).catch(() => { });
+ },
+ getUserList(){
+ selectUserCondition({type: 2}).then(res => {
+ if (res.code == 200) {
+ this.responsibleOptions = res.data
+ }
+ })
+ },
+ }
+}
+</script>
+
+<style scoped>
+.search {
+ height: 46px;
+ display: flex;
+ justify-content: space-between;
+}
+
+.search_thing {
+ width: 350px;
+ display: flex;
+ align-items: center;
+}
+
+.search_label {
+ width: 80px;
+ font-size: 14px;
+ text-align: right;
+}
+
+.search_input {
+ width: calc(100% - 80px);
+}
+</style>
diff --git a/src/views/CNAS/process/reportResults/index.vue b/src/views/CNAS/process/reportResults/index.vue
index 81566bd..88b1c7c 100644
--- a/src/views/CNAS/process/reportResults/index.vue
+++ b/src/views/CNAS/process/reportResults/index.vue
@@ -19,8 +19,7 @@
</div>
<div class="table">
<lims-table :tableData="tableData" :column="column" :tableLoading="tableLoading" :height="'calc(100vh - 270px)'"
- :page="page" @pagination="pagination" :isSelection="true"
- :handleSelectionChange="handleSelectionChange"></lims-table>
+ :page="page" @pagination="pagination"></lims-table>
</div>
<el-dialog :title="title" :visible.sync="addDialogVisible" width="400px" top="6vh">
<el-row>
@@ -83,12 +82,8 @@
<el-col :span="24" style="margin-bottom: 16px;">
<div class="search_thing">
<div class="search_label">绛炬敹浜猴細</div>
- <div class="search_input">
- <el-select v-model="addInfo.signatory" placeholder="璇烽�夋嫨" size="small" style="width: 100%;" multiple>
- <el-option v-for="item in personList" :key="item.value" :label="item.label" :value="item.value">
- </el-option>
- </el-select>
- </div>
+ <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable
+ v-model="addInfo.signatory"></el-input></div>
</div>
</el-col>
<el-col :span="24" style="margin-bottom: 16px;">
@@ -132,11 +127,8 @@
personList: [],
title: '鏂板',
addDialogVisible: false,
- addInfo: {
- signatory: []
- },
+ addInfo: {},
addLoading: false,
- mutilSelect: [],
queryParams: {
insReportCode: ''
},
@@ -152,7 +144,7 @@
{ label: "鍙戦�佹柟寮�", prop: "method" },
{ label: "鍙戦�佹棩鏈�", prop: "sendTime" },
{ label: "鍙戦�佷汉", prop: "sendUserName" },
- { label: "绛炬敹浜�", prop: "signatoryName" },
+ { label: "绛炬敹浜�", prop: "signatory" },
{ label: "澶囨敞", prop: "remark" },
{
dataType: "action",
@@ -191,21 +183,16 @@
},
methods: {
handleDown() {
- if (this.mutilSelect.length == 0) {
- this.$message.warning('璇烽�夋嫨瑕佸鍑虹殑鏁版嵁')
- return
- }
this.outLoading = true
- exportProcessReport({ ids: this.mutilSelect.map(m => m.id) }).then(res => {
+ exportProcessReport(this.queryParams).then(res => {
this.outLoading = false
- this.$download.saveAs(res.data, "鎶ュ憡缁撴灉");
+ const blob = new Blob([res], { type: 'application/msword' });
+ this.$download.saveAs(blob, '鎶ュ憡缁撴灉' + '.docx');
})
},
openAdd() {
this.title = '鏂板'
- this.addInfo = {
- signatory: []
- }
+ this.addInfo = {}
this.addDialogVisible = true;
},
getList() {
@@ -238,9 +225,6 @@
this.page.current = 1;
this.getList();
},
- handleSelectionChange(val) {
- this.mutilSelect = val
- },
getAuthorizedPerson() {
selectUserCondition().then(res => {
let data = []
@@ -258,13 +242,10 @@
delete this.addInfo.createTime
delete this.addInfo.createUser
delete this.addInfo.updateTime
- delete this.addInfo.signatoryUrl
delete this.addInfo.updateUserer
delete this.addInfo.sendUserName
- let addInfo = this.HaveJson(this.addInfo)
- addInfo.signatory = addInfo.signatory.join(',')
if (this.title == '鏂板') {
- addProcessReport(addInfo).then(res => {
+ addProcessReport(this.addInfo).then(res => {
this.addLoading = false
this.addDialogVisible = false
this.$message({
@@ -274,7 +255,7 @@
this.refreshTable()
}).catch(err => { })
} else {
- doProcessReport(addInfo).then(res => {
+ doProcessReport(this.addInfo).then(res => {
this.addLoading = false
this.addDialogVisible = false
this.$message({
@@ -289,11 +270,7 @@
this.title = '淇敼'
this.addInfo = row
console.log(this.addInfo)
- this.addInfo.signatory = this.addInfo.signatory ? this.addInfo.signatory.split(',').map(m => Number(m)) : []
this.addDialogVisible = true;
- },
- handleChangeTask(list) {
- this.mutilSelect = list
},
handleDelete(row) {
this.$confirm("鏄惁鍒犻櫎璇ユ潯鏁版嵁?", "鎻愮ず", {
diff --git a/src/views/CNAS/resourceDemand/device/component/management.vue b/src/views/CNAS/resourceDemand/device/component/management.vue
index 8d74156..9224055 100644
--- a/src/views/CNAS/resourceDemand/device/component/management.vue
+++ b/src/views/CNAS/resourceDemand/device/component/management.vue
@@ -16,9 +16,9 @@
@keyup.enter.native="refreshTable()">
</el-input>
</el-form-item>
- <el-form-item label="瑙勬牸鍨嬪彿" prop="specificationModel">
+ <el-form-item label="绠$悊缂栧彿" prop="managementNumber">
<el-input size="small" placeholder="璇疯緭鍏�" clearable
- v-model="queryParams.specificationModel" @keyup.enter.native="refreshTable()"></el-input>
+ v-model="queryParams.managementNumber" @keyup.enter.native="refreshTable()"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" size="mini" @click="refreshTable">鏌ヨ</el-button>
@@ -33,7 +33,7 @@
</div>
<div class="table" v-show="!showData">
<lims-table :tableData="tableData" :column="column" :tableLoading="tableLoading" :height="'calc(100vh - 300px)'"
- :page="page" @pagination="pagination"></lims-table>
+ :page="page" @pagination="pagination" :row-class-name="tableRowClassName"></lims-table>
</div>
<el-dialog :title="isUp ? '璁惧璇︽儏' : '妗f淇'" :visible.sync="dialogVisible" width="70%" top="5vh"
:before-close="handleClose">
@@ -477,7 +477,7 @@
{ label: "绠$悊缂栧彿", prop: "managementNumber" },
{ label: "鎶�鏈寚鏍�", prop: "technicalIndicators" },
{ label: "璐疆鏃ユ湡", prop: "acquisitionDate" },
- { label: "鍚敤鏃ユ湡", prop: "activationDate" },
+ { label: "鏍″噯鏈夋晥鏈�", prop: "activationDate" },
{ label: "绠$悊浜�", prop: "equipmentManagerUser" },
{ label: "瀛樻斁鐐�", prop: "storagePoint" },
{ label: "鎵�灞為儴闂�", prop: "laboratoryName" },
@@ -606,6 +606,18 @@
this.page.size = limit;
this.getList();
},
+ tableRowClassName({ row }) {
+ const today = new Date();
+ const targetDate = new Date(row.activationDate);
+ const fiveDaysBeforeTarget = new Date(targetDate);
+ // 璁$畻鍓嶄簲澶╃殑鏃ユ湡
+ fiveDaysBeforeTarget.setDate(targetDate.getDate() - 5);
+ // 姣旇緝鏃堕渶瑕佺‘淇濇瘮杈冪殑鏄畬鏁寸殑鏃ユ湡鏃堕棿锛屽寘鍚椂鍒嗙
+ if (today > fiveDaysBeforeTarget) {
+ return 'red-row';
+ }
+ return '';
+ },
refresh() {
this.queryParams = {};
this.page.current = 1;
diff --git a/src/views/CNAS/resourceDemand/device/component/record.vue b/src/views/CNAS/resourceDemand/device/component/record.vue
index 869410d..5f3b83c 100644
--- a/src/views/CNAS/resourceDemand/device/component/record.vue
+++ b/src/views/CNAS/resourceDemand/device/component/record.vue
@@ -108,7 +108,8 @@
prop="useDateList">
<el-date-picker v-model="form.useDateList" :disabled="operationType === 'view'" end-placeholder="缁撴潫鏃ユ湡"
format="yyyy-MM-dd HH:mm:ss" size="small" start-placeholder="寮�濮嬫棩鏈�" style="width:100%"
- type="datetimerange" value-format="yyyy-MM-dd HH:mm:ss">
+ type="datetimerange" value-format="yyyy-MM-dd HH:mm:ss"
+ :picker-options="pickerOptions">
</el-date-picker>
</el-form-item>
</el-col>
@@ -213,7 +214,12 @@
dialogVisible: false,
operationType: '',
formParamList: [],
- tableLoading: false
+ tableLoading: false,
+ pickerOptions: {
+ disabledDate(time) {
+ return time.getTime() > Date.now();
+ }
+ }
}
},
mounted() {
diff --git a/src/views/CNAS/resourceDemand/device/index.vue b/src/views/CNAS/resourceDemand/device/index.vue
index 063a9b2..e01dc60 100644
--- a/src/views/CNAS/resourceDemand/device/index.vue
+++ b/src/views/CNAS/resourceDemand/device/index.vue
@@ -12,7 +12,9 @@
<div slot-scope="{ node, data }" class="custom-tree-node">
<el-row style="width: 100%;">
<el-col :span="24">
- <p class="single-line-ellipsis" style="width: 100%">
+ <p class="single-line-ellipsis" style="width: 100%" :style="{
+ color: isLeafNode(data) && shouldHighlight(data) ? 'red' : ''
+ }">
<i :class="`node_i ${data.children != undefined
? data.code === '[1]'
? 'el-icon-folder-opened'
@@ -22,7 +24,9 @@
"></i>
{{ data.label }}
</p>
- <p>
+ <p :style="{
+ color: isLeafNode(data) && shouldHighlight(data) ? 'red' : ''
+ }">
{{ data.managementNumber === undefined ? '' : data.managementNumber }}
</p>
</el-col>
@@ -198,9 +202,25 @@
treeDevice().then(res => {
let data = res.data;
this.list = data;
+ console.log('this.list--', this.list)
this.loading = false
});
},
+ // 鍒ゆ柇鏄惁鏄彾瀛愯妭鐐�
+ isLeafNode(data) {
+ return !data.children || data.children.length === 0;
+ },
+ // 鍒ゆ柇鏄惁闇�瑕佹爣绾�
+ shouldHighlight(data) {
+ if (!data.activationDate) return false;
+ const today = new Date();
+ const targetDate = new Date(data.activationDate);
+ const fiveDaysBeforeTarget = new Date(targetDate);
+ // 璁$畻鍓嶄簲澶╃殑鏃ユ湡
+ fiveDaysBeforeTarget.setDate(targetDate.getDate() - 5);
+
+ return today > fiveDaysBeforeTarget;
+ },
handleNodeClick(val, node, el) {
// 鐐瑰嚮涓存椂缂撳瓨
this.clickNodeVal = val;
diff --git a/src/views/business/inspectionTask/inspection.vue b/src/views/business/inspectionTask/inspection.vue
index f648679..06fe550 100644
--- a/src/views/business/inspectionTask/inspection.vue
+++ b/src/views/business/inspectionTask/inspection.vue
@@ -2663,12 +2663,23 @@
} else {
param = this.param;
}
+ let isNoTestValue = ''
+ for (let key in param) {
+ if (param[key]) {
+ if (param[key].insValue?.length === 0) {
+ isNoTestValue = 1
+ } else {
+ isNoTestValue = ''
+ }
+ }
+ }
saveInsContext({
param: JSON.stringify(param),
currentTable: this.currentTable,
sampleId: this.currentSample.id,
orderId: this.orderId,
- sonLaboratory: this.sonLaboratory
+ sonLaboratory: this.sonLaboratory,
+ isNoTestValue: isNoTestValue
}).then((res) => {
this.$message.success("宸蹭繚瀛�");
});
diff --git a/src/views/business/materialOrder/customsInspectionOrder.vue b/src/views/business/materialOrder/customsInspectionOrder.vue
index 35d165b..cfb2675 100644
--- a/src/views/business/materialOrder/customsInspectionOrder.vue
+++ b/src/views/business/materialOrder/customsInspectionOrder.vue
@@ -12,9 +12,13 @@
<el-select v-show="active==1" v-model="template" placeholder="涓嬪崟妯℃澘" size="small" style="margin-right: 10px;"
@change="selectInsOrderTemplateByIdList">
<el-option v-for="(a, ai) in templates" :key="ai" :label="a.name" :value="a.id">
- <span style="float: left">{{ a.name }}</span>
- <i class="el-icon-delete" style="float: right; color: #66b1ff; font-size: 16px"
- @click.stop="handleDelete(a)"></i>
+ <div style="display: flex; align-items: center; justify-content: space-between;">
+ <span>{{ a.name }}</span>
+ <i class="el-icon-delete"
+ style="color: #66b1ff; font-size: 16px; cursor: pointer;"
+ @click.stop="handleDelete(a)">
+ </i>
+ </div>
</el-option>
</el-select>
<el-button v-show="active==1" size="small" @click="templateDia=true">
diff --git a/src/views/business/productOrder/components/addOrder.vue b/src/views/business/productOrder/components/addOrder.vue
index 555567b..90eb98b 100644
--- a/src/views/business/productOrder/components/addOrder.vue
+++ b/src/views/business/productOrder/components/addOrder.vue
@@ -14,9 +14,13 @@
<el-select v-show="active==1" v-model="template" placeholder="涓嬪崟妯℃澘" size="small"
@change="selectInsOrderTemplateById">
<el-option v-for="(a, ai) in templates" :key="ai" :label="a.name" :value="a.id">
- <span style="float: left">{{ a.name }}</span>
- <i class="el-icon-delete" style="float: right; color: #66b1ff; font-size: 16px"
- @click.stop="handleDelete(a)"></i>
+ <div style="display: flex; align-items: center; justify-content: space-between;">
+ <span>{{ a.name }}</span>
+ <i class="el-icon-delete"
+ style="color: #66b1ff; font-size: 16px; cursor: pointer;"
+ @click.stop="handleDelete(a)">
+ </i>
+ </div>
</el-option>
</el-select>
<el-button v-show="active==1" size="small" @click="templateDia=true">
@@ -587,7 +591,7 @@
} from "@/api/business/rawMaterialOrder";
import {
addInsOrder, addInsOrderTemplate, delInsOrderTemplate,
- getQuarterOnOrder, selectInsOrderTemplateById,
+ getQuarterOnOrder, judgeNotSpotCheckOrder, selectInsOrderTemplateById,
selectOrderManDay,
updateInsOrder,
upInsOrder,
@@ -598,6 +602,7 @@
import limsTable from "@/components/Table/lims-table.vue";
import {selectCustomPageList} from "@/api/system/customer";
import {mapGetters} from "vuex";
+import {addQuarter, updateQuarterOnOrder} from "@/api/business/finishedProductSampling";
export default {
name: 'AddOrder',
@@ -1255,36 +1260,62 @@
}
},
saveMethod(sampleList){
- this.saveLoad = true
if (this.addObj.quarterItemId) {
this.addObj.quarterItemId = this.addObj.quarterItemId[1]
}
- if(this.tabIndex==4&&this.active==2){
- if (this.addObj.createTime) {
- delete this.addObj.createTime
- }
- // 閫�鍥炲悗鎻愪氦
- updateInsOrder({insOrder: this.addObj, sampleProduct: sampleList}).then(res => {
- this.saveLoad = false
- this.$message.success('宸叉彁浜�')
- this.bsm3Dia = false;
- this.closeOpenPage()
- }).catch(e=>{
- this.saveLoad = false
- })
- }else{
- // 甯歌鎻愪氦
- addInsOrder({insOrder: this.addObj, sampleList: sampleList}).then(res => {
- this.saveLoad = false
- this.$message.success('宸叉彁浜�')
- this.bsm3Dia = false;
- this.closeOpenPage()
- }).catch(e=>{
- this.saveLoad = false
- })
+ if (this.addObj.createTime) {
+ delete this.addObj.createTime
}
-
+ if (this.addObj.orderType === '鎶芥') {
+ judgeNotSpotCheckOrder({ insOrder: this.addObj, sampleList: sampleList }).then(res => {
+ if (res.data === true) {
+ this.saveData(sampleList);
+ } else {
+ // const message = res.message.replace(/\n/g, '<br>');
+ this.$confirm(res.message, '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning',
+ dangerouslyUseHTMLString: true, // 馃憟 鍏抽敭鐐癸細鍏佽 HTML
+ message: res.message // 杩欓噷涔熷彲浠ョ渷鐣ワ紝鍥犱负绗簩涓弬鏁版槸 title锛岀涓変釜鏄� options
+ }).then(() => {
+ this.saveData(sampleList);
+ }).catch(() => {
+ this.$message({
+ type: 'info',
+ message: '宸插彇娑�'
+ });
+ });
+ }
+ });
+ } else {
+ this.saveData(sampleList)
+ }
},
+ saveData(sampleList) {
+ this.saveLoad = true
+ if(this.tabIndex==4&&this.active==2){
+ // 閫�鍥炲悗鎻愪氦
+ updateInsOrder({insOrder: this.addObj, sampleProduct: sampleList}).then(res => {
+ this.saveLoad = false
+ this.$message.success('宸叉彁浜�')
+ this.bsm3Dia = false;
+ this.closeOpenPage()
+ }).catch(e=>{
+ this.saveLoad = false
+ })
+ }else{
+ // 甯歌鎻愪氦
+ addInsOrder({insOrder: this.addObj, sampleList: sampleList}).then(res => {
+ this.saveLoad = false
+ this.$message.success('宸叉彁浜�')
+ this.bsm3Dia = false;
+ this.closeOpenPage()
+ }).catch(e=>{
+ this.saveLoad = false
+ })
+ }
+ },
upInsOrderOfState(state) {
if (state == 1) {
this.saveLoad = true
diff --git a/src/views/business/productOrder/index.vue b/src/views/business/productOrder/index.vue
index b602274..b674f14 100644
--- a/src/views/business/productOrder/index.vue
+++ b/src/views/business/productOrder/index.vue
@@ -985,14 +985,26 @@
},
// 鐐瑰嚮鏍峰搧鍚嶇О
selectAllByOne(row) {
- this.$router.push({
- path: "/productOrder/addView", query: {
- examine: 1,
- active: 2,
- currentId: row.id,
- tabIndex: this.tabIndex,
- }
- });
+ if (this.tabIndex === 4) {
+ this.$router.push({
+ path: "/productOrder/addOrder", query: {
+ examine: 1,
+ active: 2,
+ currentId: row.id,
+ tabIndex: this.tabIndex,
+ }
+ });
+ } else {
+ this.$router.push({
+ path: "/productOrder/addView", query: {
+ examine: 1,
+ active: 2,
+ currentId: row.id,
+ tabIndex: this.tabIndex,
+ }
+ });
+ }
+
},
// 淇敼鏍峰搧鍨嬪彿
editSampleModel (row) {
diff --git a/src/views/structural/capabilityAndLaboratory/capabilityComponents/EditForm.vue b/src/views/structural/capabilityAndLaboratory/capabilityComponents/EditForm.vue
index bb55b02..a236a5b 100644
--- a/src/views/structural/capabilityAndLaboratory/capabilityComponents/EditForm.vue
+++ b/src/views/structural/capabilityAndLaboratory/capabilityComponents/EditForm.vue
@@ -175,6 +175,15 @@
</el-form-item>
</el-col>
</el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="鎶芥绫诲瀷缁戝畾锛�" prop="spotCheckType">
+ <el-select v-model="editForm.spotCheckType" clearable placeholder="璇烽�夋嫨" size="small" style="width: 100%">
+ <el-option v-for="item in dict.type.spot_check_type" :key="item.value" :label="item.label" :value="item.value"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
<!-- <el-col :span="12">-->
<!-- <el-form-item label="瀛楀吀绫诲瀷锛�" prop="dic">-->
<!-- <el-select v-model="editForm.dic" clearable placeholder="璇烽�夋嫨" size="small" style="width: 100%">-->
@@ -207,7 +216,7 @@
name: "EditForm",
// import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
components: {},
- dicts: ['sys_sub_lab', 'inspection_item_type', 'sys_unit', 'inspection_value_type', 'inspection_bsm'],
+ dicts: ['sys_sub_lab', 'inspection_item_type', 'sys_unit', 'inspection_value_type', 'inspection_bsm', 'spot_check_type'],
data() {
// 杩欓噷瀛樻斁鏁版嵁
return {
@@ -237,7 +246,8 @@
inspectionItemClassEn: '', // 妫�楠岄」鍒嗙被EN
method: '', // 璇曢獙鏂规硶
radiusList: [], // 鏉′欢
- rates: '', // 鏉′欢
+ rates: '', // 鏀惰垂鏍囧噯(鍏�/娆�)
+ spotCheckType: '', // 鎶芥绫诲瀷缁戝畾
deviceId: [], // 璁惧
},
sampleList: [], // 妫�楠屽璞′笅鎷夋
@@ -313,7 +323,8 @@
inspectionItemClassEn: '', // 妫�楠岄」鍒嗙被EN
method: '', // 璇曢獙鏂规硶
radiusList: [], // 鏉′欢
- rates: '', // 鏉′欢
+ rates: '', // 鏀惰垂鏍囧噯(鍏�/娆�)
+ spotCheckType: '', // 鎶芥绫诲瀷缁戝畾
}
this.resetForm('editForm')
} else {
--
Gitblit v1.9.3