whycwx
2021-11-24 8c1a1064c6004865dbf66c1b2aed9fcf71bfbec2
修改
2个文件已修改
506 ■■■■ 已修改文件
src/pages/alarmWork/js/workInfo/workInfo.js 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/alarmWork/workInfo.vue 452 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/alarmWork/js/workInfo/workInfo.js
@@ -13,28 +13,56 @@
    });
  }
  /*
*接口功能:查询站点用户
*接口功能:查询当前用户的所有包机组和对应用户
*传参:{stationId:42010047}
*
*/
export const userList = function (data) {
export const groupAndUserListOfCurrentUser = function (data) {
  return axios({
    method: 'GET',
    url: '/BattGroupUser/userList',
    url: 'baoJiGroupUser/groupAndUserListOfCurrentUser',
    params: data
  });
}
/*
*接口功能:查询所有站点用户
*传参:无参
*
*/
export const groupAndUser = function (data) {
  return axios({
    method: 'GET',
    url: '/baoJiGroupUser/groupAndUser',
    params: data
  });
}
// 登录
export const login = function (data) {
/*
*接口功能:查询动作列表
*传参:{status:5,type:1}
*
*/
export const actionTypeList4Role = function (data) {
    return axios({
      method: 'PUT',
      url: '/changeUser',
      params: {userId:1023}
    method: 'GET',
    url: '/workflowAction/actionTypeList4Role',
    params: data
    });
  }
/*
*处理工单节点
*传参:{status:5,type:1}
*
*/
export const updateLink = function (data) {
  return axios({
    method: 'PUT',
    url: 'workflow/updateLink',
    data: data
  });
}
src/pages/alarmWork/workInfo.vue
@@ -4,7 +4,7 @@
        <el-row type="flex" class="row-bg" justify="space-between">
            <el-col :span="6"><div class="grid-content bg-purple">工单编号:{{ workInfo.orderId }}</div></el-col>
            <el-col :span="8"><div class="grid-content">工单生成时间:{{ workInfo.createTime }}</div></el-col>
            <el-col :span="6"><div class="grid-content bg-purple">当前状态:<span class="color_red">{{ workInfo.status }}</span></div></el-col>
            <el-col :span="6"><div class="grid-content bg-purple">当前状态:<span class="color_red">{{ workInfo.statusName }}</span></div></el-col>
        </el-row>
        <div class="list_box">
            <el-tabs type="border-card">
@@ -26,7 +26,7 @@
                        <!-- <p><span class="label_box">告警附件:</span><a href="#" download>某某文件.txt</a></p> -->
                         <!-- 处理分派回复 -->
                        <div class="change_box" v-if="tableData.length>0">
                                <el-table :data="tableData" stripe style="width: 100%">
                            <el-table ref="teble" :data="tableData" stripe style="width: 100%" @select="tebleselect">
                                <el-table-column type="selection" width="55"></el-table-column>
                                <el-table-column prop="dealUserId" label="分派处理人"></el-table-column>
                                <el-table-column prop="dealReason" label="处理回复内容" ></el-table-column>
@@ -34,15 +34,15 @@
                                <el-table-column prop="createTime" label="日期"></el-table-column>
                                <el-table-column prop="option" label="操作">
                                    <template slot-scope="scope">
                                        <el-button size="mini" type="success">通过</el-button>
                                        <el-button size="mini" type="info">驳回</el-button>
                                        <el-button size="mini" type="success" @click="listBtn(5,scope.row)">通过</el-button>
                                        <el-button size="mini" type="info" @click="listBtn(4,scope.row)">驳回</el-button>
                                    </template>
                                </el-table-column>
                            </el-table>
                        </div>
                    </div>
                   
                    <div class="select_box">
                    <div class="select_box" v-if="thisObj">
                        <p>
                            <span class="label_box">处理动作:</span>
                            <el-select v-model="value" placeholder="请选择" @change="getSelectVal">
@@ -59,9 +59,9 @@
                        <!-- 转派 -->
                        <div class="change_box" v-if="value==1">
                            <el-form ref="form2" :model="form2" label-width="120px">
                                <el-form-item label="要求完成时间:">
                                <!-- <el-form-item label="要求完成时间:">
                                    <el-date-picker v-model="form2.date2" type="datetime" placeholder="选择日期时间" > </el-date-picker>
                                </el-form-item>
                                </el-form-item> -->
                                <el-form-item label="转派处理人:">
                                    <el-input v-model="form2.user" placeholder="请选择" readonly=""  @click.native="getUserList()" style="width: 20%;"></el-input>
                                </el-form-item>
@@ -69,34 +69,17 @@
                                    <el-input type="textarea" v-model="form2.desc" style="width: 40%;"></el-input>
                                </el-form-item>
                                <el-form-item >
                                    <el-button size="mini" type="primary">提交</el-button>
                                    <el-button size="mini" type="primary" @click="submit">提交</el-button>
                                </el-form-item>
                            </el-form>
                        </div>
                        <!-- 分派 -->
                        <div class="change_box" v-if="value==3">
                            <el-form ref="form3" :model="form3" label-width="120px">
                                <el-form-item label="要求完成时间:">
                                    <el-date-picker v-model="form3.date2" type="datetime" placeholder="选择日期时间" > </el-date-picker>
                                </el-form-item>
                                <el-form-item label="分派处理人:">
                                    <el-input v-model="form3.user" placeholder="请输入" readonly=""  @click.native="getUserList()" style="width: 40%;"></el-input>
                                </el-form-item>
                                <el-form-item label="转派意见:">
                                    <el-input type="textarea" v-model="form3.desc" style="width: 40%;"></el-input>
                                </el-form-item>
                                <el-form-item >
                                    <el-button size="mini" type="primary">提交</el-button>
                                </el-form-item>
                            </el-form>
                        </div>
                        <!-- 移交 -->
                        <div class="change_box" v-if="value==2">
                            <el-form ref="form4" :model="form4" label-width="120px">
                                <el-form-item label="要求完成时间:">
                                <!-- <el-form-item label="要求完成时间:">
                                    <el-date-picker v-model="form4.date2" type="datetime" placeholder="选择日期时间" > </el-date-picker>
                                </el-form-item>
                                </el-form-item> -->
                                <el-form-item label="移交处理组:">
                                    <el-input v-model="form4.user" placeholder="请选择" readonly=""  @click.native="getUserList()" style="width: 40%;"></el-input>
                                </el-form-item>
@@ -104,23 +87,40 @@
                                    <el-input type="textarea" v-model="form4.desc" style="width: 40%;"></el-input>
                                </el-form-item>
                                <el-form-item >
                                    <el-button size="mini" type="primary">提交</el-button>
                                    <el-button size="mini" type="primary" @click="submit">提交</el-button>
                                </el-form-item>
                            </el-form>
                        </div>
                        <!-- 分派 -->
                        <div class="change_box" v-if="value==3">
                            <el-form ref="form3" :model="form3" label-width="120px">
                                <el-form-item label="要求完成时间:">
                                    <el-date-picker v-model="form3.date2" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" placeholder="选择日期时间" > </el-date-picker>
                                </el-form-item>
                                <el-form-item label="分派处理人:">
                                    <el-input v-model="form3.user" placeholder="请输入" readonly=""  @click.native="getUserList()" style="width: 40%;"></el-input>
                                </el-form-item>
                                <el-form-item label="分派意见:">
                                    <el-input type="textarea" v-model="form3.desc" style="width: 40%;"></el-input>
                                </el-form-item>
                                <el-form-item >
                                    <el-button size="mini" type="primary" @click="submit">提交</el-button>
                                </el-form-item>
                            </el-form>
                        </div>
                        <!-- 回复 -->
                        <div class="change_box" v-if="value==5">
                        <div class="change_box" v-if="value==6">
                            <el-form ref="form5" :model="form5" label-width="120px">
                                <el-form-item label="处理意见:">
                                <el-form-item label="回复意见:">
                                    <el-input type="textarea" v-model="form5.desc" style="width: 40%;"></el-input>
                                </el-form-item>
                                <el-form-item >
                                    <el-button size="mini" type="primary">提交</el-button>
                                    <el-button size="mini" type="primary" @click="submit">提交</el-button>
                                </el-form-item>
                            </el-form>
                        </div>
                        <!-- 处理并归档 -->
                        <div class="change_box" v-if="value==6">
                        <div class="change_box" v-if="value==7">
                            <el-form ref="form6" :model="form6" label-width="120px">
                                <el-form-item label="归档意见:">
                                    <el-input type="textarea" v-model="form6.desc" style="width: 40%;"></el-input>
@@ -286,7 +286,7 @@
                <el-tab-pane label="流程图">流程图</el-tab-pane>
            </el-tabs>
            
            <!-- <el-button size="mini" type="primary" @click="basicInfo">查询</el-button> -->
            <el-button size="mini" type="primary" @click="cc">查询</el-button>
        </div>
        <!-- 用户列表 -->
        <el-dialog
@@ -300,24 +300,44 @@
                show-checkbox
                @check="check"
                node-key="id"
                ref="tree"
                :default-expanded-keys="expandedList"
                :props="defaultProps">
                </el-tree>
            </div>
            <span slot="footer" class="dialog-footer">
                <el-button type="primary" @click="ok()">确 定</el-button>
                <el-button @click="cancel()">取 消</el-button>
                <el-button @click="getCurrentNode()">取 消</el-button>
            </span>
        </el-dialog>
        <!-- 通过、驳回意见框 -->
        <el-dialog
        :title="listBtnStatus==4?'驳回意见':'通过意见'"
        :visible.sync="dialog2"
        width="30%"
        center>
            <div>
                <el-input type="textarea" v-model="txtData" style="width: 100%;"></el-input>
            </div>
            <span slot="footer" class="dialog-footer">
                <el-button type="primary" @click="clearBtn(1)">确 定</el-button>
                <el-button @click="clearBtn(2)">取 消</el-button>
            </span>
        </el-dialog>
    </div>
</template>
<script>
import { login,basicInfo , userList} from './js/workInfo/workInfo'
import { actionTypeList4Role,basicInfo , groupAndUserListOfCurrentUser,groupAndUser,updateLink} from './js/workInfo/workInfo'
import  {STATUS}  from './js/const'
export default {
    data(){
        return {
            listBtnStatus:"",
            txtData:"",
            thisObj:null,
            listObj:null,
            dialog:false,
            dialog2:false,
            expandedList:[],
            userCheckId:"",
            userCheckName:"",
@@ -329,6 +349,7 @@
            value:"",
            workInfo:{
                status:0,
                statusName:"",
                title:"",
                orderId:"",
                createTime:"",
@@ -337,33 +358,35 @@
                alarmLevel:"",
                countdown:"",
                stationId:"",
                id:"",
                type:"",
            },
            numList:["一","二","三","四","五","六","七","八","九","十"],
            selectList:[
                {value:1,label:"转派"},
                {value:3,label:"分派"},
                {value:2,label:"移交"},
                {value:5,label:"回复"},
                {value:6,label:"处理并归档"},
                {value:3,label:"分派"},
                {value:6,label:"回复"},
                {value:7,label:"处理并归档"},
            ],
            tableData:[],
            form2:{
                date1:"",
                // date2:"",
                desc:"",
                user:"",
                userId:"",
            },
            form3:{
                date2:"",
                desc:"",
                user:"",
            },
            form3:{
                date1:"",
                date2:"",
                desc:"",
                user:""
                userId:"",
            },
            form4:{
                date1:"",
                date2:"",
                // date2:"",
                desc:"",
                user:""
                user:"",
                userId:"",
            },
            form5:{
                desc:"",
@@ -381,28 +404,97 @@
        this.basicInfo();
    },
    methods: {
        // 通过、驳回按钮
        listBtn:function(val,row){
            console.log(row)
            let self = this;
                self.dialog2 = true;
                self.listBtnStatus = val;
                self.listObj = row;
        },
        // 通过驳填写意见弹窗操作
        clearBtn:function(value){
            let self = this;
                if(value == 1){//确认
                    if(self.txtData == ""){
                        let txt = self.listBtnStatus == 4?"驳回意见!":"通过意见!";
                            self.$message({
                                type: 'error',
                                message:'请填写' + txt
                            });
                            return false;
                    }
                    let params = {};
                        if(self.listBtnStatus == 5){//通过
                                params={
                                    dealType:5,
                                    id:self.workInfo.id,
                                    replyContent:self.txtData
                                }
                        }else{//驳回4
                                params={
                                    dealType:4,
                                    id:self.workInfo.id,
                                    replyContent:self.txtData,
                                    parentId:self.listObj.parentId,
                                    dealUserId:self.listObj.dealUserId,
                                    dealTaskReplyNum:self.listObj.dealTaskReplyNum,
                                    mainId:self.listObj.mainId,
                                    replyContent:self.txtData
                                }
                        }
                        self.updateLink(params);
                        console.log(params)
                }
                self.txtData = "";
                self.dialog2 = false;
        },
        cc:function(){
            console.log(this.form3)
        },
        // 选中列表时
        tebleselect:function(selection, row){
            console.log(selection, row)
            let self = this;
            if(selection.length>0){
                selection.forEach(item => {
                    if(item.id != row.id){
                        self.$refs.teble.toggleRowSelection(item,false)
                    }
                });
                self.thisObj = row;
            }else{
                self.thisObj = null;
            }
        },
        // 获取处理动作选择
        getSelectVal:function(val){
            console.log(val)
            console.log("val:" + this.value)
        },
        // 获取选中的列表
        getCurrentNode:function(){
            let self = this;
            let data = self.$refs.tree.getCheckedNodes();
                console.log(data)
        },
        // 获取用户列表
        getUserList:function(){
            let self = this;
            let params = {
                stationId:self.workInfo.stationId
            }
                userList(params).then((res)=>{
            if(self.value == 3){//分派时查询当前组成员
                groupAndUserListOfCurrentUser().then((res)=>{
                    let resdata = res.data;
                    console.log(resdata)
                        if(resdata.code == 1){
                            let rs = resdata.data[0];
                            let dataList = [
                                    {
                                        id:self.workInfo.stationId,
                                        label:self.workInfo.stationName,
                                        id:rs.baoJiGroupId,
                                        label:rs.baoJiGroupName,
                                        children:[]
                                    }
                                ];
                                resdata.data.forEach(item => {
                                rs.userList.forEach(item => {
                                    let obj = {
                                        id:item.uid,
                                        label:item.uname
@@ -416,6 +508,34 @@
                }).catch((err)=>{
                })
            }else{//非分派时查询所有组成员
                groupAndUser().then((res)=>{
                    let resdata = res.data;
                        if(resdata.code ==1){
                            let rs = resdata.data;
                            let userArr = [];
                            rs.forEach(item => {
                                let dataList = {
                                                    id:item.baoJiGroupId,
                                                    label:item.baoJiGroupName,
                                                    // children:[]
                                                };
                                    // item.userList.forEach(list => {
                                    //     let obj = {
                                    //         id:list.uid,
                                    //         label:list.uname
                                    //     }
                                    //     dataList.children.push(obj);
                                    // });
                                    userArr.push(dataList);
                            });
                                self.userList = userArr;
                                self.dialog = true;
                                console.log(self.userList);
                        }
                })
            }
                
        },
        // 树已选数据
@@ -429,15 +549,19 @@
            * halfCheckedNodes:已选数据所属组的详细信息   
            *}
            */ 
           console.log(obj,data)
           let self = this;
                if(obj.id!=self.workInfo.stationId){
                    self.userCheckId = data.checkedKeys.join(",");
                if(self.value == 3){
                    if(obj.id!=self.workInfo.stationId && data.checkedKeys.length<self.userList[0].length){
                        self.userCheckId = data.checkedKeys;
                }else{
                    self.userCheckId = data.checkedKeys.slice(1, data.checkedKeys.length).join(",");
                        self.userCheckId = data.checkedKeys.slice(1, data.checkedKeys.length);
                }
                    console.log(data.checkedKeys,self.userList)
                let nameArr = [];
                data.checkedNodes.forEach((item,i) => {
                    if(obj.id!=self.workInfo.stationId){
                        if(obj.id!=self.workInfo.stationId && data.checkedKeys.length<self.userList[0].children.length){
                        nameArr.push(item.label);
                    }else{
                        if(i>0){
@@ -447,21 +571,172 @@
                    
                });
                self.userCheckName = nameArr.join(",");
            console.log(obj,data)
            console.log(self.userCheckId,self.userCheckName)
                    // console.log(obj,data)
                    // console.log(self.userCheckId,self.userCheckName)
                }else{
                    self.userList.forEach(item => {
                        if(item.id != obj.id){
                            self.$refs.tree.setChecked(item.id,false);
                        }
                    });
                }
        },
        // 确定
        ok:function(){
            let self = this;
                self.form2.user = self.userCheckName;
            let data = self.$refs.tree.getCheckedNodes();
                console.log(data)
                if(data.length >0){
                    switch (self.value) {
                        case 1://转派
                                self.form2.userId = self.$refs.tree.getCheckedNodes()[0].id;
                                self.form2.user = self.$refs.tree.getCheckedNodes()[0].label;
                            break;
                        case 3://分派
                                self.form3.user = self.userCheckName;
                                self.form3.userId = self.userCheckId;
                                console.log(self.form3.userId)
                            break;
                        case 2://移交
                                self.form4.userId = self.$refs.tree.getCheckedNodes()[0].id;
                                self.form4.user = self.$refs.tree.getCheckedNodes()[0].label;
                            break;
                        default:
                            break;
                    }
                }
                self.dialog = false;
        },
        // 取消
        cancel:function(){
            let self = this;
                self.userCheckName = "";
                self.form2.user = "";
                // self.userCheckName = "";
                // self.form2.user = "";
                self.dialog = false;
        },
        // 提交
        submit:function(){
            let self = this;
            let params = {};
                switch (self.value) {
                    case 1://转派
                            let status = true;
                                for (const key in self.form2) {
                                    if (self.form2[key] == "") {
                                        status = false;
                                    }
                                }
                                if(!status){
                                    self.$message({
                                        type: 'error',
                                        message:'请填写完整的表单!'
                                    });
                                }else{
                                    params = {
                                        dealReason:self.form2.desc,
                                        dealType:1,
                                        dealUserId:self.form2.userId,
                                        id:self.workInfo.id,
                                        mainId:self.thisObj.mainId,
                                        // requiredFinishTime:self.form2.date2
                                    }
                                    self.updateLink(params);
                                }
                        break;
                    case 3://分派
                            let k = true;
                                for (const key in self.form3) {
                                    if (self.form3[key] == "") {
                                        k = false;
                                    }
                                }
                                if(!k){
                                    self.$message({
                                        type: 'error',
                                        message:'请填写完整的表单!'
                                    });
                                }else{
                                    params = {
                                        dealReason:self.form3.desc,
                                        dealType:3,
                                        dealUserIdList:self.form3.userId,
                                        id:self.workInfo.id,
                                        mainId:self.thisObj.mainId,
                                        requiredFinishTime:self.form3.date2
                                    }
                                    self.updateLink(params);
                                }
                        break;
                    case 2://移交
                            let y = true;
                                for (const key in self.form4) {
                                    if (self.form4[key] == "") {
                                        y = false;
                                    }
                                }
                                if(!y){
                                    self.$message({
                                        type: 'error',
                                        message:'请填写完整的表单!'
                                    });
                                }else{
                                    params = {
                                        dealReason:self.form4.desc,
                                        dealType:2,
                                        dealUserId:self.form4.userId,
                                        id:self.workInfo.id,
                                        mainId:self.thisObj.mainId,
                                        parentId:self.thisObj.parentId||0
                                    }
                                    self.updateLink(params);
                                }
                        break;
                    case 6://回复
                                if(self.form5.desc == ""){
                                    self.$message({
                                        type: 'error',
                                        message:'请填写回复意见!'
                                    });
                                }else{
                                    params = {
                                        dealReason:self.form5.desc,
                                        dealType:6,
                                        dealTaskReplyNum:self.thisObj.dealTaskReplyNum || 0,
                                        parentId:self.thisObj.parentId,
                                        id:self.workInfo.id,
                                    }
                                    self.updateLink(params);
                                }
                        break;
                    case 7://归档
                        break;
                    default:
                        break;
                }
        },
        // 提交
        updateLink:function(data){
            let self = this;
                updateLink(data).then(res=>{
                    if(res.data.code == 1){
                        self.$message({
                            type: 'success',
                            message:res.data.msg
                        });
                        self.intData();
                    }
                })
        },
        // 初始化
        intData:function(){
            let self = this;
                Object.assign(self.$data, self.$options.data())
                self.basicInfo();
        },
        // 查询工单基本信息
        basicInfo:function(){
@@ -471,13 +746,15 @@
                basicInfo({mainId:31}).then((res)=>{
                    if(res.data.code == 1){
                        let resdata = res.data.data;
                            self.workInfo.status = STATUS[resdata.status];
                            self.workInfo.status = resdata.status;
                            self.workInfo.statusName = STATUS[resdata.status];
                            self.workInfo.title = resdata.title;//标题
                            self.workInfo.orderId = resdata.orderId;//工单编号
                            self.workInfo.createTime = resdata.createTime;//工单生成时间
                            self.workInfo.alarmTime = resdata.workflowAlarm.alarmTime;//告警开始时间
                            self.workInfo.alarmLevel = resdata.workflowAlarm.alarmLevel;//告警等级
                            self.workInfo.taskDesc = resdata.taskDesc;//告警描述
                            self.workInfo.taskDesc = resdata.taskDesc;//告警描述type
                            self.workInfo.type = resdata.type;//告警描述
                            console.log(resdata)
                            // 倒计时
                            self.time = setInterval(function(){self.showTime()},1000);
@@ -486,14 +763,50 @@
                            // 当前包机组ID、名称
                            self.workInfo.stationId = resdata.workflowAlarm.stationId;
                            self.workInfo.stationName = resdata.workflowAlarm.stationName;
                            // self.time;
                            // id
                            self.workInfo.id = resdata.id;
                            let listArr = [];
                            if(resdata.linkList.length>0){
                                resdata.linkList.forEach(item => {
                                    if(item.status == 0 || item.status == 3 || item.status == 4 ){
                                        listArr.push(item);
                                    }
                                });
                            }
                            self.tableData = listArr;
                            // 查询处理动作
                            self.actionTypeList4Role(resdata.status,resdata.type);
                    }
                }).catch((err)=>{
                })
        },
        // 查询处理动作
        actionTypeList4Role:function(status,type){
            let self = this;
            let arr = [1,2,3,6,7];
            let arrName = ['转派','移交','分派','回复','处理并归档']
            let data = {
                    status:status,
                    type:type
                }
                actionTypeList4Role(data).then((res)=>{
                    if(res.data.code == 1){
                        let resdata = res.data.data;
                        if(resdata.length>0){
                            resdata.forEach(item => {
                                arr.forEach(element => {
                                    if(item.actionType == element){
                                    }
                                });
                            });
                        }
                        console.log(res)
                    }
                })
        },
        // 倒计时
        checkTime:function (i){
            if(i<10)
@@ -529,6 +842,11 @@
}
</script>
<style scoped>
/* element */
/deep/.has-gutter /deep/.el-checkbox{
    display:none !important
}
/*  */
.main{
    height: 100%;
    padding: 10px 15px;