c.html 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport"
  6. content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" />
  7. <link rel="stylesheet" href="./resource/vantIndex.css" />
  8. <link rel="stylesheet" href="./vue-form-making/index.css">
  9. </head>
  10. <body>
  11. <style>
  12. :root:root {
  13. --van-nav-bar-background: rgb(21, 122, 44);
  14. --van-nav-bar-title-text-color: rgb(255, 255, 255);
  15. --van-nav-bar-icon-color: rgb(255, 255, 255);
  16. }
  17. .blank_adopzrdd {
  18. display: flex;
  19. align-items: center;
  20. margin-bottom: 10px;
  21. }
  22. .blank_adopzrdd >span {
  23. display: inline-block;
  24. width: 80px;
  25. }
  26. .van-nav-bar--fixed {
  27. top: 44px;
  28. }
  29. .seal-card { background: #fff; border-radius: 8px; margin-bottom: 10px; overflow: hidden; box-shadow: 0 1px 4px rgba(0,0,0,.08); }
  30. .seal-card-header { display: flex; align-items: center; padding: 10px 12px; background: #f7f8fa; border-bottom: 1px solid #ebedf0; }
  31. .seal-card-index { font-size: 14px; font-weight: bold; color: #157A2C; margin-right: 8px; }
  32. .seal-card-type { flex: 1; font-size: 15px; font-weight: bold; color: #323233; }
  33. .seal-card-actions { display: flex; gap: 6px; flex-shrink: 0; }
  34. .seal-card-body { padding: 8px 12px; }
  35. .seal-card-row { display: flex; padding: 6px 0; font-size: 13px; }
  36. .seal-card-label { width: 42px; color: #969799; flex-shrink: 0; }
  37. .seal-card-value { flex: 1; color: #323233; word-break: break-all; }
  38. </style>
  39. <div id="app">
  40. <van-nav-bar height='100rpx' @click-left="onClickLeft"
  41. style="background-color: rgb(21, 122, 44);color: rgb(255, 255, 255);" :title="title" left-arrow
  42. :safe-area-inset-top='true' :placeholder='true' :fixed='true'></van-nav-bar>
  43. <fm-generate-vant-form style='height: 75vh !important;overflow: auto;margin-top:44px' v-if='isFlag'
  44. :data="jsonData" :value="form.valueJson" ref="generateForm" :edit='false' @on-upload-local="handleUploadLocal">
  45. <template v-slot:blank_adopzrdd="scope">
  46. <div style="width: 100%;">
  47. <div v-for="(item, index) in scope.model.blank_adopzrdd" :key="index" style="width: 100%;">
  48. <div class="blank_adopzrdd">
  49. <span>{{ index + 1 }}报销事项:</span>
  50. <van-field rows="1" v-model="scope.model.blank_adopzrdd[index].remark" type="textarea"
  51. autosize style="width: calc(100% - 80px)"></van-field>
  52. </div>
  53. <div class="blank_adopzrdd">
  54. <span>
  55. 金额:</span>
  56. <van-field v-model="scope.model.blank_adopzrdd[index].price" type="number"
  57. style="width: calc(100% - 80px)"></van-field>
  58. </div>
  59. <div class="blank_adopzrdd">
  60. <span>
  61. <van-icon @click="delNewRow('blank_adopzrdd', index)" name="delete"
  62. style="color: #f56c6c;"></van-icon>
  63. 附件:</span>
  64. <template v-if="item.files && item.files.length">
  65. <van-badge :content="item.files.length">
  66. <van-button type="primary" size="mini" @click="handleUploadLocal('blank_adopzrdd', index)">查看附件</van-button>
  67. </van-badge>
  68. </template>
  69. <!-- <van-button v-else type="primary" size="mini" @click="handleUploadLocal('blank_adopzrdd', index)">上传附件</van-button> -->
  70. </div>
  71. </div>
  72. </div>
  73. </template>
  74. <template v-slot:blank_use_seal="scope">
  75. <div style="width: 100%;">
  76. <!-- 列表项 -->
  77. <view v-for="(item, index) in scope.model.blank_use_seal" :key="index" class="seal-card">
  78. <div class="seal-card-header">
  79. <span class="seal-card-index">{{ index + 1 }}.</span>
  80. <span class="seal-card-type">{{ item.useSealType || '未选择类型' }}</span>
  81. <!-- <div class="seal-card-actions">
  82. <van-button size="mini" type="primary" plain @click="openSealEditDialog(scope, 'edit', index)">编辑</van-button>
  83. <van-button size="mini" type="danger" plain @click="delNewRow('blank_use_seal', index)">删除</van-button>
  84. </div> -->
  85. </div>
  86. <div class="seal-card-body">
  87. <div class="seal-card-row">
  88. <span class="seal-card-label">事由</span>
  89. <span class="seal-card-value">{{ item.useSealRemark || '未填写' }}</span>
  90. </div>
  91. <div class="seal-card-row">
  92. <span class="seal-card-label">印章</span>
  93. <span class="seal-card-value">{{ item.useSealName || '未选择' }}</span>
  94. </div>
  95. </div>
  96. </view>
  97. <!-- <van-button type="primary" size="small" block @click="openSealEditDialog(scope, 'add', scope.model.blank_use_seal?scope.model.blank_use_seal.length:0)" style="margin-bottom:10px">+ 添加印章使用</van-button> -->
  98. </div>
  99. </template>
  100. <template v-slot:blank_use_qualification="scope">
  101. <div style="width: 100%;">
  102. <view v-for="(item, index) in scope.model.blank_use_qualification" :key="index" class="seal-card">
  103. <div class="seal-card-header">
  104. <span class="seal-card-index">{{ index + 1 }}.</span>
  105. <span class="seal-card-type">{{ item.useQualificationType || '未选择类型' }}</span>
  106. <!-- <div class="seal-card-actions">
  107. <van-button size="mini" type="primary" plain @click="openQualEditDialog(scope, 'edit', index)">编辑</van-button>
  108. <van-button size="mini" type="danger" plain @click="delNewRow('blank_use_qualification', index)">删除</van-button>
  109. </div> -->
  110. </div>
  111. <div class="seal-card-body">
  112. <div class="seal-card-row">
  113. <span class="seal-card-label">事由</span>
  114. <span class="seal-card-value">{{ item.useQualificationRemark || '未填写' }}</span>
  115. </div>
  116. <div class="seal-card-row">
  117. <span class="seal-card-label">名称</span>
  118. <span class="seal-card-value">{{ item.useQualificationName || '未选择' }}</span>
  119. </div>
  120. </div>
  121. </view>
  122. <!-- <van-button type="primary" size="small" block @click="openQualEditDialog(scope, 'add', scope.model.blank_use_qualification?scope.model.blank_use_qualification.length:0)" style="margin-bottom:10px">+ 添加资质使用</van-button> -->
  123. </div>
  124. </template>
  125. <template v-slot:blank_application_component="scope">
  126. <div style="width: 100%;">
  127. <view v-for="(item, index) in scope.model.blank_application_component" :key="index" class="seal-card">
  128. <div class="seal-card-header">
  129. <span class="seal-card-index">{{ index + 1 }}.</span>
  130. <span class="seal-card-type">{{ item.productName || '未选择产品' }}</span>
  131. <!-- <div class="seal-card-actions">
  132. <van-button size="mini" type="primary" plain @click="openAppEditDialog(scope, 'edit', index)">编辑</van-button>
  133. <van-button size="mini" type="danger" plain @click="delNewRow('blank_application_component', index)">删除</van-button>
  134. </div> -->
  135. </div>
  136. <div class="seal-card-body">
  137. <div class="seal-card-row">
  138. <span class="seal-card-label">数量</span>
  139. <span class="seal-card-value">{{ item.quantity || '未填写' }}</span>
  140. </div>
  141. <div class="seal-card-row">
  142. <span class="seal-card-label">规格</span>
  143. <span class="seal-card-value">{{ item.specification || '未填写' }}</span>
  144. </div>
  145. </div>
  146. </view>
  147. <!-- <van-button type="primary" size="small" block @click="openAppEditDialog(scope, 'add', scope.model.blank_application_component?scope.model.blank_application_component.length:0)" style="margin-bottom:10px">+ 添加产品</van-button> -->
  148. </div>
  149. </template>
  150. <template v-slot:blank_business_trip="scope">
  151. <div style="width: 100%;">
  152. <view v-for="(item, index) in scope.model.blank_business_trip" :key="index" class="seal-card">
  153. <div class="seal-card-header">
  154. <span class="seal-card-index">{{ index + 1 }}.</span>
  155. <span class="seal-card-type">{{ item.transportation || '未知交通' }} {{ item.departureCity || '?' }}→{{ item.destinationCity || '?' }}</span>
  156. <!-- <div class="seal-card-actions">
  157. <van-button size="mini" type="primary" plain @click="openTripEditDialog(scope, 'edit', index)">编辑</van-button>
  158. <van-button size="mini" type="danger" plain @click="delNewRow('blank_business_trip', index);calcTripTotal(scope)">删除</van-button>
  159. </div> -->
  160. </div>
  161. <div class="seal-card-body">
  162. <div class="seal-card-row">
  163. <span class="seal-card-label">往返</span>
  164. <span class="seal-card-value">{{ item.isRoundTrip || '未填写' }}</span>
  165. </div>
  166. <div class="seal-card-row">
  167. <span class="seal-card-label">时间</span>
  168. <span class="seal-card-value">{{ item.startTime || '-' }} ~ {{ item.endTime || '-' }}</span>
  169. </div>
  170. <div class="seal-card-row">
  171. <span class="seal-card-label">时长</span>
  172. <span class="seal-card-value">{{ item.duration || '-' }}</span>
  173. </div>
  174. </div>
  175. </view>
  176. <!-- <van-button type="primary" size="small" block @click="openTripEditDialog(scope, 'add', scope.model.blank_business_trip?scope.model.blank_business_trip.length:0)" style="margin-bottom:10px">+ 添加行程</van-button> -->
  177. </div>
  178. </template>
  179. <template v-slot:blank_purchase_requisition="scope">
  180. <div style="width: 100%;">
  181. <view v-for="(item, index) in scope.model.blank_purchase_requisition" :key="index" class="seal-card">
  182. <div class="seal-card-header">
  183. <span class="seal-card-index">{{ index + 1 }}.</span>
  184. <span class="seal-card-type">{{ item.materialName || '未填写物料' }} ×{{ item.quantity||0 }}{{ item.unit||'' }}</span>
  185. <!-- <div class="seal-card-actions">
  186. <van-button size="mini" type="primary" plain @click="openPrEditDialog(scope, 'edit', index)">编辑</van-button>
  187. <van-button size="mini" type="danger" plain @click="delNewRow('blank_purchase_requisition', index)">删除</van-button>
  188. </div> -->
  189. </div>
  190. <div class="seal-card-body">
  191. <div class="seal-card-row">
  192. <span class="seal-card-label">规格</span>
  193. <span class="seal-card-value">{{ item.specification || '-' }}</span>
  194. </div>
  195. <div class="seal-card-row">
  196. <span class="seal-card-label">用途</span>
  197. <span class="seal-card-value">{{ item.purpose || '-' }}</span>
  198. </div>
  199. <div class="seal-card-row">
  200. <span class="seal-card-label">交付</span>
  201. <span class="seal-card-value">{{ item.expectedDeliveryDate || '-' }}</span>
  202. </div>
  203. <div class="seal-card-row" v-if="item.remark">
  204. <span class="seal-card-label">备注</span>
  205. <span class="seal-card-value">{{ item.remark }}</span>
  206. </div>
  207. </div>
  208. </view>
  209. <!-- <van-button type="primary" size="small" block @click="openPrEditDialog(scope, 'add', scope.model.blank_purchase_requisition?scope.model.blank_purchase_requisition.length:0)" style="margin-bottom:10px">+ 添加物料</van-button> -->
  210. </div>
  211. </template>
  212. <template v-slot:blank_business_component="scope">
  213. <div style="width: 100%;">
  214. <view v-for="(item, index) in scope.model.blank_business_component" :key="index" class="seal-card">
  215. <div class="seal-card-header">
  216. <span class="seal-card-index">{{ index + 1 }}.</span>
  217. <span class="seal-card-type">{{ item.transportationWay || '未知交通' }} {{ item.startPlace || '?' }}→{{ item.endPlace || '?' }}</span>
  218. <!-- <div class="seal-card-actions">
  219. <van-button size="mini" type="primary" plain @click="openBusinessEditDialog(scope, 'edit', index)">编辑</van-button>
  220. <van-button size="mini" type="danger" plain @click="delNewRow('blank_business_component', index);calcBizTotal(scope)">删除</van-button>
  221. </div> -->
  222. </div>
  223. <div class="seal-card-body">
  224. <div class="seal-card-row">
  225. <span class="seal-card-label">出发</span>
  226. <span class="seal-card-value">{{ item.startDate || '-' }}</span>
  227. </div>
  228. <div class="seal-card-row">
  229. <span class="seal-card-label">到达</span>
  230. <span class="seal-card-value">{{ item.endDate || '-' }}</span>
  231. </div>
  232. <div class="seal-card-row">
  233. <span class="seal-card-label">出发地</span>
  234. <span class="seal-card-value">{{ item.startPlace || '-' }}</span>
  235. </div>
  236. <div class="seal-card-row">
  237. <span class="seal-card-label">到达地</span>
  238. <span class="seal-card-value">{{ item.endPlace || '-' }}</span>
  239. </div>
  240. <div class="seal-card-row">
  241. <span class="seal-card-label">交通</span>
  242. <span class="seal-card-value">{{ item.transportationWay || '-' }}</span>
  243. </div>
  244. <div class="seal-card-row">
  245. <span class="seal-card-label">费用</span>
  246. <span class="seal-card-value">¥{{ item.price || '0' }}</span>
  247. </div>
  248. </div>
  249. </view>
  250. <!-- <van-button type="primary" size="small" block @click="openBusinessEditDialog(scope, 'add', scope.model.blank_business_component?scope.model.blank_business_component.length:0)" style="margin-bottom:10px">+ 添加交通费用</van-button> -->
  251. </div>
  252. </template>
  253. <template v-slot:blank_product_specification="scope">
  254. <div style="width: 100%;">
  255. <view v-for="(item, index) in scope.model.blank_product_specification" :key="index" class="seal-card">
  256. <div class="seal-card-header">
  257. <span class="seal-card-index">{{ index + 1 }}.</span>
  258. <span class="seal-card-type">{{ item.specification || '未填写规格' }}</span>
  259. <!-- <div class="seal-card-actions">
  260. <van-button size="mini" type="primary" plain @click="openSpecEditDialog(scope, 'edit', index)">编辑</van-button>
  261. <van-button size="mini" type="danger" plain @click="delNewRow('blank_product_specification', index)">删除</van-button>
  262. </div> -->
  263. </div>
  264. <div class="seal-card-body">
  265. <div class="seal-card-row">
  266. <span class="seal-card-label">规格</span>
  267. <span class="seal-card-value">{{ item.specification || '-' }}</span>
  268. </div>
  269. <div class="seal-card-row">
  270. <span class="seal-card-label">数量</span>
  271. <span class="seal-card-value">{{ item.num || '-' }}</span>
  272. </div>
  273. <div class="seal-card-row">
  274. <span class="seal-card-label">批号</span>
  275. <span class="seal-card-value">{{ item.batchNo || '-' }}</span>
  276. </div>
  277. </div>
  278. </view>
  279. <!-- <van-button type="primary" size="small" block @click="openSpecEditDialog(scope, 'add', scope.model.blank_product_specification?scope.model.blank_product_specification.length:0)" style="margin-bottom:10px">+ 添加产品规格</van-button> -->
  280. </div>
  281. </template>
  282. <template v-slot:blank_event_component="scope">
  283. <div style="width: 100%;">
  284. <view v-for="(item, index) in scope.model.blank_event_component" :key="index" class="seal-card">
  285. <div class="seal-card-header">
  286. <span class="seal-card-index">{{ index + 1 }}.</span>
  287. <span class="seal-card-type">{{ item.eventHospital || '未填写医院' }}</span>
  288. <!-- <div class="seal-card-actions">
  289. <van-button size="mini" type="primary" plain @click="openEventEditDialog(scope, 'edit', index)">编辑</van-button>
  290. <van-button size="mini" type="danger" plain @click="delNewRow('blank_event_component', index)">删除</van-button>
  291. </div> -->
  292. </div>
  293. <div class="seal-card-body">
  294. <div class="seal-card-row">
  295. <span class="seal-card-label">时间</span>
  296. <span class="seal-card-value">{{ item.eventTime || '-' }}</span>
  297. </div>
  298. <div class="seal-card-row">
  299. <span class="seal-card-label">描述</span>
  300. <span class="seal-card-value">{{ item.eventDesc || '-' }}</span>
  301. </div>
  302. <div class="seal-card-row">
  303. <span class="seal-card-label">附件</span>
  304. <div style="flex:1">
  305. <van-badge v-if="item.files && item.files.length" :content="item.files.length">
  306. <van-button size="small" type="primary" @click="handleUploadLocal('blank_event_component', index)">上传附件</van-button>
  307. </van-badge>
  308. <van-button v-else size="small" type="primary" @click="handleUploadLocal('blank_event_component', index)">上传附件</van-button>
  309. </div>
  310. </div>
  311. <div class="seal-card-row">
  312. <span class="seal-card-label">意见</span>
  313. <span class="seal-card-value">{{ item.eventOpinion || '-' }}</span>
  314. </div>
  315. </div>
  316. </view>
  317. <!-- <van-button type="primary" size="small" block @click="openEventEditDialog(scope, 'add', scope.model.blank_event_component?scope.model.blank_event_component.length:0)" style="margin-bottom:10px">+ 添加事件</van-button> -->
  318. </div>
  319. </template>
  320. <template v-slot:blank_reissue_component="scope">
  321. <div style="width: 100%;">
  322. <view v-for="(item, index) in scope.model.blank_reissue_component" :key="index" class="seal-card">
  323. <div class="seal-card-header">
  324. <span class="seal-card-index">{{ index + 1 }}.</span>
  325. <span class="seal-card-type">{{ item.reissueType || '未填写类型' }}</span>
  326. <!-- <div class="seal-card-actions">
  327. <van-button size="mini" type="primary" plain @click="openReissueEditDialog(scope, 'edit', index)">编辑</van-button>
  328. <van-button size="mini" type="danger" plain @click="delNewRow('blank_reissue_component', index)">删除</van-button>
  329. </div> -->
  330. </div>
  331. <div class="seal-card-body">
  332. <div class="seal-card-row">
  333. <span class="seal-card-label">规格</span>
  334. <span class="seal-card-value">{{ item.reissueOtherType || '-' }}</span>
  335. </div>
  336. <div class="seal-card-row">
  337. <span class="seal-card-label">收件</span>
  338. <span class="seal-card-value">{{ item.reissueContact || '-' }}</span>
  339. </div>
  340. <div class="seal-card-row">
  341. <span class="seal-card-label">要求</span>
  342. <span class="seal-card-value">{{ item.reissueOtherReq || '-' }}</span>
  343. </div>
  344. </div>
  345. </view>
  346. <!-- <van-button type="primary" size="small" block @click="openReissueEditDialog(scope, 'add', scope.model.blank_reissue_component?scope.model.blank_reissue_component.length:0)" style="margin-bottom:10px">+ 添加补发</van-button> -->
  347. </div>
  348. </template>
  349. </fm-generate-vant-form>
  350. <div v-if="type!='view'" style='position: fixed; bottom: 0;background: #f9fafb;width:100%;height:20%'>
  351. <van-form label-width='30px'>
  352. <van-cell-group inset>
  353. <van-field style="background: #f9fafb;" type="textarea" v-model="form.reason" label="意见"
  354. placeholder="" rows="2" :autosize='{maxHeight: 50}' show-word-limit />
  355. </van-cell-group>
  356. </van-form>
  357. <div
  358. style="display: flex;justify-content: space-between; padding: 0px 30px; width: 100%; height: 80px;">
  359. <van-button style="width:48%" type="primary" :loading="loading" @click="handleAudit(1)">通过
  360. </van-button>
  361. <van-button style="width:48%" type="danger" :loading="loading" @click="handleAudit(0)">驳回
  362. </van-button>
  363. </div>
  364. </div>
  365. </div>
  366. <script src="./resource/vue.global.prod.js"></script>
  367. <script src="./resource/vant.min.js"></script>
  368. <script src="./resource/axios.min.js"></script>
  369. <script src="./resource/uni.webview.js"></script>
  370. <script src="./vue-form-making/form-making-v3.umd.js"></script>
  371. <script>
  372. let EnvObj = {}
  373. uni.getEnv(function(res) {
  374. EnvObj = res;
  375. console.log('当前环境:' + JSON.stringify(res));
  376. });
  377. Vue.createApp({
  378. data() {
  379. return {
  380. isFlag: false,
  381. isEdit: true,
  382. type: '',
  383. jsonData: {},
  384. editData: {},
  385. form: {},
  386. headers: {},
  387. APIUrl: '',
  388. title: '',
  389. type: 'view',
  390. selectFilesField: null,
  391. selectFilesRowIndex: null,
  392. }
  393. },
  394. created() {
  395. let _this = this
  396. window.x_selectFiles = async (e) => {
  397. let data = JSON.parse(e)
  398. if (_this.$refs.generateForm) {
  399. if (_this.selectFilesRowIndex != null && _this.selectFilesField) {
  400. let formData = await _this.$refs.generateForm.getData(false);
  401. var arr = formData[_this.selectFilesField] || []
  402. var row = arr[_this.selectFilesRowIndex]
  403. if (row) {
  404. row.files = data.files || []
  405. _this.$refs.generateForm.setData({ [_this.selectFilesField]: arr })
  406. }
  407. _this.selectFilesRowIndex = null
  408. } else {
  409. _this.$refs.generateForm.setData({ [data.field]: data.files })
  410. }
  411. }
  412. }
  413. this.headers = this.getQueryParams('headers');
  414. let params = this.getQueryParams('params');
  415. this.APIUrl = this.headers.serverInfo || 'http://192.168.1.105:18086'
  416. this.title = params.type == 'view' ? '查看' : '审核'
  417. this.type = params.type || 'view'
  418. axios({
  419. method: 'get',
  420. url: this.APIUrl + `/bpm/process-instance/get?id=${params.processInstanceId}`,
  421. headers: this.headers,
  422. }).then((res) => {
  423. console.log(res)
  424. if (res.data.code != '-1') {
  425. this.form = res.data.data
  426. this.form.submitId = params.id
  427. this.jsonData = JSON.parse(res.data.data.formJson.makingJson);
  428. this.jsonData.list.forEach(item => {
  429. item.options.headers = [{
  430. key: 'Authorization',
  431. value: this.headers.Authorization
  432. }]
  433. if (item.type == "deptAndUserCascader") {
  434. item.type = 'cascader'
  435. }
  436. if (item.type == "deptCascader") {
  437. item.type = 'cascader'
  438. }
  439. if (item.type == "userSelect") {
  440. item.type = 'select'
  441. }
  442. if (item.type == "imgupload") {
  443. this.form.valueJson[item.model].length && this.form.valueJson[item
  444. .model].forEach(
  445. item => {
  446. //item.objectUrl = this.APIUrl +'/kd-aiot' + item.storePath
  447. item.objectUrl = item.url
  448. })
  449. }
  450. })
  451. this.jsonData.config.dataSource && this.jsonData.config.dataSource.forEach(item => {
  452. item.headers = {
  453. Authorization: this.headers.Authorization
  454. }
  455. item.url = item.url && item.url.replace('/api', this.APIUrl)
  456. })
  457. this.isFlag = true
  458. }
  459. });
  460. },
  461. methods: {
  462. async handleUploadLocal (model, rowIndex) {
  463. console.log('上传本地文件按钮被点击,字段模型:', model, '行索引:', rowIndex)
  464. let data = await this.$refs.generateForm.getData(false);
  465. let files = rowIndex != null && data[model] && data[model][rowIndex] ? (data[model][rowIndex].files || []) : (data[model] || [])
  466. this.selectFilesField = model
  467. this.selectFilesRowIndex = rowIndex != null ? rowIndex : null
  468. uni.postMessage({
  469. data: {
  470. type: 'selectFiles',
  471. field: model,
  472. files: files,
  473. isEdit: 'view'
  474. }
  475. });
  476. },
  477. getQueryParams(queryName) {
  478. const urlSearchParams = new URLSearchParams(window.location.search);
  479. const query = urlSearchParams.get(queryName);
  480. return JSON.parse(query);
  481. },
  482. async handleAudit(status) {
  483. await this._approveTaskWithVariables(status);
  484. },
  485. async _approveTaskWithVariables(status) {
  486. this.loading = true;
  487. let variables = {
  488. pass: !!status,
  489. ...this.form.formVariables
  490. };
  491. if (!this.form.reason) this.form.reason = !!status ? '通过' : '驳回'
  492. let API = !!status ? this.APIUrl + '/bpm/task/approveTaskWithVariables' :
  493. this.APIUrl + '/bpm/task/reject'
  494. axios({
  495. method: 'put',
  496. url: API,
  497. headers: this.headers,
  498. data: {
  499. id: this.form.submitId,
  500. reason: this.form.reason,
  501. variables
  502. }
  503. }).then((res) => {
  504. this.loading = false;
  505. if (res.data.code != '-1') {
  506. let params = {
  507. status,
  508. title: status === 0 ? '驳回' : ''
  509. }
  510. vant.showNotify({
  511. type: 'success',
  512. message: `审批${params.title}成功!`,
  513. duration: 1000,
  514. });
  515. setTimeout(() => {
  516. this.onClickLeft()
  517. }, 1000)
  518. }
  519. }).catch(() => {
  520. this.loading = false;
  521. });
  522. },
  523. onClickLeft() {
  524. uni.navigateBack({
  525. delta: 1
  526. });
  527. }
  528. }
  529. }).use(vant).use(FormMakingV3).mount('#app')
  530. </script>
  531. </body>
  532. </html>