index.vue 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. <template>
  2. <div class="project org">
  3. <ProjectMenu cur-key="org/project" />
  4. <div class="project-list">
  5. <el-table :data="list">
  6. <el-table-column label="序号" width="60" align="center" header-align="center" class-name="index-column">
  7. <template slot-scope="{ $index }">
  8. {{ cur_page_begin_index + $index }}
  9. </template>
  10. </el-table-column>
  11. <el-table-column prop="sn" label="编号" width="140" header-align="center" />
  12. <el-table-column prop="name" label="名称" width="260" header-align="center" />
  13. <el-table-column prop="version" label="版本" width="100" header-align="center" />
  14. <el-table-column prop="org_name" label="所属机构" width="120" header-align="center" />
  15. <el-table-column prop="leader_name_desc" label="项目组长" width="140" header-align="center" />
  16. <el-table-column prop="create_time" label="创建时间" width="180" header-align="center" />
  17. <el-table-column prop="content_count_SJ" label="教材页面数" width="100" header-align="center" />
  18. <el-table-column prop="status_name" label="状态" width="120" header-align="center" />
  19. <el-table-column prop="request_status_name" label="申请状态" header-align="center" />
  20. <el-table-column fixed="right" label="操作" width="350" align="center" header-align="center">
  21. <template slot-scope="{ row }">
  22. <span
  23. class="link"
  24. @click="
  25. $router.push({
  26. path: `/personal_workbench/project_info/${row.id}`,
  27. query: { isManage: false, backPath: '/project_manage/org/project' },
  28. })
  29. "
  30. >查看信息</span
  31. >
  32. <span class="link" @click="previewProject(row.id)">预览项目</span>
  33. <template v-if="isTrue(row.is_can_audit)">
  34. <span class="link" @click="projectAuditOperate(row.id, 'true', row.request_status)"> 审核通过 </span>
  35. <span class="link" @click="projectAuditOperate(row.id, 'false', row.request_status)">审核拒绝</span>
  36. </template>
  37. </template>
  38. </el-table-column>
  39. </el-table>
  40. <PaginationPage ref="pagination" :total="total" @getList="pageQueryProjectList_OrgManager" />
  41. </div>
  42. </div>
  43. </template>
  44. <script>
  45. import PaginationPage from '@/components/PaginationPage.vue';
  46. import ProjectMenu from '@/views/project_manage/common/ProjectMenu.vue';
  47. import { PageQueryProjectList_OrgManager } from '@/api/list';
  48. import { isTrue } from '@/utils/validate';
  49. import { ProjectAuditOperate } from '@/api/project';
  50. export default {
  51. name: 'OrgProjectPage',
  52. components: {
  53. PaginationPage,
  54. ProjectMenu,
  55. },
  56. data() {
  57. return {
  58. list: [],
  59. total: 0,
  60. cur_page_begin_index: 0,
  61. isTrue,
  62. };
  63. },
  64. methods: {
  65. /**
  66. * 项目审核操作
  67. * @param {number} project_id 项目id
  68. * @param {string} is_pass 是否审核通过,true-审核通过,false-审核拒绝
  69. * @param {string} request_status 申请状态
  70. */
  71. projectAuditOperate(project_id, is_pass, request_status) {
  72. console.log(request_status);
  73. this.$confirm(`确定要执行${is_pass === 'true' ? '审核通过' : '审核拒绝'}吗?`, '提示', {
  74. confirmButtonText: '确定',
  75. cancelButtonText: '取消',
  76. })
  77. .then(() => {
  78. let loading = null;
  79. if (request_status === 3) {
  80. loading = this.$loading({
  81. text: '正在生成新的修订项目,请等待...',
  82. });
  83. }
  84. ProjectAuditOperate({ project_id, is_pass })
  85. .then(() => {
  86. this.$message.success('操作成功');
  87. this.$refs.pagination.getList();
  88. })
  89. .catch(() => {})
  90. .finally(() => {
  91. if (loading) {
  92. loading.close();
  93. }
  94. });
  95. })
  96. .catch(() => {});
  97. },
  98. pageQueryProjectList_OrgManager(data) {
  99. PageQueryProjectList_OrgManager({ ...data, status: -1 })
  100. .then(({ total_count, cur_page_begin_index, project_list }) => {
  101. this.total = total_count;
  102. this.cur_page_begin_index = cur_page_begin_index;
  103. this.list = project_list;
  104. })
  105. .catch(() => {});
  106. },
  107. previewProject(projectId) {
  108. this.$router.push({ path: `/project_manage/org/project/preview/${projectId}` });
  109. },
  110. },
  111. };
  112. </script>
  113. <style lang="scss" scoped>
  114. @use '@/styles/mixin.scss' as *;
  115. .project {
  116. @include page-base;
  117. @include table-list;
  118. }
  119. </style>