需求代码提交

master
zhangdi 1 year ago
parent c3cc0f86e0
commit 45aa2dee3a
  1. 6
      package.json
  2. 2
      src/api/common.js
  3. 19
      src/api/device/device.js
  4. 31
      src/api/operation/hand.js
  5. 78
      src/api/supervisory.js
  6. 37
      src/assets/file/workTemplet.pdf
  7. BIN
      src/assets/images/alarm_icon.png
  8. BIN
      src/assets/images/alarm_icon_daping.png
  9. BIN
      src/assets/images/bg.png
  10. BIN
      src/assets/images/esc.png
  11. 1996
      src/assets/json/status.json
  12. 77
      src/components/order/logDialog.vue
  13. 215
      src/components/order/workOrderDialog.vue
  14. 8
      src/router/views/index.js
  15. 1
      src/store/getters.js
  16. 25
      src/store/modules/user.js
  17. 300
      src/styles/stylesheet.css
  18. 2
      src/util/htmlToPdf.js
  19. 300
      src/views/businessManagement/inspection/repair.vue
  20. 2501
      src/views/businessManagement/inspection/task.vue
  21. 2046
      src/views/businessManagement/ordinary.vue
  22. 30
      src/views/components/requestSub.vue
  23. 721
      src/views/components/requirement.vue
  24. 1199
      src/views/components/routingInspection.vue
  25. 10
      src/views/dataManagement/dataManagement.vue
  26. 157
      src/views/device/deviceSystem.vue
  27. 10
      src/views/labManagement/components/addDialog.vue
  28. 4
      src/views/labManagement/inspectionManagement.vue
  29. 1462
      src/views/largeScreen/supervisory.vue
  30. 213
      src/views/operation/hand.vue
  31. 43
      src/views/workbench/index.vue

@ -21,9 +21,11 @@
"echarts": "^5.5.1",
"element-ui": "^2.15.6",
"file-saver": "^2.0.5",
"html2canvas": "^1.4.1",
"js-base64": "^2.5.1",
"js-cookie": "^2.2.0",
"js-md5": "^0.7.3",
"jspdf": "^2.5.2",
"jszip": "^3.10.1",
"mockjs": "^1.0.1-beta3",
"moment": "^2.30.1",
@ -39,9 +41,11 @@
"vue-easy-print": "0.0.8",
"vue-i18n": "^8.7.0",
"vue-print-nb": "^1.7.5",
"vue-printjs": "^1.0.0",
"vue-router": "^3.0.1",
"vue-seamless-scroll": "^1.1.23",
"vuex": "^3.1.1"
"vuex": "^3.1.1",
"xlsx": "^0.18.5"
},
"devDependencies": {
"@vue/cli-plugin-babel": "^3.1.1",

@ -17,7 +17,7 @@ export const exportBlob = (url, params) => {
export const exportBlob1 = (url, params) => {
return request({
url: url,
params: params,
data: params,
method: 'post',
responseType: 'blob'
})

@ -72,4 +72,21 @@ export const getLabList = (query) =>{
method:'get',
params:query
})
}
}
// 获取设备维修列表
export const getWorkOrderList = (query) =>{
return request({
url:"/api/lab-ops/work-order/find-list-by-device-id",
method:'get',
params:query
})
}
// 获取维保列表
export const getMaintenanceList = (query) =>{
return request({
url:"/api/lab-ops/maintenance/find-list-by-device-id",
method:'get',
params:query
})
}

@ -276,4 +276,33 @@ export const sendMess = (data) =>{
method:"post",
data
})
}
}
// 查看流程 /
export const workOrderLog = (query) =>{
return request({
url:"/api/lab-ops/work-order-log/find-list-by-code",
method:'get',
params:query
})
}
// 紧急维修 客户确认维修效果
export const urgentRepairConfirm = (data) =>{
return request({
url:"/api/lab-ops/work-order/customer-emergency-repair-confirm",
method:"post",
data
})
}
// 驳回
export const urgentRepairReject = (data) =>{
return request({
url:"/api/lab-ops/work-order/customer-emergency-repair-reject",
method:"post",
data
})
}

@ -0,0 +1,78 @@
import request from "@/router/axios";
// 设备概况
export const getEquipOverview= (params) => {
return request({
url: '/api/lab-ops/large-screen/select-equip-overview',
method: 'get',
params: params
})
}
// 巡检任务状态 统计图
export const getMaintenanceTaskStatus= (params) => {
return request({
url: '/api/lab-ops/large-screen/select-maintenance-task-status',
method: 'get',
params:params
})
}
// 维保数量统计
export const getMaintenanceTaskCount= (params) => {
return request({
url: '/api/lab-ops/large-screen/select-maintenance-task-count',
method: 'get',
params: params
})
}
// 维修数量统计
export const getSelectEquipOverview= (params) => {
return request({
url: '/api/lab-ops/large-screen/select-equip-overview',
method: 'get',
params: params
})
}
// 平均故障修复时间
export const averageFaultResponseTime= (params) => {
return request({
url: '/api/lab-ops/large-screen/select-average-fault-repair-time',
method: 'get',
params: params
})
}
// 故障设备TOP5
export const Top5= (params) => {
return request({
url: '/api/lab-ops/large-screen/select-fault-equip-top5',
method: 'get',
params: params
})
}
// 故障设备TOP5
export const countByMonth= (params) => {
return request({
url: '/api/lab-ops/large-screen/select-equip-repair-count-by-month',
method: 'get',
params: params
})
}
// 平均故障响应时间
export const repairCountByMonth= (params) => {
return request({
url: '/api/lab-ops/large-screen/select-average-fault-response-time',
method: 'get',
params: params
})
}
export const claimTask = (taskId) => {
return request({
url: '/api/blade-flow/work/claim-task',
method: 'post',
params: {
taskId
}
})
}

@ -0,0 +1,37 @@
运营维护服务单
客户名称 联系人
联系电话 地址
故障现象:
是否在保修期 否 约定服务方式 上门 电话
故障产生原因:
所用维修材料
序号 名称 数量 单价 总价
1
2
3
4 合计
保修期内因客户自 维修差旅费: 0元; 维修费总计: 0
身 原 因 产 生故 障 收 费
元;
保修期外收 维修差旅费: 元; 维修费总计: 元;
故障排除方法和处理结果(详细描述): 客户签字
故障排除方法和处理结果(详细描述): 客户签字
维修工程师签名: 联系方式:
日期: 年 月

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 588 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

File diff suppressed because it is too large Load Diff

@ -0,0 +1,77 @@
<template>
<el-dialog title="流程信息查看" :visible.sync="infoDialog" :append-to-body="true" width="70%" @close="closeDialog">
<div>
<div class="el-card is-hover-shadow">
<div class="el-card__body">
<div class="row-bg el-row el-row--flex">
<ul class="el-timeline">
<li class="el-timeline-item" v-for="(item, index) in logData" :key="index">
<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">
{{ item.updateTime }}
</div>
<div class="el-timeline-item__content">
<div class="el-card is-hover-shadow">
<div class="el-card__body">
<p>{{ item.content }}</p>
</div>
</div>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</el-dialog>
</template>
<script>
import { workOrderLog } from '@/api/operation/hand'
export default{
props:{
orderId:{
type:String,
default:''
},
infoDialog: {
type: Boolean,
default: false,
},
},
watch: {
orderId(v) {
this.code = v;
this.viewLog()
},
},
data(){
return {
logData:[],
code:'',
}
},
mounted(){
},
methods:{
viewLog(){
let query={
code:this.code
}
workOrderLog(query).then(res=>{
this.logData = res.data.data
})
},
closeDialog(){
this.$emit('closeLog')
}
}
}
</script>

@ -0,0 +1,215 @@
<template>
<el-dialog :title="dialogTitle" :visible.sync="show" :append-to-body="true" width="70%" @close="close">
<div style="height: 500px; overflow: auto">
<el-form ref="form" :model="addForm" :rules="addRules" label-width="130px" label-position="left">
<div>
<div class="title">
提报信息
</div>
<el-form-item label="需求单号" prop="requirementCode">
<el-input disabled style="width:98%;" placeholder="请输入需求单号" dsabled
v-model="addForm.requirementCode"></el-input>
</el-form-item>
<el-form-item label="提报单位" prop="reportUnitName">
<el-input disabled style="width:98%;" placeholder="请输入提报单位" v-model="addForm.reportUnitName"></el-input>
</el-form-item>
<el-form-item label="故障现象描述" prop="faultDescribe">
<el-input placeholder="请输入故障现象描述" type="textarea" v-model="addForm.faultDescribe" style="width:98%;"
:disabled="dataType != '2'"></el-input>
</el-form-item>
<el-form-item label="故障位置" prop="faultLocation">
<el-input placeholder="请输入故障位置" v-model="addForm.faultLocation" style="width:98%;"
:disabled="dataType != '2'"></el-input>
</el-form-item>
<el-form-item label="设备名称" prop="deviceName">
<el-input style="width:98%;" placeholder="请输入设备名称" v-model="addForm.deviceName"
:disabled="dataType != '2'"></el-input>
</el-form-item>
<el-form-item label="故障专业类型" prop="faultType">
<el-input style="width:98%;" placeholder="请输入故障专业类型" v-model="addForm.faultType"
:disabled="dataType != '2'"></el-input>
</el-form-item>
</div>
<div>
<div class="title">派单信息</div>
<el-form-item label="维修类别" prop="repairType">
<el-select placeholder="请选择维修类别" style="width:98%;" v-model="addForm.repairType"
:disabled="dataType != '2'">
<el-option v-for="item in repairTypeList" :key="item.dictKey" :label="item.dictValue"
:value="item.dictKey"></el-option>
</el-select>
</el-form-item>
<el-form-item label="维修人员" prop="repairPerson">
<el-select placeholder="请选择维修人员" style="width:98%;" v-model="addForm.repairPerson"
:disabled="dataType != '2'">
<el-option v-for="item in repairPersonList" :key="item.id" :label="item.name"
:value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="计划完成时间" prop="planCompleteTime">
<el-date-picker style="width:98%;" v-model="addForm.planCompleteTime" format="yyyy-MM-dd"
value-format="yyyy-MM-dd HH:mm:ss" type="date" placeholder="请选择计划完成时间" :picker-options="dispatchOptions"
:disabled="dataType != '2'">
</el-date-picker>
</el-form-item>
<el-form-item label="客服意见" prop="customerOpinion">
<el-input placeholder="请输入客服意见" type="textarea" v-model="addForm.customerOpinion" style="width:98%;"
:disabled="dataType != '2'"></el-input>
</el-form-item>
</div>
</el-form>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="handleClose"> </el-button>
<el-button type="primary" @click="handleConfirm"> </el-button>
</span>
</el-dialog>
</template>
<script>
import { mapState, mapActions } from 'vuex';
import { getChildList } from '@/api/system/dictbiz'
import {
getList, getDetail, editData, getDeptList, getRepairPeople, repairReject, submitReject, clone, serviceman, servicemanReceive, servicemanReject, servicemanSubmit, supervisorConfirm, supervisorReject,
servicemanRepairSubmit, serviceInvoice, serviceSubmit, sendMess
} from '@/api/operation/hand'
import moment from "moment";
export default {
props: {
dialogTitle: {
type: String,
default: ''
},
orderId: {
type: String,
default: ''
},
show: {
type: Boolean,
default: false
}
},
computed: {
...mapState({
dataType: state => state.user.dataType,
}),
},
data() {
return {
addForm: {
},
addRules: {
repairPerson: { required: true, message: '请选择维修人员', trigger: 'blur' },
planCompleteTime: { required: true, message: '计划完成时间', trigger: 'blur' },
repairType: { required: true, message: '维修类别', trigger: 'blur' },
},
repairTypeList: [],//
repairPersonList: [],//
dispatchOptions: {
disabledDate(v) {
return v.getTime() < new Date().getTime() - 86400000;// - 86400000
}
}
}
},
mounted() {
this.getDetail()
//
this.getChildList('1869925082102702082', 'repairTypeList')
this.getRepairPeople()
},
methods: {
//
getDetail() {
getDetail({ id: this.orderId }).then(res => {
this.addForm = res.data.data
//
this.addForm.maintenanceTeam = (res.data.data.status == 101 || res.data.data.status == 203) ? '' : res.data.data.maintenanceTeam
this.addForm.dispatchTime = (res.data.data.status == 101 || res.data.data.status == 203) ? '' : res.data.data.dispatchTime
this.addForm.planCompleteTime = (res.data.data.status == 101 || res.data.data.status == 203) ? '' : res.data.data.planCompleteTime
this.addForm.repairPerson = this.dataType == '2' ? '' : res.data.data.repairPerson
this.addForm = {
...this.addForm,
isNeedMaterials: 2,
customerOpinion: '',
planCompleteTime: ''
}
this.addForm.repairType = this.addForm.repairType < 0 ? null : this.addForm.repairType
})
},
//
handleConfirm() {
this.$refs['form'].validate(valid => {
if (valid) {
let query = {}
//
if (this.dataType == '2') {
query = {
id: this.addForm.id,
reportUnit: this.addForm.reportUnit,
faultDescribe: this.addForm.faultDescribe,
faultLocation: this.addForm.faultLocation,
faultType: this.addForm.faultType,
deviceName: this.addForm.deviceName,
repairType: Number(this.addForm.repairType)
}
let manQuery = {
id: this.addForm.id,
repairPerson: this.dataType == '2' ? this.addForm.repairPerson : null,
planCompleteTime: this.addForm.planCompleteTime,
dispatchTime: moment().format('YYYY-MM-DD HH:mm:ss'),
customerOpinion: this.addForm.customerOpinion,
remark: this.addForm.remark,
repairType: Number(this.addForm.repairType)
}
editData(query).then(res => {
if (res.data.code == 200) {
serviceman(manQuery).then(result => {
if (result.data.code == 200) {
this.$message.success('派单成功')
this.close()
}
})
}
})
}
}
})
},
//
handleClose() {
},
//
getRepairPeople() {
getRepairPeople().then(res => {
this.repairPersonList = res.data.data
})
},
//
getChildList(id, type) {
getChildList(1, 100, id).then(res => {
if (type == 'repairTypeList') {
this.repairTypeList = res.data.data
}
})
},
close() {
this.$emit('closeWorkOrder')
}
}
}
</script>
<style lang="scss" scoped>
.title {
color: #101010;
font-size: 20px;
font-weight: 550;
margin-bottom: 20px;
}
</style>

@ -21,6 +21,14 @@ export default [{
},
component: () =>
import( /* webpackChunkName: "views" */ '@/views/wel/dashboard')
},{
path: 'supervisory',
name: '监控大屏',
meta: {
i18n: 'supervisory'
},
component: () =>
import( /* webpackChunkName: "views" */ '@/views/largeScreen/supervisory')
}]
}, {
path: '/test',

@ -26,5 +26,6 @@ const getters = {
logsFlag: (state, getters) => getters.logsLen === 0,
flowRoutes: state => state.dict.flowRoutes,
messageTotal: state => state.dict.messageTotal,
dataType: state => state.user.dataType,
}
export default getters

@ -54,6 +54,7 @@ const user = {
menuAll: getStore({name: 'menuAll'}) || [],
token: getStore({name: 'token'}) || '',
refreshToken: getStore({name: 'refreshToken'}) || '',
dataType:null,//数据标识权限
},
actions: {
//根据用户名登录
@ -61,7 +62,6 @@ const user = {
return new Promise((resolve, reject) => {
loginByUsername(userInfo.tenantId, userInfo.deptId, userInfo.roleId, userInfo.username, encrypt(userInfo.password), userInfo.type, userInfo.key, userInfo.code).then(res => {
const data = res.data;
console.log('data-------------------------->',data)
if (data.error_description) {
Message({
message: data.error_description,
@ -258,12 +258,24 @@ const user = {
GetMenu({commit, dispatch}, topMenuId) {
return new Promise(resolve => {
getRoutes(topMenuId).then((res) => {
let data;
console.log('roure===========>',data)
console.log('local==============>',JSON.parse(localStorage.getItem('saber-userInfo')))
if(JSON.parse(localStorage.getItem('saber-userInfo')).content.detail.status != 1){
let userInfo = JSON.parse(localStorage.getItem('saber-userInfo'))
if(userInfo.content.detail.status != 1){
data = res.data.data.filter(item => item.path == '/workbench')
}else{
if (userInfo.content.role_id == "1123598816738675201" || userInfo.content.role_id == "1846419477876510721") {
commit('updateDatatype', 1) //客户
}
if (userInfo.content.role_id == "1839536982874193922") {
commit('updateDatatype', 2) //客服
}
if (userInfo.content.role_id == "1839537055389515777") {
commit('updateDatatype', 3) //维修负责人
}
if (userInfo.content.role_id == "1839552581620793346") {
commit('updateDatatype', 4) //维修人员
}
data = res.data.data
}
let menu = deepClone(data);
@ -333,7 +345,6 @@ const user = {
}
state.userInfo = userInfo;
}
console.log('state.userInfo==============>',state.userInfo)
setStore({name: 'userInfo', content: state.userInfo})
},
SET_ROLES: (state, roles) => {
@ -362,6 +373,10 @@ const user = {
state.permission[ele] = true;
});
setStore({name: 'permission', content: state.permission})
},
updateDatatype(state, data) {
console.log(888888,data)
state.dataType = data
}
}

@ -0,0 +1,300 @@
tr
{mso-height-source:auto;
mso-ruby-visibility:none;}
col
{mso-width-source:auto;
mso-ruby-visibility:none;}
br
{mso-data-placement:same-cell;}
ruby
{ruby-align:left;}
.style0
{mso-number-format:General;
text-align:general;
vertical-align:middle;
white-space:nowrap;
mso-rotate:0;
mso-background-source:auto;
mso-pattern:auto;
color:black;
font-size:11.0pt;
font-weight:400;
font-style:normal;
text-decoration:none;
font-family:ËÎÌå;
mso-generic-font-family:auto;
mso-font-charset:134;
border:none;
mso-protection:locked visible;
mso-style-name:³£¹æ;
mso-style-id:0;}
.font0
{color:black;
font-size:11.0pt;
font-weight:400;
font-style:normal;
text-decoration:none;
font-family:ËÎÌå;
mso-generic-font-family:auto;
mso-font-charset:134;}
.font6
{color:black;
font-size:11.0pt;
font-weight:400;
font-style:normal;
text-decoration:none;
font-family:Wingdings;
mso-generic-font-family:auto;
mso-font-charset:2;}
.font8
{color:black;
font-size:11.0pt;
font-weight:400;
font-style:normal;
text-decoration:none;
font-family:µÈÏß;
mso-generic-font-family:auto;
mso-font-charset:134;}
.font9
{color:black;
font-size:11.0pt;
font-weight:400;
font-style:normal;
text-decoration:none;
font-family:ËÎÌå;
mso-generic-font-family:auto;
mso-font-charset:134;}
.font10
{color:black;
font-size:11.0pt;
font-weight:400;
font-style:normal;
text-decoration:underline;
text-underline-style:single;
font-family:µÈÏß;
mso-generic-font-family:auto;
mso-font-charset:134;}
.font11
{color:white;
font-size:11.0pt;
font-weight:400;
font-style:normal;
text-decoration:underline;
text-underline-style:single;
font-family:µÈÏß;
mso-generic-font-family:auto;
mso-font-charset:134;}
td
{mso-style-parent:style0;
padding-top:1px;
padding-right:1px;
padding-left:1px;
mso-ignore:padding;
color:black;
font-size:11.0pt;
font-weight:400;
font-style:normal;
text-decoration:none;
font-family:ËÎÌå;
mso-generic-font-family:auto;
mso-font-charset:134;
mso-number-format:General;
text-align:general;
vertical-align:middle;
border:none;
mso-background-source:auto;
mso-pattern:auto;
mso-protection:locked visible;
white-space:nowrap;
mso-rotate:0;}
.xl65
{mso-style-parent:style0;
vertical-align:bottom;}
.xl66
{mso-style-parent:style0;
text-align:center;
border:.5pt solid windowtext;}
.xl67
{mso-style-parent:style0;
font-family:Wingdings;
mso-generic-font-family:auto;
mso-font-charset:2;
text-align:center;
border-top:.5pt solid windowtext;
border-right:none;
border-bottom:.5pt solid windowtext;
border-left:none;}
.xl68
{mso-style-parent:style0;
font-family:Wingdings;
mso-generic-font-family:auto;
mso-font-charset:2;
text-align:center;
border-top:.5pt solid windowtext;
border-right:.5pt solid windowtext;
border-bottom:.5pt solid windowtext;
border-left:none;}
.xl69
{mso-style-parent:style0;
text-align:center;
border:.5pt solid windowtext;
white-space:normal;}
.xl70
{mso-style-parent:style0;
text-align:center;
border-top:.5pt solid windowtext;
border-right:none;
border-bottom:.5pt solid windowtext;
border-left:.5pt solid windowtext;
white-space:normal;}
.xl71
{mso-style-parent:style0;
font-family:"Wingdings 2", serif;
mso-font-charset:2;
text-align:center;
border:.5pt solid windowtext;
white-space:normal;}
.xl72
{mso-style-parent:style0;
font-size:20.0pt;
text-align:center;}
.xl73
{mso-style-parent:style0;
text-align:center;}
.xl74
{mso-style-parent:style0;
text-align:center;
border-top:.5pt solid windowtext;
border-right:.5pt solid black;
border-bottom:.5pt solid windowtext;
border-left:.5pt solid windowtext;}
.xl75
{mso-style-parent:style0;
text-align:left;
vertical-align:top;
border:.5pt solid windowtext;
white-space:normal;}
.xl76
{mso-style-parent:style0;
text-align:left;
vertical-align:top;
border:.5pt solid windowtext;}
.xl77
{mso-style-parent:style0;
text-align:center;
border-top:.5pt solid windowtext;
border-right:none;
border-bottom:.5pt solid windowtext;
border-left:none;
white-space:normal;}
.xl78
{mso-style-parent:style0;
text-align:center;
border-top:.5pt solid windowtext;
border-right:.5pt solid windowtext;
border-bottom:.5pt solid windowtext;
border-left:none;
white-space:normal;}
.xl79
{mso-style-parent:style0;
text-align:center;
vertical-align:top;
border:.5pt solid windowtext;
white-space:normal;}
.xl80
{mso-style-parent:style0;
text-align:center;
vertical-align:top;
border:.5pt solid windowtext;}
.xl81
{mso-style-parent:style0;
text-align:left;
vertical-align:top;
border-top:.5pt solid windowtext;
border-right:none;
border-bottom:none;
border-left:.5pt solid windowtext;
white-space:normal;}
.xl82
{mso-style-parent:style0;
text-align:left;
vertical-align:top;
border-top:.5pt solid windowtext;
border-right:none;
border-bottom:none;
border-left:none;}
.xl83
{mso-style-parent:style0;
text-align:left;
vertical-align:top;
border-top:.5pt solid windowtext;
border-right:.5pt solid windowtext;
border-bottom:none;
border-left:none;}
.xl84
{mso-style-parent:style0;
text-align:left;
vertical-align:top;
border-top:none;
border-right:none;
border-bottom:.5pt solid windowtext;
border-left:.5pt solid windowtext;}
.xl85
{mso-style-parent:style0;
text-align:left;
vertical-align:top;
border-top:none;
border-right:none;
border-bottom:.5pt solid windowtext;
border-left:none;}
.xl86
{mso-style-parent:style0;
text-align:left;
vertical-align:top;
border-top:none;
border-right:.5pt solid windowtext;
border-bottom:.5pt solid windowtext;
border-left:none;}
.xl87
{mso-style-parent:style0;
text-align:left;
border-top:.5pt solid windowtext;
border-right:none;
border-bottom:none;
border-left:.5pt solid windowtext;
white-space:normal;}
.xl88
{mso-style-parent:style0;
text-align:left;
border-top:.5pt solid windowtext;
border-right:none;
border-bottom:none;
border-left:none;}
.xl89
{mso-style-parent:style0;
text-align:left;
border-top:.5pt solid windowtext;
border-right:.5pt solid windowtext;
border-bottom:none;
border-left:none;}
.xl90
{mso-style-parent:style0;
text-align:left;
border-top:none;
border-right:none;
border-bottom:.5pt solid windowtext;
border-left:.5pt solid windowtext;}
.xl91
{mso-style-parent:style0;
text-align:left;
border-top:none;
border-right:none;
border-bottom:.5pt solid windowtext;
border-left:none;}
.xl92
{mso-style-parent:style0;
text-align:left;
border-top:none;
border-right:.5pt solid windowtext;
border-bottom:.5pt solid windowtext;
border-left:none;}

@ -34,4 +34,4 @@ export default{
)
}
}
}
}

@ -7,23 +7,7 @@
<template slot-scope="{ row }" slot="repairStatus">
<el-tag :type="getStatus('inspectionMaintenance', userInfo.role_id, row.repairStatus).type">{{
getStatus('inspectionMaintenance', userInfo.role_id, row.repairStatus).name }}</el-tag>
<!-- <el-tag size="small" :type="row.repairStatus == 0 ? 'info'
: row.approvePoint != '' && (row.approvePoint == '客户审核维修方案' || row.approvePoint == '主管审核维修方案') && row.repairStatus == 1 ? 'danger'
: row.repairStatus == 1 ? ''
: (row.repairStatus == 2 || row.repairStatus == 3) ? ''
: row.repairStatus == 4 ? 'warning'
: (row.repairStatus == 5 || row.repairStatus == 6) ? 'success' : ''">
{{ row.repairStatus == 0 ? "无需维修"
: row.approvePoint != '' && (row.approvePoint == '客户审核维修方案' || row.approvePoint == '主管审核维修方案') &&
row.repairStatus == 1 ? '已驳回'
: row.repairStatus == 1 ? "待提交"
: row.repairStatus == 2 ? "待审批"
: row.repairStatus == 3 ? '待确认'
: row.repairStatus == 4 ? '维修中'
: row.repairStatus == 5 ? '维修完成'
: row.repairStatus == 6 ? '待付款' : row.repairStatus == 7 ? '待开发票' : row.repairStatus == 8 ? '已开发票' : ""
}}
</el-tag> -->
</template>
<template slot-scope="scope" slot="menuLeft">
@ -32,8 +16,8 @@
</template>
<template slot-scope="{ row }" slot="menu">
<el-button @click="handleView(row)" v-show="permission.repairDetails">查看</el-button>
<el-button @click="handleSubmit(row)" v-show="permission.repairsubmit && row.repairStatus == 1">提交</el-button>
<el-button @click="handleCheck(row)" v-show="permission.repairapprove && row.repairStatus == 2">审核</el-button>
<el-button @click="handleSubmit(row)" v-show="permission.repairsubmit && (row.repairStatus == 1||row.repairStatus == 101)">提交</el-button>
<el-button @click="handleCheck(row)" v-show="permission.repairapprove && (row.repairStatus == 2||row.repairStatus == 102)">审核</el-button>
<el-button v-show="permission.repairconfirm && row.repairStatus == 3" @click="handleAccept(row)">确认</el-button>
<el-button v-show="permission.repaircomplete && row.repairStatus == 4"
@click="handleFinish(row)">维修完成</el-button>
@ -76,18 +60,18 @@
<el-table-column label="房间名称" prop="deptName"></el-table-column>
<el-table-column label="专业/设备" prop="deviceName"></el-table-column>
<el-table-column label="巡检内容" prop="checkContent"></el-table-column>
<!--<el-table-column label="状态" prop="status">
<el-table-column label="状态" prop="status" v-if="errorForm.repairStatus != 1">
<template slot-scope="scope">
{{ scope.row.status == 1 ? '异常' : '正常' }}
</template>
</el-table-column>-->
<el-table-column label="价格" prop="price" v-if="errorForm.repairStatus != 1"></el-table-column>
</el-table-column>
<!-- <el-table-column label="价格" prop="price" v-if="errorForm.repairStatus != 1"></el-table-column>
<el-table-column label="价格" prop="price" v-if="errorForm.repairStatus == 1">
<template slot-scope="scope">
<el-input v-model="scope.row.price"
:disabled="viewType == 'view' || viewType == 'evaluate' || viewType == 'confirm'"></el-input>
</template>
</el-table-column>
</el-table-column> -->
<el-table-column prop="isRepair" align="center" label="是否维修" v-if="errorForm.repairStatus >= 3">
<template slot-scope="scope">
<el-radio-group v-model="scope.row.isRepair" fill="red">
@ -99,24 +83,25 @@
</el-table-column>
<el-table-column prop="isNeed" align="center" label="是否需要物料">
<template slot-scope="scope">
<el-radio-group v-model="scope.row.isRepair" fill="red">
<el-radio-group v-model="scope.row.isNeed" fill="red" >
<!-- || errorForm.repairStatus != 1 -->
<el-radio :disabled="viewType == 'view'" :label="1"></el-radio>
<el-radio :disabled="viewType == 'view'" class="error_radio" :label="0"></el-radio>
<el-radio :disabled="viewType == 'view'||errorForm.repairStatus != 1" :label="'1'"></el-radio>
<el-radio :disabled="viewType == 'view'||errorForm.repairStatus != 1" class="error_radio" :label="'0'"></el-radio>
</el-radio-group>
</template>
</el-table-column>
<el-table-column align="center" label="物料配置">
<template slot-scope="scope">
<el-button @click="setMaterial(scope.row)" :disabled="scope.row.isRepair == 0">物料配置{{ scope.row.isRepair
}}</el-button>
<el-button @click="setMaterial(scope.row)" :disabled="scope.row.isNeed == 0">物料配置{{
scope.row.isRepair
}}</el-button>
</template>
</el-table-column>
</el-table>
</el-form-item>
</div>
<div
v-show="(errorForm.repairStatus == 2 || (errorForm.repairStatus == 1 && errorForm.approvePoint == '主管审核维修方案')) && viewType != 'view'">
v-show="((errorForm.repairStatus == 2||errorForm.repairStatus == 102) || ((errorForm.repairStatus == 1||errorForm.repairStatus == 101) && errorForm.approvePoint == '主管审核维修方案')) && viewType != 'view'">
<div style="
color: #101010;
font-size: 20px;
@ -127,18 +112,18 @@
</div>
<el-form-item label="审核结果">
<el-select placeholder="请选择审核结果" v-model="errorForm.approveResult" style="width: 98%;"
:disabled="errorForm.repairStatus == 1 && errorForm.approvePoint == '主管审核维修方案'">
:disabled="(errorForm.repairStatus == 1||errorForm.repairStatus == 101) && errorForm.approvePoint == '主管审核维修方案'">
<el-option label="通过" :value="1"></el-option>
<el-option label="驳回" :value="0"></el-option>
</el-select>
</el-form-item>
<el-form-item v-if="errorForm.approveResult === 0" label="驳回意见">
<el-input type="textarea" v-model="errorForm.approveRemark" style="width: 98%;"
:disabled="errorForm.repairStatus == 1 && errorForm.approvePoint == '主管审核维修方案'"></el-input>
:disabled="(errorForm.repairStatus == 1||errorForm.repairStatus == 101) && errorForm.approvePoint == '主管审核维修方案'"></el-input>
</el-form-item>
<el-form-item v-if="errorForm.repairStatus == 1 && errorForm.approvePoint == '主管审核维修方案'" label="审批时间">
<el-form-item v-if="(errorForm.repairStatus == 1||errorForm.repairStatus == 101) && errorForm.approvePoint == '主管审核维修方案'" label="审批时间">
<el-input v-model="errorForm.approveTime" style="width: 98%;"
:disabled="errorForm.repairStatus == 1 && errorForm.approvePoint == '主管审核维修方案'"></el-input>
: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="审批人">
@ -281,12 +266,12 @@
<div v-show="nameImg != ''" @click="clickAssign">
<img :src="nameImg" alt="">
</div>
<!-- <div
<!-- <div v-show="isEvalute">
<!-- <div
<div v-show="isEvalute">
<avue-sign ref="sign"></avue-sign>
<el-button @click="clearName">清空</el-button>
<el-button @click="confirmName">确定</el-button>
</div> -->
<div v-show="!isEvalute">
<img :src="errorForm.signatureUrl" alt="">
@ -320,9 +305,9 @@
<el-button @click="confirmName" type="primary">确定</el-button>
</span>
</el-dialog>
<el-dialog title="物料配置" :visible.sync="materialVisible" :append-to-body="true" width="70%">
<el-table :data="materialData.filter(item => item.materialId == materialId)" border style="width: 98%">
<el-table-column width="50" align="center">
<el-dialog title="物料配置" :visible.sync="materialVisible" :append-to-body="true" width="70%" :key="Math.random()">
<el-table :data="materialData" border style="width: 98%">
<el-table-column width="50" align="center" v-if="viewType == 'submit'">
<template slot="header" slot-scope="scope">
<div @click="addColumn()"
style="width:30px;height: 30px;background: #409eff;border-radius: 50%;cursor: pointer;display: flex;align-items: center;justify-content: center;">
@ -340,12 +325,12 @@
<template slot-scope="scope">
<el-select @change="((val) => { changeProduct(val, scope.$index) })"
@blur="((val) => { changeProduct(val, scope.$index) })" v-loadmore="loadmoreProduct"
v-model="scope.row.productId" filterable remote :remote-method="remoteMethodProduct" placeholder="请选择物品">
v-model="scope.row.productId" filterable remote :remote-method="remoteMethodProduct" placeholder="请选择物品" :disabled="viewType != 'submit'">
<el-option v-for="item in productLists" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column prop="inventoryId" label="库存ID" align="center">
<el-table-column prop="warehouseId" label="库存ID" align="center">
<!-- <template slot-scope="scope">
<el-input @change="clickInventoryId" placeholder="请输入库存ID" v-model="scope.row.inventoryId"></el-input>
</template> -->
@ -363,7 +348,7 @@
<el-table-column prop="number" align="center" label="数量">
<template slot-scope="scope">
<el-input-number style="width: 100%;" @change="((val) => { changeNumber(val, scope.row) })"
v-model="scope.row.number" placeholder="请输入数量" :min="1"></el-input-number>
v-model="scope.row.number" placeholder="请输入数量" :min="1" :disabled="viewType != 'submit'"></el-input-number>
</template>
</el-table-column>
<el-table-column prop="unit" align="center" label="单位" width="80">
@ -380,7 +365,7 @@
</el-table-column>
</el-table>
<span slot="footer" class="dialog-footer">
<el-button @click="handleCancel"> </el-button>
<el-button @click="materialVisible=false"> </el-button>
<el-button @click="handleCloneSub" type="primary"> </el-button>
</span>
</el-dialog>
@ -499,12 +484,12 @@ export default {
pos: '',
spanArr1: [],
pos1: '',
materialData:[],
materialId:'',
productCurrent:1,
productSize:100,
productTotals:0,
productLists:[]
materialData: [],
materialId: '',
productCurrent: 1,
productSize: 100,
productTotals: 0,
productLists: []
}
},
computed: {
@ -518,13 +503,13 @@ export default {
val = item
}
})
return val
return val?val:''
}
}
},
},
created() {
},
methods: {
closeName() {
@ -552,61 +537,83 @@ export default {
this.assignVisible = true
},
setMaterial(row) {
console.log('row===============>',row)
console.log('物料配置按钮 row===============>', row)
this.materialId = row.id
this.getProductLists()
console.log('materialData=============>',this.materialData)
// console.log('materialData=============>',this.materialData)
this.materialData = row.detailGoodsList
this.materialVisible = true
},
addColumn() {
let arr = JSON.parse(JSON.stringify(this.materialData))
arr.push({materialId:this.materialId, inventoryId:'', productId: '', productName: '', rule: '', xh: '', number: '', unit: '', price: '', productList: [] })
arr.push({ materialId: this.materialId, warehouseId: '', productId: '', goodsName: '', rule: '', xh: '', number: '', unit: '', price: '', productList: [] })
this.materialData = arr
},
handleCloneSub(){
console.log('materialData=============>',this.materialData)
handleCloneSub() {
console.log('选中物料列表 materialData=============>', this.materialData, this.materialId, this.errorForm.tableData)
let data = []
this.materialData.forEach(item => {
data.push({
warehouseId: item.warehouseId,//id
goodsName: item.goodsName, //
unit: item.unit,//
xh: item.xh,//
rule: item.rule,//
price: item.price,
number: item.number,//
productId: item.productId,//id
})
})
//
this.errorForm.tableData.forEach(item => {
if (item.id == this.materialId) {
item.detailGoodsList = []
item.detailGoodsList = data
}
})
this.materialVisible = false
},
changeProduct(value, index) {
console.log('val===========>',value)
console.log('materialData===========>',this.materialData)
console.log('materialId===========>',this.materialId)
if(typeof value == 'string'){
this.productLists.find(item => item.id == value).unifiedQuotation = this.productLists.find(item => item.id == value).unifiedQuotation == -1 ? 0 : this.productLists.find(item => item.id == value).unifiedQuotation
this.materialData.filter(item => item.materialId == this.materialId)[index].price = this.productLists.find(item => item.id == value) ? this.productLists.find(item => item.id == value).unifiedQuotation * 1 : ''
this.materialData.filter(item => item.materialId == this.materialId)[index].number = 1
this.materialData.filter(item => item.materialId == this.materialId)[index].rule = this.productLists.find(item => item.id == value) ? this.productLists.find(item => item.id == value).rule : ''
this.materialData.filter(item => item.materialId == this.materialId)[index].xh = this.productLists.find(item => item.id == value) ? this.productLists.find(item => item.id == value).xh : ''
this.materialData.filter(item => item.materialId == this.materialId)[index].unit = this.productLists.find(item => item.id == value) ? this.productLists.find(item => item.id == value).unit : ''
this.materialData.filter(item => item.materialId == this.materialId)[index].productName = this.productLists.find(item => item.id == value) ? this.productLists.find(item => item.id == value).name : ''
this.materialData.filter(item => item.materialId == this.materialId)[index].unifiedQuotation = this.productLists.find(item => item.id == value) ? this.productLists.find(item => item.id == value).unifiedQuotation : ''
this.materialData.filter(item => item.materialId == this.materialId)[index].inventoryId = this.productLists.find(item => item.id == value) ? this.productLists.find(item => item.id == value).inventoryId : ''
}else if(typeof value == 'object' && value.target.value != ''){
this.productLists.find(item => item.id == value).unifiedQuotation = this.productLists.find(item => item.id == value).unifiedQuotation == -1 ? 0 : this.productLists.find(item => item.id == value).unifiedQuotation
this.materialData.filter(item => item.materialId == this.materialId)[index].price = this.productLists.find(item => item.id == value.target.value) ? this.productLists.find(item => item.id == value.target.value).unifiedQuotation * 1 : ''
this.materialData.filter(item => item.materialId == this.materialId)[index].number = 1
this.materialData.filter(item => item.materialId == this.materialId)[index].rule = this.productLists.find(item => item.id == value.target.value) ? this.productLists.find(item => item.id == value.target.value).rule : ''
this.materialData.filter(item => item.materialId == this.materialId)[index].xh = this.productLists.find(item => item.id == value.target.value) ? this.productLists.find(item => item.id == value.target.value).xh : ''
this.materialData.filter(item => item.materialId == this.materialId)[index].unit = this.productLists.find(item => item.id == value.target.value) ? this.productLists.find(item => item.id == value.target.value).unit : ''
this.materialData.filter(item => item.materialId == this.materialId)[index].productName = this.productLists.find(item => item.id == value.target.value) ? this.productLists.find(item => item.id == value.target.value).name : ''
this.materialData.filter(item => item.materialId == this.materialId)[index].unifiedQuotation = this.productLists.find(item => item.id == value.target.value) ? this.productLists.find(item => item.id == value.target.value).unifiedQuotation : ''
this.materialData.filter(item => item.materialId == this.materialId)[index].inventoryId = this.productLists.find(item => item.id == value.target.value) ? this.productLists.find(item => item.id == value.target.value).inventoryId : ''
let newArr = this.productLists.find(item => item.id == value)
if (typeof value == 'string') {
if (newArr.length <= 0) {
return false
}
// if(this.productInventoryId != ''){
// this.productCurrent = 1
// this.productSize = 10
// this.getProductLists()
// }
},
newArr.unifiedQuotation = newArr.unifiedQuotation == -1 ? 0 : newArr.unifiedQuotation
this.materialData[index].price = newArr.unifiedQuotation * 1
// this.materialData[index].productId = newArr.productId
this.materialData[index].number = 1
this.materialData[index].rule = newArr.rule
this.materialData[index].xh = newArr.xh
this.materialData[index].unit = newArr.unit
this.materialData[index].goodsName = newArr.name
this.materialData[index].unifiedQuotation = newArr.unifiedQuotation
this.materialData[index].warehouseId = newArr.inventoryId
} else if (typeof value == 'object' && value.target.value != '') {
this.productLists.find(item => item.id == value).unifiedQuotation = this.productLists.find(item => item.id == value).unifiedQuotation == -1 ? 0 : this.productLists.find(item => item.id == value).unifiedQuotation
this.materialData[index].price = this.productLists.find(item => item.id == value.target.value) ? this.productLists.find(item => item.id == value.target.value).unifiedQuotation * 1 : ''
this.materialData.filter(item => item.materialId == this.materialId)[index].number = 1
this.materialData.filter(item => item.materialId == this.materialId)[index].rule = this.productLists.find(item => item.id == value.target.value) ? this.productLists.find(item => item.id == value.target.value).rule : ''
this.materialData.filter(item => item.materialId == this.materialId)[index].xh = this.productLists.find(item => item.id == value.target.value) ? this.productLists.find(item => item.id == value.target.value).xh : ''
this.materialData.filter(item => item.materialId == this.materialId)[index].unit = this.productLists.find(item => item.id == value.target.value) ? this.productLists.find(item => item.id == value.target.value).unit : ''
this.materialData.filter(item => item.materialId == this.materialId)[index].goodsName = this.productLists.find(item => item.id == value.target.value) ? this.productLists.find(item => item.id == value.target.value).name : ''
this.materialData.filter(item => item.materialId == this.materialId)[index].unifiedQuotation = this.productLists.find(item => item.id == value.target.value) ? this.productLists.find(item => item.id == value.target.value).unifiedQuotation : ''
this.materialData.filter(item => item.materialId == this.materialId)[index].warehouseId = this.productLists.find(item => item.id == value.target.value) ? this.productLists.find(item => item.id == value.target.value).inventoryId : ''
}
},
changeNumber(val, row) {
console.log('val------------->', val)
console.log('row------------->', row)
// row.price = row.price * val
// row.price = row.unifiedQuotation * val
if(row.unifiedQuotation){
if (row.unifiedQuotation) {
row.price = (row.unifiedQuotation * val).toFixed(2)
}else{
} else {
}
@ -617,8 +624,8 @@ export default {
this.productCurrent++
this.getProductLists('more')
},
getProductLists(type, val,inventoryId){
getGoodsList({ current: this.productCurrent, size: this.productSize, name: val ? val : null}).then(res => {
getProductLists(type, val, inventoryId) {
getGoodsList({ current: this.productCurrent, size: this.productSize, name: val ? val : null }).then(res => {
if (type == 'more') {
this.productLists = this.productLists.concat(res.data.data.records)
this.productTotals = res.data.data.total
@ -714,6 +721,16 @@ export default {
this.errorForm = res.data.data
this.dialogerror = true
let data = this.checkDeepData(res.data.data.details)
if (this.errorForm.repairStatus > 1) {
data.forEach(item => {
if (item.detailGoodsList.length > 0) {
item.isNeed = '1'
} else {
item.isNeed = '0'
}
})
}
this.errorForm.tableData = data
this.errorForm.tableData.map(item => {
item.price = item.price == -1 ? '' : item.price
@ -737,6 +754,15 @@ export default {
this.errorForm.isOkQuality = ''
this.errorForm.isOkSecure = ''
let data = this.checkDeepData(res.data.data.details)
if (this.errorForm.repairStatus > 1) {
data.forEach(item => {
if (item.detailGoodsList.length > 0) {
item.isNeed = '1'
} else {
item.isNeed = '0'
}
})
}
this.errorForm.tableData = data
})
@ -791,11 +817,12 @@ export default {
this.errorForm = res.data.data
this.dialogerror = true
let data = this.checkDeepData(res.data.data.details)
console.log('获取详情数据', data)
this.errorForm.tableData = data
this.errorForm.tableData.map(item => {
item.price = item.price == -1 ? '' : item.price
})
console.log('data==========>', data)
}
})
},
@ -807,6 +834,15 @@ export default {
this.errorForm = res.data.data
this.dialogerror = true
let data = this.checkDeepData(res.data.data.details)
if (this.errorForm.repairStatus > 1) {
data.forEach(item => {
if (item.detailGoodsList.length > 0) {
item.isNeed = '1'
} else {
item.isNeed = '0'
}
})
}
this.errorForm.tableData = data
this.errorForm.approveResult = ''
this.errorForm.approveRemark = ''
@ -971,49 +1007,51 @@ export default {
this.$refs['errorForm'].validate((valid) => {
if (valid) {
if (this.viewType == 'submit') {
if (this.errorForm.tableData.find(item => item.price === '')) {
this.$message.error("请对异常的数据填写价格")
} else {
let query = []
this.errorForm.tableData.map(item => {
query.push({
id: item.id, // id
status: item.status, //01
taskId: this.errorForm.id, // ID
floorName: item.floorName, //
deptId: item.deptId, //
majorName: item.majorName, //
checkContent: item.checkContent, //
craft: item.craft, //
period: item.period, // 1: 2 3
picUrl: item.picUrl, //
signUrl: item.signUrl, //
remark: item.remark, //
price: item.price, //
// isRepair , 0: 1
startTime: item.startTime, //
})
// if (this.errorForm.tableData.find(item => item.price === '')) {
// this.$message.error("")
// } else {
let query = []
this.errorForm.tableData.map(item => {
query.push({
id: item.id, // id
status: item.status, //01
taskId: this.errorForm.id, // ID
floorName: item.floorName, //
deptId: item.deptId, //
majorName: item.majorName, //
checkContent: item.checkContent, //
craft: item.craft, //
period: item.period, // 1: 2 3
picUrl: item.picUrl, //
signUrl: item.signUrl, //
remark: item.remark, //
price: item.price, //
// isRepair , 0: 1
startTime: item.startTime, //
isNeed: item.isNeed,// 01
detailGoodsList: item.detailGoodsList,//
})
let params = {
task: {
id: this.errorForm.id,
},
detailList: query
})
let params = {
task: {
id: this.errorForm.id,
},
detailList: query
}
console.log('params==========>', params)
solutionSave(params).then(res => {
if (res.data.code == 200) {
solutionSubmit({ id: this.errorForm.id }).then(res => {
if (res.data.code == 200) {
this.$message.success('提交成功')
this.dialogerror = false
this.onLoad()
}
})
}
console.log('params==========>', params)
solutionSave(params).then(res => {
if (res.data.code == 200) {
solutionSubmit({ id: this.errorForm.id }).then(res => {
if (res.data.code == 200) {
this.$message.success('提交成功')
this.dialogerror = false
this.onLoad()
}
})
}
})
})
}
// }
} else if (this.viewType == 'check') {
if (this.errorForm.approveResult == 1) {
supervisorConfirm({ id: this.errorForm.id }).then(res => {

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -59,7 +59,7 @@
<template slot-scope="{size}" slot="menuForm" v-if="index == addForm.length - 1">
<el-button @click="handleAdd" v-show="title == '需求填报'"> </el-button>
<el-button @click="handleCancel"> </el-button>
<el-button @click="handleSave" v-show="title == '需求填报'"> </el-button>
<el-button @click="handleSave" v-show="title == '需求填报'" v-if="userInfo.role_id != '1839536982874193922'"> </el-button>
<el-button type="primary" @click="handleConfirm(index)"> </el-button>
</template>
</avue-form>
@ -340,7 +340,7 @@ export default {
}
console.log('addForm------------->',this.addForm)
this.$forceUpdate()
},
computed: {
...mapGetters(["userInfo", "permission", "systemTime"]),
@ -358,8 +358,8 @@ export default {
// faultPosition: { node: this.deviceList.find(item => item.id == this.form.deviceName).position, data: {} },
faultPosition: this.form.faultLocation,
deviceName: this.form.deviceName,
// faultType: this.deviceList.find(item => item.id == this.form.deviceName).type,
faultType: this.form.faultType,
// faultType: this.deviceList.find(item => item.id == this.form.deviceName).type,
faultType: this.form.faultType,
faultDescribe: this.form.faultDescribe,
videoAttaches: this.form.videoAttaches,
picAttaches: this.form.picAttaches,
@ -693,7 +693,7 @@ export default {
return (file) =>{
console.log('file------>',file)
if(this.addForm[index].form.videoAttaches && this.addForm[index].form.picAttaches && this.addForm[index].form.videoAttaches.length + this.addForm[index].form.picAttaches.length < 3){
const isLt3M = file.size
const isLt3M = file.size
console.log('isLt2M==============>',isLt3M)
if(isLt3M > 1024 * 1024 * 3){
const r = confirm(
@ -755,7 +755,7 @@ export default {
// base64Blob
const blobImg = this.dataURItoBlob(compressData)
return blobImg
},
},
/* base64转Blob对象 */
dataURItoBlob(data) {
let byteString
@ -777,7 +777,7 @@ export default {
if (file) {
let filename = file.name;
let filetype = file.type;
const videoUrl = ffmpeg.getObjectURL(file);
// const video = document.getElementById('video');
// video.src = videoUrl;
@ -928,8 +928,8 @@ export default {
});
}
}
}
});
@ -1104,15 +1104,15 @@ export default {
})
this.$emit('close')
}
}
}
}
});
});
},
//
handleConfirm(index) {
@ -1200,8 +1200,8 @@ export default {
})
}
}
}
}
}
@ -1213,4 +1213,4 @@ export default {
}
</script>
<style></style>
<style></style>

@ -1,159 +1,578 @@
<template>
<div class="container">
<div class="con_box">
<div style="
color: #101010;
font-size: 24px;
font-weight: 550;
margin: 20px 0;
">
故障信息
</div>
<div class="con_bottom">
<div class="con_item">
<span class="con_title">填报人:</span>
<span class="con_text">{{detailForm.informantName}}</span>
</div>
<div class="con_item">
<span class="con_title">填报人电话:</span>
<span class="con_text">{{detailForm.informantPhone}}</span>
</div>
<div class="con_item describe">
<span class="con_title">故障现象描述:</span>
<span class="con_text">{{detailForm.faultDescribe}}</span>
</div>
<div class="con_item">
<span class="con_title">故障位置:</span>
<span class="con_text">{{detailForm.faultLocation}}</span>
</div>
<div class="con_item">
<span class="con_title">设备名称:</span>
<span class="con_text">{{detailForm.deviceName}}</span>
</div>
<div class="con_item">
<span class="con_title">故障专业类型:</span>
<span class="con_text">{{detailForm.faultType}}</span>
</div>
<div class="con_item">
<span class="con_title">提报时间:</span>
<span class="con_text">{{detailForm.fillingTime}}</span>
</div>
<div class="con_item imgs" v-show="detailForm.picAttaches.length > 0">
<span class="con_title">故障图片:</span>
<!-- <span>{{detailForm.errorImg}}</span> -->
<img v-for="item in detailForm.picAttaches" :key="item" :src="item.url" alt=""
style="width: 148px; height: 148px;margin-right:10px;">
</div>
</div>
</div>
<div class="con_box" v-show="detailForm.status > 1">
<div style="
color: #101010;
font-size: 20px;
font-weight: 550;
margin: 20px 0;
">
处理情况
</div>
<div class="con_bottom">
<div class="con_item">
<span class="con_title">接单时间:</span>
<span class="con_text">{{detailForm.dispatchTime}}</span>
</div>
<div class="con_item">
<span class="con_title">客服意见:</span>
<span class="con_text">{{detailForm.customerOpinion}}</span>
</div>
</div>
</div>
<div class="con_box" v-show="detailForm.status >= 6">
<div style="
color: #101010;
font-size: 20px;
font-weight: 550;
margin: 20px 0;
">
维修详情
</div>
<div class="con_bottom">
<div class="con_item">
<span class="con_title">填报人:</span>
<span class="con_text">{{detailForm.repairPersonName}}</span>
</div>
<div class="con_item">
<span class="con_title">设备名称:</span>
<span class="con_text">{{detailForm.deviceName}}</span>
</div>
<div class="con_item">
<span class="con_title">故障原因:</span>
<span class="con_text">{{detailForm.faultCause}}</span>
</div>
<div class="con_item">
<span class="con_title">处理方法:</span>
<span class="con_text">{{detailForm.processMethod}}</span>
</div>
<div class="con_item describe">
<span class="con_title">维修材料:</span>
<el-table :data="detailForm.materials" border style="width: 98%">
<el-table-column prop="materialName" align="center" label="物料名称">
</el-table-column>
<el-table-column prop="materialPrice" align="center" label="金额">
</el-table-column>
<template slot="append">
<tr style="width: 100%;display: flex;justify-content: space-around;align-items: center;">
<td style="padding: 10px;padding-right: 0;font-size: 14px;color: #909399;font-weight: 600;">总计:{{ detailForm.totalPrice }} </td>
<td style="padding: 10px 0px 10px 100px; font-size: 14px;color: #909399;font-weight: 600;">折扣:{{ detailForm.discount }}</td>
<td style="padding: 10px 0px 10px 100px;font-size: 14px;color: #909399;font-weight: 600;">折后金额:{{ detailForm.discountPrice }}<span v-show="detailForm.discountPrice != ''"></span></td>
</tr>
</template>
</el-table>
</div>
</div>
</div>
</div>
</template>
<div class="container">
<table cellpadding="0" cellspacing="0" width="100%" style="border-collapse:
collapse;table-layout:fixed;width:100%">
<tbody>
<tr height="55" style="height:41.0px">
<td colspan="7" height="55" class="xl72" width="625" style="height:41.0px;width:100%">运营维护服务单</td>
</tr>
<tr height="39" style="height:29.0px">
<td height="39" class="xl66" style="height:29.0px">客户名称</td>
<td colspan="3" class="xl66" style="border-left:none">{{ info.informantName }}</td>
<td class="xl66" style="border-left:none">联系人</td>
<td colspan="2" class="xl66" style="border-right:.5px solid black;border-left:
none">{{ info.informantName }}</td>
</tr>
<tr height="39" style="height:29.0px">
<td height="39" class="xl66" style="height:29.0px;border-top:none">联系电话</td>
<td colspan="2" class="xl66" style="border-left:none">{{ info.informantPhone }}</td>
<td class="xl66" style="border-top:none;border-left:none">地址</td>
<td colspan="3" class="xl66" style="border-left:none">{{ info.adress }}</td>
</tr>
<tr height="140" style="height:105.0px">
<td colspan="7" height="140" class="xl75" width="625" style="height:105.0px;
width:465px">故障现象<br>{{ info.faultDescribe }}
</td>
</tr>
<tr height="45" style="height:33.5px">
<td height="45" class="xl66" style="height:33.5px;border-top:none">是否在保修期</td>
<td class="xl67" style="border-top:none">
<font class="font6">{{ !info.isMaintain ? '¨' : '√' }}</font>
<font class="font9"></font>
</td>
<td class="xl68" style="border-top:none">
<font class="font6">{{ info.isMaintain ? '¨' : '√' }}</font>
<font class="font8"></font>
</td>
<!-- 202 -->
<td colspan="2" class="xl66" style="border-left:none">约定服务方式</td>
<td class="xl67" style="border-top:none">
<font class="font6">{{ info.status != 202 ? '√' : '¨' }}</font>
<font class="font8">上门</font>
</td>
<td class="xl68" style="border-top:none">
<font class="font6">{{ info.status == 202 ? '√' : '¨' }}</font>
<font class="font8">电话</font>
</td>
</tr>
<tr height="140" style="mso-height-source:userset;height:105.0px">
<td colspan="7" height="140" class="xl75" width="625" style="height:105.0px;
width:465px">故障产生原因<br>{{ info.faultCause }}
</td>
</tr>
<tr height="35" style="mso-height-source:userset;height:26.55px">
<td colspan="7" height="35" class="xl69" width="625" style="height:26.55px;
width:465px"> </td>
</tr>
<tr height="35" style="mso-height-source:userset;height:26.55px">
<td height="35" class="xl69" width="117" style="height:26.55px;border-top:none;
width:87px">序号</td>
<td colspan="3" class="xl69" width="270" style="border-left:none;width:201px">名称</td>
<td class="xl69" width="58" style="border-top:none;border-left:none;width:43px">数量</td>
<td class="xl69" width="90" style="border-top:none;border-left:none;width:67px">单价</td>
<td class="xl69" width="90" style="border-top:none;border-left:none;width:67px">总价</td>
</tr>
<!-- materials -->
<tr height="41" style="mso-height-source:userset;height:30.5px" v-for="(item, index) in info.materials"
:key="index">
<td height="41" class="xl69" width="117" style="height:30.5px;border-top:none;
width:87px">{{ index + 1 }}</td>
<td colspan="3" class="xl70" width="270" style="border-right:.5px solid black;
border-left:none;width:201px">{{ item.materialName }}</td>
<td class="xl70" width="58" style="border-top:none;border-left:none;width:43px">{{ item.materialCount }}</td>
<td class="xl69" width="90" style="border-top:none;width:67px">{{
(item.materialPrice / item.materialCount).toFixed(2) }}</td>
<td class="xl69" width="90" style="border-top:none;width:67px">{{
item.materialPrice }}</td>
</tr>
<!-- 总计 -->
<tr height="39" style="mso-height-source:userset;height:29.55px">
<td height="39" class="xl69" width="117" style="height:29.55px;border-top:none;
width:87px">{{ info.materials.length > 0 ? info.materials.length + 1 : 1 }}</td>
<td colspan="5" class="xl70" width="418" style="border-right:.5px solid black;
border-left:none;width:311px">合计</td>
<td class="xl69" width="90" style="border-top:none;border-left:none;width:67px">{{ info.totalPrice
< 0 ? 0 : info.totalPrice }}</td>
</tr>
<tr height="59" style="mso-height-source:userset;height:44.0px">
<td colspan="2" height="59" class="xl69" width="207" style="height:44.0px;width:154px">
<br>
生故 </td>
<td colspan="5" class="xl79" width="418" style="border-left:none;width:311px">
<font class="font0"><span style="mso-spacerun:yes">&nbsp;&nbsp; </span><br>
<span style="mso-spacerun:yes">&nbsp;&nbsp; </span>维修差旅费--
</font>
<font class="font10"><span
style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></font>
<font class="font11">0</font>
<font class="font0"> 维修费总计{{ info.isMaintain ? info.totalPrice < 0 ? '0' : info.totalPrice : '--' }}</font>
<font class="font10"><span
style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></font>
<font class="font11">0</font>
<font class="font0"></font>
</td>
</tr>
<tr height="61" style="mso-height-source:userset;height:46.05px">
<td height="61" class="xl69" width="117" style="height:46.05px;border-top:none;
width:87px"> </td>
<td colspan="6" class="xl69" width="508" style="border-left:none;width:378px">
<font class="font0"><span style="mso-spacerun:yes">&nbsp;&nbsp; </span>维修差旅费--</font>
<font class="font10"><span
style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></font>
<font class="font0"> 维修费总计{{ !info.isMaintain ? info.totalPrice < 0 ? '0' : info.totalPrice : '--' }}</font>
<font class="font10"><span
style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></font>
<font class="font0"></font>
</td>
</tr>
<tr height="31" style="mso-height-source:userset;height:23.55px">
<td colspan="6" rowspan="2" height="180" class="xl81" width="535" style="border-right:
.5px solid black;border-bottom:.5px solid black;height:135.05px;width:398px">故障排除方法和处理结果详细描述<br>{{
info.processMethod }}
</td>
<td rowspan="4" class="xl76" style="border-top:none">客户签字
<br/>
<br/>
<img v-if="info.signatureUrl!=''" :src="this.dataURL" alt="" crossorigin="anonymous" style="width: 100px;height: 50px;background: #fff;">
</td>
</tr>
<tr height="149" style="mso-height-source:userset;height:111.5px">
</tr>
<tr height="40" style="mso-height-source:userset;height:30.0px">
<td colspan="6" rowspan="2" height="80" class="xl87" width="535" style="border-right:
.5px solid black;border-bottom:.5px solid black;height:60.0px;width:398px">
<font class="font0">维修工程师签名{{ info.repairPersonName }}<span
style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></font>
<font class="font8">联系方式{{ info.repairPersonPhone }}</font>
<font class="font8"><br>
</font>
<font class="font10"><br>
</font>
<font class="font0">日期{{ info.finishTime }}</font>
</td>
</tr>
<tr height="40" style="mso-height-source:userset;height:30.0px">
</tr>
<tr height="31" style="mso-height-source:userset;height:23.55px">
<td height="31" class="xl65" style="height:23.55px"></td>
<td class="xl65"></td>
<td class="xl65"></td>
<td class="xl65"></td>
<td class="xl65"></td>
<td class="xl65"></td>
<td class="xl65"></td>
</tr>
<tr height="31" style="mso-height-source:userset;height:23.55px">
<td height="31" class="xl65" style="height:23.55px"></td>
<td class="xl65"></td>
<td class="xl65"></td>
<td class="xl65"></td>
<td class="xl65"></td>
<td class="xl65"></td>
<td class="xl65"></td>
</tr>
<tr height="31" style="mso-height-source:userset;height:23.55px">
<td height="31" class="xl65" style="height:23.55px"></td>
<td class="xl65"></td>
<td class="xl65"></td>
<td class="xl65"></td>
<td class="xl65"></td>
<td class="xl65"></td>
<td class="xl65"></td>
</tr>
<tr height="31" style="mso-height-source:userset;height:23.55px">
<td height="31" class="xl65" style="height:23.55px"></td>
<td class="xl65"></td>
<td class="xl65"></td>
<td class="xl65"></td>
<td class="xl65"></td>
<td class="xl65"></td>
<td class="xl65"></td>
</tr>
<tr height="0" style="display:none">
<td width="117" style="width:87px"></td>
<td width="90" style="width:67px"></td>
<td width="90" style="width:67px"></td>
<td width="90" style="width:67px"></td>
<td width="58" style="width:43px"></td>
<td width="90" style="width:67px"></td>
<td width="90" style="width:67px"></td>
</tr>
</tbody>
</table>
</div>
</template>
<script>
export default {
name: 'requirement',
props:{
detailForm:Object
},
data(){
return {
}
name: 'requirement',
props: {
detailForm: Object
},
watch: {
detailForm(v) {
this.info = v
this.dataURItoBlob(v.signatureUrl)
}
},
data() {
return {
pdfSrc: '@/assets/file/workTemplet.pdf',
info: {},
dataURL:''
}
},
mounted() {
},
methods: {
dataURItoBlob(url) {
let homeImage = new Image();
//
homeImage.setAttribute("crossOrigin", "anonymous");
homeImage.src = url;//
//homeImage.onload
homeImage.onload = () => {
let canvas = document.createElement("canvas");
canvas.width = homeImage.width;
canvas.height = homeImage.height;
let context = canvas.getContext("2d");
context.fillStyle = "#fff";
context.drawImage(homeImage, 0, 0, homeImage.width, homeImage.height);
let quality = 0.8;
// dataurlbase64
this.dataURL = canvas.toDataURL("image/png", quality);
};
},
}
}
</script>
<style lang="scss" scoped>
.container{
width: 100%;
height: 100%;
.con_box{
.con_bottom{
display: flex;
flex-wrap: wrap;
.con_item{
width: 50%;
font-size: 22px;
padding: 5px 0;
display: flex;
&.describe{
width: 100%;
}
.con_title{
width: 150px;
}
.con_text{
width: calc(100% - 150px);
}
}
}
}
}
</style>
.container {
padding: 20px 150px;
}
tr {
// mso-height-source: auto;
// mso-ruby-visibility: none;
}
col {
// mso-width-source: auto;
// mso-ruby-visibility: none;
}
br {
// mso-data-placement: same-cell;
}
ruby {
ruby-align: left;
}
.style0 {
// mso-number-format: General;
// text-align: general;
vertical-align: middle;
white-space: nowrap;
// mso-rotate: 0;
// mso-background-source: auto;
// mso-pattern: auto;
color: black;
font-size: 11.0pt;
font-weight: 400;
font-style: normal;
text-decoration: none;
// mso-generic-font-family: auto;
// mso-font-charset: 134;
border: none;
// mso-protection: locked visible;
// mso-style-id: 0;
}
.font0 {
color: black;
font-size: 11.0pt;
font-weight: 400;
font-style: normal;
text-decoration: none;
// mso-generic-font-family: auto;
// mso-font-charset: 134;
}
.font6 {
color: black;
font-size: 11.0pt;
font-weight: 400;
font-style: normal;
text-decoration: none;
font-family: Wingdings;
// mso-generic-font-family: auto;
// mso-font-charset: 2;
}
.font8 {
color: black;
font-size: 11.0pt;
font-weight: 400;
font-style: normal;
text-decoration: none;
// mso-generic-font-family: auto;
// mso-font-charset: 134;
}
.font9 {
color: black;
font-size: 11.0pt;
font-weight: 400;
font-style: normal;
text-decoration: none;
// mso-generic-font-family: auto;
// mso-font-charset: 134;
}
.font10 {
color: black;
font-size: 11.0pt;
font-weight: 400;
font-style: normal;
text-decoration: underline;
// text-underline-style: single;
// mso-generic-font-family: auto;
// mso-font-charset: 134;
}
.font11 {
color: white;
font-size: 11.0pt;
font-weight: 400;
font-style: normal;
text-decoration: underline;
// text-underline-style: single;
// mso-generic-font-family: auto;
// mso-font-charset: 134;
}
td {
// mso-style-parent: style0;
padding-top: 1px;
padding-right: 1px;
padding-left: 1px;
// mso-ignore: padding;
color: black;
font-size: 11.0pt;
font-weight: 400;
font-style: normal;
text-decoration: none;
// mso-generic-font-family: auto;
// mso-font-charset: 134;
// mso-number-format: General;
// text-align: general;
vertical-align: middle;
border: none;
// mso-background-source: auto;
// mso-pattern: auto;
// mso-protection: locked visible;
white-space: nowrap;
// mso-rotate: 0;
}
.xl65 {
// mso-style-parent: style0;
vertical-align: bottom;
}
.xl66 {
// mso-style-parent: style0;
text-align: center;
border: .5pt solid #000;
}
.xl67 {
// mso-style-parent: style0;
// mso-generic-font-family: auto;
// mso-font-charset: 2;
text-align: center;
border-top: .5pt solid #000;
border-right: none;
border-bottom: .5pt solid #000;
border-left: none;
}
.xl68 {
// font-family: Wingdings;
// mso-generic-font-family: auto;
// mso-font-charset: 2;
text-align: center;
border-top: .5pt solid #000;
border-right: .5pt solid #000;
border-bottom: .5pt solid #000;
border-left: none;
}
.xl69 {
// mso-style-parent: style0;
text-align: center;
border: .5pt solid #000;
white-space: normal;
}
.xl70 {
// mso-style-parent: style0;
text-align: center;
border-top: .5pt solid #000;
border-right: none;
border-bottom: .5pt solid #000;
border-left: .5pt solid #000;
white-space: normal;
}
.xl71 {
// mso-style-parent: style0;
font-family: "Wingdings 2", serif;
// mso-font-charset: 2;
text-align: center;
border: .5pt solid #000;
white-space: normal;
}
.xl72 {
// mso-style-parent: style0;
font-size: 20.0pt;
text-align: center;
}
.xl73 {
// mso-style-parent: style0;
text-align: center;
}
.xl74 {
// mso-style-parent: style0;
text-align: center;
border-top: .5pt solid #000;
border-right: .5pt solid black;
border-bottom: .5pt solid #000;
border-left: .5pt solid #000;
}
.xl75 {
// mso-style-parent: style0;
text-align: left;
vertical-align: top;
border: .5pt solid #000;
white-space: normal;
}
.xl76 {
// mso-style-parent: style0;
text-align: left;
vertical-align: top;
border: .5pt solid #000;
}
.xl77 {
// mso-style-parent: style0;
text-align: center;
border-top: .5pt solid #000;
border-right: none;
border-bottom: .5pt solid #000;
border-left: none;
white-space: normal;
}
.xl78 {
// mso-style-parent: style0;
text-align: center;
border-top: .5pt solid #000;
border-right: .5pt solid #000;
border-bottom: .5pt solid #000;
border-left: none;
white-space: normal;
}
.xl79 {
// mso-style-parent: style0;
text-align: center;
vertical-align: top;
border: .5pt solid #000;
white-space: normal;
}
.xl80 {
// mso-style-parent: style0;
text-align: center;
vertical-align: top;
border: .5pt solid #000;
}
.xl81 {
// mso-style-parent: style0;
text-align: left;
vertical-align: top;
border-top: .5pt solid #000;
border-right: none;
border-bottom: none;
border-left: .5pt solid #000;
white-space: normal;
}
.xl82 {
// mso-style-parent: style0;
text-align: left;
vertical-align: top;
border-top: .5pt solid #000;
border-right: none;
border-bottom: none;
border-left: none;
}
.xl83 {
// mso-style-parent: style0;
text-align: left;
vertical-align: top;
border-top: .5pt solid #000;
border-right: .5pt solid #000;
border-bottom: none;
border-left: none;
}
.xl84 {
// mso-style-parent: style0;
text-align: left;
vertical-align: top;
border-top: none;
border-right: none;
border-bottom: .5pt solid #000;
border-left: .5pt solid #000;
}
.xl85 {
// mso-style-parent: style0;
text-align: left;
vertical-align: top;
border-top: none;
border-right: none;
border-bottom: .5pt solid #000;
border-left: none;
}
.xl86 {
// mso-style-parent: style0;
text-align: left;
vertical-align: top;
border-top: none;
border-right: .5pt solid #000;
border-bottom: .5pt solid #000;
border-left: none;
}
.xl87 {
// mso-style-parent: style0;
text-align: left;
border-top: .5pt solid #000;
border-right: none;
border-bottom: none;
border-left: .5pt solid #000;
white-space: normal;
}
</style>

File diff suppressed because it is too large Load Diff

@ -174,7 +174,7 @@
<el-input placeholder="请输入资料名称" v-model="addForm1.name"></el-input>
</el-form-item>
<el-form-item label="资料上传">
<el-upload
<el-upload
class="upload-demo"
action="/api/blade-resource/oss/endpoint/put-file"
:on-success="handleFileSuccess" :on-remove="handleRemove" multiple
@ -322,7 +322,7 @@ export default {
this.onLoad()
}
})
})
})
}
},
//
@ -378,10 +378,10 @@ export default {
a.href = arr[0].link;//
a.dispatchEvent(event);
}
}
}
}
},
//
clickChecked(row) {
@ -714,4 +714,4 @@ export default {
}
}
</style>
</style>

@ -3,7 +3,7 @@
<avue-crud :option="option" :table-loading="loading" :data="data" :search.sync="searchForm" :page.sync="page"
ref="crud" v-model="form" :permission="permissionList" :before-open="beforeOpen" :before-close="beforeClose"
@search-change="searchChange" @search-reset="searchReset" @current-change="currentChange"
@size-change="sizeChange" @refresh-change="refreshChange" @selection-change="selectionChange" >
@size-change="sizeChange" @refresh-change="refreshChange" @selection-change="selectionChange">
<template slot-scope="{row}" slot="produceTime">
{{ row.produceTime.substring(0, 10) }}
</template>
@ -57,14 +57,20 @@
<template slot-scope="{ row }" slot="menu">
<el-button v-show="permission.deviceView" @click="handleView(row)">查看</el-button>
<el-button v-show="permission.deviceEdit" @click="handleEdit(row)">编辑</el-button>
<el-button v-show="permission.deviceSubmit" @click="addOperation(row)">需求提报</el-button>
<!-- <el-button v-show="permission.deviceSubmit" @click="addOperation(row)">需求提报</el-button> -->
<el-button v-show="row.qrcode == '' && permission.createQrcode" @click="handleQrcode(row)">生成二维码</el-button>
<el-button v-show="row.qrcode != '' && permission.qrcodeView" @click="lookQrcode(row)">查看二维码</el-button>
<el-button v-show="permission.deviceDelete" @click="handleDelete(row)">删除</el-button>
</template>
</avue-crud>
<el-dialog :title="dialogTitle" :visible.sync="dialogVisible" :append-to-body="true" width="70%">
<div style="height: 500px; overflow: auto">
<el-dialog :title="dialogTitle" :visible.sync="dialogVisible" :append-to-body="true" width="70%" >
<div class="details_tab_box">
<el-radio-group v-model="detailsTab" size="mini">
<el-radio-button label="1">设备详情</el-radio-button>
<el-radio-button label="2">维修维保记录</el-radio-button>
</el-radio-group>
</div>
<div style="height: 500px; overflow: auto" v-if="detailsTab == '1'">
<el-form ref="form" :model="addForm" :rules="addRules" label-width="120px" label-position="left">
<div>
<div style="
@ -119,7 +125,7 @@
<el-cascader :props="labProps" style="width:98%;" v-model="addForm.lab"
:disabled="viewType == 'view'"></el-cascader>
</el-form-item>
<el-form-item label="" prop="lab" v-if="role_id=='1839536982874193922'">
<el-form-item label="" prop="lab" v-if="role_id == '1839536982874193922'">
<el-checkbox v-model="addForm.isWarran" :disabled="viewType == 'view'"> 是否在保</el-checkbox>
</el-form-item>
</div>
@ -197,6 +203,72 @@
</el-table>
</div>
</div>
<div style="height: 500px; overflow: auto" v-if="detailsTab == '2'">
<el-collapse accordion>
<el-collapse-item title="维修记录" name="1">
<el-table :data="workOrderList" style="width: 100%">
<el-table-column prop="requirementCode" label="需求单号" width="180">
</el-table-column>
<el-table-column prop="faultDescribe" label="故障描述" width="180">
</el-table-column>
<el-table-column prop="repairType" label="维修类型">
<template slot-scope="scope">
<span v-if="scope.row.repairType < 0">-</span>
<span v-else>
<el-select placeholder="请选择维修类别" disabled v-model="scope.row.repairType" size="small">
<el-option v-for="item in repairTypeList" :key="item.dictKey" :label="item.dictValue"
:value="item.dictKey"></el-option>
</el-select>
</span>
</template>
</el-table-column>
<el-table-column prop="customerOpinion" label="维修人员">
<template slot-scope="scope">
<span v-if="scope.row.repairPerson == ''">-</span>
<span v-else>
<el-select placeholder="请选择维修人员" :disabled="true" v-model="scope.row.repairPerson" size="small">
<el-option v-for="item in repairPersonList" :key="item.id" :label="item.name"
:value="item.id"></el-option>
</el-select>
</span>
</template>
</el-table-column>
<el-table-column prop="createTime" label="提报时间">
</el-table-column>
</el-table>
</el-collapse-item>
<el-collapse-item title="维保记录" name="2">
<el-table :data="maintenanceList" style="width: 100%">
<el-table-column prop="taskCode" label="维保任务单号" width="150">
</el-table-column>
<!-- -->
<el-table-column prop="floorName" label="楼层" width="130">
</el-table-column>
<el-table-column prop="deptName" label="房间" width="120">
</el-table-column>
<el-table-column prop="startTime" label="开始时间" width="180">
</el-table-column>
<el-table-column prop="checkContent" label="巡检内容">
</el-table-column>
<el-table-column prop="customerOpinion" label="巡检人员">
<template slot-scope="scope">
<span v-if="scope.row.repairPerson == ''">-</span>
<span v-else>
<el-select placeholder="请选择维修人员" :disabled="true" v-model="scope.row.servicemanName" size="small">
<el-option v-for="item in repairPersonList" :key="item.id" :label="item.name"
:value="item.id"></el-option>
</el-select>
</span>
</template>
</el-table-column>
</el-table>
</el-collapse-item>
</el-collapse>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="handleClose"> </el-button>
<!-- <el-button v-show="viewType != 'view'" @click="handleSave"> </el-button> -->
@ -227,15 +299,16 @@
import printJS from 'print-js'
import { mapGetters } from "vuex";
import requestSub from '../components/requestSub.vue'
import { getDeviceList, addDevice, getDetail, editDevice, deleteDevice, qrcode, importFile,getLabList } from '@/api/device/device'
import { getDeviceList, addDevice, getDetail, editDevice, deleteDevice, qrcode, importFile, getLabList, getWorkOrderList, getMaintenanceList } from '@/api/device/device'
import { getChildList } from '@/api/system/dictbiz'
import { getDeepData } from '@/api/labManagement/inspectionManagement'
import SelectTree from '../../components/selectTree/tree'
import { downloadXls } from "@/util/util";
import {exportBlob} from "@/api/common";
import {dateNow} from "@/util/date";
import { exportBlob } from "@/api/common";
import { dateNow } from "@/util/date";
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
import { getRepairPeople } from '@/api/operation/hand'
export default {
components: {
requestSub,
@ -354,7 +427,7 @@ export default {
formslot: true,
search: true,
type: "select",
dicData:[
dicData: [
{
label: "运行中",
value: "1",
@ -456,17 +529,22 @@ export default {
}
]
},
role_id:'',//id
role_id: '',//id
detailsTab: '1',//tab
workOrderList: [],//
maintenanceList: [],//
repairTypeList: [],//
repairPersonList: [],//
}
},
computed: {
...mapGetters(["userInfo", "permission"]),
},
mounted() {
if(this.$route.query.type){
if (this.$route.query.type) {
this.searchForm = {
...this.searchForm,
runStatus:this.$route.query.type
runStatus: this.$route.query.type
}
}
this.role_id = this.userInfo.role_id
@ -479,9 +557,38 @@ export default {
getChildList(1, 100, '1858710780677984257').then(res => {
this.periodArr = res.data.data
})
//
getChildList(1, 100, '1869925082102702082').then(res => {
this.repairTypeList = res.data.data
})
//
getRepairPeople({ isRepair: this.role_id == '1839537055389515777' ? true : false }).then(res => {
this.repairPersonList = res.data.data
})
this.onLoad()
},
methods: {
//
getWorkOrderList(id) {
let query = {
deviceId: id
}
getWorkOrderList(query).then(res => {
this.workOrderList = res.data.data
console.log('维修工单列表', this.workOrderList)
})
},
//
getMaintenanceList(id) {
let query = {
deviceId: id
}
getMaintenanceList(query).then(res => {
this.maintenanceList = res.data.data
console.log('巡检任务列表', this.maintenanceList)
})
},
//
changeContent(val) {
let arr = val.split(';')
@ -580,7 +687,7 @@ export default {
this.page.currentPage = currentPage;
this.onLoad()
},
sizeChange(pageSize){
sizeChange(pageSize) {
this.page.pageSize = pageSize;
this.onLoad()
},
@ -631,7 +738,7 @@ export default {
//
handleAdd() {
this.dialogTitle = '设备新增'
this.addForm = { position: { node: undefined, data: {} },isWarran:false }
this.addForm = { position: { node: undefined, data: {} }, isWarran: false }
this.viewType = 'add'
this.tableData = []
this.fileList = []
@ -665,6 +772,8 @@ export default {
this.dialogTitle = '设备查看'
this.dialogVisible = true
this.addForm.isMaintain = res.data.data.isMaintain//
this.getMaintenanceList(row.id) //
this.getWorkOrderList(row.id) //
})
},
handleImport() {
@ -722,6 +831,8 @@ export default {
this.addForm.isWarran = this.addForm.isWarran == 0 ? true : false
this.dialogTitle = '设备编辑'
this.dialogVisible = true
this.getWorkOrderList(row.id)
this.getMaintenanceList(row.id)
})
},
//
@ -801,10 +912,10 @@ export default {
limsId: this.addForm.lab[0], //id
floorId: this.addForm.lab[1], //id
roomId: this.addForm.lab[2], //id
brand:this.addForm.brand,//
isWarran:this.addForm.isWarran ? 0 : 1
brand: this.addForm.brand,//
isWarran: this.addForm.isWarran ? 0 : 1
}
console.log('query----------------->',query)
console.log('query----------------->', query)
if (this.viewType == 'add') {
addDevice(query).then(res => {
if (res.data.code == 200) {
@ -839,15 +950,15 @@ export default {
})
},
onLoad(page, params = {}) {
console.log(1111111111,this.searchForm)
console.log(1111111111, this.searchForm)
let query = {
name: this.searchForm.name ? this.searchForm.name : '',
position: this.searchForm.position ? this.searchForm.position : '',
type: this.searchForm.type ? this.searchForm.type : '',
current: this.page.currentPage,
runStatus:this.searchForm.runStatus?this.searchForm.runStatus:'',//
supplier:this.searchForm.supplier?this.searchForm.supplier:'',//
brand:this.searchForm.brand?this.searchForm.brand:'',//
runStatus: this.searchForm.runStatus ? this.searchForm.runStatus : '',//
supplier: this.searchForm.supplier ? this.searchForm.supplier : '',//
brand: this.searchForm.brand ? this.searchForm.brand : '',//
size: this.page.pageSize,
}
getDeviceList(query).then(res => {
@ -871,5 +982,9 @@ export default {
.el-dialog__headerbtn {
font-size: 20px;
}
.details_tab_box {
margin-bottom: 16px;
}
}
</style>

@ -17,8 +17,8 @@
</div>
<div>
<div style="color: #101010;font-size: 20px;font-weight: 550;margin-bottom: 20px;">巡检内容</div>
<el-form-item label="巡检标题" prop="content">
<el-input style="width: 98%;" type="textarea" v-model="addForm.content" placeholder="请输入巡检标题"
<el-form-item label="巡检内容" prop="content">
<el-input style="width: 98%;" type="textarea" v-model="addForm.content" placeholder="请输入巡检内容"
:disabled="title == '查看'"></el-input>
</el-form-item>
<el-form-item label="楼层">
@ -289,7 +289,7 @@ export default {
handleSuccess(response, file, fileList) {
if (response.code == 200) {
this.filesList.push({
url: response.data.link, //url
url: response.data.link, //url
name: response.data.originalName, //
})
}
@ -300,7 +300,7 @@ export default {
handledrawSuccess(response, file, fileList) {
if (response.code == 200) {
this.drawfiles.push({
url: response.data.link, //url
url: response.data.link, //url
name: response.data.originalName, //
})
}
@ -634,4 +634,4 @@ export default {
}
</script>
<style></style>
<style></style>

@ -208,7 +208,7 @@ export default {
overHidden: true,
},
{
label: "巡检标题",
label: "巡检内容",
labelWidth: 120,
prop: "planContent",
overHidden: true,
@ -578,4 +578,4 @@ export default {
.box .el-scrollbar__wrap {
overflow: scroll;
}
</style>
</style>

File diff suppressed because it is too large Load Diff

@ -35,7 +35,8 @@
: ""
}}
</el-tag> -->
<el-tag :type="getStatus('maintain', role_id, row.status).type">{{ getStatus('maintain', role_id, row.status).name
<el-tag :type="getStatus('maintain', role_id, row.status).type">{{ getStatus('maintain', role_id,
row.status).name
}}</el-tag>
</template>
<template slot-scope="{ type, disabled }" slot="statusForm">
@ -74,6 +75,7 @@
</template>
<template slot-scope="scope" slot="menuLeft">
<el-button type="primary" size="small" @click="addOperation">需求提报</el-button>
<el-button type="primary" size="small" @click="allExportReport">批量导出报告</el-button>
<!-- <el-button size="small" @click="clickInvoice">开具发票</el-button>
<el-button size="small" @click="clickPrint">打印</el-button> -->
</template>
@ -82,8 +84,13 @@
<el-button v-show="row.status == 200 || row.status == 100" @click="handleEdit(row)">编辑</el-button>
<el-button v-show="row.status == 200 || row.status == 100" @click="handleSubmit(row)">提交</el-button>
<el-button v-show="row.status == 301" @click="confirmOrder(row)">确认</el-button>
<el-button v-show="row.status == 403 || row.status == 202" @click="handleEvaluate(row)">评价</el-button>
<el-button @click="handleExport(row)">导出</el-button>
<el-button v-show="row.status == 403 || row.status == 202 || row.status == 406"
@click="handleEvaluate(row)">评价</el-button>
<!-- 客户确认维修效果 -->
<el-button v-show="row.status == 405" @click="urgentRepair(row)">确认</el-button>
<el-button @click="viewLog(row)">日志</el-button>
<el-button @click="handleExport(row)"
v-show="row.status == 202 || row.status == 203 || row.status == 204">报告</el-button>
</template>
</avue-crud>
<el-dialog :title="dialogTitle" :visible.sync="dialogVisible" :append-to-body="true" width="50%">
@ -294,7 +301,7 @@
<el-input v-model="detailForm.approveTime" style="width: 98%;" disabled></el-input>
</el-form-item>
</div>
<div v-show="rowStatus == 403">
<div v-show="rowStatus == 403 || rowStatus == 406">
<div style="
color: #101010;
font-size: 20px;
@ -315,10 +322,10 @@
:disabled="viewType == 'view'"></el-input>
</el-form-item>
</div>
<div v-show="(rowStatus == 403 && detailForm.approveResult1 == 0)"></div>
<div v-show="((rowStatus == 403 || rowStatus == 406) && detailForm.approveResult1 == 0)"></div>
<!-- || (rowStatus == 20 || isEvalute) || rowStatus == 7 || rowStatus == 8 || rowStatus == 9" -->
<div
v-show="((rowStatus == 403 || isEvalute ) && detailForm.approveResult1 == 1) || rowStatus == 104 || rowStatus == 203 || rowStatus == 202">
v-show="((rowStatus == 403 || rowStatus == 406 || isEvalute) && detailForm.approveResult1 == 1) || rowStatus == 104 || rowStatus == 203 || rowStatus == 202">
<div style="
color: #101010;
font-size: 20px;
@ -458,94 +465,10 @@
<el-button @click="confirmName" type="primary">确定</el-button>
</span>
</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;">
<!-- 流程日志 -->
<logDialog :orderId="logOrderId" :infoDialog="infoDialog" @closeLog="closeLog"></logDialog>
<div id="pdfDom" v-if="pdfDomShow" style="padding: 20px;">
<requirement :detailForm="requireForm"></requirement>
</div>
</basic-container>
@ -559,23 +482,26 @@ import moment from "moment";
import { dateFormat } from "../../util/date";
import requestSub from '../components/requestSub.vue'
import requirement from '../components/requirement.vue'
import { servicePage,getList, getDetail, evaluateSign, addFile, saveData, customerConfirm, customerReject, customerRepairConfirm, customerRepairReject, serviceInvoice,getAllUser } from '@/api/operation/hand'
import { servicePage, getList, getDetail, evaluateSign, addFile, saveData, customerConfirm, customerReject, customerRepairConfirm, customerRepairReject, serviceInvoice, getAllUser, urgentRepairConfirm, urgentRepairReject } from '@/api/operation/hand'
import { getDeviceList } from '@/api/device/device'
import { getChildList } from '@/api/system/dictbiz'
import statusData from "@/assets/json/status.json"; //
import logDialog from '../../components/order/logDialog.vue'
import { color } from "echarts";
import { exportBlob, exportBlob1 } from "@/api/common";
import { downloadXls } from "@/util/util";
let action = "https://api.avuejs.com/imgupload";
export default {
components: {
requestSub,
requirement,
vueEasyPrint
vueEasyPrint,
logDialog
},
// directives: { print },
data() {
return {
infoDialog: false,
searchForm: {
timeRange: []
},
@ -636,7 +562,7 @@ export default {
labelWidth: 120,
prop: "requirementCode",
overHidden: true,
search:true
search: true
},
{
label: "设备名称",
@ -838,7 +764,10 @@ export default {
isFinish: '',
role_id: '',
isClear: false,
htmlTitle: '需求单报告'
htmlTitle: '运维服务单',
logOrderId: '',//id
infoDialog: false,
pdfDomShow: false
};
},
@ -861,14 +790,13 @@ export default {
val = item
}
})
return val
return val ? val : ''
}
}
},
},
created() {
console.log('userInfo--------->', this.userInfo)
console.log('route---------->',this.$route)
this.searchForm.requirementCode = this.$route.query.requirementCode
this.role_id = this.userInfo.role_id
//
@ -878,12 +806,33 @@ export default {
//
getChildList(1, 100, '1846802246527463425').then(res => {
this.typeList = res.data.data
console.log('typeList------->', this.typeList)
})
// this.searchForm.timeRange = [moment().subtract(7, 'days').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')]
},
mounted() { },
methods: {
//
allExportReport() {
if (this.selectionList.length == 0) {
this.$message.warning('请至少选择一条数据')
} else {
let tmp = this.selectionList.filter(item => { return (item.status == 202 || item.status == 203 || item.status == 204) })
if (tmp.length != this.selectionList.length) {
this.$message.warning('请选择状态为已完成的数据')
} else {
console.log('批量导出报告', this.selectionList)
}
}
},
//
viewLog(row) {
this.infoDialog = true
this.logOrderId = row.requirementCode
},
//
closeLog() {
this.infoDialog = false
},
//
clickAssign() {
this.assignVisible = true
@ -895,7 +844,7 @@ export default {
//
changeResult(val) {
this.isFinish = val
if(val == 0){
if (val == 0) {
this.detailForm.approveRemark = ''
}
console.log(this.isFinish)
@ -1101,12 +1050,18 @@ export default {
})
},
handleExport(row) {
getDetail({ id: row.id }).then(res => {
this.requireForm = res.data.data
setTimeout(() => {
this.getPdf()
}, 100)
// /report-service
let query = JSON.parse(JSON.stringify(row))
exportBlob1(`/api/lab-ops/work-order/report-service`, query).then(res => {
downloadXls(res.data, "运维服务单.xlsx");
})
// this.pdfDomShow = true
// getDetail({ id: row.id }).then(res => {
// this.requireForm = JSON.parse(JSON.stringify(res.data.data))
// setTimeout(() => {
// this.getPdf()
// }, 100)
// })
},
//
handleConfirm() {
@ -1257,17 +1212,17 @@ export default {
faultLocation: this.searchForm.faultLocation ? this.searchForm.faultLocation : '', //
faultType: this.searchForm.faultType ? this.searchForm.faultType : '', //
dataType: 1,
requirementCode:this.searchForm.requirementCode
requirementCode: this.searchForm.requirementCode
}
console.log('query--------->', query)
if(this.role_id == '1839536982874193922'){
servicePage(query).then(res =>{
if (this.role_id == '1839536982874193922') {
servicePage(query).then(res => {
console.log('res------------->', res.data.data)
this.data = res.data.data.records
this.page.total = res.data.data.total
this.loading = false
})
}else{
} else {
getList(query).then(res => {
console.log('res------------->', res.data.data)
this.data = res.data.data.records
@ -1275,7 +1230,37 @@ export default {
this.loading = false
})
}
},
urgentRepair(row) {
let query = {
id: row.id,
repairType: row.repairType
}
this.$confirm('请确认当前工单是否维修完成?', '提示', {
confirmButtonText: '是',
cancelButtonText: '否',
type: 'warning'
}).then(() => {
console.log('是')
urgentRepairConfirm(query).then(res => {
if (res.data.code == 200) {
this.$message.success('操作成功')
this.onLoad()
}
})
}).catch(() => {
urgentRepairReject(query).then(res => {
if (res.data.code == 200) {
this.$message.success('操作成功')
this.onLoad()
}
})
})
},
},
};

@ -2,7 +2,7 @@
<div class="container">
<!-- 用户 -->
<div style="width:100%;height:100%;"
v-show="role_id == '1123598816738675200' || role_id == '1123598816738675201' || role_id == '1846419477876510721'">
v-show="role_id == '1123598816738675200' || role_id == '1123598816738675201' || role_id == '1846486905193041922'|| role_id == '1846419477876510721'">
<div class="mask" v-show="isShowMask">
账号审核中...
</div>
@ -28,18 +28,18 @@
<div class="item_num" >{{ item.num }}</div>
</div>
</div>
</div>
<div class="work_item" v-show="isShowOther">
<div class="work_item" v-show="isShowOther" @click="toPage()">
<div class="item_top">
<div class="item_img">
<img :src="require('@/assets/images/other.png')" alt="">
</div>
<div class="right_item">
<div class="item_name">其他</div>
<div class="item_name">监控大屏</div>
</div>
</div>
</div>
</div>
</div>
@ -116,7 +116,7 @@
<div class="left_con">
<vueSeamless v-if="alarmList.length >= 1" :data="alarmList" :class-option="alarmOption"
class="tablebox_item_warp">
<div class="left_item" v-for="item in alarmList" :key="item.name">
<div class="left_item" v-for="item in alarmList" :key="item.name" @click="alarmFn(item)">
<div class="item_left">
<div class="item_circle"
:class="item.alarmLevel == '1' ? 'one' : item.alarmLevel == '2' ? 'two' : ''">
@ -269,6 +269,11 @@
</div>
</div>
</div>
<!-- 图片放大预览 -->
<el-dialog :visible.sync="dialogImgVisible" :close-on-click-modal="false" :append-to-body="true" width="90%">
<img src="@/assets/images/alarm_icon.png" alt="Dialog Image" style=" max-width: 100%;z-index: 100;" />
</el-dialog>
</div>
</template>
@ -406,7 +411,8 @@ export default {
rateData: [],
peopleXdata:[],
peopleNum:[],
peoplePercent:[]
peoplePercent:[],
dialogImgVisible:false,//
}
},
computed: {
@ -426,11 +432,10 @@ export default {
},
},
mounted() {
console.log('userInfo=============>',this.userInfo)
this.isShowMask = this.userInfo.detail.status == 1 ? false : true
this.role_id = this.userInfo.role_id
if (this.role_id == '1123598816738675200' || this.role_id == '1123598816738675201' || this.role_id == '1846419477876510721') {
if (this.role_id == '1123598816738675200' || this.role_id == '1123598816738675201' || this.role_id =='1846486905193041922'|| this.role_id == '1846419477876510721') {
//
nextTick(() => {
if(!this.isShowMask){
@ -482,6 +487,11 @@ export default {
}
},
methods: {
//
alarmFn(){
console.log(44444444444)
this.dialogImgVisible = true
},
getPeopleNum(){
maintenancePersonnel({id:this.userInfo.user_id}).then(res =>{
console.log('res ==============>',res)
@ -498,7 +508,7 @@ export default {
this.$router.push({
path:'/operation/hand',
query:item
})
})
},
getRequirement(){
getList({
@ -650,6 +660,9 @@ export default {
}
},
toPage(){
this.$router.push("/wel/supervisory")
},
createBarEcharts() {
var myChart = this.$echarts.init(document.getElementById('bar_echart'));
var option = {
@ -1016,9 +1029,9 @@ export default {
display: flex;
align-items: center;
justify-content: center;
// flex-direction: column;
.item_top {
width: 100%;
@ -1035,7 +1048,7 @@ export default {
background: linear-gradient( 90deg, #375DF9 0%, #6DB5FF 100%);
box-shadow: 0px 5px 5px 0px #B6D8FF;
.right_item{
display: flex;
@ -1089,7 +1102,7 @@ export default {
background: linear-gradient( 90deg, #F3AC56 0%, #FFCA68 100%);
box-shadow: 0px 10px 10px 0px #FEEED0;
}
}
}
}
@ -1203,7 +1216,7 @@ export default {
background: #FFFFFF;
border-radius: 10px;
border: 1px solid #EBEEF5;
.left_tit {
font-weight: 550;

Loading…
Cancel
Save