From 0bb447f57ab45b86db18b0cfd7c2fda36da817d3 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期二, 11 三月 2025 19:09:27 +0800
Subject: [PATCH] Merge branch 'dev' of http://114.132.189.42:9002/r/center-lims-before-ruoyi into dev
---
src/views/CNAS/resourceDemand/device/component/operationInstruction.vue | 19 --
src/api/cnas/resourceDemand/device.js | 31 ++--
src/views/CNAS/personnel/personnelInfo/Department/components/PersonnelList/index.vue | 129 ++++++++++++++-------
src/views/CNAS/resourceDemand/device/component/device-overview.vue | 27 ---
src/views/CNAS/personnel/personnelInfo/Department/components/PersonnelTraining/Edit.vue | 94 ++++++++++++++-
src/views/CNAS/resourceDemand/device/component/resource-reservation.vue | 48 +++----
6 files changed, 219 insertions(+), 129 deletions(-)
diff --git a/src/api/cnas/resourceDemand/device.js b/src/api/cnas/resourceDemand/device.js
index 8f66b90..635890a 100644
--- a/src/api/cnas/resourceDemand/device.js
+++ b/src/api/cnas/resourceDemand/device.js
@@ -1198,11 +1198,18 @@
data: data,
});
}
-
+//浣滀笟鎸囧涔︽煡璇�
+export function pageByPageQueryOfHomeworkInstructions(query) {
+ return request({
+ url: "/instruction/pageByPageQueryOfHomeworkInstructions",
+ method: "get",
+ params: query,
+ });
+}
//浣滀笟鎸囧涔� 瀹℃壒
export function approvalOfHomeworkInstructionManual(data) {
return request({
- url: "/deviceInstruction/approvalOfHomeworkInstructionManual",
+ url: "/instruction/approvalOfHomeworkInstructionManual",
method: "post",
data: data,
});
@@ -1211,7 +1218,7 @@
//浣滀笟鎸囧涔� 鍒犻櫎
export function homeworkGuidebook(query) {
return request({
- url: "/deviceInstruction/homeworkGuidebook",
+ url: "/instruction/homeworkGuidebook",
method: "delete",
params: query,
});
@@ -1220,7 +1227,7 @@
//浣滀笟鎸囧涔� 缂栬緫鏌ヨ
export function homeworkGuidebookEditor(query) {
return request({
- url: "/deviceInstruction/homeworkGuidebookEditor",
+ url: "/instruction/homeworkGuidebookEditor",
method: "get",
params: query,
});
@@ -1229,7 +1236,7 @@
//浣滀笟鎸囧涔︽柊澧�
export function newHomeworkGuidebookAdded(data) {
return request({
- url: "/deviceInstruction/newHomeworkGuidebookAdded",
+ url: "/instruction/newHomeworkGuidebookAdded",
method: "post",
data: data,
});
@@ -1238,20 +1245,12 @@
//浣滀笟鎸囧涔﹀彈鎺ф枃浠跺垹闄�
export function deleteHomeworkGuidebook(query) {
return request({
- url: "/deviceInstruction/deleteHomeworkGuidebook",
+ url: "/instruction/deleteHomeworkGuidebook",
method: "delete",
params: query,
});
}
-//浣滀笟鎸囧涔� 鏌ヨ
-export function pageByPageQueryOfHomeworkInstructions(query) {
- return request({
- url: "/deviceInstruction/pageByPageQueryOfHomeworkInstructions",
- method: "get",
- params: query,
- });
-}
//璁惧棰勭害鎺ュ彛
export function reservationSelectDevice(query) {
return request({
@@ -1260,7 +1259,7 @@
params: query,
});
}
-//璁惧棰勭害鎺ュ彛
+//璁惧棰勭害鎺ュ彛 鍒犻櫎
export function reservationDelete(query) {
return request({
url: "/reservation/delete",
@@ -1268,7 +1267,7 @@
params: query,
});
}
-//璁惧棰勭害鎺ュ彛
+//璁惧棰勭害鎺ュ彛 淇濆瓨
export function reservationSave(query) {
return request({
url: "/reservation/save",
diff --git a/src/views/CNAS/personnel/personnelInfo/Department/components/PersonnelList/index.vue b/src/views/CNAS/personnel/personnelInfo/Department/components/PersonnelList/index.vue
index 4aa3298..65aaa66 100644
--- a/src/views/CNAS/personnel/personnelInfo/Department/components/PersonnelList/index.vue
+++ b/src/views/CNAS/personnel/personnelInfo/Department/components/PersonnelList/index.vue
@@ -15,7 +15,8 @@
<el-button :loading="synchronousLoading" size="small" type="primary" @click="synchronous"
:v-show="departId">鍚屾绗笁鏂逛汉鍛樹俊鎭�</el-button>
<el-button :loading="outLoading" size="small" type="primary" @click="handleDown">瀵煎嚭</el-button>
- <el-button size="small" type="primary" @click="selectUserDia = true">鏂板缓</el-button>
+ <el-button size="small" type="primary"
+ @click="selectUserDia = true, getList(), queryParams.name = '', multipleSelection = []">鏂板缓</el-button>
</span>
</div>
<div class="search-table">
@@ -60,13 +61,15 @@
<div class="search_thing">
<div class="search_label">鐢ㄦ埛鍚嶏細</div>
<div class="search_input">
- <el-input v-model="addUserTableInfo.entity.name" clearable placeholder="璇疯緭鍏�" size="small"
- @keyup.enter.native="$refs.ValueTable.selectList()"></el-input>
+ <el-input v-model="queryParams.name" clearable placeholder="璇疯緭鍏�" size="small"
+ @keyup.enter.native="getList()" style="width: 200px;"></el-input>
</div>
</div>
</div>
<div v-if="selectUserDia" class="body" style="height: 60vh;">
- <ValueTable ref="ValueTable" :componentData="addUserTableInfo" :url="$api.user.selectUserList" />
+ <lims-table :tableData="tableData" :column="column" :tableLoading="tableLoading" :height="'calc(100vh - 290px)'"
+ :page="personPage" @pagination="pagination" :isSelection="true"
+ :handleSelectionChange="handleSelectionChange"></lims-table>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="selectUserDia = false">鍙� 娑�</el-button>
@@ -77,7 +80,7 @@
</template>
<script>
-import ValueTable from '@/components/Table/value-table.vue';
+import limsTable from "@/components/Table/lims-table.vue";
import {
getEmployees,
basicInformationOfPersonnelSelectPage,
@@ -85,11 +88,12 @@
upUserDepardLimsId,
exportPersonBasicInfo,
exportPersonBasicInfoById,
+ selectUserList,
} from '@/api/cnas/personnel/personnelInfo.js'
export default {
name: 'PersonnelList',
// import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
- components: { ValueTable },
+ components: { limsTable },
props: {
departId: {
type: Number,
@@ -109,6 +113,8 @@
data() {
// 杩欓噷瀛樻斁鏁版嵁
return {
+ entity: {},
+ multipleSelection: [],
synchronousLoading: false,
page: {
size: 20,
@@ -117,46 +123,61 @@
outLoading: false,
tableLoading: false,
tableData: [], // 浜哄憳鎬诲垪琛ㄦ暟鎹�
- selectUserDia: false, // 娣诲姞浜哄憳寮规
- entity: {
- name: '',
- orderBy: {
- field: 'id',
- order: 'asc'
+ selectUserDia: false, // 娣诲姞浜哄憳寮规,
+ stateList: [
+ {
+ value: 1,
+ type: 'success',
+ label: '鍚敤'
+ },
+ {
+ value: 0,
+ type: 'danger',
+ label: '鍋滅敤'
}
+ ],
+ queryParams: {
+ name: ''
},
- addUserTableInfo: {
- name: null,
- entity: {
- isCustom: 0,
- orderBy: {
- field: 'id',
- order: 'asc'
- }
+ tableData: [],
+ column: [
+ { label: "濮撳悕", prop: "name" },
+ { label: "璐﹀彿", prop: "account" },
+ {
+ label: "瑙掕壊",
+ prop: "roleName",
},
- isIndex: true,
- showSelect: true,
- select: true,
- do: [],
- tagField: {
- state: {
- select: [
- {
- value: 1,
- type: 'success',
- label: '鍚敤'
- },
- {
- value: 0,
- type: 'danger',
- label: '鍋滅敤'
- }
- ]
- }
+ {
+ label: "鐘舵��", prop: "state", dataType: "tag",
+ formatData: (params) => {
+ let index = this.stateList.findIndex(
+ (item) => item.value == params
+ );
+ if (index > -1) {
+ return this.stateList[index].label;
+ } else {
+ return null;
+ }
+ },
+ formatType: (params) => {
+ let index = this.stateList.findIndex(
+ (item) => item.value == params
+ );
+ if (index > -1) {
+ return this.stateList[index].type;
+ } else {
+ return null;
+ }
+ },
},
- selectField: {},
- upUserDepardLimsIdPower: true
+ { label: "鐢佃瘽鍙风爜", prop: "phone" },
+ ],
+ personPage: {
+ total: 0,
+ size: 10,
+ current: 0,
},
+ tableLoading: false,
};
},
mounted() {
@@ -232,12 +253,15 @@
this.page.current = val;
this.refreshTable();
},
+ handleSelectionChange(val) {
+ this.multipleSelection = val
+ },
selectUser() {
if (!this.currentCompaniesList.length > 0) {
this.$message.warning("璇烽�夋嫨閮ㄩ棬锛�")
return;
}
- let selects = this.$refs.ValueTable.multipleSelection;
+ let selects = this.multipleSelection;
if (selects.length == 0) {
this.$message.error('鏈�夋嫨鏁版嵁');
return;
@@ -265,6 +289,27 @@
});
this.$emit('refreshTree')
},
+ getList() {
+ this.tableLoading = true;
+ let param = { ...this.queryParams, ...this.personPage };
+ delete param.total;
+ selectUserList({ ...param })
+ .then((res) => {
+ this.tableLoading = false;
+ if (res.code === 200) {
+ this.tableData = res.data.records;
+ this.personPage.total = res.data.total;
+ }
+ })
+ .catch((err) => {
+ this.tableLoading = false;
+ });
+ },
+ pagination({ page, limit }) {
+ this.personPage.current = page;
+ this.personPage.size = limit;
+ this.getList();
+ },
handleDown() {
this.outLoading = true;
let entity = this.HaveJson(this.entity)
diff --git a/src/views/CNAS/personnel/personnelInfo/Department/components/PersonnelTraining/Edit.vue b/src/views/CNAS/personnel/personnelInfo/Department/components/PersonnelTraining/Edit.vue
index 1953d01..b880fd0 100644
--- a/src/views/CNAS/personnel/personnelInfo/Department/components/PersonnelTraining/Edit.vue
+++ b/src/views/CNAS/personnel/personnelInfo/Department/components/PersonnelTraining/Edit.vue
@@ -167,14 +167,17 @@
<div class="search_thing">
<div class="search_label">鐢ㄦ埛鍚嶏細</div>
<div class="search_input">
- <el-input v-model="addUserTableInfo.entity.name" clearable placeholder="璇疯緭鍏�" size="small"
+ <el-input v-model="queryParams.name" clearable placeholder="璇疯緭鍏�" size="small"
@keyup.enter.native="$refs.ValueTable.selectList()"></el-input>
</div>
</div>
</div>
<div v-if="selectUserDia" class="body" style="height: 60vh;">
- <ValueTable ref="ValueTable" :componentData="addUserTableInfo" :isSelectedList="isSelectedList"
- :url="$api.user.selectUserList" />
+ <lims-table :tableData="tableData" :column="column" :tableLoading="tableLoading" :height="'calc(100vh - 290px)'"
+ :page="page" @pagination="pagination" :isSelection="true"
+ :handleSelectionChange="handleSelectionChange"></lims-table>
+ <!-- <ValueTable ref="ValueTable" :componentData="addUserTableInfo" :isSelectedList="isSelectedList"
+ :url="$api.user.selectUserList" /> -->
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="selectUserDia = false">鍙� 娑�</el-button>
@@ -187,7 +190,7 @@
<script>
import TableCard from '@/components/TableCard/index.vue';
import limsTable from "@/components/Table/lims-table.vue";
-import ValueTable from '@/components/Table/value-table.vue';
+// import ValueTable from '@/components/Table/value-table.vue';
import filePreview from "@/components/Preview/filePreview.vue";
import {
fileDownLoad,
@@ -198,13 +201,14 @@
newPersonnelAddedToTrainingRecords,
deleteTrainingAndAssessmentRecords,
trainingAndAssessmentRecordsAdded,
+ selectUserList,
} from '@/api/cnas/personnel/personnelInfo.js'
import { selectUserCondition } from "@/api/system/user";
import { mapGetters } from "vuex";
export default {
name: 'Edit',
// import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
- components: { ValueTable, limsTable, TableCard, filePreview },
+ components: { limsTable, TableCard, filePreview },
props: {
currentRow: {
type: Object,
@@ -286,7 +290,60 @@
upUserDepardLimsIdPower: true
},
multipleSelection: [],
+ multipleSelections: [],
userList: [],
+ stateList: [
+ {
+ value: 1,
+ type: 'success',
+ label: '鍚敤'
+ },
+ {
+ value: 0,
+ type: 'danger',
+ label: '鍋滅敤'
+ }
+ ],
+ queryParams: {},
+ tableData: [],
+ column: [
+ { label: "濮撳悕", prop: "name" },
+ { label: "璐﹀彿", prop: "account" },
+ {
+ label: "瑙掕壊",
+ prop: "roleName",
+ },
+ {
+ label: "鐘舵��", prop: "state", dataType: "tag",
+ formatData: (params) => {
+ let index = this.stateList.findIndex(
+ (item) => item.value == params
+ );
+ if (index > -1) {
+ return this.stateList[index].label;
+ } else {
+ return null;
+ }
+ },
+ formatType: (params) => {
+ let index = this.stateList.findIndex(
+ (item) => item.value == params
+ );
+ if (index > -1) {
+ return this.stateList[index].type;
+ } else {
+ return null;
+ }
+ },
+ },
+ { label: "鐢佃瘽鍙风爜", prop: "phone" },
+ ],
+ page: {
+ total: 0,
+ size: 10,
+ current: 0,
+ },
+ tableLoading: false,
};
},
computed: {
@@ -394,12 +451,37 @@
this.$message.success("鎿嶄綔鎴愬姛锛�")
}
},
+ getList() {
+ this.tableLoading = true;
+ let param = { ...this.queryParams, ...this.page };
+ delete param.total;
+ selectUserList({ ...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();
+ },
+ handleSelectionChange(val) {
+ this.multipleSelections = val
+ },
addPerson() {
this.isSelectedList = this.trainingTableData.map(item => item.userId)
+ this.getList()
this.selectUserDia = true;
},
selectUser() {
- let selects = this.$refs.ValueTable.multipleSelection;
+ let selects = this.multipleSelections;
if (selects.length == 0) {
this.$message.error('鏈�夋嫨鏁版嵁');
return;
diff --git a/src/views/CNAS/resourceDemand/device/component/device-overview.vue b/src/views/CNAS/resourceDemand/device/component/device-overview.vue
index ae3e069..2efabd0 100644
--- a/src/views/CNAS/resourceDemand/device/component/device-overview.vue
+++ b/src/views/CNAS/resourceDemand/device/component/device-overview.vue
@@ -145,8 +145,8 @@
<template>
<div class="role_manage">
- <div>
- <el-form :model="entity" inline label-position="right" label-width="80px">
+ <div style="margin-top: 10px">
+ <el-form :model="entity" inline label-position="right">
<el-form-item label="鐘舵��:">
<el-select v-model="entity.deviceStatus" placeholder="鍏ㄩ儴" size="small" clearable>
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
@@ -164,24 +164,6 @@
@click="currentPage = 1, keyMap = {}, list = [], finishLoding = false, refreshTable()">鏌� 璇�</el-button>
</el-form-item>
</el-form>
- <!-- <div class="search_thing">
- <div class="search_label">鐘舵�侊細</div>
- <el-select v-model="entity.deviceStatus" placeholder="鍏ㄩ儴" size="small" clearable>
- <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
- </el-option>
- </el-select>
- </div>
- <div class="search_thing">
- <div class="search_label">璁惧鍚嶇О锛�</div>
- <div class="search_input">
- <el-input size="small" placeholder="璇疯緭鍏�" clearable
- v-model="entity.deviceName"></el-input>
- </div>
- </div> -->
-
-
- <!-- <div class="search_thing" style="padding-left: 30px;">
- </div> -->
</div>
<div class="table" v-loading="loading">
<scroll-pagination @load="refreshTable()" :finishLoding="finishLoding" :list="list"
@@ -255,7 +237,6 @@
entity: {
deviceStatus: null,
deviceName: null,
- orderBy: { field: "id", order: "asc" }
},
options: [],
list: [],
@@ -298,8 +279,8 @@
...this.entity
}).then(res => {
if (res.code == 200) {
- this.total = res.data.body.total
- let list = res.data.body.records.map(m => {
+ this.total = res.data.total
+ let list = res.data.records.map(m => {
switch (m.deviceStatus) {
case 0:
// 姝e父
diff --git a/src/views/CNAS/resourceDemand/device/component/operationInstruction.vue b/src/views/CNAS/resourceDemand/device/component/operationInstruction.vue
index 436b01f..ab82ea4 100644
--- a/src/views/CNAS/resourceDemand/device/component/operationInstruction.vue
+++ b/src/views/CNAS/resourceDemand/device/component/operationInstruction.vue
@@ -31,9 +31,9 @@
<template v-slot="scope">
<el-button type="text" size="small" @click="downloadFile(scope.row.fileSystemName)">涓嬭浇</el-button>
<el-button type="text" size="small" style="color: red;"
- @click="deleteHomeworkGuidebook(scope.row)">鍒犻櫎</el-button>
- <el-button type="text" size="small" @click="instructionEditFun(scope.row)">缂栬緫</el-button>
- <el-button type="text" size="small" @click="approval(scope.row)">瀹℃壒</el-button>
+ @click="deleteHomeworkGuidebook(scope.row)" :disabled="scope.row.status === true">鍒犻櫎</el-button>
+ <el-button type="text" size="small" @click="instructionEditFun(scope.row)" :disabled="scope.row.status === true">缂栬緫</el-button>
+ <el-button type="text" size="small" @click="approval(scope.row)" :disabled="scope.row.status === true">瀹℃壒</el-button>
</template>
</el-table-column>
</el-table>
@@ -309,18 +309,7 @@
});
},
downloadFile(fileName) {
- let state = /\.(jpg|jpeg|png|gif)$/i.test(fileName)
- if (state) {
- let url = this.javaApi + '/img/' + fileName;
- fileDownload.downloadIamge(url, fileName)
- } else {
- const url = this.javaApi + '/word/' + fileName
- const link = document.createElement('a');
- link.href = url;
- link.download = fileName;
- link.click();
- this.$message.success('涓嬭浇鎴愬姛')
- }
+ this.$download.saveAs(fileName, fileName)
},
instructionEditFun(row) {
this.dialogVisible = true
diff --git a/src/views/CNAS/resourceDemand/device/component/resource-reservation.vue b/src/views/CNAS/resourceDemand/device/component/resource-reservation.vue
index b23611b..7f3806b 100644
--- a/src/views/CNAS/resourceDemand/device/component/resource-reservation.vue
+++ b/src/views/CNAS/resourceDemand/device/component/resource-reservation.vue
@@ -2,8 +2,7 @@
<template>
<div class="role_manage">
<el-row class="title">
- <el-col :span="8" style="text-align: left;">棰勫畾鎬昏</el-col>
- <el-col :span="16" style="text-align: right;padding-bottom:10px">
+ <el-col :span="24" style="text-align: right;padding:10px 0">
<el-date-picker
v-model="startTime"
format="yyyy-MM-dd"
@@ -19,7 +18,7 @@
size="mini"
type="date"
value-format="yyyy-MM-dd"/>
- <el-button size="mini" type="primary" @click="ValidateAndQuery">鏌� 璇�</el-button>
+ <el-button size="mini" type="primary" @click="ValidateAndQuery" style="margin-left: 10px">鏌� 璇�</el-button>
</el-col>
</el-row>
<div class="table-container">
@@ -134,7 +133,6 @@
}
},
data() {
-
return {
timeSlots: ['09:00-12:00', '13:00-18:00', '18:00-22:00'],
dates: [],
@@ -154,7 +152,6 @@
startTime: '',
endTime: '',
entity: {
- deviceName: null,
laboratoryName: '',
storagePoint: '',
},
@@ -169,15 +166,6 @@
reservationSpecification: ''
},
total: '',
- componentData: {
- entity: {
- largeCategory: null,
- orderBy: {
- field: 'id',
- order: 'asc'
- }
- },
- },
yuyue: null,
yuyuetime: '',
rules: {
@@ -202,14 +190,12 @@
this.clickSidebar(newVal)
}
},
-
created() {
this.clickSidebar(this.clickNodeVal)
this.initDate();
},
mounted() {
- this.getStartTimeAndEndTime();
-
+ // this.getStartTimeAndEndTime();
},
methods: {
isBeforeDate() {
@@ -218,7 +204,7 @@
const appointment = this.appointment && this.appointment.split('-')
let appointment0 = ''
let appointment1 = ''
- if (appointment !== '') {
+ if (appointment) {
appointment0 = appointment[0].slice(0, 2)
appointment1 = appointment[1].slice(0, 2)
}
@@ -238,7 +224,7 @@
if (!row || row.dateList === null || row.dateList === undefined || row.dateList === "") {
return '棰勭害';
}
- var dateLst = row.dateList
+ const dateLst = row.dateList
for (const dateLstElement of dateLst) {
if (dateLstElement.date === date) {
if (dateLstElement.value === 0) {
@@ -312,12 +298,16 @@
getStartTimeAndEndTime() {
//鏌ヨ閫昏緫
this.tableLoading = true;
- reservationSelectDevice({
- current: this.currentPage,
- size: this.pageSize,
- ...this.entity,
- laboratoryNameIsNull: this.laboratoryNameIsNull
- }).then(res => {
+ const params = {
+ current: this.currentPage,
+ size: this.pageSize,
+ starttime: this.startTime,
+ endtime: this.endTime,
+ laboratoryNameIsNull: this.laboratoryNameIsNull,
+ laboratoryName: this.entity.laboratoryName,
+ storagePoint: this.entity.storagePoint,
+ }
+ reservationSelectDevice(params).then(res => {
this.tableLoading = false;
if (res.code === 200) {
this.tableData = res.data;
@@ -326,17 +316,20 @@
this.tableLoading = false;
})
},
+ // 鎵撳紑棰勭害寮规
openModal(date, row) {
+ console.log('date', date);
+ console.log('row', row);
this.yuyue = row;
this.yuyuetime = date;
this.appointment = row.time
this.showModal = true;
this.getList();
},
+ // 鎵撳紑鏂板缓棰勫畾寮规
openAdd() {
this.addVisiable = true;
this.addReservation.deviceId = this.yuyue.id;
- // this.addReservation.deviceNumber = this.yuyue.deviceNumber;
this.addReservation.deviceName = this.yuyue.deviceName;
this.addReservation.reservationTime = this.yuyuetime + " " + this.yuyue.time;
this.addReservation.specificTime = this.yuyue.time;
@@ -393,9 +386,10 @@
}
});
},
+ // 棰勫畾淇℃伅鏌ヨ
getList() {
const params = {
- selectReservationParameterPage: this.yuyue.id,
+ deviceId: this.yuyue.id,
reservationTime: this.yuyuetime,
specificTime: this.yuyue.time,
}
--
Gitblit v1.9.3