CompleteProjectList.vue 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. <template>
  2. <div>
  3. <TraceHeader :type="'traceProject'" />
  4. <div>
  5. <div>
  6. <QueryWidget
  7. ref="queryWidget"
  8. @search="getDatas()"
  9. @value-changed="getDatas()"
  10. />
  11. <p
  12. v-if="projectList == null || projectList.length == 0" class="bg-danger"
  13. style="padding: 15px; margin-top:15px"
  14. >
  15. 您参与的项目都在进行中
  16. </p>
  17. <div
  18. class="row"
  19. style="margin-top: 10px;"
  20. >
  21. <div
  22. v-for="item in projectList"
  23. :key="item.id"
  24. class="col-md-4"
  25. >
  26. <div
  27. class="panel panel-default"
  28. @click="openLine(item)"
  29. >
  30. <div
  31. class="panel-body"
  32. style="height:70px;"
  33. >
  34. <div>
  35. <div>{{ item.name }}</div>
  36. <div>
  37. <span>{{ item.no }}</span>
  38. <span
  39. v-if="item.admin"
  40. style="color:green"
  41. >
  42. 参与中
  43. </span>
  44. </div>
  45. </div>
  46. </div>
  47. </div>
  48. </div>
  49. </div>
  50. <div class="row">
  51. <div class="col-md-12">
  52. <Pagination
  53. :pagination="pagination"
  54. :callback="getDatas"
  55. />
  56. </div>
  57. </div>
  58. <hr />
  59. <button
  60. type="button"
  61. class="btn btn-link"
  62. @click="isTheArchive"
  63. >
  64. 进行中的项目
  65. </button>
  66. </div>
  67. <h3>&nbsp;</h3>
  68. </div>
  69. </div>
  70. </template>
  71. <script>
  72. var Common = require('../common/Common.js');
  73. var Uuid = require('pc-component-v3').default.Uuid;
  74. import QueryWidget from '../widget/QueryWidget.vue';
  75. import TraceHeader from './TraceHeader.vue';
  76. var Pagination = require('pc-component-v3').default.VueBootstrapPagination;;
  77. var Navbar = require('pc-component-v3').default.Navbar;
  78. export default {
  79. components: {
  80. Pagination, QueryWidget, Navbar, TraceHeader,
  81. },
  82. data: function () {
  83. return {
  84. input: '',
  85. searchText: '',
  86. userId: '',
  87. range: {
  88. start: 0,
  89. length: 30,
  90. },
  91. totalSize: 1,
  92. projectList: [],
  93. pagination: {
  94. total: 0,
  95. //per_page: Common.pageSize, // required
  96. per_page: 30, // required
  97. current_page: 1, // required
  98. last_page: 10, // required
  99. },
  100. traceState: undefined,
  101. traceStatus: undefined,
  102. traceUserStatus: undefined,
  103. };
  104. },
  105. mounted: function () {
  106. var uuid = this.$route.params.uuid;
  107. if (uuid != null && uuid != undefined) {
  108. var str = localStorage.getItem(uuid);
  109. if (str != null) {
  110. var object = JSON.parse(str);
  111. var userId = JSON.parse(localStorage.json_LoginInfo).userId;
  112. if (object.traceState != undefined) {
  113. this.traceState = object.traceState;
  114. }
  115. if (object.traceStatus != undefined) {
  116. this.traceStatus = object.traceStatus;
  117. }
  118. if (object.traceUserStatus != undefined) {
  119. this.traceUserStatus = object.traceUserStatus;
  120. }
  121. }
  122. }
  123. this.getDatas();
  124. },
  125. methods: {
  126. /**
  127. * 查询数据
  128. * @author ZhangTeng 20190220
  129. */
  130. getDatas: function () {
  131. var _self = this;
  132. _self.range = {
  133. start: (_self.pagination.current_page - 1) * _self.pagination.per_page,
  134. length: _self.pagination.per_page,
  135. };
  136. var queryParam = {
  137. range: _self.range,
  138. condition: _self.$refs.queryWidget.getSearchText(),
  139. };
  140. $.ajax({
  141. url: Common.getApiURL('ProjectItemUserResource/queryProjectItemUserDto2'),
  142. type: 'post',
  143. dataType: 'json',
  144. contentType: 'application/json',
  145. data: JSON.stringify(queryParam),
  146. beforeSend: function (request) {
  147. Common.addTokenToRequest(request);
  148. },
  149. success: function (data) {
  150. _self.projectList = data.dataList;
  151. _self.pagination.total = data.totalSize;
  152. _self.pagination.last_page = ((data.totalSize % data.range.length) == 0) ? (data.totalSize / data.range.length) : (Math.floor(data.totalSize / data.range.length) + 1);
  153. },
  154. error: function (XMLHttpRequest, textStatus, errorThrown) {
  155. Common.processException(XMLHttpRequest, textStatus, errorThrown);
  156. },
  157. });
  158. },
  159. /**
  160. * 显示归档/未归档的项目
  161. */
  162. isTheArchive: function () {
  163. let routeData = this.$router.push({path: '/trace/projectList'});
  164. window.open(routeData.href, '_blank');
  165. },
  166. /**
  167. * 打开明细
  168. */
  169. openLine: function (obj) {
  170. var uuid = Uuid.createUUID();
  171. var _self = this;
  172. this.$router.push(
  173. {
  174. path: '/trace/notFinishedProjectTraces/' + obj.id,
  175. query:
  176. {
  177. projectName: obj.name,
  178. },
  179. });
  180. },
  181. open: function () {
  182. history.back();
  183. },
  184. },
  185. };
  186. </script>
  187. <style scoped>
  188. .mui-card {
  189. margin: 0px;
  190. margin-top: 1px;
  191. }
  192. .mui-card-footer:before,
  193. .mui-card-header:after {
  194. background-color: #ffffff;
  195. }
  196. .mui-card-content {
  197. padding: 0px 10px;
  198. }
  199. .mui-card-content p {
  200. margin: 0px;
  201. }
  202. p {
  203. font-size: 14px !important;
  204. padding: 2px 0px;
  205. color: #000000;
  206. }
  207. .time {
  208. /*color: #8f8f94;*/
  209. font-weight: bold;
  210. }
  211. .index {
  212. font-size: 16px;
  213. font-weight: bold;
  214. }
  215. .div-statis {
  216. margin-bottom: 5px;
  217. font-size: 0.8em;
  218. text-align: center;
  219. }
  220. .divs {
  221. margin-top: 2%;
  222. margin-left: 39%;
  223. }
  224. .div {
  225. word-wrap: break-word;
  226. white-space: normal;
  227. font-size: 20px;
  228. }
  229. .div1 {
  230. padding-left: 10%;
  231. color: blue;
  232. }
  233. .div2 {
  234. color: cadetblue;
  235. }
  236. .img {
  237. height: 33px;
  238. width: 38px;
  239. }
  240. </style>