SelectProblemItem.cshtml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286
  1. 
  2. @{
  3. ViewBag.Title = "SelectProblemItem";
  4. Layout = "~/Views/MobileProblem/_APPMain.cshtml";
  5. }
  6. <link href="~/Content/Style/MobileProductRegist/NewProblemForProject.css?v=1.0" rel="stylesheet" />
  7. <link href="~/Content/Scripts/plugins/mui/css/webuploader.css" rel="stylesheet" />
  8. <link href="~/Content/Scripts/plugins/mui/css/mui.indexedlist.css" rel="stylesheet" />
  9. <script src="~/Content/Scripts/plugins/mui/js/mui.view.js"></script>
  10. <script src="~/Content/Scripts/plugins/mui/js/webuploader.js?v=1.2"></script>
  11. <script src="~/Content/Scripts/babel.min.js"></script>
  12. <script src="~/Content/Scripts/polyfill.min.js"></script>
  13. <script src="~/Content/Scripts/plugins/mui/js/mui.indexedlist.js?v=1.3"></script>
  14. <script src="https://cdn.staticfile.org/vue-resource/1.5.1/vue-resource.min.js"></script>
  15. <body class="mui-fullscreen">
  16. <style>
  17. .onselect {
  18. padding: 0 20px;
  19. font-size: 14px;
  20. font-weight: 600;
  21. }
  22. .mui-indexed-list-bar {
  23. background-color: white;
  24. }
  25. .mui-indexed-list-bar.active {
  26. background-color: white !important;
  27. }
  28. .mui-indexed-list-bar a {
  29. color: black;
  30. }
  31. .search_title {
  32. position: absolute;
  33. left: 40px;
  34. border-bottom: none;
  35. width: 82%;
  36. }
  37. .mui-indexed-list {
  38. border-width: 0px;
  39. }
  40. .mui-search .mui-placeholder {
  41. font-size: 13px;
  42. }
  43. .hot_class {
  44. display: inline-block;
  45. line-height: 0.4rem;
  46. padding: 12px 23px;
  47. border-radius: 6px;
  48. color: #000;
  49. margin: 5px;
  50. font-size: 13px;
  51. text-align: center;
  52. list-style: none;
  53. border: solid 1px #dcd9d9;
  54. }
  55. .hot_active {
  56. color: #00aaff;
  57. }
  58. </style>
  59. <div id="vue">
  60. <!--页面主结构开始-->
  61. <div id="app" class="mui-views">
  62. <div class="mui-view">
  63. <div class="mui-navbar">
  64. </div>
  65. <div class="mui-pages">
  66. </div>
  67. </div>
  68. </div>
  69. <div id="SelectNew" class="mui-page">
  70. <!--页面标题栏开始-->
  71. <div class="mui-navbar-inner mui-bar mui-bar-nav">
  72. <button type="button" class="mui-left mui-action-back mui-btn mui-btn-link mui-btn-nav mui-pull-left">
  73. <span class="mui-icon mui-icon-left-nav"></span>
  74. </button>
  75. <h1 class="mui-center mui-title">请选择项目</h1>
  76. </div>
  77. <!--页面标题栏结束-->
  78. <!--页面主内容区开始-->
  79. <div id="modal" class="mui-page-content">
  80. <div id="list" class="mui-indexed-list">
  81. <div>
  82. <div class="mui-indexed-list-search mui-input-row mui-search ">
  83. <input type="search" class="mui-input-clear mui-indexed-list-search-input" placeholder="搜索项目名称/简码">
  84. </div>
  85. </div>
  86. <div class="mui-indexed-list-bar">
  87. <a v-if="ProjectSelectName">已选</a>
  88. <a>历史</a>
  89. <a v-for="item in ProjectIndex">{{item.Index}}</a>
  90. </div>
  91. <div class="mui-indexed-list-alert"></div>
  92. <div class="mui-indexed-list-inner">
  93. <div class="mui-indexed-list-empty-alert">没有数据</div>
  94. <ul class="mui-table-view" style="margin-top:0;padding-right: 23px;">
  95. <template v-if="ProjectSelectName">
  96. <li data-group="已选" class="mui-table-view-divider mui-indexed-list-group">已选项目</li>
  97. <li class="hot_class hot_active">{{ProjectSelectName}}</li>
  98. </template>
  99. <li data-group="历史" class="mui-table-view-divider mui-indexed-list-group">历史记录</li>
  100. <li v-if="UserHistoryProject.length>0"
  101. v-on:click="ProjectChooseCompleteHis(item.split('|'))"
  102. v-for="item in UserHistoryProject" class="hot_class">{{item.split('|')[1]}}</li>
  103. <li v-if="!UserHistoryProject.length" class="hot_class">暂无</li>
  104. <template v-for="item in ProjectIndex">
  105. <li v-bind:data-group="item.Index" class="mui-table-view-divider mui-indexed-list-group">{{item.Index}}</li>
  106. <li v-bind:class="project.ID==ProjectSelect?'hot_active':''" v-on:click="ProjectChooseComplete(project)" v-for="project in item.Data" v-bind:data-value="project.CodeName" v-bind:data-tags="project.CodeName" class="mui-table-view-cell mui-indexed-list-item">
  107. {{project.Name}}
  108. </li>
  109. </template>
  110. </ul>
  111. </div>
  112. </div>
  113. </div>
  114. <!--页面主内容区结束-->
  115. </div>
  116. </div>
  117. <script >
  118. var PersonProperty = '@ViewBag.PersonProperty';
  119. var ProjectId = '@ViewBag.ProjectId';
  120. var OrgID = '@ViewBag.OrgID';
  121. "use strict";
  122. var vm = new Vue({
  123. el: '#vue',
  124. data: {
  125. //选择的项目
  126. ProjectSelect: '',
  127. //已选项目名称
  128. ProjectSelectName: '',
  129. ///项目人员选择的机构
  130. institutionSele: "",
  131. //已选机构名称
  132. institutionSeleName: "",
  133. ///项目人员选择的处理状态
  134. DealStatus: 2,
  135. viewApi: null,
  136. //项目索引列表
  137. ProjectIndex: null,
  138. //用户的登记的历史项目
  139. UserHistoryProject: []
  140. },
  141. watch: {
  142. ProjectIndex: function ProjectIndex(newProject, oldProject) {
  143. var that = this;
  144. this.$nextTick(function () {
  145. that.InitIndexSelect();
  146. });
  147. }
  148. },
  149. methods: {
  150. ///初始化页面
  151. init: function init() {
  152. var that = this;
  153. mui.init(); ///判断是否为机构管理员
  154. var defaultPages = '#SelectNew';
  155. if (PersonProperty == 4) {
  156. this.institutionSele = OrgID;
  157. this.ProjectSelect = ProjectId;
  158. } //初始化单页view
  159. that.viewApi = mui('#app').view({
  160. defaultPage: defaultPages
  161. });
  162. mui('.mui-scroll-wrapper').scroll(); //处理view的后退与webview后退
  163. var oldBack = mui.back;
  164. var view = that.viewApi.view;
  165. mui.back = function () {
  166. if (that.viewApi.canBack()) {
  167. //如果view可以后退,则执行view的后退
  168. that.viewApi.back();
  169. } else {
  170. //执行webview后退
  171. oldBack();
  172. }
  173. };
  174. },
  175. //初始化索引列表
  176. InitIndexSelect: function InitIndexSelect() {
  177. var header = document.querySelector('.mui-navbar-inner');
  178. var list = document.getElementById('list');
  179. var modal = document.getElementById('modal'); //calc hieght
  180. list.style.height = modal.offsetHeight + 'px'; //create
  181. window.indexedList = new mui.IndexedList(list);
  182. },
  183. //获取项目索引列表
  184. GetProjectIndex: function GetProjectIndex() {
  185. var that = this;
  186. $.get("/MobileProblem/GetChannelProjectIndexByCode", {}, function (data) {
  187. that.ProjectIndex = data;
  188. });
  189. },
  190. //索引选择项目
  191. ProjectChooseComplete: function ProjectChooseComplete(project) {
  192. this.ProjectSelect = project.ID;
  193. this.ProjectSelectName = project.Name;
  194. this.AddHistoryProject(project);
  195. setCookie("UserMobileSmart", JSON.stringify({ ProjectSelect: this.ProjectSelect, ProjectSelectName: this.ProjectSelectName }), 3);
  196. mui.openWindow({
  197. url: '/SmartForm/MobileSmart'
  198. });
  199. },
  200. //从历史中选择
  201. ProjectChooseCompleteHis: function ProjectChooseCompleteHis(projectIn) {
  202. var project = {
  203. ID: projectIn[0],
  204. Name: projectIn[1]
  205. };
  206. this.ProjectSelect = project.ID;
  207. this.ProjectSelectName = project.Name;
  208. this.AddHistoryProject(project);
  209. setCookie("UserMobileSmart", JSON.stringify({ ProjectSelect: this.ProjectSelect, ProjectSelectName: this.ProjectSelectName }), 3);
  210. mui.openWindow({
  211. url: '/SmartForm/MobileSmart'
  212. });
  213. },
  214. //获取历史登记项目
  215. GetHistoryProject: function GetHistoryProject() {
  216. var UserHistoryProject = getCookie("UserHistoryProject");
  217. if (UserHistoryProject) {
  218. this.UserHistoryProject = JSON.parse(UserHistoryProject);
  219. }
  220. },
  221. //增加历史登记项目
  222. AddHistoryProject: function AddHistoryProject(projectIn) {
  223. var project = projectIn.ID + "|" + projectIn.Name;
  224. var UserHistoryProject = getCookie("UserHistoryProject");
  225. if (UserHistoryProject) {
  226. var OldKeys = JSON.parse(UserHistoryProject);
  227. var findIndex = OldKeys.indexOf(project);
  228. if (findIndex == -1) {
  229. OldKeys.unshift(project);
  230. } else {
  231. OldKeys.splice(findIndex, 1);
  232. OldKeys.unshift(project);
  233. } //最多5个纪录
  234. OldKeys.length > 5 && OldKeys.pop();
  235. setCookie("UserHistoryProject", JSON.stringify(OldKeys), 3);
  236. this.UserHistoryProject = OldKeys; //更新历史搜索
  237. } else {
  238. var OldKeys = [project];
  239. setCookie("UserHistoryProject", JSON.stringify(OldKeys), 3);
  240. this.UserHistoryProject = OldKeys; //更新历史搜索
  241. }
  242. },
  243. },
  244. computed: {
  245. },
  246. mounted: function mounted() {
  247. this.init();
  248. this.GetHistoryProject();
  249. this.GetProjectIndex();
  250. }
  251. });
  252. </script>
  253. </body>