Merge branch 'dev' of http://114.132.189.42:9002/r/center-lims-before-ruoyi into dev
| | |
| | | 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, |
| | | }); |
| | |
| | | //作业指导书 删除 |
| | | export function homeworkGuidebook(query) { |
| | | return request({ |
| | | url: "/deviceInstruction/homeworkGuidebook", |
| | | url: "/instruction/homeworkGuidebook", |
| | | method: "delete", |
| | | params: query, |
| | | }); |
| | |
| | | //作业指导书 编辑查询 |
| | | export function homeworkGuidebookEditor(query) { |
| | | return request({ |
| | | url: "/deviceInstruction/homeworkGuidebookEditor", |
| | | url: "/instruction/homeworkGuidebookEditor", |
| | | method: "get", |
| | | params: query, |
| | | }); |
| | |
| | | //作业指导书新增 |
| | | export function newHomeworkGuidebookAdded(data) { |
| | | return request({ |
| | | url: "/deviceInstruction/newHomeworkGuidebookAdded", |
| | | url: "/instruction/newHomeworkGuidebookAdded", |
| | | method: "post", |
| | | data: data, |
| | | }); |
| | |
| | | //作业指导书受控文件删除 |
| | | 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({ |
| | |
| | | params: query, |
| | | }); |
| | | } |
| | | //设备预约接口 |
| | | //设备预约接口 删除 |
| | | export function reservationDelete(query) { |
| | | return request({ |
| | | url: "/reservation/delete", |
| | |
| | | params: query, |
| | | }); |
| | | } |
| | | //设备预约接口 |
| | | //设备预约接口 保存 |
| | | export function reservationSave(query) { |
| | | return request({ |
| | | url: "/reservation/save", |
| | |
| | | <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"> |
| | |
| | | <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> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import ValueTable from '@/components/Table/value-table.vue'; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import { |
| | | getEmployees, |
| | | basicInformationOfPersonnelSelectPage, |
| | |
| | | upUserDepardLimsId, |
| | | exportPersonBasicInfo, |
| | | exportPersonBasicInfoById, |
| | | selectUserList, |
| | | } from '@/api/cnas/personnel/personnelInfo.js' |
| | | export default { |
| | | name: 'PersonnelList', |
| | | // import 引入的组件需要注入到对象中才能使用 |
| | | components: { ValueTable }, |
| | | components: { limsTable }, |
| | | props: { |
| | | departId: { |
| | | type: Number, |
| | |
| | | data() { |
| | | // 这里存放数据 |
| | | return { |
| | | entity: {}, |
| | | multipleSelection: [], |
| | | synchronousLoading: false, |
| | | page: { |
| | | size: 20, |
| | |
| | | outLoading: false, |
| | | tableLoading: false, |
| | | tableData: [], // 人员总列表数据 |
| | | selectUserDia: false, // 添加人员弹框 |
| | | entity: { |
| | | name: '', |
| | | orderBy: { |
| | | field: 'id', |
| | | order: 'asc' |
| | | } |
| | | }, |
| | | addUserTableInfo: { |
| | | name: null, |
| | | entity: { |
| | | isCustom: 0, |
| | | orderBy: { |
| | | field: 'id', |
| | | order: 'asc' |
| | | } |
| | | }, |
| | | isIndex: true, |
| | | showSelect: true, |
| | | select: true, |
| | | do: [], |
| | | tagField: { |
| | | state: { |
| | | select: [ |
| | | selectUserDia: false, // 添加人员弹框, |
| | | stateList: [ |
| | | { |
| | | value: 1, |
| | | type: 'success', |
| | |
| | | type: 'danger', |
| | | label: '停用' |
| | | } |
| | | ] |
| | | ], |
| | | queryParams: { |
| | | name: '' |
| | | }, |
| | | 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; |
| | | } |
| | | }, |
| | | selectField: {}, |
| | | upUserDepardLimsIdPower: true |
| | | 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" }, |
| | | ], |
| | | personPage: { |
| | | total: 0, |
| | | size: 10, |
| | | current: 0, |
| | | }, |
| | | tableLoading: false, |
| | | }; |
| | | }, |
| | | mounted() { |
| | |
| | | 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; |
| | |
| | | }); |
| | | 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) |
| | |
| | | <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> |
| | |
| | | <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, |
| | |
| | | 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, |
| | |
| | | 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: { |
| | |
| | | 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; |
| | |
| | | |
| | | <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"> |
| | |
| | | @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" |
| | |
| | | entity: { |
| | | deviceStatus: null, |
| | | deviceName: null, |
| | | orderBy: { field: "id", order: "asc" } |
| | | }, |
| | | options: [], |
| | | list: [], |
| | |
| | | ...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: |
| | | // 正常 |
| | |
| | | <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> |
| | |
| | | }); |
| | | }, |
| | | 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 |
| | |
| | | <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" |
| | |
| | | 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"> |
| | |
| | | } |
| | | }, |
| | | data() { |
| | | |
| | | return { |
| | | timeSlots: ['09:00-12:00', '13:00-18:00', '18:00-22:00'], |
| | | dates: [], |
| | |
| | | startTime: '', |
| | | endTime: '', |
| | | entity: { |
| | | deviceName: null, |
| | | laboratoryName: '', |
| | | storagePoint: '', |
| | | }, |
| | |
| | | reservationSpecification: '' |
| | | }, |
| | | total: '', |
| | | componentData: { |
| | | entity: { |
| | | largeCategory: null, |
| | | orderBy: { |
| | | field: 'id', |
| | | order: 'asc' |
| | | } |
| | | }, |
| | | }, |
| | | yuyue: null, |
| | | yuyuetime: '', |
| | | rules: { |
| | |
| | | this.clickSidebar(newVal) |
| | | } |
| | | }, |
| | | |
| | | created() { |
| | | this.clickSidebar(this.clickNodeVal) |
| | | this.initDate(); |
| | | }, |
| | | mounted() { |
| | | this.getStartTimeAndEndTime(); |
| | | |
| | | // this.getStartTimeAndEndTime(); |
| | | }, |
| | | methods: { |
| | | isBeforeDate() { |
| | |
| | | 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) |
| | | } |
| | |
| | | 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) { |
| | |
| | | getStartTimeAndEndTime() { |
| | | //查询逻辑 |
| | | this.tableLoading = true; |
| | | reservationSelectDevice({ |
| | | const params = { |
| | | current: this.currentPage, |
| | | size: this.pageSize, |
| | | ...this.entity, |
| | | laboratoryNameIsNull: this.laboratoryNameIsNull |
| | | }).then(res => { |
| | | 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; |
| | |
| | | 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; |
| | |
| | | } |
| | | }); |
| | | }, |
| | | // 预定信息查询 |
| | | getList() { |
| | | const params = { |
| | | selectReservationParameterPage: this.yuyue.id, |
| | | deviceId: this.yuyue.id, |
| | | reservationTime: this.yuyuetime, |
| | | specificTime: this.yuyue.time, |
| | | } |