ProjectList.vue 5.9 KB

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