HtmlPage1.html 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779
  1. @{
  2. Layout = null;
  3. }
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta charset="utf-8">
  8. <title>中联区卫问题登记</title>
  9. <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
  10. <link href="~/Content/Scripts/plugins/mui/css/mui.css?v=1.0" rel="stylesheet" />
  11. <link href="~/Content/Scripts/plugins/mui/css/mui.picker.all.css" rel="stylesheet" />
  12. <link href="~/Content/Style/MobileProductRegist/NewProblemForProject.css" rel="stylesheet" />
  13. <link href="~/Content/Scripts/plugins/mui/css/webuploader.css" rel="stylesheet" />
  14. <script src="~/Content/Scripts/jquery.min.js"></script>
  15. <script src="~/Content/Scripts/plugins/mui/js/mui.js"></script>
  16. <script src="~/Content/Scripts/plugins/mui/js/mui.picker.all.js"></script>
  17. <script src="~/Content/Scripts/plugins/mui/js/mui.view.js"></script>
  18. <script src="~/Content/Scripts/plugins/mui/js/webuploader.js?v=1.2"></script>
  19. <script src="~/Content/Scripts/CookieManage.js"></script>
  20. <script src="~/Content/Scripts/plugins/mui/js/PlusUploader.js?v=2.6"></script>
  21. <script src="~/Content/Scripts/vue.js"></script>
  22. <script src="https://cdn.staticfile.org/vue-resource/1.5.1/vue-resource.min.js"></script>
  23. </head>
  24. <body class="mui-fullscreen">
  25. <style>
  26. .UplodImg {
  27. display: flex;
  28. justify-content: space-between;
  29. flex-direction: row;
  30. align-content: center;
  31. padding: 7px 27px;
  32. }
  33. .filep {
  34. -webkit-line-clamp: 1;
  35. overflow: hidden;
  36. word-break: break-all;
  37. display: -webkit-box;
  38. -webkit-box-orient: vertical;
  39. text-overflow: ellipsis;
  40. position: absolute;
  41. bottom: 12px;
  42. background-color: rgba(0, 0, 0, 0.6);
  43. font-size: 13px;
  44. color: white;
  45. width: 100px;
  46. }
  47. .mui-input-row label {
  48. padding: 11px 20px 11px 13px;
  49. margin-left: 20px;
  50. }
  51. .mui-radio input[type='radio'] {
  52. left: 0;
  53. }
  54. .radiodiv {
  55. display: flex;
  56. flex-direction: row;
  57. background-color: white;
  58. font-size: 14px;
  59. padding: 0 10px;
  60. }
  61. .destory {
  62. position: absolute;
  63. top: 0;
  64. right: -6px;
  65. width: 10px;
  66. height: 10px;
  67. font-size: 20px;
  68. color: #cc9a9a;
  69. margin-bottom: 11px;
  70. transition: color 0.2s ease-out;
  71. background-color: transparent;
  72. border: transparent;
  73. }
  74. .destory:after {
  75. content: '×';
  76. position: absolute;
  77. top: -10px;
  78. right: 5px;
  79. }
  80. .nav-bar {
  81. border-radius: 10px;
  82. font-size: 15px !important;
  83. margin-bottom: 10px !important;
  84. height: 50px;
  85. }
  86. .onselect {
  87. padding: 0 20px;
  88. font-size: 14px;
  89. font-weight: 600;
  90. }
  91. </style>
  92. <div id="vue">
  93. <!--页面主结构开始-->
  94. <div id="app" class="mui-views">
  95. <div class="mui-view">
  96. <div class="mui-navbar">
  97. </div>
  98. <div class="mui-pages">
  99. </div>
  100. </div>
  101. </div>
  102. @*选择项目机构界面*@
  103. <div id="InstitutionSelect" class="mui-page">
  104. <!--页面标题栏开始-->
  105. <div class="mui-navbar-inner mui-bar mui-bar-nav">
  106. <button type="button" class="mui-left mui-action-back mui-btn mui-btn-link mui-btn-nav mui-pull-left">
  107. <span class="mui-icon mui-icon-left-nav"></span>
  108. </button>
  109. <h1 class="mui-center mui-title">选择存在问题的项目机构</h1>
  110. <button v-on:click="GoRegister" v-if="ProjectSelect" type="button" class="mui-right mui-btn mui-btn-link mui-btn-nav mui-pull-right">
  111. <span class="mui-icon mui-icon-checkmarkempty" style="color:white;font-size:30px"></span>
  112. </button>
  113. </div>
  114. <!--页面标题栏结束-->
  115. <!--页面主内容区开始-->
  116. <div class="mui-page-content">
  117. <div class="onselect">已选:&nbsp;{{ProjectSelectName}}{{institutionSeleName}}</div>
  118. <div class="mui-content mui-row mui-fullscreen" style="z-index:0;background-color:#efeff4;margin-top:70px">
  119. <div class="mui-col-xs-3" style="width:35%">
  120. <div id="segmentedControls" class="mui-segmented-control mui-segmented-control-inverted mui-segmented-control-vertical">
  121. <div style="text-align:center">
  122. <input v-model="ProjectSearchText" style="font-size:15px; margin:auto" type="search" class="mui-input-clear" placeholder="项目名称搜索">
  123. </div>
  124. <a v-for="p in ProjectSearchData" v-bind:class="ProjectSelect==p.id?'mui-active':''" v-bind:id="p.text" class="mui-control-item " v-on:click="GetInstitution(p)">{{p.text}}</a>
  125. </div>
  126. </div>
  127. <div id="segmentedControlContents" class="mui-col-xs-9" style="border-left: 1px solid #c8c7cc;width:65%">
  128. <div id="content" class="mui-control-content mui-active">
  129. <div style="text-align:center">
  130. <input v-model="searchText" style="font-size:15px; margin:auto" type="search" class="mui-input-clear" placeholder="机构名称搜索">
  131. </div>
  132. <ul style="margin-top:0" class="mui-table-view">
  133. <li v-for="i in InsitutionSearchData" class="mui-table-view-cell" v-bind:class="institutionSele==i.id?'mui-active':''" v-on:click="InstitutionSelect(i)">{{i.text}}</li>
  134. </ul>
  135. </div>
  136. </div>
  137. </div>
  138. </div>
  139. <!--页面主内容区结束-->
  140. </div>
  141. @*登记主界面*@
  142. <div id="register" class="mui-page">
  143. <div class="mui-navbar-inner mui-bar mui-bar-nav">
  144. <button type="button" class="mui-left mui-action-back mui-btn mui-btn-link mui-btn-nav mui-pull-left">
  145. <span class="mui-icon mui-icon-left-nav"></span>
  146. </button>
  147. <h1 class="mui-center mui-title">中联区卫问题登记</h1>
  148. @*<button v-on:click="Submit()" class="mui-btn mui-btn-blue mui-btn-link mui-pull-right" style="color:#ffffff">直接提交</button>*@
  149. </div>
  150. <nav class="mui-bar mui-bar-tab">
  151. <button v-on:click="Submit()" type="button" class="mui-btn mui-btn-primary" style="width:48%;background-color: #2ab8ff;border:none;margin-right:10px">直接提交</button>
  152. <button v-on:click="StatusSelect()" type="button" class="mui-btn mui-btn-danger" style="width:48%;border:none;background-color: #fb7e00">下一步(填写处理状态)</button>
  153. </nav>
  154. <div class="mui-page-content">
  155. <div class="mui-scroll-wrapper">
  156. <div class="mui-scroll">
  157. <input v-model="institutionSele" type="hidden" />
  158. <div class="mui-input-row" style="margin-top: 7px">
  159. <input v-on:blur="getde()" v-model="ProblemTitile" id="ProblemTitile" type="text" class="mui-input-clear" placeholder="填写问题标题" style="font-size:15px">
  160. </div>
  161. <div class="mui-input-row" style="font-size:14px">
  162. <textarea v-model="detail" id="detail" rows="8" placeholder="请填写具体的问题描述,以便我们更详细的了解您需要解决的问题。" style="font-size:15px;margin-bottom:-10px"></textarea>
  163. </div>
  164. <div style="background-color:white;margin-top:10px">
  165. <div class="UplodImg" id="pickImg">
  166. <h4 style="font-weight:400">图片</h4>
  167. <div>
  168. <span class="mui-icon mui-icon-camera" id="pickCamera" style="color:#1296db;margin-right:20px"></span>
  169. <span class="mui-icon mui-icon-image" id="pickPhoto" style="color:#1296db"></span>
  170. </div>
  171. </div>
  172. <ul id="ImgList" class="mui-table-view mui-grid-view mui-grid-9" style="background-color:white;border-color:transparent;margin:0"></ul>
  173. </div>
  174. <div style="background-color:white;border-top: solid 1px #efeff4;">
  175. <div class="UplodImg" id="pickFlie">
  176. <h4 style="font-weight:400">附件</h4>
  177. <span class="mui-icon mui-icon-paperclip" style="color:#1296db"></span>
  178. </div>
  179. <ul id="FileList" class="mui-table-view mui-grid-view mui-grid-9" style="background-color:white;border-color:transparent;"></ul>
  180. </div>
  181. <div style="display:none" id="picker">选择文件</div>
  182. <div style="display:none" id="picker2">选择文件</div>
  183. <button style="margin-top: 30px;display:none;" id="ctlBtn" class="btn btn-default">图片上传</button>
  184. </div>
  185. </div>
  186. </div>
  187. </div>
  188. @*处理状态选择界面*@
  189. <div id="DEALSTATUS" class="mui-page">
  190. <div class="mui-navbar-inner mui-bar mui-bar-nav">
  191. <button type="button" class="mui-left mui-action-back mui-btn mui-btn-link mui-btn-nav mui-pull-left">
  192. <span class="mui-icon mui-icon-left-nav"></span>
  193. </button>
  194. <h1 class="mui-center mui-title">中联区卫问题登记</h1>
  195. @*<button v-on:click="Submit()" class="mui-btn mui-btn-blue mui-btn-link mui-pull-right" style="color:#ffffff">直接提交</button>*@
  196. </div>
  197. <nav class="mui-bar mui-bar-tab">
  198. @*<button v-on:click="Submit()" type="button" style="border-radius: 10px;font-size:15px;margin-bottom:10px;height:50px" class="mui-btn mui-btn-success mui-btn-block btn_2">提交</button>*@
  199. <button v-on:click="Submit()" type="button" class="mui-btn mui-btn-primary" style="width:90%;background-color: #2ab8ff;border:none;margin-left:5%">提交</button>
  200. </nav>
  201. <div class="mui-page-content">
  202. <div class="mui-scroll-wrapper">
  203. <div class="mui-scroll">
  204. <h5 class="mui-content-padded">登记来源</h5>
  205. <select v-model="Origin" class="mui-btn mui-btn-block" style="font-size:15px;padding-left:20px">
  206. <option v-for="os in OriginSelec" v-bind:value="os.代码">{{os.显示名}}</option>
  207. </select>
  208. <h5 class="mui-content-padded">问题性质</h5>
  209. <div class="radiodiv">
  210. <div v-for="pn in ProblemNatureSelec" class="mui-input-row mui-radio ">
  211. <label>{{pn.显示名}}</label>
  212. <input v-model="ProblemNature" name="radio3" type="radio" v-bind:value="pn.代码">
  213. </div>
  214. </div>
  215. @*<select v-model="ProblemNature" class="mui-btn mui-btn-block" style="font-size:15px;padding-left:20px">
  216. <option v-for="pn in ProblemNatureSelec" v-bind:value="pn.代码">{{pn.显示名}}</option>
  217. </select>*@
  218. <h5 class="mui-content-padded">处理状态</h5>
  219. <div class="radiodiv">
  220. <div class="mui-input-row mui-radio ">
  221. <label>未处理</label>
  222. <input v-model="DealStatus" name="radio1" type="radio" value="0">
  223. </div>
  224. <div class="mui-input-row mui-radio ">
  225. <label>已处理</label>
  226. <input v-model="DealStatus" name="radio1" type="radio" value="1">
  227. </div>
  228. <div class="mui-input-row mui-radio ">
  229. <label>向上提交</label>
  230. <input v-model="DealStatus" name="radio1" type="radio" value="2">
  231. </div>
  232. </div>
  233. <div v-if="DealStatus==1" class="mui-input-row" style="font-size:14px">
  234. <textarea v-model="DealDetail" rows="6" placeholder="请填写处理描述说明" style="font-size:15px;margin-top:20px"></textarea>
  235. </div>
  236. <h5 class="mui-content-padded">紧急程度</h5>
  237. <div class="radiodiv">
  238. <div v-for="er in ErginSelec" class="mui-input-row mui-radio ">
  239. <label>{{er.显示名}}</label>
  240. <input v-model="ErginID" name="radio2" type="radio" v-bind:value="er.代码">
  241. </div>
  242. </div>
  243. <ul class="mui-table-view">
  244. <li class="mui-table-view-cell" style="font-size:14px">
  245. 要求时间
  246. <button type="button" data-options='{"type":"date","beginYear":2017,"endYear":2019}' class="mui-btn time-btn">
  247. {{RequireTime}}
  248. </button>
  249. </li>
  250. </ul>
  251. <div class="mui-input-row" style="font-size:14px;margin-bottom:40px;margin-top:20px">
  252. <textarea v-model="urgentDetail" id="urgentDetail" rows="6" placeholder="请填写紧急描述说明" style="font-size:15px;"></textarea>
  253. </div>
  254. </div>
  255. </div>
  256. </div>
  257. </div>
  258. </div>
  259. <script>
  260. var IsPlus = mui.os.plus ? true : false;
  261. var Count = 0;
  262. var ProblemProcessIDtoImg;
  263. var lod;
  264. var Code = '@ViewBag.ProductCode';
  265. var PersonProperty = '@ViewBag.PersonProperty';
  266. var ProjectId = '@ViewBag.ProjectId';
  267. var OrgID = '@ViewBag.OrgID';
  268. var vm = new Vue({
  269. el: '#vue',
  270. data: {
  271. ///项目机构
  272. ProjectAndInstitution: {},
  273. Institution: {},
  274. //选择的项目
  275. ProjectSelect: '',
  276. //已选项目名称
  277. ProjectSelectName: '',
  278. ///项目人员选择的机构
  279. institutionSele: "",
  280. //已选机构名称
  281. institutionSeleName:"",
  282. ///项目人员选择的处理状态
  283. DealStatus: 0,
  284. ///问题标题
  285. ProblemTitile: '',
  286. ///问题描述
  287. detail: '',
  288. ///处理描述说明
  289. DealDetail: '',
  290. ///紧急程度选择项
  291. ErginSelec: null,
  292. ///紧急程度
  293. ErginID: '',
  294. ///紧急描述
  295. urgentDetail: '',
  296. ///紧急处理时间
  297. RequireTime: '请选择时间',
  298. viewApi: null,
  299. ///登记来源
  300. Origin: '',
  301. ///登记来源选择项
  302. OriginSelec: null,
  303. ///问题性质
  304. ProblemNature: '',
  305. ///问题性质选择项
  306. ProblemNatureSelec: null,
  307. //项目搜索项
  308. ProjectSearchText: '',
  309. //机构搜索项
  310. searchText: '',
  311. FivePlusUploder:null
  312. },
  313. created: function () {
  314. },
  315. watch: {
  316. },
  317. methods: {
  318. ///获取项目
  319. GetProject: function () {
  320. var that = this;
  321. this.$http.get('/MobileProblem/GetProjectTreeByCode/' + Code).then(function (res) {
  322. this.ProjectAndInstitution = res.body;
  323. var UserSetProject = getCookie("UserSetProject");
  324. if (UserSetProject && UserSetProject.split('|')[0]) {
  325. ///判断获取的项目中是否存在设置的默认项目
  326. var status = false;
  327. for(item of res.body) {
  328. if (item.id == UserSetProject.split('|')[0]) {
  329. status = true;
  330. break;
  331. }
  332. }
  333. if (status) {
  334. that.SetProjectAndInstitution();
  335. that.CheckInsitution(res.body, UserSetProject.split('|')[0])
  336. }
  337. }
  338. }, function (res) {
  339. console.log(res.status);
  340. });
  341. },
  342. //筛选机构
  343. CheckInsitution :function (project,id){
  344. for(item of project) {
  345. if (item.id == id) {
  346. this.Institution = item.children
  347. return
  348. }
  349. }
  350. },
  351. ///重置项目机构
  352. ResetProjectAndInstitution(){
  353. this.ProjectSelect = '';
  354. this.ProjectSelectName = '';
  355. this.institutionSele = '';
  356. this.institutionSeleName = '';
  357. },
  358. //设置默认项目机构
  359. SetProjectAndInstitution(){
  360. //判断是否设置默认项目和机构
  361. var UserSetProject = getCookie("UserSetProject");
  362. if (UserSetProject && UserSetProject.split('|')[0]) {
  363. this.ProjectSelect = UserSetProject.split('|')[0];
  364. this.ProjectSelectName = UserSetProject.split('|')[1] + " ->";
  365. var UserSetInstitution = getCookie("UserSetInstitution");
  366. if (UserSetInstitution && UserSetInstitution.split('|')[0]) {
  367. this.institutionSele = UserSetInstitution.split('|')[0];
  368. this.institutionSeleName = UserSetInstitution.split('|')[1];
  369. }
  370. }
  371. },
  372. ///获取登记来源
  373. GetOriginSelec: function () {
  374. this.$http.get('/MobileProblem/GetComboboxByCode/026').then(function (res) {
  375. this.OriginSelec = res.body;
  376. this.Origin = this.OriginSelec[1].代码;
  377. }, function (res) {
  378. console.log(res.status);
  379. });
  380. },
  381. ///获取问题性质
  382. GetProblemNatureSelec: function () {
  383. this.$http.get('/MobileProblem/GetComboboxByCode/013').then(function (res) {
  384. this.ProblemNatureSelec = res.body;
  385. this.ProblemNature = this.ProblemNatureSelec[0].代码;
  386. }, function (res) {
  387. console.log(res.status);
  388. });
  389. },
  390. ///获取机构
  391. GetInstitution: function (i) {
  392. this.ProjectSelect = i.id;
  393. this.ProjectSelectName = i.text + " ->";
  394. this.institutionSele = '';
  395. this.institutionSeleName = '';
  396. //$(".mui-control-item ").removeClass("mui-active");
  397. //$("#" + i.text).addClass("mui-active");
  398. this.Institution = i.children;
  399. },
  400. ///获取紧急程度选择项
  401. GetErgin: function () {
  402. this.$http.get('/MobileProblem/GetComboboxByCode/014').then(function (res) {
  403. this.ErginSelec = res.body;
  404. this.ErginID = this.ErginSelec[0].代码;
  405. }, function (res) {
  406. console.log(res.status);
  407. });
  408. },
  409. //只选择项目直接跳转页面
  410. GoRegister: function () {
  411. this.viewApi.go("#register");
  412. },
  413. ///选择机构并跳转登记主页面
  414. InstitutionSelect: function (i) {
  415. this.institutionSele = i.id;
  416. this.institutionSeleName = i.text;
  417. this.viewApi.go("#register");
  418. },
  419. ///问题状态选择界面
  420. StatusSelect: function () {
  421. if (Code == '') {
  422. mui.toast('请重新选择产品', { duration: 'long', type: 'div' });
  423. return;
  424. }
  425. if (this.ProblemTitile == '') {
  426. mui.toast('请输入问题标题', { duration: 'long', type: 'div' });
  427. return;
  428. }
  429. if (this.detail == '') {
  430. mui.toast('请填写问题详细描述', { duration: 'long', type: 'div' });
  431. return;
  432. }
  433. if (this.ProjectSelect == '') {
  434. mui.toast('至少选择一个存在问题的项目', { duration: 'long', type: 'div' });
  435. return;
  436. }
  437. this.viewApi.go("#DEALSTATUS");
  438. },
  439. ///紧急问题登记界面
  440. ErginSelect: function () {
  441. this.viewApi.go("#Ergin");
  442. },
  443. ///提交问题
  444. Submit: function () {
  445. var that = this;
  446. var param = {
  447. ProblemTitile: this.ProblemTitile,
  448. detail: this.detail,
  449. InstitutionID: this.institutionSele,
  450. ProjectID: this.ProjectSelect,
  451. DealStatus: this.DealStatus,
  452. DealDetail: this.DealDetail,
  453. ErginID: this.ErginID,
  454. urgentDetail: this.urgentDetail,
  455. RequireTime: this.RequireTime,
  456. Origin: this.Origin,
  457. ProblemNature: this.ProblemNature,
  458. ProductCode: Code
  459. }
  460. if (Code == '') {
  461. mui.toast('请重新选择产品', { duration: 'long', type: 'div' });
  462. return;
  463. }
  464. if (this.ProblemTitile == '') {
  465. mui.toast('请输入问题标题', { duration: 'long', type: 'div' });
  466. return;
  467. }
  468. if (this.detail == '') {
  469. mui.toast('请填写问题详细描述', { duration: 'long', type: 'div' });
  470. return;
  471. }
  472. if (this.ProjectSelect == '') {
  473. mui.toast('至少选择一个存在问题的项目', { duration: 'long', type: 'div' });
  474. return;
  475. }
  476. lod = mui.showLoading("正在提交,请稍后...", "div");
  477. $.post("/MobileProblem/SubmitProblem", param, function (data) {
  478. if (data.code == 200) {
  479. ProblemProcessIDtoImg = data.msg;
  480. $("#ctlBtn").click();
  481. } else {
  482. mui.toast(data.msg, { duration: 'long', type: 'div' });
  483. }
  484. })
  485. },
  486. ///初始化页面
  487. init: function () {
  488. var that = this;
  489. mui.init();
  490. ///判断是否为机构管理员
  491. var defaultPages = '#InstitutionSelect';
  492. if (PersonProperty == 4) {
  493. this.institutionSele = OrgID;
  494. this.ProjectSelect = ProjectId
  495. defaultPages = "#register";
  496. }
  497. //初始化单页view
  498. that.viewApi = mui('#app').view({
  499. defaultPage: defaultPages
  500. });
  501. mui('.mui-scroll-wrapper').scroll();
  502. //处理view的后退与webview后退
  503. var oldBack = mui.back;
  504. var view = that.viewApi.view;
  505. mui.back = function () {
  506. if (that.viewApi.canBack()) { //如果view可以后退,则执行view的后退
  507. that.viewApi.back();
  508. } else { //执行webview后退
  509. oldBack();
  510. }
  511. };
  512. },
  513. ///实例化日期组件
  514. loadTime: function () {
  515. var that = this;
  516. var btns = $('.time-btn');
  517. btns.each(function (i, btn) {
  518. btn.addEventListener('tap', function () {
  519. var _self = this;
  520. if (_self.picker) {
  521. _self.picker.show(function (rs) {
  522. btn.innerHTML = rs.text;
  523. _self.picker.dispose();
  524. _self.picker = null;
  525. });
  526. } else {
  527. var optionsJson = this.getAttribute('data-options') || '{}';
  528. var options = JSON.parse(optionsJson);
  529. var id = this.getAttribute('id');
  530. _self.picker = new mui.DtPicker(options);
  531. _self.picker.show(function (rs) {
  532. that.RequireTime = rs.text;
  533. _self.picker.dispose();
  534. _self.picker = null;
  535. });
  536. }
  537. }, false);
  538. })
  539. },
  540. ///初始化图片上传插件
  541. ImagUploaderInit: function () {
  542. var that = this;
  543. var $list = $("#ImgList");
  544. var $list2 = $("#FileList");
  545. var $btn = $("#ctlBtn");
  546. var thumbnailWidth = 100;
  547. var thumbnailHeight = 100;
  548. var uploader = WebUploader.create({
  549. // 选完文件后,是否自动上传。
  550. auto: false,
  551. // swf文件路径
  552. swf: '/Content/Scripts/plugins/mui/js/Uploader.swf',
  553. // 文件接收服务端。
  554. server: '/MobileProblem/FlieUploadAndSave',
  555. // 选择文件的按钮。可选。
  556. // 内部根据当前运行是创建,可能是input元素,也可能是flash.
  557. pick: '#picker2',
  558. compress: {
  559. width: 1600,
  560. height: 1600,
  561. // 图片质量,只有type为`image/jpeg`的时候才有效。
  562. quality: 90,
  563. // 是否允许放大,如果想要生成小图的时候不失真,此选项应该设置为false.
  564. allowMagnify: false,
  565. // 是否允许裁剪。
  566. crop: false,
  567. // 是否保留头部meta信息。
  568. preserveHeaders: true,
  569. // 如果发现压缩后文件大小比原来还大,则使用原来图片
  570. // 此属性可能会影响图片自动纠正功能
  571. noCompressIfLarger: false,
  572. // 单位字节,如果图片大小小于此值,不会采用压缩。
  573. compressSize: 0
  574. }
  575. });
  576. uploader.on('fileQueued', function (file) {
  577. var $li = $(
  578. '<li id="' + file.id + '" class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-3"><img > <button class="destory" ></button><p class="filep">' + file.name + '</p> </li>'
  579. ),
  580. $img = $li.find('img');
  581. // $list为容器jQuery实例
  582. if (file.type.substring(0, 5) == "image") {
  583. $list.append($li);
  584. } else {
  585. $list2.append('<li id="' + file.id + '" class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-3"><span class="mui-icon mui-icon-upload" style="padding-bottom:10px"></span><button class="destory" ></button>' +
  586. '<p class="filep">' + file.name + '</p> </li>');
  587. }
  588. $("#" + file.id).children(".destory").click(() =>{
  589. uploader.removeFile(file);
  590. $("#" + file.id).remove();
  591. })
  592. // 创建缩略图
  593. // 如果为非图片文件,可以不用调用此方法。
  594. // thumbnailWidth x thumbnailHeight 为 100 x 100
  595. uploader.makeThumb(file, function (error, src) {
  596. if (error) {
  597. $img.replaceWith('<span>不能预览</span>');
  598. return;
  599. }
  600. $img.attr('src', src);
  601. }, thumbnailWidth, thumbnailHeight);
  602. });
  603. // 文件上传成功,给item添加成功class, 用样式标记上传成功。
  604. uploader.on('uploadSuccess', function (file, response) {
  605. $('#' + file.id).addClass('upload-state-done');
  606. if (response.msg = "1") {
  607. Count += 1;
  608. }
  609. });
  610. // 文件上传失败,显示上传出错。
  611. uploader.on('uploadError', function (file) {
  612. var $li = $('#' + file.id),
  613. $error = $li.find('div.error');
  614. // 避免重复创建
  615. if (!$error.length) {
  616. $error = $('<div class="error"></div>').appendTo($li);
  617. }
  618. $error.text('上传失败');
  619. });
  620. // 完成上传完了,成功或者失败,先删除进度条。
  621. uploader.on('uploadComplete', function (file) {
  622. $('#' + file.id).find('.progress').remove();
  623. });
  624. uploader.on('uploadFinished', function () {
  625. mui.hideLoading(lod);
  626. if (IsPlus) {
  627. that.FivePlusUploder.uplod(ProblemProcessIDtoImg, lod);
  628. } else {
  629. mui.alert("问题反馈成功,请耐心等待,成功上传" + Count + "个附件!", "提交成功", "确定", function () {
  630. window.location.href = "/MobileProblem/Home";
  631. }, 'div');
  632. }
  633. });
  634. $btn.on('click', function () {
  635. uploader.options.formData.ProcessId = ProblemProcessIDtoImg;
  636. uploader.upload();
  637. });
  638. if (!IsPlus) {
  639. document.getElementById('pickImg').addEventListener('tap', function () {
  640. $("#picker").find('.webuploader-element-invisible').click();
  641. });
  642. }
  643. document.getElementById('pickFlie').addEventListener('tap', function () {
  644. $("#picker2").find('.webuploader-element-invisible').click();
  645. });
  646. uploader.addButton({
  647. id: '#picker',
  648. innerHTML: '选择文件',
  649. accept: {
  650. title: 'Images',
  651. extensions: 'gif,jpg,jpeg,bmp,png',
  652. mimeTypes: 'image/*',
  653. },
  654. capture: 'camera'
  655. });
  656. },
  657. getde: function () {
  658. if (!this.detail) {
  659. this.detail = this.ProblemTitile;
  660. }
  661. },
  662. LoadUploder: function () {
  663. this.ImagUploaderInit();
  664. if (IsPlus) {
  665. this.FivePlusUploder = new FivePlus();
  666. }
  667. }
  668. },
  669. computed: {
  670. InsitutionSearchData: function () {
  671. var searchText = this.searchText;
  672. if (searchText) {
  673. return this.Institution.filter(function (Institutions) {
  674. return Object.keys(Institutions).some(function (key) {
  675. return String(Institutions[key]).toLowerCase().indexOf(searchText) > -1
  676. })
  677. })
  678. }
  679. return this.Institution
  680. },
  681. ProjectSearchData: function () {
  682. var ProjectSearchText = this.ProjectSearchText;
  683. if (ProjectSearchText) {
  684. return this.ProjectAndInstitution.filter(function (ProjectAndInstitutions) {
  685. return Object.keys(ProjectAndInstitutions).some(function (key) {
  686. return String(ProjectAndInstitutions[key]).toLowerCase().indexOf(ProjectSearchText) > -1
  687. })
  688. })
  689. }
  690. return this.ProjectAndInstitution
  691. }
  692. },
  693. mounted: function () {
  694. this.init();
  695. this.LoadUploder();
  696. this.loadTime();
  697. this.GetProject();
  698. this.GetErgin();
  699. this.GetOriginSelec();
  700. this.GetProblemNatureSelec();
  701. }
  702. })
  703. </script>
  704. </body>
  705. </html>