case-check.html 23 KB

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