whyczyk
2021-08-31 ba45f770d3439d8a23b89ffdaf5b4c8dcdbfa521
维护员处理告警流程代码提交
8个文件已修改
212 ■■■■ 已修改文件
src/assets/js/api.js 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/units/function/splitString.js 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/v-upload.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/alarm-details.vue 122 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/alarm-handle.vue 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/index.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/login.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/api.js
@@ -25,12 +25,23 @@
}
/**
 * 开始处理更新状态
 * 查询订单当前最新状态
 */
export const updateWorkAlarm = (data) => {
    return axios({
        method: "post",
        url: `UserWorkAction!updateWorkAlarm`,
        data: 'json=' + JSON.stringify(data)
    })
}
/**
 * 开始处理更新状态
 */
export const searchStatusById = (data) => {
    return axios({
        method: "post",
        url: `UserWorkAction!searchStatusById`,
        data: 'json=' + JSON.stringify(data)
    })
}
@@ -50,12 +61,12 @@
}
/**
 * 添加告警处理
 * 更新告警处理
 */
export const addUserWork = (data) => {
export const updateUserWork = (data) => {
    return axios({
        method: "post",
        url: `UserWorkAction!addUserWork`,
        url: `UserWorkAction!updateUserWork`,
        data: 'json=' + JSON.stringify(data)
    })
}
src/assets/units/function/splitString.js
@@ -1,5 +1,15 @@
function splitString(str) {
    if (str.length == 0) return []
    else return str.split(',')
    if (str) {
        if (str.length == 0) {
            return []
        } else {
            if (str.indexOf(',') != -1) {
                return str
            } else {
                return str.split(',')
            }
        }
    }
}
export default splitString
src/components/v-upload.vue
@@ -1,6 +1,6 @@
<template>
  <van-uploader :after-read="afterRead" v-model="getFileList" accept="image/png, image/jpeg"
    :max-size="10 * 1024 * 1024" @oversize="oversize" :disabled="disabled" />
    :max-size="10 * 1024 * 1024" @oversize="oversize" :disabled="disabled" :readonly="readonly" />
</template>
<script>
@@ -18,6 +18,10 @@
        type: Boolean,
        default: false
      },
      readonly: {
        type: Boolean,
        default: false
      },
      afterOrBefore: {
        type: String,
        default: 'before'
src/main.js
@@ -37,6 +37,7 @@
  Form,
  Picker,
  Empty,
  ImagePreview
} from 'vant';
import App from './App.vue'
@@ -48,7 +49,7 @@
Vue.config.productionTip = false
Vue.use(Toast).use(Notify).use(Picker).use(Form).use(Image).use(Dialog).use(Tabbar).use(TabbarItem).use(CellGroup).use(Cell).use(Icon).use(Button).use(NavBar).use(Grid).use(GridItem).use(Row).use(Col).use(Collapse).use(CollapseItem).use(Steps).use(Step).use(Divider).use(Switch).use(Tag).use(Search).use(Field).use(Uploader).use(Popup).use(CheckboxGroup).use(Checkbox).use(PullRefresh).use(ActionSheet).use(List).use(Tab).use(Tabs).use(Empty);
Vue.use(Toast).use(Notify).use(Picker).use(Form).use(Image).use(Dialog).use(Tabbar).use(TabbarItem).use(CellGroup).use(Cell).use(Icon).use(Button).use(NavBar).use(Grid).use(GridItem).use(Row).use(Col).use(Collapse).use(CollapseItem).use(Steps).use(Step).use(Divider).use(Switch).use(Tag).use(Search).use(Field).use(Uploader).use(Popup).use(CheckboxGroup).use(Checkbox).use(PullRefresh).use(ActionSheet).use(List).use(Tab).use(Tabs).use(Empty).use(ImagePreview);
Vue.prototype.$notify = Notify;
Vue.prototype.$dialog = Dialog;
src/pages/alarm-details.vue
@@ -56,37 +56,112 @@
          <div class="label">
            处理状态:
          </div>
          <div class="text" v-if="alarmInfo.status==2">
          <div class="text" v-if="alarmInfo.status==2&&stepsActive==0" style="color: #eac406;">
            处理中
          </div>
          <div class="text" v-else-if="alarmInfo.status==3">
            已处理
          <div class="text" v-else-if="alarmInfo.status==2&&stepsActive==1" style="color: #eac406;">
            待审核
          </div>
          <div class="text" v-else>
          <div class="text" v-else-if="alarmInfo.status==3" style="color: #07c160;">
            已完成
          </div>
          <div class="text" v-else style="color: #4B88F9;">
            待处理
          </div>
        </div>
      </div>
      <div class="subBtn" @click="startHandle" v-if="alarmInfo.status==1">开始处理</div>
      <div class="card" v-if="alarmInfo.status==2">
        <div class="commonTitle cardTitle">
          订单状态
        </div>
        <van-steps :active="stepsActive">
          <van-step>处理中</van-step>
          <van-step>待审核</van-step>
          <van-step>已完成</van-step>
        </van-steps>
      </div>
      <div class="subBtn" @click="toPage('edit')" v-if="alarmInfo.status==2">继续处理</div>
      <div class="subBtn" @click="toPage('edit')" v-if="alarmInfo.status==2&&stepsActive==0">继续处理</div>
      <div class="card" v-else-if="alarmInfo.status==2&&stepsActive==1||alarmInfo.status==2&&stepsActive==2">
        <div class="commonTitle cardTitle">
          告警处理
    </div>
        <div class="commonTitle">
          <div class="label">
            问题描述:
          </div>
          <div class="text">
            {{handleInfo.description}}
          </div>
        </div>
        <div class="commonTitle">
          <div class="label">
            处理前照片:
          </div>
          <div class="text">
            <div class="van-uploader__wrapper"
              v-if="handleInfo.imageBefore&&handleInfo.imageBefore.split(',').length>0">
              <div class="van-uploader__preview" v-for="(item,i) in handleInfo.imageBefore.split(',')" :key="i"
                @click="toShowImgpreview(handleInfo.imageBefore.split(','))">
                <div class="van-image van-uploader__preview-image">
                  <img :src="item" class="van-image__img" style="object-fit: cover;">
                </div>
              </div>
            </div>
          </div>
        </div>
        <div class="commonTitle">
          <div class="label">
            处理方法:
          </div>
          <div class="text">
            {{handleInfo.workWay}}
          </div>
        </div>
        <div class="commonTitle">
          <div class="label">
            处理后照片:
          </div>
          <div class="text">
            <div class="van-uploader__wrapper" v-if="handleInfo.imageAfter&&handleInfo.imageAfter.split(',').length>0">
              <div class="van-uploader__preview" v-for="(item,i) in handleInfo.imageAfter.split(',')" :key="i"
                @click="toShowImgpreview(handleInfo.imageAfter.split(','))">
                <div class="van-image van-uploader__preview-image">
                  <img :src="item" class="van-image__img" style="object-fit: cover;">
                </div>
              </div>
            </div>
          </div>
        </div>
        <div class="commonTitle">
          <div class="label">
            意见建议:
          </div>
          <div class="text">
            {{handleInfo.workSuggest}}
          </div>
        </div>
      </div>
    </div>
    <van-image-preview v-model="showImgPreview" :images="ImgPreviewList">
    </van-image-preview>
  </div>
</template>
<script>
  import {
    updateWorkAlarm
    updateWorkAlarm,
    searchStatusById
  } from '@/assets/js/api'
  import vUpload from '@/components/v-upload.vue'
  export default {
    components: {
      vUpload
    },
    data() {
      return {
        showImgPreview: false,
        ImgPreviewList: [],
        stepsActive: 0,
        alarmInfo: {
          id: 0,
@@ -111,11 +186,13 @@
            alarmname: "",
            alarmtype: ""
          }
        }
        },
        handleInfo: {}
      }
    },
    mounted() {
      this.alarmInfo = JSON.parse(this.$route.query.alarmData);
      this.loadStatus()
    },
    methods: {
      toPage(type) {
@@ -126,6 +203,29 @@
            type: type
          }
        })
      },
      //点击图片显示图片预览层
      toShowImgpreview(list) {
        this.ImgPreviewList = list;
        this.showImgPreview = true;
      },
      //查询订单当前最新状态
      loadStatus() {
        let postData = {
          id: this.alarmInfo.id
        }
        searchStatusById(postData).then((res) => {
          let resData = JSON.parse(res.data.result)
          if (resData.code == 1) {
            this.alarmInfo.status = resData.data.status;
            if (resData.data.userWorkList.length > 0) {
              this.handleInfo = resData.data.userWorkList[0];
              this.stepsActive = this.handleInfo.checkStatus
            }
          }
        }).catch((err) => {
          console.log(err)
        });
      },
      //开始处理
      startHandle() {
@@ -148,7 +248,7 @@
<style scoped>
  .alarm-details {
    width: 100%;
    height: 100%;
    min-height: 100%;
    background: #F5F5F5;
  }
@@ -175,7 +275,6 @@
    border-bottom: 1px solid #EEEEEE;
    margin-bottom: 22px;
    display: flex;
    align-items: center;
  }
  .cardTitle {
@@ -185,14 +284,11 @@
  .commonTitle .label {
    line-height: 40px;
    display: inline-block;
    width: 150px;
    width: 170px;
  }
  .commonTitle .text {
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .subBtn {
src/pages/alarm-handle.vue
@@ -4,7 +4,7 @@
    </van-nav-bar>
    <div class="handleCon">
      <div class="textareaCon">
        <van-field v-model="alarmInfo.describe" rows="2" autosize label="告警描述" type="textarea" placeholder="请输入告警描述…"
        <van-field v-model="alarmInfo.description" rows="2" autosize label="告警描述" type="textarea" placeholder="请输入告警描述…"
          show-word-limit />
        <v-upload :value="alarmInfo.imageBefore" @valChange="beforeUploadChange" afterOrBefore="before" class="upload">
        </v-upload>
@@ -20,8 +20,8 @@
          show-word-limit />
      </div>
      <div class="btnCon">
        <div class="subBtn" @click="submit">保存</div>
        <div class="subBtn">提交</div>
        <div class="subBtn" @click="submit(0)">保存</div>
        <div class="subBtn" @click="submit(1)">提交</div>
      </div>
    </div>
  </div>
@@ -30,7 +30,7 @@
<script>
  import vUpload from '@/components/v-upload.vue'
  import {
    addUserWork,
    updateUserWork,
    serchByCondition
  } from '@/assets/js/api'
  export default {
@@ -40,14 +40,15 @@
    data() {
      return {
        alarmInfo: {
          description: '',
          checkStatus: 0,
          createTime: "",
          endTime: "",
          createTime: null,
          endTime: null,
          imageAfter: "",
          imageBefore: "",
          managerId: 0,
          note: "",
          userId: 0,
          userId: sessionStorage.getItem('userId'),
          workId: 0,
          workSuggest: "",
          workWay: "",
@@ -84,8 +85,27 @@
        });
      },
      //保存提交
      submit() {
        addUserWork(this.alarmInfo).then((res) => {
      submit(checkStatus) {
        this.alarmInfo.checkStatus = checkStatus;
        let endTime = this.$units.timeFormat(new Date().getTime, 'yyyy-mm-dd hh:MM:ss');
        this.alarmInfo.endTime = endTime;
        if (this.alarmInfo.description == '') {
          this.$toast('请输入告警描述…')
          return
        }
        if (this.alarmInfo.imageBefore == '') {
          this.$toast('请上传处理前照片…')
          return
        }
        if (this.alarmInfo.workWay == '') {
          this.$toast('请输入处理方法…')
          return
        }
        if (this.alarmInfo.imageAfter == '') {
          this.$toast('请上传处理后照片…')
          return
        }
        updateUserWork(this.alarmInfo).then((res) => {
          let resData = JSON.parse(res.data.result)
          if (resData.code == 1) {
            this.$toast(resData.msg)
src/pages/index.vue
@@ -100,7 +100,6 @@
        searchAllByUserId(postData).then((res) => {
          let resData = JSON.parse(res.data.result).data
          tab.loading = false;
          console.log(resData)
          if (resData && resData.data && resData.data.length > 0) {
            tab.listData.push(...resData.data)
          }
src/pages/login.vue
@@ -45,10 +45,12 @@
          return
        }
        // 开启等待框
        this.$toast.loading({
          message: '登录中...',
          duration: 0
        })
        login(self.userName, self.password).then(res => {
          // 对结果进行处理
          console.log(res)
          self.handleLogin(res)
        }).catch(error => {
          // 关闭等待
@@ -63,9 +65,10 @@
        // this.loading = false;
        let rs = JSON.parse(res.data.result);
        if (rs.code == 1) {
          self.$toast("登录成功");
          self.$toast("登录成功!");
          sessionStorage.setItem('username', self.username);
          sessionStorage.setItem('userId', rs.data);
          sessionStorage.setItem('userPower', rs.data2);
          self.$router.push({
            path: '/index'
          })