PC端消息通知接口联调,页面修改

master
jinna 1 year ago
parent caaf62ff6b
commit 652a883198
  1. 2
      .gitignore
  2. 33
      src/api/desk/message.js
  3. 10
      src/api/device/device.js
  4. 45
      src/api/goodsManagement/warehouse.js
  5. 9
      src/api/labManagement/inspectionManagement.js
  6. 14
      src/api/user.js
  7. 241
      src/assets/json/status.json
  8. 9
      src/page/index/top/index.vue
  9. 72
      src/page/index/top/top-notice.vue
  10. 1
      src/page/login/forgetPassword.vue
  11. 4
      src/page/login/userlogin.vue
  12. 1
      src/styles/top.scss
  13. 17
      src/util/func.js
  14. 223
      src/views/businessManagement/inspection/repair.vue
  15. 3
      src/views/businessManagement/inspection/task.vue
  16. 285
      src/views/businessManagement/ordinary.vue
  17. 297
      src/views/desk/message.vue
  18. 764
      src/views/device/deviceSystem.vue
  19. 73
      src/views/goodsManagement/goodsList.vue
  20. 289
      src/views/goodsManagement/warehouseList.vue
  21. 269
      src/views/labManagement/components/addDialog.vue
  22. 16
      src/views/labManagement/inspectionManagement.vue
  23. 4
      src/views/operation/hand.vue
  24. 2
      src/views/system/check.vue

2
.gitignore vendored

@ -1,7 +1,7 @@
.DS_Store
node_modules
/dist
dist
/dist.zip
/tests/e2e/videos/
/tests/e2e/screenshots/

@ -0,0 +1,33 @@
import request from '@/router/axios';
export const messTotal = (query) =>{
return request({
url:'/api/messeage/total',
method:'get',
params:query
})
}
export const getList = (query) =>{
return request({
url:'/api/messeage/list',
method:'get',
params:query
})
}
export const messOver = (data) =>{
return request({
url:'/api/messeage/updateStatus',
method:'post',
data
})
}
export const overAll = (data) =>{
return request({
url:'/api/messeage/updateStatusAll',
method:'post',
data
})
}

@ -53,4 +53,14 @@ export const qrcode = (data) =>{
method:"post",
data
})
}
// 模板下载
export const importFile = (params) =>{
return request({
url:'/api/device/export-template',
method:'get',
query:params,
responseType: 'blob'
})
}

@ -0,0 +1,45 @@
import request from '@/router/axios';
export const getList = (query) =>{
return request({
url:"/api/wareHouse/list",
method:"get",
params:query
})
}
// 新增
export const addWare = (data) =>{
return request({
url:'/api/wareHouse/save',
method:'post',
data
})
}
// 详情
export const getDetail = (query) =>{
return request({
url:'/api/wareHouse/detail',
method:'get',
params:query
})
}
// 修改
export const editWare = (data) =>{
return request({
url:'/api/wareHouse/update',
method:'post',
data
})
}
// 删除
export const deleteWare = (query) =>{
return request({
url:'/api/wareHouse/remove',
method:'post',
params:query
})
}

@ -69,4 +69,13 @@ export const editPlan = (data) =>{
method:'post',
data
})
}
// 获取设备
export const getDeviceLists = (query) =>{
return request({
url:"/api/device/limsList",
method:'get',
params:query
})
}

@ -158,18 +158,8 @@ export const sendSms = (tenantId, phone) => request({
},
});
export const resetPwd = (refresh_token, tenantId, deptId, roleId) => request({
export const resetPwd = (data) => request({
url: '/api/blade-system/user/register/reset-pwd',
method: 'post',
headers: {
'Tenant-Id': tenantId,
'Dept-Id': (website.switchMode ? deptId : ''),
'Role-Id': (website.switchMode ? roleId : '')
},
params: {
tenantId,
refresh_token,
grant_type: "refresh_token",
scope: "all",
}
data
});

@ -66,6 +66,110 @@
"status": 9,
"color": "#909399",
"type": "info"
},
{
"name": "待维修",
"status": 100,
"color": "#409eff",
"type": ""
},
{
"name": "维修中",
"status": 101,
"color": "#e6a23",
"type": "warning"
},
{
"name": "已驳回",
"status": 102,
"color": "#f56c6c",
"type": "danger"
}
],
"1123598816738675201": [
{
"name": "待提报",
"status": -1,
"color": "#409eff",
"type": ""
},
{
"name": "待接单",
"status": 0,
"color": "#67c23a",
"type": "success"
},
{
"name": "待维修",
"status": 1,
"color": "#409eff",
"type": ""
},
{
"name": "待维修",
"status": 2,
"color": "#409eff",
"type": ""
},
{
"name": "待维修",
"status": 3,
"color": "#409eff",
"type": ""
},
{
"name": "确认方案",
"status": 4,
"color": "#409eff",
"type": ""
},
{
"name": "维修中",
"status": 5,
"color": "#e6a23",
"type": "warning"
},
{
"name": "待评价",
"status": 6,
"color": "#67c23a",
"type": "success"
},
{
"name": "待付款",
"status": 7,
"color": "#67c23a",
"type": "success"
},
{
"name": "已完成",
"status": 8,
"color": "#909399",
"type": "info"
},
{
"name": "已完成",
"status": 9,
"color": "#909399",
"type": "info"
},
{
"name": "已驳回",
"status": 100,
"color": "#f56c6c",
"type": "danger"
},
{
"name": "已驳回",
"status": 101,
"color": "#f56c6c",
"type": "danger"
},
{
"name": "已驳回",
"status": 102,
"color": "#f56c6c",
"type": "danger"
}
],
"1839536982874193922": [
@ -128,6 +232,24 @@
"status": 9,
"color": "#909399",
"type": "info"
},
{
"name": "已驳回",
"status": 100,
"color": "#f56c6c",
"type": "danger"
},
{
"name": "已驳回",
"status": 101,
"color": "#f56c6c",
"type": "danger"
},
{
"name": "已驳回",
"status": 102,
"color": "#f56c6c",
"type": "danger"
}
],
"1839537055389515777": [
@ -178,7 +300,26 @@
"status": 9,
"color": "#909399",
"type": "info"
},
{
"name": "已驳回",
"status": 100,
"color": "#f56c6c",
"type": "danger"
},
{
"name": "已驳回",
"status": 101,
"color": "#f56c6c",
"type": "danger"
},
{
"name": "已驳回",
"status": 102,
"color": "#f56c6c",
"type": "danger"
}
],
"1839552581620793346": [
{
@ -240,6 +381,24 @@
"status": 9,
"color": "#909399",
"type": "info"
},
{
"name": "已驳回",
"status": 100,
"color": "#f56c6c",
"type": "danger"
},
{
"name": "已驳回",
"status": 101,
"color": "#f56c6c",
"type": "danger"
},
{
"name": "已驳回",
"status": 102,
"color": "#f56c6c",
"type": "danger"
}
]
},
@ -276,6 +435,38 @@
"type": "info"
}
],
"1123598816738675201":[
{
"name": "待巡检",
"status": 0,
"color": "#67c23a",
"type": "success"
},
{
"name": "待巡检",
"status": 1,
"color": "#67c23a",
"type": "success"
},
{
"name": "巡检中",
"status": 2,
"color": "#e6a23",
"type": "warning"
},
{
"name": "待确认",
"status": 3,
"color": "#67c23a",
"type": "success"
},
{
"name": "已完成",
"status": 4,
"color": "#909399",
"type": "info"
}
],
"1839537055389515777": [
{
"name": "待派单",
@ -392,6 +583,56 @@
"type": "info"
}
],
"1123598816738675201":[
{
"name": "待提交",
"status": 1,
"color": "#67c23a",
"type": "success"
},
{
"name": "待审批",
"status": 2,
"color": "#409eff",
"type": ""
},
{
"name": "待审批",
"status": 3,
"color": "#409eff",
"type": ""
},
{
"name": "维修中",
"status": 4,
"color": "#e6a23",
"type": "warning"
},
{
"name": "待评价",
"status": 5,
"color": "#67c23a",
"type": "success"
},
{
"name": "待付款",
"status": 6,
"color": "#67c23a",
"type": "success"
},
{
"name": "已完成",
"status": 7,
"color": "#909399",
"type": "info"
},
{
"name": "已完成",
"status": 8,
"color": "#909399",
"type": "info"
}
],
"1839536982874193922": [
{
"name": "待提交",

@ -50,15 +50,16 @@
<div class="top-bar__item top-bar__item--show">
<top-theme></top-theme>
</div>
</el-tooltip>
<el-tooltip effect="dark"
</el-tooltip>-->
<el-tooltip effect="light"
:content="$t('navbar.notice')"
placement="bottom">
placement="bottom"
style="cursor: pointer;">
<div class="top-bar__item top-bar__item--show">
<top-notice></top-notice>
</div>
</el-tooltip>
<el-tooltip effect="dark"
<!-- <el-tooltip effect="dark"
:content="$t('navbar.language')"
placement="bottom">
<div class="top-bar__item top-bar__item--show">

@ -1,55 +1,13 @@
<template>
<el-popover placement="bottom"
width="350"
trigger="click">
<el-tabs v-model="activeName">
<el-tab-pane label="邮件(1)"
name="first"></el-tab-pane>
<el-tab-pane label="消息(2)"
name="second"></el-tab-pane>
<el-tab-pane label="通知"
name="third"></el-tab-pane>
</el-tabs>
<el-scrollbar style="height:300px">
<avue-notice :data="data"
:option="option"
@page-change="pageChange"></avue-notice>
</el-scrollbar>
<div slot="reference">
<el-badge is-dot>
<div slot="reference" @click="clickNotice">
<el-badge :value="total" class="item">
<i class="el-icon-bell"></i>
</el-badge>
</div>
</el-popover>
</template>
<script>
let list = [{
img: '/img/bg/vip1.png',
title: '史蒂夫·乔布斯 关注了你',
subtitle: '05-08 15:08',
tag: '已经开始',
status: 0
}, {
img: '/img/bg/vip2.png',
title: '斯蒂夫·沃兹尼亚克 关注了你',
subtitle: '05-08 15:08',
tag: '未开始',
status: 1
}, {
img: '/img/bg/vip3.png',
title: '蒂姆·库克 关注了你',
subtitle: '05-08 15:08',
status: 3,
tag: '有错误'
}, {
img: '/img/bg/vip4.png',
title: '比尔·费尔南德斯 关注了你',
subtitle: '05-08 15:08',
status: 4,
tag: '已完成'
}];
import {messTotal} from '@/api/desk/message'
export default {
name: "top-notice",
data () {
@ -64,24 +22,30 @@ export default {
status: 'status'
},
},
data: list,
total:0
}
},
created () {
this.getTotal()
},
methods: {
pageChange (page, done) {
setTimeout(() => {
this.$message.success('页码' + page)
this.data = this.data.concat(list);
done();
}, 1000)
clickNotice(){
this.$router.push({
path:'/desk/message'
})
},
getTotal(){
messTotal().then(res =>{
this.total = res.data.data
})
}
}
};
</script>
<style lang="scss" scoped>
.item {
margin-top: 10px;
margin-right: 40px;
}
</style>

@ -34,6 +34,7 @@
<script>
import {resetPwd} from "@/api/user";
import {verifycode} from '@/api/registerAccount/registerAccount'
export default {
data() {
var validatePass2 = (rule, value, callback) => {

@ -98,9 +98,9 @@
//ID
roleId: "",
//
username: "admin",
username: "",
//
password: "admin",
password: "",
//
type: "account",
//

@ -69,6 +69,7 @@ $height:64px;
top: 0;
i{
line-height: $height;
color: #fff;
}
}

@ -135,4 +135,21 @@ export default class func {
const kb = bytes / 1024;
return kb.toFixed(2);
}
static process(arr) {
// 缓存用于记录
const cache = [];
for (const t of arr) {
// 检查缓存中是否已经存在
if (cache.find(c => c.deviceId === t.deviceId && c.checkContent === t.checkContent && c.craft === t.craft)) {
// 已经存在说明以前记录过,现在这个就是多余的,直接忽略
continue;
}
// 不存在就说明以前没遇到过,把它记录下来
cache.push(t);
}
// 记录结果就是过滤后的结果
return cache;
}
}

@ -76,11 +76,11 @@
<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">
<template slot-scope="scope">
{{ scope.row.status == 1 ? '异常' : '正常' }}
</template>
</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">
@ -91,13 +91,27 @@
<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">
<el-radio :disabled="viewType == 'view' || viewType == 'evaluate'"
:label="1"></el-radio>
<el-radio :disabled="viewType == 'view' || viewType == 'evaluate'"
class="error_radio" :label="0"></el-radio>
<el-radio :disabled="viewType == 'view' || viewType == 'evaluate'" :label="1"></el-radio>
<el-radio :disabled="viewType == 'view' || viewType == 'evaluate'" class="error_radio"
:label="0"></el-radio>
</el-radio-group>
</template>
</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">
<!-- || 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-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>
</template>
</el-table-column>
</el-table>
</el-form-item>
</div>
@ -264,10 +278,10 @@
<div style="margin-bottom: 10px;cursor: pointer;" @click="clickAssign" v-show="nameImg == ''">
<img src="@/assets/images/assign.png" alt="">
</div>
<div v-show="nameImg != ''" @click="clickAssign">
<div v-show="nameImg != ''" @click="clickAssign">
<img :src="nameImg" alt="">
</div>
<!-- <div
<!-- <div
<!-- <div v-show="isEvalute">
<avue-sign ref="sign"></avue-sign>
<el-button @click="clearName">清空</el-button>
@ -306,6 +320,70 @@
<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">
<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;">
<i style="color:#fff;font-size: 20px;" class="el-icon-plus"></i>
</div>
</template>
<template slot-scope="scope">
<div @click="deleteColumn(scope.row, scope.$index)"
style="width:30px;height: 30px;background: #f56c6c;border-radius: 50%;cursor: pointer;display: flex;align-items: center;justify-content: center;">
<i style="color:#fff;font-size: 20px;" class="el-icon-delete"></i>
</div>
</template>
</el-table-column>
<el-table-column prop="productId" align="center" label="物料名称">
<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="请选择物品">
<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">
<!-- <template slot-scope="scope">
<el-input @change="clickInventoryId" placeholder="请输入库存ID" v-model="scope.row.inventoryId"></el-input>
</template> -->
</el-table-column>
<el-table-column prop="rule" align="center" label="规格" width="80">
<!-- <template slot-scope="scope">
<el-input v-model="scope.row.rule" placeholder="请输入规格" style="width:98%;"></el-input>
</template> -->
</el-table-column>
<el-table-column prop="xh" align="center" label="型号" width="80">
<!-- <template slot-scope="scope">
<el-input v-model="scope.row.model" placeholder="请输入型号" style="width:98%;"></el-input>
</template> -->
</el-table-column>
<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>
</template>
</el-table-column>
<el-table-column prop="unit" align="center" label="单位" width="80">
<!-- <template slot-scope="scope">
<el-input v-model="scope.row.unit" placeholder="请输入单位" style="width:98%;"></el-input>
</template> -->
</el-table-column>
<el-table-column prop="price" align="center" label="价格" width="200">
<template slot-scope="scope">
<el-input v-model="scope.row.price" disabled placeholder="请输入价格" style="width:98%;">
<template slot="append"></template>
</el-input>
</template>
</el-table-column>
</el-table>
<span slot="footer" class="dialog-footer">
<el-button @click="handleCancel"> </el-button>
<el-button @click="handleCloneSub" type="primary"> </el-button>
</span>
</el-dialog>
<div id="pdfDom" style="padding: 20px;">
<routing-inspection :detailForm="routingForm" detailType="repair"></routing-inspection>
</div>
@ -319,15 +397,17 @@ import { addFile } from '@/api/operation/hand'
import { getRepairDetail } from '@/api/labManagement/task'
import { mapGetters } from "vuex";
import routingInspection from '@/views/components/routingInspection.vue'
import { getGoodsList } from '@/api/goodsManagement/goods'
export default {
components: {
routingInspection
},
data() {
return {
isClear:false,
nameImg:'',
assignVisible:false,
isClear: false,
nameImg: '',
materialVisible: false,
assignVisible: false,
routingForm: {},
htmlTitle: '巡检维修报告',
option: {
@ -353,7 +433,7 @@ export default {
{
label: "任务单号",
labelWidth: 120,
prop: "taskNo",
prop: "taskCode",
overHidden: true,
},
{
@ -396,7 +476,14 @@ export default {
],
},
data: [],
errorForm: {},
errorForm: {
tableData: [
{ id: '001', floorName: "一层", deptName: '101', deviceName: "设备一", checkContent: '', status: '1', price: '' },
{ id: '002', floorName: "一层", deptName: '101', deviceName: "设备二", checkContent: '', status: '1', price: '' },
{ id: '003', floorName: "一层", deptName: '101', deviceName: "设备三", checkContent: '', status: '1', price: '' },
{ id: '004', floorName: "一层", deptName: '101', deviceName: "设备四", checkContent: '', status: '1', price: '' },
]
},
dialogerror: false,
page: {
pageSize: 10,
@ -405,14 +492,19 @@ export default {
},
selectedList: [],
viewType: '',
isEvalute: false,
rowStatus: '',
nameImg: '',
spanArr:[],
pos:'',
spanArr1:[],
pos1:'',
spanArr: [],
pos: '',
spanArr1: [],
pos1: '',
materialData:[],
materialId:'',
productCurrent:1,
productSize:100,
productTotals:0,
productLists:[]
}
},
computed: {
@ -431,10 +523,12 @@ export default {
}
},
},
created() { },
created() {
},
methods: {
closeName(){
if(this.nameImg == ''){
closeName() {
if (this.nameImg == '') {
this.$refs.sign.clear()
}
this.assignVisible = false
@ -445,18 +539,95 @@ export default {
this.isClear = true
},
confirmName() {
console.log('name===========>',this.nameImg)
if(this.isClear){
console.log('name===========>', this.nameImg)
if (this.isClear) {
this.nameImg = ''
}else{
} else {
this.nameImg = this.$refs.sign.submit(80, 50);
}
this.assignVisible = false
},
//
clickAssign(){
clickAssign() {
this.assignVisible = true
},
setMaterial(row) {
console.log('row===============>',row)
this.materialId = row.id
this.getProductLists()
console.log('materialData=============>',this.materialData)
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: [] })
this.materialData = arr
},
handleCloneSub(){
console.log('materialData=============>',this.materialData)
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 : ''
}
// if(this.productInventoryId != ''){
// this.productCurrent = 1
// this.productSize = 10
// this.getProductLists()
// }
},
changeNumber(val, row) {
console.log('val------------->', val)
console.log('row------------->', row)
// row.price = row.price * val
// row.price = row.unifiedQuotation * val
if(row.unifiedQuotation){
row.price = (row.unifiedQuotation * val).toFixed(2)
}else{
}
},
loadmoreProduct() {
console.log('this.goodsCurrent0', this.productCurrent, this.productSize, this.productTotals)
if (this.productCurrent * this.productSize >= this.productTotals) return
this.productCurrent++
this.getProductLists('more')
},
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
} else {
this.productLists = res.data.data.records
this.productTotals = res.data.data.total
}
})
},
getSpanArr(data) {
console.log('data==========>', data)
for (var i = 0; i < data.length; i++) {
@ -476,7 +647,7 @@ export default {
}
console.log('spanArr==========>', this.spanArr)
},
errorSpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0 && row.floorName != '') {
if (this.spanArr.length != 0) {

@ -765,6 +765,9 @@
this.fileList = []
getDetail({id:row.id}).then(res =>{
this.addForm = res.data.data
getRepairPeople({ isRepair: this.role_id == '1839537055389515777' ? true : false }).then(res => {
this.repairPersonList = res.data.data
})
// getDeepData({parentId:res.data.data.deptId}).then(result =>{
// this.floorArr = []
// result.data.data.map(item =>{

@ -19,44 +19,6 @@
维修负责人 18395370553895157771-待接单 2,3-待维修 4-维修完成 5-待评价 6-已完成 维修人2-待确认 3-待维修 4-维修完成 5-待评价 6-已完成 领导4-待审批 5-待评价 6-已完成
-->
<el-tag :type="getStatus('maintain',role_id,row.status).type">{{ getStatus('maintain',role_id,row.status).name }}</el-tag>
<!-- 客服角色 -->
<!-- <el-tag size="small" v-if="role_id == '1839536982874193922'" :type="(row.status == 0 ? 'success'
: (row.status == 1 || row.status == 2 || row.status ==3 || row.status == 4 || row.status == 5 || row.status == 7) ? 'warning'
: row.status == 6 ? ''
: (row.status == 8 && row.totalPrice <= 0) ? 'info'
: (row.status == 8 && row.totalPrice > 0) ? 'warning'
: row.status == 9 ? 'success' :
''
)">
{{ row.status == 0 ? '待接单'
: (row.status == 1 || row.status == 2 || row.status == 3 || row.status == 4) ? '待维修'
: row.status == 5 ? '维修中' : row.status == 6 ? '维修完成' : row.status == '7' ? '待付款'
: (row.status == 8 && row.totalPrice <= 0) ? '已完成'
: (row.status == 8 && row.totalPrice > 0) ? '待开发票'
: row.status == 9 ? '已开发票' : '' }}
</el-tag>-->
<!-- 维修人员角色 -->
<!-- <el-tag size="small" v-if="role_id == '1839552581620793346'" :type="row.status == 0 ? 'danger' : (row.status == 1 || row.status == 5) ? 'success'
: (row.status == 2 || row.status == 6 || row.status == 7 || row.status == 8 || row.status == 9) ? ''
: (row.status == 3 || row.status == 4) ? 'warning' : ''">
{{row.status == 0 ? '已驳回' : row.status == 1 ? '待确认' : row.status == 2 ? '待提交'
: (row.status == 3 || row.status == 4) ? '待审批'
: row.status == 5 ? '维修中'
: (row.status == 6 || row.status == 7 || row.status == 8 || row.status == 9) ? '维修完成' : '' }}
</el-tag>
<el-tag size="small" v-if="role_id == 1839537055389515777" :type="row.status == 2 ? 'danger'
: (row.status == 3 || row.status == 6)? ''
: (row.status == 4 ) ? 'success'
: (row.status == 5 || row.status == 7) ? 'warning'
: (row.status == 8 && row.totalPrice <= 0) ? 'info'
: (row.status == 8 && row.totalPrice > 0) ? 'warning'
: row.status == 9 ? 'success'
: ''">
{{ row.status == 2 ? '已驳回' : row.status == 3 ? '待审批' : row.status == 4 ? '已通过' : row.status == 5 ? '维修中' : row.status == 6 ? '维修完成' : row.status == 7 ? '待付款'
: (row.status == 8 && row.totalPrice <= 0) ? '已完成'
: (row.status == 8 && row.totalPrice > 0) ? '待开发票'
: row.status == 9 ? '已开发票' : '' }}
</el-tag> -->
</template>
<template slot-scope="scope" slot="menuLeft">
<el-button type="primary" size="small" @click="handleAccept" v-show="role_id != '1839600115013713921'">{{
@ -67,13 +29,13 @@
</template>
<template slot-scope="{ row }" slot="menu">
<el-button v-show="permission.ordinaryView" @click="handleView(row)">查看</el-button>
<el-button v-show="permission.ordinaryOrder && row.status == 0" @click="takeOrders(row)">接单</el-button>
<el-button v-show="permission.ordinaryOrder && (row.status == 0 || row.status == 100)" @click="takeOrders(row)">接单</el-button>
<el-button v-show="permission.ordinaryClose && row.status == 0" @click="handleClone(row)">关闭</el-button>
<el-button v-show="permission.ordinaryConfirm && row.status == 1" @click="reciveOrder(row)">确认</el-button>
<el-button v-show="permission.ordinaryRefuse && row.status == 1" @click="repairReject(row)">驳回</el-button>
<el-button v-show="permission.ordinarySubmit && row.status == 2" @click="handleRepair(row)">提交</el-button>
<el-button v-show="permission.ordinarySubmit && (row.status == 2 || row.status == 101)" @click="handleRepair(row)">提交</el-button>
<el-button v-show="permission.ordinaryFinish && row.status == 5" @click="handleRepairFinish(row)">维修完成</el-button>
<el-button v-show="permission.ordinaryExamine && row.status == 3" @click="handleExamine(row)">审批</el-button>
<el-button v-show="permission.ordinaryExamine && row.status == 3 || row.status == 102" @click="handleExamine(row)">审批</el-button>
<el-button v-show="row.status == 7" @click="handlePayment(row)">确认付款</el-button>
<el-button @click="handleExport(row)">导出</el-button>
</template>
@ -93,7 +55,7 @@
<el-form-item label="需求单号" prop="requirementCode">
<el-input disabled style="width:98%;" placeholder="请输入需求单号" v-model="addForm.requirementCode"></el-input>
</el-form-item>
<el-form-item label="提报单位" prop="reportUnit">
<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">
@ -224,11 +186,28 @@
<el-input placeholder="请输入备注" v-model="addForm.remark" type="textarea" style="width:98%;"></el-input>
</el-form-item>
</div>
<div v-show="((addForm.repaiRejectReason != '' && addForm.status == 100) || addForm.repaiTeamRejectReason != '' )">
<div style="color: #101010;font-size: 20px;font-weight: 550;margin-bottom: 20px;">驳回详情</div>
<el-form-item label="驳回维修人" prop="repairPersonName" v-show="addForm.repaiRejectReason != '' && addForm.status == 100">
<el-input placeholder="请输入驳回维修人" disabled v-model="addForm.repairPersonName"
style="width:98%;"></el-input>
</el-form-item>
<el-form-item label="驳回原因" prop="repaiRejectReason" v-show="addForm.repaiRejectReason != '' && addForm.status == 100">
<el-input placeholder="请输入驳回原因" v-model="addForm.repaiRejectReason" type="textarea" disabled style="width:98%;"></el-input>
</el-form-item>
<el-form-item label="驳回运维主管" prop="maintenanceTeamName" v-show="addForm.repaiTeamRejectReason != ''">
<el-input placeholder="请输入驳回运维主管" disabled v-model="addForm.maintenanceTeamName"
style="width:98%;"></el-input>
</el-form-item>
<el-form-item label="驳回原因" prop="repaiTeamRejectReason" v-show="addForm.repaiTeamRejectReason != ''">
<el-input placeholder="请输入驳回原因" v-model="addForm.repaiTeamRejectReason" type="textarea"
disabled></el-input>
</el-form-item>
</div>
</el-form>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="handleClose"> </el-button>
<!-- <el-button @click="handleTurndown" v-show="role_id == '1839552581620793346'"> </el-button> -->
<el-button type="primary" @click="handleConfirm">{{ role_id == '1839537055389515777' ? ' ' : role_id ==
'1839536982874193922' ? '确 定 派 单' : role_id == '1839552581620793346' ? '确 认' : '' }}</el-button>
</span>
@ -259,14 +238,6 @@
<el-input placeholder="请输入故障位置" disabled v-model="repairForm.faultLocation" style="width:98%;"></el-input>
</el-form-item>
<el-form-item label="设备名称" prop="deviceId">
<!-- <el-select placeholder="请选择设备名称" v-show="dialogType != 'view'" disabled v-model="repairForm.deviceId" style="width:98%;">
<el-option
v-for="item in deviceList"
:key="item.id"
:value="item.id"
:label="item.name"
></el-option>
</el-select> -->
<el-input style="width:98%;" disabled v-model="repairForm.deviceName"></el-input>
</el-form-item>
<el-form-item label="故障专业类型" prop="faultType">
@ -275,11 +246,11 @@
:label="item.label"></el-option>
</el-select>
</el-form-item>
<el-form-item label="故障视频">
<el-form-item label="故障视频" v-show="repairForm.errorVideo != ''">
<video v-show="repairForm.errorVideo != ''" :src="repairForm.errorVideo" style="width: 148px; height: 148px"
controls></video>
</el-form-item>
<el-form-item label="故障图片">
<el-form-item label="故障图片" v-show="repairForm.errorImg && repairForm.errorImg.length != 0">
<img v-for="item in repairForm.errorImg" :key="item" :src="item.url" alt=""
style="width: 148px; height: 148px;margin-right:10px;">
</el-form-item>
@ -311,41 +282,35 @@
<div style="color: #101010;font-size: 20px;font-weight: 550;margin-bottom: 20px;">维修详情</div>
<el-form-item label="维修人" prop="repairPersonName">
<el-input placeholder="请输入维修人"
:disabled="role_id == '1839600115013713921' || (repairForm.status == 3 || repairForm.status == 5 || repairForm.status == 4) || dialogType == 'view'"
:disabled="role_id == '1839600115013713921' || (repairForm.status >= 3) || dialogType == 'view'"
v-model="repairForm.repairPersonName" style="width:98%;"></el-input>
</el-form-item>
<el-form-item label="设备名称" prop="deviceId">
<!-- <el-select placeholder="请选择设备名称"
:disabled="role_id == '1839600115013713921' || (repairForm.status == 3 || repairForm.status == 5 || repairForm.status == 4) || dialogType == 'view'"
v-show="role_id != '1839600115013713921' && (repairForm.status != 3 && repairForm.status != 5 && repairForm.status != 4) && dialogType != 'view'"
v-model="repairForm.deviceId" style="width: 98%">
<el-option v-for="item in deviceList" :key="item.id" :value="item.id" :label="item.name"></el-option>
</el-select> -->
<el-input
v-show="role_id == '1839600115013713921' || (repairForm.status == 3 || repairForm.status == 5 || repairForm.status == 4) || repairForm.status == 3 || dialogType != 'view'"
style="width: 98%" disabled v-model="repairForm.deviceName"></el-input>
</el-form-item>
<el-form-item label="故障原因" prop="faultCause">
<el-input placeholder="请输入故障原因"
:disabled="role_id == '1839600115013713921' || (repairForm.status == 5 || repairForm.status == 4 || repairForm.status == 3) || dialogType == 'view'"
:disabled="role_id == '1839600115013713921' || (repairForm.status == 5 || repairForm.status == 4 || repairForm.status == 3) || dialogType == 'view' || dialogType == 'examine'"
type="textarea" v-model="repairForm.faultCause" style="width:98%;"></el-input>
</el-form-item>
<el-form-item label="处理方法" prop="processMethod">
<el-input placeholder="请输入处理方法"
:disabled="role_id == '1839600115013713921' || (repairForm.status == 5 || repairForm.status == 4 || repairForm.status == 3) || dialogType == 'view'"
:disabled="role_id == '1839600115013713921' || (repairForm.status == 5 || repairForm.status == 4 || repairForm.status == 3) || dialogType == 'view' || dialogType == 'examine'"
type="textarea" v-model="repairForm.processMethod" style="width:98%;"></el-input>
</el-form-item>
<el-form-item label="是否需要申领物料" prop="isNeedMaterial"
v-show="role_id != '1839600115013713921' && (repairForm.status != 5 && repairForm.status != 4) && dialogType != 'view'">
<el-select placeholder="请选择是否需要申领物料" style="width:98%;" @change="changeMaterial"
:disabled="role_id == '1839600115013713921' || (repairForm.status == 5 || repairForm.status == 4 || repairForm.status == 3) || dialogType == 'view'"
:disabled="role_id == '1839600115013713921' || (repairForm.status == 5 || repairForm.status == 4 || repairForm.status == 3) || dialogType == 'view' || dialogType == 'examine'"
v-model="repairForm.isNeedMaterial">
<el-option label="是" :value="1"></el-option>
<el-option label="否" :value="0"></el-option>
</el-select>
</el-form-item>
<el-form-item label="维修材料"
v-if="(repairForm.isNeedMaterial == 1 && dialogType != 'view' && role_id != '1839600115013713921' && role_id != '1839536982874193922' && role_id != '1839537055389515777')">
v-if="(repairForm.isNeedMaterial == 1 && dialogType != 'view' && role_id != '1839600115013713921' && role_id != '1839536982874193922' && role_id != '1839537055389515777')">
<el-table :data="tableData" border style="width: 98%">
<el-table-column width="50" align="center">
<template slot="header" slot-scope="scope">
@ -408,7 +373,7 @@
</el-table>
</el-form-item>
<el-form-item label="维修材料"
v-if="(repairForm.isNeedMaterial == 1 && (repairForm.status >= 3))">
v-if="(repairForm.isNeedMaterial == 1 && (repairForm.status >= 3)) && dialogType != 'repair'">
<el-table :data="tableData" border style="width: 98%">
<el-table-column prop="materialName" align="center" label="物料名称"></el-table-column>
<el-table-column prop="inventoryId" align="center" label="库存ID"></el-table-column>
@ -421,10 +386,10 @@
{{ scope.row.price }}
</template>
</el-table-column>
<template slot="append" v-if="(repairForm.status == 3 && role_id == '1839537055389515777') || repairForm.status == 4 || repairForm.status == 5 || repairForm.status == 6">
<template slot="append" v-if="(repairForm.status == 3 && role_id == '1839537055389515777') || repairForm.status == 4 || repairForm.status == 5 || repairForm.status == 6 || repairForm.status == 102">
<tr>
<td style="padding: 10px;padding-right: 0;font-size: 14px;color: #909399;font-weight: 600;">总计:</td>
<td>{{ totalPrice }} </td>
<td>{{ totalPrice == '' ? totalPrice : totalPrice.toFixed(2) }} </td>
<td style="padding: 10px 0px 10px 200px; font-size: 14px;color: #909399;font-weight: 600;">折扣:</td>
<td>
<el-input v-model="discount" controls-position="right" @input="handleInput" @change="changeDiscount" :disabled="dialogType == 'view'">
@ -441,55 +406,47 @@
<div v-show="repairType == 'examine' || (repairForm.approvePoint == '主管审批维修方案' && repairForm.approveRemark != '' && repairForm.status == 2)">
<div style="color: #101010;font-size: 20px;font-weight: 550;margin-bottom: 20px;">主管审批</div>
<el-form-item label="审批结果" prop="approveResult" >
<el-select placeholder="请选择审批结果" v-model="repairForm.approveResult" style="width: 98%;" :disabled="repairForm.status == 4 || (repairForm.approvePoint == '主管审批维修方案' && repairForm.approveRemark != '' && repairForm.status == 2)">
<el-select placeholder="请选择审批结果" v-model="chargeForm.approveResult" style="width: 98%;" :disabled="repairForm.status == 4 || (repairForm.approvePoint == '主管审批维修方案' && repairForm.approveRemark != '' && repairForm.status == 2)">
<el-option label="通过" :value="1"></el-option>
<el-option label="驳回" :value="0"></el-option>
</el-select>
</el-form-item>
<el-form-item label="审批意见" prop="approveRemark">
<el-input style="width: 98%;" type="textarea" placeholder="请输入审批意见" v-model="repairForm.approveRemark" :disabled="repairForm.status == 4 || (repairForm.approvePoint == '主管审批维修方案' && repairForm.approveRemark != '' && repairForm.status == 2)"></el-input>
<el-input style="width: 98%;" type="textarea" placeholder="请输入审批意见" v-model="chargeForm.approveRemark" :disabled="repairForm.status == 4 || (repairForm.approvePoint == '主管审批维修方案' && repairForm.approveRemark != '' && repairForm.status == 2)"></el-input>
</el-form-item>
<el-form-item v-show="repairForm.status == 4" label="审批人" prop="approvePersonName">
<el-input disabled v-model="repairForm.approvePersonName"></el-input>
<el-input disabled v-model="chargeForm.approvePersonName"></el-input>
</el-form-item>
<el-form-item v-show="repairForm.status == 4" label="审批时间" prop="approveTime">
<el-input disabled v-model="repairForm.approveTime"></el-input>
<el-input disabled v-model="chargeForm.approveTime"></el-input>
</el-form-item>
</div>
<div v-show="(repairForm.status == 4 && role_id == '1846419477876510721') || repairForm.status == 6 || (repairForm.status == 2 && repairForm.approvePoint == '客户审批维修方案')">
<div v-show="(repairForm.status == 4 && role_id == '1846419477876510721') || (repairForm.status == 2 && repairForm.approvePoint == '客户审批维修方案')">
<div style="color: #101010;font-size: 20px;font-weight: 550;margin-bottom: 20px;">客户审批</div>
<el-form-item label="审批结果" prop="approveResult" >
<el-select placeholder="请选择审批结果" v-model="repairForm.approveResult" style="width: 98%;" :disabled="repairForm.status == 4 || repairForm.status == 2">
<el-select placeholder="请选择审批结果" v-model="clientForm.approveResult" style="width: 98%;" :disabled="repairForm.status == 4 || repairForm.status == 2">
<el-option label="通过" :value="1"></el-option>
<el-option label="驳回" :value="0"></el-option>
</el-select>
</el-form-item>
<el-form-item label="审批意见" prop="approveRemark">
<el-input style="width: 98%;" type="textarea" placeholder="请输入审批意见" v-model="repairForm.approveRemark" :disabled="repairForm.status == 4 || repairForm.status == 2"></el-input>
<el-input style="width: 98%;" type="textarea" placeholder="请输入审批意见" v-model="clientForm.approveRemark" :disabled="repairForm.status == 4 || repairForm.status == 2"></el-input>
</el-form-item>
<el-form-item label="审批人" prop="approvePersonName" v-show="repairForm.status == 4 || (repairForm.status == 2 && repairForm.approvePoint == '客户审批维修方案')">
<el-input style="width: 98%;" placeholder="请输入审批意见" v-model="repairForm.approvePersonName" :disabled="repairForm.status == 4 || repairForm.status == 2"></el-input>
<el-input style="width: 98%;" placeholder="请输入审批意见" v-model="clientForm.approvePersonName" :disabled="repairForm.status == 4 || repairForm.status == 2"></el-input>
</el-form-item>
<el-form-item label="审批时间" prop="approveTime" v-show="repairForm.status == 4 || (repairForm.status == 2 && repairForm.approvePoint == '客户审批维修方案')">
<el-input style="width: 98%;" placeholder="请输入审批意见" v-model="repairForm.approveTime" :disabled="repairForm.status == 4 || repairForm.status == 2"></el-input>
<el-input style="width: 98%;" placeholder="请输入审批意见" v-model="clientForm.approveTime" :disabled="repairForm.status == 4 || repairForm.status == 2"></el-input>
</el-form-item>
</div>
<div v-show="(repairForm.repaiRejectReason != '' || repairForm.repaiTeamRejectReason != '' )">
<div v-show="((repairForm.repaiRejectReason != '' && addForm.status == 100) || repairForm.repaiTeamRejectReason != '' )">
<div style="color: #101010;font-size: 20px;font-weight: 550;margin-bottom: 20px;">驳回详情</div>
<el-form-item label="驳回维修人" prop="repairPersonName" v-show="repairForm.repaiRejectReason != ''">
<el-form-item label="驳回维修人" prop="repairPersonName" v-show="repairForm.repaiRejectReason != '' && addForm.status == 100">
<el-input placeholder="请输入驳回维修人" disabled v-model="repairForm.repairPersonName"
style="width:98%;"></el-input>
</el-form-item>
<el-form-item label="驳回原因" prop="repaiRejectReason" v-show="repairForm.repaiRejectReason != ''">
<el-input placeholder="请输入驳回原因" v-model="repairForm.repaiRejectReason" type="textarea" disabled></el-input>
</el-form-item>
<el-form-item label="驳回运维主管" prop="maintenanceTeamName" v-show="repairForm.repaiTeamRejectReason != ''">
<el-input placeholder="请输入驳回运维主管" disabled v-model="repairForm.maintenanceTeamName"
style="width:98%;"></el-input>
</el-form-item>
<el-form-item label="驳回原因" prop="repaiTeamRejectReason" v-show="repairForm.repaiTeamRejectReason != ''">
<el-input placeholder="请输入驳回原因" v-model="repairForm.repaiTeamRejectReason" type="textarea"
disabled></el-input>
<el-form-item label="驳回原因" prop="repaiRejectReason" v-show="repairForm.repaiRejectReason != '' && addForm.status == 100">
<el-input placeholder="请输入驳回原因" v-model="repairForm.repaiRejectReason" type="textarea" disabled style="width:98%;"></el-input>
</el-form-item>
</div>
<div v-show="(repairForm.closeReason != '')">
@ -498,13 +455,13 @@
<el-input placeholder="请输入关闭原因" v-model="repairForm.closeReason" type="textarea" disabled></el-input>
</el-form-item>
</div>
<div v-show="(role_id == '1839600115013713921' && dialogType != 'view')">
<div style="color: #101010;font-size: 20px;font-weight: 550;margin-bottom: 20px;">审批结果</div>
<div v-show="repairForm.status == 101 || repairForm.status == 102">
<div style="color: #101010;font-size: 20px;font-weight: 550;margin-bottom: 20px;">{{repairForm.status == 101 ? '主管' : repairForm.status == 102 ? '客户' : ''}}审批结果</div>
<el-form-item label="审批结果" prop="approveResult">
<el-select :disabled="repairForm.status == 5 || dialogType == 'view'" v-model="repairForm.approveResult"
<el-select disabled v-model="repairForm.approveResult"
placeholder="请选择审批结果" style="width: 99%;">
<el-option label="通过" :value="0"></el-option>
<el-option label="驳回" :value="1"></el-option>
<el-option label="通过" :value="1"></el-option>
<el-option label="驳回" :value="0"></el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label="审批人" prop="approvePerson">
@ -512,12 +469,12 @@
</el-form-item> -->
<el-form-item label="审批时间" prop="approveTime">
<el-date-picker format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss"
:disabled="repairForm.status == 5 || dialogType == 'view'" style="width:99%"
disabled style="width:99%"
v-model="repairForm.approveTime" type="datetime" placeholder="请选择审批时间">
</el-date-picker>
</el-form-item>
<el-form-item label="备注" prop="approveRemark">
<el-input style="width:99%" :disabled="repairForm.status == 5 || dialogType == 'view'" type="textarea" placeholder="请输入备注"
<el-form-item label="审批意见" prop="approveRemark">
<el-input style="width:99%" disabled type="textarea" placeholder="请输入审批意见"
v-model="repairForm.approveRemark"></el-input>
</el-form-item>
</div>
@ -528,6 +485,7 @@
<el-button v-show="dialogType != 'view'" type="primary" @click="handleRepairConfirm">提交</el-button>
</span>
</el-dialog>
<!-- 维修人员驳回弹窗 -->
<el-dialog title="驳回" :visible.sync="rejectVisible" :append-to-body="true" width="70%">
<el-form ref="rejectForm" :model="rejectForm" :rules="rejectRules">
<el-form-item label="驳回原因" prop="reason" label-position="left" label-width="80px">
@ -539,6 +497,7 @@
<el-button @click="handleReject"> </el-button>
</span>
</el-dialog>
<!-- 关闭弹窗 -->
<el-dialog title="关闭" :visible.sync="cloneVisible" :append-to-body="true" width="70%">
<el-form ref="cloneForm" :model="cloneForm" :rules="cloneRules">
<el-form-item label="关闭原因" prop="reason" label-position="left" label-width="80px">
@ -550,6 +509,7 @@
<el-button @click="handleCloneSub"> </el-button>
</span>
</el-dialog>
<!-- 报告导出页面 -->
<div id="pdfDom" style="padding: 20px;">
<requirement :detailForm="requireForm"></requirement>
</div>
@ -667,9 +627,6 @@ export default {
prop: "faultLocation",
type: "select",
overHidden: true,
// hide: true,
// viewDisplay: false,
// dicUrl: '/lab/blade-system/dict-biz/get-hc-project',
props: {
label: "dictValue",
value: "dictValue",
@ -722,6 +679,8 @@ export default {
},
],
},
chargeForm:{},
clientForm:{},
form: {},
data: [],
page: {
@ -734,7 +693,6 @@ export default {
addForm: {},
addRules: {
repairPerson: { required: true, message: '请选择维修人员', trigger: 'blur' },
// dispatchTime: { required: true, message: '', trigger: 'blur' },
planCompleteTime: { required: true, message: '计划完成时间', trigger: 'blur' },
},
typeList: [],
@ -787,13 +745,6 @@ export default {
getChildList(1, 100, '1846802246527463425').then(res => {
this.typeList = res.data.data
})
// getDeviceList({ current: 1, size: 100 }).then(res => {
// this.deviceList = res.data.data.records
// })
// getDeptList().then(res => {
// console.log('res =>', res)
// this.repairList = res.data.data
// })
getChildList(1, 100, '1848271307123818498').then(res => {
this.treeOptions = res.data.data
})
@ -812,14 +763,11 @@ export default {
this.onLoad()
this.addRules = {
repairPerson: { required: true, message: '请选择维修人员', trigger: 'blur' },
// dispatchTime: { required: true, message: '', trigger: 'blur' },
planCompleteTime: { required: true, message: '计划完成时间', trigger: 'blur' },
}
} else if (this.role_id == '1839537055389515777' || this.role_id == '1839552581620793346') {
this.onLoad()
this.addRules = {
// maintenanceTeam: { required: true, message: '', trigger: 'blur' },
// dispatchTime: { required: true, message: '', trigger: 'blur' },
finishTime: { required: true, message: '请选择计划完成时间', trigger: 'blur' },
repairPerson: { required: true, message: '请选择维修人员', trigger: 'blur' },
}
@ -933,12 +881,10 @@ export default {
this.repairForm = res.data.data
this.repairType = 'examine'
this.dialogType = 'examine'
this.repairForm.approveResult = ''
this.repairForm.errorVideo = res.data.data.videoAttaches.length > 0 ? res.data.data.videoAttaches[0].link : ''
this.repairForm.errorImg = res.data.data.picAttaches.map(item => { return { name: item.originalName, url: item.link } })
this.repairForm.isNeedMaterial = (this.repairForm.status == 1 || this.repairForm.status == 2 || this.repairForm.status == 3) && this.repairForm.isNeedMaterial == -1 ? '' : this.repairForm.isNeedMaterial
this.repairForm.approveRemark = ''
this.repairForm.approveResult = ''
this.chargeForm = {}
if (this.repairForm.isNeedMaterial != '') {
this.tableData = []
this.repairForm.materials.map(item => {
@ -957,7 +903,8 @@ export default {
})
})
this.totalPrice = this.tableData.reduce((sum, item) => sum + item.price, 0)
console.log('tableData----------->', this.tableData)
this.discount = res.data.data.discount != -1 ? res.data.data.discount : ''
this.discountPrice = res.data.data.discountPrice != -1 ? res.data.data.discountPrice : ''
} else {
this.tableData = []
}
@ -1349,7 +1296,6 @@ export default {
this.addForm = res.data.data
this.addForm.maintenanceTeam = res.data.data.status == 0 ? '' : res.data.data.maintenanceTeam
this.addForm.repairPerson = this.role_id == '1839537055389515777' ? '' : res.data.data.repairPerson
// this.fileList = row.fileList
this.dialogVisible = true
})
}
@ -1392,7 +1338,7 @@ export default {
handleRepairConfirm() {
this.$refs.repairForm.validate(valid => {
if (valid) {
if (this.repairForm.status == 2) {
if (this.repairForm.status == 2 || this.repairForm.status == 101) {
if (this.repairForm.isNeedMaterial == '1') {
if (this.tableData.length == 0) {
this.$message.error('请至少填写一条维修材料信息')
@ -1447,15 +1393,14 @@ export default {
}
})
}
}else if(this.repairForm.status == 3){
}else if(this.repairForm.status == 3 || this.repairForm.status == 102){
let query = {
id:this.repairForm.id,
approvePerson:this.userInfo.user_id,
approveResult:this.repairForm.approveResult,
approveResult:this.chargeForm.approveResult,
approveTime: moment().format('YYYY-MM-DD HH:mm:ss'),
approveRemark:this.repairForm.approveRemark
approveRemark:this.chargeForm.approveRemark
}
console.log('query=============>',query)
if(query.approveResult == 0){
supervisorReject(query).then(res =>{
if(res.data.code == 200){
@ -1485,28 +1430,6 @@ export default {
}
}
// else if (this.repairForm.status == 4) {
// let query = {
// id: this.repairForm.id,
// approveResult: this.repairForm.approveResult,
// approvePerson: this.userInfo.user_id,
// approveTime: this.repairForm.approveTime,
// approveRemark: this.repairForm.approveRemark,
// status: this.repairForm.approveResult == 0 ? 5 : 3,
// totalPrice:this.totalPrice,
// discount:this.discount,
// discountPrice:this.discountPrice
// }
// console.log('query1------------->',query)
// editData(query).then(res => {
// if (res.data.code == 200) {
// this.$message.success("")
// this.repairVisible = false
// this.onLoad()
// }
// })
// }
}
})
},
@ -1535,16 +1458,9 @@ export default {
this.addForm = {
...this.addForm,
isNeedMaterials: 2,
}
// this.fileList = row.fileList
this.dialogVisible = true
})
// this.addForm = row
// this.fileList = row.fileList
// this.dialogTitle = ''
// this.dialogVisible = true
},
//
reciveOrder(row){
@ -1559,7 +1475,6 @@ export default {
isNeedMaterials: 2,
}
// this.fileList = row.fileList
this.dialogVisible = true
})
},
@ -1574,8 +1489,10 @@ export default {
this.addForm = {
...this.addForm,
isNeedMaterials: 2,
customerOpinion:'',
planCompleteTime:''
}
// this.fileList = row.fileList
console.log('addForm',this.addForm)
this.dialogVisible = true
})
},
@ -1590,12 +1507,7 @@ export default {
type: 'success',
message: '删除成功!'
});
}).catch(() => {
// this.$message({
// type: 'info',
// message: ''
// });
});
})
},
//
handleClose() {
@ -1622,8 +1534,6 @@ export default {
handleConfirm() {
this.$refs['form'].validate(valid => {
if (valid) {
// this.addForm()
let query = {}
if (this.role_id == '1839536982874193922') {
query = {
@ -1642,24 +1552,21 @@ export default {
customerOpinion: this.addForm.customerOpinion,
remark: this.addForm.remark,
}
// editData(query).then(res =>{
// if(res.data.code == 200){
// serviceman(manQuery).then(result =>{
// if (result.data.code == 200) {
// this.$message.success('')
// this.dialogVisible = false
// this.onLoad()
// }
// })
// }
// })
editData(query).then(res =>{
if(res.data.code == 200){
serviceman(manQuery).then(result =>{
if (result.data.code == 200) {
this.$message.success('派单成功')
this.dialogVisible = false
this.onLoad()
}
})
}
})
} else {
query = {
id: this.addForm.id,
reportUnit: this.addForm.reportUnit,
// maintenanceTeam:this.addForm.maintenanceTeam,
dispatchTime: this.addForm.dispatchTime,
planCompleteTime: this.addForm.planCompleteTime,
repairPerson: this.role_id == '1839536982874193922' ? this.addForm.repairPerson : null,
@ -1694,11 +1601,8 @@ export default {
status: 0,
workId: this.addForm.id,
}
console.log('query1-------------->', query1)
console.log('query-------------->', query)
applyGoods(query1).then(res => {
if (res.data.code == 200) {
// this.$message.success('')
servicemanReceive({id:this.addForm.id}).then(res =>{
if (res.data.code == 200) {
this.$message.success('提交成功')
@ -1706,13 +1610,6 @@ export default {
this.onLoad()
}
})
// editData(query).then(res => {
// if (res.data.code == 200) {
// this.$message.success('')
// this.dialogVisible = false
// this.onLoad()
// }
// })
}
})
}
@ -1725,26 +1622,6 @@ export default {
}
})
}
// else {
// if(this.role_id == '1839536982874193922'){
// serviceman(query).then(res =>{
// console.log('res========>',res)
// if (res.data.code == 200) {
// this.$message.success('')
// this.dialogVisible = false
// this.onLoad()
// }
// })
// }
// console.log('query-------------->', query)
// editData(query).then(res => {
// if (res.data.code == 200) {
// this.$message.success('')
// this.dialogVisible = false
// this.onLoad()
// }
// })
}
}
@ -1786,7 +1663,7 @@ export default {
startTime: this.searchForm.timeRange.length != 0 ? this.searchForm.timeRange[0].toString() + ' 00:00:00' : '', //
endTime: this.searchForm.timeRange.length != 0 ? this.searchForm.timeRange[1].toString() + ' 23:59:59' : '', //
faultType: this.searchForm.faultType ? this.searchForm.faultType : '', //
reportUnit: this.searchForm.reportUnit ? this.searchForm.reportUnit : '',
reportUnitName: this.searchForm.reportUnitName ? this.searchForm.reportUnitName : '',
dataType: this.role_id == '1839536982874193922' || this.role_id == '1839600115013713921' ? 2 : this.role_id == '1839537055389515777' ? 3 : this.role_id == '1839552581620793346' ? 4 : ''
}
getList(query).then(res => {

@ -0,0 +1,297 @@
<template>
<basic-container>
<avue-crud :option="option"
:table-loading="loading"
:data="data"
:page.sync="page"
ref="crud"
@row-del="rowDel"
v-model="form"
:permission="permissionList"
@row-update="rowUpdate"
@row-save="rowSave"
:before-open="beforeOpen"
@search-change="searchChange"
@search-reset="searchReset"
@selection-change="selectionChange"
@current-change="currentChange"
@size-change="sizeChange"
@refresh-change="refreshChange"
@on-load="onLoad">
<template slot-scope="scope" slot="status">
<el-tag :type="scope.row.status == 0 ? 'danger' : 'success'">{{ scope.row.status == 0 ? '未读' : '已读' }}</el-tag>
</template>
<template slot-scope="scope" slot="messageType">
<el-tag :type="scope.row.messageType == 1 ? 'success' : ''">{{ scope.row.messageType == 1 ? '维修' : '维保' }}</el-tag>
</template>
<template slot="menuLeft">
<el-button type="primary"
size="small"
v-if="permission.notice_delete"
@click="handleSuccess">一键已读
</el-button>
</template>
<template slot="menu" slot-scope="{ row }">
<el-button size="small" @click="handleRead(row)"> </el-button>
</template>
<template slot-scope="{row}"
slot="category">
<el-tag>{{row.categoryName}}</el-tag>
</template>
</avue-crud>
</basic-container>
</template>
<script>
// import {getList, remove, update, add, getNotice} from "@/api/desk/notice";
import {messTotal,getList,messOver,overAll} from '@/api/desk/message'
import {mapGetters} from "vuex";
export default {
data() {
return {
form: {},
query: {},
loading: true,
page: {
pageSize: 10,
currentPage: 1,
total: 0
},
selectionList: [],
option: {
height: 'auto',
calcHeight: 30,
dialogWidth: 950,
tip: false,
searchShow: true,
searchMenuSpan: 6,
border: true,
index: true,
viewBtn: false,
editBtn:false,
delBtn:false,
selection: true,
excelBtn: true,
addBtn:false,
dialogClickModal: false,
column: [
{
label: "单号",
prop: "no",
span: 24,
overHidden:true
},
{
label: "消息内容",
prop: "content",
span: 24,
overHidden:true
},
{
label: "消息类型",
prop: "messageType",
span: 24,
slot:true
},
{
label: "消息状态",
prop: "status",
type:'select',
span: 24,
slot:true,
search:true,
dicData:[
{
label:'已读',
value:'1'
},
{
label:'未读',
value:'0'
}
]
},
{
label: "消息时间",
prop: "createTime",
span: 24,
},
{
label: "消息时间",
prop: "releaseTimeRange",
type: "date",
format: "yyyy-MM-dd",
valueFormat: "yyyy-MM-dd",
searchRange:true,
hide: true,
addDisplay: false,
editDisplay: false,
viewDisplay: false,
search: true,
rules: [{
required: true,
message: "请输入通知时间",
trigger: "blur"
}]
},
]
},
data: []
};
},
computed: {
...mapGetters(["permission"]),
permissionList() {
return {
addBtn: this.vaildData(this.permission.notice_add, false),
viewBtn: this.vaildData(this.permission.notice_view, false),
delBtn: this.vaildData(this.permission.notice_delete, false),
editBtn: this.vaildData(this.permission.notice_edit, false)
};
},
ids() {
let ids = [];
this.selectionList.forEach(ele => {
ids.push(ele.id);
});
return ids.join(",");
}
},
methods: {
rowSave(row, done, loading) {
add(row).then(() => {
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
done();
}, error => {
window.console.log(error);
loading();
});
},
rowUpdate(row, index, done, loading) {
update(row).then(() => {
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
done();
}, error => {
window.console.log(error);
loading();
});
},
rowDel(row) {
this.$confirm("确定将选择数据删除?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
return remove(row.id);
})
.then(() => {
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
});
},
searchReset() {
this.query = {};
this.onLoad(this.page);
},
searchChange(params, done) {
this.query = params;
this.page.currentPage = 1;
this.onLoad(this.page, params);
done();
},
selectionChange(list) {
this.selectionList = list;
},
selectionClear() {
this.selectionList = [];
this.$refs.crud.toggleSelection();
},
handleRead(row){
if(row.status == 1){
this.$message.warning('当前消息状态已读,请选择未读的消息')
}else{
this.$confirm("确定将选择数据已读?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
messOver({
id:row.id,
status:1
}).then(res =>{
if(res.data.code == 200){
this.$message.success('操作成功!')
this.onLoad(this.page)
}
})
}).catch(() =>{
})
}
},
handleSuccess(){
overAll().then(res =>{
if(res.data.code == 200){
this.$message.success('操作成功')
}
})
},
beforeOpen(done, type) {
if (["edit", "view"].includes(type)) {
getNotice(this.form.id).then(res => {
this.form = res.data.data;
});
}
done();
},
currentChange(currentPage) {
this.page.currentPage = currentPage;
},
sizeChange(pageSize) {
this.page.pageSize = pageSize;
},
refreshChange() {
this.onLoad(this.page, this.query);
},
onLoad(page, params = {}) {
const {releaseTimeRange} = this.query;
let values = {};
if (releaseTimeRange) {
values = {
startTime: releaseTimeRange[0],
endTime: releaseTimeRange[1],
status:this.query.status ? this.query.status : null
};
values.releaseTimeRange = null;
}else{
values = {
status:this.query.status ? this.query.status : null
};
}
this.loading = true;
getList({current:page.currentPage, size:page.pageSize,...values}).then(res => {
const data = res.data.data;
this.page.total = data.total;
this.data = data.list;
this.loading = false;
});
}
}
};
</script>
<style>
</style>

File diff suppressed because it is too large Load Diff

@ -22,13 +22,15 @@
<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="handleReceive" v-show="permission.goodsReceive"> </el-button>
<el-button type="primary" size="small" @click="handleAddGoods" v-show="permission.goodsAdd"> </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 type="warning" size="small" @click="handleExport"> </el-button>
<!-- <el-button type="primary" size="small" @click="handlePurchase" v-show="permission.goodsBuy"> </el-button> -->
</template>
<template slot-scope="{ row }" slot="menu">
<el-button @click="handleVide(row)" v-show="permission.goodsView">查看</el-button>
<el-button @click="handleEdit(row)" v-show="permission.goodsEdit">编辑</el-button>
<el-button @click="handleImport(row)" v-show="permission.goodsReceive">申领</el-button>
<el-button @click="handleApply(row)" v-show="permission.goodsReceive">申领</el-button>
<el-button @click="handleWarning(row)" v-show="permission.goodsAlarm">预警设置</el-button>
</template>
</avue-crud>
@ -238,6 +240,15 @@
<el-button type="primary" v-show="viewType != 'view'" @click="handleSaveWarning"> </el-button>
</span>
</el-dialog>
<el-dialog title="导入设备" :visible.sync="importVisible" :append-to-body="true" width="30%">
<avue-form :option="excelOption" v-model="excelForm" :upload-after="uploadAfter">
<template slot="excelTemplate">
<el-button type="primary" @click="handleTemplate">
点击下载<i class="el-icon-download el-icon--right"></i>
</el-button>
</template>
</avue-form>
</el-dialog>
</el-col>
</el-row>
</template>
@ -249,12 +260,18 @@ import {getGoodsList, saveGoods, batchStore, getDetail, editGoods,applyGoods,inO
import {getChildList} from '@/api/system/dictbiz'
import {addPurchase} from '@/api/purchaseManagement/purchase'
import { nextTick } from 'vue';
import { downloadXls } from "@/util/util";
import {exportBlob} from "@/api/common";
import {dateNow} from "@/util/date";
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
export default {
components:{
SelectTree
},
data(){
return {
importVisible:false,
purchaseForm:{},
purchaseRules:{},
addTitle:'',
@ -473,7 +490,33 @@ export default {
goodsSize:100,
goodsTotal:0,
goodsName:'',
isSelected:false
isSelected:false,
excelForm: {},
excelOption: {
submitBtn: false,
emptyBtn: false,
column: [
{
label: '模板上传',
prop: 'excelFile',
type: 'upload',
drag: true,
loadText: '模板上传中,请稍等',
span: 24,
propsHttp: {
res: 'data'
},
tip: '请上传 .xls,.xlsx 标准格式文件',
action: "/api/goods/import-goods?isCovered=0"
},
{
label: '模板下载',
prop: 'excelTemplate',
formslot: true,
span: 24,
}
]
}
}
},
computed:{
@ -751,9 +794,29 @@ export default {
this.$refs.childTree.resetNode()
this.dialogAdd = false
},
handleImport() {
this.importVisible = true
},
handleTemplate() {
exportBlob(`/api/goods/export-template`).then(res => {
downloadXls(res.data, "物资数据模板.xlsx");
})
},
handleExport() {
this.$confirm("是否导出物资数据?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
NProgress.start();
exportBlob(`/api/goods/export-goods`).then(res => {
downloadXls(res.data, `物资数据表${dateNow()}.xlsx`);
NProgress.done();
})
});
},
//
handleImport(row){
console.log('row-------->',row)
handleApply(row){
this.isShowTips = false
this.receiveForm = row
this.receiveForm.tableData = []

@ -0,0 +1,289 @@
<template>
<basic-container style="max-height: 800px; overflow: hidden">
<avue-crud :option="option" :table-loading="loading" :data="data" :search.sync="searchForm" :page.sync="page"
ref="crud" v-model="form" :permission="permissionList"
@search-change="searchChange" @search-reset="searchReset" @current-change="currentChange"
@size-change="sizeChange" @refresh-change="refreshChange" @selection-change="selectionChange" @on-load="onLoad">
<template slot-scope="{row}" slot="produceTime">
{{ row.produceTime.substring(0, 10) }}
</template>
<template slot-scope="{ row }" slot="status">
<el-tag size="small" :type="row.status == 0
? 'warning'
: row.status == 1
? ''
: ''
">
{{
row.status == 0
? "待确认"
: row.status == 1
? "已确认"
: ""
}}
</el-tag>
</template>
<template slot-scope="{ row }" slot="runStatus">
<el-tag size="small" :type="row.runStatus == 0
? 'info'
: row.runStatus == 1
? 'success'
: row.runStatus == 2
? 'danger'
: ''
">
{{
row.runStatus == 0
? "关机"
: row.runStatus == 1
? "运行中"
: row.runStatus == 2
? '报警中'
: ""
}}
</el-tag>
</template>
<template slot-scope="scope" slot="menuLeft">
<el-button size="small" @click="handlleAdd" type="primary"> </el-button>
<el-button size="small" @click="handlleDeletes" type="danger"> </el-button>
</template>
<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.deviceDelete" @click="handleDelete(row)">删除</el-button>
</template>
</avue-crud>
<el-dialog :title="addTitle" :visible.sync="addVisible" :append-to-body="true" width="50%">
<el-form ref="form" :model="addForm" :rules="addRules" label-width="80px" label-position="left">
<el-form-item label="仓库编码" prop="code">
<el-input placeholder="请输入仓库编码" v-model="addForm.code" :disabled="addTitle == '查看仓库'"></el-input>
</el-form-item>
<el-form-item label="仓库名称" prop="name">
<el-input placeholder="请输入仓库名称" v-model="addForm.name" style="width: 98%;" :disabled="addTitle == '查看仓库'"></el-input>
</el-form-item>
<el-form-item label="仓库地址" prop="address">
<el-input placeholder="请输入仓库地址" v-model="addForm.address" style="width: 98%;" :disabled="addTitle == '查看仓库'"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="handleClose"> </el-button>
<el-button v-show="addTitle != '查看仓库'" type="primary" @click="handleConfirm"> </el-button>
</span>
</el-dialog>
</basic-container>
</template>
<script>
import { mapGetters } from "vuex";
import {getList,addWare,getDetail,editWare,deleteWare} from '@/api/goodsManagement/warehouse'
export default {
data(){
return {
form:{},
searchForm:{},
loading:true,
addVisible:false,
addTitle:'仓库新增',
addRules:{
code: { required: true, message: '请输入仓库编码', trigger: 'blur' },
name: { required: true, message: '请输入仓库名称', trigger: 'blur' },
address:{required:true,message:'请输入仓库地址',trigger:'blur'},
},
addForm:{},
option: {
height: "auto",
calcHeight: 30,
tip: false,
searchShow: true,
searchMenuSpan: 6,
border: true,
index: true,
dialogType: "dialog",
dialogClickModal: false,
addBtn: false,
viewBtn: false,
editBtn: false,
delBtn: false,
searchShowBtn: false,
refreshBtn: false,
columnBtn: false,
menuWidth: 400,
selection: true,
column: [
{
label: "仓库编码",
labelWidth: 120,
prop: "code",
search: true,
overHidden: true,
},
{
label: "仓库名称",
labelWidth: 120,
prop: "name",
overHidden: true,
},
{
label: "仓库地址",
labelWidth: 120,
prop: "address",
overHidden: true,
},
],
},
page:{
pageSize: 10,
currentPage: 1,
total: 0,
},
data:[],
selectionList:[]
}
},
computed: {
...mapGetters(["userInfo", "permission"]),
},
mounted(){
},
methods:{
//
selectionChange(list){
this.selectionList = list
},
searchChange(params, done){
this.page.currentPage = 1;
this.onLoad();
done();
},
searchReset(params, done) {
this.onLoad();
},
currentChange(currentPage) {
this.page.currentPage = currentPage;
this.onLoad()
},
sizeChange(pageSize){
this.page.pageSize = pageSize;
this.onLoad()
},
//
onLoad(){
this.loading = true
let query = {
current:this.page.currentPage,
size:this.page.pageSize
}
getList(query).then(res =>{
this.data = res.data.data.records
this.page.total = res.data.data.total
this.loading = false
})
},
//
handlleAdd(){
this.addForm = {}
this.addVisible = true
},
//
handleClose(){
this.addVisible = false
this.addForm = {}
this.$refs['form'].resetFields()
},
//
handleConfirm(){
this.$refs['form'].validate((valid) => {
if(valid){
if(this.addForm.id){
let query = {
id:this.addForm.id,
name:this.addForm.name,
code:this.addForm.code,
address:this.addForm.address
}
editWare(query).then(res =>{
if(res.data.code == 200){
this.$message.success("仓库编辑成功")
this.addVisible = false
this.onLoad()
}
})
}else{
addWare(this.addForm).then(res =>{
if(res.data.code == 200){
this.$message.success("仓库新增成功")
this.addVisible = false
this.onLoad()
}
})
}
}
})
},
//
handleEdit(row){
getDetail({id:row.id}).then(res =>{
this.addForm = res.data.data
this.addVisible = true
this.addTitle = '编辑仓库'
})
},
//
handleView(row){
getDetail({id:row.id}).then(res =>{
this.addForm = res.data.data
this.addVisible = true
this.addTitle = '查看仓库'
})
},
//
handleDelete(row){
this.$confirm('请确认是否删除该仓库?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteWare({ids:row.id}).then(res => {
if (res.data.code == 200) {
this.onLoad()
this.$message({
type: 'success',
message: '删除成功!'
});
}
})
}).catch(() => {
});
},
//
handlleDeletes(){
if(this.selectionList.length == 0){
this.$message.warning('请至少选择一条数据')
}else{
let ids = this.selectionList.map(item => item.id).join(',')
this.$confirm('请确认是否删除选中的仓库?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteWare({ids:ids}).then(res => {
if (res.data.code == 200) {
this.onLoad()
this.$message({
type: 'success',
message: '删除成功!'
});
}
})
}).catch(() => {
});
}
},
}
}
</script>
<style>
</style>

@ -39,8 +39,8 @@
</div>
</el-form-item>
<el-form-item label="巡检配置">
<el-table :data="addForm.tableData" border style="width: 100%" :span-method="objectSpanMethod">
<el-table-column width="50" align="center">
<el-table :data="addForm.tableData" border style="width: 100%" :span-method="objectSpanMethod" v-loading="isLoad">
<el-table-column width="50" align="center" >
<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;">
@ -83,7 +83,7 @@
</el-table-column>
<el-table-column prop="startTime" align="center" label="开始时间">
<template slot-scope="scope">
<el-date-picker style="width: 100%;" v-model="scope.row.startTime" type="date"
<el-date-picker style="width: 100%;" v-model="scope.row.startTime" type="date" @change="((val) =>changeStartTime(val,scope.$index))"
placeholder="请选择开始时间" format="yyyy-MM-dd" value-format="yyyy-MM-dd" :disabled="title == '查看'">
</el-date-picker>
</template>
@ -107,6 +107,25 @@
<div slot="tip" class="el-upload__tip">支持上传docxpdf文件且不超过10M</div>
</el-upload>
</el-form-item>
<el-form-item label="实验室图纸" prop="drawingFile">
<el-upload
class="upload-demo"
action="/api/blade-resource/oss/endpoint/put-file"
:on-success="handledrawSuccess"
:on-remove="handledrawRemove"
:headers="headers"
multiple
list-type="picture-card"
:disabled="title == '查看'"
accept=".png,.jpeg,.jpg,"
:limit="3"
:on-exceed="handleExceed"
:file-list="drawList">
<i class="el-icon-plus"></i>
<!-- <el-button size="small" type="primary">点击上传</el-button> -->
<div slot="tip" class="el-upload__tip">支持上传pngjpegjpg文件且不超过10M</div>
</el-upload>
</el-form-item>
</div>
</el-form>
</div>
@ -115,9 +134,10 @@
<script>
import website from '@/config/website';
import {getToken, removeToken, removeRefreshToken} from '@/util/auth';
import {getDeepData} from '@/api/labManagement/inspectionManagement'
import {getDeepData,getDeviceLists} from '@/api/labManagement/inspectionManagement'
import {getDeviceList,getDetail} from '@/api/device/device'
import {getChildList} from '@/api/system/dictbiz'
import func from "@/util/func";
export default {
name: 'addDialog',
props:{
@ -127,6 +147,7 @@ export default {
},
data() {
return {
isLoad:false,
addForm: {
tableData:[]
},
@ -135,6 +156,8 @@ export default {
content:{required:true,message:'请输入巡检内容',trigger:'blur'}
},
filesList:[],
drawList:[],
drawfiles:[],
imgList:[],
periodArr:[],
floorArr:[],
@ -143,18 +166,19 @@ export default {
activeRoom:'',
tableData:[],
deviceCurrent:1,
deviceSize:10,
deviceSize:100,
deviceList:[],
spanArr:[],
pos:0,
currentIndex:0,
headers:{}
headers:{},
labId:''
}
},
watch:{
detailForm(newVal, oldVal){
if(JSON.stringify(newVal) != '{}'){
console.log('111111111111111111111111111111')
this.detailForm = newVal
this.addForm = {
...this.detailForm,
@ -164,16 +188,34 @@ export default {
}
this.floorArr = []
this.roomArr = []
this.tableData = this.getDeepCode(newVal.details,[])
this.tableData.map(item =>{
item.period = item.period
})
this.changeUnit(newVal.deptId)
if(newVal.details && newVal.details.length != 0){
this.tableData = this.getDeepCode(newVal.details,[])
this.tableData.map(item =>{
item.period = item.period
})
this.changeUnit(newVal.deptId)
}
this.imgList = []
this.filesList = []
this.drawList = []
this.drawfiles = []
this.filesList = this.detailForm.attaches
this.imgList = this.detailForm.attaches
this.detailForm.draws.map(item =>{
this.drawList.push({
name:item.name,
url:item.link
})
this.drawfiles.push({
name:item.name,
url:item.link
})
})
}else{
this.imgList = []
this.filesList = []
this.drawList = []
this.drawfiles = []
this.getDeviceData()
getChildList(1,100,'1858710780677984257').then(res =>{
this.periodArr = res.data.data
@ -198,6 +240,8 @@ export default {
}
this.imgList = []
this.filesList = []
this.drawList = []
this.drawfiles = []
if(JSON.stringify(this.detailForm) != '{}'){
this.addForm = {
...this.detailForm,
@ -220,6 +264,22 @@ export default {
url:item.link
})
})
this.detailForm.draws.map(item =>{
this.drawList.push({
name:item.name,
url:item.link
})
this.drawfiles.push({
name:item.name,
url:item.link
})
})
}else{
this.drawList = []
this.drawfiles = []
this.imgList = []
this.filesList = []
this.addForm = {}
}
},
methods:{
@ -234,7 +294,6 @@ export default {
return arr
},
handleSuccess(response, file, fileList){
console.log('response',response)
if(response.code == 200){
this.filesList.push({
url:response.data.link, //url
@ -243,10 +302,19 @@ export default {
}
},
handleRemove(res,file){
console.log('res====>',res)
console.log('file-------->',file)
this.filesList = this.filesList.filter(item => item.link == res.url && item.name == res.name)
},
handledrawSuccess(response, file, fileList){
if(response.code == 200){
this.drawfiles.push({
url:response.data.link, //url
name:response.data.originalName, //
})
}
},
handledrawRemove(res,file){
this.drawfiles = this.drawfiles.filter(item => item.link == res.url && item.name == res.name)
},
getDeviceData(){
getDeviceList({current:this.deviceCurrent,size:this.deviceSize}).then(res =>{
this.deviceList = res.data.data.records
@ -264,7 +332,6 @@ export default {
}
},
getSpanArr(data) {
console.log('data==========>',data)
for (var i = 0; i < data.length; i++) {
if (i === 0) {
this.spanArr.push(1);
@ -280,7 +347,6 @@ export default {
}
}
}
console.log('spanArr==========>',this.spanArr)
},
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 1 && row.deviceId != '') {
@ -292,12 +358,55 @@ export default {
colspan: _col
}
}
}
},
//
changeStartTime(val,index){
this.addForm.tableData[index].nextStartTime = val
},
//
changeDevice(val,index){
console.log('val------------->',val,index)
getDetail({id:val}).then(res =>{
if(this.title == '新建'){
console.log('tmp------------------->',this.tableData.find(item => item.deviceId == val))
let arr = []
res.data.data.maintenances.map(item =>{
arr.push({
floorId:this.activeFloor, // id
floorName:this.floorArr.find(item => item.id == this.activeFloor).deptName, //
deviceId:item.deviceId,
deviceName:res.data.data.name,
deptId:this.activeRoom, // id
deptName:this.roomArr.find(item => item.id == this.activeRoom).deptName, //
checkContent:item.checkContent,
majorName:'',
nextStartTime:item.startTime,
startTime:item.startTime,
craft:item.craft,
period:item.period,
})
})
this.tableData = [...this.tableData,...arr]
this.addForm.tableData = this.tableData.filter(item => item.floorId == this.activeFloor && item.deptId == this.activeRoom)
this.spanArr = []
this.pos = 0
this.getSpanArr(this.addForm.tableData)
let arr1 = this.deviceList.filter(item1 =>
this.addForm.tableData.some(item2 =>
item1.id == item2.deviceId
)
);
this.deviceList.map(item1 =>{
item1.disabled = false
arr1.map(item2 =>{
if(item2.id == item1.id){
item1.disabled = true
}
})
})
}else{
let arr = []
res.data.data.maintenances.map(item =>{
arr.push({
@ -328,7 +437,13 @@ export default {
this.pos = 0
this.getSpanArr(this.addForm.tableData)
}
this.addForm.tableData = func.process(this.addForm.tableData)
this.$forceUpdate()
this.spanArr = []
this.pos = 0
this.getSpanArr(this.addForm.tableData)
this.tableData = [...this.tableData,...this.addForm.tableData]
this.tableData = func.process(this.tableData)
let arr1 = this.deviceList.filter(item1 =>
this.addForm.tableData.some(item2 =>
item1.id == item2.deviceId
@ -343,12 +458,14 @@ export default {
}
})
})
}
})
},
//
changeUnit(val){
console.log('val===========>',val)
console.log('unitData===============>',this.unitData)
this.labId = val
if(this.title == '新建'){
this.addForm.unitName = this.unitData.find(item => item.id == val).title
this.deviceList.map(item =>{
@ -362,6 +479,7 @@ export default {
getDeepData({parentId:this.activeFloor}).then(res =>{
this.roomArr = res.data.data
this.activeRoom = res.data.data.length > 0 ? res.data.data[0].id : ''
this.clickRoom(res.data.data[0])
if(JSON.stringify(this.detailForm) != '{}'){
console.log(this.activeFloor,this.activeRoom)
this.addForm.tableData = this.tableData.filter(item => item.floorId == this.activeFloor && item.deptId == this.activeRoom)
@ -387,22 +505,6 @@ export default {
})
})
},
// getDeepData(tree,val,arr){
// for(const item of tree){
// if(item.id == val){
// return item.children;
// }
// if (item.children && item.children.length > 0) {
// const result = this.getDeepData(item.children, val, item.children);
// if (result) {
// //
// return result;
// }
// }
// }
// //
// return null;
// },
openForm(){
this.addForm.tableData = [
{floorId:this.activeFloor,roomId:this.activeRoom,majorName:'',checkContent:'',craft:''},
@ -424,10 +526,7 @@ export default {
}else{
this.addForm.tableData.push({floorId:this.activeFloor,roomId:this.activeRoom,majorName:'',checkContent:'',craft:'',deviceId:''})
this.tableData = this.tableData.filter(item => (item.floorId != this.activeFloor || item.roomId != this.activeRoom))
// this.tableData = this.tableData.concat(this.addForm.tableData)
// console.log('tableData==========>',this.tableData)
}
},
deleteColumn(row, index) {
if(this.title == '查看'){
@ -444,19 +543,14 @@ export default {
getDeepData({parentId:val}).then(res =>{
this.roomArr = res.data.data
this.activeRoom = this.roomArr[0].id
console.log('activeFloor',this.activeFloor)
console.log('activeRoom',this.activeRoom)
console.log('tableData',this.tableData)
this.clickRoom(this.roomArr[0])
this.addForm.tableData = this.tableData.filter(item => item.floorId == this.activeFloor && item.deptId == this.activeRoom)
if(this.addForm.tableData.length == 0){
this.addForm.tableData = [{floorId:this.activeFloor,roomId:this.activeRoom,majorName:'',checkContent:'',craft:''}]
// this.tableData = this.tableData.concat(this.addForm.tableData)
}
console.log('this.addForm------------->',this.addForm.tableData)
const uniqueArr = this.addForm.tableData.filter((item, index, self) => {
return index === self.findIndex(obj => obj.craft === item.craft && obj.deviceId === item.deviceId);
});
console.log('this.uniqueArr============>',uniqueArr)
this.addForm.tableData = uniqueArr
let arr1 = this.deviceList.filter(item1 =>
this.addForm.tableData.some(item2 =>
@ -471,8 +565,6 @@ export default {
}
})
})
console.log('this.tableData------------->',this.tableData)
this.spanArr = []
this.pos = 0
this.getSpanArr(this.addForm.tableData)
@ -484,34 +576,71 @@ export default {
},
clickRoom(val){
this.activeRoom = val.id
console.log('table------------->',this.tableData)
this.addForm.tableData = this.tableData.filter(item => item.floorId == this.activeFloor && item.deptId == this.activeRoom)
console.log('this.addForm------------->',this.addForm.tableData)
if(this.addForm.tableData.length == 0){
this.addForm.tableData = [{floorId:this.activeFloor,roomId:this.activeRoom,majorName:'',checkContent:'',craft:''}]
// this.tableData = this.tableData.concat(this.addForm.tableData)
}
const uniqueArr = this.addForm.tableData.filter((item, index, self) => {
return index === self.findIndex(obj => obj.craft === item.craft && obj.deviceId === item.deviceId);
});
this.addForm.tableData = uniqueArr
let arr1 = this.deviceList.filter(item1 =>
this.addForm.tableData.some(item2 =>
item1.id == item2.deviceId
)
);
this.deviceList.map(item1 =>{
item1.disabled = false
arr1.map(item2 =>{
if(item2.id == item1.id){
item1.disabled = true
}
console.log('val1------------->',val)
console.log('title------------->',this.title)
if(this.title == '新建'){
getDeviceLists({limsId:this.labId,floorId:this.activeFloor,roomId:this.activeRoom}).then(res =>{
this.deviceList = res.data.data
console.log('res==============>',res)
console.log('table-------------->',this.tableData)
res.data.data.map((item,index) =>{
if(!this.tableData.find(item => item.deptId == this.activeRoom)){
this.changeDevice(item.id,index)
}else{
this.addForm.tableData = this.tableData.filter(item => item.floorId == this.activeFloor && item.deptId == this.activeRoom)
this.spanArr = []
this.pos = 0
this.getSpanArr(this.addForm.tableData)
let arr1 = this.deviceList.filter(item1 =>
this.addForm.tableData.some(item2 =>
item1.id == item2.deviceId
)
);
this.deviceList.map(item1 =>{
item1.disabled = false
arr1.map(item2 =>{
if(item2.id == item1.id){
item1.disabled = true
}
})
})
}
})
})
})
console.log('this.addForm.tableData',this.addForm.tableData)
this.spanArr = []
}else{
this.isLoad = true
getDeviceLists({limsId:this.labId,floorId:this.activeFloor,roomId:this.activeRoom}).then(res =>{
this.deviceList = res.data.data
this.addForm.tableData = this.tableData.filter(item => item.floorId == this.activeFloor && item.deptId == this.activeRoom)
this.$forceUpdate();
setTimeout(() =>{
this.isLoad = false
},200)
// if(this.addForm.tableData.length == 0){
// this.addForm.tableData = [{floorId:this.activeFloor,roomId:this.activeRoom,majorName:'',checkContent:'',craft:''}]
// }
// const uniqueArr = this.addForm.tableData.filter((item, index, self) => {
// return index === self.findIndex(obj => obj.craft === item.craft && obj.deviceId === item.deviceId);
// });
// this.addForm.tableData = uniqueArr
// let arr1 = this.deviceList.filter(item1 =>
// this.addForm.tableData.some(item2 =>
// item1.id == item2.deviceId
// )
// );
// this.deviceList.map(item1 =>{
// item1.disabled = false
// arr1.map(item2 =>{
// if(item2.id == item1.id){
// item1.disabled = true
// }
// })
// })
this.spanArr = []
this.pos = 0
this.getSpanArr(this.addForm.tableData)
})
}
},
}

@ -493,23 +493,31 @@ export default {
handleConfirm() {
console.log('addDialog==========>', this.$refs.addDialog)
let addForm = this.$refs.addDialog.addForm
this.$refs.addDialog.tableData.map(item => {
item.nextStartTime = item.startTime
})
// this.$refs.addDialog.tableData.map(item => {
// item.nextStartTime = item.startTime
// })
let arr = []
let arr1 = []
this.$refs.addDialog.filesList.map(item => {
arr.push({
name: item.name,
link: item.url
})
})
this.$refs.addDialog.drawfiles.map(item => {
arr1.push({
name: item.name,
link: item.url
})
})
let query = {
id: addForm.id ? addForm.id : null, //
deptId: addForm.unitId, // id
deptName: addForm.unitName, //
planContent: addForm.content, //
details: this.$refs.addDialog.tableData,
attaches: arr
attaches: arr,
draws:arr1
}
console.log('query===========>', query)
if (query.id) {

@ -145,11 +145,11 @@
<el-input placeholder="请输入故障专业类型" v-model="detailForm.faultType" disabled style="width: 98%;"></el-input>
</el-form-item>
<el-form-item label="故障视频" v-show="viewType == 'view'">
<el-form-item label="故障视频" v-show="viewType == 'view' && detailForm.errorVideo != ''">
<video v-show="detailForm.errorVideo != ''" :src="detailForm.errorVideo"
style="width: 148px; height: 148px" controls></video>
</el-form-item>
<el-form-item label="故障图片" v-show="viewType == 'view'">
<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=""
style="width: 148px; height: 148px;margin-right:10px;">
</el-form-item>

@ -126,6 +126,7 @@ export default {
if(res.data.code == 200){
this.$message.success('审核成功')
this.dialogCheck = false
this.onLoad()
}
})
},
@ -138,6 +139,7 @@ export default {
if(res.data.code == 200){
this.$message.success('审核成功')
this.dialogCheck = false
this.onLoad()
}
})
},

Loading…
Cancel
Save