handle.vue 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  1. <template>
  2. <view class="danger-form">
  3. <uni-collapse>
  4. <uni-collapse-item :title="baseInfo.dangerTitle">
  5. <view class="content">
  6. <uni-list-item title="隐患编码" :rightText="baseInfo.dangerCode" ></uni-list-item>
  7. <uni-list-item title="隐患状态" :rightText="dangerStatus(baseInfo.status)" ></uni-list-item>
  8. <uni-list-item title="隐患类别" :rightText="baseInfo.dangerCatTitle" ></uni-list-item>
  9. <uni-list-item title="隐患等级" :rightText="baseInfo.dangerLevel===1?'一般':'重大'" ></uni-list-item>
  10. <uni-list-item title="所在位置" :rightText="baseInfo.dangerLocation" v-if="baseInfo.dangerLocation"></uni-list-item>
  11. <uni-list-item title="描述" :rightText="baseInfo.dangerDesc" ></uni-list-item>
  12. <uni-list-item title="所在部门" :rightText="baseInfo.curGroupName" v-if="baseInfo.curGroupName"></uni-list-item>
  13. <uni-list-item title="整改人员" :rightText="baseInfo.curAccountName" v-if="baseInfo.curAccountName"></uni-list-item>
  14. <uni-list-item title="所在部门" :rightText="baseInfo.submitGroupName" v-if="baseInfo.submitGroupName"></uni-list-item>
  15. <uni-list-item title="整改人员" :rightText="baseInfo.submitAccountName" v-if="baseInfo.submitAccountName"></uni-list-item>
  16. <uni-list-item title="所在部门" :rightText="baseInfo.rectifyGroupName" v-if="baseInfo.rectifyGroupName"></uni-list-item>
  17. <uni-list-item title="整改人员" :rightText="baseInfo.rectifyAccountName" v-if="baseInfo.rectifyAccountName"></uni-list-item>
  18. <uni-list-item title="整改措施" :rightText="baseInfo.rectifyMeasure" v-if="baseInfo.rectifyMeasure"></uni-list-item>
  19. <uni-list-item title="整改说明" :rightText="baseInfo.rectifyRemark" v-if="baseInfo.rectifyRemark"></uni-list-item>
  20. </view>
  21. <uni-section title="附件" type="line">
  22. <div class="attach-wrap">
  23. <image @click="showImage(attachindex)" class="attach" :src="attach.fileUrl" v-for="(attach,attachindex) in baseInfo.attachList" :key="attachindex"></image>
  24. </div>
  25. </uni-section>
  26. </uni-collapse-item>
  27. </uni-collapse>
  28. <div class="form-container">
  29. <uni-forms ref="form" :modelValue="formData" :rules="rules" :label-width="80">
  30. <uni-forms-item label="处理动作" name="actionDefId" required v-if="actionDefList&&actionDefList.length>0">
  31. <div class="uni-data-checkbox-wrap">
  32. <uni-data-checkbox v-model="formData.actionDefId" :localdata="actionDefList" />
  33. </div>
  34. </uni-forms-item>
  35. <uni-forms-item label="描述建议" name="dangerDesc">
  36. <uni-easyinput v-model="formData.dangerDesc" type="textarea" :maxlength="-1" autoHeight placeholder="描述" />
  37. </uni-forms-item>
  38. <uni-forms-item label="执行人" name="accountId" required>
  39. <uni-data-select v-model="formData.accountId" :localdata="userList"></uni-data-select>
  40. </uni-forms-item>
  41. </uni-forms>
  42. <uni-section title="上传附件" type="line">
  43. <view class="example-body">
  44. <uni-file-picker v-model="formData.attachList"
  45. fileMediatype="image"
  46. title="请上传附件"
  47. limit="1"
  48. @select="uploadSuccess"
  49. @delete="deleteFile"></uni-file-picker>
  50. </view>
  51. </uni-section>
  52. </div>
  53. <button class="submit_bt" @click="onSubmit" >提交</button>
  54. </view>
  55. </template>
  56. <script>
  57. import {getDangerById} from '@/api/aqpt/dangerApi.js'
  58. import {getWorkflowById,handleWorkflow} from '@/api/system/wfApi.js'
  59. import {getUserList,} from '@/api/system/user.js'
  60. import { handleDanger } from '@/api/system/dangerApi.js'
  61. import {upload} from '@/api/system/upload.js'
  62. export default {
  63. data() {
  64. return {
  65. baseInfo:{
  66. },
  67. actionDefList:[],
  68. userList:[],
  69. flowData:{},
  70. formData:{
  71. dangerDesc:"",
  72. accountId:"",
  73. attachList:[]
  74. },
  75. rules:{
  76. }
  77. }
  78. },
  79. onLoad() {
  80. this.init()
  81. },
  82. methods: {
  83. dangerStatus(i) {
  84. if (i >= 0) {
  85. const strs = ['待提交','待评审','待整改','待验收','已完成']
  86. return strs[i]
  87. } else {
  88. return '已撤销'
  89. }
  90. },
  91. init(){
  92. let info=uni.getStorageSync('detail-info')
  93. getDangerById(info.dangerId).then((res)=>{
  94. this.baseInfo=res.data
  95. })
  96. this.getUserList()
  97. this.get(info.dangerId)
  98. },
  99. // 获取流程
  100. get(wfInsId) {
  101. getWorkflowById(wfInsId).then((resp) => {
  102. const { data } = resp
  103. this.flowData = data
  104. this.formData.wfDefId = data.wfDefId
  105. this.formData.wfInsId = data.wfInsId
  106. this.formData.activityDefId = data.activityDefId
  107. this.formData.activityInsId = data.activityInsId
  108. this.formData.activityCode = data.activityCode
  109. this.formData.actionInsId = data.actionInsId
  110. if(data.wfInsTitle){
  111. uni.setNavigationBarTitle({
  112. title:`${data.activityInsTitle}流程`
  113. })
  114. }
  115. this.actionDefList=this.flowData.actionDefList.map(item=>{
  116. return{
  117. ...item,
  118. text:item.actionTitle,
  119. value:item.actionDefId
  120. }
  121. })
  122. if(this.actionDefList.length>0){
  123. this.formData.actionDefId=this.actionDefList[0].actionDefId
  124. }
  125. }).catch(()=>{
  126. uni.showToast({
  127. icon:"none",
  128. title:"流程初始化失败"
  129. })
  130. })
  131. },
  132. getUserList(){
  133. getUserList().then((res)=>{
  134. var userList=[]
  135. for (var i = 0; i < res.data.length; i++) {
  136. userList.push({
  137. value: -i,
  138. text: res.data[i].name,
  139. disable:true
  140. })
  141. for(let j = 0; j < res.data[i].children.length; j++){
  142. userList.push({
  143. ...res.data[i].children[j],
  144. value: res.data[i].children[j].accountId,
  145. text: res.data[i].children[j].accountName
  146. })
  147. }
  148. }
  149. this.userList=userList
  150. })
  151. },
  152. showImage(index){
  153. uni.previewImage({
  154. urls:this.baseInfo.attachList.map(item=>item.fileUrl),
  155. current:index
  156. })
  157. },
  158. onSubmit(){
  159. let info=uni.getStorageSync('detail-info')
  160. let dangerId=info.dangerId
  161. let action=this.actionDefList.filter(item=>item.actionDefId===this.formData.actionDefId)[0]
  162. let user=this.userList.filter(item=>this.formData.accountId===item.accountId)[0]
  163. let activityCode=this.formData.activityCode
  164. let res={
  165. ...info,
  166. "formCode": activityCode,
  167. "dangerId": dangerId,
  168. "curGroupId": info.curGroupId,
  169. "curGroupName": info.curGroupName,
  170. "curPositionId": info.curPositionId,
  171. "curPositionName": info.curPositionName,
  172. "curAccountId": info.curAccountId,
  173. "curAccountName": info.curAccountName,
  174. [activityCode+"Remark"]: this.formData.dangerDesc
  175. }
  176. let workflowForm={
  177. "wfDefId": 1,
  178. "wfInsId": dangerId,
  179. "activityDefId": this.formData.activityDefId,
  180. "activityInsId": this.formData.activityInsId,
  181. "activityCode": activityCode,
  182. "actionId": 1,
  183. "actionCode": action.actionCode,
  184. "actionInsId": this.formData.actionInsId,
  185. "actionDefId": action.actionDefId,
  186. "actionRemark": this.formData.dangerDesc,
  187. "groupIdTo": user.groupId,
  188. "positionIdTo": user.positionId,
  189. "accountIdTo": user.accountId,
  190. "accountNameTo": user.accountName,
  191. "groupNameTo": user.groupName,
  192. "positionNameTo": user.positionName
  193. }
  194. this.handleSubmit({res,workflowForm})
  195. },
  196. async handleSubmit({res,workflowForm}) {
  197. let attachList=[]
  198. for(let i=0;i<this.formData.attachList.length;i++){
  199. let filePath=this.formData.attachList[i].url
  200. let fileresq=await upload({filePath})
  201. fileresq=JSON.parse(fileresq)
  202. attachList.push(fileresq.data)
  203. }
  204. let {data}=await handleWorkflow({...workflowForm,attachList}).catch(()=>{uni.showToast({icon:'none',title:"提交失败!"})})
  205. let status=this.getStatusByActivityCode(data.activityCode,data.status)
  206. let resq=await handleDanger({...res,attachList,status}).catch(()=>{uni.showToast({icon:'none',title:"提交失败!"})})
  207. uni.showToast({
  208. icon:'none',
  209. title:"提交成功!",
  210. complete() {
  211. uni.$emit('type',2)
  212. uni.switchTab({
  213. url:'/pages/history/history?type=dangerhandle'
  214. })
  215. }
  216. })
  217. },
  218. getStatusByActivityCode(activityCode, wfStatus) {
  219. let iRet = 0
  220. if (wfStatus === 0) {
  221. if (activityCode === 'submit') {
  222. iRet = 0
  223. } else if (activityCode === 'review') {
  224. iRet = 1
  225. } else if (activityCode === 'rectify') {
  226. iRet = 2
  227. } else if (activityCode === 'accept') {
  228. iRet = 3
  229. }
  230. } else if (wfStatus === 1) {
  231. iRet = 4
  232. } else {
  233. iRet = -1
  234. }
  235. return iRet
  236. },
  237. uploadSuccess(e){
  238. let attachList=JSON.parse(JSON.stringify(this.formData.attachList))
  239. attachList.push(e.tempFiles[0])
  240. this.formData.attachList=attachList
  241. },
  242. deleteFile(e){
  243. let attachList=JSON.parse(JSON.stringify(this.formData.attachList))
  244. attachList.filter(item=>item.uuid!==e.tempFile.uuid)
  245. this.formData.attachList=attachList
  246. },
  247. }
  248. }
  249. </script>
  250. <style lang="scss" scoped>
  251. .danger-form{
  252. padding: 20rpx;
  253. .attach-wrap{
  254. display: flex;
  255. flex-wrap: wrap;
  256. .attach{
  257. display: block;
  258. width: 100rpx;
  259. height: 100rpx;
  260. margin: 10rpx;
  261. border: 1px solid #ccc;
  262. }
  263. }
  264. .form-container{
  265. padding: 10rpx;
  266. box-shadow: 0px 0px 3px 1px rgba(0, 0, 0, 0.08);
  267. margin-top: 20rpx;
  268. }
  269. .submit_bt{
  270. width: 600rpx;
  271. height: 72rpx;
  272. line-height: 72rpx;
  273. box-sizing: border-box;
  274. border-radius: 16upx;
  275. margin-top: 50upx;
  276. background-color:#3384FF;
  277. font-size: 32rpx;
  278. color: #fff;
  279. }
  280. ::v-deep .uni-forms-item{
  281. .uni-forms-item__content{
  282. .uni-data-checkbox-wrap{
  283. height: 100%;
  284. display: flex;
  285. align-items: center;
  286. }
  287. }
  288. }
  289. }
  290. </style>