修改首页工作台样式

master
jinna 1 year ago
parent a474c2eba7
commit 2246cbe40e
  1. 6
      src/views/businessManagement/ordinary.vue
  2. 64
      src/views/goodsManagement/goodsList.vue
  3. 1
      src/views/labManagement/components/addDialog.vue
  4. 300
      src/views/operation/hand.vue
  5. 198
      src/views/workbench/index.vue

@ -3,7 +3,7 @@
<avue-crud :search.sync="searchForm" :option="option" :table-loading="loading" :data="data" :page.sync="page" <avue-crud :search.sync="searchForm" :option="option" :table-loading="loading" :data="data" :page.sync="page"
ref="crud" v-model="form" :permission="permissionList" :before-open="beforeOpen" :before-close="beforeClose" ref="crud" v-model="form" :permission="permissionList" :before-open="beforeOpen" :before-close="beforeClose"
@search-change="searchChange" @search-reset="searchReset" @current-change="currentChange" @search-change="searchChange" @search-reset="searchReset" @current-change="currentChange"
@size-change="sizeChange" @refresh-change="refreshChange" @selection-change="selectSection"> @size-change="sizeChange" @refresh-change="refreshChange" @selection-change="selectSection" @sort-change="sortChange">
<template slot-scope="{row}" slot="timeRangeSearch"> <template slot-scope="{row}" slot="timeRangeSearch">
<el-date-picker v-model="searchForm.timeRange" type="daterange" format="yyyy-MM-dd" value-format="yyyy-MM-dd" <el-date-picker v-model="searchForm.timeRange" type="daterange" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"> range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
@ -765,6 +765,7 @@ export default {
label: "完成时间", label: "完成时间",
labelWidth: 120, labelWidth: 120,
prop: "finishTime", prop: "finishTime",
sortable:true,
}, },
{ {
label: "审批时间", label: "审批时间",
@ -873,6 +874,9 @@ export default {
} }
}, },
methods: { methods: {
sortChange(val){
console.log('val============>',val)
},
handleInput(value) { handleInput(value) {
// 使 // 使
const regex = /^(\d+)?(\.\d{1,2})?$/; const regex = /^(\d+)?(\.\d{1,2})?$/;

@ -21,11 +21,11 @@
</template> </template>
<template slot-scope="scope" slot="menuLeft"> <template slot-scope="scope" slot="menuLeft">
<el-button type="primary" size="small" @click="handleAdd" v-show="permission.goodsAdd"> </el-button> <el-button type="primary" size="small" @click="handleAdd" v-show="permission.goodsAdd"> </el-button>
<el-button type="primary" size="small" @click="handleReceive" v-show="permission.goodsReceive"> </el-button> <!-- <el-button type="primary" size="small" @click="handleReceive" v-show="permission.goodsReceive"> </el-button> -->
<el-button type="primary" size="small" @click="handleReceive" v-show="permission.goodsReceive"> </el-button> <el-button type="primary" size="small" @click="handleReceive" v-show="permission.goodsReceive"> </el-button>
<el-button size="small" @click="handleImport" type="success"> </el-button> <el-button size="small" @click="handleImport" type="success"> </el-button>
<el-button type="warning" size="small" @click="handleExport"> </el-button> <el-button type="warning" size="small" @click="handleExport"> </el-button>
<!-- <el-button type="primary" size="small" @click="handlePurchase" v-show="permission.goodsBuy"> </el-button> --> <el-button type="primary" size="small" @click="handleAddGoods" v-show="permission.goodsBuy"> </el-button>
</template> </template>
<template slot-scope="{ row }" slot="menu"> <template slot-scope="{ row }" slot="menu">
<el-button @click="handleVide(row)" v-show="permission.goodsView">查看</el-button> <el-button @click="handleVide(row)" v-show="permission.goodsView">查看</el-button>
@ -163,7 +163,7 @@
<el-input placeholder="请输入存放位置" v-model="addForm.location" style="width: 97%;" :disabled="viewType == 'view' || isSelected"></el-input> <el-input placeholder="请输入存放位置" v-model="addForm.location" style="width: 97%;" :disabled="viewType == 'view' || isSelected"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="描述" prop="describes"> <el-form-item label="描述" prop="describes">
<el-input :disabled="viewType == 'view'" v-model="addForm.describes" type="textarea" placeholder="请输入描述" style="width: 97%;"></el-input> <el-input :disabled="viewType == 'view' || isSelected" v-model="addForm.describes" type="textarea" placeholder="请输入描述" style="width: 97%;"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="物品大类" prop="bigClassId"> <el-form-item label="物品大类" prop="bigClassId">
<SelectTree <SelectTree
@ -202,11 +202,16 @@
<el-form-item label="统一报价" prop="unifiedQuotation"> <el-form-item label="统一报价" prop="unifiedQuotation">
<el-input :disabled="viewType == 'view' || isSelected" placeholder="请输入统一报价" v-model="addForm.unifiedQuotation" style="width: 97%;"></el-input> <el-input :disabled="viewType == 'view' || isSelected" placeholder="请输入统一报价" v-model="addForm.unifiedQuotation" style="width: 97%;"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="关联仓库" prop="warehouseId">
<el-select v-model="addForm.warehouseId" placeholder="请选择关联仓库" :disabled="viewType == 'view' || isSelected" style="width: 97%;" @change="changeWare" v-loadmore="loadmoreWare">
<el-option v-for="item in warehouseList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="续订时间(天)" prop="renewNum"> <el-form-item label="续订时间(天)" prop="renewNum">
<el-input :disabled="viewType == 'view' || isSelected" placeholder="请输入续订时间" v-model="addForm.renewNum" style="width: 97%;"></el-input> <el-input :disabled="viewType == 'view' || isSelected" placeholder="请输入续订时间" v-model="addForm.renewNum" style="width: 97%;"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="是否已停产" prop="deactivate"> <el-form-item label="是否已停产" prop="deactivate">
<el-select placeholder="请选择是否已停产" v-model="addForm.deactivate" style="width: 97%;" :disabled="viewType == 'view'"> <el-select placeholder="请选择是否已停产" v-model="addForm.deactivate" style="width: 97%;" :disabled="viewType == 'view' || isSelected">
<el-option label="是" :value="1"></el-option> <el-option label="是" :value="1"></el-option>
<el-option label="否" :value="0"></el-option> <el-option label="否" :value="0"></el-option>
</el-select> </el-select>
@ -263,14 +268,20 @@ import { nextTick } from 'vue';
import { downloadXls } from "@/util/util"; import { downloadXls } from "@/util/util";
import {exportBlob} from "@/api/common"; import {exportBlob} from "@/api/common";
import {dateNow} from "@/util/date"; import {dateNow} from "@/util/date";
import {getList} from '@/api/goodsManagement/warehouse'
import NProgress from 'nprogress'; import NProgress from 'nprogress';
import 'nprogress/nprogress.css'; import 'nprogress/nprogress.css';
export default { export default {
components:{ components:{
SelectTree SelectTree
}, },
data(){ data(){
return { return {
warehouseList:[], //
warehouseCurrent:1,
warehouseSize:10,
warehouseTotal:0,
importVisible:false, importVisible:false,
purchaseForm:{}, purchaseForm:{},
purchaseRules:{}, purchaseRules:{},
@ -284,13 +295,7 @@ export default {
dialogWarning:false, dialogWarning:false,
addRules:{ addRules:{
name:{required:true,message:'请输入物品名称',trigger:'blur'}, name:{required:true,message:'请输入物品名称',trigger:'blur'},
// bigClassId:{required:true,message:'',trigger:'blur'},
// type:{required:true,message:'',trigger:'blur'},
// brand:{required:true,message:'',trigger:'blur'},
// xh:{required:true,message:'',trigger:'blur'},
// rule:{required:true,message:'',trigger:'blur'},
num:{required:true,message:'请输入库存数量',trigger:'blur'}, num:{required:true,message:'请输入库存数量',trigger:'blur'},
// unit:{required:true,message:'',trigger:'blur'},
}, },
dialogAdd:false, dialogAdd:false,
dialogTitle:'物品采购', dialogTitle:'物品采购',
@ -530,6 +535,7 @@ export default {
this.treeData = res.data.data this.treeData = res.data.data
this.treeOptions = res.data.data this.treeOptions = res.data.data
}) })
this.getWareList()
getChildList(1,100,'1848278876525527042').then(res =>{ getChildList(1,100,'1848278876525527042').then(res =>{
this.majorTypeList = res.data.data this.majorTypeList = res.data.data
}) })
@ -539,6 +545,26 @@ export default {
}, },
methods:{ methods:{
changeWare(val){
console.log('val---------->',val)
this.addForm.warehouseName = this.warehouseList.find(item => item.id == val).name
},
loadmoreWare(){
console.log('11111111111111111111')
if (this.warehouseCurrent * this.warehouseSize >= this.warehouseTotal) return
this.warehouseCurrent++
this.getWareList()
},
getWareList(){
getList({current:this.warehouseCurrent,size:this.warehouseSize}).then(res =>{
if(this.warehouseCurrent == 1){
this.warehouseList = res.data.data.records
}else{
this.warehouseList = this.warehouseList.concat(res.data.data.records)
}
this.warehouseTotal = res.data.data.total
})
},
loadmore(){ loadmore(){
console.log('this.goodsCurrent', this.goodsCurrent, this.goodsSize, this.goodsTotal) console.log('this.goodsCurrent', this.goodsCurrent, this.goodsSize, this.goodsTotal)
if (this.goodsCurrent * this.goodsSize >= this.goodsTotal) return if (this.goodsCurrent * this.goodsSize >= this.goodsTotal) return
@ -553,10 +579,12 @@ export default {
getGoodsList({current:1,size:100,name:this.goodsName}).then(res =>{ getGoodsList({current:1,size:100,name:this.goodsName}).then(res =>{
if(res.data.data.records.length != 0){ if(res.data.data.records.length != 0){
let tmp = res.data.data.records.find(item => item.name == val) let tmp = res.data.data.records.find(item => item.name == val)
console.log('tmp===========>',tmp)
if(tmp){ if(tmp){
this.isSelected = true this.isSelected = true
this.addForm = tmp this.addForm = tmp
this.addForm.warehouseId = this.addForm.warehouseId == -1 ? '' : this.addForm.warehouseId
this.addForm.unifiedQuotation = this.addForm.unifiedQuotation == -1 ? '' : this.addForm.unifiedQuotation
this.addForm.purchasePrice = this.addForm.purchasePrice == -1 ? '' : this.addForm.purchasePrice
this.addForm.num = 0 this.addForm.num = 0
this.addForm.bigClassId = {node:tmp.bigClassId,data:[]} this.addForm.bigClassId = {node:tmp.bigClassId,data:[]}
} }
@ -702,6 +730,9 @@ export default {
getDetail({id:row.id}).then(res =>{ getDetail({id:row.id}).then(res =>{
this.dialogTitle = '物品查看' this.dialogTitle = '物品查看'
this.addForm = res.data.data this.addForm = res.data.data
this.addForm.warehouseId = this.addForm.warehouseId == -1 ? '' : this.addForm.warehouseId
this.addForm.unifiedQuotation = this.addForm.unifiedQuotation == -1 ? '' : this.addForm.unifiedQuotation
this.addForm.purchasePrice = this.addForm.purchasePrice == -1 ? '' : this.addForm.purchasePrice
this.dialogAdd = true this.dialogAdd = true
this.viewType = 'view' this.viewType = 'view'
}) })
@ -712,7 +743,11 @@ export default {
this.dialogTitle = '物品编辑' this.dialogTitle = '物品编辑'
this.addForm = res.data.data this.addForm = res.data.data
this.addForm.bigClassId = {node:this.addForm.bigClassId,data:[]} this.addForm.bigClassId = {node:this.addForm.bigClassId,data:[]}
this.addForm.warehouseId = this.addForm.warehouseId == -1 ? '' : this.addForm.warehouseId
this.addForm.unifiedQuotation = this.addForm.unifiedQuotation == -1 ? '' : this.addForm.unifiedQuotation
this.addForm.purchasePrice = this.addForm.purchasePrice == -1 ? '' : this.addForm.purchasePrice
this.dialogAdd = true this.dialogAdd = true
this.isSelected = false
this.viewType = 'edit' this.viewType = 'edit'
}) })
}, },
@ -730,6 +765,8 @@ export default {
rule:this.addForm.rule, // rule:this.addForm.rule, //
unit:this.addForm.unit, // unit:this.addForm.unit, //
name:this.addForm.name, // name:this.addForm.name, //
warehouseId: this.addForm.warehouseId,
warehouseName: this.addForm.warehouseName
} }
] ]
} }
@ -750,6 +787,7 @@ export default {
...this.addForm, ...this.addForm,
bigClassId:this.addForm.bigClassId.node bigClassId:this.addForm.bigClassId.node
} }
console.log('addForm------------>',this.addForm)
saveGoods(query).then(res =>{ saveGoods(query).then(res =>{
if(res.data.code == 200){ if(res.data.code == 200){
this.$message.success('提交成功') this.$message.success('提交成功')
@ -769,7 +807,9 @@ export default {
rule:this.addForm.rule, rule:this.addForm.rule,
num:this.addForm.num, num:this.addForm.num,
unit:this.addForm.unit, unit:this.addForm.unit,
remark:this.addForm.remark remark:this.addForm.remark,
warehouseId: this.addForm.warehouseId,
warehouseName: this.addForm.warehouseName
} }
editGoods(query).then(res =>{ editGoods(query).then(res =>{
if(res.data.code == 200){ if(res.data.code == 200){

@ -363,7 +363,6 @@ export default {
getDetail({ id: val }).then(res => { getDetail({ id: val }).then(res => {
if (this.title == '新建') { if (this.title == '新建') {
console.log('tmp------------------->', this.tableData.find(item => item.deviceId == val)) console.log('tmp------------------->', this.tableData.find(item => item.deviceId == val))
let arr = [] let arr = []
res.data.data.maintenances.map(item => { res.data.data.maintenances.map(item => {
arr.push({ arr.push({

@ -32,7 +32,8 @@
: "" : ""
}} }}
</el-tag> --> </el-tag> -->
<el-tag :type="getStatus('maintain',role_id,row.status).type">{{ getStatus('maintain',role_id,row.status).name }}</el-tag> <el-tag :type="getStatus('maintain', role_id, row.status).type">{{ getStatus('maintain', role_id, row.status).name
}}</el-tag>
</template> </template>
<template slot-scope="{ type, disabled }" slot="statusForm"> <template slot-scope="{ type, disabled }" slot="statusForm">
<div v-if="type == 'view'"> <div v-if="type == 'view'">
@ -79,7 +80,7 @@
<el-button v-show="row.status == -1" @click="handleSubmit(row)">提交</el-button> <el-button v-show="row.status == -1" @click="handleSubmit(row)">提交</el-button>
<el-button v-show="row.status == 4" @click="confirmOrder(row)">确认</el-button> <el-button v-show="row.status == 4" @click="confirmOrder(row)">确认</el-button>
<el-button v-show="row.status == 6 || row.status == 20" @click="handleEvaluate(row)">评价</el-button> <el-button v-show="row.status == 6 || row.status == 20" @click="handleEvaluate(row)">评价</el-button>
<el-button @click="handleExport(row)">导出</el-button> <el-button @click="handleExport(row)">导出</el-button>
<!-- <el-button v-show="row.status == 9" @click="clickPrint(row)">发票打印</el-button> --> <!-- <el-button v-show="row.status == 9" @click="clickPrint(row)">发票打印</el-button> -->
</template> </template>
</avue-crud> </avue-crud>
@ -89,7 +90,7 @@
</div> </div>
</el-dialog> </el-dialog>
<el-dialog :title="detailTitle" :visible.sync="detailVisible" :append-to-body="true" width="50%"> <el-dialog :title="detailTitle" :visible.sync="detailVisible" :append-to-body="true" width="50%">
<div style="height:500px;overflow:auto;" > <div style="height:500px;overflow:auto;">
<el-form ref="form" :model="detailForm" label-width="150px" label-position="left"> <el-form ref="form" :model="detailForm" label-width="150px" label-position="left">
<div> <div>
<div style=" <div style="
@ -104,13 +105,16 @@
<el-input placeholder="请输入填报人" disabled v-model="detailForm.informantName" style="width: 98%;"></el-input> <el-input placeholder="请输入填报人" disabled v-model="detailForm.informantName" style="width: 98%;"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="填报人电话" prop="informantPhone" v-show="viewType == 'view'"> <el-form-item label="填报人电话" prop="informantPhone" v-show="viewType == 'view'">
<el-input placeholder="请输入填报人电话" disabled v-model="detailForm.informantPhone" style="width: 98%;"></el-input> <el-input placeholder="请输入填报人电话" disabled v-model="detailForm.informantPhone"
style="width: 98%;"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="故障现象描述" prop="faultDescribe"> <el-form-item label="故障现象描述" prop="faultDescribe">
<el-input placeholder="请输入故障现象描述" disabled type="textarea" v-model="detailForm.faultDescribe" style="width: 98%;"></el-input> <el-input placeholder="请输入故障现象描述" disabled type="textarea" v-model="detailForm.faultDescribe"
style="width: 98%;"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="故障位置" prop="faultLocation" v-show="viewType == 'view'"> <el-form-item label="故障位置" prop="faultLocation" v-show="viewType == 'view'">
<el-input placeholder="请输入故障位置" disabled v-model="detailForm.faultLocation" style="width: 98%;"></el-input> <el-input placeholder="请输入故障位置" disabled v-model="detailForm.faultLocation"
style="width: 98%;"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="设备名称" prop="deviceName" v-show="viewType == 'view'"> <el-form-item label="设备名称" prop="deviceName" v-show="viewType == 'view'">
<!-- <el-select <!-- <el-select
@ -136,7 +140,8 @@
<video v-show="detailForm.errorVideo != ''" :src="detailForm.errorVideo" <video v-show="detailForm.errorVideo != ''" :src="detailForm.errorVideo"
style="width: 148px; height: 148px" controls></video> style="width: 148px; height: 148px" controls></video>
</el-form-item> </el-form-item>
<el-form-item label="故障图片" v-show="viewType == 'view' && detailForm.errorImg && detailForm.errorImg.length != 0"> <el-form-item label="故障图片"
v-show="viewType == 'view' && detailForm.errorImg && detailForm.errorImg.length != 0">
<img v-for="item in detailForm.errorImg" :key="item" :src="item.url" alt="" <img v-for="item in detailForm.errorImg" :key="item" :src="item.url" alt=""
style="width: 148px; height: 148px;margin-right:10px;"> style="width: 148px; height: 148px;margin-right:10px;">
</el-form-item> </el-form-item>
@ -146,7 +151,7 @@
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</div> </div>
<div v-show="rowStatus == 20"> <div v-show="rowStatus == 20 && detailForm.closeReason != ''">
<div style=" <div style="
color: #101010; color: #101010;
font-size: 20px; font-size: 20px;
@ -159,7 +164,7 @@
<el-input type="textarea" v-model="detailForm.closeReason" disabled></el-input> <el-input type="textarea" v-model="detailForm.closeReason" disabled></el-input>
</el-form-item> </el-form-item>
</div> </div>
<div v-show="rowStatus != 0 && rowStatus != 20"> <div v-show="rowStatus != 0 && rowStatus != 20 && detailForm.closeReason == ''">
<div style=" <div style="
color: #101010; color: #101010;
font-size: 20px; font-size: 20px;
@ -177,7 +182,8 @@
<el-input type="textarea" v-model="detailForm.customerOpinion" disabled style="width: 98%;"></el-input> <el-input type="textarea" v-model="detailForm.customerOpinion" disabled style="width: 98%;"></el-input>
</el-form-item> </el-form-item>
</div> </div>
<div v-show="rowStatus != 0 && rowStatus != 20 && rowStatus != 1 && rowStatus != 2 && rowStatus != 3"> <div
v-show="rowStatus != 0 && rowStatus != 20 && rowStatus != 1 && rowStatus != 2 && rowStatus != 3 && detailForm.closeReason == ''">
<div style=" <div style="
color: #101010; color: #101010;
font-size: 20px; font-size: 20px;
@ -187,7 +193,8 @@
维修详情 维修详情
</div> </div>
<el-form-item label="填报人" prop="repairPersonName"> <el-form-item label="填报人" prop="repairPersonName">
<el-input placeholder="请输入填报人" disabled v-model="detailForm.repairPersonName" style="width: 98%;"></el-input> <el-input placeholder="请输入填报人" disabled v-model="detailForm.repairPersonName"
style="width: 98%;"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="设备名称" prop="deviceId"> <el-form-item label="设备名称" prop="deviceId">
<!-- <el-select placeholder="请选择设备名称" disabled v-model="detailForm.deviceId" style="width: 100%"> <!-- <el-select placeholder="请选择设备名称" disabled v-model="detailForm.deviceId" style="width: 100%">
@ -196,10 +203,12 @@
<el-input placeholder="请输入设备名称" v-model="detailForm.deviceName" disabled style="width: 98%;"></el-input> <el-input placeholder="请输入设备名称" v-model="detailForm.deviceName" disabled style="width: 98%;"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="故障原因" prop="faultCause"> <el-form-item label="故障原因" prop="faultCause">
<el-input placeholder="请输入故障原因" disabled type="textarea" v-model="detailForm.faultCause" style="width: 98%;"></el-input> <el-input placeholder="请输入故障原因" disabled type="textarea" v-model="detailForm.faultCause"
style="width: 98%;"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="处理方法" prop="processMethod"> <el-form-item label="处理方法" prop="processMethod">
<el-input placeholder="请输入处理方法" disabled type="textarea" v-model="detailForm.processMethod" style="width: 98%;"></el-input> <el-input placeholder="请输入处理方法" disabled type="textarea" v-model="detailForm.processMethod"
style="width: 98%;"></el-input>
</el-form-item> </el-form-item>
<!-- <el-form-item label="是否需要申领物料" prop="isNeedMaterial"> <!-- <el-form-item label="是否需要申领物料" prop="isNeedMaterial">
<el-select v-model="detailForm.isNeedMaterial" placeholder="请选择是否申领物料" disabled style="width:98%;"> <el-select v-model="detailForm.isNeedMaterial" placeholder="请选择是否申领物料" disabled style="width:98%;">
@ -246,14 +255,14 @@
<el-option label="驳回" :value="0"></el-option> <el-option label="驳回" :value="0"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="审批意见" prop="approveRemark" > <el-form-item label="审批意见" prop="approveRemark">
<el-input type="textarea" v-model="detailForm.approveRemark" style="width: 98%;" disabled></el-input> <el-input type="textarea" v-model="detailForm.approveRemark" style="width: 98%;" disabled></el-input>
</el-form-item> </el-form-item>
<el-form-item v-show="rowStatus == 5" label="审批人" prop="approvePersonName"> <el-form-item v-show="rowStatus == 5" label="审批人" prop="approvePersonName">
<el-input v-model="detailForm.approvePersonName" style="width: 98%;" disabled></el-input> <el-input v-model="detailForm.approvePersonName" style="width: 98%;" disabled></el-input>
</el-form-item> </el-form-item>
<el-form-item v-show="rowStatus == 5" label="审批时间" prop="approveTime"> <el-form-item v-show="rowStatus == 5" label="审批时间" prop="approveTime">
<el-input v-model="detailForm.approveTime" style="width: 98%;" disabled></el-input> <el-input v-model="detailForm.approveTime" style="width: 98%;" disabled></el-input>
</el-form-item> </el-form-item>
</div> </div>
<div v-show="(rowStatus == 4 || rowStatus == 5) && viewType != 'view'"> <div v-show="(rowStatus == 4 || rowStatus == 5) && viewType != 'view'">
@ -266,19 +275,21 @@
客户审批 客户审批
</div> </div>
<el-form-item label="审批结果" prop="approveResult"> <el-form-item label="审批结果" prop="approveResult">
<el-select style="width: 98%;" placeholder="请选择审批结果" v-model="detailForm.approveResult" :disabled="rowStatus == 5"> <el-select style="width: 98%;" placeholder="请选择审批结果" v-model="detailForm.approveResult"
:disabled="rowStatus == 5">
<el-option label="通过" :value="1"></el-option> <el-option label="通过" :value="1"></el-option>
<el-option label="驳回" :value="0"></el-option> <el-option label="驳回" :value="0"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="审批意见" prop="approveRemark" > <el-form-item label="审批意见" prop="approveRemark">
<el-input type="textarea" v-model="detailForm.approveRemark" style="width: 98%;" :disabled="rowStatus == 5"></el-input> <el-input type="textarea" v-model="detailForm.approveRemark" style="width: 98%;"
:disabled="rowStatus == 5"></el-input>
</el-form-item> </el-form-item>
<el-form-item v-show="rowStatus == 5" label="审批人" prop="approvePersonName"> <el-form-item v-show="rowStatus == 5" label="审批人" prop="approvePersonName">
<el-input v-model="detailForm.approvePersonName" style="width: 98%;" disabled></el-input> <el-input v-model="detailForm.approvePersonName" style="width: 98%;" disabled></el-input>
</el-form-item> </el-form-item>
<el-form-item v-show="rowStatus == 5" label="审批时间" prop="approveTime"> <el-form-item v-show="rowStatus == 5" label="审批时间" prop="approveTime">
<el-input v-model="detailForm.approveTime" style="width: 98%;" disabled></el-input> <el-input v-model="detailForm.approveTime" style="width: 98%;" disabled></el-input>
</el-form-item> </el-form-item>
</div> </div>
<div v-show="rowStatus == 6"> <div v-show="rowStatus == 6">
@ -291,17 +302,20 @@
维修效果确认 维修效果确认
</div> </div>
<el-form-item label="是否维修完成"> <el-form-item label="是否维修完成">
<el-select placeholder="请确认是否维修完成" style="width: 98%;" v-model="detailForm.approveResult1" @change="changeResult" :disabled="viewType == 'view'"> <el-select placeholder="请确认是否维修完成" style="width: 98%;" v-model="detailForm.approveResult1"
@change="changeResult" :disabled="viewType == 'view'">
<el-option label="是" :value="1"></el-option> <el-option label="是" :value="1"></el-option>
<el-option label="否" :value="0"></el-option> <el-option label="否" :value="0"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="维修未完成原因" v-show="rowStatus == 6 && detailForm.approveResult1 == 0"> <el-form-item label="维修未完成原因" v-show="rowStatus == 6 && detailForm.approveResult1 == 0">
<el-input type="textarea" v-model="detailForm.approveRemark" placeholder="请输入维修未完成原因" style="width: 98%;" :disabled="viewType == 'view'"></el-input> <el-input type="textarea" v-model="detailForm.approveRemark" placeholder="请输入维修未完成原因" style="width: 98%;"
:disabled="viewType == 'view'"></el-input>
</el-form-item> </el-form-item>
</div> </div>
<div v-show="(rowStatus == 6 && detailForm.approveResult1 == 0)"></div> <div v-show="(rowStatus == 6 && detailForm.approveResult1 == 0)"></div>
<div v-show="((rowStatus == 6 || isEvalute) && detailForm.approveResult1 == 1) || (rowStatus == 20 || isEvalute) || rowStatus == 7 || rowStatus == 8 || rowStatus == 9"> <div
v-show="((rowStatus == 6 || isEvalute) && detailForm.approveResult1 == 1) || (rowStatus == 20 || isEvalute) || rowStatus == 7 || rowStatus == 8 || rowStatus == 9">
<div style=" <div style="
color: #101010; color: #101010;
font-size: 20px; font-size: 20px;
@ -380,7 +394,8 @@
</div> </div>
</div> </div>
</div> </div>
<div v-show="((rowStatus == 6 || isEvalute) && detailForm.approveResult1 == 1) || (rowStatus == 20 || isEvalute) || rowStatus == 7 || rowStatus == 8 || rowStatus == 9"> <div
v-show="((rowStatus == 6 || isEvalute) && detailForm.approveResult1 == 1) || (rowStatus == 20 || isEvalute) || rowStatus == 7 || rowStatus == 8 || rowStatus == 9">
<div style=" <div style="
color: #101010; color: #101010;
font-size: 20px; font-size: 20px;
@ -389,13 +404,15 @@
"> ">
签名 签名
</div> </div>
<div style="margin-bottom: 10px;cursor: pointer;" @click="clickAssign" v-show="nameImg == '' && rowStatus != 7 && rowStatus != 8 && rowStatus != 9"> <div style="margin-bottom: 10px;cursor: pointer;" @click="clickAssign"
v-show="nameImg == '' && rowStatus != 7 && rowStatus != 8 && rowStatus != 9">
<img src="@/assets/images/assign.png" alt=""> <img src="@/assets/images/assign.png" alt="">
</div> </div>
<div v-show="nameImg != ''" @click="clickAssign"> <div v-show="nameImg != ''" @click="clickAssign">
<img :src="nameImg" alt=""> <img :src="nameImg" alt="">
</div> </div>
<div v-show="detailForm.signatureUrl != '' && (rowStatus == 7 || rowStatus == 8 || rowStatus == 9)" @click="clickAssign"> <div v-show="detailForm.signatureUrl != '' && (rowStatus == 7 || rowStatus == 8 || rowStatus == 9)"
@click="clickAssign">
<img :src="detailForm.signatureUrl" alt=""> <img :src="detailForm.signatureUrl" alt="">
</div> </div>
<!-- <div v-show="isEvalute"> <!-- <div v-show="isEvalute">
@ -409,18 +426,13 @@
<el-form-item label="签名人" prop="signaturePerson"> <el-form-item label="签名人" prop="signaturePerson">
<el-input :disabled="!isEvalute" placeholder="请输入签名人" v-model="detailForm.signaturePerson"></el-input> <el-input :disabled="!isEvalute" placeholder="请输入签名人" v-model="detailForm.signaturePerson"></el-input>
</el-form-item> </el-form-item>
<!-- <el-form-item label="签名时间" prop="signatureTime">
<el-date-picker :disabled="viewType == 'view'" v-model="detailForm.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> </div>
</el-form> </el-form>
</div> </div>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="handleClose">关闭</el-button> <el-button @click="handleClose">关闭</el-button>
<el-button v-show="isEvalute" type="primary" @click="handleConfirm">{{ detailForm.approveResult1 == 0 ? '提交' : '评价并签字' }}</el-button> <el-button v-show="isEvalute" type="primary" @click="handleConfirm">{{ detailForm.approveResult1 == 0 ? '提交' :
'评价并签字' }}</el-button>
<el-button v-show="viewType == 'confirm'" type="primary" @click="confirmWork">提交</el-button> <el-button v-show="viewType == 'confirm'" type="primary" @click="confirmWork">提交</el-button>
</span> </span>
</el-dialog> </el-dialog>
@ -444,6 +456,93 @@
<el-button @click="confirmName" type="primary">确定</el-button> <el-button @click="confirmName" type="primary">确定</el-button>
</span> </span>
</el-dialog> </el-dialog>
<el-dialog title="流程信息查看" :visible.sync="infoDialog" :append-to-body="true" width="70%">
<div>
<div class="el-card is-hover-shadow">
<!-- <div class="el-card__header">
<div><span>流程信息</span></div>
</div> -->
<div class="el-card__body">
<div class="row-bg el-row el-row--flex">
<ul class="el-timeline">
<li class="el-timeline-item" >
<div class="el-timeline-item__tail" style="color: #0bbd87;"></div>
<div class="el-timeline-item__node el-timeline-item__node--normal el-timeline-item__node--" style="background: #0bbd87;"><!---->
</div>
<!---->
<div class="el-timeline-item__wrapper">
<div class="el-timeline-item__timestamp is-top">
2024-12-13 16:40:46
</div>
<div class="el-timeline-item__content">
<div class="el-card is-hover-shadow"><!---->
<div class="el-card__body">
<p>维修人员提交需求工单维修方案</p>
</div>
</div>
</div><!---->
</div>
</li>
<li class="el-timeline-item">
<div class="el-timeline-item__tail"></div>
<div class="el-timeline-item__node el-timeline-item__node--normal el-timeline-item__node--"><!---->
</div>
<!---->
<div class="el-timeline-item__wrapper">
<div class="el-timeline-item__timestamp is-top">
2024-12-13 16:38:46
</div>
<div class="el-timeline-item__content">
<div class="el-card is-hover-shadow"><!---->
<div class="el-card__body">
<p>维修人员接单</p>
</div>
</div>
</div><!---->
</div>
</li>
<li class="el-timeline-item">
<div class="el-timeline-item__tail"></div>
<div class="el-timeline-item__node el-timeline-item__node--normal el-timeline-item__node--"><!---->
</div>
<!---->
<div class="el-timeline-item__wrapper">
<div class="el-timeline-item__timestamp is-top">
2024-12-13 16:38:46
</div>
<div class="el-timeline-item__content">
<div class="el-card is-hover-shadow"><!---->
<div class="el-card__body">
<p>客服接单</p>
</div>
</div>
</div><!---->
</div>
</li>
<li class="el-timeline-item">
<div class="el-timeline-item__tail"></div>
<div class="el-timeline-item__node el-timeline-item__node--normal el-timeline-item__node--"><!---->
</div>
<!---->
<div class="el-timeline-item__wrapper">
<div class="el-timeline-item__timestamp is-top">
2024-12-13 16:39:43
</div>
<div class="el-timeline-item__content">
<div class="el-card is-hover-shadow"><!---->
<div class="el-card__body">
<p>山东烁今实验室提报需求工单</p>
</div>
</div>
</div><!---->
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</el-dialog>
<div id="pdfDom" style="padding: 20px;"> <div id="pdfDom" style="padding: 20px;">
<requirement :detailForm="requireForm"></requirement> <requirement :detailForm="requireForm"></requirement>
</div> </div>
@ -458,10 +557,11 @@ import moment from "moment";
import { dateFormat } from "../../util/date"; import { dateFormat } from "../../util/date";
import requestSub from '../components/requestSub.vue' import requestSub from '../components/requestSub.vue'
import requirement from '../components/requirement.vue' import requirement from '../components/requirement.vue'
import { getList, getDetail, evaluateSign, addFile, saveData,customerConfirm,customerReject,customerRepairConfirm,customerRepairReject,serviceInvoice } from '@/api/operation/hand' import { getList, getDetail, evaluateSign, addFile, saveData, customerConfirm, customerReject, customerRepairConfirm, customerRepairReject, serviceInvoice } from '@/api/operation/hand'
import { getDeviceList } from '@/api/device/device' import { getDeviceList } from '@/api/device/device'
import { getChildList } from '@/api/system/dictbiz' import { getChildList } from '@/api/system/dictbiz'
import statusData from "@/assets/json/status.json"; // import statusData from "@/assets/json/status.json"; //
import { color } from "echarts";
let action = "https://api.avuejs.com/imgupload"; let action = "https://api.avuejs.com/imgupload";
export default { export default {
@ -473,10 +573,11 @@ export default {
// directives: { print }, // directives: { print },
data() { data() {
return { return {
infoDialog: false,
searchForm: { searchForm: {
timeRange: [] timeRange: []
}, },
requireForm:{}, requireForm: {},
showPrint: false, showPrint: false,
dialogTitle: "需求填报", dialogTitle: "需求填报",
dialogVisible: false, dialogVisible: false,
@ -533,6 +634,7 @@ export default {
labelWidth: 120, labelWidth: 120,
prop: "requirementCode", prop: "requirementCode",
overHidden: true, overHidden: true,
search:true
}, },
{ {
label: "设备名称", label: "设备名称",
@ -547,7 +649,7 @@ export default {
// type: "select", // type: "select",
overHidden: true, overHidden: true,
// hide: true, // hide: true,
search: true, // search: true,
// viewDisplay: false, // viewDisplay: false,
// dicUrl: '/lab/blade-system/dict-biz/get-hc-project', // dicUrl: '/lab/blade-system/dict-biz/get-hc-project',
// props: { // props: {
@ -563,7 +665,7 @@ export default {
type: "input", type: "input",
searchLabelWidth: 100, searchLabelWidth: 100,
// hide: true, // hide: true,
search: true, // search: true,
viewDisplay: false, viewDisplay: false,
// dicUrl: '/lab/blade-system/dict-biz/get-hc-project', // dicUrl: '/lab/blade-system/dict-biz/get-hc-project',
props: { props: {
@ -719,13 +821,13 @@ export default {
requestForm: {}, requestForm: {},
viewType: '', viewType: '',
selectionList: [], selectionList: [],
printVisible:false, printVisible: false,
assignVisible:false, assignVisible: false,
tableData:[], tableData: [],
isFinish:'', isFinish: '',
role_id:'', role_id: '',
isClear:false, isClear: false,
htmlTitle:'需求单报告' htmlTitle: '需求单报告'
}; };
}, },
@ -739,22 +841,24 @@ export default {
editBtn: this.vaildData(this.permission.notice_edit, false), editBtn: this.vaildData(this.permission.notice_edit, false),
}; };
}, },
getStatus(){ getStatus() {
return (type,id,status) =>{ return (type, id, status) => {
for(let i in statusData[type]){ for (let i in statusData[type]) {
let val let val
statusData[type][id].map(item =>{ statusData[type][id].map(item => {
if(item.status == status){ if (item.status == status) {
val = item val = item
} }
}) })
return val return val
} }
} }
}, },
}, },
created() { created() {
console.log('userInfo--------->', this.userInfo) console.log('userInfo--------->', this.userInfo)
console.log('route---------->',this.$route)
this.searchForm.requirementCode = this.$route.query.requirementCode
this.role_id = this.userInfo.role_id this.role_id = this.userInfo.role_id
// //
// getDeviceList({ current: 1, size: 100 }).then(res => { // getDeviceList({ current: 1, size: 100 }).then(res => {
@ -770,7 +874,7 @@ export default {
mounted() { }, mounted() { },
methods: { methods: {
// //
clickAssign(){ clickAssign() {
this.assignVisible = true this.assignVisible = true
}, },
// //
@ -778,19 +882,19 @@ export default {
this.selectionList = val this.selectionList = val
}, },
// //
changeResult(val){ changeResult(val) {
this.isFinish = val this.isFinish = val
console.log(this.isFinish) console.log(this.isFinish)
}, },
// //
clickInvoice() { clickInvoice() {
if(this.selectionList.length == 0){ if (this.selectionList.length == 0) {
this.$message.warning('请至少选择一条数据') this.$message.warning('请至少选择一条数据')
}else{ } else {
let tmp = this.selectionList.find(item => item.status != 8) let tmp = this.selectionList.find(item => item.status != 8)
if(tmp){ if (tmp) {
this.$message.warning('请选择状态为待开发票的数据') this.$message.warning('请选择状态为待开发票的数据')
}else{ } else {
this.$confirm('请确认是否为已选择数据开具发票?', '提示', { this.$confirm('请确认是否为已选择数据开具发票?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
@ -802,11 +906,11 @@ export default {
id: item.id id: item.id
}) })
}) })
serviceInvoice(queryData).then(res=>{ serviceInvoice(queryData).then(res => {
this.$message.success('发票开具成功') this.$message.success('发票开具成功')
this.onLoad() this.onLoad()
}) })
}).catch(() =>{ }).catch(() => {
}) })
} }
@ -854,7 +958,7 @@ export default {
picAttaches: form.picAttaches, picAttaches: form.picAttaches,
faultDescribe: form.faultDescribe, faultDescribe: form.faultDescribe,
submitType: 1, submitType: 1,
id:form.id id: form.id
}) })
console.log('data---------->', data) console.log('data---------->', data)
saveData(data).then(res => { saveData(data).then(res => {
@ -900,16 +1004,16 @@ export default {
} }
}, },
confirmName() { confirmName() {
console.log('name===========>',this.nameImg) console.log('name===========>', this.nameImg)
if(this.isClear){ if (this.isClear) {
this.nameImg = '' this.nameImg = ''
}else{ } else {
this.nameImg = this.$refs.sign.submit(80, 50); this.nameImg = this.$refs.sign.submit(80, 50);
} }
this.assignVisible = false this.assignVisible = false
}, },
closeName(){ closeName() {
if(this.nameImg == ''){ if (this.nameImg == '') {
this.$refs.sign.clear() this.$refs.sign.clear()
} }
this.assignVisible = false this.assignVisible = false
@ -938,8 +1042,8 @@ export default {
return file return file
}, },
// //
confirmOrder(row){ confirmOrder(row) {
getDetail({id:row.id}).then(res =>{ getDetail({ id: row.id }).then(res => {
this.rowStatus = res.data.data.status this.rowStatus = res.data.data.status
this.viewType = 'confirm' this.viewType = 'confirm'
this.detailVisible = true this.detailVisible = true
@ -982,33 +1086,33 @@ export default {
this.discountPrice = res.data.data.discountPrice this.discountPrice = res.data.data.discountPrice
}) })
}, },
handleExport(row){ handleExport(row) {
getDetail({id:row.id}).then(res =>{ getDetail({ id: row.id }).then(res => {
this.requireForm = res.data.data this.requireForm = res.data.data
setTimeout(() =>{ setTimeout(() => {
this.getPdf() this.getPdf()
},100) }, 100)
}) })
}, },
// //
handleConfirm() { handleConfirm() {
console.log('this.detailForm.approveResult1',this.detailForm.approveResult1) console.log('this.detailForm.approveResult1', this.detailForm.approveResult1)
if(this.detailForm.approveResult1 == 0){ if (this.detailForm.approveResult1 == 0) {
let query = { let query = {
id:this.detailForm.id, id: this.detailForm.id,
approveResult:this.detailForm.approveResult1, approveResult: this.detailForm.approveResult1,
approvePerson:this.userInfo.user_id, approvePerson: this.userInfo.user_id,
approveTime:moment().format('YYYY-MM-DD HH:mm:ss'), approveTime: moment().format('YYYY-MM-DD HH:mm:ss'),
approveRemark:this.detailForm.approveRemark approveRemark: this.detailForm.approveRemark
} }
customerRepairReject(query).then(res =>{ customerRepairReject(query).then(res => {
if(res.data.code == 200){ if (res.data.code == 200) {
this.$message.success('提交成功') this.$message.success('提交成功')
this.detailVisible = false this.detailVisible = false
this.onLoad() this.onLoad()
} }
}) })
}else{ } else {
if (this.nameImg != '') { if (this.nameImg != '') {
const formData = new FormData(); const formData = new FormData();
formData.append('file', this.base64toFile(this.nameImg)); formData.append('file', this.base64toFile(this.nameImg));
@ -1043,24 +1147,24 @@ export default {
}, },
// //
confirmWork(){ confirmWork() {
let query = { let query = {
id:this.detailForm.id, id: this.detailForm.id,
approvePerson:this.userInfo.user_id, approvePerson: this.userInfo.user_id,
approveResult:this.detailForm.approveResult, approveResult: this.detailForm.approveResult,
approveTime:moment().format('YYYY-MM-DD HH:mm:ss'), approveTime: moment().format('YYYY-MM-DD HH:mm:ss'),
approveRemark:this.detailForm.approveRemark approveRemark: this.detailForm.approveRemark
} }
if(query.approveResult == 0){ if (query.approveResult == 0) {
customerReject(query).then(res =>{ customerReject(query).then(res => {
if (res.data.code == 200) { if (res.data.code == 200) {
this.$message.success('审批成功') this.$message.success('审批成功')
this.detailVisible = false this.detailVisible = false
this.onLoad() this.onLoad()
} }
}) })
}else{ } else {
customerConfirm(query).then(res =>{ customerConfirm(query).then(res => {
if (res.data.code == 200) { if (res.data.code == 200) {
this.$message.success('审批成功') this.$message.success('审批成功')
this.detailVisible = false this.detailVisible = false
@ -1089,6 +1193,7 @@ export default {
url: item.link url: item.link
}) })
}) })
this.nameImg = ''
if (this.rowStatus == 3) { if (this.rowStatus == 3) {
this.isOkValidity = 1 this.isOkValidity = 1
this.isOkQuality = 1 this.isOkQuality = 1
@ -1137,7 +1242,8 @@ export default {
endTime: this.searchForm.timeRange && this.searchForm.timeRange.length != 0 ? this.searchForm.timeRange[1].toString() + ' 23:59:59' : '', // endTime: this.searchForm.timeRange && this.searchForm.timeRange.length != 0 ? this.searchForm.timeRange[1].toString() + ' 23:59:59' : '', //
faultLocation: this.searchForm.faultLocation ? this.searchForm.faultLocation : '', // faultLocation: this.searchForm.faultLocation ? this.searchForm.faultLocation : '', //
faultType: this.searchForm.faultType ? this.searchForm.faultType : '', // faultType: this.searchForm.faultType ? this.searchForm.faultType : '', //
dataType: 1 dataType: 1,
requirementCode:this.searchForm.requirementCode
} }
console.log('query--------->', query) console.log('query--------->', query)
getList(query).then(res => { getList(query).then(res => {

@ -23,17 +23,23 @@
index == 2 ? require('@/assets/images/alarm.png') : index == 3 ? require('@/assets/images/full.png') : ''" index == 2 ? require('@/assets/images/alarm.png') : index == 3 ? require('@/assets/images/full.png') : ''"
alt=""> alt="">
</div> </div>
<div class="item_num" >{{ item.num }}</div> <div class="right_item">
<div class="item_name">{{ item.name }}</div>
<div class="item_num" >{{ item.num }}</div>
</div>
</div> </div>
<div class="item_name">{{ item.name }}</div>
</div> </div>
<div class="work_item" v-show="isShowOther"> <div class="work_item" v-show="isShowOther">
<div class="item_top"> <div class="item_top">
<div class="item_img"> <div class="item_img">
<img :src="require('@/assets/images/other.png')" alt=""> <img :src="require('@/assets/images/other.png')" alt="">
</div> </div>
<div class="right_item">
<div class="item_name">其他</div>
</div>
</div> </div>
<div class="item_name">其他</div>
</div> </div>
</div> </div>
</div> </div>
@ -80,6 +86,28 @@
<el-empty class="xj_con_box" v-show="inspectionList.length == 0" description="暂无报警"></el-empty> <el-empty class="xj_con_box" v-show="inspectionList.length == 0" description="暂无报警"></el-empty>
</div> </div>
</div> </div>
<div class="xj_box">
<div class="xj_tit">实验室维修</div>
<div class="xj_con">
<vueSeamless v-if="requirementList.length >= 1" :data="requirementList" :class-option="alarmOption" class="xj_con_box">
<div class="xj_item" v-for="item in requirementList" :key="item.name" @click="clickReqiure(item)">
<div class="xj_top">
<div class="tit_box">
<div class="xj_title">{{ item.requirementCode }}</div>
</div>
<div class="xj_task">{{ status }}</div>
</div>
<div class="xj_center">
<div class="xj_status">{{ item.faultDescribe }}</div>
</div>
<!-- <div class="xj_bottom">
</div> -->
</div>
</vueSeamless>
<el-empty class="xj_con_box" v-show="requirementList.length == 0" description="暂无报警"></el-empty>
</div>
</div>
</div> </div>
</div> </div>
<div class="bottom_box"> <div class="bottom_box">
@ -157,7 +185,6 @@
</div> </div>
<div class="bench_box"> <div class="bench_box">
<div class="bench_tit"><span style="font-weight: 550;">工作台</span> <div class="bench_tit"><span style="font-weight: 550;">工作台</span>
<div class="bench_num">9</div>
</div> </div>
<div class="bench_con"> <div class="bench_con">
<div class="bench_item" v-for="(item, index) in benchList" :key="item.title"> <div class="bench_item" v-for="(item, index) in benchList" :key="item.title">
@ -250,6 +277,7 @@ import { mapGetters } from "vuex";
import Map from './map.vue' import Map from './map.vue'
import vueSeamless from 'vue-seamless-scroll' import vueSeamless from 'vue-seamless-scroll'
import { getUserInfo } from "@/api/system/user"; import { getUserInfo } from "@/api/system/user";
import { getList } from '@/api/operation/hand'
import { overview, workList, deviceList, upkeepStat, pieStat, mapAddress, limsInspecList, overviewList, limsInspecChart, faultRatio } from '@/api/workbench/workbench' import { overview, workList, deviceList, upkeepStat, pieStat, mapAddress, limsInspecList, overviewList, limsInspecChart, faultRatio } from '@/api/workbench/workbench'
import { color } from 'echarts'; import { color } from 'echarts';
@ -260,6 +288,7 @@ export default {
}, },
data() { data() {
return { return {
requirementList:[],
role_id: '', role_id: '',
isShowOther: false, isShowOther: false,
isShowMask:false, isShowMask:false,
@ -393,6 +422,7 @@ export default {
this.getbackGroundPic() this.getbackGroundPic()
this.getUpkeepStat() this.getUpkeepStat()
this.getPieStat() this.getPieStat()
this.getRequirement()
this.alarmOption = { this.alarmOption = {
"step": 0.2, // "step": 0.2, //
"limitMoveNum": 3, // this.dataList.length "limitMoveNum": 3, // this.dataList.length
@ -433,6 +463,23 @@ export default {
} }
}, },
methods: { methods: {
clickReqiure(item){
console.log('item----------->',item)
this.$router.push({
path:'/operation/hand',
query:item
})
},
getRequirement(){
getList({
current:1,
size:10,
dataType: 1,//
statusSearch: '1,2,3,4,6,20,7',//5
}).then(res =>{
this.requirementList = res.data.data.records
})
},
// //
getbackGroundPic() { getbackGroundPic() {
getUserInfo().then(res => { getUserInfo().then(res => {
@ -582,7 +629,7 @@ export default {
top: '15%', top: '15%',
left: '5%', left: '5%',
right: '5%', right: '5%',
bottom: '15%' bottom: '10%'
}, },
yAxis: {}, yAxis: {},
series: [ series: [
@ -592,7 +639,7 @@ export default {
data: this.totalBardata, data: this.totalBardata,
itemStyle: { itemStyle: {
// color: '#2478f2' // color: '#2478f2'
color:'#035cdd' color:'#2148D1'
} }
}, },
{ {
@ -601,7 +648,7 @@ export default {
data: this.completedBardata, data: this.completedBardata,
itemStyle: { itemStyle: {
// color: '#84b7f9' // color: '#84b7f9'
color:'#98c2f7' color:'#5E8CFF'
} }
}, },
{ {
@ -610,7 +657,7 @@ export default {
data: this.unCompletedBardata, data: this.unCompletedBardata,
itemStyle: { itemStyle: {
// color: '#5f9cf8' // color: '#5f9cf8'
color:'#5470c6' color:'#B0CCFF'
} }
}, },
] ]
@ -798,7 +845,7 @@ export default {
.container { .container {
width: 99%; width: 99%;
height: 95%; height: 95%;
background: #fff; //background: #fff;
margin: 0 auto; margin: 0 auto;
.mask{ .mask{
@ -817,10 +864,11 @@ export default {
} }
.top_box { .top_box {
width: calc(100% - 40px); width: 100%;
height: 47%; height: 51%;
margin: 0 auto; margin: 0 auto;
padding: 20px; margin-top: 5px;
// padding: 20px;
display: -webkit-box; display: -webkit-box;
display: -ms-flexbox; display: -ms-flexbox;
display: flex; display: flex;
@ -833,13 +881,13 @@ export default {
} }
.top_right { .top_right {
width: 48%; width: 49%;
height: 100%; height: 100%;
.work_box { .work_box {
width: 95%; width: 98%;
height: 45%; height: 30%;
margin-left: 5%; // margin-left: 5%;
.work_tit { .work_tit {
font-weight: 550; font-weight: 550;
@ -848,33 +896,45 @@ export default {
.work_con { .work_con {
width: 100%; width: 100%;
height: 80%; height: 80%;
margin-top: 2.4%; margin-top: 10px;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
.work_item { .work_item {
width: 148px; width: 23%;
height: 100%; height:78px;
border-radius: 10px; border-radius: 10px;
position: relative; position: relative;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
flex-direction: column;
// flex-direction: column;
.item_top { .item_top {
width: 100%; width: 100%;
height: 104px; height: 100%;
background: #3a62d791; background: #3a62d791;
border-radius: 10px; border-radius: 10px;
position: relative; position: relative;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
flex-direction: column; // flex-direction: column;
color: white; color: white;
font-size: 22px; font-size: 22px;
background: linear-gradient( 90deg, #375DF9 0%, #6DB5FF 100%);
box-shadow: 0px 5px 5px 0px #B6D8FF;
.right_item{
display: flex;
flex-direction: column;
margin-left: 20px;
}
// .item_num { // .item_num {
// // position: absolute; // // position: absolute;
@ -896,26 +956,41 @@ export default {
height: 100%; height: 100%;
} }
} }
.item_name {
// width: 148px;
// margin-top: 10px;
// display: flex;
// align-items: center;
// -ms-flex-pack: center;
// justify-content: center;
font-size: 14px;
margin-bottom: 5px;
}
} }
.item_name { &:nth-child(2) .item_top{
width: 148px; background: linear-gradient( 270deg, #41D9A5 0%, #0BC478 100%);
height: 18%; box-shadow: 0px 10px 10px 0px #BDE7E2;
margin-top: 10px; }
display: flex;
align-items: center; &:nth-child(3) .item_top{
-ms-flex-pack: center; background: linear-gradient( 90deg, #F36656 0%, #FF8043 100%);
justify-content: center; box-shadow: 0px 10px 10px 0px #FED1D0;
} }
&:nth-child(4) .item_top{
background: linear-gradient( 90deg, #F3AC56 0%, #FFCA68 100%);
box-shadow: 0px 10px 10px 0px #FEEED0;
}
} }
} }
} }
.xj_box { .xj_box {
width: 95%; width: 98%;
height: 52%; height:30%;
margin-top: 20px; margin-top: 20px;
margin-left: 5%;
.xj_tit { .xj_tit {
font-weight: 550; font-weight: 550;
@ -932,12 +1007,16 @@ export default {
.xj_con_box { .xj_con_box {
width: 100%; width: 100%;
height: 100%; height: 100%;
background: #efefef; background: #fff;
border-radius: 10px; border-radius: 10px;
overflow: hidden; overflow: hidden;
::v-deep .el-empty__image{ ::v-deep .el-empty__image{
width: 75px !important; width: 55px !important;
}
::v-deep .el-empty__description{
margin-top: none !important;
} }
::v-deep.el-carousel__container { ::v-deep.el-carousel__container {
@ -1004,10 +1083,9 @@ export default {
} }
.bottom_box { .bottom_box {
width: calc(100% - 40px); width: 100%;
height: 42%; height: 46%;
// margin-top: 1%; margin-top: 1%;
padding: 20px;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
@ -1015,19 +1093,28 @@ export default {
.bottom_left { .bottom_left {
width: 25%; width: 25%;
height: 100%; height: 100%;
background: #FFFFFF;
border-radius: 4px;
border: 1px solid #EBEEF5;
.left_tit { .left_tit {
font-weight: 550; font-weight: 550;
margin-top: 15px;
margin-left: 15px;
} }
.left_con { .left_con {
width: 100%; width: 100%;
height: 88%; height: 88%;
background: #efefef; // background: #efefef;
margin-top: 20px; margin-top: 20px;
border-radius: 10px; border-radius: 10px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
// background: #FFFFFF;
// border-radius: 4px;
// border: 1px solid #EBEEF5;
.nodata{ .nodata{
// width: 100%; // width: 100%;
@ -1137,28 +1224,39 @@ export default {
.bottom_right { .bottom_right {
width: 74%; width: 74%;
height: 100%; height: 100%;
background: #FFFFFF;
border-radius: 4px;
border: 1px solid #EBEEF5;
.right_tit { .right_tit {
font-weight: 550; font-weight: 550;
margin-top: 15px;
margin-left: 15px;
} }
.right_con { .right_con {
width: 100%; width: 100%;
height: 88%; height: 88%;
background: #efefef; // background: #efefef;
margin-top: 20px; margin-top: 10px;
border-radius: 10px; border-radius: 10px;
display: flex; display: flex;
align-items: center; align-items: center;
// background: #FFFFFF;
// border-radius: 4px;
// border: 1px solid #EBEEF5;
.bar_box { .bar_box {
width: 47%; width: 49%;
height: 86%; height: 100%;
background: #fff; // background: #fff;
margin-left: 2%;
border-radius: 10px; border-radius: 10px;
margin-left: 15px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
// background: #FFFFFF;
// border-radius: 4px;
// border: 1px solid #EBEEF5;
.bar_top { .bar_top {
margin: 10px; margin: 10px;
@ -1172,11 +1270,13 @@ export default {
} }
.pie_box { .pie_box {
width: 47%; width: 49%;
height: 86%; height: 100%;
background: #fff;
margin-left: 2%; margin-left: 2%;
border-radius: 10px; border-radius: 10px;
// background: #FFFFFF;
// border-radius: 4px;
// border: 1px solid #EBEEF5;
.pie_top { .pie_top {
margin: 10px; margin: 10px;

Loading…
Cancel
Save