Kaynağa Gözat

Merge branch 'http_test' of git.xiaojukeji.com:jacklijiajia/thoth-frontend into http_test

qinzhipeng_v@didiglobal.com 4 yıl önce
ebeveyn
işleme
d4024aacf9

+ 0 - 56
src/views/problemSystem/details/dropdown.vue

@@ -1,56 +0,0 @@
-<template>
-  <el-dropdown
-    placement="bottom"
-    @command="clickCommand"
-  >
-    <el-button
-      class="el-dropdown-link drop_down"
-      style="cursor: pointer;"
-      :size="size"
-    >
-      <span class="el-dropdown-link">{{ value }}</span>
-      <i class="el-icon-arrow-down el-icon--right" />
-    </el-button>
-    <el-dropdown-menu slot="dropdown">
-      <el-dropdown-item
-        v-for="(item,index) in options"
-        :key="index"
-        :command="item"
-      >{{ item.name }}</el-dropdown-item>
-    </el-dropdown-menu>
-  </el-dropdown>
-</template>
-
-<script>
-export default {
-  name: 'BugDropDown',
-  props: {
-    value: {
-      type: String,
-      default: null
-    },
-    options: {
-      type: Array,
-      default() {
-        return []
-      }
-    },
-    size: {
-      type: String,
-      default: 'medium'
-    }
-  },
-  methods: {
-    getName() {
-
-    },
-    clickCommand(item) {
-      this.$emit('command', item)
-    }
-  }
-}
-</script>
-
-<style>
-
-</style>

+ 0 - 41
src/views/problemSystem/details/fackClickOutSide.js

@@ -1,41 +0,0 @@
-let lock = true
-let el = null
-const MousedownEvent = new Event('mousedown', { bubbles: true })
-const MouseupEvent = new Event('mouseup', { bubbles: true })
-const fakeClickOutSide = () => {
-  document.dispatchEvent(MousedownEvent)
-  document.dispatchEvent(MouseupEvent)
-  lock = true // console.log('dispatchEvent');
-}
-const mousedownHandle = e => {
-  const classList = e.target.classList
-  if (classList.contains('el-select__caret') || classList.contains('el-input__inner')) {
-    lock = false
-    return
-  }
-  if (lock) return
-  fakeClickOutSide()
-}
-const mousewheelHandle = e => {
-  if (lock || e.target.classList.contains('el-select-dropdown__item') || e.target.parentNode.classList.contains('el-select-dropdown__item')) return
-  fakeClickOutSide()
-}
-const eventListener = (type) => {
-  el[type + 'EventListener']('mousedown', mousedownHandle)
-  window[type + 'EventListener']('mousewheel', mousewheelHandle)
-  window[type + 'EventListener']('DOMMouseScroll', mousewheelHandle) // fireFox 3.5+
-}
-export default {
-  mounted() {
-    el = this.$root.$el
-    el.addFakeClickOutSideEventCount = el.addFakeClickOutSideEventCount || 0;
-    (!el.addFakeClickOutSideEventCount) && this.$nextTick(() => {
-      eventListener('add')
-    })
-    el.addFakeClickOutSideEventCount += 1
-  },
-  destroyed() {
-    eventListener('remove')
-    el.addFakeClickOutSideEventCount -= 1
-  }
-}

+ 0 - 196
src/views/problemSystem/details/filterList.vue

@@ -1,196 +0,0 @@
-<template>
-  <div v-if="show" class="filterList">
-    <el-table
-      :data="filterList"
-      style="width: 100%"
-      height="288"
-      border
-      :header-cell-style="{background:'#EBEEF5'}"
-    >
-      <el-table-column
-        fixed
-        prop="name"
-        label="过滤器名称"
-      >
-        <template slot-scope="scope">
-          <el-row>
-            <el-col v-show="scope.row.showEdit" :span="22">
-              <input
-                :ref="'input'+scope.row.index"
-                v-model="filterList[scope.row.index].name"
-                v-focus="focusState"
-                autofocus
-                placeholder="请输入过滤器名称"
-                @keyup.enter="updateFilter(scope.row,true)"
-                @blur="updateFilter(scope.row)"
-              >
-              <i class="el-icon-edit" @click.stop="cancel(scope.row)" />
-            </el-col>
-            <el-col v-if="!scope.row.showEdit" :span="22">
-              <span class="item-name">{{ scope.row.name }}</span>
-              <i class="el-icon-edit" @click.stop="editFilter(scope.row)" />
-            </el-col>
-          </el-row>
-        </template>
-      </el-table-column>
-      <el-table-column
-        fixed="right"
-        align="center"
-        label="操作"
-        width="80"
-      >
-        <template slot-scope="scope">
-          <i class="el-icon-delete" @click="deleteFilter(scope.row)" />
-        </template>
-      </el-table-column>
-    </el-table>
-    <el-col :span="24">
-      <div align="right">
-        <el-pagination
-          :page-sizes="[5, 10, 15, total]"
-          :current-page="curIndex"
-          :page-size="pageSize"
-          background
-          layout="total, prev, pager, next, jumper"
-          :total="total"
-          @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
-        />
-      </div>
-    </el-col>
-  </div>
-</template>
-<script>
-import {
-  getFilterList,
-  deleteFilter,
-  updateFilter
-} from '@/api/defectManage'
-import { deepClone } from '@/utils/global'
-export default {
-  directives: {
-    focus: {
-      update: function(el, { value }) {
-        if (value) {
-          el.focus()
-        }
-      }
-    }
-  },
-  props: {
-    showFilter: {
-      type: Boolean,
-      default: false,
-      required: true
-    }
-  },
-  data() {
-    return {
-      focusState: false,
-      show: this.showFilter,
-      filterList: [],
-      copyFilterList: [],
-      total: 0,
-      curIndex: 1,
-      pageSize: 5,
-      showEdit: false,
-      filterName: '', // 当前修改的过滤器名称
-      isControl: NaN
-    }
-  },
-  watch: {
-    showFilter(newV) {
-      this.show = newV
-      this.getFilterList()
-    }
-  },
-  created() {
-    this.getFilterList()
-  },
-  methods: {
-    async getFilterList() { // 获取过滤器列表
-      const params = {
-        pageSize: this.pageSize,
-        curIndex: this.curIndex,
-        bizId: Number(localStorage.getItem('bizId'))
-      }
-      const res = await getFilterList(params)
-      if (res.code === 200) {
-        this.total = res.total
-        this.filterList = res.data.map((item, key) => {
-          item.showEdit = false
-          item.index = key
-          return item
-        })
-        this.copyFilterList = deepClone(this.filterList)
-      }
-    },
-    editFilter(e) {
-      this.isControl = e.index
-      this.focusState = true
-      this.$set(this.filterList[e.index], 'showEdit', true)
-    },
-    cancel(e) {
-      this.$set(this.filterList[e.index], 'showEdit', false)
-      this.$set(this.filterList[e.index], 'name', this.copyFilterList[e.index].name)
-    },
-    async deleteFilter(item) {
-      this.confirmDelete(item.id)
-    },
-    async confirmDelete(id) {
-      const res = await deleteFilter(id)
-      this.$emit('deleteFilter')
-      if (res.code === 200) {
-        this.$message({ showClose: true, message: '删除成功', type: 'success' })
-      }
-      this.getFilterList()
-    },
-    async updateFilter(e, keyup = null) {
-      if (this.isControl !== e.index) { return false }
-      if (keyup) {
-        this.$set(this.filterList[e.index], 'showEdit', false)
-        return false
-      }
-      if (e.name === null || e.name.replace(/\s+/g, '') === '') {
-        this.$message({
-          showClose: true,
-          message: '请填写名称',
-          type: 'error'
-        })
-        this.$set(this.filterList[e.index], 'name', this.copyFilterList[e.index].name)
-        return false
-      }
-      const res = await updateFilter({ id: e.id, name: e.name })
-      if (res.code === 200) {
-        this.$message({
-          showClose: true,
-          message: '修改名称成功',
-          type: 'success'
-        })
-        this.getFilterList()
-      }
-      this.$set(this.filterList[e.index], 'showEdit', false)
-      this.$emit('deleteFilter')
-    },
-    handleSizeChange(e) {
-      this.pageSize = e
-    },
-    handleCurrentChange(e) {
-      this.curIndex = e
-      this.getFilterList()
-    }
-  }
-}
-</script>
-<style scoped lang="scss">
-.el-icon-edit {
-  margin-left: 10px;
-}
-i {
-  cursor: pointer;
-}
-input {
-  outline: none;
-  color: #606266;
-}
-</style>

+ 0 - 1477
src/views/problemSystem/details/index.vue

@@ -1,1477 +0,0 @@
-<template>
-  <div v-loading="loading.drawer" class="bug-detail">
-    <el-container
-      v-loading.fullscreen.lock="loading.fullscreen"
-      :style="type=='page'?{'background-color': '#F2F3F6','padding': '1%'}:{'background-color': '#F56C6C','overflow': 'auto','height':height}"
-      class="bug_manage_container scop"
-    >
-      <el-header height="0" />
-      <el-container ref="box" :style="type=='page'?{'margin-top':'10px'}:{}" class="bug_manage" :direction="type == 'page'?'horizontal':'vertical'">
-        <el-aside :style="type=='page'?{'margin-right':'10px','width':'70%'}:{'width':'100%'}">
-          <el-main v-loading="loading.details" class="layout_main bug_manage_bug_details" :style="type=='page'?{'padding': '20px 30px'}:{'padding-left': '30px','padding-right': '30px'}">
-            <div class="module_title">
-              <div class="module_title__sign" />
-              <div class="module_title__caption">问题详情</div>
-              <div style="display;margin-left:78%;" @mouseover="iconName = 'float_反馈_icon_close_蓝色'" @mouseleave="iconName = 'float_反馈_icon_close'" @mousedown="closeDrawer();">
-                <el-button size="medium" type="text" style="margin-top:-5px;">
-                  <svg-icon :icon-class="iconName" />
-                </el-button>
-              </div>
-            </div>
-
-            <el-divider v-if="type !== 'page'" />
-            <div style="font-size:20px;margin-top:3%">
-              {{ bug.bizName }}
-            </div>
-            <div style="margin-left:70%;margin-top:-3%">
-              <el-button size="mini">待处理</el-button>
-              <el-button type="primary" size="mini">复盘</el-button>
-            </div>
-
-            <el-container width="100%" style="margin-top:2%">
-              <el-aside width="49%" style="margin-right: 2%">
-                <el-form label-width="30%" label-position="left" label-suffix=":">
-
-                  <el-form-item label="问题来源">
-                    <el-select v-model="bug.taskId" filterable clearable @change="bugUpdate(bug,'details')">
-                      <el-option
-                        v-for="item in taskEnumList"
-                        :key="item.id"
-                        class="test123"
-                        :label="item.name"
-                        :value="item.id"
-                      />
-                    </el-select>
-                  </el-form-item>
-                  <el-form-item label="紧急程度">
-                    <el-select v-model="bug.priorityLevel" @change="bugUpdate(bug,'details')">
-                      <el-option
-                        v-for="item in enums.priorityLevelEnumList"
-                        :key="item.code"
-                        :label="item.name"
-                        :value="item.name"
-                      />
-                    </el-select>
-                  </el-form-item>
-                  <el-form-item label="提报人">
-                    <div style="padding-left: 15px;color:  #666666; font-weight: 500">{{ bug.bizName }}</div>
-                  </el-form-item>
-                  <el-form-item label="责任人">
-                    <el-select v-model="bug.discoveryStage" @change="bugUpdate(bug,'details')">
-                      <el-option
-                        v-for="item in enums.bugStageEnumList"
-                        :key="item.code"
-                        :label="item.name"
-                        :value="item.code"
-                      />
-                    </el-select>
-                  </el-form-item>
-                  <el-form-item label="问题级别">
-                    <el-select v-model="bug.theBugType" @change="bugUpdate(bug,'details')">
-                      <el-option
-                        v-for="item in enums.theBugTypeEnumList"
-                        :key="item.code"
-                        :label="item.name"
-                        :value="item.code"
-                      />
-                    </el-select>
-                  </el-form-item>
-                </el-form>
-              </el-aside>
-              <el-aside width="49%">
-                <el-form label-width="30%" label-position="left" label-suffix=":">
-                  <el-form-item label="问题类型">
-                    <el-select v-model="bug.sysType" @change="bugUpdate(bug,'details')">
-                      <el-option
-                        v-for="item in enums.sysTypeEnumList"
-                        :key="item.code"
-                        :label="item.name"
-                        :value="item.code"
-                      />
-                    </el-select>
-                  </el-form-item>
-                  <el-form-item label="所属业务">
-                    <el-select v-model="bug.priority" @change="bugUpdate(bug,'details')">
-                      <el-option
-                        v-for="item in enums.priorityEnumList"
-                        :key="item.code"
-                        :label="item.name"
-                        :value="item.code"
-                      />
-                    </el-select>
-                  </el-form-item>
-                  <el-form-item label="处理人">
-                    <el-cascader v-model="bug.moduleIds" class="current" collapse-tags :props="props" :options="business_platform_Modular" placeholder="请选择" @change="bugUpdate(bug,'details')" @click.native="getBusinessLinePlatformModule" />
-                  </el-form-item>
-                  <el-form-item label="完成时间">
-                    <el-select v-model="bug.discoveryMeth" @change="bugUpdate(bug,'details')">
-                      <el-option
-                        v-for="item in enums.discoveryMethEnumList"
-                        :key="item.code"
-                        :label="item.name"
-                        :value="item.code"
-                      />
-                    </el-select>
-                  </el-form-item>
-
-                </el-form>
-              </el-aside>
-            </el-container>
-          </el-main>
-        </el-aside>
-        <el-aside :width="type=='page'?'29.2%':'100%'" />
-      </el-container>
-      <el-container :style="type=='page'?{'width':'70%'}:{'width':'100%'}" direction="vertical">
-        <el-main v-loading="loading.describe" :style="type=='page'?{'padding': '20px 30px','margin-top': '10px'}:{'padding-left':'30px'}" class="layout_main">
-          <div class="module_title">
-            <div class="module_title__sign" />
-            <div class="module_title__caption">描述</div>
-          </div>
-          <el-divider v-if="type !== 'page'" />
-          <div
-            v-if="bugDescribeNoHtml.length == 0 && describeEditorVisible == false"
-            style="width: 100%;height: 300px;text-align: center;line-height: 300px"
-          >
-            <span class="bug_describe" @click="describeEditorVisible = true;">点击添加描述</span>
-          </div>
-          <el-tooltip
-            v-if="bugDescribeNoHtml.length > 0 && describeEditorVisible == false"
-            effect="dark"
-            content="点击编辑"
-            placement="top"
-          >
-            <div class="bug_describe_content" @click="describeEditorVisible = true;">
-              <div style="font-size:14px" v-html="bug.bugDescribe" />
-            </div>
-          </el-tooltip>
-          <div v-show="describeEditorVisible" style="margin-top:15px">
-            <div id="wage" class="toolbar" />
-            <div id="wage1" class="text" style="font-size:14px" @blur="describeConfirm()" />
-            <div style="margin-top:40px;float: right">
-              <el-button @click="describeCancel()">取 消</el-button>
-              <el-button type="primary" @click="describeConfirm()">确 认</el-button>
-            </div>
-          </div>
-        </el-main>
-
-        <el-main :style="type=='page'?{'padding': '20px 30px','margin-top': '10px'}:{'padding-left':'30px'}" class="layout_main">
-          <div class="module_title">
-            <div class="module_title__sign" />
-            <div class="module_title__caption">评论</div>
-          </div>
-          <el-divider v-if="type !== 'page'" /><br>
-          <div>
-            <div v-for="(item,index) in comments" :key="index" class="animated bounceInRight">
-              <div
-                style="font-size:14px;color:#333B4A;display: inline-block;"
-              >{{ item.commentInfo.name }}</div>
-              <div
-                style="margin-left:20px;display: inline-block;color: #9B9B9B;font-size:12px"
-              >{{ item.commentInfo.gmtCreater }}</div>
-              <p
-                style="font-size:14px;color:#333B4A;margin-top: 10px;white-space: pre-line;"
-              >{{ item.commentInfo.content }}</p>
-              <br>
-            </div>
-            <el-input
-              v-model="commentContent"
-              type="textarea"
-              placeholder="请输入评论内容"
-              maxlength="1000"
-              show-word-limit
-              :autosize="{ minRows: 3, maxRows: 5}"
-              style="margin-bottom: 2%"
-            />
-            <el-button type="primary" size="small" style="float: right" @click="addComment">发表评论</el-button>
-          </div>
-        </el-main>
-
-        <el-main :style="type=='page'?{'padding': '20px 30px','margin-top': '10px'}:{'padding-left':'30px'}" class="layout_main">
-          <div class="module_title">
-            <div class="module_title__sign" />
-            <div class="module_title__caption">记录</div>
-          </div>
-          <el-divider v-if="type !== 'page'" /><br>
-          <div>
-            <div v-for="(item,index) in comments" :key="index" class="animated bounceInRight">
-
-              <div style="font-size:14px;color:#333B4A;margin-top: 10px;white-space: pre-line;">
-                {{ item.commentInfo.gmtCreater }}&nbsp;&nbsp;&nbsp;{{ item.commentInfo.name }}&nbsp;&nbsp;{{ item.commentInfo.name }}
-                <br>
-              </div>
-              <div style="margin-top:5%" />
-            </div>
-          </div></el-main>
-      </el-container>
-      <!-- 弹窗 -->
-      <el-dialog
-        v-if="statusDialogVisible"
-        :visible.sync="statusDialogVisible"
-        width="33%"
-        class="bug_manage_dialog"
-        :append-to-body="true"
-        :close-on-click-modal="false"
-      >
-        <template v-slot:title>
-          <div style="display:flex;align-items: center;">
-            <div style="width:4px;height:15px;background:#409EFF;border-radius:1px;" />
-            <div
-              style="width:83px;height:18px;font-size:16px;font-family:MicrosoftYaHei;color:rgba(51,59,74,1);margin-left:6px"
-            >{{ statusDialogTitle }}</div>
-          </div>
-        </template>
-        <el-form
-          v-if="statusDialogTitle !== '删除确认'"
-          label-width="110px"
-          label-position="left"
-          :model="statusDialogForm"
-          :rules="rules"
-        >
-          <el-form-item
-            v-if="statusDialogTitle === '待测试' || statusDialogTitle === '已完成'"
-            label="缺陷原因"
-            prop="bugReason"
-          >
-            <el-select v-model="statusDialogForm.bugReason" style="width: 100%">
-              <el-option
-                v-for="item in enums.bugReasonEnumList"
-                :key="item.code"
-                :label="item.name"
-                :value="item.code"
-              />
-            </el-select>
-          </el-form-item>
-          <el-form-item
-            v-if="statusDialogTitle === '待测试'"
-            label="修复方式"
-            class="bug_manage_dialog bug_manage_dialog_fixMethod"
-          >
-            <el-input
-              v-model="statusDialogForm.reasonOrDesc"
-              type="textarea"
-              placeholder="请输入具体原因和修复方式"
-              maxlength="300"
-              show-word-limit
-              rows="4"
-            />
-          </el-form-item>
-          <el-form-item
-            v-if="statusDialogTitle === '已完成'"
-            label="修复结果"
-            prop="repairResult"
-            class="bug_manage_dialog"
-          >
-            <el-select
-              v-model="statusDialogForm.repairResult"
-              style="width: 100%"
-            >
-              <el-option
-                v-for="item in enums.repairResultEnumList"
-                :key="item.code"
-                :label="item.name"
-                :value="item.code"
-              />
-            </el-select>
-          </el-form-item>
-          <el-form-item v-if="statusDialogTitle === 'Reopen'" label="Reopen原因" prop="reasonOrDesc">
-            <el-input
-              v-model="statusDialogForm.reasonOrDesc"
-              type="textarea"
-              placeholder="请输入Reopen"
-              maxlength="300"
-              show-word-limit
-              rows="4"
-            />
-          </el-form-item>
-        </el-form>
-        <div v-else style="text-align:center;line-height: 150px">是否要删除当前缺陷?</div>
-        <template v-slot:footer>
-          <el-button @click="statusDialogCancel">取 消</el-button>
-          <el-button type="primary" @click="statusDialogConfirm">确 定</el-button>
-        </template>
-      </el-dialog>
-      <createdBug v-if="modalShow" ref="createdBug" @father="father" />
-      <normal-dialog
-        :show-dialog="showCopyFile"
-        :title="'上传截图'"
-        :width="'40%'"
-        :submit-button="'上传'"
-        :top="'5vh'"
-        @confirm="confirmUpload()"
-        @cancel="showCopyFile=false"
-      >
-        <div class="file-dialog">
-          <el-form ref="imageForm" label-width="20%" :rules="imageRules" :model="imageName">
-            <el-form-item label="图片命名" prop="name">
-              <el-col style="width: 75%">
-                <el-input v-model="imageName.name" placeholder="请输入图片名称" />
-              </el-col>
-              <el-col style="width: 10%">.png</el-col>
-            </el-form-item>
-          </el-form>
-          <div class="image">
-            <div class="image-center">
-              <img :src="imageUrl" class="image-url">
-            </div>
-          </div>
-        </div>
-      </normal-dialog>
-    </el-container>
-    <el-button id="pasteUpload" type="primary" style="display: none" @click.stop="pasteUpload">upload</el-button>
-  </div>
-</template>
-
-<script>
-import fackClickOutSide from './fackClickOutSide.js'
-import E from 'wangeditor'
-// import Utils from '../../../../util.js'
-// import { settingGetTypeMap } from '@/api/taskIndex'
-import { getCommentList, addComment, getMemberInfo } from '@/api/requirement.js'
-import {
-  bugDetails,
-  bugGetEnum,
-  bugDelete,
-  bugUpdate,
-  taskListCreate,
-  releaseList,
-  settingQueryBizModuleList
-} from '@/api/defectManage.js'
-// import Dropdown from './dropdown.vue'
-import normalDialog from '@/components/dialog/normalDialog'
-import createdBug from '@/views/projectManage/bugList/file/createdBug'
-import axios from 'axios'
-import { deepClone } from '@/utils/global'
-
-document.body.onpaste = function(event) {
-  const data = (event.clipboardData || window.clipboardData)
-  const items = data.items
-  const fileList = [] // 存储文件数据
-  if (items && items.length) {
-    // 检索剪切板items
-    for (let i = 0; i < items.length; i++) {
-      // console.log(items[i].getAsFile()) // <--- 这里打印出来就就是你想要的文件
-      fileList.push(items[i].getAsFile())
-      window.uploadFiles = fileList
-    }
-    document.getElementById('pasteUpload').click()
-  }
-}
-
-export default {
-  name: 'BugDetails',
-  components: {
-    createdBug,
-    normalDialog
-  },
-  mixins: [fackClickOutSide],
-  props: {
-    id: {
-      type: String,
-      default: '0'
-    },
-    type: {
-      type: String,
-      default: 'page'
-    },
-    drawerShow: {
-      type: Boolean,
-      default: false
-    }
-  },
-  data() {
-    return {
-      modalShow: false,
-      iconName: 'float_反馈_icon_close',
-      bugNameIsFocus: false,
-      props: { multiple: true },
-      height: '700px',
-      bugDescribeNoHtml: '',
-      bugDescribe: '',
-      bugNameForm: { bugName: '' },
-      fileList: [],
-      notImageList: [], // 文件非图片数组
-      ImageList: [], // 文件图片数组
-      accessory: null,
-      dialogVisible: false,
-      dialogImageUrl: [],
-      disabled: false,
-      loading: {
-        drawer: false,
-        fullscreen: false,
-        title: false,
-        details: false,
-        userInfo: false,
-        time: false,
-        appInfo: false,
-        describe: false,
-        accessory: false
-      },
-      userInformation: localStorage.getItem('username'),
-      userNames: localStorage.getItem('realname'),
-      comments: [],
-      commentContent: '',
-      uploadDialogVisible: false,
-      uploadDialogImageUrl: '',
-      test: '测试',
-      num: 0,
-      formHeight: '',
-      formHeight1: '',
-      userLoading: false,
-      statusDialogVisible: false,
-      statusDialogTitle: '',
-      statusDialogForm: {},
-      options: [
-        { name: '测试', code: 1 },
-        { name: '测试2', code: 2 }
-      ],
-      assignerOptions: [],
-      currentHandlerOptions: [],
-      bug: {},
-      bugModel: {},
-      editor: null,
-      bugRemark: '',
-      describeEditorVisible: false,
-      enums: {},
-      taskEnumList: [],
-      appClientList: [],
-      versionList: [],
-      map: {},
-      business_platform_Modular: [], // 业务/平台/模块
-      bugNameTextareaStyle: {
-        width: '1000px',
-        position: 'relative'
-      },
-      bugNameTextareaWidth: 'auto',
-      showWordLimit: false,
-      showRule: false,
-      rules: {
-        assigner: [
-          { required: true, message: '责任人不可为空', trigger: 'change' }
-        ],
-        currentHandler: [
-          { required: true, message: '修复人不可为空', trigger: 'change' }
-        ],
-        bugName: [
-          { required: true, message: '标题不可为空', trigger: 'blur' }
-        ],
-        bugReason: [
-          { required: true, message: '请选择缺陷原因', trigger: 'change' }
-        ],
-        repairResult: [
-          { required: true, message: '请选择修复结果', trigger: 'change' }
-        ],
-        reasonOrDesc: [
-          { required: true, message: '请输入Reopen原因', trigger: 'blur' }
-        ]
-      },
-      showCopyFile: false, // 复制文件对话框
-      imageName: { name: null },
-      imageUrl: null,
-      uploadButton: this.drawerShow,
-      imageRules: {
-        name: [
-          { required: true, message: '请输入图片名称', trigger: 'blur' },
-          { min: 1, max: 50, message: '长度在 1 到 50 个字符', trigger: 'blur' }
-        ]
-      }
-    }
-  },
-  watch: {
-    statusDialogVisible(newVal, oldVal) {
-      if (!newVal) {
-        this.statusDialogForm = null
-      }
-    },
-    id(newVal, oldVal) {
-      this.bug = {}
-      this.bugModel = {}
-      this.bugNameForm = { bugName: '' }
-      this.loading.drawer = false
-      this.init()
-    },
-    drawerShow(newV, oldVal) {
-      if (newV) {
-        this.init()
-        this.uploadButton = newV
-      }
-    }
-  },
-  created() {
-    if (this.type !== 'page') {
-      var height = window.innerHeight > document.body.clientHeight ? window.innerHeight : document.body.clientHeight
-      height -= 130
-      this.height = height + 'px'
-    }
-    if (this.type === 'page' || this.type === 'drawer') {
-      this.uploadButton = true
-    }
-  },
-  mounted() {
-    this.bugGetEnum()
-    this.$nextTick(() => {
-      this.bugGet(this.id, false).then(res => {
-        this.PersonnelData()
-        this.changeWidthOnBlur()
-        releaseList().then(res => {
-          this.appClientList = res.data.appClient // 客户端
-          this.getVersionList(this.bug.appId)
-        })
-        this.RichText()
-      })
-    })
-    this.getCommentList()
-    this.getBusinessLinePlatformModule()
-    taskListCreate({ bizId: Number(localStorage.getItem('bizId')) }).then(res => {
-      this.taskEnumList = res.data // 所属任务
-    })
-  },
-  methods: {
-    closeDrawer() {
-      this.$emit('close', false)
-    },
-    init() {
-      this.formHeight = ''
-      this.formHeight1 = ''
-      this.bugGet(this.id, false).then(res => {
-        this.PersonnelData()
-        this.changeWidthOnBlur()
-        this.getCommentList()
-        releaseList().then(res => {
-          this.appClientList = res.data.appClient // 客户端
-          this.getVersionList(this.bug.appId)
-        })
-        this.editor.txt.html(this.bugDescribe === null ? '' : this.bugDescribe)
-      })
-    },
-    PersonnelData() {
-      this.assignerOptions = []
-      for (const i in this.bug.assignerList.length) {
-        this.searchUser(this.bug.assigner[i]).then(res => {
-          this.assignerOptions = res.data
-        })
-      }
-      this.currentHandlerOptions = []
-      for (const i in this.bug.currentHandlerList.length) {
-        this.searchUser(this.bug.currentHandler[i]).then(res => {
-          this.currentHandlerOptions = res.data
-        })
-      }
-    },
-    listen(event) {
-      event.preventDefault() // 阻止浏览器默认换行操作
-      return false
-    },
-    getToDetails() {
-      this.$router.push({ name: '缺陷详情', params: { id: this.id }})
-    },
-    isImage(arr) {
-      const reg = new RegExp(/.*(\.gif|\.jpeg|\.png|\.jpg|\.bmp)/i)
-      return arr.filter(item => { return !!item.url.match(reg) })
-    },
-    isNotImage(arr) {
-      const reg = new RegExp(/.*(\.gif|\.jpeg|\.png|\.jpg|\.bmp)/i)
-      return arr.filter(item => { return !item.url.match(reg) })
-    },
-    beforeUpload(file) {
-      const reg = new RegExp(/.*(zip|xlsx|txt|csv|xls|mov|mp4|m4a|avi|amr|mp3|wav|3gpp|gif|jpeg|png|jpg)/i)
-      const isUpload = file.type.match(reg)
-      if (!isUpload) {
-        this.$message({
-          message: '不支持上传此文件格式',
-          type: 'warning'
-        })
-        return false
-      }
-      const isLt200M = (file.size / 1024 / 1024) < 200
-      if (!isLt200M) {
-        this.$message({
-          message: '上传文件大小不能超过 200MB!',
-          type: 'warning'
-        })
-        return false
-      }
-    },
-    beforeRemove(file, fileList) {
-      let a = true
-      if (file && file.status === 'success') {
-        a = this.$confirm(`确定删除 ${file.name}吗?`)
-      }
-      return a
-    },
-    handleRemoveNotImage(file, fileList) {
-      this.notImageList = this.notImageList.filter(item => {
-        return item.url !== file.url
-      })
-      this.bug.accessory = JSON.stringify([...this.notImageList, ...this.ImageList])
-      this.bugUpdate(this.bug, 'accessory')
-    },
-    handleRemoveImage(file, fileList) {
-      this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(() => {
-        this.ImageList = this.ImageList.filter(item => {
-          return item.url !== file.url
-        })
-        this.bug.accessory = JSON.stringify([...this.notImageList, ...this.ImageList])
-        this.bugUpdate(this.bug, 'accessory')
-      }).catch(() => {
-        this.$message({
-          type: 'info',
-          message: '已取消删除'
-        })
-      })
-    },
-    handlePictureCardPreview(file) {
-      this.dialogImageUrl = file.url
-      this.dialogVisible = true
-    },
-    handleChange(response, file, fileList) {
-      console.log('response', response)
-      const reg = new RegExp(/.*(\.gif|\.jpeg|\.png|\.jpg|\.bmp|\.gif)/i)
-      if (!response.success) {
-        this.$message({
-          showClose: true,
-          message: response.error,
-          type: 'error'
-        })
-        this.notImageList.pop()
-        return false
-      }
-      const item = {
-        name: file.name,
-        url: 'http:' + file.response.url
-      }
-      const arr1 = deepClone(this.ImageList)
-      const arr2 = deepClone(this.notImageList)
-      item.url.match(reg) ? arr1.push(item) : arr2.push(item)
-      this.bug.accessory = JSON.stringify([...arr2, ...arr1])
-      this.$message({
-        showClose: true,
-        message: '文件上传成功',
-        type: 'success'
-      })
-      this.bugUpdate(this.bug, 'accessory')
-    },
-    errorChange() {
-      this.$message({
-        showClose: true,
-        message: '上传失败',
-        type: 'error'
-      })
-    },
-    handleDownload(file) { // 下载图片
-      const xhr = new XMLHttpRequest()
-      xhr.open('get', file.url, true)
-      xhr.responseType = 'blob'
-      xhr.onload = () => {
-        if (xhr.status === 200) {
-          this.saveAs(xhr.response, file.name)
-        }
-      }
-      xhr.send()
-    },
-    saveAs(data, name) { // 保存图片
-      const urlObject = window.URL || window.webkitURL || window
-      const file = new Blob([data])
-      const a = document.createElement('a')
-      a.href = urlObject.createObjectURL(file)
-      a.download = name
-      a.click()
-    },
-    getCommentList() {
-      getCommentList({ type: 2, joinId: this.id }).then(res => {
-        this.comments = res.data
-        this.commentContent = ''
-      })
-    },
-    addComment() {
-      if (!this.commentContent) {
-        this.$message.warning('评论不能为空')
-        return
-      }
-      addComment({
-        commentInfo: { joinId: this.id, type: 2, content: this.commentContent },
-        user: { ename: this.userInformation }
-      }).then(res => {
-        if (res.code === 200) {
-          this.getCommentList()
-        }
-      })
-    },
-    changeRule() {
-      if (this.bugNameForm.bugName) {
-        this.rules.bugName[0].trigger = 'blur'
-        this.showRule = false
-      } else {
-        this.rules.bugName[0].trigger = 'change'
-        this.showRule = true
-      }
-    },
-    changeWidthOnBlur() {
-      if (this.type !== 'page') {
-        return
-      }
-      const colLength = document.getElementById('divLength').offsetWidth
-      let bugNameLength = document.getElementById('spanLength').offsetWidth
-      const statusButtonLength = document.getElementById('itemLength1').offsetWidth
-      const deleteButtonLength = document.getElementById('itemLength2').offsetWidth
-      const labelLength = document.getElementsByClassName('el-form-item__label')[0].offsetWidth
-      const wholeLength = colLength - statusButtonLength - labelLength - deleteButtonLength - 20
-      if (bugNameLength + 40 < wholeLength) {
-        bugNameLength += 40
-        this.bugNameTextareaStyle.width = bugNameLength + 'px'
-      } else {
-        this.bugNameTextareaStyle.width = wholeLength + 'px'
-      }
-    },
-    changeWidthOnFocus() {
-      const colLength = document.getElementById('divLength').offsetWidth
-      const statusButtonLength = document.getElementById('itemLength1').offsetWidth
-      const deleteButtonLength = document.getElementById('itemLength2').offsetWidth
-      const labelLength = document.getElementsByClassName('el-form-item__label')[0].offsetWidth
-      const wholeLength = colLength - statusButtonLength - labelLength - deleteButtonLength - 20
-      this.bugNameTextareaStyle.width = wholeLength + 'px'
-    },
-    changeBugName() {
-      if (this.bugNameForm.bugName.length < 1) {
-        this.bugNameForm.bugName = this.bug.bugName
-        return
-      }
-      this.bug.bugName = this.bugNameForm.bugName
-      this.bugUpdate(this.bug, 'title')
-    },
-    RichText() {
-      this.editor = new E('#wage', '#wage1')
-      this.editor.customConfig.zIndex = 0
-      this.editor.customConfig.menus = [
-        'bold',
-        'italic',
-        'underline',
-        'link',
-        'list',
-        'justify',
-        'table',
-        'foreColor'
-      ]
-      this.editor.customConfig.onchange = html => {
-        this.bugDescribe = html
-      }
-      this.editor.customConfig.onblur = html => {
-        this.describeEditorVisible = false
-      }
-      this.editor.create()
-      this.editor.txt.html(this.bugDescribe === null ? '' : this.bugDescribe)
-    },
-    describeCancel() {
-      this.bugDescribe = this.bug.bugDescribe
-      this.describeEditorVisible = false
-    },
-    describeConfirm() {
-      this.bug.bugDescribe = this.bugDescribe
-      if (this.bugDescribe) {
-        this.bugDescribeNoHtml = this.bugDescribe
-          .replace(/<[^>]+>/g, '')
-          .replace(/&nbsp;/gi, '')
-      }
-      this.bugUpdate(this.bug, 'describe').then(res => {
-        if (res.code === 200) {
-          this.describeEditorVisible = false
-          this.bugGet(this.bug.id)
-        }
-      })
-    },
-    getVersionList(e) {
-      // 获取版本号
-      const list = this.appClientList.filter(value => value.code === e)
-      this.versionList = list[0] ? list[0].childEnumInfos : []
-    },
-    bugGet(id, isLoading) {
-      this.loading.fullscreen = isLoading
-      return bugDetails({ id: id }).then(res => {
-        if (res.code === 200) {
-          if (this.num === 0) {
-            document.getElementsByClassName('scop')[0].scrollTop = 0
-          }
-          // if (this.type !== 'page') {
-          //   if (res.data.bizId !== Number(localStorage.getItem('bizId'))) {
-          //     Utils.$emit('demo', res.data.bizId)
-          //   }
-          // }
-          this.bug = res.data
-          this.bug.currentHandler = res.data.currentHandler.split(',')
-          this.bug.assigner = res.data.assigner.split(',')
-          this.bug.currentHandler.map(item => {
-            this.searchUser(item).then(res => {
-              this.currentHandlerOptions.push(res.data[0])
-            })
-          })
-          this.bug.assigner.map(item => {
-            this.searchUser(item).then(res => {
-              this.assignerOptions.push(res.data[0])
-            })
-          })
-          this.bugModel = JSON.parse(JSON.stringify(res.data))
-          this.bugDescribe = this.bug.bugDescribe
-          if (this.bugDescribe !== null) {
-            this.bugDescribeNoHtml = this.bugDescribe
-              .replace(/<[^>]+>/g, '')
-              .replace(/&nbsp;/gi, '')
-          }
-          this.bugNameForm.bugName = this.bug.bugName
-          this.bug.networkType = this.bug.networkType
-          this.bug.appVersion = this.bug.appVersion
-          this.bug.moduleIds = this.bug.moduleIds
-          this.fileList = []
-          var str = res.data.accessory
-          if (str !== '' && str !== null) {
-            var obj = JSON.parse(str.split('{}')[0])
-            for (var a of obj) {
-              this.fileList.push(a)
-            }
-          }
-          this.ImageList = this.isImage(this.fileList)
-          this.notImageList = this.isNotImage(this.fileList)
-        } else {
-          this.loading.drawer = true
-          return Promise.reject(res.msg)
-        }
-        this.loading.fullscreen = false
-        return res
-      })
-    },
-    openQueryDialog() {
-      this.modalShow = true
-      this.$nextTick(() => {
-        this.$refs.createdBug.init(2, this.bug)
-      })
-    },
-    father() {
-      this.bugGet(this.bug.id, false)
-      this.$emit('update', false)
-    },
-    bugGetEnum() {
-      return bugGetEnum().then(res => {
-        this.enums = res.data
-        if (this.enums) {
-          for (const i in this.enums) {
-            this.map[i] = {}
-            if (this.enums[i]) {
-              for (const j in this.enums[i]) {
-                this.map[i][this.enums[i][j].code] = this.enums[i][j].name
-              }
-            }
-          }
-        }
-        return res
-      })
-    },
-    bugDelete() {
-      const userData = {
-        id: '',
-        ename: this.userInformation,
-        name: this.userNames
-      }
-      return bugDelete(userData, this.bug.id).then(res => {
-        return res
-      })
-    },
-    bugUpdate(form, loadingStr) {
-      if (form.currentHandler.length > 0) {
-        if (form.assigner.length > 0) {
-          this.formHeight = ''
-          this.formHeight1 = ''
-          loadingStr ? this.loading[loadingStr] = true : this.loading.fullscreen = true
-          const userData = {
-            id: '',
-            ename: this.userInformation,
-            name: this.userNames
-          }
-          this.num = 1
-          let objData
-          if (form) {
-            const data = form
-            data.currentHandler = form.currentHandler.join(',')
-            data.assigner = form.assigner.join(',')
-            objData = { bugBaseInfo: data, user: userData }
-          } else {
-            const data = form
-            data.currentHandler = form.currentHandler.join(',')
-            data.assigner = form.assigner.join(',')
-            objData = { bugBaseInfo: data, user: userData }
-          }
-          return bugUpdate(objData).then(res => {
-            if (res.code === 200) {
-              this.changeWidthOnBlur()
-              this.bugModel = JSON.parse(JSON.stringify(this.bug))
-              this.$emit('update', false)
-              this.init()
-            } else {
-              this.bug = JSON.parse(JSON.stringify(this.bugModel))
-            }
-            loadingStr ? this.loading[loadingStr] = false : this.loading.fullscreen = false
-            return res
-          })
-        } else {
-          this.formHeight1 = 'type'
-        }
-      } else {
-        this.formHeight = 'type'
-      }
-    },
-    searchUser(query) {
-      this.userLoading = true
-      return getMemberInfo({ memberIDAP: query }).then(res => {
-        this.userLoading = false
-        return res
-      })
-    },
-    getBusinessLinePlatformModule() {
-      settingQueryBizModuleList(Number(localStorage.getItem('bizId'))).then(res => {
-        this.business_platform_Modular = res.data.map(item => ({
-          ...item,
-          value: item.id,
-          label: item.moduleName,
-          children: item.childModules.length === 0 ? null : item.childModules.map(item1 => ({
-            ...item1,
-            value: item1.id,
-            label: item1.moduleName,
-            children: item1.childModules.length === 0 ? null : item1.childModules.map(item2 => ({
-              ...item2,
-              value: item2.id,
-              label: item2.moduleName
-            }))
-          }))
-        }))
-      })
-    },
-    searchAssigner(val) {
-      this.assignerOptions = []
-      this.searchUser(val).then(res => {
-        this.assignerOptions = res.data
-      })
-    },
-    searchCurrentHandler(val) {
-      this.currentHandlerOptions = []
-      this.searchUser(val).then(res => {
-        this.currentHandlerOptions = res.data
-      })
-    },
-    bugNameChangeWith(val) {
-      if (this.showWordLimit) {
-        this.showWordLimit = false
-      } else {
-        this.showWordLimit = true
-      }
-      this.bugNameTextareaStyle.width = val
-    },
-    openDeleteDialog() {
-      this.openStatsDialog({ code: null, name: '删除确认' })
-    },
-    openStatsDialog(item) {
-      this.statusDialogForm = JSON.parse(JSON.stringify(this.bug))
-      this.statusDialogForm.status = item.code
-      if (item.name === '待修复' || item.name === '修复中' || item.name === 'Hold') {
-        this.bugUpdate(this.statusDialogForm, 'title')
-          .then(res => {
-            this.bugGet(this.bug.id, false)
-          })
-        return
-      }
-      this.statusDialogTitle = item.name
-      this.statusDialogVisible = true
-    },
-    statusDialogCancel() {
-      this.statusDialogVisible = false
-    },
-    statusDialogConfirm() {
-      if (this.statusDialogTitle === '删除确认') {
-        this.bugDelete().then(res => {
-          this.statusDialogVisible = false
-          if (res.code === 200) {
-            if (this.type === 'page') {
-              this.$router.push({ name: '缺陷' })
-            } else {
-              this.$emit('delete', false)
-            }
-          }
-        })
-      } else if (this.statusDialogTitle === '待测试') {
-        if (
-          typeof this.statusDialogForm.bugReason === 'undefined' ||
-          this.statusDialogForm.bugReason === null
-        ) {
-          this.$message.warning('请选择缺陷原因')
-        }
-        this.postDialogForm()
-          .then(res => {
-            this.getCommentList()
-          })
-      } else if (this.statusDialogTitle === '已完成') {
-        if (
-          typeof this.statusDialogForm.bugReason === 'undefined' ||
-          this.statusDialogForm.bugReason === null
-        ) {
-          this.$message.warning('请选择缺陷原因')
-          return
-        }
-        if (
-          typeof this.statusDialogForm.repairResult === 'undefined' ||
-          this.statusDialogForm.repairResult === null
-        ) {
-          this.$message.warning('请选择修复结果')
-          return
-        }
-        this.postDialogForm()
-      } else if (this.statusDialogTitle === 'Reopen') {
-        if (!this.statusDialogForm.reasonOrDesc) {
-          this.$message.warning('请输入Reopen原因')
-          return
-        }
-        this.postDialogForm()
-          .then(res => {
-            this.getCommentList()
-          })
-        // this.addComment()
-        this.statusDialogVisible = false
-      }
-    },
-    postDialogForm() {
-      this.statusDialogForm.id = this.id
-      return this.bugUpdate(this.statusDialogForm).then(res => {
-        this.statusDialogVisible = false
-        this.statusDialogForm = {}
-        this.bugGet(this.bug.id)
-        return res
-      })
-    },
-    generateMixed(len) {
-      const chars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
-      let res = ''
-      for (let i = 0; i < len; i++) {
-        const id = Math.ceil(Math.random() * 35)
-        res += chars[id]
-      }
-      return res
-    },
-    pasteUpload() {
-      if (!this.uploadButton) {
-        return false
-      }
-      if (window.uploadFiles[0]) {
-        const reader = new FileReader()
-        reader.readAsDataURL(window.uploadFiles[0])
-        reader.onload = () => {
-          const reg = new RegExp(/image\/png/)
-          this.imageUrl = reader.result
-          if (this.imageUrl.match(reg)) { // 判断是否是图片
-            this.showCopyFile = true
-            this.imageName.name = this.generateMixed(10)
-          }
-        }
-      }
-    },
-    async confirmUpload() {
-      if (this.imageName.name === null || this.imageName.name.replace(/\s+/g, '') === '') {
-        return false
-      }
-      // const isExist = this.ImageList.some(item => {
-      //   return this.imageName.name === item.name
-      // })
-      // if (isExist) {
-      //   this.$message({
-      //     showClose: true,
-      //     message: '图片名称重复',
-      //     type: 'error'
-      //   })
-      //   return false
-      // }
-      this.showCopyFile = false
-      const res = await this.updateFile(window.uploadFiles[0])
-      const data = res.data
-      const item = {
-        name: `${this.imageName.name}.png` || `${this.generateMixed(10)}.png`,
-        status: 'success',
-        url: 'http:' + data.url
-      }
-      this.ImageList.push(item)
-      this.bug.accessory = JSON.stringify([...this.notImageList, ...this.ImageList])
-      this.$message({
-        showClose: true,
-        message: '文件上传成功',
-        type: 'success'
-      })
-      this.bugUpdate(this.bug, 'accessory')
-      this.imageName.name = null
-      this.imageUrl = null
-      window.uploadFiles = null
-    },
-    updateFile(file) {
-      const param = new FormData() // 创建form对象
-      param.append('file', file)// 通过append向form对象添加数据
-      const config = {
-        headers: {
-          'Content-Type': 'multipart/form-data'
-        },
-        withCredentials: false
-      } // 添加请求头
-      return new Promise((resolve, reject) => {
-        axios.post('http://star.xiaojukeji.com/upload/img.node', param, config)
-          .then(response => {
-            resolve(response)
-          }).catch(err => {
-            reject(err)
-          })
-      })
-    }
-  }
-}
-</script>
-
-<style>
-.el-tooltip__popper.is-dark {
-  background-color: rgba(121,132,150, 0.8);
-}
-.bug_manage_container::-webkit-scrollbar {
-    display: none;
-}
-.bug_manage_title .button_delete{
-  font-size: 20px;
-  line-height: 14px;
-  padding: 7px 10px;
-}
-.bug_manage_title .button_delete2,.button_status .el-button {
-  padding: 7px 10px;
-  font-size: 14px;
-  font-weight: normal;
-}
-.bug_manage_dialog .el-dialog {
-  border-radius:4px;
-}
-.bug_manage_dialog .el-dialog__header {
-  padding: 20px 45px;
-}
-.bug_manage_dialog .el-dialog__body {
-  padding: 0px 45px;
-}
-.bug_manage_dialog .el-dialog__footer {
-  padding: 20px 45px 40px 0;
-}
-.layout_header,
-.layout_aside,
-.layout_main {
-  /* border-radius: 4px; */
-  background-color: #ffffff;
-}
-.bug_manage_dialog_fixMethod .el-form-item__label {
-  padding-left: 10px;
-}
-.bug_manage_dialog .el-form-item__label {
-  color: #666666;
-  font-weight: 400;
-}
-.bug_manage_title .el-form-item__label {
-  color: #333b4a;
-  font-size: 18px;
-  font-weight: 500;
-}
-#spanLength {
-  color: #333b4a;
-  font-size: 20px;
-  font-weight: 500;
-  visibility: hidden;
-  position: absolute;
-}
-#divLength,
-#divLength2 {
-  padding-top: 30px;
-}
-.bug_manage_title .el-textarea__inner {
-  border: transparent;
-  resize: none;
-  color: #333b4a;
-  font-size: 20px;
-  font-weight: 500;
-  overflow:hidden;
-}
-.bug_manage_title .el-textarea__inner:focus {
-  padding-right: 50px;
-}
-.bug_manage_title .el-input__count {
-  background-color: transparent;
-}
-.bug_manage_title .bug_manage_bug_name_rule_show .el-textarea__inner{
-  border: 1px solid #F56C6C;
-}
-.bug_manage_title .bug_manage_bug_name_focus .el-textarea__inner:focus {
-  border: 1px solid #409eff;
-}
-.bug_manage_title .bug_manage_bug_name .el-textarea__inner:hover {
-  border: thin solid #DCDFE6;
-}
-.bug_manage .el-form-item__label {
-  color: #666666;
-  font-weight: 400;
-  padding: 0;
-}
-.bug_manage .el-input__inner {
-  border: transparent;
-  color: #666666;
-  font-weight: 500;
-}
-.bug_manage .bug_manage_div {
-  border: transparent;
-  color: #666666;
-  font-weight: 500;
-}
-.bug_manage .el-cascader .el-input__inner:hover {
-  border: thin solid #DCDFE6;
-}
-.bug_manage .el-cascader .el-input__inner:focus {
-  border: 1px solid #409eff;
-}
-.bug_manage .el-input__inner:hover {
-  border: thin solid #DCDFE6;
-}
-.bug_manage .el-input__inner:focus {
-  border: 1px solid #409eff;
-}
-.bug_manage .el-select,.el-cascader {
-  width: 100%;
-}
-.bug_manage .el-select .el-input__suffix-inner {
-  visibility: hidden;
-}
-.bug_manage .el-select:hover .el-input__suffix-inner {
-  visibility: visible;
-}
-.bug_manage .el-cascader .el-input__suffix-inner {
-  visibility: hidden;
-}
-.bug_manage .el-cascader:hover .el-input__suffix-inner {
-  visibility: visible;
-}
-.layout_main .el-form-item.is-error .el-input__inner {
-border-color: #DCDFE6;
-}
-</style>
-
-<style scoped>
-.el-aside {
-  overflow: hidden;
-}
-.toolbar {
-  background-color: rgba(255, 255, 255, 1);
-  border: 1px solid #DCDFE6;
-  border-top-left-radius: 4px;
-  border-top-right-radius: 4px;
-}
-.text {
-  border: 1px solid #DCDFE6;
-  height: 180px;
-  border-bottom-left-radius: 4px;
-  border-bottom-right-radius: 4px;
-}
-.bug_describe {
-  color: #666666;
-  font-size: 14px;
-}
-.bug_describe:hover {
-  color: #409eff;
-  cursor: pointer;
-}
-.bug_describe_content {
-  border-radius: 4px;
-  border: 1px solid transparent;
-}
-.bug_describe_content:hover {
-  border-radius: 4px;
-  border: 1px solid rgba(191, 198, 220);
-}
-</style>
-
-<style scoped lang="scss">
-.newBtn {
-  font-size: 14px;
-  color: rgb(51, 59, 74);
-  font-weight: 400;
-}
-.newBtn:hover {
-  color: #409EFF;
-  cursor: pointer;
-}
-.current:hover{
-  cursor: pointer;
-  border-radius: 4px;
-  border: 1px solid #DCDFE6;
-}
-.module_title{
-  display:flex;
-  align-items: center;
-  margin-bottom: 20px
-}
-.module_title__sign {
-  width:4px;
-  height:15px;
-  background:#409EFF;
-  border-radius:1px;
-}
-.module_title__caption{
-  width:83px;
-  height:18px;
-  font-size:16px;
-  font-family:MicrosoftYaHei;
-  color:rgba(51,59,74,1);
-  margin-left:6px;
-  font-weight: 500;
-}
-.layout_main .el-form-item{
-  margin-bottom:0px;
-}
-.layout_main .el-divider--horizontal{
-  margin:10px 0 5px 0;
-}
-.tips {
-  color:#DCDFE6;
-  position: absolute;
-}
-.file-dialog {
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  .el-form {
-    width: 100%;
-  }
-  .image {
-    position: relative;
-    width: 61%;
-    padding-top: 60%;
-    border:1px solid #409EFF;
-    border-radius: 4px;
-    .image-center {
-      padding: 1%;
-      position: absolute;
-      top: 0;
-      left: 0;
-      width: 100%;
-      height: 100%;
-      overflow-x: hidden;
-      display: flex;
-      justify-content: center;
-    }
-    .image-url {
-      height: 100%;
-    }
-  }
-}
-.upload-button {
-  position: relative;
-  color:#409EFF;
-  border: 1px dashed #409EFF;
-  background-color: #F7FBFF;
-}
-.upload-main {
-  position: relative;
-}
-.upload-info {
-  position: absolute;
-  left: 130px;
-  top: 14px;
-  color:#409EFF;
-  font-size: 12px;
-  i{
-    margin-right: 5px;
-  }
-}
-.upload-file {
-  color: #E6A23C;
-  font-size: 12px;
-  i{
-    margin-right: 5px;
-  }
-}
-.upload-title {
-  width: 40px;
-}
-.bug-detail >>> .el-upload-dragger {
-  width: 248px;
-  height: 148px;
-}
-.bug-detail >>> .el-upload--picture-card {
-  border: none;
-}
->>> .el-upload--picture-card {
-  display: none;
-}
->>>.el-upload-list--picture-card .el-upload-list__item {
-  height: 168px;
-}
-.el-upload-list__item-actions {
-  height: calc(100%-20px);
-  margin-top: 20px;
-}
-.image-detail {
-  height: 100%;
-  position: relative
-}
-.detail-img {
-  padding-top: 20px;
-}
-.image-name {
-  box-sizing: border-box;
-  position: absolute;
-  top: 0;
-  width: 100%;
-  height: 20px;
-  display: flex;
-  justify-content: center;
-  font-size: 12px;
-  border-bottom: 1px solid #c0ccda;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-</style>
-<style lang="scss">
-.item-color {
-  /deep/ .el-button {
-    color: rgb(106, 180, 255);
-    border: 1px solid rgb(106, 180, 255);
-    border-color: rgb(106, 180, 255) !important;
-    background: #FFF;
-  }
-}
-.item{
-  /deep/ .el-button {
-    color: rgb(126, 211, 33);
-    border: 1px solid rgb(126, 211, 33);
-     border-color: rgb(126, 211, 33) !important;
-    background: #FFF;
-  }
-}
-.item1 {
-  /deep/ .el-button {
-    color: rgb(255, 204, 102);
-     border: 1px solid rgb(255, 204, 102);
-     border-color: rgb(255, 204, 102) !important;
-    background: #FFF;
-  }
-}
-.item2 {
-  /deep/ .el-button {
-    color: rgb(245, 108, 108);
-    border: 1px solid rgb(245, 108, 108);
-    border-color: rgb(245, 108, 108) !important;
-    background: #FFF;
-  }
-}
-.item3 {
-  /deep/ .el-button {
-    color: #D675F0;
-    border: 1px solid #D675F0;
-    border-color: #D675F0 !important;
-    background: #FFF;
-  }
-}
-</style>

+ 0 - 1076
src/views/problemSystem/evaluation.vue

@@ -1,1076 +0,0 @@
-<template>
-  <div>
-    <el-container class="bgColor">
-      <el-header v-if="type === 'page'" style="height: auto; margin-top: 1%; padding: 0 1%">
-        <el-row class="headerBg">
-          <el-col :span="24" style="margin-left:2%">
-            <el-button
-              type="primary"
-              size="mini"
-              @click="createdCode()"
-            >新建复盘</el-button>
-          </el-col>
-          <el-form :inline="true" :model="formInline" style="margin-top:5%;margin-left:2%">
-            <el-form-item label="所属业务">
-              <el-input v-model="formInline.user" size="medium" placeholder="请选择" style="width:200px" />
-            </el-form-item>
-            <el-form-item label="问题来源">
-              <el-select v-model="formInline.region" size="medium" placeholder="活动区域" style="width:200px">
-                <el-option label="区域一" value="shanghai" />
-                <el-option label="区域二" value="beijing" />
-              </el-select>
-            </el-form-item>
-            <el-form-item label="问题类型">
-              <el-select v-model="formInline.region" size="medium" placeholder="活动区域" style="width:200px">
-                <el-option label="区域一" value="shanghai" />
-                <el-option label="区域二" value="beijing" />
-              </el-select>
-            </el-form-item>
-            <el-form-item label="问题级别">
-              <el-select v-model="formInline.region" size="medium" placeholder="活动区域" style="width:200px">
-                <el-option label="区域一" value="shanghai" />
-                <el-option label="区域二" value="beijing" />
-              </el-select>
-            </el-form-item>
-            <el-form-item label="创建日期">
-              <el-date-picker
-                v-model="value1"
-                style="width: 44%;"
-                size="medium"
-                type="daterange"
-                range-separator="-"
-                start-placeholder="开始日期"
-                end-placeholder="结束日期"
-              />
-
-              <el-button type="primary" style="margin-top:-25%;margin-left:150%">筛选</el-button>
-            </el-form-item>
-          </el-form>
-        </el-row></el-header>
-      <el-main :style="type === 'page'?{padding: '1%'}:{padding: '0'}">
-        <el-row class="headerBg table_v" style=" padding-top: 0px;">
-          <el-col :span="24" style="min-height: 47vh;">
-            <div v-if="type !== 'page'" style="position: relative;top: 5px;right: 10px">
-              <el-divider />
-            </div>
-            <el-table
-              :key="Math.random()"
-              size="small"
-              :data="tableData"
-              style="width: 100%; font-size: 14px; color:rgba(102,102,102,1);"
-              show-overflow-tooltip="true"
-              :header-cell-style="{ color: '#4A4A4A', fontSize: '14px', fontWeight: '500' }"
-            >
-
-              <el-table-column
-                prop="bugName"
-                label="问题名称"
-                min-width="180"
-                align="center"
-                show-overflow-tooltip
-              >
-                <template slot-scope="scope">
-                  <span style=" color: #A7AEBC; font-size: 10px;">{{ 'BUG-' + scope.row.id }}</span>
-                  <br>
-                  <span
-                    class="bugNameSty"
-                    @click.stop="click_bugName(scope.row.id)"
-                  >{{ scope.row.bugName }}</span>
-                </template>
-              </el-table-column>
-              <el-table-column
-                prop="bugName"
-                label="问题来源"
-                min-width="100"
-                align="center"
-                show-overflow-tooltip
-              >
-                <template slot-scope="scope">
-                  <span style=" color: #A7AEBC; font-size: 10px;">{{ 'BUG-' + scope.row.id }}</span>
-                  <br>
-                  <span
-                    class="bugNameSty"
-                    @click.stop="click_bugName(scope.row.id)"
-                  >{{ scope.row.bugName }}</span>
-                </template>
-              </el-table-column>
-              <el-table-column prop="priorityName" min-width="100" label="问题类型" align="center" />
-              <el-table-column prop="priorityName" label="问题级别" min-width="80" align="center" />
-              <el-table-column prop="taskName" label="所属业务" align="center" min-width="120" show-overflow-tooltip />
-              <el-table-column prop="assignerList" label="责任人" min-width="100" align="center" show-overflow-tooltip />
-              <el-table-column prop="gmtCreate" label="创建日期" min-width="130" align="center">
-                <template slot-scope="scope">{{ scope.row.gmtCreate | naspOut }}</template>
-              </el-table-column>
-              <el-table-column label="操作" align="center" min-width="150px" class-name="small-padding fixed-width">
-                <template slot-scope="{row}">
-                  <el-button type="text" size="mini">编辑</el-button>
-                </template>
-              </el-table-column>
-            </el-table>
-          </el-col>
-          <el-col :span="24">
-            <div align="right">
-              <el-pagination
-                :page-sizes="[15, 30, 45, total]"
-                :current-page="curIndex"
-                :page-size="pageSize"
-                background
-                layout="total, sizes, prev, pager, next, jumper"
-                :total="total"
-                @size-change="handleSizeChange"
-                @current-change="handleCurrentChange"
-              />
-            </div>
-          </el-col>
-        </el-row>
-      </el-main>
-    </el-container>
-    <createdBug v-show="modalShow" ref="createdBug" :get-bug-list="getBugList" />
-    <el-drawer
-      :visible.sync="drawerShow"
-      :modal="false"
-      :with-header="false"
-      size="50%"
-      class="bug_manage_drawer"
-      @click.stop
-    >
-      <div @click.stop>
-        <bug-details
-          :id="bugQuery.id+''"
-          ref="bugDetails"
-          :type="'drawer'"
-          :drawer-show="drawerShow"
-          @close="drawerShow = false"
-          @delete="drawerShow = false;type === 'page'?getBugList():getBugSelfList()"
-          @update="type === 'page'?getBugList():getBugSelfList()"
-        />
-      </div>
-    </el-drawer>
-    <el-dialog
-      v-if="statusDialogVisible"
-      :visible.sync="statusDialogVisible"
-      width="33%"
-      class="bug_manage_dialog"
-      :append-to-body="true"
-      :close-on-click-modal="false"
-      @close="modalClose"
-    >
-      <template v-slot:title>
-        <div style="display:flex;align-items: center;">
-          <div style="width:4px;height:15px;background:#409EFF;border-radius:1px;" />
-          <div style="width:83px;height:18px;font-size:16px;font-family:MicrosoftYaHei;color:rgba(51,59,74,1);margin-left:6px">{{ statusDialogTitle }}</div>
-        </div>
-      </template>
-      <el-form label-width="110px" label-position="left" :model="statusDialogForm" :rules="rules">
-        <el-form-item v-if="statusDialogTitle === '待测试' || statusDialogTitle === '已完成'" label="缺陷原因" prop="bugReason">
-          <el-select v-model="statusDialogForm.bugReason" style="width: 100%">
-            <el-option v-for="item in bugReasonEnumList" :key="item.code" :label="item.name" :value="item.code" />
-          </el-select>
-        </el-form-item>
-        <el-form-item v-if="statusDialogTitle === '待测试'" label="修复方式" class="bug_manage_dialog bug_manage_dialog_fixMethod">
-          <el-input v-model="statusDialogForm.reasonOrDesc" type="textarea" placeholder="请输入具体原因和修复方式" maxlength="300" show-word-limit rows="4" />
-        </el-form-item>
-        <el-form-item v-if="statusDialogTitle === '已完成'" label="修复结果" prop="repairResult" class="bug_manage_dialog">
-          <el-select v-model="statusDialogForm.repairResult" style="width: 100%">
-            <el-option v-for="item in repairResultEnumList" :key="item.code" :label="item.name" :value="item.code" />
-          </el-select>
-        </el-form-item>
-        <el-form-item v-if="statusDialogTitle === 'Reopen'" label="Reopen原因" prop="reasonOrDesc">
-          <el-input v-model="statusDialogForm.reasonOrDesc" type="textarea" placeholder="请输入Reopen" maxlength="300" show-word-limit rows="4" />
-        </el-form-item>
-      </el-form>
-      <template v-slot:footer>
-        <el-button @click="getBugList(),statusDialogVisible = false">取 消</el-button>
-        <el-button type="primary" @click="statusDialogConfirm">确 定</el-button>
-      </template>
-    </el-dialog>
-
-    <el-dialog :visible.sync="dialogFormVisible" width="70%" :close-on-click-modal="false">
-      <div style="margin: 0% 7% 2% 2.5%;display:flex;align-items: center;">
-        <div style="width:4px;height:17px;background:#409EFF;border-radius:1px;" />
-        <div style="width:83px;height:20px;font-size:18px;font-family:MicrosoftYaHei;color:rgba(51,59,74,1);margin-left:6px">新建问题</div>
-      </div>
-      <el-form
-        ref="form"
-        :model="form"
-        :rules="rules_form"
-        :label-width="formLabelWidth"
-        label-position="left"
-        style="margin: 0 3%;"
-      >
-        <el-form-item label="名称" prop="name">
-          <el-input v-model="form.name" autocomplete="off" />
-        </el-form-item>
-        <div style="display: flex;">
-          <div style="flex; 1;">
-            <el-form-item label="问题来源" prop="bizType">
-              <el-select v-model="form.bizType" clearable placeholder="请选择" style="width: 100%">
-                <el-option
-                  v-for="item in arr_prjectType"
-                  :key="item.value"
-                  :label="item.name"
-                  :value="item.value"
-                />
-              </el-select>
-            </el-form-item>
-            <el-form-item label="紧急程度" prop="bizId">
-              <el-select v-model="form.bizId" clearable placeholder="请选择" style="width:20vw">
-                <el-option
-                  v-for="item in all_bizId"
-                  :key="item.code"
-                  :label="item.name"
-                  :value="item.code"
-                />
-              </el-select>
-            </el-form-item>
-            <el-form-item label="处理人" prop="bizId">
-              <el-select
-                v-model="form.pmOwner"
-                filterable
-                remote
-                clearable
-                placeholder="请输入姓名或邮箱前缀"
-                :remote-method="remoteMethod"
-                :loading="loading"
-                style="width: 100%"
-                @focus="optionsClear"
-              >
-                <el-option
-                  v-for="item in options"
-                  :key="item.idap"
-                  :label="item.name"
-                  :value="test2(item, 0)"
-                >
-                  <div class="flex_start">
-                    <div class="deptName">{{ item.deptName }}</div>
-                    <div style="min-width:80px">{{ item.name }}</div>
-                    <div class="deptName">{{ item.idap }}</div>
-                  </div>
-                </el-option>
-              </el-select>
-            </el-form-item>
-            <el-form-item label="问题级别">
-              <el-select v-model="form.bizId" clearable placeholder="请选择" style="width:20vw">
-                <el-option
-                  v-for="item in all_bizId"
-                  :key="item.code"
-                  :label="item.name"
-                  :value="item.code"
-                />
-              </el-select>
-            </el-form-item>
-
-          </div>
-          <div style="flex; 1; margin: 0 0 0 auto;">
-            <el-form-item label="问题类型" prop="priority">
-              <el-select v-model="form.priority" clearable placeholder="请选择" style="width:20vw">
-                <el-option
-                  v-for="item in arr_priority"
-                  :key="item.value"
-                  :label="item.name"
-                  :value="item.value"
-                />
-              </el-select>
-            </el-form-item>
-            <el-form-item label="所属业务" prop="bizId">
-              <el-select v-model="form.bizId" clearable placeholder="请选择" style="width:20vw">
-                <el-option
-                  v-for="item in all_bizId"
-                  :key="item.code"
-                  :label="item.name"
-                  :value="item.code"
-                />
-              </el-select>
-            </el-form-item>
-            <el-form-item label="责任人" prop="bizId">
-              <el-select
-                v-model="form.rdOwner"
-                filterable
-                clearable
-                remote
-                placeholder="请输入姓名或邮箱前缀"
-                :remote-method="remoteMethod"
-                :loading="loading"
-                style="width: 100%"
-                @focus="optionsClear"
-              >
-                <el-option
-                  v-for="item in options"
-                  :key="item.idap"
-                  :label="item.name"
-                  :value="test2(item, 0)"
-                >
-                  <div class="flex_start">
-                    <div class="deptName">{{ item.deptName }}</div>
-                    <div style="min-width:80px">{{ item.name }}</div>
-                    <div class="deptName">{{ item.idap }}</div>
-                  </div>
-                </el-option>
-              </el-select>
-            </el-form-item>
-            <el-form-item label="完成时间">
-              <el-select v-model="form.bizId" clearable placeholder="请选择" style="width:20vw">
-                <el-option
-                  v-for="item in all_bizId"
-                  :key="item.code"
-                  :label="item.name"
-                  :value="item.code"
-                />
-              </el-select>
-            </el-form-item>
-          </div>
-        </div>
-        <el-form-item label="项目描述">
-          <el-input v-model="form.description" type="textarea" placeholder="请输入" show-word-limit />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" style="padding: 0 27px;">
-        <el-button @click="dialogFormVisible = false">取 消</el-button>
-        <el-button type="primary" @click="created_project(form)">创 建</el-button>
-      </div>
-    </el-dialog>
-
-    <normal-dialog
-      :show-dialog="showSaveSearch"
-      :title="'保存筛选项'"
-      :width="'35%'"
-      @confirm="saveSearch('searchForm')"
-      @cancel="showSaveSearch=false"
-    >
-      <div v-if="showSaveSearch" class="file-dialog">
-        <el-form ref="searchForm" :model="searchForm" :rules="searchFormRules" label-width="100px">
-          <el-form-item label="过滤器名称" prop="name">
-            <el-input v-model="searchForm.name" placeholder="不超过50个字符" />
-          </el-form-item>
-        </el-form>
-      </div>
-    </normal-dialog>
-    <normal-dialog
-      :show-footer="false"
-      :show-dialog="showEditSearch"
-      :title="'管理过滤器'"
-      :width="'65%'"
-      @cancel="showEditSearch=false"
-    >
-      <filter-list :show-filter="showEditSearch" @deleteFilter="deleteFilter" />
-    </normal-dialog>
-  </div>
-</template>
-
-<script>
-import BugDetails from './details/index'
-import normalDialog from '@/components/dialog/normalDialog'
-import filterList from '@/views/projectManage/bugList/details/filterList'
-import { deepClone } from '@/utils/global'
-import {
-  bugList,
-  bugSelfList,
-  bugGetEnum,
-  bugUpdate,
-  settingGetBizList,
-  taskListCreate,
-  releaseList,
-  settingQueryBizModuleList,
-  bugDownload,
-  createFilter,
-  getFilterList,
-  getFilterItem
-} from '@/api/defectManage'
-// import { getCommentList } from '@/api/requirement.js'
-import { memberQueryMemberInfoByIDAPorName } from '@/api/projectIndex'
-import '@/views/projectManage/bugList/css/index.css'
-export default {
-  components: {
-    BugDetails,
-    normalDialog,
-    filterList
-  },
-  filters: {
-    oneA(value) {
-      if (!value) return ''
-      var da = value.substring(0, 1)
-      return da
-    },
-    naspOut(value) {
-      if (!value) return ''
-      var da = value.split(/\s+/)
-      return da[0]
-    }
-  },
-  props: {
-    type: {
-      type: String,
-      default: 'page'
-    }
-  },
-  data() {
-    return {
-      pickerOptions: {
-        shortcuts: [{
-          text: '最近一周',
-          onClick(picker) {
-            const end = new Date()
-            const start = new Date()
-            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
-            picker.$emit('pick', [start, end])
-          }
-        }, {
-          text: '最近一个月',
-          onClick(picker) {
-            const end = new Date()
-            const start = new Date()
-            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
-            picker.$emit('pick', [start, end])
-          }
-        }, {
-          text: '最近三个月',
-          onClick(picker) {
-            const end = new Date()
-            const start = new Date()
-            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
-            picker.$emit('pick', [start, end])
-          }
-        }]
-      },
-      rules: {
-        bugReason: [
-          { required: true, message: '请选择缺陷原因', trigger: 'change' }
-        ],
-        repairResult: [
-          { required: true, message: '请选择修复结果', trigger: 'change' }
-        ],
-        reasonOrDesc: [
-          { required: true, message: '请输入Reopen原因', trigger: 'blur' }
-        ]
-      },
-      statusDialogForm: {},
-      radio: '1',
-      bugListType: 2,
-      props: { multiple: true },
-      reopens: [{ code: 1, name: '是' }, { code: 0, name: '否' }],
-      priorityColors: ['#F56C6C', '#FF8952', '#7ED321'],
-      statusColors: ['#6AB4FF', '#6AB4FF', '#FFCC66', '#7ED321', '#F56C6C'],
-      userInformation: localStorage.getItem('username'),
-      userNames: localStorage.getItem('realname'),
-      statusDialogTitle: '',
-      formLabelWidth: '100px',
-      statusDialogVisible: false,
-      DetailedScreening: false, // 高级筛选
-      bugEnumList: [], // bug状态
-      bugDevRepairTimeList: [], // 开发修复时长
-      appClient: [], // 客户端
-      Editionlist: [], // 版本
-      bizIdEnumList: [], // bug业务线
-      taskEnumList: [], // 所属任务
-      bugTypeEnumList: [], // bug类型
-      priorityEnumList: [], // 缺陷等级
-      clientTypeEnumList: [], // 版本
-      repairResultEnumList: [], // 修复结果
-      priorityLevelEnumList: [], // 优先级
-      discoveryMethEnumList: [], // 发现方式
-      bugStageEnumList: [], // 发现阶段
-      bugReasonEnumList: [], // 缺陷原因
-      sysTypeEnumList: [], // 端类型
-      bugQuery: '', // bug详情
-      business_platform_Modular: [], // 所属模块
-      bugQueryModel: '',
-      commentShow: true, // 评论为空默认显示
-      content: '', // 评论
-      comment_content: '', // 评论内容
-      fileList: [], // 储存附件
-      dis: false,
-      commentTxt: [],
-      pageSize: 15,
-      curIndex: 1,
-      total: 0,
-      form: {},
-      goodName: '更多筛选',
-      dialogFormVisible: false,
-      modalShow: false, // 弹窗(新建)
-      drawerShow: false, // drawer展示
-      taskIdStr: [],
-      formInline: {}, // list
-      stratAndEnd: [], // 创建日期
-      tableData: [],
-      dialogVisible: false,
-      accessory: [],
-      loading: false,
-      options: [],
-      test: [], // 人员查询
-      dialogImageUrl: '',
-      isBugNameClick: false,
-      staData: {},
-      statusId: '',
-      showSaveSearch: false, // 显示保存筛选项对话框
-      showEditSearch: false, // 显示管理过滤器
-      searchForm: { name: null }, // 筛选项obj
-      searchFormRules: { name: [
-        { required: true, message: '请输入筛选项名称', trigger: 'blur' },
-        { min: 1, max: 50, message: '长度在 1 到 50 个字符', trigger: 'blur' }
-      ] },
-      rules_form: {
-        name: [{ required: true, message: '请输入项目名称', trigger: 'blur' }],
-        bizType: [{ required: true, message: '项目类型不能为空', trigger: 'blur' }],
-        bizId: [{ required: true, message: '业务线不能为空', trigger: 'blur' }],
-        priority: [{ required: true, message: '优先级不能为空', trigger: 'blur' }],
-        projectOwner: [{ required: true, message: '项目负责人不能为空', trigger: 'blur' }]
-      },
-      filterList: [], // 筛选器列表
-      filterDetail: null // 筛选器详情
-    }
-  },
-  computed: {
-    clickCount() {
-      return this.$store.state.app.clickCount
-    }
-  },
-  watch: {
-    clickCount(newVal, oldVal) {
-      this.drawerShow = false
-      // this.$store.state.data.bizId = false
-    }
-  },
-  created() {
-    if (this.$route.query.startDate && this.$route.query.endDate) {
-      this.stratAndEnd = [this.$route.query.startDate, this.$route.query.endDate]
-    }
-    if (this.$route.query.filterId) {
-      this.getFilterItem(this.$route.query.filterId)
-    }
-    this.tableData = []
-    if (this.type === 'page') {
-      this.getBugList()
-    } else {
-      this.getBugSelfList(2, 10)
-    }
-    this.bugListSelect()
-    this.getFilterList()
-    this.$store.state.data.status = true
-  },
-  destroyed() {
-    this.$store.state.data.status = false
-  },
-  methods: {
-    changeSelect() {
-      this.$forceUpdate()
-    },
-    changDate(date) { // 创建时间添加到url参数中
-      if (date) {
-        this.$router.push({ path: this.$route.path, query: { startDate: date[0], endDate: date[1] }})
-      } else {
-        this.$router.push({ path: this.$route.path })
-      }
-    },
-    async getBugList() {
-      this.$forceUpdate()
-      if (!this.stratAndEnd) {
-        this.stratAndEnd = []
-      }
-      this.formInline.createStartTime = this.stratAndEnd[0] || null
-      this.formInline.createEndTime = this.stratAndEnd[1] || null
-      this.indexPage = this.formInline
-      this.indexPage.bizId = Number(localStorage.getItem('bizId'))
-      this.indexPage.pageSize = this.pageSize
-      this.indexPage.curIndex = this.curIndex
-      const res = await bugList(this.indexPage)
-      if (res.code === 200) {
-        this.tableData = res.data.map(item => {
-          return { ...item, isSelected: false }
-        })
-        this.total = res.total
-      }
-    },
-    getBugSelfList(type, pageSize) {
-      if (type) {
-        this.bugListType = type
-      }
-      if (pageSize) {
-        this.pageSize = pageSize
-      }
-      bugSelfList({
-        type: this.bugListType,
-        pageSize: this.pageSize,
-        curIndex: this.curIndex
-      }).then(res => {
-        if (res.code === 200) {
-          this.tableData = res.data.map(item => {
-            return { ...item, isSelected: false }
-          })
-          this.total = res.total
-          this.tableData.map(item1 => {
-            this.priorityLevelEnumList.map(item => {
-              item1.priorityLevel !== null
-                ? item1.priorityLevel === item.name
-                  ? (item1.priorityCode = item.code)
-                  : ''
-                : ''
-            })
-          })
-        }
-      })
-    },
-    modalClose() {
-      this.getBugList()
-    },
-    selectStatus(row) {
-      row.isSelected = !row.isSelected
-    },
-    blurEvent(row, status) {
-      this.staData = row
-      this.statusId = status
-      if (status === 0 || status === 1 || status === 5) {
-        const userData = { id: '', ename: this.userInformation, name: this.userNames }
-        row.status = status
-        const objData = { bugBaseInfo: row, user: userData }
-        bugUpdate(objData).then(res => {
-          row.isSelected = !row.isSelected
-          if (res.code === 200) {
-            this.$message({
-              showClose: true,
-              message: res.msg,
-              type: 'success'
-            })
-          } else {
-            this.getBugList()
-            this.$message({
-              showClose: true,
-              message: res.msg,
-              type: 'error'
-            })
-          }
-        })
-        return
-      }
-      let data = ''
-      this.bugEnumList.map(item => {
-        item.code === status ? data = item.name : ''
-      })
-      this.statusDialogTitle = data
-      this.statusDialogVisible = true
-    },
-    bugStatusChange(row) {
-      row.isSelected = !row.isSelected
-      this.$nextTick(() => {
-        this.$refs.inputVal.focus()
-      })
-    },
-    statusDialogConfirm() {
-      if (this.statusDialogTitle === '待测试') {
-        if (typeof this.statusDialogForm.bugReason === 'undefined' || this.statusDialogForm.bugReason === null) {
-          this.$message.warning('请选择缺陷原因')
-        }
-        this.postDialogForm()
-      } else if (this.statusDialogTitle === '已完成') {
-        if (typeof this.statusDialogForm.bugReason === 'undefined' || this.statusDialogForm.bugReason === null) {
-          this.$message.warning('请选择缺陷原因')
-          return
-        }
-        if (typeof this.statusDialogForm.repairResult === 'undefined' || this.statusDialogForm.repairResult === null) {
-          this.$message.warning('请选择修复结果')
-          return
-        }
-        this.postDialogForm()
-      } else if (this.statusDialogTitle === 'Reopen') {
-        if (!this.statusDialogForm.reasonOrDesc) {
-          this.$message.warning('请输入Reopen原因')
-          return
-        }
-        this.postDialogForm()
-        this.statusDialogVisible = false
-      }
-    },
-    postDialogForm() {
-      const userData = { id: '', ename: this.userInformation, name: this.userNames }
-      this.staData.status = this.statusId
-      this.staData.reasonOrDesc = this.statusDialogForm.reasonOrDesc
-      this.staData.repairResult = this.statusDialogForm.repairResult
-      this.staData.bugReason = this.statusDialogForm.bugReason
-      const objData = { bugBaseInfo: this.staData, user: userData }
-      bugUpdate(objData).then(res => {
-        if (res.code === 200) {
-          this.statusDialogVisible = false
-          this.statusDialogForm = {}
-          this.$message({
-            showClose: true,
-            message: res.msg,
-            type: 'success'
-          })
-        } else if (res.code !== 200) {
-          this.$message({
-            showClose: true,
-            message: res.msg,
-            type: 'error'
-          })
-          this.getBugList()
-        }
-      })
-    },
-    resetQuery() {
-      this.$router.push({ path: this.$route.path })
-      this.stratAndEnd = []
-      let combination = {}
-      combination = deepClone(this.formInline)
-      this.formInline = { bugName: combination.bugName }
-      this.$set(this.formInline, 'bugId', combination.bugId)
-      this.$set(this.formInline, 'status', combination.status)
-      this.$set(this.formInline, 'priorityLevel', combination.priorityLevel)
-      this.curIndex = 1
-      this.getBugList()
-    },
-    getClient(e) {
-      this.$forceUpdate()
-      this.$set(this.formInline, 'appVersion', '')
-      const newArr = this.appClient.filter(
-        value => value.code === e
-      )
-      if (newArr && newArr[0]) {
-        this.Editionlist = newArr[0].childEnumInfos
-      }
-    },
-    test2(item, e) {
-      // 获取团队人员信息
-      if (typeof this.test[item.idap] === 'undefined') {
-        item.role = e
-        this.test[item.idap] = item
-      }
-      return item.idap
-    },
-    remoteMethod(query) {
-      // 人员查询
-      if (query !== '') {
-        this.loading = true
-        setTimeout(() => {
-          this.loading = false
-          memberQueryMemberInfoByIDAPorName({ memberIDAP: query }).then(res => {
-            const obj = {}
-            this.options = res.data.reduce((cur, next) => {
-              obj[next.idap] ? '' : (obj[next.idap] = true && cur.push(next))
-              return cur
-            }, [])
-          })
-        }, 100)
-      } else {
-        this.options = []
-      }
-    },
-    handlePictureCardPreview(file) {
-      this.dialogImageUrl = file.url
-      this.dialogVisible = true
-    },
-
-    // 文件上传时的钩子
-    progress(event, file, fileList) {
-      this.dis = true
-    },
-
-    // 上传成功回调
-    handleChange(response, file, fileList) {
-      this.fileDbList.push({
-        name: file.name,
-        url: 'http:' + file.response.url
-      })
-      this.accessory = JSON.stringify(this.fileDbList)
-      this.dis = false
-      this.$message({
-        showClose: true,
-        message: '文件上传成功',
-        type: 'success'
-      })
-    },
-    click_bugName(e) {
-      this.bugQuery = JSON.parse(
-        JSON.stringify(this.tableData.filter(value => value.id === e)[0])
-      )
-      this.drawerShow = true
-      // this.$store.state.data.bizId = true
-    },
-    createdDefect() {
-      this.modalShow = true
-      this.$nextTick(() => {
-        this.$refs.createdBug.init(1)
-      })
-    },
-    showSelect() {
-      this.bugDataGet()
-      this.DetailedScreening === false
-        ? (this.DetailedScreening = true)
-        : (this.DetailedScreening = false)
-      this.goodName === '更多筛选'
-        ? (this.goodName = '收起筛选')
-        : (this.goodName = '更多筛选')
-    },
-    handleSizeChange(val) {
-      this.pageSize = val
-      if (this.type === 'page') {
-        this.getBugList()
-      } else {
-        this.getBugSelfList()
-      }
-    },
-    handleCurrentChange(val) {
-      this.curIndex = val
-      if (this.type === 'page') {
-        this.getBugList()
-      } else {
-        this.getBugSelfList()
-      }
-    },
-    bugListSelect() {
-      settingGetBizList({}).then(res => {
-        this.bizIdEnumList = res.data // biz
-      })
-      taskListCreate({ bizId: Number(localStorage.getItem('bizId')) }).then(res => {
-        this.taskEnumList = res.data // 所属任务
-      })
-      bugGetEnum().then(res => {
-        this.bugEnumList = res.data.bugEnumList // status
-        this.bugTypeEnumList = res.data.theBugTypeEnumList // bug类型
-        this.bugStageEnumList = res.data.bugStageEnumList // 发现阶段
-        this.sysTypeEnumList = res.data.sysTypeEnumList // 端类型
-        this.discoveryMethEnumList = res.data.discoveryMethEnumList // 发现方式
-        this.priorityEnumList = res.data.priorityEnumList // 缺陷等级
-        this.priorityLevelEnumList = res.data.priorityLevelEnumList // 优先级
-        this.repairResultEnumList = res.data.repairResultEnumList // 修复结果
-        this.clientTypeEnumList = res.data.clientTypeEnumList // 版本
-        this.sysTypeEnumList = res.data.sysTypeEnumList // 客户端
-        this.bugReasonEnumList = res.data.bugReasonEnumList
-        this.bugDevRepairTimeList = res.data.bugDevRepairTimeList // 开发修复时长
-      })
-      releaseList().then(res => {
-        this.appClient = res.data.appClient // 客户端
-      })
-    },
-    bugDataGet() {
-      // 所属模块
-      settingQueryBizModuleList(Number(localStorage.getItem('bizId'))).then(
-        res => {
-          this.business_platform_Modular = res.data.map(item => ({
-            ...item,
-            value: item.id,
-            label: item.moduleName,
-            children:
-              item.childModules.length === 0
-                ? null
-                : item.childModules.map(item1 => ({
-                  ...item1,
-                  value: item1.id,
-                  label: item1.moduleName,
-                  children:
-                      item1.childModules.length === 0
-                        ? null
-                        : item1.childModules.map(item2 => ({
-                          ...item2,
-                          value: item2.id,
-                          label: item2.moduleName
-                        }))
-                }))
-          }))
-        }
-      )
-    },
-    async download() { // 下载导出Excel
-      const res = await bugDownload(this.indexPage)
-      const aLink = document.createElement('a')
-      const blob = new Blob([res], { type: 'application/vnd.ms-excel' })
-      aLink.href = URL.createObjectURL(blob)
-      aLink.download = '缺陷列表.xlsx'
-      aLink.style.display = 'none'
-      aLink.click()
-    },
-    saveSearch(formName) { // 保存筛选项
-      this.$refs[formName].validate((valid) => {
-        if (valid) {
-          this.stratAndEnd = this.stratAndEnd ? this.stratAndEnd : []
-          this.formInline.createStartTime = this.stratAndEnd[0] || null
-          this.formInline.createEndTime = this.stratAndEnd[1] || null
-          const isExistName = this.filterList.some(item => {
-            return item.name === this.searchForm.name
-          })
-          if (isExistName) {
-            this.$message({ showClose: true, message: '筛选项名称重名', type: 'error' })
-          } else {
-            this.toSave()
-          }
-        } else {
-          this.$message({ showClose: true, message: '筛选项名称不能为空', type: 'error' })
-          return false
-        }
-      })
-    },
-    async toSave() {
-      const saveObj = deepClone(this.formInline)
-      delete saveObj.curIndex
-      delete saveObj.pageSize
-      const res = await createFilter({
-        name: this.searchForm.name,
-        content: JSON.stringify(saveObj),
-        bizId: Number(localStorage.getItem('bizId'))
-      })
-      if (res.code === 200) {
-        this.$message({ showClose: true, message: '保存成功', type: 'success' })
-        this.showSaveSearch = false
-        this.getFilterList()
-        this.searchForm.name = null
-      }
-    },
-    async getFilterList() { // 获取过滤器列表
-      const params = {
-        bizId: Number(localStorage.getItem('bizId'))
-      }
-      const res = await getFilterList(params)
-      this.filterList = res.data
-    },
-    async getFilterItem(filterId) { // 获取单个过滤器
-      this.stratAndEnd = []
-      const combination = deepClone(this.formInline)
-      const { bugId, status, priorityLevel } = combination
-      this.formInline = { bugId, status, priorityLevel }
-      this.$router.push({ path: this.$route.path, query: { filterId: filterId }})
-      const res = await getFilterItem(filterId)
-      if (res.code === 200) {
-        const filter = JSON.parse(res.data.content)
-        if (filter.createStartTime && filter.createEndTime) {
-          this.stratAndEnd = [filter.createStartTime, filter.createEndTime]
-        }
-        this.getClient(filter.appId)
-        Object.assign(this.formInline, filter)
-        this.curIndex = 1
-        this.getBugList()
-      }
-    },
-    deleteFilter() {
-      this.$router.push({ path: this.$route.path })
-      this.getFilterList()
-    },
-    createdCode() {
-      this.$router.push({ name: '新增复盘', params: { formData: this.form }, query: { id: this.form.id }})
-    }
-  }
-}
-</script>
-<style scoped lang="scss">
-.high {
-  background-color: #F56C6C;
-}
-.medium {
-  background-color: #FF8952;
-}
-.low {
-  background-color: #7ED321;
-}
-.save-search {
-  float: left;
-}
-.filter {
-  font-size: 14px;
-  width: 100%;
-  padding: 0 11px 15px 15px;
-  color: #606266;
-  cursor: pointer;
-  .mine-filter {
-    .filter-item {
-      display: inline-block;
-      width: 15%;
-      color: #409EFF;
-      margin-right: 15px;
-      overflow: hidden;
-      text-overflow:ellipsis;
-      white-space: nowrap;
-      margin-bottom: 5px;
-    }
-  }
-}
-
-</style>
-<style lang="scss">
-.btns .el-input--suffix .el-input__inner {
-  padding-right: 10px;
-  padding-left: 10px;
-  width: 73px;
-}
-// .btns .el-input__suffix {
-//     // display: none;
-//     visibility: hidden;
-// }
-// .btns :hover {
-//  /deep/ .el-input__suffix {
-//     // display: inline-block;
-//     visibility: inherit;
-//   }
-// }
-.item{
-  /deep/ input {
-    color: rgb(126, 211, 33);
-    border: 1px solid rgb(126, 211, 33);
-     border-color: rgb(126, 211, 33) !important;
-         font-weight: 900;
-  }
-  /deep/ .el-input__suffix {
-    color: rgb(126, 211, 33) !important;
-    right: 1px;
-  }
-  /deep/ .el-select__caret {
-    color: rgb(126, 211, 33) !important;
-  }
-}
-.item1 {
-  /deep/ input {
-    color: rgb(255, 204, 102);
-     border: 1px solid rgb(255, 204, 102);
-     border-color: rgb(255, 204, 102) !important;
-         font-weight: 900;
-  }
-  /deep/ .el-input__suffix {
-    color: rgb(255, 204, 102) !important;
-    right: 1px;
-  }
-  /deep/ .el-select__caret {
-    color: rgb(255, 204, 102) !important;
-  }
-}
-.item2 {
-  /deep/ input {
-    color: rgb(245, 108, 108);
-    border: 1px solid rgb(245, 108, 108);
-    border-color: rgb(245, 108, 108) !important;
-        font-weight: 900;
-  }
-   /deep/ .el-input__suffix {
-    color: rgb(245, 108, 108) !important;
-    right: 1px;
-  }
-  /deep/ .el-select__caret {
-   color: rgb(245, 108, 108) !important;
-  }
-}
-.item3 {
-  /deep/ input {
-    color: #D675F0;
-    border: 1px solid #D675F0;
-    border-color: #D675F0 !important;
-        font-weight: 900;
-  }
-    /deep/ .el-input__suffix {
-    color: #D675F0 !important;
-    right: 1px;
-  }
-   /deep/ .el-select__caret {
-   color: #D675F0 !important;
-  }
-}
-.item-color {
-  /deep/ input {
-    color: rgb(106, 180, 255);
-    border: 1px solid rgb(106, 180, 255);
-    border-color: rgb(106, 180, 255) !important;
-        font-weight: 900;
-  }
-    /deep/ .el-input__suffix {
-    color: rgb(106, 180, 255) !important;
-    right: 1px;
-  }
-   /deep/ .el-select__caret {
-   color: rgb(106, 180, 255) !important;
-  }
-}
-</style>

+ 0 - 505
src/views/problemSystem/evaluationCreate.vue

@@ -1,505 +0,0 @@
-<template>
-  <el-container direction="vertical" class="workbench_team">
-    <el-main v-loading="loading.describe" :style="type=='page'?{'padding': '20px 30px','margin-top': '10px'}:{'padding-left':'20px'}" class="layout_main">
-      <div class="module_title">
-        <div class="module_title__sign" />
-        <div class="module_title__caption">事件描述</div>
-      </div>
-      <el-input v-model="input" placeholder="点击输入" />
-    </el-main>
-
-    <el-main class="layout_main" style="margin-top: 10px">
-      <div class="module_title">
-        <div class="module_title__sign" />
-        <div class="module_title__caption">时间线回顾</div>
-      </div>
-      <div style="display: flex">
-        <el-date-picker v-model="value1" type="datetime" placeholder="选择日期时间" editable format="MM-dd-HH:mm" />
-        <el-input v-model="input1" placeholder="点击输入" />
-        </el-date-picker></div>
-      <div style="display: flex">
-        <el-date-picker v-model="value2" type="datetime" placeholder="选择日期时间" editable format="MM-dd-HH:mm" />
-        <el-input v-model="input2" placeholder="点击输入" />
-      </div>
-      <div style="display: flex">
-        <el-date-picker v-model="value3" type="datetime" placeholder="选择日期时间" editable format="MM-dd-HH:mm" />
-        <el-input v-model="input3" placeholder="点击输入" />
-      </div>
-
-    </el-main>
-    <el-main class="layout_main" style="margin-top: 10px">
-      <div class="module_title">
-        <div class="module_title__sign" />
-        <div class="module_title__caption">事件影响</div>
-      </div>
-      <el-input v-model="input" placeholder="点击输入" />
-    </el-main>
-    <el-main class="layout_main" style="margin-top: 10px">
-      <div class="module_title">
-        <div class="module_title__sign" />
-        <div class="module_title__caption">改进项</div>
-      </div>
-    </el-main>
-    <div style="margin-left:80%;margin-top:3%">
-      <el-button size="mini" type="primary">确 认</el-button>
-      <el-button size="mini" type="danger" @click="$router.go(-1)">取 消</el-button>
-    </div>
-    <div style="margin-top:2%" />
-  </el-container>
-</template>
-
-<script>
-import workbenchApi from '@/api/workbench.js'
-import { settingGetBizList } from '@/api/defectManage'
-import GanttElastic from 'gantt-elastic'
-import GanttHeader from 'gantt-elastic-header'
-import dayjs from 'dayjs'
-import E from 'wangeditor'
-export default {
-  components: {
-    ganttElasticHeader: GanttHeader,
-    ganttElastic: GanttElastic
-  },
-  data() {
-    return {
-      timeSelectVal: [new Date(), dayjs(new Date()).add(29, 'day')],
-      pickerOptions: {
-        disabledDate(time) {
-          return time.getTime() < Date.now() - 24 * 60 * 60 * 1000
-        }
-      },
-      tasks: [], // 甘特图任务
-      value1: '',
-      value2: '',
-      value3: '',
-      input: '',
-      input1: '',
-      input2: '',
-      input3: '',
-
-      options: {
-        locale: {
-          name: 'zh_cn',
-          weekdays: ['周天', '周一', '周二', '周三', '周四', '周五', '周六'],
-          months: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']
-        },
-        maxRows: 100,
-        maxHeight: 460,
-        title: {
-          label: 'Your project title as html (link or whatever...)',
-          html: false
-        },
-        bug: {
-          sdkVersion: 1
-        },
-        row: {
-          height: 24
-        },
-        calendar: {
-          hour: {
-            display: true
-          }
-        },
-        chart: {
-          progress: {
-            bar: false
-          },
-          expander: {
-            display: true
-          }
-        },
-        taskList: {
-          expander: {
-            straight: false
-          },
-          columns: [
-            {
-              id: 1,
-              label: '团队成员',
-              value: 'user',
-              width: 80,
-              style: {
-                'task-list-header-label': {
-                  'text-align': 'center',
-                  width: '100%'
-                },
-                'task-list-item-value-container': {
-                  'font-weight': '500'
-                }
-              }
-            },
-            {
-              id: 2,
-              label: '任务名称',
-              value: 'labelName',
-              width: 180,
-              expander: true,
-              style: {
-                'task-list-header-label': {
-                  'text-align': 'center',
-                  width: '100%'
-                }
-              }
-            },
-            {
-              id: 3,
-              label: '开始时间',
-              value: 'startDate',
-              width: 90,
-              style: {
-                'task-list-header-label': {
-                  'text-align': 'center',
-                  width: '100%'
-                },
-                'task-list-item-value-container': {
-                  'text-align': 'center',
-                  width: '100%'
-                }
-              }
-            },
-            {
-              id: 4,
-              label: '结束时间',
-              value: 'endDate',
-              width: 90,
-              style: {
-                'task-list-header-label': {
-                  'text-align': 'center',
-                  width: '100%'
-                },
-                'task-list-item-value-container': {
-                  'text-align': 'center',
-                  width: '100%'
-                }
-              }
-            },
-            {
-              id: 5,
-              label: '使用/工作日/全部',
-              value: 'needLegalAllDays',
-              width: 130,
-              style: {
-                'task-list-header-label': {
-                  'text-align': 'center',
-                  width: '100%'
-                },
-                'task-list-item-value-container': {
-                  'text-align': 'center',
-                  width: '100%'
-                }
-              }
-            }
-          ]
-        }
-      }, // 甘特图配置
-      ganttHeaderStyle: {
-      },
-      props: {
-        id: {
-          type: String,
-          default: '0'
-        },
-        type: {
-          type: String,
-          default: 'page'
-        },
-        drawerShow: {
-          type: Boolean,
-          default: false
-        }
-      },
-      colorList: ['rgba(255,82,0,0.5)', 'rgba(227,131,247,0.5)', 'rgba(68,190,255,0.5)', 'rgba(122,221,13,0.5)', 'rgba(245,108,108,0.5)'],
-      radio1: '忙碌',
-      radio2: '今天',
-      loading: {
-        drawer: false,
-        fullscreen: false,
-        title: false,
-        details: false,
-        userInfo: false,
-        time: false,
-        appInfo: false,
-        describe: false,
-        accessory: false
-      },
-      radio2TF: true,
-      radio3: '日',
-      bugDescribeNoHtml: '',
-      bugDescribe: '',
-      describeEditorVisible: false,
-      searchForm: {
-        teamId: null,
-        bizId: null
-      },
-      idleSearchForm: {
-        startTime: null,
-        endTime: null
-      },
-      searchEnum: {
-        teams: [],
-        businesslines: []
-      },
-      username: localStorage.getItem('username'),
-      teamWorkList: [],
-      ganttShow: false
-    }
-  },
-  mounted() {
-    // this.queryTeamInfoList(0)
-    // this.settingGetBizList()
-    this.queryTeamWorkList()
-  },
-  methods: {
-    openQueryDialog() {
-      this.modalShow = true
-      this.$nextTick(() => {
-        this.$refs.createdBug.init(2, this.bug)
-      })
-    },
-    RichText() {
-      this.editor = new E('#wage', '#wage1')
-      this.editor.customConfig.zIndex = 0
-      this.editor.customConfig.menus = [
-        'bold',
-        'italic',
-        'underline',
-        'link',
-        'list',
-        'justify',
-        'table',
-        'foreColor'
-      ]
-      this.editor.customConfig.onchange = html => {
-        this.bugDescribe = html
-      }
-      this.editor.customConfig.onblur = html => {
-        this.describeEditorVisible = false
-      }
-      this.editor.create()
-      this.editor.txt.html(this.bugDescribe === null ? '' : this.bugDescribe)
-    },
-    tasksUpdate(tasks) {
-      this.tasks = tasks
-    },
-    optionsUpdate(options) {
-      this.options = options
-    },
-    styleUpdate(style) {
-      this.dynamicStyle = style
-    },
-    radioChange(val) {
-      if (val === '忙碌') {
-        this.queryTeamWorkList()
-          .then(res => {
-            this.changeDateLength('日')
-            this.changeDateLength(this.radio3)
-          })
-      } else if (val === '空闲') {
-        this.queryTeamIdleList()
-          .then(res => {
-            this.changeDateLength('日')
-            this.changeDateLength(this.radio3)
-          })
-      }
-      if (val === '今天') {
-        this.$refs.ganttHeader.recenterPosition()
-      }
-      this.changeDateLength(val)
-    },
-    changeDateLength(val) {
-      if (val === '月') {
-        this.$refs.ganttHeader.scale = 21
-      }
-      if (val === '周') {
-        this.$refs.ganttHeader.scale = 19
-      }
-      if (val === '日') {
-        this.$refs.ganttHeader.scale = 17
-      }
-    },
-    describeCancel() {
-      this.bugDescribe = this.bug.bugDescribe
-      this.describeEditorVisible = false
-    },
-    // queryTeamInfoList(type) {
-    //   const data = { type: type, curIndex: 1, pageSize: 9999 }
-    //   workbenchApi.queryTeamInfoList(data).then(res => {
-    //     if (res.data) {
-    //       this.searchEnum.teams = res.data.list
-    //       this.searchEnum.teams.unshift({
-    //         teamId: null,
-    //         teamName: '全部'
-    //       })
-    //     }
-    //   })
-    // },
-    // settingGetBizList() {
-    //   settingGetBizList({}).then(res => {
-    //     if (res.data) {
-    //       this.searchEnum.businesslines = res.data
-    //       this.searchEnum.businesslines.unshift({
-    //         code: null,
-    //         name: '全部'
-    //       })
-    //     }
-    //   })
-    // },
-    queryTeamWorkList() {
-      return workbenchApi.queryTeamWorkList(this.searchForm)
-        .then(res => {
-          if (res.data) {
-            this.createTasks(res, '忙碌')
-          }
-          return res
-        })
-    },
-    queryTeamIdleList() {
-      this.idleSearchForm.startTime = dayjs(this.timeSelectVal[0]).format('YYYY.MM.DD')
-      this.idleSearchForm.endTime = dayjs(this.timeSelectVal[1]).format('YYYY.MM.DD')
-      return workbenchApi.queryTeamIdleList({
-        timeInfo: this.idleSearchForm,
-        teamWorkQueryInfo: this.searchForm
-      }).then(res => {
-        if (res.data) {
-          this.createTasks(res, '空闲')
-        }
-        return res
-      })
-    },
-    createTasks(res, mode) {
-      const today = new Date()
-      const colorlist = ['#A1DEFF', '#FAB5B5', '#BCED86', '#FFA87F', '#8E44AD', '#1EBC61', '#0287D0']
-      this.ganttShow = false
-      this.tasks = []
-      let count = 0
-      for (const i in res.data) {
-        let label = ''
-        if (mode === '忙碌') {
-          label = res.data[i].workNum.taskWorkNum + '个任务、' + res.data[i].workNum.selfWorkNum + '个日程'
-        } else {
-          label = res.data[i].workNum.taskWorkNum + '个空闲时段'
-        }
-        const color = colorlist[count % colorlist.length]
-        const parentItem = {
-          id: count++,
-          labelName: label,
-          label: res.data[i].workNum.startTime && res.data[i].workNum.endTime ? label : '',
-          user: res.data[i].userInfo.ldapName,
-          collapsed: true,
-          progress: 0,
-          needLegalAllDays: res.data[i].workNum.needDays + '/' + res.data[i].workNum.legalDays + '/' + res.data[i].workNum.allDays,
-          start: res.data[i].workNum.startTime ? dayjs(res.data[i].workNum.startTime).toDate().getTime() : today.getTime(),
-          duration: res.data[i].workNum.endTime ? dayjs(res.data[i].workNum.endTime).toDate().getTime() - dayjs(res.data[i].workNum.startTime).toDate().getTime() : 0,
-          startDate: res.data[i].workNum.startTime ? dayjs(res.data[i].workNum.startTime).format('YYYY-MM-DD') : '',
-          endDate: res.data[i].workNum.endTime ? dayjs(res.data[i].workNum.endTime).format('YYYY-MM-DD') : '',
-          type: 'task',
-          style: {
-            base: {
-              fill: color
-            }
-          }
-        }
-        this.tasks.push(parentItem)
-        for (const j in res.data[i].workData) {
-          const labelNameType = res.data[i].workData[j].origin ? '日程' : '任务'
-          let labelName = '【' + labelNameType + '】' + res.data[i].workData[j].name
-          if (res.data[i].workData[j].type) {
-            labelName = labelName + '-' + res.data[i].workData[j].type
-          }
-          if (res.data[i].workData[j].desc) {
-            labelName = labelName + '-' + res.data[i].workData[j].desc
-          }
-          const item = {
-            id: count++,
-            parentId: parentItem.id,
-            labelName: labelName,
-            label: res.data[i].workData[j].name,
-            user: parentItem.user,
-            progress: 0,
-            needLegalAllDays: res.data[i].workData[j].needDays + '/' + res.data[i].workData[j].legalDays + '/' + res.data[i].workData[j].allDays,
-            start: dayjs(res.data[i].workData[j].startTime).toDate().getTime(),
-            duration: dayjs(res.data[i].workData[j].endTime).toDate().getTime() - dayjs(res.data[i].workData[j].startTime).toDate().getTime(),
-            startDate: dayjs(res.data[i].workData[j].startTime).format('YYYY-MM-DD'),
-            endDate: dayjs(res.data[i].workData[j].endTime).format('YYYY-MM-DD'),
-            type: 'task',
-            style: {
-              base: {
-                fill: color
-              }
-            }
-          }
-          this.tasks.push(item)
-        }
-        this.ganttShow = true
-      }
-    }
-  }}
-</script>
-
-<style>
-.gantt-view-header .el-date-editor {
-  padding-top: 0;
-  padding-bottom: 0;
-  height: 35px;
-  width: 240px;
-}
-.gantt-view-header .el-date-editor input {
-  height: 32px;
-  width: 90px;
-}
-.gantt-view-header .el-date-editor .el-range__close-icon {
-  display: none;
-}
-</style>
-
-// 布局
-<style scoped lang="scss">
-/deep/ .el-input {
-  input {
-    border: none;
-  }
-}
-.workbench_team {
-  background-color: #f2f3f6;
-  padding: 10px;
-}
-.workbench_team .layout_main,
-.layout_aside {
-  border-radius: 4px;
-  background-color: #ffffff;
-}
-</style>
-
-// 公共部分
-<style scoped>
-.module_title {
-  display: flex;
-  align-items: center;
-  margin-bottom: 20px;
-}
-.module_title__sign {
-  width: 4px;
-  height: 15px;
-  background: #409eff;
-  border-radius: 1px;
-}
-.module_title__caption {
-  width: 83px;
-  height: 18px;
-  font-size: 16px;
-  font-family: MicrosoftYaHei;
-  color: rgba(51, 59, 74, 1);
-  margin-left: 6px;
-  font-weight: 500;
-}
-.bug_describe_content {
-  border-radius: 4px;
-  border: 1px solid transparent;
-}
-.layout_main .el-form-item{
-  margin-bottom:0px;
-}
-.layout_main .el-divider--horizontal{
-  margin:10px 0 5px 0;
-}
-</style>

+ 0 - 1174
src/views/problemSystem/problemList.vue

@@ -1,1174 +0,0 @@
-<template>
-  <div>
-    <el-container class="bgColor">
-      <el-header v-if="type === 'page'" style="height: auto; margin-top: 1%; padding: 0 1%">
-        <el-row class="headerBg">
-          <el-col :span="24" style="margin-left:2%">
-            <el-button
-              type="primary"
-              size="mini"
-
-              @click="create()"
-            >新建问题</el-button>
-          </el-col>
-          <el-form :inline="true" :model="queryData" style="margin-top:5%;margin-left:2%">
-            <div style="margin: 1.5% 0;" class="flex_start">
-              <div class="Layout">
-                <div class="queryName">所属业务</div>
-                <el-select v-model="queryData.business" size="medium" placeholder="请选择" style="width:19vw">
-                  <el-option label="区域一" value="shanghai" />
-                  <el-option label="区域二" value="beijing" />
-                </el-select>
-              </div>
-              <div class="Layout marginLeft">
-                <div class="queryName">问题来源</div>
-                <el-select v-model="queryData.problemSource" size="medium" placeholder="请选择" style="width:19vw">
-                  <el-option label="区域一" value="shanghai" />
-                  <el-option label="区域二" value="beijing" />
-                </el-select>
-              </div>
-              <div class="Layout marginLeft">
-                <div class="queryName">问题类型</div>
-                <el-select v-model="queryData.problemType" size="medium" placeholder="请选择" style="width:19vw">
-                  <el-option label="区域一" value="shanghai" />
-                  <el-option label="区域二" value="beijing" />
-                </el-select>
-              </div>
-            </div>
-            <div style="margin: 1.5% 0;" class="flex_start">
-              <div class="Layout">
-                <div class="queryName">紧急程度</div>
-                <el-select v-model="queryData.handleLevel" size="medium" placeholder="请选择" style="width:19vw">
-                  <el-option label="区域一" value="shanghai" />
-                  <el-option label="区域二" value="beijing" />
-                </el-select>
-              </div>
-              <div class="Layout marginLeft">
-                <div class="queryName">问题级别</div>
-                <el-select v-model="queryData.problemLevel" size="medium" placeholder="请选择" style="width:19vw">
-                  <el-option label="区域一" value="shanghai" />
-                  <el-option label="区域二" value="beijing" />
-                </el-select>
-              </div>
-              <div class="Layout marginLeft">
-                <div class="queryName">问题状态</div>
-                <el-select v-model="queryData.status" size="medium" placeholder="请选择" style="width:19vw">
-                  <el-option label="区域一" value="shanghai" />
-                  <el-option label="区域二" value="beijing" />
-                </el-select>
-              </div>
-            </div>
-            <div style="margin: 1.5% 0;" class="flex_start">
-              <div class="Layout">
-                <div class="queryName">是否复盘</div>
-                <el-select v-model="queryData.isReplay" size="medium" placeholder="请选择" style="width:19vw">
-                  <el-option label="区域一" value="shanghai" />
-                  <el-option label="区域二" value="beijing" />
-                </el-select>
-              </div>
-              <div class="Layout marginLeft">
-                <div class="queryName">问题名称</div>
-                <el-input v-model="queryData.problemName" size="medium" placeholder="请输入" style="width:19vw" />
-
-              </div>
-              <div class="Layout marginLeft">
-                <div class="queryName">创建时间</div>
-                <el-date-picker
-                  v-model="queryData.gmtCreate"
-                  style="width:19vw"
-                  size="medium"
-                  type="daterange"
-                  range-separator="-"
-                  start-placeholder="开始日期"
-                  end-placeholder="结束日期"
-                />
-              </div>
-              <!-- <el-button type="primary" style="margin-top:-25%;margin-left:150%">筛选</el-button> -->
-            </div>
-          </el-form>
-        </el-row></el-header>
-      <el-main :style="type === 'page'?{padding: '1%'}:{padding: '0'}">
-        <el-row class="headerBg table_v" style=" padding-top: 0px;">
-          <el-col :span="24" style="min-height: 47vh;">
-            <div v-if="type !== 'page'" style="position: relative;top: 5px;right: 10px">
-              <el-divider />
-            </div>
-            <el-table
-              :key="Math.random()"
-              size="small"
-              :data="tableData"
-              style="width: 100%; font-size: 14px; color:rgba(102,102,102,1);"
-              show-overflow-tooltip="true"
-              :header-cell-style="{ color: '#4A4A4A', fontSize: '14px', fontWeight: '500' }"
-            >
-              <el-table-column label="紧急程度" prop="handleLevel" min-width="100" sortable align="center">
-                <template slot-scope="scope" style="text-align: center;">
-                  <span class="div_priority" :class="[{'high': scope.row.handleLevel === 1},{'medium': scope.row.handleLevel === 2},{'low': scope.row.handleLevel === 3}]">
-                    {{ levelMaps.get(scope.row.handleLevel) }}
-                  </span>
-                </template>
-              </el-table-column>
-              <el-table-column
-                prop="problemName"
-                label="问题名称"
-                min-width="120"
-                align="center"
-                show-overflow-tooltip
-              >
-                <template slot-scope="scope">
-                  <span
-                    class="bugNameSty"
-                    @click.stop="click_bugName(scope.row.id)"
-                  >{{ scope.row.problemName }}</span>
-                </template>
-              </el-table-column>
-              <el-table-column
-                prop="problemSource"
-                label="来源"
-                min-width="100"
-                align="center"
-                show-overflow-tooltip
-              >
-                <template slot-scope="scope">
-                  <span>{{ sourceMaps.get(scope.row.problemSource) }}</span>
-                </template>
-              </el-table-column>
-              <el-table-column prop="problemType" min-width="100" label="问题类型" align="center">
-                <template slot-scope="scope">
-                  <span>{{ typeMaps.get(scope.row.problemType) }}</span>
-                </template>
-              </el-table-column>
-              <el-table-column prop="problemStatus" min-width="130" label="状态" align="center">
-                <template slot-scope="scope">
-                  <el-select
-                    v-model="scope.row.problemStatus"
-                    :class="{
-                      'item-color': scope.row.problemStatus === 0 || scope.row.problemStatus === 1,
-                      'item': scope.row.problemStatus === 3,
-                      'item1': scope.row.problemStatus === 2,
-                      'item2': scope.row.problemStatus === 4,
-                      'item3': scope.row.problemStatus === 5
-                    }"
-                    class="btns"
-                    size="mini"
-                    @change="blurEvent(scope.row, scope.row.status)"
-                  >
-                    <el-option v-for="item in pStatusOptions" :key="item.value" :label="item.label" :value="item.value" />
-                  </el-select>
-                </template>
-              </el-table-column>
-              <el-table-column prop="business" label="所属业务" align="center" min-width="120" show-overflow-tooltip />
-              <el-table-column prop="problemLevel" label="问题级别" min-width="80" align="center">
-                <template slot-scope="scope">
-                  <span>{{ gradeMaps.get(scope.row.problemLevel) }}</span>
-                </template>
-              </el-table-column>
-              <el-table-column prop="isReplay" label="是否复盘" min-width="80" align="center">
-                <template slot-scope="scope">
-                  <span>{{ replayMaps.get(scope.row.isReplay) }}</span>
-                </template>
-              </el-table-column>
-              <el-table-column prop="creater" label="提报人" min-width="100" align="center" />
-              <el-table-column prop="currentHandler" label="处理人" min-width="100" align="center" show-overflow-tooltip />
-              <el-table-column prop="gmtCreate" label="创建日期" min-width="170" align="center">
-                <template slot-scope="scope">{{ scope.row.gmtCreate | formatDate }}</template>
-              </el-table-column>
-              <el-table-column label="操作" align="center" min-width="150px">
-                <template slot-scope="{row}">
-                  <el-button type="text" size="mini" @click="update(row)">编辑</el-button>
-                  <el-button type="text" size="mini">复盘</el-button>
-                </template>
-              </el-table-column>
-            </el-table>
-          </el-col>
-          <el-col :span="16">
-            <div align="right">
-              <el-pagination
-                :page-sizes="[15, 30, 45, total]"
-                :current-page="curIndex"
-                :page-size="pageSize"
-                background
-                layout="total, sizes, prev, pager, next, jumper"
-                :total="total"
-                @size-change="handleSizeChange"
-                @current-change="handleCurrentChange"
-              />
-            </div>
-          </el-col>
-        </el-row>
-      </el-main>
-    </el-container>
-    <createdBug v-show="modalShow" ref="createdBug" :get-bug-list="getBugList" />
-    <el-drawer
-      :visible.sync="drawerShow"
-      :modal="false"
-      :with-header="false"
-      size="50%"
-      class="bug_manage_drawer"
-      @click.stop
-    >
-      <div @click.stop>
-        <bug-details
-          :id="bugQuery.id+''"
-          ref="bugDetails"
-          :type="'drawer'"
-          :drawer-show="drawerShow"
-          @close="drawerShow = false"
-          @delete="drawerShow = false;type === 'page'?getBugList():getBugSelfList()"
-          @update="type === 'page'?getBugList():getBugSelfList()"
-        />
-      </div>
-    </el-drawer>
-    <el-dialog
-      v-if="statusDialogVisible"
-      :visible.sync="statusDialogVisible"
-      width="33%"
-      class="bug_manage_dialog"
-      :append-to-body="true"
-      :close-on-click-modal="false"
-      @close="modalClose"
-    >
-      <template v-slot:title>
-        <div style="display:flex;align-items: center;">
-          <div style="width:4px;height:15px;background:#409EFF;border-radius:1px;" />
-          <div style="width:83px;height:18px;font-size:16px;font-family:MicrosoftYaHei;color:rgba(51,59,74,1);margin-left:6px">{{ statusDialogTitle }}</div>
-        </div>
-      </template>
-      <el-form label-width="110px" label-position="left" :model="statusDialogForm" :rules="rules">
-        <el-form-item v-if="statusDialogTitle === '待测试' || statusDialogTitle === '已完成'" label="缺陷原因" prop="bugReason">
-          <el-select v-model="statusDialogForm.bugReason" style="width: 100%">
-            <el-option v-for="item in bugReasonEnumList" :key="item.code" :label="item.name" :value="item.code" />
-          </el-select>
-        </el-form-item>
-        <el-form-item v-if="statusDialogTitle === '待测试'" label="修复方式" class="bug_manage_dialog bug_manage_dialog_fixMethod">
-          <el-input v-model="statusDialogForm.reasonOrDesc" type="textarea" placeholder="请输入具体原因和修复方式" maxlength="300" show-word-limit rows="4" />
-        </el-form-item>
-        <el-form-item v-if="statusDialogTitle === '已完成'" label="修复结果" prop="repairResult" class="bug_manage_dialog">
-          <el-select v-model="statusDialogForm.repairResult" style="width: 100%">
-            <el-option v-for="item in repairResultEnumList" :key="item.code" :label="item.name" :value="item.code" />
-          </el-select>
-        </el-form-item>
-        <el-form-item v-if="statusDialogTitle === 'Reopen'" label="Reopen原因" prop="reasonOrDesc">
-          <el-input v-model="statusDialogForm.reasonOrDesc" type="textarea" placeholder="请输入Reopen" maxlength="300" show-word-limit rows="4" />
-        </el-form-item>
-      </el-form>
-      <template v-slot:footer>
-        <el-button @click="getBugList(),statusDialogVisible = false">取 消</el-button>
-        <el-button type="primary" @click="statusDialogConfirm">确 定</el-button>
-      </template>
-    </el-dialog>
-
-    <el-dialog :visible.sync="dialogFormVisible" width="70%" :close-on-click-modal="false">
-      <div style="margin: 0% 7% 2% 2.5%;display:flex;align-items: center;">
-        <div style="width:4px;height:17px;background:#409EFF;border-radius:1px;" />
-        <div style="width:83px;height:20px;font-size:18px;font-family:MicrosoftYaHei;color:rgba(51,59,74,1);margin-left:6px">新建问题</div>
-      </div>
-      <el-form
-        ref="form"
-        :model="formData"
-        :rules="rules_form"
-        :label-width="formLabelWidth"
-        label-position="left"
-        style="margin: 0 3%;"
-      >
-        <el-form-item label="名称" prop="problemName">
-          <el-input v-model="formData.problemName" autocomplete="off" />
-        </el-form-item>
-        <div style="display: flex;">
-          <div style="flex; 1;">
-            <el-form-item label="问题来源" prop="problemSource">
-              <el-select v-model="formData.problemSource" clearable placeholder="请选择" style="width: 100%">
-                <el-option
-                  v-for="item in arr_prjectType"
-                  :key="item.value"
-                  :label="item.name"
-                  :value="item.value"
-                />
-              </el-select>
-            </el-form-item>
-            <el-form-item label="紧急程度" prop="handleLevel">
-              <el-select v-model="formData.handleLevel" clearable placeholder="请选择" style="width:19vw">
-                <el-option
-                  v-for="item in all_bizId"
-                  :key="item.code"
-                  :label="item.name"
-                  :value="item.code"
-                />
-              </el-select>
-            </el-form-item>
-            <el-form-item label="处理人" prop="currentHandler">
-              <el-select
-                v-model="formData.currentHandler"
-                filterable
-                remote
-                clearable
-                placeholder="请输入姓名或邮箱前缀"
-                :remote-method="remoteMethod"
-                :loading="loading"
-                style="width: 100%"
-                @focus="optionsClear"
-              >
-                <el-option
-                  v-for="item in options"
-                  :key="item.idap"
-                  :label="item.name"
-                  :value="test2(item, 0)"
-                >
-                  <div class="flex_start">
-                    <div class="deptName">{{ item.deptName }}</div>
-                    <div style="min-width:80px">{{ item.name }}</div>
-                    <div class="deptName">{{ item.idap }}</div>
-                  </div>
-                </el-option>
-              </el-select>
-            </el-form-item>
-            <el-form-item label="问题级别">
-              <el-select v-model="formData.handleLevel" clearable placeholder="请选择" style="width:19vw">
-                <el-option
-                  v-for="item in all_bizId"
-                  :key="item.code"
-                  :label="item.name"
-                  :value="item.code"
-                />
-              </el-select>
-            </el-form-item>
-
-          </div>
-          <div style="flex; 1; margin: 0 0 0 auto;">
-            <el-form-item label="问题类型" prop="problemType">
-              <el-select v-model="formData.problemType" clearable placeholder="请选择" style="width:19vw">
-                <el-option
-                  v-for="item in arr_priority"
-                  :key="item.value"
-                  :label="item.name"
-                  :value="item.value"
-                />
-              </el-select>
-            </el-form-item>
-            <el-form-item label="所属业务" prop="business">
-              <el-select v-model="formData.business" clearable placeholder="请选择" style="width:19vw">
-                <el-option
-                  v-for="item in all_bizId"
-                  :key="item.code"
-                  :label="item.name"
-                  :value="item.code"
-                />
-              </el-select>
-            </el-form-item>
-            <el-form-item label="责任人" prop="owner">
-              <el-select
-                v-model="formData.owner"
-                filterable
-                clearable
-                remote
-                placeholder="请输入姓名或邮箱前缀"
-                :remote-method="remoteMethod"
-                :loading="loading"
-                style="width: 100%"
-                @focus="optionsClear"
-              >
-                <el-option
-                  v-for="item in options"
-                  :key="item.idap"
-                  :label="item.name"
-                  :value="test2(item, 0)"
-                >
-                  <div class="flex_start">
-                    <div class="deptName">{{ item.deptName }}</div>
-                    <div style="min-width:80px">{{ item.name }}</div>
-                    <div class="deptName">{{ item.idap }}</div>
-                  </div>
-                </el-option>
-              </el-select>
-            </el-form-item>
-            <el-form-item label="完成时间">
-              <el-select v-model="formData.completeTime" clearable placeholder="请选择" style="width:19vw">
-                <el-option
-                  v-for="item in all_bizId"
-                  :key="item.code"
-                  :label="item.name"
-                  :value="item.code"
-                />
-              </el-select>
-            </el-form-item>
-          </div>
-        </div>
-        <el-form-item label="项目描述">
-          <el-input v-model="form.description" type="textarea" placeholder="请输入" show-word-limit />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" style="padding: 0 27px;">
-        <el-button @click="dialogFormVisible = false">取 消</el-button>
-        <el-button type="primary" @click="created_problem(formData)">创 建</el-button>
-      </div>
-    </el-dialog>
-
-    <normal-dialog
-      :show-dialog="showSaveSearch"
-      :title="'保存筛选项'"
-      :width="'35%'"
-      @confirm="saveSearch('searchForm')"
-      @cancel="showSaveSearch=false"
-    >
-      <div v-if="showSaveSearch" class="file-dialog">
-        <el-form ref="searchForm" :model="searchForm" :rules="searchFormRules" label-width="100px">
-          <el-form-item label="过滤器名称" prop="name">
-            <el-input v-model="searchForm.name" placeholder="不超过50个字符" />
-          </el-form-item>
-        </el-form>
-      </div>
-    </normal-dialog>
-    <normal-dialog
-      :show-footer="false"
-      :show-dialog="showEditSearch"
-      :title="'管理过滤器'"
-      :width="'65%'"
-      @cancel="showEditSearch=false"
-    >
-      <filter-list :show-filter="showEditSearch" @deleteFilter="deleteFilter" />
-    </normal-dialog>
-  </div>
-</template>
-
-<script>
-import BugDetails from './details/index'
-import normalDialog from '@/components/dialog/normalDialog'
-import filterList from '@/views/projectManage/bugList/details/filterList'
-import { deepClone } from '@/utils/global'
-import dayjs from 'dayjs'
-import {
-  createProblem,
-  modProblem,
-  updateProblemStatus,
-  queryProblem,
-  queryProblemById,
-  ProblemList,
-  getQueryProblemName
-} from '@/api/problemList'
-// import { getCommentList } from '@/api/requirement.js'
-import { memberQueryMemberInfoByIDAPorName } from '@/api/projectIndex'
-import '@/views/projectManage/bugList/css/index.css'
-export default {
-  components: {
-    BugDetails,
-    normalDialog,
-    filterList
-  },
-  filters: {
-    oneA(value) {
-      if (!value) return ''
-      var da = value.substring(0, 1)
-      return da
-    },
-    naspOut(value) {
-      if (!value) return ''
-      var da = value.split(/\s+/)
-      return da[0]
-    },
-    formatDate(e) {
-      return dayjs(e).format('YYYY-MM-DD HH:mm:ss')
-    }
-  },
-  props: {
-    type: {
-      type: String,
-      default: 'page'
-    }
-  },
-  data() {
-    return {
-      sourceMaps: new Map([[1, '线上问题'], [2, '压测问题'], [0, '其他']]),
-      typeMaps: new Map([[1, '其他'], [2, '代码错误'], [4, '配置问题'], [8, '第三方问题(内部)'], [16, '第三方问题(内部)'], [32, '操作错误'], [64, '优化改进']]),
-      gradeMaps: new Map([[0, 'P0'], [1, 'P1'], [2, 'P2'], [3, 'P3'], [4, 'P4'], [5, 'P5'], [6, 'P6']]),
-      levelMaps: new Map([[1, '高'], [2, '中'], [3, '低']]),
-      replayMaps: new Map([[0, '否'], [1, '是']]),
-      pStatusOptions: [{ value: 1, label: '待处理' }, { value: 2, label: '处理中' }, { value: 3, label: '非问题关闭' }, { value: 4, label: '解决关闭' }, { value: 5, label: '逾期未处理' }],
-      queryData: {}, // list
-      formData: {},
-      list: {},
-      pickerOptions: {
-        shortcuts: [{
-          text: '最近一周',
-          onClick(picker) {
-            const end = new Date()
-            const start = new Date()
-            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
-            picker.$emit('pick', [start, end])
-          }
-        }, {
-          text: '最近一个月',
-          onClick(picker) {
-            const end = new Date()
-            const start = new Date()
-            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
-            picker.$emit('pick', [start, end])
-          }
-        }, {
-          text: '最近三个月',
-          onClick(picker) {
-            const end = new Date()
-            const start = new Date()
-            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
-            picker.$emit('pick', [start, end])
-          }
-        }]
-      },
-      rules: {
-        bugReason: [
-          { required: true, message: '请选择缺陷原因', trigger: 'change' }
-        ],
-        repairResult: [
-          { required: true, message: '请选择修复结果', trigger: 'change' }
-        ],
-        reasonOrDesc: [
-          { required: true, message: '请输入Reopen原因', trigger: 'blur' }
-        ]
-      },
-      statusDialogForm: {},
-      radio: '1',
-      bugListType: 2,
-      props: { multiple: true },
-      reopens: [{ code: 1, name: '是' }, { code: 0, name: '否' }],
-      priorityColors: ['#F56C6C', '#FF8952', '#7ED321'],
-      statusColors: ['#6AB4FF', '#6AB4FF', '#FFCC66', '#7ED321', '#F56C6C'],
-      userInformation: localStorage.getItem('username'),
-      userNames: localStorage.getItem('realname'),
-      statusDialogTitle: '',
-      formLabelWidth: '100px',
-      statusDialogVisible: false,
-      DetailedScreening: false, // 高级筛选
-      bugEnumList: [], // bug状态
-      bugDevRepairTimeList: [], // 开发修复时长
-      appClient: [], // 客户端
-      Editionlist: [], // 版本
-      bizIdEnumList: [], // bug业务线
-      taskEnumList: [], // 所属任务
-      bugTypeEnumList: [], // bug类型
-      priorityEnumList: [], // 缺陷等级
-      clientTypeEnumList: [], // 版本
-      repairResultEnumList: [], // 修复结果
-      priorityLevelEnumList: [], // 优先级
-      discoveryMethEnumList: [], // 发现方式
-      bugStageEnumList: [], // 发现阶段
-      bugReasonEnumList: [], // 缺陷原因
-      sysTypeEnumList: [], // 端类型
-      bugQuery: '', // bug详情
-      business_platform_Modular: [], // 所属模块
-      bugQueryModel: '',
-      commentShow: true, // 评论为空默认显示
-      content: '', // 评论
-      comment_content: '', // 评论内容
-      fileList: [], // 储存附件
-      dis: false,
-      commentTxt: [],
-      pageSize: 15,
-      curIndex: 1,
-      total: 0,
-      form: {},
-      goodName: '更多筛选',
-      dialogFormVisible: false,
-      modalShow: false, // 弹窗(新建)
-      drawerShow: false, // drawer展示
-      taskIdStr: [],
-      formInline: {}, // list
-      stratAndEnd: [], // 创建日期
-      tableData: [],
-      QueryProblemParam: {},
-      dialogVisible: false,
-      accessory: [],
-      loading: false,
-      options: [],
-      test: [], // 人员查询
-      dialogImageUrl: '',
-      isBugNameClick: false,
-      staData: {},
-      statusId: '',
-      showSaveSearch: false, // 显示保存筛选项对话框
-      showEditSearch: false, // 显示管理过滤器
-      searchForm: { name: null }, // 筛选项obj
-      searchFormRules: { name: [
-        { required: true, message: '请输入筛选项名称', trigger: 'blur' },
-        { min: 1, max: 50, message: '长度在 1 到 50 个字符', trigger: 'blur' }
-      ] },
-      rules_form: {
-        problemName: [{ required: true, message: '不能为空', trigger: 'blur' }],
-        problemSource: [{ required: true, message: '不能为空', trigger: 'blur' }],
-        problemType: [{ required: true, message: '不能为空', trigger: 'blur' }],
-        handleLevel: [{ required: true, message: '不能为空', trigger: 'blur' }],
-        owner: [{ required: true, message: '不能为空', trigger: 'blur' }],
-        business: [{ required: true, message: '不能为空', trigger: 'blur' }],
-        currentHandler: [{ required: true, message: '不能为空', trigger: 'blur' }]
-      },
-      filterList: [], // 筛选器列表
-      filterDetail: null // 筛选器详情
-    }
-  },
-  computed: {
-    clickCount() {
-      return this.$store.state.app.clickCount
-    }
-  },
-  watch: {
-    clickCount(newVal, oldVal) {
-      this.drawerShow = false
-      // this.$store.state.data.bizId = false
-    }
-  },
-  created() {
-    this.getProblemList()
-    this.getEnum()
-  },
-  destroyed() {
-    this.$store.state.data.status = false
-  },
-  methods: {
-    // 进首页
-    getProblemList() {
-      queryProblem(this.QueryProblemParam).then(response => {
-        this.tableData = response.data.problemInfos
-        this.total = response.data.total
-        console.log(this.tableData)
-      })
-    },
-    // 获取枚举
-    getEnum() {
-      getQueryProblemName().then(response => {
-        this.list = response.data
-        console.log('xixi' + JSON.stringify(this.list))
-      })
-    },
-    // 问题编辑
-    update(row) {
-      console.log('hahaha' + JSON.stringify(row))
-      this.formData = row
-      this.dialogFormVisible = true
-    },
-    // 创建
-    create() {
-      this.dialogFormVisible = true
-      this.formData = {}
-    },
-    created_problem() {
-      queryProblem(this.QueryProblemParam).then(response => {
-        this.tableData = response.data.problemInfos
-        this.total = response.data.total
-        console.log(this.tableData)
-      })
-    },
-
-    changeSelect() {
-      this.$forceUpdate()
-    },
-    changDate(date) { // 创建时间添加到url参数中
-      if (date) {
-        this.$router.push({ path: this.$route.path, query: { startDate: date[0], endDate: date[1] }})
-      } else {
-        this.$router.push({ path: this.$route.path })
-      }
-    },
-    getBugSelfList(type, pageSize) {
-      if (type) {
-        this.bugListType = type
-      }
-      if (pageSize) {
-        this.pageSize = pageSize
-      }
-      bugSelfList({
-        type: this.bugListType,
-        pageSize: this.pageSize,
-        curIndex: this.curIndex
-      }).then(res => {
-        if (res.code === 200) {
-          this.tableData = res.data.map(item => {
-            return { ...item, isSelected: false }
-          })
-          this.total = res.total
-          this.tableData.map(item1 => {
-            this.priorityLevelEnumList.map(item => {
-              item1.priorityLevel !== null
-                ? item1.priorityLevel === item.name
-                  ? (item1.priorityCode = item.code)
-                  : ''
-                : ''
-            })
-          })
-        }
-      })
-    },
-    modalClose() {
-      this.getBugList()
-    },
-    selectStatus(row) {
-      row.isSelected = !row.isSelected
-    },
-    blurEvent(row, status) {
-      this.staData = row
-      this.statusId = status
-      if (status === 0 || status === 1 || status === 5) {
-        const userData = { id: '', ename: this.userInformation, name: this.userNames }
-        row.status = status
-        const objData = { bugBaseInfo: row, user: userData }
-        bugUpdate(objData).then(res => {
-          row.isSelected = !row.isSelected
-          if (res.code === 200) {
-            this.$message({
-              showClose: true,
-              message: res.msg,
-              type: 'success'
-            })
-          } else {
-            this.getBugList()
-            this.$message({
-              showClose: true,
-              message: res.msg,
-              type: 'error'
-            })
-          }
-        })
-        return
-      }
-      let data = ''
-      this.bugEnumList.map(item => {
-        item.code === status ? data = item.name : ''
-      })
-      this.statusDialogTitle = data
-      this.statusDialogVisible = true
-    },
-    bugStatusChange(row) {
-      row.isSelected = !row.isSelected
-      this.$nextTick(() => {
-        this.$refs.inputVal.focus()
-      })
-    },
-    statusDialogConfirm() {
-      if (this.statusDialogTitle === '待测试') {
-        if (typeof this.statusDialogForm.bugReason === 'undefined' || this.statusDialogForm.bugReason === null) {
-          this.$message.warning('请选择缺陷原因')
-        }
-        this.postDialogForm()
-      } else if (this.statusDialogTitle === '已完成') {
-        if (typeof this.statusDialogForm.bugReason === 'undefined' || this.statusDialogForm.bugReason === null) {
-          this.$message.warning('请选择缺陷原因')
-          return
-        }
-        if (typeof this.statusDialogForm.repairResult === 'undefined' || this.statusDialogForm.repairResult === null) {
-          this.$message.warning('请选择修复结果')
-          return
-        }
-        this.postDialogForm()
-      } else if (this.statusDialogTitle === 'Reopen') {
-        if (!this.statusDialogForm.reasonOrDesc) {
-          this.$message.warning('请输入Reopen原因')
-          return
-        }
-        this.postDialogForm()
-        this.statusDialogVisible = false
-      }
-    },
-    postDialogForm() {
-      const userData = { id: '', ename: this.userInformation, name: this.userNames }
-      this.staData.status = this.statusId
-      this.staData.reasonOrDesc = this.statusDialogForm.reasonOrDesc
-      this.staData.repairResult = this.statusDialogForm.repairResult
-      this.staData.bugReason = this.statusDialogForm.bugReason
-      const objData = { bugBaseInfo: this.staData, user: userData }
-      bugUpdate(objData).then(res => {
-        if (res.code === 200) {
-          this.statusDialogVisible = false
-          this.statusDialogForm = {}
-          this.$message({
-            showClose: true,
-            message: res.msg,
-            type: 'success'
-          })
-        } else if (res.code !== 200) {
-          this.$message({
-            showClose: true,
-            message: res.msg,
-            type: 'error'
-          })
-          this.getBugList()
-        }
-      })
-    },
-    resetQuery() {
-      this.$router.push({ path: this.$route.path })
-      this.stratAndEnd = []
-      let combination = {}
-      combination = deepClone(this.formInline)
-      this.formInline = { bugName: combination.bugName }
-      this.$set(this.formInline, 'bugId', combination.bugId)
-      this.$set(this.formInline, 'status', combination.status)
-      this.$set(this.formInline, 'priorityLevel', combination.priorityLevel)
-      this.curIndex = 1
-      this.getBugList()
-    },
-    getClient(e) {
-      this.$forceUpdate()
-      this.$set(this.formInline, 'appVersion', '')
-      const newArr = this.appClient.filter(
-        value => value.code === e
-      )
-      if (newArr && newArr[0]) {
-        this.Editionlist = newArr[0].childEnumInfos
-      }
-    },
-    test2(item, e) {
-      // 获取团队人员信息
-      if (typeof this.test[item.idap] === 'undefined') {
-        item.role = e
-        this.test[item.idap] = item
-      }
-      return item.idap
-    },
-    remoteMethod(query) {
-      // 人员查询
-      if (query !== '') {
-        this.loading = true
-        setTimeout(() => {
-          this.loading = false
-          memberQueryMemberInfoByIDAPorName({ memberIDAP: query }).then(res => {
-            const obj = {}
-            this.options = res.data.reduce((cur, next) => {
-              obj[next.idap] ? '' : (obj[next.idap] = true && cur.push(next))
-              return cur
-            }, [])
-          })
-        }, 100)
-      } else {
-        this.options = []
-      }
-    },
-    handlePictureCardPreview(file) {
-      this.dialogImageUrl = file.url
-      this.dialogVisible = true
-    },
-
-    // 文件上传时的钩子
-    progress(event, file, fileList) {
-      this.dis = true
-    },
-
-    // 上传成功回调
-    handleChange(response, file, fileList) {
-      this.fileDbList.push({
-        name: file.name,
-        url: 'http:' + file.response.url
-      })
-      this.accessory = JSON.stringify(this.fileDbList)
-      this.dis = false
-      this.$message({
-        showClose: true,
-        message: '文件上传成功',
-        type: 'success'
-      })
-    },
-    click_bugName(e) {
-      this.bugQuery = JSON.parse(
-        JSON.stringify(this.tableData.filter(value => value.id === e)[0])
-      )
-      this.drawerShow = true
-      // this.$store.state.data.bizId = true
-    },
-    createdDefect() {
-      this.modalShow = true
-      this.$nextTick(() => {
-        this.$refs.createdBug.init(1)
-      })
-    },
-    showSelect() {
-      this.bugDataGet()
-      this.DetailedScreening === false
-        ? (this.DetailedScreening = true)
-        : (this.DetailedScreening = false)
-      this.goodName === '更多筛选'
-        ? (this.goodName = '收起筛选')
-        : (this.goodName = '更多筛选')
-    },
-    handleSizeChange(val) {
-      this.pageSize = val
-      if (this.type === 'page') {
-        this.getBugList()
-      } else {
-        this.getBugSelfList()
-      }
-    },
-    handleCurrentChange(val) {
-      this.curIndex = val
-      if (this.type === 'page') {
-        this.getBugList()
-      } else {
-        this.getBugSelfList()
-      }
-    },
-    bugListSelect() {
-      settingGetBizList({}).then(res => {
-        this.bizIdEnumList = res.data // biz
-      })
-      taskListCreate({ bizId: Number(localStorage.getItem('bizId')) }).then(res => {
-        this.taskEnumList = res.data // 所属任务
-      })
-      bugGetEnum().then(res => {
-        this.bugEnumList = res.data.bugEnumList // status
-        this.bugTypeEnumList = res.data.theBugTypeEnumList // bug类型
-        this.bugStageEnumList = res.data.bugStageEnumList // 发现阶段
-        this.sysTypeEnumList = res.data.sysTypeEnumList // 端类型
-        this.discoveryMethEnumList = res.data.discoveryMethEnumList // 发现方式
-        this.priorityEnumList = res.data.priorityEnumList // 缺陷等级
-        this.priorityLevelEnumList = res.data.priorityLevelEnumList // 优先级
-        this.repairResultEnumList = res.data.repairResultEnumList // 修复结果
-        this.clientTypeEnumList = res.data.clientTypeEnumList // 版本
-        this.sysTypeEnumList = res.data.sysTypeEnumList // 客户端
-        this.bugReasonEnumList = res.data.bugReasonEnumList
-        this.bugDevRepairTimeList = res.data.bugDevRepairTimeList // 开发修复时长
-      })
-      releaseList().then(res => {
-        this.appClient = res.data.appClient // 客户端
-      })
-    },
-    bugDataGet() {
-      // 所属模块
-      settingQueryBizModuleList(Number(localStorage.getItem('bizId'))).then(
-        res => {
-          this.business_platform_Modular = res.data.map(item => ({
-            ...item,
-            value: item.id,
-            label: item.moduleName,
-            children:
-              item.childModules.length === 0
-                ? null
-                : item.childModules.map(item1 => ({
-                  ...item1,
-                  value: item1.id,
-                  label: item1.moduleName,
-                  children:
-                      item1.childModules.length === 0
-                        ? null
-                        : item1.childModules.map(item2 => ({
-                          ...item2,
-                          value: item2.id,
-                          label: item2.moduleName
-                        }))
-                }))
-          }))
-        }
-      )
-    },
-    async download() { // 下载导出Excel
-      const res = await bugDownload(this.indexPage)
-      const aLink = document.createElement('a')
-      const blob = new Blob([res], { type: 'application/vnd.ms-excel' })
-      aLink.href = URL.createObjectURL(blob)
-      aLink.download = '缺陷列表.xlsx'
-      aLink.style.display = 'none'
-      aLink.click()
-    },
-    saveSearch(formName) { // 保存筛选项
-      this.$refs[formName].validate((valid) => {
-        if (valid) {
-          this.stratAndEnd = this.stratAndEnd ? this.stratAndEnd : []
-          this.formInline.createStartTime = this.stratAndEnd[0] || null
-          this.formInline.createEndTime = this.stratAndEnd[1] || null
-          const isExistName = this.filterList.some(item => {
-            return item.name === this.searchForm.name
-          })
-          if (isExistName) {
-            this.$message({ showClose: true, message: '筛选项名称重名', type: 'error' })
-          } else {
-            this.toSave()
-          }
-        } else {
-          this.$message({ showClose: true, message: '筛选项名称不能为空', type: 'error' })
-          return false
-        }
-      })
-    },
-    async toSave() {
-      const saveObj = deepClone(this.formInline)
-      delete saveObj.curIndex
-      delete saveObj.pageSize
-      const res = await createFilter({
-        name: this.searchForm.name,
-        content: JSON.stringify(saveObj),
-        bizId: Number(localStorage.getItem('bizId'))
-      })
-      if (res.code === 200) {
-        this.$message({ showClose: true, message: '保存成功', type: 'success' })
-        this.showSaveSearch = false
-        this.getFilterList()
-        this.searchForm.name = null
-      }
-    },
-    async getFilterList() { // 获取过滤器列表
-      const params = {
-        bizId: Number(localStorage.getItem('bizId'))
-      }
-      const res = await getFilterList(params)
-      this.filterList = res.data
-    },
-    async getFilterItem(filterId) { // 获取单个过滤器
-      this.stratAndEnd = []
-      const combination = deepClone(this.formInline)
-      const { bugId, status, priorityLevel } = combination
-      this.formInline = { bugId, status, priorityLevel }
-      this.$router.push({ path: this.$route.path, query: { filterId: filterId }})
-      const res = await getFilterItem(filterId)
-      if (res.code === 200) {
-        const filter = JSON.parse(res.data.content)
-        if (filter.createStartTime && filter.createEndTime) {
-          this.stratAndEnd = [filter.createStartTime, filter.createEndTime]
-        }
-        this.getClient(filter.appId)
-        Object.assign(this.formInline, filter)
-        this.curIndex = 1
-        this.getBugList()
-      }
-    },
-    deleteFilter() {
-      this.$router.push({ path: this.$route.path })
-      this.getFilterList()
-    }
-  }
-}
-</script>
-<style scoped lang="scss">
-.high {
-  background-color: #F56C6C;
-}
-.medium {
-  background-color: #FF8952;
-}
-.low {
-  background-color: #7ED321;
-}
-.save-search {
-  float: left;
-}
-.filter {
-  font-size: 14px;
-  width: 100%;
-  padding: 0 11px 15px 15px;
-  color: #606266;
-  cursor: pointer;
-  .mine-filter {
-    .filter-item {
-      display: inline-block;
-      width: 15%;
-      color: #409EFF;
-      margin-right: 15px;
-      overflow: hidden;
-      text-overflow:ellipsis;
-      white-space: nowrap;
-      margin-bottom: 5px;
-    }
-  }
-}
-
-</style>
-<style lang="scss">
-.btns .el-input--suffix .el-input__inner {
-  padding-right: 10px;
-  padding-left: 10px;
-  width: 98px;
-}
-// .btns .el-input__suffix {
-//     // display: none;
-//     visibility: hidden;
-// }
-// .btns :hover {
-//  /deep/ .el-input__suffix {
-//     // display: inline-block;
-//     visibility: inherit;
-//   }
-// }
-.item{
-  /deep/ input {
-    color: rgb(126, 211, 33);
-    border: 1px solid rgb(126, 211, 33);
-     border-color: rgb(126, 211, 33) !important;
-         font-weight: 900;
-  }
-  /deep/ .el-input__suffix {
-    color: rgb(126, 211, 33) !important;
-    right: 1px;
-  }
-  /deep/ .el-select__caret {
-    color: rgb(126, 211, 33) !important;
-  }
-}
-.item1 {
-  /deep/ input {
-    color: rgb(255, 204, 102);
-     border: 1px solid rgb(255, 204, 102);
-     border-color: rgb(255, 204, 102) !important;
-         font-weight: 900;
-  }
-  /deep/ .el-input__suffix {
-    color: rgb(255, 204, 102) !important;
-    right: 1px;
-  }
-  /deep/ .el-select__caret {
-    color: rgb(255, 204, 102) !important;
-  }
-}
-.item2 {
-  /deep/ input {
-    color: rgb(245, 108, 108);
-    border: 1px solid rgb(245, 108, 108);
-    border-color: rgb(245, 108, 108) !important;
-        font-weight: 900;
-  }
-   /deep/ .el-input__suffix {
-    color: rgb(245, 108, 108) !important;
-    right: 1px;
-  }
-  /deep/ .el-select__caret {
-   color: rgb(245, 108, 108) !important;
-  }
-}
-.item3 {
-  /deep/ input {
-    color: #D675F0;
-    border: 1px solid #D675F0;
-    border-color: #D675F0 !important;
-        font-weight: 900;
-  }
-    /deep/ .el-input__suffix {
-    color: #D675F0 !important;
-    right: 1px;
-  }
-   /deep/ .el-select__caret {
-   color: #D675F0 !important;
-  }
-}
-.item-color {
-  /deep/ input {
-    color: rgb(106, 180, 255);
-    border: 1px solid rgb(106, 180, 255);
-    border-color: rgb(106, 180, 255) !important;
-        font-weight: 900;
-  }
-    /deep/ .el-input__suffix {
-    color: rgb(106, 180, 255) !important;
-    right: 1px;
-  }
-   /deep/ .el-select__caret {
-   color: rgb(106, 180, 255) !important;
-  }
-}
-.Layout {
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-}
-.queryName {
-  width: 86px;
-  color: #333333;
-  font-size: 14px;
-}
-.flex_start {
-  display:flex;
-  align-items: center;
-  justify-content: flex-start;
-}
-</style>

+ 0 - 7
src/views/problemSystem/test.vue

@@ -1,7 +0,0 @@
-<template>
-  <transition name="fade-transform" mode="out-in">
-    <keep-alive include="UseCasePage">
-      <router-view />
-    </keep-alive>
-  </transition>
-</template>

+ 0 - 2
src/views/projectManage/bugList/details/index.vue

@@ -528,7 +528,6 @@
 <script>
 const _ = require('lodash')
 import statusChange from '@/views/projectManage/bugList/details/statusChange'
-import fackClickOutSide from './fackClickOutSide.js'
 import '@/styles/PublicStyle/index.scss'
 import { getCommentList, addComment } from '@/api/requirement.js'
 import {
@@ -575,7 +574,6 @@ export default {
     searchPeople,
     Editor
   },
-  mixins: [fackClickOutSide],
   props: {
     id: {
       type: String,