swMessage.vue 52 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545
  1. <template>
  2. <view style="background-color: #fff;" v-if="content != null">
  3. <view
  4. style="height: 100rpx;display: flex;align-items: center;justify-content: space-around;border-bottom: 1px solid #ceccca;"
  5. v-if="type == 0">
  6. <!-- <u-tabs :list="list1" :current="current" @click="click"></u-tabs> -->
  7. <view class="tab" :class="this.current==0?'active':''" @click="current = 0">
  8. 待办内容
  9. </view>
  10. <view style="border-left: 1px solid #ceccca;height: 80%;">
  11. </view>
  12. <view class="tab" :class="this.current!=1?'':'active'" @click="current = 1">
  13. 流转记录
  14. </view>
  15. <!-- <span v-if="this.statusLuoban=='0'" class=""> -->
  16. <view v-if="(this.LuobanFile|| hasPermission('offcial:receive:lbxq')&&this.statusLuoban=='0')"
  17. style="border-left: 1px solid #ceccca;height: 80%;">
  18. </view>
  19. <view v-if="(this.LuobanFile|| hasPermission('offcial:receive:lbxq')&&this.statusLuoban=='0')" class="tab"
  20. :class="this.current!=2?'':'active'" @click="current = 2">
  21. 落办详情
  22. </view>
  23. <!-- </span> -->
  24. </view>
  25. <view
  26. style="height: 100rpx;display: flex;align-items: center;justify-content: space-around;border-bottom: 1px solid #ceccca;"
  27. v-else>
  28. <!-- <u-tabs :list="list1" :current="current" @click="click"></u-tabs> -->
  29. <view class="tab" :class="this.current==0?'active':''" @click="current = 0">
  30. 基本信息
  31. </view>
  32. <!-- <view style="border-left: 1px solid #ceccca;height: 80%;">
  33. </view>
  34. <view class="tab" :class="this.current!=1?'':'active'" @click="current = 1">
  35. 流转记录
  36. </view> -->
  37. <!-- <span v-if="this.statusLuoban=='0'" style="display: inline-block;" class=""> -->
  38. <view v-if="(this.LuobanFile|| hasPermission('offcial:receive:lbxq')&&this.statusLuoban=='0')"
  39. style="border-left: 1px solid #ceccca;height: 80%;">
  40. </view>
  41. <view v-if="(this.LuobanFile|| hasPermission('offcial:receive:lbxq')&&this.statusLuoban=='0')" class="tab"
  42. :class="this.current!=1?'':'active'" @click="current = 1">
  43. 落办详情
  44. </view>
  45. <!-- </span> -->
  46. </view>
  47. <swiper v-if="type == 0" style="background-color:#fff ;"
  48. :style="{height:type==0?'calc(100vh - 100rpx)':'100vh'}" :current="current" disable-touch>
  49. <swiper-item>
  50. <view style="height: 100%;overflow: auto;">
  51. <u--form labelPosition="left" labelAlign="center" :model="content" ref="uForm"
  52. :labelStyle="{fontSize:'32rpx'}" labelWidth="100">
  53. <u-form-item label="紧急程度:" borderBottom ref="item1">
  54. <view class="content">
  55. {{content.status}}
  56. </view>
  57. </u-form-item>
  58. <u-form-item label="来文标题:" borderBottom ref="item1">
  59. <view class="content">
  60. {{content.title}}
  61. </view>
  62. </u-form-item>
  63. <u-form-item label="来文单位:" borderBottom ref="item1">
  64. <view class="content">
  65. {{content.sender}}
  66. </view>
  67. </u-form-item>
  68. <u-form-item label="来文日期:" borderBottom ref="item1">
  69. <view class="content">
  70. {{content.sendTime}}
  71. </view>
  72. </u-form-item>
  73. <u-form-item label="流水号:" borderBottom ref="item1">
  74. <view class="content">
  75. {{content.serial}}
  76. </view>
  77. </u-form-item>
  78. <u-form-item label="文件字号:" borderBottom ref="item1">
  79. <view class="content">
  80. {{content.documentNum}}
  81. </view>
  82. </u-form-item>
  83. <u-form-item label="文件类型:" borderBottom ref="item1">
  84. <view class="content">
  85. {{content.wjtype}}
  86. </view>
  87. </u-form-item>
  88. <u-form-item label="正文查看:" borderBottom ref="item1">
  89. <view>
  90. <!-- <u--text :text="content.sendFile.name" :href="content.sendFile.url"></u--text> -->
  91. <u--text size="30rpx" :lines="3" color="#2979FF" :text="content.sendFile.name"
  92. @click="downLoad(content.sendFile.path)"></u--text>
  93. </view>
  94. </u-form-item>
  95. <u-form-item label="附件查看:" borderBottom ref="item1">
  96. <view v-if="content.fujianFileList != null && content.fujianFileList.length != 0 ">
  97. <u--text :text="v.yfile.name" :lines="3" v-for="(v,i) in content.fujianFileList"
  98. :key="i" size="30rpx" color="#2979FF" @click="downLoad(v.yfile.path)"></u--text>
  99. </view>
  100. </u-form-item>
  101. <u-form-item label="反馈文件:" borderBottom ref="item1" v-if="feedBack==true">
  102. <view style="width: 100%;" class="">
  103. <u-button style="width: 90%;" type="primary" text="上传反馈文件"
  104. @click="uploadPic"></u-button>
  105. <view style="margin-bottom: 30rpx;display: flex;margin-top: 4rpx;"
  106. v-for="v in this.fileListPic" :key="v.fileId">
  107. <u-icon style="margin-top: 4rpx;color: #2979FF;" name="attach"></u-icon><u--text
  108. :lines="1" size="14" color="#2979FF" decoration="underline" :text="v.name"
  109. @click="downLoad(v.url)">{{v.name}}</u--text><u-icon @click="delFile(v)"
  110. style="margin-top: 0rpx;" name="close"></u-icon>
  111. </view>
  112. </view>
  113. <!-- <div v-if="this.fileListPic != null && this.fileListPic.length != 0 ">
  114. <u--text :text="v.name" :lines="3" v-for="(v,i) in fileListPic" :key="i" size="30rpx"
  115. color="#2979FF" @click="downLoad(v.path)"></u--text>
  116. </div> -->
  117. </u-form-item>
  118. <view v-if="type==0" style="padding-bottom: 40rpx;">
  119. <u-form-item label="下一节点:" borderBottom ref="item1" v-if="overType==false">
  120. <uni-data-select v-model="content.jdindex" placeholder="请选择下一节点" :localdata="list"
  121. :clear="false" @change="change"></uni-data-select>
  122. </u-form-item>
  123. <u-form-item label="主办科室:" borderBottom v-if="keshiSel == true" ref="item1"
  124. @click="choosePeozhuBan">
  125. <view :style="{color:this.zhubanPeo==null?'rgb(192, 196, 204)':''}">
  126. {{this.zhubanPeo==null?'请选择人员':this.zhubanPeo}}
  127. </view>
  128. </u-form-item>
  129. <u-form-item label="落办科室:" borderBottom v-if="keshiSel == true" ref="item1"
  130. @click="choosePeo">
  131. <view :style="{color:this.luobanPeo==null?'rgb(192, 196, 204)':''}">
  132. {{this.luobanPeo==null?'请选择人员': this.luobanPeo}}
  133. </view>
  134. </u-form-item>
  135. <u-form-item label="审批意见:" borderBottom ref="item1" v-if="gdType == false">
  136. <u--textarea v-model="content.reviewMsg" placeholder="请输入审批意见" autoHeight
  137. border="none"></u--textarea>
  138. </u-form-item>
  139. <u-form-item label="接收人:" borderBottom v-if="this.jijianPeo==true" ref="item1"
  140. @click="choosePeoQianpi">
  141. <view :style="{color:this.content.userList==null?'rgb(192, 196, 204)':''}">
  142. {{this.content.userList==null?'请选择人员': this.content.userList}}
  143. </view>
  144. </u-form-item>
  145. <view v-if="gdType == true">
  146. <u-form-item label="密级:" borderBottom ref="item1">
  147. <uni-data-select v-model="content.levels" placeholder="请选择密级" :clear="false"
  148. :localdata="gd"></uni-data-select>
  149. </u-form-item>
  150. <!-- <u-form-item label="档案编号:" borderBottom ref="item1">
  151. <u--input v-model="content.archiveNo" placeholder="请输入档案编号"
  152. border="none"></u--input>
  153. </u-form-item> -->
  154. <u-form-item label="档案分类:" borderBottom ref="item1" @click="chooseGd">
  155. <view :style="{color:content.typeId==null?'rgb(192, 196, 204)':''}">
  156. {{content.typeId==null?'请选择档案分类': content.gdtype}}
  157. </view>
  158. </u-form-item>
  159. <u-form-item label="打印份数:" borderBottom ref="item1">
  160. <u--input v-model="content.printNum" placeholder="请输入打印份数" border="none"></u--input>
  161. </u-form-item>
  162. <u-form-item label="责任领导:" borderBottom ref="item1">
  163. <u--input v-model="content.hostLeader" placeholder="请输入责任领导"
  164. border="none"></u--input>
  165. </u-form-item>
  166. </view>
  167. <!-- <view v-if="backType == true">
  168. <u-form-item label="退回节点:" borderBottom ref="item1">
  169. <uni-data-select v-model="content.returnToNodeID" placeholder="请选择节点" :clear="false"
  170. :localdata="backlist"></uni-data-select>
  171. </u-form-item>
  172. <u-form-item label="退回意见:" borderBottom ref="item1" >
  173. <u--textarea v-model="content.backMsg" placeholder="请输入退回意见" autoHeight
  174. border="none"></u--textarea>
  175. </u-form-item>
  176. </view> -->
  177. <!-- <view style="margin: 20rpx 0;padding: 0 20rpx;color:rgb(137, 139, 145);font-size: 30rpx;"
  178. v-if="content.isFeedback==='1' && nodeId == 308">
  179. 注:当前节点可上传反馈文件,如需上传请在协同办公系统进行操作
  180. </view> -->
  181. <u-form-item label="接收人:" borderBottom v-if="qianpiShow == true" ref="item1"
  182. @click="choosePeoQianpi">
  183. <view :style="{color:this.content.userList==null?'rgb(192, 196, 204)':''}">
  184. {{this.content.userList==null?'请选择人员': this.content.userList}}
  185. </view>
  186. </u-form-item>
  187. <view style="margin-top: 40rpx;padding: 0 20rpx;box-sizing: border-box;"
  188. v-if="gdType == false">
  189. <!-- <u-button v-if="guidangShow" type="primary" text="提交" @click="qianpiSubmit"></u-button> -->
  190. <u-button type="primary" text="提交" @click="submit"></u-button>
  191. </view>
  192. <view style="margin-top: 40rpx;padding: 0 20rpx;box-sizing: border-box;"
  193. v-if="gdType == true">
  194. <u-button type="primary" text="归档" @click="save"></u-button>
  195. </view>
  196. <!-- <view style="margin-top: 40rpx;padding: 0 20rpx;box-sizing: border-box;"
  197. v-if="yjType == true">
  198. <u-button type="warning" text="移交" @click="yjShow = true"></u-button>
  199. </view> -->
  200. <!-- <view style="margin-top: 40rpx;padding: 0 20rpx;box-sizing: border-box;"
  201. v-if="backType == true&&this.statusLuoban=='0'">
  202. <u-button type="error" text="退回" @click="show = true"></u-button>
  203. </view> -->
  204. </view>
  205. <view style="padding: 20rpx;box-sizing: border-box;" v-else>
  206. <u-steps :current="lzNum-1" direction="column" dot v-if="record != null">
  207. <view v-for="(v,i) in record" :key="i">
  208. <u-steps-item :error="v.ActionType==2?true:false"
  209. :title='v.NDFromT+"("+v.ActionTypeText+")"' v-if="v.ActionType==='28'">
  210. <view slot="desc" style="color: #606266">
  211. <view style="font-size: 28rpx;">
  212. 处理人:{{v.EmpFromT}}
  213. </view>
  214. <view style="font-size: 28rpx;">
  215. 到达时间:{{v.SDT}}
  216. </view>
  217. </view>
  218. </u-steps-item>
  219. <view v-else-if="v.ActionType22 != undefined">
  220. <u-steps-item :error="v.ActionType==2?true:false"
  221. v-for="(item,index) in v.ActionType22" :key="index"
  222. :title='item.NDFromT+"("+v.ActionTypeText+")"'>
  223. <view slot="desc" style="color:#606266;">
  224. <view style="font-size: 28rpx;">
  225. 处理部门:{{item.NodeData.split("DeptName=")[1]}}
  226. </view>
  227. <view style="font-size: 28rpx;">
  228. 处理人:{{item.Exer.split(',')[1]}}
  229. </view>
  230. <view style="font-size: 28rpx;">
  231. 处理时间:{{item.RDT}}
  232. </view>
  233. <view style="font-size: 28rpx;">
  234. 审核意见:{{item.Msg}}
  235. </view>
  236. </view>
  237. </u-steps-item>
  238. </view>
  239. <u-steps-item :error="v.ActionType==2?true:false"
  240. :title='v.NDFromT+"("+v.ActionTypeText+")"' v-else>
  241. <view slot="desc" style="color: #606266">
  242. <view style="font-size: 28rpx;">
  243. 处理部门:{{v.NodeData.split("DeptName=")[1]}}
  244. </view>
  245. <view style="font-size: 28rpx;">
  246. 处理人:{{v.Exer.split(',')[1]}}
  247. </view>
  248. <view style="font-size: 28rpx;">
  249. 处理时间:{{v.RDT}}
  250. </view>
  251. </view>
  252. </u-steps-item>
  253. </view>
  254. </u-steps>
  255. </view>
  256. </u--form>
  257. </view>
  258. </swiper-item>
  259. <swiper-item>
  260. <view
  261. style="padding: 20rpx;box-sizing: border-box;width: 100%;box-sizing: border-box;height: 100%;overflow: auto;">
  262. <u-steps :current="lzNum-1" direction="column" dot v-if="record != null">
  263. <view v-for="(v,i) in record" :key="i">
  264. <u-steps-item :error="v.ActionType==2?true:false"
  265. :title='v.NDFromT+"("+v.ActionTypeText+")"' v-if="v.ActionType ==='28'">
  266. <view slot="desc" style="color: #606266">
  267. <view style="font-size: 28rpx;">
  268. 处理人:{{v.EmpFromT}}
  269. </view>
  270. <view style="font-size: 28rpx;">
  271. 到达时间:{{v.SDT}}
  272. </view>
  273. </view>
  274. </u-steps-item>
  275. <view v-else-if="v.ActionType22 != undefined">
  276. <u-steps-item :error="v.ActionType==2?true:false" v-for="(item,index) in v.ActionType22"
  277. :key="index" :title='item.NDFromT+"("+v.ActionTypeText+")"'>
  278. <view slot="desc" style="color:#606266;">
  279. <view style="font-size: 28rpx;">
  280. 处理部门:{{item.NodeData.split("DeptName=")[1]}}
  281. </view>
  282. <view style="font-size: 28rpx;">
  283. 处理人:{{item.Exer.split(',')[1]}}
  284. </view>
  285. <view style="font-size: 28rpx;">
  286. 处理时间:{{item.RDT}}
  287. </view>
  288. <view style="font-size: 28rpx;">
  289. 审核意见:{{item.Msg}}
  290. </view>
  291. </view>
  292. </u-steps-item>
  293. </view>
  294. <u-steps-item :error="v.ActionType==2?true:false"
  295. :title='v.NDFromT+"("+v.ActionTypeText+")"' v-else>
  296. <view slot="desc" style="color: #606266">
  297. <view style="font-size: 28rpx;">
  298. 处理部门:{{v.NodeData.split("DeptName=")[1]}}
  299. </view>
  300. <view style="font-size: 28rpx;">
  301. 处理人:{{v.Exer.split(',')[1]}}
  302. </view>
  303. <view style="font-size: 28rpx;">
  304. 处理时间:{{v.RDT}}
  305. </view>
  306. </view>
  307. </u-steps-item>
  308. </view>
  309. </u-steps>
  310. </view>
  311. </swiper-item>
  312. <swiper-item>
  313. <view style="background-color:#edf2fa;height: 100%;padding:20rpx" class="">
  314. <div v-if="content.feedbackFileList.length>0">
  315. <view v-for="item in content.feedbackFileList" class="">
  316. <view @click="downLoad(item.yfile.path)"
  317. style="background-color: #fff;padding:20rpx;border-radius: 10rpx;margin-bottom: 20rpx;"
  318. class="">
  319. <span style="color: #2979FF;">
  320. {{item.yfile.name}}
  321. </span>
  322. <view style="margin-top: 10rpx;" class="">
  323. {{item.nickName}} <span style="margin-left: 30rpx;">{{item.deptName}}</span>
  324. </view>
  325. </view>
  326. </view>
  327. </div>
  328. <div v-else>
  329. <u-empty mode="list" icon="/static/list.png" text="暂无内容" textSize="30rpx"></u-empty>
  330. </div>
  331. </view>
  332. </swiper-item>
  333. </swiper>
  334. <swiper v-else style="background-color:#fff ;" :style="{height:type==0?'calc(100vh - 100rpx)':'100vh'}"
  335. :current="current" disable-touch>
  336. <swiper-item>
  337. <view style="height: 100%;overflow: auto;">
  338. <u--form labelPosition="left" labelAlign="center" :model="content" ref="uForm"
  339. :labelStyle="{fontSize:'32rpx'}" labelWidth="100">
  340. <u-form-item label="紧急程度:" borderBottom ref="item1">
  341. <view class="content">
  342. {{content.status}}
  343. </view>
  344. </u-form-item>
  345. <u-form-item label="来文标题:" borderBottom ref="item1">
  346. <view class="content">
  347. {{content.title}}
  348. </view>
  349. </u-form-item>
  350. <u-form-item label="来文单位:" borderBottom ref="item1">
  351. <view class="content">
  352. {{content.sender}}
  353. </view>
  354. </u-form-item>
  355. <u-form-item label="来文日期:" borderBottom ref="item1">
  356. <view class="content">
  357. {{content.sendTime}}
  358. </view>
  359. </u-form-item>
  360. <u-form-item label="流水号:" borderBottom ref="item1">
  361. <view class="content">
  362. {{content.serial}}
  363. </view>
  364. </u-form-item>
  365. <u-form-item label="文件字号:" borderBottom ref="item1">
  366. <view class="content">
  367. {{content.documentNum}}
  368. </view>
  369. </u-form-item>
  370. <u-form-item label="文件类型:" borderBottom ref="item1">
  371. <view class="content">
  372. {{content.wjtype}}
  373. </view>
  374. </u-form-item>
  375. <u-form-item label="正文查看:" borderBottom ref="item1">
  376. <view>
  377. <!-- <u--text :text="content.sendFile.name" :href="content.sendFile.url"></u--text> -->
  378. <u--text size="30rpx" :lines="3" color="#2979FF" :text="content.sendFile.name"
  379. @click="downLoad(content.sendFile.path)"></u--text>
  380. </view>
  381. </u-form-item>
  382. <u-form-item label="附件查看:" borderBottom ref="item1">
  383. <view v-if="content.fujianFileList != null && content.fujianFileList.length != 0 ">
  384. <u--text :text="v.yfile.name" :lines="3" v-for="(v,i) in content.fujianFileList"
  385. :key="i" size="30rpx" color="#2979FF" @click="downLoad(v.yfile.path)"></u--text>
  386. </view>
  387. </u-form-item>
  388. <u-form-item label="反馈文件:" borderBottom ref="item1" v-if="feedBack==true">
  389. <view style="width: 100%;" class="">
  390. <u-button style="width: 90%;" type="primary" text="上传反馈文件"
  391. @click="uploadPic"></u-button>
  392. <view style="margin-bottom: 30rpx;display: flex;margin-top: 4rpx;"
  393. v-for="v in this.fileListPic" :key="v.fileId">
  394. <u-icon style="margin-top: 4rpx;color: #2979FF;" name="attach"></u-icon><u--text
  395. :lines="1" size="14" color="#2979FF" decoration="underline" :text="v.name"
  396. @click="downLoad(v.url)">{{v.name}}</u--text><u-icon @click="delFile(v)"
  397. style="margin-top: 0rpx;" name="close"></u-icon>
  398. </view>
  399. </view>
  400. <!-- <div v-if="this.fileListPic != null && this.fileListPic.length != 0 ">
  401. <u--text :text="v.name" :lines="3" v-for="(v,i) in fileListPic" :key="i" size="30rpx"
  402. color="#2979FF" @click="downLoad(v.path)"></u--text>
  403. </div> -->
  404. </u-form-item>
  405. <view v-if="type==0" style="padding-bottom: 40rpx;">
  406. <u-form-item label="下一节点:" borderBottom ref="item1" v-if="overType==false">
  407. <uni-data-select v-model="content.jdindex" placeholder="请选择下一节点" :localdata="list"
  408. :clear="false" @change="change"></uni-data-select>
  409. </u-form-item>
  410. <u-form-item label="主办科室:" borderBottom v-if="keshiSel == true" ref="item1"
  411. @click="choosePeozhuBan">
  412. <view :style="{color:this.zhubanPeo==null?'rgb(192, 196, 204)':''}">
  413. {{this.zhubanPeo==null?'请选择人员':this.zhubanPeo}}
  414. </view>
  415. </u-form-item>
  416. <u-form-item label="落办科室:" borderBottom v-if="keshiSel == true" ref="item1"
  417. @click="choosePeo">
  418. <view :style="{color:this.luobanPeo==null?'rgb(192, 196, 204)':''}">
  419. {{this.luobanPeo==null?'请选择人员': this.luobanPeo}}
  420. </view>
  421. </u-form-item>
  422. <u-form-item label="审批意见:" borderBottom ref="item1" v-if="gdType == false">
  423. <u--textarea v-model="content.reviewMsg" placeholder="请输入审批意见" autoHeight
  424. border="none"></u--textarea>
  425. </u-form-item>
  426. <u-form-item label="接收人:" borderBottom v-if="this.jijianPeo==true" ref="item1"
  427. @click="choosePeoQianpi">
  428. <view :style="{color:this.content.userList==null?'rgb(192, 196, 204)':''}">
  429. {{this.content.userList==null?'请选择人员': this.content.userList}}
  430. </view>
  431. </u-form-item>
  432. <view v-if="gdType == true">
  433. <u-form-item label="密级:" borderBottom ref="item1">
  434. <uni-data-select v-model="content.levels" placeholder="请选择密级" :clear="false"
  435. :localdata="gd"></uni-data-select>
  436. </u-form-item>
  437. <!-- <u-form-item label="档案编号:" borderBottom ref="item1">
  438. <u--input v-model="content.archiveNo" placeholder="请输入档案编号"
  439. border="none"></u--input>
  440. </u-form-item> -->
  441. <u-form-item label="档案分类:" borderBottom ref="item1" @click="chooseGd">
  442. <view :style="{color:content.typeId==null?'rgb(192, 196, 204)':''}">
  443. {{content.typeId==null?'请选择档案分类': content.gdtype}}
  444. </view>
  445. </u-form-item>
  446. <u-form-item label="打印份数:" borderBottom ref="item1">
  447. <u--input v-model="content.printNum" placeholder="请输入打印份数" border="none"></u--input>
  448. </u-form-item>
  449. <u-form-item label="责任领导:" borderBottom ref="item1">
  450. <u--input v-model="content.hostLeader" placeholder="请输入责任领导"
  451. border="none"></u--input>
  452. </u-form-item>
  453. </view>
  454. <!-- <view v-if="backType == true">
  455. <u-form-item label="退回节点:" borderBottom ref="item1">
  456. <uni-data-select v-model="content.returnToNodeID" placeholder="请选择节点" :clear="false"
  457. :localdata="backlist"></uni-data-select>
  458. </u-form-item>
  459. <u-form-item label="退回意见:" borderBottom ref="item1" >
  460. <u--textarea v-model="content.backMsg" placeholder="请输入退回意见" autoHeight
  461. border="none"></u--textarea>
  462. </u-form-item>
  463. </view> -->
  464. <!-- <view style="margin: 20rpx 0;padding: 0 20rpx;color:rgb(137, 139, 145);font-size: 30rpx;"
  465. v-if="content.isFeedback==='1' && nodeId == 308">
  466. 注:当前节点可上传反馈文件,如需上传请在协同办公系统进行操作
  467. </view> -->
  468. <u-form-item label="接收人:" borderBottom v-if="qianpiShow == true" ref="item1"
  469. @click="choosePeoQianpi">
  470. <view :style="{color:this.content.userList==null?'rgb(192, 196, 204)':''}">
  471. {{this.content.userList==null?'请选择人员': this.content.userList}}
  472. </view>
  473. </u-form-item>
  474. <view style="margin-top: 40rpx;padding: 0 20rpx;box-sizing: border-box;"
  475. v-if="gdType == false">
  476. <!-- <u-button v-if="guidangShow" type="primary" text="提交" @click="qianpiSubmit"></u-button> -->
  477. <u-button type="primary" text="提交" @click="submit"></u-button>
  478. </view>
  479. <view style="margin-top: 40rpx;padding: 0 20rpx;box-sizing: border-box;"
  480. v-if="gdType == true">
  481. <u-button type="primary" text="归档" @click="save"></u-button>
  482. </view>
  483. <!-- <view style="margin-top: 40rpx;padding: 0 20rpx;box-sizing: border-box;"
  484. v-if="yjType == true">
  485. <u-button type="warning" text="移交" @click="yjShow = true"></u-button>
  486. </view> -->
  487. <!-- <view style="margin-top: 40rpx;padding: 0 20rpx;box-sizing: border-box;"
  488. v-if="backType == true">
  489. <u-button type="error" text="退回" @click="show = true"></u-button>
  490. </view> -->
  491. </view>
  492. <view style="padding: 20rpx;box-sizing: border-box;" v-else>
  493. <u-steps :current="lzNum-1" direction="column" dot v-if="record != null">
  494. <view v-for="(v,i) in record" :key="i">
  495. <u-steps-item :error="v.ActionType==2?true:false"
  496. :title='v.NDFromT+"("+v.ActionTypeText+")"' v-if="v.ActionType==='28'">
  497. <view slot="desc" style="color: #606266">
  498. <view style="font-size: 28rpx;">
  499. 处理人:{{v.EmpFromT}}
  500. </view>
  501. <view style="font-size: 28rpx;">
  502. 到达时间:{{v.SDT}}
  503. </view>
  504. </view>
  505. </u-steps-item>
  506. <view v-else-if="v.ActionType22 != undefined">
  507. <u-steps-item :error="v.ActionType==2?true:false"
  508. v-for="(item,index) in v.ActionType22" :key="index"
  509. :title='item.NDFromT+"("+v.ActionTypeText+")"'>
  510. <view slot="desc" style="color:#606266;">
  511. <view style="font-size: 28rpx;">
  512. 处理部门:{{item.NodeData.split("DeptName=")[1]}}
  513. </view>
  514. <view style="font-size: 28rpx;">
  515. 处理人:{{item.Exer.split(',')[1]}}
  516. </view>
  517. <view style="font-size: 28rpx;">
  518. 处理时间:{{item.RDT}}
  519. </view>
  520. <view style="font-size: 28rpx;">
  521. 审核意见:{{item.Msg}}
  522. </view>
  523. </view>
  524. </u-steps-item>
  525. </view>
  526. <u-steps-item :error="v.ActionType==2?true:false"
  527. :title='v.NDFromT+"("+v.ActionTypeText+")"' v-else>
  528. <view slot="desc" style="color: #606266">
  529. <view style="font-size: 28rpx;">
  530. 处理部门:{{v.NodeData.split("DeptName=")[1]}}
  531. </view>
  532. <view style="font-size: 28rpx;">
  533. 处理人:{{v.Exer.split(',')[1]}}
  534. </view>
  535. <view style="font-size: 28rpx;">
  536. 处理时间:{{v.RDT}}
  537. </view>
  538. </view>
  539. </u-steps-item>
  540. </view>
  541. </u-steps>
  542. </view>
  543. </u--form>
  544. </view>
  545. </swiper-item>
  546. <!-- <swiper-item>
  547. <view
  548. style="padding: 20rpx;box-sizing: border-box;width: 100%;box-sizing: border-box;height: 100%;overflow: auto;">
  549. <u-steps :current="lzNum-1" direction="column" dot v-if="record != null">
  550. <view v-for="(v,i) in record" :key="i">
  551. <u-steps-item :error="v.ActionType==2?true:false"
  552. :title='v.NDFromT+"("+v.ActionTypeText+")"' v-if="v.ActionType ==='28'">
  553. <view slot="desc" style="color: #606266">
  554. <view style="font-size: 28rpx;">
  555. 处理人:{{v.EmpFromT}}
  556. </view>
  557. <view style="font-size: 28rpx;">
  558. 到达时间:{{v.SDT}}
  559. </view>
  560. </view>
  561. </u-steps-item>
  562. <view v-else-if="v.ActionType22 != undefined">
  563. <u-steps-item :error="v.ActionType==2?true:false" v-for="(item,index) in v.ActionType22"
  564. :key="index" :title='item.NDFromT+"("+v.ActionTypeText+")"'>
  565. <view slot="desc" style="color:#606266;">
  566. <view style="font-size: 28rpx;">
  567. 处理部门:{{item.NodeData.split("DeptName=")[1]}}
  568. </view>
  569. <view style="font-size: 28rpx;">
  570. 处理人:{{item.Exer.split(',')[1]}}
  571. </view>
  572. <view style="font-size: 28rpx;">
  573. 处理时间:{{item.RDT}}
  574. </view>
  575. <view style="font-size: 28rpx;">
  576. 审核意见:{{item.Msg}}
  577. </view>
  578. </view>
  579. </u-steps-item>
  580. </view>
  581. <u-steps-item :error="v.ActionType==2?true:false"
  582. :title='v.NDFromT+"("+v.ActionTypeText+")"' v-else>
  583. <view slot="desc" style="color: #606266">
  584. <view style="font-size: 28rpx;">
  585. 处理部门:{{v.NodeData.split("DeptName=")[1]}}
  586. </view>
  587. <view style="font-size: 28rpx;">
  588. 处理人:{{v.Exer.split(',')[1]}}
  589. </view>
  590. <view style="font-size: 28rpx;">
  591. 处理时间:{{v.RDT}}
  592. </view>
  593. </view>
  594. </u-steps-item>
  595. </view>
  596. </u-steps>
  597. </view>
  598. </swiper-item> -->
  599. <swiper-item>
  600. <view style="background-color:#edf2fa;height: 100%;padding:20rpx" class="">
  601. <div v-if="content.feedbackFileList.length>0">
  602. <view v-for="item in content.feedbackFileList" class="">
  603. <view @click="downLoad(item.yfile.path)"
  604. style="background-color: #fff;padding:20rpx;border-radius: 10rpx;margin-bottom: 20rpx;"
  605. class="">
  606. <span style="color: #2979FF;">
  607. {{item.yfile.name}}
  608. </span>
  609. <view style="margin-top: 10rpx;" class="">
  610. {{item.nickName}} <span style="margin-left: 30rpx;">{{item.deptName}}</span>
  611. </view>
  612. </view>
  613. </view>
  614. </div>
  615. <div v-else>
  616. <u-empty mode="list" icon="/static/list.png" text="暂无内容" textSize="30rpx"></u-empty>
  617. </div>
  618. </view>
  619. </swiper-item>
  620. </swiper>
  621. <u-modal :show="show" title="退回" :closeOnClickOverlay="true" showCancelButton @cancel="close" @close="close"
  622. @confirm="back">
  623. <view class="slot-content" style="width: 100%;">
  624. <u--form labelPosition="left" labelAlign="center" :model="content" ref="uForm1"
  625. :labelStyle="{fontSize:'32rpx'}" labelWidth="100">
  626. <u-form-item label="退回节点:" borderBottom ref="item1">
  627. <uni-data-select v-model="content.returnToNodeID" placeholder="请选择节点" :clear="false"
  628. :localdata="backlist"></uni-data-select>
  629. </u-form-item>
  630. <u-form-item label="退回意见:" borderBottom ref="item1">
  631. <u--textarea v-model="content.backMsg" placeholder="请输入退回意见" autoHeight
  632. border="none"></u--textarea>
  633. </u-form-item>
  634. </u--form>
  635. </view>
  636. </u-modal>
  637. <u-modal :show="yjShow" title="移交" :closeOnClickOverlay="true" showCancelButton @cancel="close1" @close="close1"
  638. @confirm="yijiao">
  639. <view class="slot-content" style="width: 100%;">
  640. <u--form labelPosition="left" labelAlign="center" :model="content" ref="uForm1"
  641. :labelStyle="{fontSize:'32rpx'}" labelWidth="100">
  642. <u-form-item label="移交人员:" borderBottom ref="item1">
  643. <uni-data-select v-model="content.toEmps" placeholder="请选择移交人员" :clear="false"
  644. :localdata="yjPeoList"></uni-data-select>
  645. </u-form-item>
  646. <u-form-item label="移交信息:" borderBottom ref="item1">
  647. <u--textarea v-model="content.yjMsg" placeholder="请输入移交信息" autoHeight
  648. border="none"></u--textarea>
  649. </u-form-item>
  650. </u--form>
  651. </view>
  652. </u-modal>
  653. <u-action-sheet @select="selectClick" :actions="listPic" :closeOnClickOverlay="true" :closeOnClickAction="true"
  654. title="请选择" :show="showUpload"></u-action-sheet>
  655. </view>
  656. </template>
  657. <script>
  658. export default {
  659. data() {
  660. return {
  661. listPic: [{
  662. name: '拍照上传'
  663. }, {
  664. name: '从相册上传'
  665. }],
  666. userId: '',
  667. uploadUrl: 'http://121.28.24.104:13898/app/' + "/system/file/fileupload",
  668. baseURL: null,
  669. keshiSel: false,
  670. jijianPeo: false,
  671. qianpiShow: false,
  672. luobanPeo: null,
  673. luobanId: null,
  674. zhubanPeo: null,
  675. zhubanId: null,
  676. current: 0,
  677. content: {
  678. sendFile: {},
  679. feedbackFileList: []
  680. },
  681. statusList: [],
  682. //流转记录
  683. record: null,
  684. //待办已办
  685. type: 0,
  686. //节点列表
  687. list: [],
  688. //是否选择下发人员
  689. selectType: 3,
  690. workid: null,
  691. flowNo: null,
  692. id: null,
  693. baseURL: uni.getStorageSync('baseUrl'),
  694. //tabs
  695. list1: [{
  696. name: '待办内容'
  697. },
  698. {
  699. name: '流转记录'
  700. }
  701. ],
  702. DeliveryWay: null, //判断是否需要审核意见
  703. gd: null, //密级列表
  704. gdType: false, //判断是否是归档
  705. overType: false, //判断是否结束
  706. //上个页面传过来的参数
  707. parameter: null,
  708. //已下载附件
  709. list2: [],
  710. list3: [],
  711. //文件类型
  712. wjType: [],
  713. //退回状态
  714. backType: false,
  715. //退回节点列表
  716. backlist: [],
  717. //退回模态框
  718. show: false,
  719. //移交模态框
  720. yjType: false,
  721. yjShow: false,
  722. yjPeoList: [],
  723. //流转记录数量
  724. lzNum: 0,
  725. //当前节点id
  726. nodeId: null,
  727. guidangShow: false,
  728. showUpload: false,
  729. fileListPic: [],
  730. feedBack: false,
  731. LuobanFile: false,
  732. currFankui: null,
  733. permissions: [],
  734. statusLuoban: null
  735. }
  736. },
  737. onLoad(options) {
  738. let that = this
  739. // that.currFankui = options.current
  740. that.getDicts()
  741. that.getWjType()
  742. that.getRecord(options.workid)
  743. this.jijianPeo = false
  744. if (options.nodeId == '1202' || options.nodeId == '302') {
  745. this.jijianPeo = true
  746. }
  747. that.parameter = options
  748. that.nodeId = options.nodeId
  749. if (that.nodeId == 307) {
  750. that.qianpiShow = true
  751. }
  752. if (options.nodeName.indexOf('归档') != -1) {
  753. that.gdType = true
  754. that.getgd()
  755. }
  756. if (options.nodeId == 306) {
  757. this.keshiSel = true
  758. }
  759. this.feedBack = false
  760. if (options.nodeId == 308 && options.current == 0) {
  761. this.feedBack = true
  762. }
  763. if (options.nodeId == 308 || options.nodeId == 1208) {
  764. this.getYjPeo()
  765. }
  766. that.type = options.type
  767. that.workid = options.workid
  768. that.flowNo = options.flowNo
  769. uni.setNavigationBarTitle({
  770. title: options.title
  771. })
  772. that.getContent(options.workid)
  773. uni.$u.http.get('/getInfo').then(res1 => {
  774. // console.log('that.content.hostDeptId', that.content)
  775. // if (that.flowNo == '003' && that.content.hostDeptId == res1.user.dept.deptId) {
  776. // that.LuobanFile = true
  777. // }
  778. that.permissions = res1.permissions
  779. console.log(' permissions5', that.permissions)
  780. })
  781. },
  782. onShow() {
  783. uni.$once('query', (query) => {
  784. if (query.a == 1) {
  785. this.luobanPeo = getApp().globalData.peoList
  786. this.luobanId = getApp().globalData.peoIdList
  787. // this.content.users = getApp().globalData.peoIdList
  788. // this.content.userList = getApp().globalData.peoList
  789. this.$forceUpdate()
  790. } else if (query.a == 2) {
  791. this.content.typeId = getApp().globalData.gdId.split(",")[0]
  792. this.content.gdtype = getApp().globalData.gdId.split(",")[1]
  793. this.$forceUpdate()
  794. } else if (query.a == 3) {
  795. this.zhubanPeo = getApp().globalData.zhubanName
  796. this.zhubanId = getApp().globalData.zhubanId
  797. } else if (query.a == 4) {
  798. this.content.users = getApp().globalData.peoIdList
  799. this.content.userList = getApp().globalData.peoList
  800. this.$forceUpdate()
  801. }
  802. })
  803. },
  804. methods: {
  805. hasPermission(permission) {
  806. let that = this
  807. // 检查权限的逻辑
  808. // console.log('this.permissions', this.permissions)
  809. return that.permissions.includes(permission);
  810. },
  811. delFile(itemFile) {
  812. // console.log('itemFILE', itemFile)
  813. this.fileListPic.splice(itemFile, 1)
  814. },
  815. // downLoad(path) {
  816. // console.log('’', path)
  817. // uni.downloadFile({
  818. // url: path,
  819. // success: (res) => {
  820. // var filePath = res.tempFilePath;
  821. // uni.openDocument({
  822. // filePath: filePath,
  823. // showMenu: true,
  824. // success: function(res) {
  825. // console.log('打开文档成功');
  826. // }
  827. // });
  828. // }
  829. // })
  830. // },
  831. selectClick(index) {
  832. console.log(index)
  833. let that = this
  834. if (index.name == '拍照上传') {
  835. uni.chooseImage({
  836. count: 9, // 默认9,设置图片的数量
  837. sourceType: ['camera'], // 可以指定来源是相册还是相机,默认二者都有
  838. success: function(res) {
  839. // 返回选定照片的本地文件路径列表 tempFilePaths
  840. console.log(res.tempFilePaths);
  841. const pathUrl = res.tempFilePaths[0]
  842. uni.uploadFile({
  843. url: 'http://121.18.118.242:13898' +
  844. "/prod-api/system/file/fileupload",
  845. filePath: pathUrl,
  846. name: 'file',
  847. header: {
  848. Authorization: 'Bearer ' + uni.getStorageSync('token')
  849. },
  850. success: (response) => {
  851. console.log('1111111111111111')
  852. console.log('96+', response.data)
  853. let dataFile = JSON.parse(response.data)
  854. that.fileListPic.push(
  855. dataFile.data
  856. )
  857. console.log('fileListPic', that.fileListPic)
  858. },
  859. fail: (response) => {
  860. console.log('fail', response)
  861. }
  862. })
  863. }
  864. });
  865. } else if (index.name == '从相册上传') {
  866. console.log('586', this.rowThis)
  867. uni.chooseImage({
  868. count: 1, // 默认9,设置图片的数量
  869. sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
  870. sourceType: ['album'], // 可以指定来源是相册还是相机,默认二者都有
  871. success: function(res) {
  872. // 返回选定照片的本地文件路径列表 tempFilePaths
  873. console.log(res);
  874. const pathUrl = res.tempFilePaths[0]
  875. uni.uploadFile({
  876. url: 'http://121.18.118.242:13898' +
  877. "/prod-api/system/file/fileupload",
  878. filePath: pathUrl,
  879. name: 'file',
  880. header: {
  881. Authorization: 'Bearer ' + uni.getStorageSync('token')
  882. },
  883. success: (response) => {
  884. console.log('1111111111111111')
  885. console.log('96+', response.data)
  886. let dataFile = JSON.parse(response.data)
  887. // that.rowThis.ywFileList.push(dataFile.data)
  888. console.log('dataFile', dataFile)
  889. that.fileListPic.push(
  890. dataFile.data
  891. )
  892. console.log('fileListPic', that.fileListPic)
  893. },
  894. fail: (response) => {
  895. console.log('fail', response)
  896. }
  897. })
  898. }
  899. });
  900. }
  901. this.showUpload = false
  902. },
  903. uploadPic() {
  904. this.showUpload = true
  905. },
  906. choosePeoQianpi() {
  907. uni.navigateTo({
  908. url: `/pages/peoChoose/peoChoose?workid=${this.workid}&flowNo=${this.flowNo}&id=${this.id}&qianpi=${'qianpi'}`
  909. })
  910. },
  911. choosePeozhuBan() {
  912. uni.navigateTo({
  913. url: `/pages/zhuban/zhuban?workid=${this.workid}&flowNo=${this.flowNo}&id=${this.id}`
  914. })
  915. },
  916. click(e) {
  917. this.current = e.index
  918. },
  919. //查询收文详情
  920. getContent(id) {
  921. let that = this
  922. uni.$u.http.get('/offcial/receive/sel/' + id).then(res => {
  923. that.content = res.data
  924. that.content.workid = id
  925. if (that.gdType == true) {
  926. that.content.typeId = null //归档分类
  927. that.content.levels = null //密级
  928. that.content.archiveNo = null //档案编号
  929. that.content.archiveFormNo = null
  930. that.content.printNum = null //打印份数
  931. that.content.name = res.data.title //档案名称
  932. that.content.gdtype = null //分类名称
  933. }
  934. if (that.type == 0) {
  935. that.isOver(that.parameter)
  936. that.getBackNo(that.parameter.nodeId)
  937. }
  938. if (that.parameter.nodeId == 308 || that.parameter.nodeId == 1208) {
  939. that.content.toEmps = null //移交人员
  940. // this.content.toEmpsPeo = null //移交人员
  941. that.content.yjMsg = null //移交信息
  942. that.yjType = true
  943. }
  944. that.statusLuoban = res.data.emergencyDegree
  945. that.statusList.forEach(item => {
  946. if (item.dictValue == res.data.emergencyDegree) {
  947. that.content.status = item.dictLabel
  948. }
  949. })
  950. that.wjType.forEach(item => {
  951. if (item.dictValue == res.data.receiveType) {
  952. that.content.wjtype = item.dictLabel
  953. }
  954. })
  955. uni.$u.http.get('/getInfo').then(res1 => {
  956. console.log(' res1.user', res1.user)
  957. console.log('that.content.hostDeptId', that.content)
  958. if (that.flowNo == '003' && that.content.hostDeptId == res1.user.dept.deptId) {
  959. that.LuobanFile = true
  960. }
  961. // that.permissions = res.permissions
  962. })
  963. })
  964. },
  965. // 查询字典数据详细 紧急程度
  966. getDicts() {
  967. uni.$u.http.get('/system/dict/data/type/urgent_type').then(res => {
  968. this.statusList = res.data
  969. })
  970. },
  971. // 查询字典数据详细 文件类型
  972. getWjType() {
  973. uni.$u.http.get('/system/dict/data/type/sw_open_type').then(res => {
  974. this.wjType = res.data
  975. })
  976. },
  977. //查询归档字典 秘籍
  978. getgd() {
  979. uni.$u.http.get('/system/dict/data/type/archive_levels').then(res => {
  980. this.gd = res.data.map((item, index) => {
  981. let obj = {
  982. value: item.dictCode,
  983. id: item.dictCode,
  984. text: item.dictLabel,
  985. }
  986. return obj
  987. })
  988. })
  989. },
  990. //查询流转记录
  991. getRecord(id) {
  992. uni.$u.http.get('/jflow/restful/getWfGenerWorkList', {
  993. params: {
  994. workID: id,
  995. token: uni.getStorageSync('jtoken')
  996. }
  997. }).then(res => {
  998. // console.log(res)
  999. this.record = res.trackList
  1000. for (let i in res.trackList) {
  1001. if (res.trackList[i].ActionType !== '28') {
  1002. if (res.trackList[i].ActionType22 != undefined) {
  1003. this.lzNum = this.lzNum + res.trackList[i].ActionType22.length
  1004. } else {
  1005. this.lzNum = this.lzNum + 1
  1006. }
  1007. }
  1008. }
  1009. if (this.type == 0) {
  1010. // this.content.jdindex = null
  1011. // this.content.nodeId = null
  1012. // this.content.optionName = null
  1013. this.content.reviewMsg = null //审批意见
  1014. this.content.users = null //发送给指定人员
  1015. this.content.userList = null //人员列表
  1016. // this.id = this.list[0].id
  1017. // this.content.jdindex = 0 //下一节点索引
  1018. // this.DeliveryWay = this.list[0].DeliveryWay //下一节点状态
  1019. // this.content.toNodeId = this.list[0].id //下一节点ID
  1020. // this.content.nodeId = this.list[0].id //下一节点ID
  1021. // this.content.optionName = this.list[0].text //节点名称
  1022. }
  1023. })
  1024. },
  1025. //查询下一步所有节点
  1026. jdList(id, flow) {
  1027. uni.$u.http.get('/jflow/restful/GenerNextStepAllNode', {
  1028. params: {
  1029. workid: id,
  1030. token: uni.getStorageSync('jtoken'),
  1031. flowNo: flow
  1032. }
  1033. }).then(res => {
  1034. this.id = res[0].NodeID
  1035. this.content.jdindex = 0 //下一节点索引
  1036. this.DeliveryWay = res[0].DeliveryWay //下一节点状态
  1037. this.content.toNodeId = res[0].NodeID //下一节点ID
  1038. this.content.nodeId = res[0].NodeID //下一节点ID
  1039. this.content.optionName = res[0].Name //节点名称
  1040. this.list = res.map((item, index) => {
  1041. let obj = {
  1042. value: index,
  1043. id: item.NodeID,
  1044. text: item.Name,
  1045. DeliveryWay: item.DeliveryWay
  1046. }
  1047. return obj
  1048. })
  1049. })
  1050. },
  1051. //节点选择
  1052. change(e) {
  1053. if (e >= 0) {
  1054. this.id = this.list[e].id
  1055. this.DeliveryWay = this.list[e].DeliveryWay
  1056. this.content.toNodeId = this.list[e].id
  1057. this.content.nodeId = this.list[e].id
  1058. this.content.optionName = this.list[e].text
  1059. }
  1060. },
  1061. //选择人员相关
  1062. choosePeo() {
  1063. if (this.id == null) {
  1064. uni.showToast({
  1065. title: "请先选择下一节点",
  1066. icon: "none"
  1067. })
  1068. } else {
  1069. uni.navigateTo({
  1070. url: `/pages/peoChoose/peoChoose?workid=${this.workid}&flowNo=${this.flowNo}&id=${this.id}`,
  1071. })
  1072. }
  1073. },
  1074. //选择归档分类
  1075. chooseGd() {
  1076. uni.navigateTo({
  1077. url: "/pages/file/file"
  1078. })
  1079. },
  1080. //判断是否为最后一步
  1081. isOver(v) {
  1082. uni.$u.http.get("/jflow/restful/judgeNode", {
  1083. params: {
  1084. nodeId: v.nodeId
  1085. }
  1086. }).then(res => {
  1087. // console.log(res)
  1088. if (res.msg == "Y") {
  1089. this.overType = true
  1090. } else {
  1091. this.overType = false
  1092. this.jdList(v.workid, v.flowNo)
  1093. }
  1094. })
  1095. },
  1096. //提交待办
  1097. submit() {
  1098. if (this.overType == false && this.id == null) {
  1099. uni.showToast({
  1100. title: "请先选择下一节点",
  1101. icon: "none"
  1102. })
  1103. } else if (this.zhubanPeo == null && this.gdType == true && this.keshiSel == true) {
  1104. uni.showToast({
  1105. title: "请选择主办科室",
  1106. icon: "none"
  1107. })
  1108. } else if (this.luobanPeo == null && this.gdType == true && this.keshiSel == true) {
  1109. uni.showToast({
  1110. title: "请选择落办科室",
  1111. icon: "none"
  1112. })
  1113. } else if (this.content.reviewMsg == null) {
  1114. uni.showToast({
  1115. title: "请填写审核意见",
  1116. icon: "none"
  1117. })
  1118. } else {
  1119. uni.showLoading({
  1120. title: "提交中...",
  1121. mask: true
  1122. })
  1123. if (this.feedBack) {
  1124. if (this.fileListPic.length != 0) {
  1125. for (let i = 0; i < this.fileListPic.length; i++) {
  1126. this.content.feedbackFileList.push({
  1127. fileId: this.fileListPic[i].fileId,
  1128. userName: this.fileListPic[i].createBy
  1129. })
  1130. }
  1131. uni.$u.http.put('/offcial/receive', this.content).then(res => {
  1132. console.log(res)
  1133. uni.$u.http.post("/offcial/receive/sendFlowToUsers", this.content, {
  1134. header: {
  1135. // 'content-Type: 'multipart/form-data'
  1136. 'content-Type': 'application/x-www-form-urlencoded'
  1137. }
  1138. }).then(res => {
  1139. // console.log(res)
  1140. if (res.data.VarAcceptersName != "" && res.data.VarAcceptersName !=
  1141. "结束") {
  1142. uni.showToast({
  1143. title: "已发送到" + res.data.VarToNodeName + "节点,接收人:" +
  1144. res
  1145. .data.VarAcceptersName,
  1146. icon: "none",
  1147. mask: true,
  1148. duration: 2000
  1149. })
  1150. } else if (res.data.VarAcceptersName == "结束") {
  1151. uni.showToast({
  1152. title: res.data.Message,
  1153. icon: "none",
  1154. mask: true,
  1155. duration: 2000
  1156. })
  1157. } else {
  1158. uni.showToast({
  1159. title: res.data.Message.replace(/[@]/g, ""),
  1160. icon: "none",
  1161. mask: true,
  1162. duration: 2000
  1163. })
  1164. }
  1165. uni.$emit('query', {
  1166. a: 'back'
  1167. })
  1168. this.content.hostLeader = ''
  1169. setTimeout(() => {
  1170. uni.navigateBack()
  1171. }, 2000)
  1172. }).catch(res => {
  1173. uni.hideLoading()
  1174. })
  1175. })
  1176. } else {
  1177. // uni.showToast({
  1178. // title: '请上传反馈文件'
  1179. // })
  1180. }
  1181. } else {
  1182. uni.$u.http.post("/offcial/receive/sendFlowToUsers", this.content, {
  1183. header: {
  1184. // 'content-Type: 'multipart/form-data'
  1185. 'content-Type': 'application/x-www-form-urlencoded'
  1186. }
  1187. }).then(res => {
  1188. // console.log(res)
  1189. if (res.data.VarAcceptersName != "" && res.data.VarAcceptersName != "结束") {
  1190. uni.showToast({
  1191. title: "已发送到" + res.data.VarToNodeName + "节点,接收人:" + res
  1192. .data.VarAcceptersName,
  1193. icon: "none",
  1194. mask: true,
  1195. duration: 2000
  1196. })
  1197. } else if (res.data.VarAcceptersName == "结束") {
  1198. uni.showToast({
  1199. title: res.data.Message,
  1200. icon: "none",
  1201. mask: true,
  1202. duration: 2000
  1203. })
  1204. } else {
  1205. uni.showToast({
  1206. title: res.data.Message.replace(/[@]/g, ""),
  1207. icon: "none",
  1208. mask: true,
  1209. duration: 2000
  1210. })
  1211. }
  1212. uni.$emit('query', {
  1213. a: 'back'
  1214. })
  1215. this.content.hostLeader = ''
  1216. setTimeout(() => {
  1217. uni.navigateBack()
  1218. }, 2000)
  1219. }).catch(res => {
  1220. uni.hideLoading()
  1221. })
  1222. }
  1223. }
  1224. },
  1225. //保存归档
  1226. save() {
  1227. // if (this.content.archiveNo == null) {
  1228. // uni.showToast({
  1229. // title: "请填写档案编号",
  1230. // icon: "none"
  1231. // })
  1232. // } else
  1233. if (this.content.levels == null) {
  1234. uni.showToast({
  1235. title: "请选择密级",
  1236. icon: "none"
  1237. })
  1238. } else if (this.content.typeId == null) {
  1239. uni.showToast({
  1240. title: "请选择归档分类",
  1241. icon: "none"
  1242. })
  1243. } else if (this.content.printNum == null || this.content.printNum < 1 || this.content.printNum % 1 != 0) {
  1244. uni.showToast({
  1245. title: "请填写打印份数",
  1246. icon: "none"
  1247. })
  1248. } else {
  1249. this.content.reviewMsg = "同意"
  1250. uni.showLoading({
  1251. title: "提交中...",
  1252. mask: true
  1253. })
  1254. this.content.users = this.zhubanId + ',' + this.luobanId
  1255. this.content.archiveFormNo = this.parameter.flowNo
  1256. this.content.workId = this.content.workid
  1257. uni.$u.http.post("/offcial/archive/save", this.content).then(res => {
  1258. uni.$u.http.put('/offcial/receive', this.content).then(qwe => {
  1259. uni.hideLoading()
  1260. // uni.showToast({
  1261. // title: "归档成功",
  1262. // icon: "none",
  1263. // mask: true,
  1264. // duration: 2000
  1265. // })
  1266. this.submit()
  1267. setTimeout(() => {
  1268. uni.$emit('query', {
  1269. a: 'back'
  1270. })
  1271. uni.navigateBack()
  1272. }, 2000)
  1273. })
  1274. }).catch(res => {
  1275. uni.hideLoading()
  1276. })
  1277. }
  1278. },
  1279. //下载附件
  1280. downLoad(v) {
  1281. console.log('vvvv', v)
  1282. let that = this
  1283. console.log('47474', getApp().globalData.saveUrl)
  1284. console.log('http://192.168.1.56:9000/public' + v)
  1285. uni.navigateTo({
  1286. url: "/pages/office/office?url=" + 'http://121.18.118.242:13898/app/files' + v
  1287. })
  1288. // uni.showLoading({
  1289. // title:"打开中...",
  1290. // })
  1291. // if(that.list3.indexOf(v) == -1){
  1292. // uni.downloadFile({
  1293. // url:getApp().globalData.saveUrl+v,
  1294. // success: function(res) {
  1295. // if (res.statusCode === 200) {
  1296. // that.list3.push(v)
  1297. // that.list2.push(res.tempFilePath)
  1298. // uni.openDocument({
  1299. // filePath: res.tempFilePath,
  1300. // success: function (res) {
  1301. // uni.hideLoading();
  1302. // }
  1303. // });
  1304. // }else{
  1305. // uni.hideLoading()
  1306. // uni.showToast({
  1307. // title:"下载失败",
  1308. // icon:'none'
  1309. // })
  1310. // }
  1311. // },fail:function(){
  1312. // uni.hideLoading()
  1313. // uni.showToast({
  1314. // title:"下载失败",
  1315. // icon:'none'
  1316. // })
  1317. // }
  1318. // });
  1319. // }else{
  1320. // uni.openDocument({
  1321. // filePath: that.list2[that.list3.indexOf(v)],
  1322. // success: function (res) {
  1323. // uni.hideLoading();
  1324. // }
  1325. // });
  1326. // }
  1327. },
  1328. //查询是否能退回
  1329. getBackNo(id) {
  1330. uni.$u.http.get("/jflow/restful/CurrNodeInfo?currNodeID=" + id).then(res => {
  1331. if (res[0].ReturnRole != 0) {
  1332. this.getBackList()
  1333. this.backType = true
  1334. this.content.returnToNodeID = null
  1335. this.content.backMsg = null
  1336. }
  1337. })
  1338. },
  1339. //获取退回节点列表
  1340. getBackList() {
  1341. uni.$u.http.get("/jflow/restful/getReturnWorkNode", {
  1342. params: {
  1343. workid: this.parameter.workid,
  1344. token: uni.getStorageSync('jtoken')
  1345. }
  1346. }).then(res => {
  1347. this.backlist = res.map((item, index) => {
  1348. let obj = {
  1349. value: item.No,
  1350. id: item.No,
  1351. text: item.Name,
  1352. }
  1353. return obj
  1354. })
  1355. })
  1356. },
  1357. //退回上一节点
  1358. back() {
  1359. if (this.content.returnToNodeID == null) {
  1360. uni.showToast({
  1361. title: "请选择退回节点",
  1362. icon: "none"
  1363. })
  1364. } else if (this.content.backMsg == null) {
  1365. uni.showToast({
  1366. title: "请填写退回意见",
  1367. icon: "none"
  1368. })
  1369. } else {
  1370. uni.showLoading({
  1371. title: "退回中...",
  1372. })
  1373. uni.$u.http.get("/offcial/receive/NodeReturnWork", {
  1374. params: {
  1375. workid: this.parameter.workid,
  1376. returnToNodeID: this.content.returnToNodeID,
  1377. returnMsg: this.content.backMsg
  1378. }
  1379. }).then(res => {
  1380. uni.hideLoading()
  1381. this.close()
  1382. uni.showToast({
  1383. title: res,
  1384. icon: "none",
  1385. duration: 2000
  1386. })
  1387. uni.$emit('query', {
  1388. a: 'back'
  1389. })
  1390. setTimeout(() => {
  1391. uni.navigateBack()
  1392. }, 2000)
  1393. }).catch(error => {
  1394. uni.hideLoading()
  1395. uni.showToast({
  1396. title: "请稍后重试",
  1397. icon: "none"
  1398. })
  1399. })
  1400. }
  1401. },
  1402. //关闭模态框
  1403. close() {
  1404. this.content.returnToNodeID = null
  1405. this.content.backMsg = null
  1406. this.show = false
  1407. },
  1408. //关闭模态框
  1409. close1() {
  1410. this.content.toEmps = null
  1411. this.content.yjMsg = null
  1412. this.yjShow = false
  1413. },
  1414. //移交
  1415. yijiao() {
  1416. if (this.content.toEmps == null) {
  1417. uni.showToast({
  1418. title: "请选择移交人员",
  1419. icon: "none"
  1420. })
  1421. } else if (this.content.yjMsg == null) {
  1422. uni.showToast({
  1423. title: "请填写移交信息",
  1424. icon: "none"
  1425. })
  1426. } else {
  1427. uni.showLoading({
  1428. title: "移交中...",
  1429. })
  1430. uni.$u.http.get("/jflow/restful/Node_Shift", {
  1431. params: {
  1432. workid: this.parameter.workid,
  1433. toEmps: this.content.toEmps,
  1434. msg: this.content.yjMsg
  1435. }
  1436. }).then(res => {
  1437. uni.hideLoading()
  1438. if (res.msg.indexOf('err') != -1) {
  1439. uni.showToast({
  1440. title: res.msg,
  1441. icon: "none",
  1442. duration: 2000
  1443. })
  1444. } else {
  1445. this.close1()
  1446. uni.showToast({
  1447. title: res.msg.split('@')[0],
  1448. icon: "none",
  1449. duration: 2000
  1450. })
  1451. uni.$emit('query', {
  1452. a: 'back'
  1453. })
  1454. setTimeout(() => {
  1455. uni.navigateBack()
  1456. }, 2000)
  1457. }
  1458. }).catch(error => {
  1459. uni.hideLoading()
  1460. uni.showToast({
  1461. title: error.msg.split('@')[1],
  1462. icon: "none"
  1463. })
  1464. })
  1465. }
  1466. },
  1467. //查询移交人员
  1468. getYjPeo() {
  1469. uni.$u.http.get('/jflow/restful/selectDpPersons').then(res => {
  1470. console.log(res)
  1471. this.yjPeoList = res.Emps.map((item, index) => {
  1472. let obj = {
  1473. value: item.no,
  1474. id: item.no,
  1475. text: item.name,
  1476. }
  1477. return obj
  1478. })
  1479. })
  1480. }
  1481. }
  1482. }
  1483. </script>
  1484. <style lang="scss" scoped>
  1485. .content {
  1486. font-size: 32rpx;
  1487. }
  1488. .tab {
  1489. width: 48%;
  1490. height: 100%;
  1491. box-sizing: border-box;
  1492. display: flex;
  1493. align-items: center;
  1494. justify-content: center;
  1495. }
  1496. .active {
  1497. color: #2979ff
  1498. }
  1499. ::v-deep .u-modal {
  1500. overflow: visible;
  1501. }
  1502. ::v-deep .u-popup__content {
  1503. overflow: visible !important;
  1504. }
  1505. </style>