代码提交

master
zhangdi 11 months ago
parent ebde89d922
commit 0fe3d0bdab
  1. 8
      src/api/operation/hand.js
  2. 162
      src/option/system/dictbiz.js
  3. 7
      src/views/businessManagement/inspection/plan.vue
  4. 110
      src/views/businessManagement/inspection/repair.vue
  5. 9
      src/views/businessManagement/inspection/task.vue
  6. 44
      src/views/components/requestSub.vue
  7. 74
      src/views/labManagement/inspectionManagement.vue
  8. 4
      src/views/system/dictbiz.vue
  9. 2
      src/views/system/user.vue

@ -259,7 +259,13 @@ export const getAllUser = (query) =>{
params:query
})
}
export const getAllLab = (query) =>{
return request({
url:"/api/blade-system/dept/assLimsTree",
method:'get',
params:query
})
}
// 客服直接关闭接口
export const serviceSubmit = (data) =>{

@ -39,47 +39,47 @@ export const optionParent = {
}
]
},
{
label: "字典排序",
prop: "sort",
type: "number",
align: "right",
width: 100,
hide: true,
rules: [
{
required: true,
message: "请输入字典排序",
trigger: "blur"
}
]
},
{
label: "封存",
prop: "isSealed",
type: "switch",
align: "center",
width: 100,
dicData: [
{
label: "否",
value: 0
},
{
label: "是",
value: 1
}
],
value: 0,
slot: true,
rules: [
{
required: true,
message: "请选择封存",
trigger: "blur"
}
]
},
// {
// label: "字典排序",
// prop: "sort",
// type: "number",
// align: "right",
// width: 100,
// hide: true,
// rules: [
// {
// required: true,
// message: "请输入字典排序",
// trigger: "blur"
// }
// ]
// },
// {
// label: "封存",
// prop: "isSealed",
// type: "switch",
// align: "center",
// width: 100,
// dicData: [
// {
// label: "否",
// value: 0
// },
// {
// label: "是",
// value: 1
// }
// ],
// value: 0,
// slot: true,
// rules: [
// {
// required: true,
// message: "请选择封存",
// trigger: "blur"
// }
// ]
// },
{
label: "字典备注",
prop: "remark",
@ -162,46 +162,46 @@ export const optionChild = {
}
]
},
{
label: "字典排序",
prop: "sort",
type: "number",
align: "right",
hide: true,
rules: [
{
required: true,
message: "请输入字典排序",
trigger: "blur"
}
]
},
{
label: "封存",
prop: "isSealed",
type: "switch",
align: "center",
width: 80,
dicData: [
{
label: "否",
value: 0
},
{
label: "是",
value: 1
}
],
value: 0,
slot: true,
rules: [
{
required: true,
message: "请选择封存",
trigger: "blur"
}
]
},
// {
// label: "字典排序",
// prop: "sort",
// type: "number",
// align: "right",
// hide: true,
// rules: [
// {
// required: true,
// message: "请输入字典排序",
// trigger: "blur"
// }
// ]
// },
// {
// label: "封存",
// prop: "isSealed",
// type: "switch",
// align: "center",
// width: 80,
// dicData: [
// {
// label: "否",
// value: 0
// },
// {
// label: "是",
// value: 1
// }
// ],
// value: 0,
// slot: true,
// rules: [
// {
// required: true,
// message: "请选择封存",
// trigger: "blur"
// }
// ]
// },
{
label: "字典备注",
prop: "remark",

@ -121,6 +121,13 @@ import { nextTick } from 'vue';
refreshBtn: false,
columnBtn: false,
menuWidth: 300,
searchShowBtn: false,   //
        refreshBtn: false,      //
        columnBtn: false,       //
        gridBtn:false,
        excelBtn: false,       // Excel
        printBtn: false,       //
        filterBtn: false,      //
column: [
{
label: "巡检单号",

@ -155,10 +155,21 @@
:disabled="(errorForm.repairStatus == 1 || errorForm.repairStatus == 101) && errorForm.approvePoint == '主管审核维修方案'"></el-input>
</el-form-item>
</div>
<!-- <el-form-item v-if="errorForm.repairStatus == 1 && errorForm.approvePoint == '主管审核维修方案'" label="审批人">
<el-input v-model="errorForm.approveTime" style="width: 98%;" :disabled="errorForm.repairStatus == 1 && errorForm.approvePoint == '主管审核维修方案'"></el-input>
</el-form-item> -->
<!-- 维修完成 -->
<div v-show="errorForm.repairStatus == 4 || errorForm.repairStatus == 5 || errorForm.repairStatus == 6 || errorForm.repairStatus == 7 || errorForm.repairStatus == 8">
<el-form-item label="维修完成图片" prop="signaturePerson" v-if="errorForm.repairStatus == 4">
<el-upload action="/api/blade-resource/oss/endpoint/put-file" list-type="picture-card" :headers="headers"
accept=".jpeg,.jpg,.png,.pdf" :file-list="completeImgList" :on-success="handleSuccess"
:on-remove="handleRemove">
<i class="el-icon-plus"></i>
</el-upload>
</el-form-item>
<el-form-item label="维修完成图片" prop="signaturePerson" v-else>
<img v-for="item in completeImgList" :key="item" :src="item.url" alt=""
style="width: 148px; height: 148px;margin-right:10px;">
</el-form-item>
</div>
<div v-show="dataTypes == 1 && errorForm.repairStatus == 3 && viewType != 'view'">
<div style="
color: #101010;
@ -182,7 +193,7 @@
</div>
<div
v-show="dataTypes == 1 && (errorForm.repairStatus == 5 || errorForm.repairStatus == 6 || errorForm.repairStatus == 7 || errorForm.repairStatus == 8)">
v-show="(errorForm.repairStatus == 5 || errorForm.repairStatus == 6 || errorForm.repairStatus == 7 || errorForm.repairStatus == 8)">
<div style="
color: #101010;
font-size: 20px;
@ -281,7 +292,7 @@
</div>
</div>
</div>
<div v-show="nameImg == '' && (rowStatus == 5 || isEvalute) && errorForm.approveResult1 == 1">
<div v-show=" (rowStatus == 5 || errorForm.repairStatus == 6||errorForm.repairStatus == 7||errorForm.repairStatus == 8||isEvalute) && errorForm.approveResult1 == 1">
<div style="
color: #101010;
font-size: 20px;
@ -290,43 +301,21 @@
">
签名
</div>
<div style="margin-bottom: 10px;cursor: pointer;" @click="clickAssign">
<img src="@/assets/images/assign.png" alt="">
</div>
<div v-show="nameImg != ''" @click="clickAssign">
<img :src="nameImg" alt="">
</div>
<div v-show="!isEvalute">
<img :src="errorForm.signatureUrl" alt="">
</div>
<!-- <el-form-item label="签名人" prop="signaturePerson">
<el-input :readonly="!isEvalute" placeholder="请输入签名人" v-model="errorForm.signaturePerson"></el-input>
</el-form-item> -->
<!-- <el-form-item label="签名时间" prop="signatureTime">
<el-date-picker :disabled="viewType == 'view'" v-model="errorForm.signatureTime" type="datetime"
style="width:98%;" format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择签名时间">
</el-date-picker>
</el-form-item> -->
<div style="margin-bottom: 10px;cursor: pointer;" @click="clickAssign"
v-show="nameImg == ''&& ( errorForm.repairStatus == 5)">
<img src="@/assets/images/assign.png" alt="">
</div>
<div v-show="nameImg != ''&& ( errorForm.repairStatus == 5)" @click="clickAssign">
<img :src="nameImg" alt="">
</div>
<!-- 维修完成 -->
<!-- 维修人员 上传维修完成图片列表 403 104 202 203 204 400-->
<div
v-show="errorForm.status == 403 || errorForm.status == 103 || errorForm.status == 104 || errorForm.status == 202 || errorForm.status == 203 || errorForm.status == 204 || errorForm.status == 400">
<el-form-item label="维修完成图片" prop="signaturePerson" v-if="errorForm.status == 103">
<el-upload action="/api/blade-resource/oss/endpoint/put-file" list-type="picture-card"
:headers="headers" accept=".jpeg,.jpg,.png,.pdf" :file-list="completeImgList"
:on-success="handleSuccess" :on-remove="handleRemove">
<i class="el-icon-plus"></i>
</el-upload>
</el-form-item>
<el-form-item label="维修完成图片" prop="signaturePerson" v-else>
<img v-for="item in completeImgList" :key="item" :src="item.url" alt=""
style="width: 148px; height: 148px;margin-right:10px;">
</el-form-item>
<div v-show="errorForm.signatureUrl != '' && ( errorForm.repairStatus == 6||errorForm.repairStatus == 7||errorForm.repairStatus == 8 )">
<img :src="errorForm.signatureUrl" alt="">
</div>
</div>
</div>
</el-form>
</div>
<span slot="footer" class="dialog-footer">
@ -432,6 +421,7 @@ import routingInspection from '@/views/components/routingInspection.vue'
import { getGoodsList } from '@/api/goodsManagement/goods'
import { exportBlob1, zipDownload } from "@/api/common";
import { downloadXls } from "@/util/util";
import moment from "moment";
export default {
components: {
routingInspection
@ -439,7 +429,6 @@ export default {
data() {
return {
isClear: false,
nameImg: '',
materialVisible: false,
assignVisible: false,
routingForm: {},
@ -463,6 +452,13 @@ export default {
refreshBtn: false,
columnBtn: false,
menuWidth: 300,
searchShowBtn: false,   //
refreshBtn: false,      //
columnBtn: false,       //
gridBtn: false,
excelBtn: false,       // Excel
printBtn: false,       //
filterBtn: false,      //
column: [
{
label: "任务单号",
@ -824,7 +820,12 @@ export default {
this.errorForm.tableData.map(item => {
item.price = item.price == -1 ? '' : item.price
})
// completeImgList
this.completeImgList = JSON.parse(this.errorForm.completeImgList)
this.errorForm.approveResult1 = this.errorForm.approveResult
this.nameImg = ''
this.getSpanArr(this.errorForm.tableData)
}
})
// this.errorForm = row
@ -843,6 +844,8 @@ export default {
this.errorForm.isOkQuality = ''
this.errorForm.isOkSecure = ''
let data = this.checkDeepData(res.data.data.details)
this.completeImgList = this.errorForm.completeImgList==''?[]:JSON.parse(this.errorForm.completeImgList)
if (this.errorForm.repairStatus > 1) {
data.forEach(item => {
if (item.detailGoodsList.length > 0) {
@ -958,6 +961,10 @@ export default {
//
handleConfirm() {
if (this.errorForm.approveResult1 == 0) {//
if(this.errorForm.approveRemark ==''){
this.$message.success('请输入原因!')
return false
}
let query = {
id: this.errorForm.id,
approveResult: this.errorForm.approveResult1,
@ -976,6 +983,11 @@ export default {
if (this.nameImg != '') {
const formData = new FormData();
formData.append('file', this.base64toFile(this.nameImg));
if(this.errorForm.isOkValidity==''||this.errorForm.isOkQuality==''||this.errorForm.isOkSecure==''){
this.$message.error('请填写满意度')
return false
}
addFile(formData).then(res => {
let query = {
id: this.errorForm.id,
@ -995,8 +1007,6 @@ export default {
}
})
})
} else {
this.$message.warning("请进行手写签名并点击确定按钮")
}
@ -1221,23 +1231,15 @@ export default {
}
else if (this.viewType == 'repairupload') {
//
let params={
task: {
id: this.errorForm.id,
},
completeImgList:JSON.stringify(this.completeImgList)
}
solutionSave(params).then(res => {
servicemanSubmit({ id: this.errorForm.id, completeImgList: JSON.stringify(this.completeImgList) }).then(res => {
if (res.data.code == 200) {
// servicemanSubmit({ id: row.id }).then(res => {
// if (res.data.code == 200) {
// this.$message.success('')
// this.onLoad()
// }
// })
this.$message.success('维修完成')
this.dialogerror = false
this.onLoad()
}
})
}
// this.$confirm('?', '', {
// confirmButtonText: '',

@ -458,6 +458,13 @@ export default {
refreshBtn: false,
columnBtn: false,
menuWidth: 300,
searchShowBtn: false,   //
        refreshBtn: false,      //
        columnBtn: false,       //
        gridBtn:false,
        excelBtn: false,       // Excel
        printBtn: false,       //
        filterBtn: false,      //
column: [
{
label: "任务单号",
@ -1128,7 +1135,7 @@ export default {
console.log('query=========>', query, this.addForm)
taskSupervisorConfirm(query).then(res => {
if (res.data.code == 200) {
this.$message.success('审核完成')
this.$message.success('操作成功')
this.dialogVisible = false
this.onLoad()
}

@ -46,7 +46,7 @@
</template>
<template slot-scope="{disabled,type}" slot="informant">
<el-select v-model="item.form.informant" placeholder="请选择关联实验室" @change="(val) => changeLab(val,index)">
<el-option v-for="item in labData" :key="item.id" :label="item.deptName + '(' + item.phone + ')'" :value="item.id"></el-option>
<el-option v-for="item in labData" :key="item.id" :label="item.title" :value="item.id"></el-option>
</el-select>
</template>
<template slot-scope="{disabled,size}" slot="imgUrl">
@ -75,7 +75,7 @@ import {getToken, removeToken, removeRefreshToken} from '@/util/auth';
import SelectTree from '../../components/selectTree/tree.vue'
import { getDeviceList } from '@/api/device/device'
import { getChildList } from '@/api/system/dictbiz'
import { saveData, editData, saveDraft,serviceSave,serviceDraft,getAllUser } from '@/api/operation/hand'
import { saveData, editData, saveDraft,serviceSave,serviceDraft,getAllUser,getAllLab } from '@/api/operation/hand'
import { nextTick } from 'vue';
import Compressor from 'compressorjs';
import { mapGetters } from "vuex";
@ -573,47 +573,9 @@ export default {
methods: {
getLabData(){
getAllUser().then(res =>{
console.log()
getAllLab().then(res =>{
this.labData = res.data.data
})
// this.labData = [
// {
// id: "1859474667806449666",
// createUser: "-1",
// createDept: "-1",
// createTime: "2024-11-21 13:51:23",
// updateUser: "1123598821738675201",
// updateTime: "2024-12-05 15:35:54",
// status: 1,
// isDeleted: 0,
// tenantId: "000000",
// code: "",
// userType: 1,
// account: "17852327323",
// name: "",
// realName: "",
// avatar: "",
// email: "",
// phone: "17852327323",
// birthday: "",
// sex: -1,
// roleId: "1846419477876510721",
// deptId: "1862052949173280770",
// deptName: "",
// postId: "1839605322925801474",
// address: "33",
// addressLon: "120.48031277706768",
// addressLat: "36.11160956229114",
// isMaintenanceClient: -1,
// tenantName: "",
// userTypeName: "WEB",
// roleName: "",
// postName: "",
// sexName: "",
// userExt: ""
// }
// ]
},
//
changeLab(val,index){

@ -1,14 +1,6 @@
<template>
<el-row>
<!-- <el-col :span="4">
<div class="box">
<el-scrollbar>
<basic-container>
<avue-tree :option="treeOption" :data="treeData" @node-click="nodeClick" />
</basic-container>
</el-scrollbar>
</div>
</el-col> -->
<el-col :span="24">
<basic-container>
<avue-crud :option="option" :search.sync="search" :table-loading="loading" :data="data" ref="crud"
@ -114,65 +106,12 @@ export default {
roleTreeObj: [],
treeDeptId: '',
treeData: [
// {
// hasChildren: true,
// id: "1123598813738675201",
// key: "1123598813738675201",
// parentId: "0",
// title: "",
// children: [
// {
// hasChildren: true,
// id: "1123598813738675202",
// key: "1123598813738675202",
// parentId: "1123598813738675202",
// title: "",
// value: "1123598813738675202",
// children: [
// {
// hasChildren: false,
// id: "1123598813738675204",
// key: "1123598813738675204",
// parentId: "1123598813738675204",
// title: "",
// value: "1123598813738675204",
// },
// {
// hasChildren: false,
// id: "1123598813738675205",
// key: "1123598813738675205",
// parentId: "1123598813738675205",
// title: "",
// value: "1123598813738675205",
// }
// ]
// },
// {
// hasChildren: true,
// id: "1123598813738675203",
// key: "1123598813738675203",
// parentId: "1123598813738675203",
// title: "",
// value: "1123598813738675203",
// }
// ]
// }
],
unitData: [],
treeOption: {
nodeKey: 'id',
// lazy: true,
// treeLoad: function (node, resolve) {
// const parentId = (node.level === 0) ? 0 : node.data.id;
// getDeptLazyTree(parentId).then(res => {
// resolve(res.data.data.map(item => {
// return {
// ...item,
// leaf: !item.hasChildren
// }
// }))
// });
// },
addBtn: false,
menu: false,
size: 'small',
@ -202,6 +141,13 @@ export default {
refreshBtn: false,
columnBtn: false,
menuWidth: 300,
searchShowBtn: false,   //
        refreshBtn: false,      //
        columnBtn: false,       //
        gridBtn:false,
        excelBtn: false,       // Excel
        printBtn: false,       //
        filterBtn: false,      //
column: [
{
label: "巡检计划单号",

@ -84,7 +84,7 @@
>
</el-button>
</template>
<template slot-scope="scope" slot="menu">
<!-- <template slot-scope="scope" slot="menu">
<el-button
type="text"
icon="el-icon-circle-plus-outline"
@ -93,7 +93,7 @@
v-if="userInfo.role_name.includes('admin')"
>新增子项
</el-button>
</template>
</template> -->
<template slot-scope="{row}" slot="isSealed">
<el-tag>{{ row.isSealed === 0 ? '否' : '是' }}</el-tag>
</template>

@ -251,7 +251,7 @@ export default {
display: false
},
{
label: "所属部门",
label: "所属机构",
prop: "deptName",
slot: true,
display: false

Loading…
Cancel
Save