bugUpdate.vue 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  1. <template>
  2. <div id="window-judge" class="set-background">
  3. <el-form ref="form" :model="form" :rules="serviceDataRules">
  4. <div class="block">
  5. <el-form-item label="标题" prop="bugName" :label-width="formLabelWidth"><el-input v-model="form.bugName" autocomplete="off" placeholder="普惠质量产品工具平台..." style="width:77.2%;" /></el-form-item>
  6. <div style="display:flex;">
  7. <el-form-item style="flex-grow:1" prop="bizId" label="业务线" :label-width="formLabelWidth1">
  8. <el-select v-model="form.bizId" placeholder="业务线" style="width:54.5%;" @change="clickChangePlatform(form.bizId)">
  9. <el-option v-for="item in bizOptions" :key="item.value" :label="item.name" :value="item.code" />
  10. </el-select>
  11. </el-form-item>
  12. <el-form-item style="flex-grow:1" label="平台类型" prop="platformType" :label-width="formLabelWidth1">
  13. <el-select ref="clearPlatform" v-model="form.platformType" placeholder="平台类型" style="width:54.5%;" @change="clickChangeBusiness(form.platformType)">
  14. <el-option v-for="item in platformTypeStr" :key="item.name" :label="item.name" :value="item.name" />
  15. </el-select>
  16. </el-form-item>
  17. </div>
  18. <div style="display:flex;">
  19. <el-form-item style="flex-grow:1" prop="taskId" label="任务" label-width="99px">
  20. <el-select v-model="form.taskId" filterable placeholder="任务" style="width: 245px;margin-right: -50px;">
  21. <el-option v-for="item in taskIdStr" :key="item.id" :label="item.name" :value="item.id" />
  22. </el-select>
  23. </el-form-item>
  24. <el-form-item v-if="businessTypeShow" style="flex-grow:1" prop="businessType" label="业务模块" :label-width="formLabelWidth1">
  25. <el-select ref="clearBusiness" v-model="form.businessType" placeholder="业务模块" style="width:54.5%;">
  26. <el-option v-for="item in businessTypeStr" :key="item.name" :label="item.name" :value="item.name" />
  27. </el-select>
  28. </el-form-item>
  29. </div>
  30. <div style="display:flex;">
  31. <el-form-item style="flex-grow:1" label="类型" prop="bugType" :label-width="formLabelWidth1">
  32. <el-select v-model="form.bugType" style="width:54.5%;" placeholder="类型">
  33. <el-option v-for="item in bugTypeStr" :key="item.name" :label="item.name" :value="item.name" />
  34. </el-select>
  35. </el-form-item>
  36. <el-form-item style="flex-grow:1" label="发现方式" prop="discoveryMethod" :label-width="formLabelWidth1">
  37. <el-select v-model="form.discoveryMethod" style="width:54.5%;" placeholder="发现方式">
  38. <el-option v-for="item in discoveryMethodStr" :key="item.name" :label="item.name" :value="item.name" />
  39. </el-select>
  40. </el-form-item>
  41. </div>
  42. <div style="display:flex;">
  43. <el-form-item style="flex-grow:1" label="级别" prop="priority" :label-width="formLabelWidth1">
  44. <el-select v-model="form.priority" style="width:54.5%;" placeholder="级别">
  45. <el-option v-for="item in bugLevelStr" :key="item.name" :label="item.name" :value="item.name" />
  46. </el-select>
  47. </el-form-item>
  48. <el-form-item style="flex-grow:1" label="问题原因" prop="reason" :label-width="formLabelWidth1">
  49. <el-select v-model="form.reason" style="width:54.5%;" placeholder="问题原因">
  50. <el-option v-for="item in reasonStr" :key="item.name" :label="item.name" :value="item.name" />
  51. </el-select>
  52. </el-form-item>
  53. </div>
  54. <div style="display:flex;">
  55. <el-form-item style="flex-grow:1" label="状态" prop="status" :label-width="formLabelWidth1">
  56. <el-select v-model="form.status" placeholder="状态" style="width:54.5%;">
  57. <el-option v-for="item in bugStatusStr" :key="item.name" :label="item.name" :value="item.name" />
  58. </el-select>
  59. </el-form-item>
  60. <el-form-item style="flex-grow:1" label="所处阶段" prop="stage" :label-width="formLabelWidth1">
  61. <el-select v-model="form.stage" placeholder="所处阶段" style="width:54.5%;">
  62. <el-option v-for="item in stageStr" :key="item.name" :label="item.name" :value="item.name" />
  63. </el-select>
  64. </el-form-item>
  65. </div>
  66. <el-form-item label="bug描述" prop="bugDescribe" :label-width="formLabelWidth"><el-input v-model="form.bugDescribe" type="textarea" placeholder="bug描述" rows="2" style="width:77.2%;" /></el-form-item>
  67. </div>
  68. <div class="block">
  69. <div style="display:flex;">
  70. <el-form-item style="flex-grow:1" label="创建人" label-width="21%"><el-input v-model="form.creator" autocomplete="off" style="width:54.5%;" /></el-form-item>
  71. <el-form-item style="flex-grow:1" label="bug责任人" prop="assigner" :label-width="formLabelWidth1"><el-input v-model="form.assigner" autocomplete="off" style="width:53.5%;" /></el-form-item>
  72. </div>
  73. <div style="display:flex;">
  74. <el-form-item style="flex-grow:1" label="当前处理人" prop="currentHandler" :label-width="formLabelWidth1"><el-input v-model="form.currentHandler" autocomplete="off" style="width:55%;" /></el-form-item>
  75. <el-form-item style="flex-grow:1" label="开始开发时间" label-width="24.5%"> <el-date-picker
  76. v-model="form.startDevTime"
  77. type="datetime"
  78. placeholder="选择时间"
  79. style="width:53%;"
  80. value-format="yyyy-MM-dd HH:hh:mm"
  81. /></el-form-item>
  82. </div>
  83. <div style="display:flex;">
  84. <el-form-item style="flex-grow:1;" label="reopen次数" prop="reopenTimes" label-width="22.6%;"><el-input v-model="form.reopenTimes" autocomplete="off" style="width:56%;" /></el-form-item>
  85. <el-form-item style="flex-grow:1;padding-right:15px;" label="提交测试时间" label-width="26.5%"> <el-date-picker
  86. v-model="form.waitTestTime"
  87. type="datetime"
  88. placeholder="选择时间"
  89. style="width:54%;"
  90. value-format="yyyy-MM-dd HH:hh:mm"
  91. /></el-form-item>
  92. </div>
  93. </div>
  94. <div class="block">
  95. <div style="display:flex;">
  96. <el-form-item style="flex-grow:1" label="机型" :label-width="formLabelWidth1"><el-input v-model="form.model" autocomplete="off" style="width:54.5%;" /></el-form-item>
  97. <el-form-item style="flex-grow:1" label="地图类型" :label-width="formLabelWidth1"><el-input v-model="form.mapType" autocomplete="off" style="width:54.5%;" /></el-form-item>
  98. </div>
  99. <div style="display:flex;">
  100. <el-form-item style="flex-grow:1" label="OS类型" :label-width="formLabelWidth1"><el-input v-model="form.osType" autocomplete="off" style="width:54.5%;" /></el-form-item>
  101. <el-form-item style="flex-grow:1" label="地图版本号" :label-width="formLabelWidth1"><el-input v-model="form.mapVersion" autocomplete="off" style="width:54.5%;" /></el-form-item>
  102. </div>
  103. <div style="display:flex;">
  104. <el-form-item style="flex-grow:1" label="网络类型" :label-width="formLabelWidth1"><el-input v-model="form.networkType" autocomplete="off" style="width:54.5%;" /></el-form-item>
  105. <el-form-item style="flex-grow:1" label="SDK版本" :label-width="formLabelWidth1"><el-input v-model="form.sdkVersion" autocomplete="off" style="width:54.5%;" /></el-form-item>
  106. </div>
  107. <div style="width:100%;">
  108. <el-form-item label="app版本号" label-width="11%"><el-input v-model="form.appVersion" autocomplete="off" style="width:27.2%;" /></el-form-item>
  109. </div>
  110. </div>
  111. <div class="block-end">
  112. <div class="font">备注</div>
  113. <el-input v-model="form.remark" type="textarea" autocomplete="off" rows="5" style="margin: 20px 0;" />
  114. <div>
  115. <el-upload
  116. class="upload-demo"
  117. multiple
  118. capture
  119. accept="image/jpeg, image/png, image/gif, audio/mp4, video/mp4, audio/mpeg, application/vnd.ms-excel"
  120. :on-change="handleChange"
  121. :file-list="fileList"
  122. action="http://star.xiaojukeji.com/upload/img.node"
  123. >
  124. <!-- action="http://page-daily.kuaidadi.com/upload/img.node" 线下 -->
  125. <!-- action="http://star.xiaojukeji.com/upload/img.node" 线上 -->
  126. <!-- action="https://jsonplaceholder.typicode.com/posts/" 原始地址-->
  127. <el-button size="small">点击上传</el-button>
  128. </el-upload>
  129. </div>
  130. <el-form-item class="submit">
  131. <el-button size="mini" type="primary" @click="createFormData(form)">提 交</el-button>
  132. <el-button class="move-button" size="mini" @click="$router.go(-1)">取 消</el-button>
  133. </el-form-item>
  134. </div>
  135. <!-- <div style="flex:1">
  136. <el-form-item v-show="statusShow" label="问题原因和修复方法" :label-width="formLabelWidth"><el-input v-model="form.reasonsAndSolutionForTheProblem" type="textarea" placeholder="问题原因和修复方法" rows="4" style="width:77.2%;" /></el-form-item>
  137. </div>
  138. <div style="flex:1">
  139. <el-form-item v-show="repairShow" label="修复结果" :label-width="formLabelWidth">
  140. <el-select v-model="form.repairResult" placeholder="发现方法">
  141. <el-option v-for="item in repairResultStr" :key="item.name" :label="item.name" :value="item.name" />
  142. </el-select>
  143. </el-form-item>
  144. </div> -->
  145. <!-- <el-form-item label="逻辑删" :label-width="formLabelWidth">
  146. <el-select v-model="form.isDelete" placeholder="发现方法">
  147. <el-option v-for="item in isDeleteStr" :key="item.value" :label="item.name" :value="item.value" />
  148. </el-select>
  149. </el-form-item> -->
  150. <!-- <el-form-item label="reopen的次数" :label-width="formLabelWidth"> <el-input v-model="form.reopenTimes" autocomplete="off" /></el-form-item> -->
  151. <!-- <el-form-item label="业务线" prop="bizId" :label-width="formLabelWidth"><el-input v-model="form.bizId" autocomplete="off" /></el-form-item> -->
  152. <!-- <el-form-item label="模块" :label-width="formLabelWidth"><el-input v-model="form.moduleId" autocomplete="off" /></el-form-item> -->
  153. <!-- <el-form-item label="项目名" :label-width="formLabelWidth"><el-input v-model="form.projectName" autocomplete="off" /></el-form-item> -->
  154. <!-- <el-form-item label="项目ID" :label-width="formLabelWidth"><el-input v-model="form.projectId" autocomplete="off" /></el-form-item> -->
  155. <!-- <el-form-item label="测试计划ID" prop="planId" :label-width="formLabelWidth"><el-input v-model="form.planId" autocomplete="off" /></el-form-item> -->
  156. <!-- <el-form-item label="caseID" :label-width="formLabelWidth"><el-input v-model="form.caseId" autocomplete="off" /></el-form-item> -->
  157. <!-- <el-form-item label="bug创建人" :label-width="formLabelWidth"> <el-input v-model="form.creator" autocomplete="off" /></el-form-item> -->
  158. <!-- <el-form-item label="开始开发时间" :label-width="formLabelWidth"><el-input v-model="form.startDevTime" autocomplete="off" /></el-form-item> -->
  159. <!-- <el-form-item label="开始等待测试时间" :label-width="formLabelWidth"><el-input v-model="form.waitTestTime" autocomplete="off" /></el-form-item> -->
  160. <!-- <el-form-item label="创建时间" :label-width="formLabelWidth"><el-input v-model="form.gmtCreate" autocomplete="off" /></el-form-item> -->
  161. <!-- <el-form-item label="修改时间" :label-width="formLabelWidth"><el-input v-model="form.gmtModify" autocomplete="off" /></el-form-item> -->
  162. </el-form>
  163. <!-- <div slot="footer" class="dialog-footer">
  164. </div> -->
  165. </div>
  166. </template>
  167. <script>
  168. import { bugGetEnum, taskListCreate, bugUpdate, bugGet } from '@/api/defectManage'
  169. import { projectGetTypeMap } from '@/api/projectPage'
  170. export default {
  171. data() {
  172. return {
  173. form: {
  174. id: '',
  175. platformType: '',
  176. businessType: ''
  177. },
  178. businessTypeStr: [],
  179. taskIdStr: '',
  180. platformTypeStr: [],
  181. bugTypeStr: [],
  182. discoveryMethodStr: [],
  183. reasonStr: [],
  184. bugStatusStr: [],
  185. stageStr: [],
  186. fileList: [],
  187. serviceTypeEnumList: [],
  188. clientTypeEnumList: [],
  189. bugLevelStr: [{ name: 'p0', value: 0 }, { name: 'p1', value: 1 }, { name: 'p2', value: 2 }, { name: 'p3', value: 3 }],
  190. bizOptions: [],
  191. serviceDataRules: {
  192. bugName: [{ required: true, message: '标题不能为空', trigger: 'change' }],
  193. bizId: [{ required: true, message: '业务线不能为空', trigger: 'change' }],
  194. // bugName: [{ required: true, message: '主题不能为空', trigger: 'change' }],
  195. taskId: [{ required: true, message: '任务不能为空', trigger: 'change' }],
  196. // projectId: [{ required: true, message: '项目ID不能为空', trigger: 'change' }],
  197. bugType: [{ required: true, message: 'bug类型不能为空', trigger: 'change' }],
  198. reopenTimes: [{ required: true, message: 'reopen不能为空', trigger: 'change' }],
  199. discoveryMethod: [{ required: true, message: '发现方式不能为空', trigger: 'change' }],
  200. reason: [{ required: true, message: '问题原因不能为空', trigger: 'change' }],
  201. priority: [{ required: true, message: '级别不能为空', trigger: 'change' }],
  202. status: [{ required: true, message: '状态不能为空', trigger: 'change' }],
  203. platformType: [{ required: true, message: '平台类型不能为空', trigger: 'change' }],
  204. stage: [{ required: true, message: '所处阶段不能为空', trigger: 'change' }],
  205. assigner: [{ required: true, message: 'bug责任人不能为空', trigger: 'change' }],
  206. currentHandler: [{ required: true, message: 'bug处理人不能为空', trigger: 'change' }],
  207. bugDescribe: [{ required: true, message: 'bug描述不能为空', trigger: 'change' }],
  208. businessType: [{ required: true, message: '业务模块不能为空', trigger: 'change' }]
  209. },
  210. formLabelWidth: '11%',
  211. formLabelWidth1: '22%',
  212. userData: '',
  213. businessTypeShow: false,
  214. userInformation: localStorage.getItem('username'),
  215. userNames: localStorage.getItem('realname')
  216. }
  217. },
  218. created() {
  219. this._initBegin()
  220. this.forkDown()
  221. this.taskIdGet()
  222. },
  223. methods: {
  224. handleChange(file, fileList) {
  225. this.fileList = fileList.slice(-3)
  226. console.log(this.fileList)
  227. },
  228. async _initBegin() {
  229. await bugGetEnum().then(res => {
  230. this.bugStatusStr = res.data.bugEnumList
  231. this.stageStr = res.data.bugStageEnumList
  232. this.reasonStr = res.data.reasonEnumList
  233. this.bugTypeStr = res.data.bugTypeEnumList
  234. this.bugLevelStr = res.data.priorityEnumList
  235. this.discoveryMethodStr = res.data.discoveryMethodEnumList
  236. this.clientTypeEnumList = res.data.clientTypeEnumList
  237. this.serviceTypeEnumList = res.data.serviceTypeEnumList
  238. })
  239. bugGet(this.$route.query.id).then(res => {
  240. this.form = res.data
  241. this.platformTypeStr = this.bizOptions.filter(value => value.code === this.form.bizId)[0].child
  242. if (this.form.businessType) {
  243. this.businessTypeShow = true
  244. this.businessTypeStr = this.platformTypeStr.filter(value => value.name === this.form.platformType)[0].child
  245. }
  246. // for (const a of this.bizIdEnumList) {
  247. // if (this.form.bizId === a.code) {
  248. // this.bizId = a.name
  249. // this.currentHandler = this.form.currentHandler
  250. // this.reason = this.form.reason
  251. // this.bugType = this.form.bugType
  252. // return
  253. // } else {
  254. // this.bizId = ''
  255. // }
  256. // }
  257. // this.bizId = this.form.bizId
  258. })
  259. },
  260. forkDown() {
  261. projectGetTypeMap().then(res => {
  262. if (res.code === 200) {
  263. this.bizOptions = res.data
  264. } else {
  265. this.errorFun()
  266. }
  267. })
  268. },
  269. // 获取任务数据
  270. taskIdGet() {
  271. taskListCreate({ statusList: [6, 7] }).then(res => {
  272. this.taskIdStr = res.data
  273. })
  274. },
  275. // 业务线取子数据
  276. clickChangePlatform(e) {
  277. this.platformTypeStr = this.bizOptions.filter(value => value.code === e)[0].child
  278. this.$set(this.form, 'platformType', '')
  279. this.$set(this.form, 'businessType', '')
  280. },
  281. // 业务线取子数据
  282. clickChangeBusiness(e) {
  283. if (this.platformTypeStr.filter(value => value.name === e)[0].child) {
  284. this.businessTypeShow = true
  285. this.businessTypeStr = this.platformTypeStr.filter(value => value.name === e)[0].child
  286. } else {
  287. this.businessTypeShow = false
  288. }
  289. this.$set(this.form, 'businessType', '')
  290. },
  291. // 提交表单并且返回刷新
  292. createFormData(form) {
  293. this.$refs.form.validate((valid) => {
  294. if (valid) {
  295. // form.bizId = this.bizJson
  296. this.userData = { id: '', ename: this.userInformation, name: this.userNames }
  297. this.objData = { bugBaseInfo: form, user: this.userData }
  298. bugUpdate(this.objData).then(res => {
  299. res.code === 200 ? this.successFun() : this.errorFun()
  300. this.$router.go(-1)
  301. })
  302. }
  303. })
  304. },
  305. successFun() {
  306. this.$notify({ title: 'Success', message: 'Updated Successfully', type: 'success', duration: 2000 })
  307. },
  308. errorFun() {
  309. this.$notify({ title: 'Failed', message: 'Updated Failed', type: 'error', duration: 2000 })
  310. }
  311. }
  312. }
  313. </script>
  314. <style lang="stylus" scoped>
  315. .set-background
  316. background-color #F2F3F6
  317. display flex
  318. justify-content center
  319. .block
  320. background-color rgba(255,255,255,1)
  321. box-shadow 0px 0px 11px 0px rgba(238,240,245,1)
  322. border-radius 7px
  323. width 1000px
  324. margin-top 25px
  325. padding 29px 50px
  326. .block-end
  327. background-color rgba(255,255,255,1)
  328. box-shadow 0px 0px 11px 0px rgba(238,240,245,1)
  329. border-radius 7px
  330. width 1000px
  331. margin-top 25px
  332. padding 29px 50px
  333. margin-bottom 22px
  334. .font
  335. font-size 18px
  336. font-family PingFangSC
  337. font-weight 500
  338. color rgba(51,59,74,1)
  339. line-height 35px
  340. .submit
  341. margin-top 40px
  342. display flex
  343. flex-direction row-reverse
  344. .move-button
  345. margin-right 20px
  346. </style>