case-check.html 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>案件处理</title>
  6. <meta name="viewport"
  7. content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
  8. <link href="../css/mui.min.css" rel="stylesheet" />
  9. <!-- 引入APP样式 -->
  10. <link href="../css/app.css" rel="stylesheet" />
  11. <link rel="stylesheet" href="../css/app.new.css">
  12. <!-- 引入案件详情样式 -->
  13. <link rel="stylesheet" type="text/css" href="../css/case.info.css" />
  14. <!-- 引入腾讯字体 -->
  15. <link rel="stylesheet" type="text/css" href="../fonts/TTTGB-Medium.css" />
  16. <link rel="stylesheet" href="../fonts/font-time.css">
  17. <link rel="stylesheet" href="../fonts/font-jt.css">
  18. <style type="text/css">
  19. /* 图片样式 */
  20. .wc-camera-img {
  21. width: 50px;
  22. height: 50px;
  23. border: solid 1px #737383;
  24. border-radius: 5px;
  25. padding: 0px;
  26. float: left;
  27. margin-right: 10px;
  28. }
  29. /* 单选框 文字样式 */
  30. .mui-radio label {
  31. font-size: 14px;
  32. font-weight: bold;
  33. }
  34. /* 单选框 图标样式 */
  35. .mui-radio input[type=radio]:checked::before {
  36. content: '\e442';
  37. }
  38. /* 弹出对话框选择样式 */
  39. .dialog-select {
  40. color: #207218;
  41. font-weight: bold;
  42. }
  43. /* 弹出对话框取消样式 */
  44. .dialog-cancel {
  45. color: #000000;
  46. font-weight: bold;
  47. }
  48. /* 图标样式 */
  49. .mui-icon {
  50. font-size: 30px !important;
  51. display: flex;
  52. justify-content: end;
  53. text-align: center;
  54. background-color: #207218;
  55. }
  56. * {
  57. touch-action: none !important;
  58. }
  59. </style>
  60. </head>
  61. <body>
  62. <div class="mui-content">
  63. <div style="padding: 10px;">
  64. <div class="mui-segmented-control">
  65. <a class="mui-control-item" href="#item1" id="seg1">
  66. 基础信息
  67. </a>
  68. <a class="mui-control-item mui-active" href="#item2" id="seg2">
  69. 处理信息填报
  70. </a>
  71. </div>
  72. </div>
  73. <div class="mui-content-padded">
  74. <div class="mui-scroll-wrapper" style="top: 40px;">
  75. <div class="mui-scroll" style="padding: 10px;">
  76. <div id="item1" class="mui-control-content">
  77. <ul id="listTable" class="layui-timeline">
  78. </ul>
  79. </div>
  80. <div id="item2" class="mui-control-content mui-active">
  81. <h5 class="wc-title-normal wc-title-important">*违法情况</h5>
  82. <form class="mui-input-group">
  83. <div class="mui-input-row mui-radio mui-right">
  84. <label style="color: rgb(0, 0, 180);">合法合规</label>
  85. <input name="wflx" type="radio" value="0">
  86. </div>
  87. <div class="mui-input-row mui-radio mui-right">
  88. <label style="color: rgb(180, 0, 0);">违法违规</label>
  89. <input name="wflx" type="radio" value="1" checked="">
  90. </div>
  91. </form>
  92. <h5 class="wc-title-normal wc-title-important">*现场取证照片[左滑删除最后一张]</h5>
  93. <ul class="mui-table-view">
  94. <li class="mui-table-view-cell">
  95. <div class="mui-slider-right mui-disabled">
  96. <a class="mui-btn mui-btn-red mui-icon mui-icon-trash"
  97. onclick="RemoveImg()"></a>
  98. </div>
  99. <div id="imgPanel" class="mui-slider-handle">
  100. <img src="../img/ico_img_add.png" class="wc-camera-img"
  101. onclick="CallCameraDialog()">
  102. </div>
  103. </li>
  104. </ul>
  105. <h5 class="wc-title-normal">现场取证视频[左滑删除最后一个视频]</h5>
  106. <ul class="mui-table-view">
  107. <li class="mui-table-view-cell">
  108. <div class="mui-slider-right mui-disabled">
  109. <a class="mui-btn mui-btn-red mui-icon mui-icon-trash"
  110. onclick="RemoveVideo()"></a>
  111. </div>
  112. <div id="videoPanel" class="mui-slider-handle">
  113. <img src="../img/ico_video_add.png" class="wc-camera-img"
  114. onclick="CallCameraVideoDialog()">
  115. </div>
  116. </li>
  117. </ul>
  118. <h5 class="wc-title-normal">用地单位</h5>
  119. <div class="mui-input-row case-input-row">
  120. <input type="text" id="txtYDDW" placeholder="填写用地单位名称">
  121. </div>
  122. <h5 class="wc-title-normal">用地项目</h5>
  123. <div class="mui-input-row case-input-row">
  124. <input type="text" id="txtYDXM" placeholder="填写用地项目名称">
  125. </div>
  126. <h5 class="wc-title-normal wc-title-important">*处理意见</h5>
  127. <div class="mui-input-row case-input-row">
  128. <textarea rows="5" id="txtCLMS" placeholder="填写处理意见"></textarea>
  129. </div>
  130. </div>
  131. </div>
  132. </div>
  133. </div>
  134. </div>
  135. <!-- 拍照模式选择框 底部弹出 -->
  136. <div id="cameraDialog" class="mui-popover mui-popover-action mui-popover-bottom">
  137. <ul class="mui-table-view">
  138. <li class="mui-table-view-cell">
  139. <a href="#" onclick="CallCamera()">
  140. <font class="dialog-select">拍摄现场取证照片</font>
  141. </a>
  142. </li>
  143. <li class="mui-table-view-cell">
  144. <a href="#" onclick="CallPhotos()">
  145. <font class="dialog-select">从相册种选取</font>
  146. </a>
  147. </li>
  148. </ul>
  149. <ul class="mui-table-view">
  150. <li class="mui-table-view-cell">
  151. <a href="#cameraDialog">
  152. <font class="dialog-cancel">取消</font>
  153. </a>
  154. </li>
  155. </ul>
  156. </div>
  157. <!-- 录像模式选择框 底部弹出 -->
  158. <div id="videoDialog" class="mui-popover mui-popover-action mui-popover-bottom">
  159. <ul class="mui-table-view">
  160. <li class="mui-table-view-cell">
  161. <a href="#" onclick="CallCameraVideo()">
  162. <font class="dialog-select">录制取证视频</font>
  163. </a>
  164. </li>
  165. </ul>
  166. <ul class="mui-table-view">
  167. <li class="mui-table-view-cell">
  168. <a href="#videoDialog">
  169. <font class="dialog-cancel">取消</font>
  170. </a>
  171. </li>
  172. </ul>
  173. </div>
  174. </body>
  175. </html>
  176. <script src="../js/mui.js"></script>
  177. <!-- 引入网络交互脚本 -->
  178. <script src="../js/ajax.js"></script>
  179. <!-- 引入通用脚本 -->
  180. <script src="../js/common.js" type="text/javascript" charset="utf-8"></script>
  181. <!-- 引入webview脚本 -->
  182. <script src="../js/webview.js" type="text/javascript" charset="utf-8"></script>
  183. <!-- 引入存储脚本 -->
  184. <script src="../js/save.js" type="text/javascript" charset="utf-8"></script>
  185. <!-- 引入案件脚本 -->
  186. <script src="../js/case.js" type="text/javascript" charset="utf-8"></script>
  187. <!-- 引入案件详情脚本 -->
  188. <script src="../js/case-info.js" type="text/javascript" charset="utf-8"></script>
  189. <!-- 引入弹框脚本 -->
  190. <script src="../js/mui.picker.js" type="text/javascript" charset="utf-8"></script>
  191. <script src="../js/mui.poppicker.js" type="text/javascript" charset="utf-8"></script>
  192. <script type="text/javascript">
  193. mui.init();
  194. /* DOM定义 */
  195. var domTable = document.getElementById("listTable");
  196. var domSeg1 = document.getElementById("seg1");
  197. var domSeg2 = document.getElementById("seg2");
  198. var domItem1 = document.getElementById("item1");
  199. var domItem2 = document.getElementById("item2");
  200. var domTxtCLMS = document.getElementById("txtCLMS");
  201. var domTxtYDDW = document.getElementById("txtYDDW");
  202. var domTxtYDXM = document.getElementById("txtYDXM");
  203. /* 变量定义 */
  204. var joinCaseModel = undefined; //本页关联的案件模型 从上一页面传递过来
  205. var joinUser = undefined; //本地存储的账户信息
  206. /* 设置滚动条 否则无法滚动 */
  207. mui(".mui-scroll-wrapper").scroll({
  208. scrollY: true, //是否竖向滚动
  209. scrollX: true, //是否横向滚动
  210. startX: 0, //初始化时滚动至x
  211. startY: 0, //初始化时滚动至y
  212. indicators: false, //是否显示滚动条
  213. deceleration: 0.0006, //阻尼系数,系数越小滑动越灵敏
  214. bounce: false, //是否启用回弹
  215. });
  216. /* 页面初始化 */
  217. plusInit(function() {
  218. /* 获取本地存储的用户信息 */
  219. getSaveUserInfo({
  220. success: function(resUserInfo) {
  221. joinUser = resUserInfo;
  222. userInfo = joinUser;
  223. var self = plus.webview.currentWebview();
  224. joinCaseModel = self;
  225. resetPage(joinCaseModel);
  226. },
  227. error: function(err) {
  228. muiAlertError(err);
  229. }
  230. });
  231. })
  232. /**
  233. * 自定义事件监听
  234. * @param {Object} event 事件
  235. */
  236. window.addEventListener("new", function(event) {
  237. joinCaseModel = event.detail;
  238. resetPage(joinCaseModel);
  239. });
  240. /**
  241. * 刷新页面 获取详细信息数据
  242. * @param {Object} caseModel 传递的模型数据
  243. */
  244. function resetPage(caseModel) {
  245. //重置顶部标题栏内容
  246. plus.webview.currentWebview().setStyle({
  247. "titleNView": {
  248. backgroundColor: colorBackground,
  249. titleColor: colorTitle,
  250. titleText: "案件处理",
  251. splitLine: {
  252. color: colorLine
  253. },
  254. autoBackButton: true,
  255. buttons: [{
  256. 'float': 'right',
  257. fontSrc: '../fonts/iconfont.ttf',
  258. text: '\uec23',
  259. onclick: EventCaseCheckSubmit,
  260. }, {
  261. 'float': 'right',
  262. fontSrc: '../fonts/iconfont.ttf',
  263. text: '\uec08',
  264. onclick: EventPageReload,
  265. }]
  266. }
  267. });
  268. //删除所有子节点
  269. domTable.innerHTML = "";
  270. /* 联网获取该案件的生命周期信息 */
  271. var iData = {
  272. casenum: caseModel.casenum,
  273. }
  274. sendAjax({
  275. url: 'appQueryCaseLifes',
  276. type: 'post',
  277. data: iData,
  278. waitMessage: '正在查询案件明细...',
  279. success: function(resData) {
  280. for (let caseLife of resData[0].caseLifes) {
  281. var li = CreateItem(caseLife);
  282. domTable.appendChild(li);
  283. }
  284. //加载最后一项
  285. var li = CtreateNextLi(caseModel.state);
  286. domTable.appendChild(li);
  287. },
  288. error: function(err) {
  289. muiAlertError(err);
  290. },
  291. nodata: function(msg) {
  292. muiAlert(msg, "警告");
  293. }
  294. })
  295. /* 切换选项卡 主要是第二次加载时页面已经存在 */
  296. mui.trigger(domSeg2, 'touchstart');
  297. mui.trigger(domSeg2, 'tap');
  298. }
  299. var item1ScrollY = 0,
  300. item2ScrollY = 0;
  301. /**
  302. * 选项卡1点击监听
  303. */
  304. domSeg1.addEventListener('tap', function() {
  305. //记录2的位置 滚到1记录的位置
  306. item2ScrollY = mui(".mui-scroll-wrapper").scroll().y;
  307. mui(".mui-scroll-wrapper").scroll().scrollTo(0, item1ScrollY, 100);
  308. });
  309. /**
  310. * 选项卡2点击监听
  311. */
  312. domSeg2.addEventListener('tap', function() {
  313. //记录1的位置 滚动2记录的位置
  314. item1ScrollY = mui(".mui-scroll-wrapper").scroll().y;
  315. mui(".mui-scroll-wrapper").scroll().scrollTo(0, item2ScrollY, 100);
  316. });
  317. /**
  318. * 页面初始化
  319. */
  320. function pageReload() {
  321. cameraFiles = []; //上传的照片文件
  322. videoFiles = []; //上传的视频文件
  323. copyToFiels = []; //拷贝的照片文件
  324. compressFiels = []; //压缩的照片文件
  325. domTxtCLMS.value = ""; //填写的处理意见
  326. domTxtYDDW.value = ""; //填写的用地单位
  327. domTxtYDXM.value = ""; //填写的用地项目
  328. caseCheckSubmitModel.clms = ""; //上传模型初始化 处理描述
  329. caseCheckSubmitModel.userCompany = ""; //上传模型初始化 用地单位
  330. caseCheckSubmitModel.userItem = ""; //上传模型初始化 用地项目
  331. //重置照片DOM
  332. if (domImgPanel.childNodes.length > 3) {
  333. for (var i = 0; i < domImgPanel.childNodes.length - 1; i++) {
  334. domImgPanel.removeChild(domImgPanel.childNodes[0]);
  335. }
  336. }
  337. //重置视频DOM
  338. if (domVideoPanel.childNodes.length > 3) {
  339. for (var i = 0; i < domVideoPanel.childNodes.length - 1; i++) {
  340. domVideoPanel.removeChild(domVideoPanel.childNodes[0]);
  341. }
  342. }
  343. //重置违法类型选择
  344. var chkBox = document.getElementsByName('wflx');
  345. chkBox[1].checked = true;
  346. };
  347. /**
  348. * 重置案件填写页面
  349. */
  350. function EventPageReload() {
  351. muiConfirm('重置会导致所填写信息全部丢失,确定重置吗?', '重置', function() {
  352. pageReload();
  353. });
  354. }
  355. /* 以下是拍照相关 */
  356. /* 变量定义-文件模型*/
  357. var cameraFiles = [];
  358. var domImgPanel = document.getElementById("imgPanel");
  359. /**
  360. * 打开或隐藏拍照对话框
  361. */
  362. function CallCameraDialog() {
  363. mui.plusReady(function() {
  364. mui('#cameraDialog').popover('toggle');
  365. });
  366. }
  367. /**
  368. * 调用系统相机拍照
  369. */
  370. function CallCamera() {
  371. mui.plusReady(function() {
  372. var strDate = new Date().Format("yyyyMMddHHmmss");
  373. //预定义照片名称
  374. var photoName = "cl_" + joinUser.userID + "_" + strDate + ".jpg";
  375. var tName = "cl_ys_" + joinUser.userID + "_" + strDate + '.jpg';
  376. mui('#cameraDialog').popover('toggle');
  377. var camera = plus.camera.getCamera();
  378. camera.captureImage(function(path) {
  379. plus.gallery.save(path, function() {
  380. //追加到照片数组中 以便上传时使用
  381. cameraFiles.splice(0, 0, {
  382. path: path,
  383. name: photoName,
  384. });
  385. //压缩一个缩略图 给展示照片用
  386. plus.zip.compressImage({
  387. src: path,
  388. dst: '_doc/camera/' + tName,
  389. quality: 20,
  390. }, function() {
  391. AddPhotoItem('_doc/camera/' + tName);
  392. }, function(e) {
  393. muiAlertError("错误:" + e.message);
  394. })
  395. }, function(e) {
  396. printToConsole("照片保存失败!");
  397. });
  398. }, function(e) {
  399. printToConsole("取消拍照!");
  400. }, {
  401. filename: '_doc/camera/' + photoName,
  402. index: 1,
  403. });
  404. });
  405. }
  406. /**
  407. * 添加拍摄照片到控件中显示
  408. * @param {Object} path
  409. */
  410. function AddPhotoItem(path) {
  411. //此处需要将相机返回的路径转换为本地路径 否则无法正常显示
  412. plus.io.resolveLocalFileSystemURL(path, function(entry) {
  413. var domImg = document.createElement('img');
  414. domImg.className = 'wc-camera-img';
  415. domImg.src = entry.toLocalURL();
  416. //点击打开照片
  417. domImg.onclick = function() {
  418. plus.nativeUI.previewImage([entry.toLocalURL()], {
  419. indicator: 'number',
  420. loop: true,
  421. });
  422. }
  423. domImgPanel.insertBefore(domImg, domImgPanel.childNodes[0]);
  424. }, function(e) {
  425. printToConsole("路径转换失败!");
  426. });
  427. }
  428. /* 需要转存的图片数组 */
  429. var copyToFiels = [];
  430. var copyToDate = undefined;
  431. /**
  432. * 调用相册
  433. */
  434. function CallPhotos() {
  435. mui.plusReady(function() {
  436. mui('#cameraDialog').popover('toggle');
  437. plus.gallery.pick(function(e) {
  438. //此处不能使用for循环 会导致失败
  439. copyToDate = new Date().Format("yyyyMMddHHmmss"); //拷贝文件前缀 定义公共变量 是为了保证唯一性
  440. copyToFiels = e.files;
  441. copyToFile(0);
  442. }, function(e) {
  443. printToConsole("取消选择");
  444. }, {
  445. filter: 'image',
  446. multiple: true,
  447. system: false,
  448. maximum: 3,
  449. onmaxed: function() {
  450. muiAlert("最多选择三张照片!");
  451. }
  452. });
  453. });
  454. }
  455. /**
  456. * 拷贝文件
  457. * @param {Object} num 文件编号
  458. */
  459. function copyToFile(num) {
  460. var fileOldPath = copyToFiels[num]; //拷贝文件的目录
  461. plus.io.resolveLocalFileSystemURL(fileOldPath, function(fileEntry) {
  462. plus.io.resolveLocalFileSystemURL("_doc/camera/", function(root) {
  463. var photoName = "cl_" + joinUser.userID + "_" + copyToDate + "_" + num + ".jpg";
  464. fileEntry.copyTo(root, photoName, function(newFileEntry) {
  465. //当前文件拷贝成功 加入压缩目录
  466. compressFiels.push(newFileEntry.fullPath);
  467. if (num == copyToFiels.length - 1) {
  468. //全部拷贝完成
  469. copyToFiels = [];
  470. compress(0); //开始压缩文件 为显示作准备
  471. } else {
  472. copyToFile(num + 1);
  473. }
  474. }, function(e) {
  475. muiAlert("文件转存失败,请重新选择照片!")
  476. copyToFiels = [];
  477. })
  478. }, function(err) {
  479. muiAlert("目录获取失败,请检查应用的存储权限!")
  480. copyToFiels = [];
  481. });
  482. }, function(err) {
  483. muiAlert("目录获取失败,请检查应用的存储权限!")
  484. copyToFiels = [];
  485. })
  486. }
  487. /* 需要压缩的图片数组 */
  488. var compressFiels = [];
  489. /**
  490. * @param {Object} num 压缩图片
  491. */
  492. function compress(num) {
  493. var path = compressFiels[num];
  494. plus.io.resolveLocalFileSystemURL(path, function(entry) {
  495. //追加到照片数组中 以便上传时使用 多张
  496. cameraFiles.splice(0, 0, {
  497. path: path,
  498. name: entry.name,
  499. });
  500. plus.zip.compressImage({
  501. src: path,
  502. dst: '_doc/camera/YS' + entry.name,
  503. quality: 20,
  504. overwrite: true, //覆盖生成新文件
  505. }, function(event) {
  506. AddPhotoItem(event.target);
  507. if (num == compressFiels.length - 1) {
  508. //压缩完成
  509. compressFiels = [];
  510. } else {
  511. compress(num + 1);
  512. }
  513. }, function(e) {
  514. muiAlertError("文件压缩错误: " + e.message);
  515. })
  516. }, function(e) {
  517. printToConsole("路径转换失败!");
  518. });
  519. }
  520. /**
  521. * 删除最后一个追加的照片
  522. */
  523. function RemoveImg() {
  524. if (domImgPanel.childNodes.length > 2) {
  525. //删除最后张拍摄的照片
  526. domImgPanel.removeChild(domImgPanel.childNodes[0]);
  527. //删除数组中的最后一个
  528. cameraFiles.splice(0, 1);
  529. }
  530. mui.plusReady(function() {
  531. setTimeout(function() {
  532. mui.swipeoutClose(domImgPanel.parentNode);
  533. }, 0);
  534. });
  535. }
  536. /******以下是录像相关*********************************************/
  537. var videoFiles = [];
  538. var domVideoPanel = document.getElementById("videoPanel");
  539. /**
  540. * 打开或隐藏视频录制对话框
  541. */
  542. function CallCameraVideoDialog() {
  543. mui.plusReady(function() {
  544. mui('#videoDialog').popover('toggle');
  545. });
  546. }
  547. /**
  548. * 开启录制视频
  549. */
  550. function CallCameraVideo() {
  551. mui.plusReady(function() {
  552. var strDate = new Date().Format("yyyyMMddHHmmss");
  553. //预定义照片名称
  554. var videoName = "cl_" + joinUser.userID + "_" + strDate;
  555. var cmr = plus.camera.getCamera(); //获取相机
  556. mui('#videoDialog').popover('toggle'); //关闭弹出框
  557. //开启录像
  558. cmr.startVideoCapture(function(path) {
  559. AddVideoItem(path);
  560. }, function(e) {
  561. muiAlertError(e.message);
  562. }, {
  563. filename: '_doc/video/' + videoName,
  564. index: 1,
  565. })
  566. });
  567. }
  568. /**
  569. * 添加录制视频到控件中显示
  570. * @param {Object} path
  571. */
  572. function AddVideoItem(path) {
  573. //此处需要将相机返回的路径转换为本地路径 否则不发正常显示
  574. plus.io.resolveLocalFileSystemURL(path, function(entry) {
  575. //追加到照片数组中 以便上传时使用
  576. videoFiles.splice(0, 0, {
  577. path: path,
  578. name: entry.name,
  579. });
  580. var domImg = document.createElement('img');
  581. domImg.className = 'wc-camera-img';
  582. domImg.src = '../img/ico_net_video.png';
  583. //点击打开照片
  584. domImg.onclick = function() {
  585. plus.runtime.openFile(path);
  586. }
  587. domVideoPanel.insertBefore(domImg, domVideoPanel.childNodes[0]);
  588. }, function(e) {
  589. printToConsole("路径转换失败!");
  590. });
  591. }
  592. /**
  593. * 删除最后一个追加的视频
  594. */
  595. function RemoveVideo() {
  596. if (domVideoPanel.childNodes.length > 2) {
  597. //删除最后张拍摄的照片
  598. domVideoPanel.removeChild(domVideoPanel.childNodes[0]);
  599. //删除数组中的最后一个
  600. videoFiles.splice(0, 1);
  601. }
  602. mui.plusReady(function() {
  603. setTimeout(function() {
  604. mui.swipeoutClose(domVideoPanel.parentNode);
  605. }, 0);
  606. });
  607. }
  608. /**
  609. * 单选框 获取值
  610. * @param {Object} radioName raido的name字段
  611. */
  612. function radioChecked(radioName) {
  613. var obj = document.getElementsByName(radioName);
  614. for (var i = 0; i < obj.length; i++) {
  615. if (obj[i].checked) {
  616. return obj[i].value;
  617. }
  618. }
  619. return "";
  620. }
  621. /*************上传相关**********************/
  622. var caseCheckSubmitModel = {
  623. casenum: '', //案件号
  624. isBackTheLaw: '1', //是否违法
  625. clry: '', //处理人员
  626. clms: '', //处理描述
  627. userItem: '', //占地项目
  628. userCompany: '', //占地单位
  629. }
  630. /**
  631. * 上传数据
  632. */
  633. function EventCaseCheckSubmit() {
  634. if (CheckSubmitInfo()) {
  635. muiConfirm("确定要提交处理信息吗?", '提交', function() {
  636. CaseCheckInfoUpload();
  637. });
  638. }
  639. }
  640. /**
  641. * 上传文件及数据
  642. */
  643. function CaseCheckInfoUpload() {
  644. getServerURL("appCaseCheck", function(url) {
  645. waitingDialog = plus.nativeUI.showWaiting("正在上传处理信息...");
  646. var task = plus.uploader.createUpload(url, {
  647. method: 'POST'
  648. },
  649. function(t, status) {});
  650. //追加上传的照片文件
  651. for (var i = 0; i < cameraFiles.length; i++) {
  652. task.addFile(cameraFiles[i].path, {
  653. key: cameraFiles[i].name
  654. });
  655. }
  656. //追加上传的视频文件
  657. for (var i = 0; i < videoFiles.length; i++) {
  658. task.addFile(videoFiles[i].path, {
  659. key: videoFiles[i].name
  660. });
  661. }
  662. //追加数据 已JSON字符串的方式传递
  663. for (var key in caseCheckSubmitModel) {
  664. task.addData(key, caseCheckSubmitModel[key]);
  665. }
  666. // task.addData("client", JSON.stringify(caseCheckSubmitModel));
  667. //添加一个监听事件试试
  668. task.addEventListener('statechanged', listnerOnStateChange, false);
  669. task.start();
  670. }, function(e) {
  671. muiAlert(e, "警告");
  672. });
  673. }
  674. /* 等待框 */
  675. var waitingDialog = undefined;
  676. /**
  677. * 监听上传进度
  678. * @param {Object} upload 任务
  679. * @param {Object} status 状态
  680. */
  681. function listnerOnStateChange(upload, status) {
  682. if (upload.state == 3) {
  683. var uploadedSize = upload.uploadedSize;
  684. var totalSize = upload.totalSize;
  685. var progressValue = (uploadedSize / totalSize) * 100;
  686. var progressJD = progressValue.toFixed(2) + "%";
  687. waitingDialog.setTitle("信息上传进度 " + progressJD);
  688. } else if (upload.state == 4 && status == 200) {
  689. plus.nativeUI.closeWaiting();
  690. if (status == 200) {
  691. //返回的t.responseText是字符串 需要转换为JSONObject
  692. var resJSON = JSON.parse(upload.responseText);
  693. if (resJSON.res == NET_ERR) {
  694. muiAlert(resJSON.data[0].msg, "警告");
  695. } else {
  696. muiAlert(resJSON.data[0].msg, "提示", function() {
  697. //回调父页面的方法 通过页面的evaJS方法调用对应方法
  698. plus.webview.currentWebview().opener().evalJS("refreshDataTable('" + joinCaseModel
  699. .casenum + "')");
  700. plus.webview.currentWebview().close();
  701. });
  702. }
  703. } else {
  704. muiAlert("网络异常,上传失败!", "警告");
  705. }
  706. }
  707. }
  708. /**
  709. * 检测上传的处理信息是否完整
  710. */
  711. function CheckSubmitInfo() {
  712. //赋值
  713. caseCheckSubmitModel.isBackTheLaw = radioChecked('wflx');
  714. caseCheckSubmitModel.casenum = joinCaseModel.casenum;
  715. caseCheckSubmitModel.clms = domTxtCLMS.value;
  716. caseCheckSubmitModel.userItem = domTxtYDXM.value;
  717. caseCheckSubmitModel.userCompany = domTxtYDDW.value;
  718. caseCheckSubmitModel.clry = joinUser.userID;
  719. if (caseCheckSubmitModel.isBackTheLaw == "") {
  720. muiAlert("请选择案件违法类型!", "提示");
  721. return false;
  722. } else if (caseCheckSubmitModel.casenum == "") {
  723. muiAlert("未关联案件号!", "警告");
  724. return;
  725. } else if (cameraFiles.length == 0) {
  726. muiAlert("请拍摄取证照片!", "提示");
  727. return false;
  728. } else if (caseCheckSubmitModel.clms == "") {
  729. muiAlert("请填写处理意见!", "提示");
  730. domTxtCLMS.focus();
  731. return false;
  732. } else if (caseCheckSubmitModel.clry == "" || caseCheckSubmitModel.clry == undefined) {
  733. muiAlert("关联账号异常,请重新登录APP!", "提示");
  734. return false;
  735. }
  736. return true;
  737. }
  738. </script>