| @@ -903,7 +903,7 @@ func RegisterRoutes(m *macaron.Macaron) { | |||
| m.Get("/tech_view", tech.TechView) | |||
| m.Get("/repo_view", tech.RepoView) | |||
| m.Get("/admin_view", tech.AdminView) | |||
| m.Get("/my_view", tech.AdminView) | |||
| m.Get("/my_view", tech.MyView) | |||
| }, reqSignIn) | |||
| @@ -0,0 +1,5 @@ | |||
| {{template "base/head_home" .}} | |||
| <link rel="stylesheet" href="{{StaticUrlPrefix}}/css/vp-tech-myview.css?v={{MD5 AppVer}}" /> | |||
| <div id="__vue-root"></div> | |||
| <script src="{{StaticUrlPrefix}}/js/vp-tech-myview.js?v={{MD5 AppVer}}"></script> | |||
| {{template "base/footer" .}} | |||
| @@ -79,6 +79,19 @@ export const getTechOpenISearch = (params) => { | |||
| }); | |||
| } | |||
| // 我申请的项目列表 | |||
| // 输入 page,pageSize | |||
| // 返回 {"total":10,"data":[{}]} | |||
| // data: {id:记录的id,name:启智项目名称,owner_name:启智项目拥有者名称,tech_name:科技项目名称,tech_number:科技项目编号,institution:项目承担单位, | |||
| // execute_period:执行周期,contact:联系人,contact_phone:联系电话,contact_email:联系邮件,apply_user:申请账号,status:状态} | |||
| export const getTechMyList = (params) => { | |||
| return service({ | |||
| url: '/api/v1/tech/my', | |||
| method: 'get', | |||
| params: params, | |||
| }); | |||
| } | |||
| // 后台管理项目列表 | |||
| // 输入 page,pageSize | |||
| // 返回 {"total":10,"data":[{}]} | |||
| @@ -97,9 +110,11 @@ export const getTechAdminList = (params) => { | |||
| // 返回 { code:0, message:"" } | |||
| export const setTechAdminOperation = (data) => { | |||
| return service({ | |||
| url: `/api/v1/tech/admin/action/${data.type}`, | |||
| url: `/api/v1/tech/admin/${data.type}`, | |||
| method: 'post', | |||
| data: data.id, | |||
| data: { | |||
| id: data.id | |||
| }, | |||
| params: {}, | |||
| }); | |||
| } | |||
| @@ -1,10 +1,11 @@ | |||
| <template> | |||
| <div> | |||
| <TopHeader :menu="'admin_view'"></TopHeader> | |||
| <div class="ui container"> | |||
| <div class="top-container"> | |||
| <el-checkbox class="check-toggle" v-model="allChecked" @change="allSelectChange">全选/全不选</el-checkbox> | |||
| <el-button class="btn-agree">批量同意展示</el-button> | |||
| <el-button class="btn-cancel">批量取消展示</el-button> | |||
| <el-button class="btn-agree" @click="batchOperate(true)">批量同意展示</el-button> | |||
| <el-button class="btn-cancel" @click="batchOperate(false)">批量取消展示</el-button> | |||
| </div> | |||
| <div class="table-container"> | |||
| <div class="table-title">2030科技项目管理</div> | |||
| @@ -15,19 +16,93 @@ | |||
| <el-checkbox v-model="scope.row.checked" @change="rowSelectChange(scope.row)"></el-checkbox> | |||
| </template> | |||
| </el-table-column> | |||
| <el-table-column prop="name" label="启智项目名称" align="center" header-align="center" fixed></el-table-column> | |||
| <el-table-column prop="tech_name" label="科技项目名称" align="center" header-align="center" | |||
| fixed></el-table-column> | |||
| <el-table-column prop="status" label="展示状态" align="center" header-align="center" fixed></el-table-column> | |||
| <el-table-column prop="tech_number" label="项目立项编号" align="center" header-align="center"></el-table-column> | |||
| <el-table-column prop="institution" label="项目承担单位" align="center" header-align="center"></el-table-column> | |||
| <el-table-column prop="execute_period" label="执行周期" align="center" header-align="center"></el-table-column> | |||
| <el-table-column prop="contact" label="联系人" align="center" header-align="center"></el-table-column> | |||
| <el-table-column prop="contact_phone" label="电话" align="center" header-align="center"></el-table-column> | |||
| <el-table-column prop="apply_user" label="申请账号" align="center" header-align="center"></el-table-column> | |||
| <el-table-column prop="" label="操作" align="center" header-align="center" fixed="right"></el-table-column> | |||
| <el-table-column label="启智项目名称" align="center" header-align="center" fixed min-width="150"> | |||
| <template slot-scope="scope"> | |||
| <a target="_blank" :href="`/${scope.row.repo_owner_name}/${scope.row.repo_name}`">{{ | |||
| `${scope.row.repo_owner_name}/${scope.row.repo_name}` }}</a> | |||
| </template> | |||
| </el-table-column> | |||
| <el-table-column prop="name" label="科技项目名称" align="center" header-align="center" fixed | |||
| min-width="200"></el-table-column> | |||
| <el-table-column prop="status" label="展示状态" align="center" header-align="center" fixed> | |||
| <template slot-scope="scope"> | |||
| <span style="color:rgb(255, 37, 37)" | |||
| :style="scope.row.status == 1 ? { color: 'rgb(56, 158, 13)' } : ''">{{ | |||
| statusMap[scope.row.status] }}</span> | |||
| </template> | |||
| </el-table-column> | |||
| <el-table-column prop="no" label="项目立项编号" align="center" header-align="center" | |||
| min-width="120"></el-table-column> | |||
| <el-table-column prop="institution" label="项目承担单位" align="center" header-align="center" | |||
| min-width="160"></el-table-column> | |||
| <el-table-column prop="province" label="所属省(省市)" align="center" header-align="center" | |||
| min-width="100"></el-table-column> | |||
| <el-table-column prop="category" label="单位性质" align="center" header-align="center" | |||
| min-width="120"></el-table-column> | |||
| <el-table-column prop="recommend" label="推荐单位" align="center" header-align="center" | |||
| min-width="120"></el-table-column> | |||
| <el-table-column prop="owner" label="项目负责人" align="center" header-align="center" | |||
| min-width="100"></el-table-column> | |||
| <el-table-column prop="phone" label="负责人电话" align="center" header-align="center" | |||
| min-width="120"></el-table-column> | |||
| <el-table-column prop="email" label="负责人邮箱" align="center" header-align="center" | |||
| min-width="150"></el-table-column> | |||
| <el-table-column prop="contact" label="项目联系人" align="center" header-align="center" | |||
| min-width="100"></el-table-column> | |||
| <el-table-column prop="contact_phone" label="联系人电话" align="center" header-align="center" | |||
| min-width="120"></el-table-column> | |||
| <el-table-column prop="contact_email" label="联系人邮箱" align="center" header-align="center" | |||
| min-width="150"></el-table-column> | |||
| <el-table-column prop="apply_year" label="申报年度" align="center" header-align="center" | |||
| min-width="80"></el-table-column> | |||
| <el-table-column prop="execute_month" label="执行周期(月)" align="center" header-align="center" | |||
| min-width="120"></el-table-column> | |||
| <el-table-column prop="execute_period" label="执行期限" align="center" header-align="center" | |||
| min-width="120"></el-table-column> | |||
| <el-table-column prop="type" label="项目类型" align="center" header-align="center" | |||
| min-width="100"></el-table-column> | |||
| <el-table-column prop="start_up" label="启动会时间" align="center" header-align="center" | |||
| min-width="100"></el-table-column> | |||
| <el-table-column prop="number_topic" label="课题数量" align="center" header-align="center" | |||
| min-width="80"></el-table-column> | |||
| <el-table-column prop="topic1" label="课题一级名称及承担单位" align="center" header-align="center" | |||
| min-width="200"></el-table-column> | |||
| <el-table-column prop="topic2" label="课题二级名称及承担单位" align="center" header-align="center" | |||
| min-width="200"></el-table-column> | |||
| <el-table-column prop="topic3" label="课题三级名称及承担单位" align="center" header-align="center" | |||
| min-width="200"></el-table-column> | |||
| <el-table-column prop="topic4" label="课题四级名称及承担单位" align="center" header-align="center" | |||
| min-width="200"></el-table-column> | |||
| <el-table-column prop="topic5" label="课题五级名称及承担单位" align="center" header-align="center" | |||
| min-width="200"></el-table-column> | |||
| <el-table-column prop="all_institution" label="所有参与单位" align="center" header-align="center" | |||
| min-width="300"></el-table-column> | |||
| <el-table-column prop="contribution_institution" label="成果贡献单位" align="center" header-align="center" | |||
| min-width="300"></el-table-column> | |||
| <el-table-column prop="user_name" label="申请账号" align="center" header-align="center" width="120"> | |||
| <template slot-scope="scope"> | |||
| <a target="_blank" :href="`/${scope.row.user_name}`">{{ | |||
| `${scope.row.user_name}` }}</a> | |||
| </template> | |||
| </el-table-column> | |||
| <el-table-column prop="" label="操作" align="center" header-align="center" fixed="right" width="100"> | |||
| <template slot-scope="scope"> | |||
| <span v-if="scope.row.status == 2" class="op-btn agree" @click="toggleStatus(scope.row)"> | |||
| <i class="el-icon-check"></i> | |||
| <span>同意展示</span> | |||
| </span> | |||
| <span v-if="scope.row.status == 1" class="op-btn cancel" @click="toggleStatus(scope.row)"> | |||
| <i class="el-icon-close"></i> | |||
| <span>取消展示</span> | |||
| </span> | |||
| </template> | |||
| </el-table-column> | |||
| </el-table> | |||
| </div> | |||
| <div class="op-tips"> | |||
| <i class="el-icon-info"></i> | |||
| 提示:批量操作只会对【展示状态】为 “未展示” 或 “已展示” 的数据生效。 | |||
| </div> | |||
| <div class="center"> | |||
| <el-pagination ref="paginationRef" background @current-change="currentChange" @size-change="sizeChange" | |||
| :current-page.sync="page" :page-sizes="pageSizes" :page-size.sync="pageSize" | |||
| @@ -40,6 +115,7 @@ | |||
| </template> | |||
| <script> | |||
| import TopHeader from '../components/TopHeader.vue'; | |||
| import { getTechAdminList, setTechAdminOperation } from '~/apis/modules/tech'; | |||
| export default { | |||
| @@ -53,9 +129,17 @@ export default { | |||
| pageSizes: [15, 30, 50, 100], | |||
| pageSize: 50, | |||
| total: 0, | |||
| statusMap: { | |||
| '1': '已展示', | |||
| '2': '未展示', | |||
| '3': '项目迁移中', | |||
| '4': '项目迁移失败', | |||
| '5': '项目不存在', | |||
| }, | |||
| }; | |||
| }, | |||
| components: {}, | |||
| components: { TopHeader }, | |||
| methods: { | |||
| getData() { | |||
| this.loading = true; | |||
| @@ -68,10 +152,10 @@ export default { | |||
| this.tableData = data.map((item, index) => { | |||
| return { | |||
| checked: false, | |||
| id: 'id' + Math.random(), | |||
| ...item, | |||
| } | |||
| }); | |||
| this.allChecked = false; | |||
| this.total = total; | |||
| }).catch(err => { | |||
| this.loading = false; | |||
| @@ -102,29 +186,74 @@ export default { | |||
| this.pageSize = pageSize; | |||
| this.getData(); | |||
| }, | |||
| toggleStatus(row) { | |||
| if (row.status != 1 && row.status != 2) return; | |||
| setTechAdminOperation({ | |||
| type: row.status == 1 ? 'hide' : 'show', | |||
| id: [row.id], | |||
| }).then(res => { | |||
| res = res.data; | |||
| if (res.Code == 0) { | |||
| this.$message({ | |||
| type: 'success', | |||
| message: this.$t('submittedSuccessfully'), | |||
| }); | |||
| row.status = row.status == 1 ? 2 : 1; | |||
| } else { | |||
| this.$message({ | |||
| type: 'error', | |||
| message: this.$t('submittedFailed'), | |||
| }); | |||
| } | |||
| }).catch(err => { | |||
| console.log(err); | |||
| this.$message({ | |||
| type: 'error', | |||
| message: this.$t('submittedFailed'), | |||
| }); | |||
| }); | |||
| }, | |||
| batchOperate(showOr) { | |||
| const selectedData = this.tableData.filter((item) => { | |||
| return item.checked && item.status == (showOr ? 2 : 1); | |||
| }); | |||
| if (!selectedData.length) { | |||
| this.$message({ | |||
| type: 'info', | |||
| message: '请选择符合条件的数据进行操作!', | |||
| }); | |||
| return; | |||
| } | |||
| setTechAdminOperation({ | |||
| type: showOr ? 'show' : 'hide', | |||
| id: selectedData.map(item => item.id), | |||
| }).then(res => { | |||
| res = res.data; | |||
| if (res.Code == 0) { | |||
| this.$message({ | |||
| type: 'success', | |||
| message: this.$t('submittedSuccessfully'), | |||
| }); | |||
| this.getData(); | |||
| } else { | |||
| this.$message({ | |||
| type: 'error', | |||
| message: this.$t('submittedFailed'), | |||
| }); | |||
| } | |||
| }).catch(err => { | |||
| console.log(err); | |||
| this.$message({ | |||
| type: 'error', | |||
| message: this.$t('submittedFailed'), | |||
| }); | |||
| }); | |||
| }, | |||
| }, | |||
| beforeMount() { | |||
| this.getData(); | |||
| }, | |||
| mounted() { | |||
| this.tableData = new Array(15).fill(0).map((item, index) => { | |||
| return { | |||
| id: '记录的id-' + index, | |||
| name: '启智项目名称-' + index, | |||
| owner_name: '启智项目拥有者名称-' + index, | |||
| tech_name: '科技项目名称-' + index, | |||
| tech_number: '科技项目编号-' + index, | |||
| institution: '项目承担单位-' + index, | |||
| execute_period: '执行周期-' + index, | |||
| contact: '联系人-' + index, | |||
| contact_phone: '联系电话-' + index, | |||
| contact_email: '联系邮件-' + index, | |||
| apply_user: '申请账号-' + index, | |||
| status: '状态-' + index, | |||
| } | |||
| }); | |||
| this.total = this.tableData.length; | |||
| }, | |||
| mounted() { }, | |||
| beforeDestroy() { }, | |||
| }; | |||
| </script> | |||
| @@ -133,7 +262,7 @@ export default { | |||
| .top-container { | |||
| display: flex; | |||
| align-items: center; | |||
| margin: 15px 0; | |||
| margin: 30px 0 15px 0; | |||
| .check-toggle { | |||
| margin-right: 20px; | |||
| @@ -185,7 +314,6 @@ export default { | |||
| } | |||
| .table-wrap { | |||
| margin-bottom: 12px; | |||
| overflow-x: auto; | |||
| /deep/ .el-table__header { | |||
| @@ -208,4 +336,26 @@ export default { | |||
| } | |||
| } | |||
| } | |||
| .op-tips { | |||
| margin: 10px 0 10px 0; | |||
| color: #606266; | |||
| font-size: 12px; | |||
| i { | |||
| margin-right: 4px; | |||
| } | |||
| } | |||
| .op-btn { | |||
| cursor: pointer; | |||
| &.agree { | |||
| color: rgb(56, 158, 13); | |||
| } | |||
| &.cancel { | |||
| color: rgb(50, 145, 248); | |||
| } | |||
| } | |||
| </style> | |||
| @@ -76,9 +76,7 @@ export default { | |||
| }, | |||
| components: {}, | |||
| data() { | |||
| return { | |||
| }; | |||
| return {}; | |||
| }, | |||
| methods: { | |||
| calcFromNow(unix) { | |||
| @@ -5,11 +5,9 @@ | |||
| <div class="search-input-c"> | |||
| <input type="text" :placeholder="serchPlaceHolder" v-model="keyword" @keyup.enter="search"> | |||
| </div> | |||
| <div class="search-btn" @click="search">搜索</div> | |||
| <div class="search-btn" @click="search">{{ $t('repos.search') }}</div> | |||
| </div> | |||
| <el-button class="apply-btn" type="primary" icon="el-icon-plus" size="medium" @click="apply">申请展示项目</el-button> | |||
| <el-button class="apply-btn" type="primary" icon="el-icon-s-management" size="medium" v-if="isTechAdmin" | |||
| @click="manage">管理展示项目</el-button> | |||
| <div class="openi-link-c"> | |||
| <a class="openi-link" target="_blank" href="javascript:;">OpenI启智社区开源指南</a> | |||
| </div> | |||
| @@ -23,7 +21,6 @@ | |||
| </template> | |||
| <script> | |||
| import { getIsTechAdmin } from '~/apis/modules/tech'; | |||
| export default { | |||
| name: "SearchBar", | |||
| @@ -39,7 +36,7 @@ export default { | |||
| sortType: '', | |||
| techSortList: [{ | |||
| k: 'time', | |||
| v: '最近更新', | |||
| v: this.$t('repos.recentlyUpdated'), | |||
| }, { | |||
| k: 'count', | |||
| v: '项目成果数', | |||
| @@ -47,13 +44,13 @@ export default { | |||
| repoSortList: [ | |||
| { | |||
| k: 'mostpopular', | |||
| v: '近期热门', | |||
| v: this.$t('repos.mostPopular'), | |||
| }, { | |||
| k: 'recentupdate', | |||
| v: '最近更新', | |||
| v: this.$t('repos.recentlyUpdated'), | |||
| }, { | |||
| k: 'newest', | |||
| v: '最近创建', | |||
| v: this.$t('repos.newest'), | |||
| } | |||
| ], | |||
| sortList: [], | |||
| @@ -96,14 +93,6 @@ export default { | |||
| this.serchPlaceHolder = '搜索项目名称/简介/标签'; | |||
| this.sortList = this.repoSortList; | |||
| } | |||
| getIsTechAdmin().then(res => { | |||
| res = res.data; | |||
| if (res.data && res.data.is_admin) { | |||
| this.isTechAdmin = true; | |||
| } | |||
| }).catch(err => { | |||
| console.log(err); | |||
| }); | |||
| }, | |||
| mounted() { }, | |||
| }; | |||
| @@ -24,7 +24,7 @@ import TopMenu from './TopMenu.vue'; | |||
| export default { | |||
| name: "TopHeader", | |||
| props: { | |||
| menu: { type: Number, default: -1 }, | |||
| menu: { type: String, default: '' }, | |||
| }, | |||
| components: { | |||
| TopMenu | |||
| @@ -2,49 +2,72 @@ | |||
| <div class="container ui" style="padding:0 75px;"> | |||
| <div class="menu"> | |||
| <div class="menu-l"> | |||
| <div class="menu-item" v-for="(item, index) in list" :key="index" :class="focusIndex == index ? 'focused' : ''" | |||
| @click="changeMenu(item, index)"> | |||
| <div class="menu-item" v-for="(item, index) in listL" :key="index" | |||
| :class="focusMenu == item.key ? 'focused' : ''" @click="changeMenu(item)"> | |||
| {{ item.title }} | |||
| </div> | |||
| </div> | |||
| <div class="menu-r"> | |||
| <div class="menu-item" v-for="(item, index) in listR" :key="index" | |||
| :class="focusMenu == item.key ? 'focused' : ''" @click="changeMenu(item)"> | |||
| {{ item.title }} | |||
| </div> | |||
| </div> | |||
| <div class="menu-r"></div> | |||
| </div> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| import { getIsTechAdmin } from '~/apis/modules/tech'; | |||
| export default { | |||
| name: "TopMenu", | |||
| props: { | |||
| menu: { type: Number, default: -1 }, | |||
| menu: { type: String, default: '' }, | |||
| }, | |||
| components: {}, | |||
| data() { | |||
| return { | |||
| focusIndex: 0, | |||
| list: [{ | |||
| focusMenu: '', | |||
| listL: [{ | |||
| key: 'tech_view', | |||
| title: '按科技项目查看', | |||
| url: '/tech/tech_view', | |||
| }, { | |||
| key: 'repo_view', | |||
| title: '按项目成果查看', | |||
| url: '/tech/repo_view', | |||
| },/* { | |||
| key: '', | |||
| }], | |||
| listR: [{ | |||
| key: 'my_view', | |||
| title: '我申请的项目', | |||
| url: '', | |||
| }*/], | |||
| url: '/tech/my_view', | |||
| },], | |||
| isTechAdmin: false, | |||
| }; | |||
| }, | |||
| methods: { | |||
| changeMenu(item, index) { | |||
| this.focusIndex = index; | |||
| this.focusMenu = item.key; | |||
| window.location.href = item.url; | |||
| } | |||
| }, | |||
| beforeMount() { | |||
| this.focusIndex = this.menu; | |||
| this.focusMenu = this.menu; | |||
| getIsTechAdmin().then(res => { | |||
| res = res.data; | |||
| if (res.data && res.data.is_admin) { | |||
| this.isTechAdmin = true; | |||
| this.listR.push({ | |||
| key: 'admin_view', | |||
| title: '管理展示项目', | |||
| url: '/tech/admin_view', | |||
| }); | |||
| } | |||
| }).catch(err => { | |||
| console.log(err); | |||
| }); | |||
| }, | |||
| mounted() { }, | |||
| }; | |||
| @@ -113,10 +113,9 @@ | |||
| <div class="form-row"> | |||
| <div class="row-label">请输入科技项目</div> | |||
| <div class="row-content"> | |||
| <el-input placeholder="请输入内容" size="medium" v-model="form.tech_search_keyword" | |||
| <el-input placeholder="请输入搜索内容" size="medium" v-model="form.tech_search_keyword" | |||
| @keyup.enter.native="searchTechList" class="input-with-select"> | |||
| <el-select v-model="form.tech_search_sel" style="width:142px" size="medium" slot="prepend" | |||
| placeholder="请选择"> | |||
| <el-select v-model="form.tech_search_sel" style="width:142px" size="medium" slot="prepend"> | |||
| <el-option label="项目立项编号" value="0"></el-option> | |||
| <el-option label="参与单位" value="1"></el-option> | |||
| <el-option label="项目名称" value="2"></el-option> | |||
| @@ -136,7 +135,7 @@ | |||
| width="200"></el-table-column> | |||
| <el-table-column prop="all_institution" label="所有参与单位" align="center" | |||
| header-align="center"></el-table-column> | |||
| <el-table-column width="100" label="操作" align="center" header-align="center"> | |||
| <el-table-column width="100" :label="$t('operation')" align="center" header-align="center"> | |||
| <template slot-scope="scope"> | |||
| <el-button type="primary" @click="selectedTechPrj(scope.row)">选择</el-button> | |||
| </template> | |||
| @@ -406,7 +405,7 @@ export default { | |||
| if (res.data && res.data.code == 0) { | |||
| this.$message({ | |||
| type: 'success', | |||
| message: '提交成功' | |||
| message: this.$t('submittedSuccessfully'), | |||
| }); | |||
| setTimeout(() => { | |||
| window.location.href = '/tech/tech_view'; | |||
| @@ -422,7 +421,7 @@ export default { | |||
| this.submitLoading = false; | |||
| this.$message({ | |||
| type: 'error', | |||
| message: '提交失败' | |||
| message: this.$t('submittedFailed'), | |||
| }); | |||
| }); | |||
| }, | |||
| @@ -622,7 +621,5 @@ export default { | |||
| height: 24px; | |||
| margin-right: 10px; | |||
| } | |||
| .owner-name {} | |||
| } | |||
| </style> | |||
| @@ -0,0 +1,160 @@ | |||
| <template> | |||
| <div> | |||
| <TopHeader :menu="'my_view'"></TopHeader> | |||
| <div class="ui container"> | |||
| <div class="table-container"> | |||
| <div class="table-title">2030科技项目</div> | |||
| <div class="table-wrap"> | |||
| <el-table ref="tableRef" border :data="tableData" style="width:100%;" v-loading="loading" stripe row-key="id"> | |||
| <el-table-column label="序号" type="index" align="center" header-align="center" width="50" | |||
| fixed></el-table-column> | |||
| <el-table-column label="启智项目名称" align="center" header-align="center" fixed min-width="140"> | |||
| <template slot-scope="scope"> | |||
| <a target="_blank" :href="`/${scope.row.repo_owner_name}/${scope.row.repo_name}`">{{ | |||
| `${scope.row.repo_owner_name}/${scope.row.repo_name}` }}</a> | |||
| </template> | |||
| </el-table-column> | |||
| <el-table-column prop="name" label="科技项目名称" align="center" header-align="center" fixed | |||
| min-width="200"></el-table-column> | |||
| <el-table-column prop="status" label="展示状态" align="center" header-align="center" fixed> | |||
| <template slot-scope="scope"> | |||
| <span style="color:rgb(255, 37, 37)" | |||
| :style="scope.row.status == 1 ? { color: 'rgb(56, 158, 13)' } : ''">{{ | |||
| statusMap[scope.row.status] }}</span> | |||
| </template> | |||
| </el-table-column> | |||
| <el-table-column prop="no" label="项目立项编号" align="center" header-align="center" | |||
| min-width="120"></el-table-column> | |||
| <el-table-column prop="institution" label="项目承担单位" align="center" header-align="center" | |||
| min-width="120"></el-table-column> | |||
| <el-table-column prop="all_institution" label="所有参与单位" align="center" header-align="center" | |||
| min-width="280"></el-table-column> | |||
| <el-table-column prop="contribution_institution" label="成果贡献单位" align="center" header-align="center" | |||
| min-width="280"></el-table-column> | |||
| <el-table-column prop="contribution_institution" label="申请时间" align="center" header-align="center" | |||
| min-width="120"> | |||
| <template slot-scope="scope"> | |||
| <span>{{ dateFormat(scope.row.created_unix) }}</span> | |||
| </template> | |||
| </el-table-column> | |||
| </el-table> | |||
| </div> | |||
| <div class="center"> | |||
| <el-pagination ref="paginationRef" background @current-change="currentChange" @size-change="sizeChange" | |||
| :current-page.sync="page" :page-sizes="pageSizes" :page-size.sync="pageSize" | |||
| layout="total, sizes, prev, pager, next, jumper" :total="total"> | |||
| </el-pagination> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| import dayjs from 'dayjs'; | |||
| import TopHeader from '../components/TopHeader.vue'; | |||
| import { getTechMyList } from '~/apis/modules/tech'; | |||
| export default { | |||
| data() { | |||
| return { | |||
| loading: false, | |||
| tableData: [], | |||
| page: 1, | |||
| pageSizes: [15, 30, 50], | |||
| pageSize: 15, | |||
| total: 0, | |||
| statusMap: { | |||
| '1': '已展示', | |||
| '2': '未展示', | |||
| '3': '项目迁移中', | |||
| '4': '项目迁移失败', | |||
| '5': '项目不存在', | |||
| }, | |||
| }; | |||
| }, | |||
| components: { TopHeader }, | |||
| methods: { | |||
| getData() { | |||
| this.loading = true; | |||
| getTechMyList({ | |||
| page: this.page, | |||
| pageSize: this.pageSize, | |||
| }).then(res => { | |||
| this.loading = false; | |||
| const { total, data } = res.data; | |||
| this.tableData = data.map((item, index) => { | |||
| return { ...item, } | |||
| }); | |||
| this.total = total; | |||
| }).catch(err => { | |||
| this.loading = false; | |||
| console.log(err); | |||
| }); | |||
| }, | |||
| currentChange(page) { | |||
| this.page = page; | |||
| this.getData(); | |||
| }, | |||
| sizeChange(pageSize) { | |||
| this.pageSize = pageSize; | |||
| this.getData(); | |||
| }, | |||
| dateFormat(unix) { | |||
| return dayjs(unix * 1000).format('YYYY-MM-DD HH:mm'); | |||
| } | |||
| }, | |||
| beforeMount() { | |||
| this.getData(); | |||
| }, | |||
| mounted() { }, | |||
| beforeDestroy() { }, | |||
| }; | |||
| </script> | |||
| <style scoped lang="less"> | |||
| .table-container { | |||
| margin-top: 30px; | |||
| .table-title { | |||
| height: 43px; | |||
| font-size: 16px; | |||
| font-weight: 700; | |||
| padding: 15px; | |||
| color: rgb(16, 16, 16); | |||
| border-color: rgb(212, 212, 213); | |||
| border-width: 1px; | |||
| border-style: solid; | |||
| border-radius: 5px 5px 0px 0px; | |||
| background: rgb(240, 240, 240); | |||
| display: flex; | |||
| align-items: center; | |||
| } | |||
| .table-wrap { | |||
| overflow-x: auto; | |||
| margin-bottom: 20px; | |||
| /deep/ .el-table__header { | |||
| th { | |||
| background: rgb(249, 249, 249); | |||
| font-size: 12px; | |||
| color: rgb(136, 136, 136); | |||
| font-weight: normal; | |||
| } | |||
| } | |||
| /deep/ .el-table__body { | |||
| td { | |||
| font-size: 12px; | |||
| } | |||
| } | |||
| /deep/ .el-radio__label { | |||
| display: none; | |||
| } | |||
| } | |||
| } | |||
| </style> | |||
| @@ -0,0 +1,17 @@ | |||
| import Vue from 'vue'; | |||
| import ElementUI from 'element-ui'; | |||
| import 'element-ui/lib/theme-chalk/index.css'; | |||
| import localeEn from 'element-ui/lib/locale/lang/en'; | |||
| import localeZh from 'element-ui/lib/locale/lang/zh-CN'; | |||
| import { i18n, lang } from '~/langs'; | |||
| import App from './index.vue'; | |||
| Vue.use(ElementUI, { | |||
| locale: lang === 'zh-CN' ? localeZh : localeEn, | |||
| size: 'small', | |||
| }); | |||
| new Vue({ | |||
| i18n, | |||
| render: (h) => h(App), | |||
| }).$mount('#__vue-root'); | |||
| @@ -1,6 +1,6 @@ | |||
| <template> | |||
| <div> | |||
| <TopHeader :menu="1"></TopHeader> | |||
| <TopHeader :menu="'repo_view'"></TopHeader> | |||
| <div class="ui container"> | |||
| <SearchBar :type="1" :condition="condition" @changeCondition="changeCondition"></SearchBar> | |||
| <div class="conent-c"> | |||
| @@ -1,6 +1,6 @@ | |||
| <template> | |||
| <div> | |||
| <TopHeader :menu="0"></TopHeader> | |||
| <TopHeader :menu="'tech_view'"></TopHeader> | |||
| <div class="ui container"> | |||
| <SearchBar :type="0" :condition="condition" @changeCondition="changeCondition"></SearchBar> | |||
| <div class="conent-c"> | |||