From 2e87631ecb8060784c6e7a139048522cf47d5a12 Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期三, 26 二月 2025 15:48:04 +0800
Subject: [PATCH] 搬迁测量不确定度的评定
---
src/views/CNAS/process/uncertainty/index.vue | 328 +++++++++++++++++++++++++++++++++++++++++
src/views/business/inspectionReview/index.vue | 54 +++---
src/api/cnas/process/uncertainty.js | 39 ++++
3 files changed, 394 insertions(+), 27 deletions(-)
diff --git a/src/api/cnas/process/uncertainty.js b/src/api/cnas/process/uncertainty.js
new file mode 100644
index 0000000..7223cc1
--- /dev/null
+++ b/src/api/cnas/process/uncertainty.js
@@ -0,0 +1,39 @@
+// 涓嶇‘瀹氬害璇勫畾鐩稿叧鎺ュ彛
+import request from "@/utils/request";
+
+//瀵煎嚭
+export function exportProcessEvaluate(query) {
+ return request({
+ url: "/processEvaluate/exportProcessEvaluate",
+ method: "get",
+ responseType: "blob",
+ params: query,
+ });
+}
+
+// 濉啓 (涓昏涓婁紶id鍜屽娉╪ote灏卞ソ浜�)
+export function doProcessEvaluate(data) {
+ return request({
+ url: "/processEvaluate/doProcessEvaluate",
+ method: "post",
+ data: data,
+ });
+}
+
+//鍒犻櫎
+export function delProcessEvaluate(query) {
+ return request({
+ url: "/processEvaluate/delProcessEvaluate",
+ method: "delete",
+ params: query,
+ });
+}
+
+//鍒嗛〉
+export function pageProcessEvaluate(query) {
+ return request({
+ url: "/processEvaluate/pageProcessEvaluate",
+ method: "get",
+ params: query,
+ });
+}
diff --git a/src/views/CNAS/process/uncertainty/index.vue b/src/views/CNAS/process/uncertainty/index.vue
new file mode 100644
index 0000000..053008b
--- /dev/null
+++ b/src/views/CNAS/process/uncertainty/index.vue
@@ -0,0 +1,328 @@
+<template>
+ <div class="uncertainty-evaluation">
+ <div class="search">
+ <div class="search_thing">
+ <div class="search_label">鎶ュ憡鍚嶇О锛�</div>
+ <div class="search_input"><el-input v-model="queryParams.reportName" clearable placeholder="璇疯緭鍏�" size="small"
+ @keyup.enter.native="refreshTable()"></el-input></div>
+ </div>
+ <div class="search_thing" style="padding-left: 30px;">
+ <el-button size="small" @click="refresh()">閲� 缃�</el-button>
+ <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button>
+ </div>
+ <div class="btn">
+ <el-button :loading="outLoading" size="small" style="margin-right: 16px;margin-top: 3px;" type="primary"
+ @click="handleDown0">瀵煎嚭</el-button>
+ <el-upload ref='upload' :action="action" :headers="uploadHeader" :on-change="beforeUpload" :on-error="onError"
+ :on-success="handleSuccessUp" :show-file-list="false"
+ accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar'>
+ <el-button :loading="upLoading" size="small" type="primary">瀵煎叆</el-button></el-upload>
+ </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="400px">
+ <el-row>
+ <el-col :span="24" style="margin-bottom: 16px;">
+ <div class="search_thing">
+ <div class="search_label">璇勪环锛�</div>
+ <div class="search_input"><el-input v-model="addInfo.note" clearable placeholder="璇疯緭鍏�"
+ size="small"></el-input></div>
+ </div>
+ </el-col>
+ <el-col :span="24" style="margin-bottom: 16px;">
+ <div class="search_thing">
+ <div class="search_label">鏃ユ湡锛�</div>
+ <div class="search_input">
+ <el-date-picker v-model="addInfo.evaluateTime" format="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡" size="small"
+ style="width: 100%;" type="date" value-format="yyyy-MM-dd">
+ </el-date-picker>
+ </div>
+ </div>
+ </el-col>
+ </el-row>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="addDialogVisible = false">鍙� 娑�</el-button>
+ <el-button :loading="addLoading" type="primary" @click="handleAdd">纭� 瀹�</el-button>
+ </span>
+ </el-dialog>
+ <el-dialog :visible.sync="lookDialogVisible" fullscreen title="鏌ョ湅闄勪欢" top="5vh" width="800px">
+ <filePreview v-if="lookDialogVisible" :currentFile="{}" :fileUrl="javaApi + '/word/' + currentInfo.reportUrl"
+ style="max-height: 90vh;overflow-y: auto;" />
+ </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";
+export default {
+ components: {
+ limsTable,
+ filePreview
+ },
+ data() {
+ return {
+ addPower: false,
+ outPower: false,
+ outLoading: false,
+ upLoading: false,
+ addDialogVisible: false,
+ addInfo: {},
+ addLoading: false,
+ currentInfo: {},
+ lookDialogVisible: false,
+ queryParams: {},
+ tableData: [],
+ column: [
+ { label: "鎶ュ憡鍚嶇О", prop: "reportName" },
+ { label: "璇勪环浜�", prop: "evaluateUserName" },
+ { label: "璇勪环鏃ユ湡", prop: "evaluateTime" },
+ { label: "澶囨敞", prop: "note" },
+ {
+ dataType: "action",
+ fixed: "right",
+ label: "鎿嶄綔",
+ operation: [
+ {
+ name: "璇勪环",
+ type: "text",
+ clickFun: (row) => {
+ this.handleTell(row);
+ },
+ },
+ {
+ name: "鍒犻櫎",
+ type: "text",
+ clickFun: (row) => {
+ this.handleDelete(row);
+ },
+ },
+ {
+ name: "涓嬭浇",
+ type: "text",
+ clickFun: (row) => {
+ this.handleDown(row);
+ },
+ },
+ {
+ name: "鏌ョ湅闄勪欢",
+ type: "text",
+ clickFun: (row) => {
+ this.handleLook(row);
+ },
+ },
+ ],
+ },
+ ],
+ page: {
+ total: 0,
+ size: 10,
+ current: 0,
+ },
+ tableLoading: false,
+ }
+ },
+ // 鐢ㄤ簬涓婁紶鏂囦欢鐨勪俊鎭�
+ computed: {
+ ...mapGetters(["userId"]),
+ action() {
+ return this.javaApi + '/processEvaluate/addProcessEvaluate'
+ }
+ },
+ mounted() {
+ // this.entityCopy = this.HaveJson(this.componentData.entity);
+ this.getList()
+ },
+ methods: {
+ getPower() {
+ let power = JSON.parse(sessionStorage.getItem('power'))
+ let up = false
+ let del = false
+ let add = false
+ let out = false
+ for (var i = 0; i < power.length; i++) {
+ if (power[i].menuMethod == 'doProcessEvaluate') {
+ up = true
+ }
+ if (power[i].menuMethod == 'addProcessEvaluate') {
+ add = true
+ }
+ if (power[i].menuMethod == 'delProcessEvaluate') {
+ del = true
+ }
+ if (power[i].menuMethod == 'exportProcessEvaluate') {
+ out = true
+ }
+ }
+ if (!del) {
+ this.componentData.do.splice(1, 1)
+ }
+ if (!up) {
+ this.componentData.do.splice(0, 1)
+ }
+ this.outPower = out
+ this.addPower = add
+ },
+ handleDown0() {
+ this.outLoading = true
+ exportProcessEvaluate(this.queryParams).then(res => {
+ this.outLoading = false
+ if (res.code === 201) return
+ const blob = new Blob([res], { type: 'application/octet-stream' });
+ this.$download.saveAs(blob, '娴嬮噺涓嶇‘瀹氬害鐨勮瘎瀹�.xlsx');
+ })
+ },
+ handleDown(row) {
+ let url = this.javaApi + '/word/' + row.reportUrl
+ this.$download.saveAs(url, row.reportName);
+ },
+ beforeUpload(file) {
+ if (file.size > 1024 * 1024 * 10) {
+ this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M');
+ this.$refs.upload.clearFiles()
+ return false;
+ } else {
+ // this.upLoading = true;
+ return true;
+ }
+ },
+ onError(err, file, fileList) {
+ this.$message.error('涓婁紶澶辫触')
+ this.$refs.upload.clearFiles()
+ },
+ handleSuccessUp(response) {
+ this.upLoading = false;
+ if (response.code == 200) {
+ this.$message.success('涓婁紶鎴愬姛');
+ this.refreshTable()
+ }
+ },
+ handleTell(row) {
+ this.addInfo = row;
+ this.addDialogVisible = true;
+ },
+ handleAdd() {
+ this.addLoading = true;
+ doProcessEvaluate({
+ id: this.addInfo.id,
+ note: this.addInfo.note,
+ evaluateTime: this.addInfo.evaluateTime,
+ evaluateUser: this.userId
+ }).then((res) => {
+ this.addLoading = false;
+ if (res.code == 201) {
+ this.$message.error('璇勪环澶辫触');
+ return;
+ }
+ this.$message.success('璇勪环鎴愬姛');
+ this.addDialogVisible = false;
+ this.refreshTable()
+ })
+ },
+ getList() {
+ this.tableLoading = true;
+ let param = { ...this.queryParams, ...this.page };
+ delete param.total;
+ pageProcessEvaluate({ ...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();
+ },
+ handleLook(row) {
+ this.currentInfo = row;
+ this.lookDialogVisible = true;
+ },
+ handleDelete(row) {
+ this.$confirm("鏄惁鍒犻櫎璇ユ潯鏁版嵁?", "鎻愮ず", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning",
+ })
+ .then(() => {
+ delProcessEvaluate({ id: row.id }).then((res) => {
+ if (res.code == 201) return;
+ this.$message.success("鍒犻櫎鎴愬姛");
+ this.refresh();
+ });
+ })
+ .catch(() => { });
+ },
+ }
+}
+</script>
+
+<style scoped>
+.title {
+ height: 60px;
+ line-height: 60px;
+}
+
+.search {
+ background-color: #fff;
+ height: 80px;
+ display: flex;
+ align-items: center;
+ position: relative;
+}
+
+.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);
+}
+
+.table {
+ background-color: #fff;
+ height: calc(100% - 60px - 80px - 10px - 40px);
+ padding: 20px;
+}
+
+.btn {
+ position: absolute;
+ top: 16px;
+ right: 20px;
+ display: flex;
+ align-items: center;
+}
+</style>
diff --git a/src/views/business/inspectionReview/index.vue b/src/views/business/inspectionReview/index.vue
index d065a44..c724ca4 100644
--- a/src/views/business/inspectionReview/index.vue
+++ b/src/views/business/inspectionReview/index.vue
@@ -3,9 +3,8 @@
<div>
<el-form :model="entity" ref="entity" size="small" :inline="true">
<el-form-item label="濮旀墭缂栧彿" prop="entrustCode">
- <el-input size="small" placeholder="璇疯緭鍏�" clearable
- v-model="entity.entrustCode"
- @keyup.enter.native="refreshTable()"></el-input>
+ <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="entity.entrustCode"
+ @keyup.enter.native="refreshTable()"></el-input>
</el-form-item>
<el-form-item label="涓嬪崟绫诲埆" prop="entrustCode">
<el-select size="small" v-model="entity.typeSource" clearable style="width: 100%;" @change="refreshTable()">
@@ -19,20 +18,21 @@
</el-form>
<div class="page_total">
<span>鎬昏浠诲姟鏁伴噺:</span>
- <span>{{page.total}}</span>
+ <span>{{ page.total }}</span>
</div>
</div>
<div>
<lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading"
- :rowClassName="rowClassName" :height="'calc(100vh - 270px)'" @pagination="pagination"
- key="tableData0"></lims-table>
+ :rowClassName="rowClassName" :height="'calc(100vh - 270px)'" @pagination="pagination"
+ key="tableData0"></lims-table>
</div>
<!--鎶ュ憡鏌ョ湅-->
<el-dialog title="鎶ュ憡鏌ョ湅" :visible.sync="issuedVisible" width="80vw" :modal-append-to-body="false"
- :fullscreen="fullscreen">
+ :fullscreen="fullscreen">
<div class="full-screen">
- <i class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen=true;" v-if="!fullscreen"></i>
- <img src="@/assets/images/no-full.svg" alt="" v-else style="cursor: pointer;" @click="fullscreen=false;" >
+ <i class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen = true;"
+ v-if="!fullscreen"></i>
+ <img src="@/assets/images/no-full.svg" alt="" v-else style="cursor: pointer;" @click="fullscreen = false;">
</div>
<div style="height: 80vh;" v-if="issuedVisible">
<onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" />
@@ -40,7 +40,7 @@
</el-dialog>
<el-dialog title="鏌ョ湅闄勪欢" :visible.sync="lookDialogVisible" width="800px" top="5vh" fullscreen>
<filePreview v-if="lookDialogVisible" :fileUrl="javaApi + '/word/' + currentInfo.tempUrlPdf" :currentFile="{}"
- style="max-height: 90vh;overflow-y: auto;" />
+ style="max-height: 90vh;overflow-y: auto;" />
</el-dialog>
</div>
</template>
@@ -50,9 +50,9 @@
// import ShowInfo from "../do/b1-material-ins-order/showInfo.vue";
import onlyoffice from "@/components/Onlyoffice/onlyoffice.vue";
import limsTable from "@/components/Table/lims-table.vue";
-import {selectInsOrderPlanList, selectUserCondition} from "@/api/business/inspectionTask";
-import {mapGetters} from "vuex";
-import {upReportUrl} from "@/api/business/insReport";
+import { selectInsOrderPlanList, selectUserCondition } from "@/api/business/inspectionTask";
+import { mapGetters } from "vuex";
+import { upReportUrl } from "@/api/business/insReport";
import filePreview from "@/components/Preview/filePreview.vue";
export default {
@@ -209,18 +209,18 @@
upIndex: 0,
planTotal: 0,
insStateList: [],
- state:0,//0:鍙拌处椤碉紝1锛氭楠岄〉闈�,2妫�楠岄〉闈�(澶嶆牳)锛岄粯璁や负0
+ state: 0,//0:鍙拌处椤碉紝1锛氭楠岄〉闈�,2妫�楠岄〉闈�(澶嶆牳)锛岄粯璁や负0
activeFace: 0, //1锛氫笅鍗曪紝2锛氭煡鐪嬶紝3锛氬鏍革紝榛樿涓�0
examine: null,
isReport: 0,
currentId: null,
orderId: 0,
- personList:[],
+ personList: [],
currentTime: null,
- sonLaboratoryList:[],
+ sonLaboratoryList: [],
typeSourceList: [
- {label: '鎴愬搧涓嬪崟', value: 0},
- {label: '鍘熸潗鏂欎笅鍗�', value: 1},
+ { label: '鎴愬搧涓嬪崟', value: 0 },
+ { label: '鍘熸潗鏂欎笅鍗�', value: 1 },
],
isCopper: null,
customsInspection: {},
@@ -228,12 +228,12 @@
showInfoDialog: false, // 浜т笟閾句俊鎭煡鐪�
issuedVisible: false,
fullscreen: false,
- option:null,
+ option: null,
orderTypeList: [
- {label: '濮旀墭璇曢獙', value: 'Customer-ordered test'},
- {label: '鎶芥', value: '鎶芥'},
- {label: '杩涘巶妫�楠�', value: '杩涘巶妫�楠�'},
- {label: '瀛e害妫�楠�', value: 'Quarterly inspection'},
+ { label: '濮旀墭璇曢獙', value: 'Customer-ordered test' },
+ { label: '鎶芥', value: '鎶芥' },
+ { label: '杩涘巶妫�楠�', value: '杩涘巶妫�楠�' },
+ { label: '瀛e害妫�楠�', value: 'Quarterly inspection' },
],
urgencyLevel: [],
inspectionTaskState: [],
@@ -332,7 +332,7 @@
}
},
// 澶嶆牳鍥炶皟
- handleReview(row){
+ handleReview(row) {
this.$router.push({
path: "/inspectionTask/inspection",
query: {
@@ -344,12 +344,12 @@
})
},
// 涓婁紶鎶ュ憡
- handleUpload (row) {
+ handleUpload(row) {
},
// 涓嬭浇鎶ュ憡
download(row) {
- let url = this.javaApi+'/word/' + (row.urlS===null||row.urlS==='')?row.url:row.urlS
+ let url = this.javaApi + '/word/' + (row.urlS === null || row.urlS === '') ? row.url : row.urlS
this.$download.saveAs(url, row.fileName);
},
// 杩樺師鎿嶄綔
@@ -359,7 +359,7 @@
cancelButtonText: "鍙栨秷",
type: "warning"
}).then(() => {
- upReportUrl({id: row.insReportId}).then(res => {
+ upReportUrl({ id: row.insReportId }).then(res => {
if (res.code === 200) {
this.$message.success('杩樺師鎴愬姛')
this.refreshTable()
--
Gitblit v1.9.3