Merge remote-tracking branch 'origin/dev_20230526_Mobile'
# Conflicts: # jero-web/src/common/lang/en-us.js # jero-web/src/common/lang/zh-cn.js # jero-web/src/components/tools/UserMenu.vue
|
After Width: | Height: | Size: 363 B |
|
After Width: | Height: | Size: 641 B |
|
After Width: | Height: | Size: 457 B |
|
After Width: | Height: | Size: 704 B |
|
After Width: | Height: | Size: 579 B |
|
After Width: | Height: | Size: 704 B |
|
After Width: | Height: | Size: 415 B |
|
After Width: | Height: | Size: 372 B |
|
After Width: | Height: | Size: 519 B |
|
After Width: | Height: | Size: 535 B |
@@ -0,0 +1,4 @@
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M1 2.16699C1 1.89085 1.22386 1.66699 1.5 1.66699H14.5C14.7761 1.66699 15 1.89085 15 2.16699V11.8337C15 12.1098 14.7761 12.3337 14.5 12.3337H1.5C1.22386 12.3337 1 12.1098 1 11.8337V2.16699ZM2 11.3337H14V2.66699H2V11.3337Z" fill="#040B29"/>
|
||||
<path d="M12 13.3337H4C4 13.8859 4.48842 14.3337 5.09091 14.3337H10.9091C11.5116 14.3337 12 13.8859 12 13.3337Z" fill="#040B29"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 481 B |
|
After Width: | Height: | Size: 686 B |
|
After Width: | Height: | Size: 453 B |
|
After Width: | Height: | Size: 523 B |
|
After Width: | Height: | Size: 410 B |
|
After Width: | Height: | Size: 422 B |
|
After Width: | Height: | Size: 422 B |
|
After Width: | Height: | Size: 446 B |
|
After Width: | Height: | Size: 373 B |
|
After Width: | Height: | Size: 476 B |
@@ -1851,4 +1851,49 @@ module.exports = {
|
||||
operationguide:'Project operation guide',
|
||||
copyLink:'Copy link',
|
||||
successfulReplication:'Successful replication',
|
||||
|
||||
//手机端
|
||||
myCollection:'My Collection',
|
||||
recentBrowsing:'Recent Browsing',
|
||||
mySubscription:'My Subscription',
|
||||
languageSwitching:'Language Switching',
|
||||
phoneSearch:'search',
|
||||
taskStatistics:'Task Statistics',
|
||||
mine:'Mine',
|
||||
regulatoryCertificationProcess:'Regulatory certification process',
|
||||
authenticationParameterCollection:'Authentication parameter collection',
|
||||
regulatoryCertificationProcessData:'Regulatory Certification Process Data',
|
||||
regulationListIssuance:'Regulation list issuance',
|
||||
designTheComplianceProcess:'Design the compliance process',
|
||||
verifyComplianceProcess:'Verify compliance process',
|
||||
thePreHomeProcess:'Pre-Home Process',
|
||||
technicalAssessmentOfRegulations:'Technical Assessment Regulations',
|
||||
legalOpinionCollection:'Legal Opinion Collection',
|
||||
authenticationParameterCollectionData:'Authentication parameter collection data',
|
||||
phoneRelatedItems:'Related items',
|
||||
listHeading:'List heading',
|
||||
phoneVersionNumber:'Version number',
|
||||
node:'Node',
|
||||
goToCheck:'View',
|
||||
stored:'Stored',
|
||||
individual:'a ',
|
||||
document:'document',
|
||||
treatmentMode:'Treatment Mode',
|
||||
onlyMobilePhoneAreDisplayed:'Only the tasks that can be handled by the mobile phone are displayed',
|
||||
phoneReset:'Reset',
|
||||
noMore:'No More',
|
||||
loading:'Loading...',
|
||||
howAboutComment:'How about a comment',
|
||||
send:'Send',
|
||||
pleaseProcessThePC:'Please process it on the PC',
|
||||
clickAndSelect:'Click and select',
|
||||
phoneCreationTime:'Creation Time',
|
||||
theCurrentFormatSupportPreview:'The current format does not support preview',
|
||||
nearlyMonth:'Nearly a month',
|
||||
nearlyThreeMonths:'Nearly Three Months',
|
||||
nearlySixMonths:'Nearly Six Months',
|
||||
nearlyYear:'Nearly a Year',
|
||||
browsingTime:'Browsing Time',
|
||||
pleaseViewOnPc:'Please view on PC',
|
||||
taskHandling:'Task Handling',
|
||||
}
|
||||
@@ -31,7 +31,7 @@
|
||||
</div>
|
||||
</a-spin>
|
||||
<!-- <div class='drawer-bootom-button'>-->
|
||||
<!-- <a-button style='margin-right: .8rem' @click='handleCancel'>{{ $t('cancel') }}</a-button>-->
|
||||
<!-- <a-button style='margin-right: 8px' @click='handleCancel'>{{ $t('cancel') }}</a-button>-->
|
||||
<!-- <a-button @click='handleSubmit' type='primary' :loading='confirmLoading'>{{ $t('submit') }}</a-button>-->
|
||||
<!-- </div>-->
|
||||
<!-- 错误数据提示-->
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
/>
|
||||
</div>
|
||||
<div class='drawer-bootom-button'>
|
||||
<a-button style='margin-right: .8rem' @click='handleCancel'>{{ $t('cancel') }}</a-button>
|
||||
<a-button style='margin-right: 8px' @click='handleCancel'>{{ $t('cancel') }}</a-button>
|
||||
<a-button @click='handleSubmit' type='primary' :loading='confirmLoading'>{{ $t('submit') }}</a-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
/>
|
||||
</div>
|
||||
<div class='drawer-bootom-button'>
|
||||
<a-button style='margin-right: .8rem' @click='handleCancel'>{{ $t('cancel') }}</a-button>
|
||||
<a-button style='margin-right: 8px' @click='handleCancel'>{{ $t('cancel') }}</a-button>
|
||||
<a-button @click='handleSubmit' type='primary' :loading='confirmLoading'>{{ $t('submit') }}</a-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
</span>
|
||||
</a-table>
|
||||
<div class='drawer-bootom-button'>
|
||||
<a-button style='margin-right: .8rem' @click='handleCancel'>{{ $t('cancel') }}</a-button>
|
||||
<a-button style='margin-right: 8px' @click='handleCancel'>{{ $t('cancel') }}</a-button>
|
||||
<a-button @click='handleSubmit' type='primary' :loading='confirmLoading'>{{ $t('submit') }}</a-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
</a-form-model>
|
||||
</a-spin>
|
||||
<div class='drawer-bootom-button' style="margin-top: 4px">
|
||||
<a-button style='margin-right: .8rem' @click='handleCancel'>{{ $t('cancel') }}</a-button>
|
||||
<a-button style='margin-right: 8px' @click='handleCancel'>{{ $t('cancel') }}</a-button>
|
||||
<a-button @click='handleSubmit' type='primary' :loading='confirmLoading'>{{ $t('confirm') }}</a-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
</a-form-model>
|
||||
</a-spin>
|
||||
<div class='drawer-bootom-button' style='margin-top: 20px'>
|
||||
<a-button style='margin-right: .8rem' @click='handleCancel'>{{ $t('cancel') }}</a-button>
|
||||
<a-button style='margin-right: 8px' @click='handleCancel'>{{ $t('cancel') }}</a-button>
|
||||
<a-button @click='handleSubmit' type='primary' :loading='confirmLoading'>{{ $t('submit') }}</a-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
</a-form-model>
|
||||
</a-spin>
|
||||
<!-- <div class='drawer-bootom-button'>-->
|
||||
<!-- <a-button style='margin-right: .8rem' @click='handleCancel'>{{ $t('cancel') }}</a-button>-->
|
||||
<!-- <a-button style='margin-right: 8px' @click='handleCancel'>{{ $t('cancel') }}</a-button>-->
|
||||
<!-- <a-button @click='handleSubmit' type='primary' :loading='confirmLoading'>{{ $t('submit') }}</a-button>-->
|
||||
<!-- </div>-->
|
||||
<!-- 错误数据提示-->
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
</a-form-model>
|
||||
</a-spin>
|
||||
<!-- <div class='drawer-bootom-button'>-->
|
||||
<!-- <a-button style='margin-right: .8rem' @click='handleCancel'>{{ $t('cancel') }}</a-button>-->
|
||||
<!-- <a-button style='margin-right: 8px' @click='handleCancel'>{{ $t('cancel') }}</a-button>-->
|
||||
<!-- <a-button @click='handleSubmit' type='primary' :loading='confirmLoading'>{{ $t('submit') }}</a-button>-->
|
||||
<!-- </div>-->
|
||||
<!-- 错误数据提示-->
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
/>
|
||||
</div>
|
||||
<!-- <div class='drawer-bootom-button'>-->
|
||||
<!-- <a-button style='margin-right: .8rem' @click='handleCancel'>{{ $t('cancel') }}</a-button>-->
|
||||
<!-- <a-button style='margin-right: 8px' @click='handleCancel'>{{ $t('cancel') }}</a-button>-->
|
||||
<!-- <a-button @click='handleSubmit' type='primary' :loading='confirmLoading'>{{ $t('submit') }}</a-button>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
|
||||
@@ -10,18 +10,18 @@
|
||||
<!-- <span id="p-company">HEZHONGWEILAI</span>-->
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="mobile">
|
||||
<span class="top-bg"><img src="~/@assets/mobileBg.png" alt=""></span>
|
||||
<span class="btm-bg"><img src="~/@assets/mobileHome.png" alt=""></span>
|
||||
</div>
|
||||
<!-- <div v-if="mobile">-->
|
||||
<!-- <span class="top-bg"><img src="~/@assets/mobileBg.png" alt=""></span>-->
|
||||
<!-- <span class="btm-bg"><img src="~/@assets/mobileHome.png" alt=""></span>-->
|
||||
<!-- </div>-->
|
||||
<div v-if="mobile" class="mobile">
|
||||
<div class="logo">
|
||||
<img src="~@/assets/logo.png" alt="">
|
||||
</div>
|
||||
<div class="company">
|
||||
<span>合众未来</span>
|
||||
<span>HEZHONGWEILAI</span>
|
||||
</div>
|
||||
<!-- <div class="company">-->
|
||||
<!-- <span>合众未来</span>-->
|
||||
<!-- <span>HEZHONGWEILAI</span>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
<div class="illustration" v-if="!mobile">
|
||||
<img src="@/assets/home.png" alt="">
|
||||
@@ -174,7 +174,7 @@
|
||||
height: 100%;
|
||||
.mobile{
|
||||
position: absolute;
|
||||
top: 6rem;
|
||||
top: 3rem;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
@@ -31,18 +31,11 @@
|
||||
<!-- <a-icon type="question-circle-o"></a-icon>-->
|
||||
<!-- </a>-->
|
||||
<!-- </span>-->
|
||||
<!-- <div class="action" @click="Jumpflybook">-->
|
||||
<!-- <span class="header-notice">-->
|
||||
<!-- <a-tooltip placement="bottomRight" :title="$t('userManual')" overlayClassName="tooltipColor">-->
|
||||
<!-- <a-icon style="font-size: 16px; padding: 4px; color: #000000A6" type="question-circle"/>-->
|
||||
<!-- </a-tooltip>-->
|
||||
<!-- </span>-->
|
||||
<!-- </div>-->
|
||||
<a-dropdown>
|
||||
<span class="action action-full ant-dropdown-link user-dropdown-menu">
|
||||
<!-- <a-avatar class="avatar" size="small" :src="getAvatar()"/>-->
|
||||
<!-- <span v-if="isDesktop()">welcome,{{ userInfo().username }}</span>-->
|
||||
<a-icon style="font-size: 16px; padding: 4px; color: #000000A6" type="question-circle"/>
|
||||
<div class="action" @click="Jumpflybook">
|
||||
<span class="header-notice">
|
||||
<a-tooltip placement="bottomRight" :title="$t('userManual')" overlayClassName="tooltipColor">
|
||||
<a-icon style="font-size: 16px; padding: 4px; color: #000000A6" type="question-circle"/>
|
||||
</a-tooltip>
|
||||
</span>
|
||||
<a-menu slot="overlay" class="user-dropdown-menu-wrapper">
|
||||
<a-menu-item key="5" @click="Jumpflybook">
|
||||
@@ -231,8 +224,8 @@
|
||||
hiddenClick() {
|
||||
this.shows = false
|
||||
},
|
||||
Jumpflybook(){
|
||||
window.open('https://eicgyqr5mc.feishu.cn/docx/doxcnY2GbQfMSMqLP0eIFzFlEcd', '_blank');
|
||||
Jumpflybook() {
|
||||
window.open('https://eicgyqr5mc.feishu.cn/docx/doxcnY2GbQfMSMqLP0eIFzFlEcd', '_blank')
|
||||
},
|
||||
Jumpoperationguide(){
|
||||
window.open('https://eicgyqr5mc.feishu.cn/docx/ZyhWdIz7EoMZ68xhI2bckcWWnMg', '_blank');
|
||||
@@ -401,6 +394,7 @@
|
||||
|
||||
.action {
|
||||
color: rgba(0, 0, 0, 0.65) !important;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.action .avatar {
|
||||
|
||||
@@ -477,6 +477,88 @@ export const constantRouterMap = [
|
||||
name: 'TaskPlanList',
|
||||
component: () => import(/* webpackChunkName: "user" */ '@/views/projectManagement/projectStatusBoard/components/TaskPlanList')
|
||||
},
|
||||
|
||||
|
||||
/* 手机端开始 */
|
||||
//搜索
|
||||
{
|
||||
path: '/phoneSearch',
|
||||
name: 'phoneSearch',
|
||||
component: () => import('@/views/phoneView/search')
|
||||
},
|
||||
//待办中心
|
||||
{
|
||||
path: '/phoneToDoCenter',
|
||||
name: 'phoneToDoCenter',
|
||||
component: () => import('@/views/phoneView/toDoCenter')
|
||||
},
|
||||
//任务数据
|
||||
{
|
||||
path: '/phoneTaskData',
|
||||
name: 'phoneTaskData',
|
||||
component: () => import('@/views/phoneView/taskData')
|
||||
},
|
||||
//我的
|
||||
{
|
||||
path: '/phoneHome',
|
||||
name: 'phoneHome',
|
||||
component: () => import('@/views/phoneView/home')
|
||||
},
|
||||
//搜索列表
|
||||
{
|
||||
path: '/phoneSearchList',
|
||||
name: 'phoneSearchList',
|
||||
component: () => import('@/views/phoneView/searchList')
|
||||
},
|
||||
//文档详情
|
||||
{
|
||||
path: '/phoneDocumentDetails',
|
||||
name: 'phoneDocumentDetails',
|
||||
component: () => import('@/views/phoneView/documentDetails')
|
||||
},
|
||||
//流程
|
||||
{
|
||||
path: '/phoneProcessManagement',
|
||||
name: 'phoneProcessManagement',
|
||||
component: () => import('@/views/phoneView/processManagement')
|
||||
},
|
||||
//知识分享
|
||||
{
|
||||
path: '/phoneProblemKnowledgeBase',
|
||||
name: 'phoneProblemKnowledgeBase',
|
||||
component: () => import('@/views/phoneView/problemKnowledgeBase')
|
||||
},
|
||||
//办理页面
|
||||
{
|
||||
path: '/phoneHandlingPage',
|
||||
name: 'phoneHandlingPage',
|
||||
component: () => import('@/views/phoneView/handlingPage')
|
||||
},
|
||||
//我的收藏
|
||||
{
|
||||
path: '/phoneMyCollection',
|
||||
name: 'phoneMyCollection',
|
||||
component: () => import('@/views/phoneView/myCollection')
|
||||
},
|
||||
//最近预览
|
||||
{
|
||||
path: '/phoneRecentBrowsing',
|
||||
name: 'phoneRecentBrowsing',
|
||||
component: () => import('@/views/phoneView/recentBrowsing')
|
||||
},
|
||||
//我的订阅
|
||||
{
|
||||
path: '/phoneMySubscribe',
|
||||
name: 'phoneMySubscribe',
|
||||
component: () => import('@/views/phoneView/mySubscribe')
|
||||
},
|
||||
//perhome办理流程
|
||||
{
|
||||
path: '/phonePreHomoMangement',
|
||||
name: 'phonePreHomoMangement',
|
||||
component: () => import('@/views/phoneView/preHomoMangement')
|
||||
},
|
||||
/* 手机端结束 */
|
||||
// {
|
||||
// path:'/vehicleinformation',
|
||||
// name: 'vehicleinformation',
|
||||
|
||||
@@ -65,12 +65,16 @@ import '@/components/JVxeCells/install'
|
||||
// 挂载全局使用的方法
|
||||
import VueDraggableResizable from 'vue-draggable-resizable'
|
||||
|
||||
import Vant from 'vant';
|
||||
import 'vant/lib/index.css';
|
||||
import 'amfe-flexible/index.js'
|
||||
Vue.component('vue-draggable-resizable', VueDraggableResizable)
|
||||
Vue.config.productionTip = false
|
||||
Vue.use(Storage, config.storageOptions)
|
||||
Vue.use(Antd)
|
||||
Vue.use(VueAxios, router)
|
||||
Vue.use(Viser)
|
||||
Vue.use(Vant);
|
||||
Vue.use(hasPermission)
|
||||
Vue.use(JDictSelectTag)
|
||||
Vue.use(Print)
|
||||
|
||||
@@ -10,6 +10,32 @@ import { JSEncrypt } from 'jsencrypt'
|
||||
import { getAction } from '@/api/manage'
|
||||
import { welcome } from '@/utils/util'
|
||||
|
||||
// 判断当前设备
|
||||
function isMobile() {
|
||||
var userAgentInfo = navigator.userAgent
|
||||
|
||||
var mobileAgents = ['Android', 'iPhone', 'SymbianOS', 'Windows Phone', 'iPad', 'iPod']
|
||||
|
||||
var mobile_flag = false
|
||||
|
||||
//根据userAgent判断是否是手机
|
||||
for (var v = 0; v < mobileAgents.length; v++) {
|
||||
if (userAgentInfo.indexOf(mobileAgents[v]) > 0) {
|
||||
mobile_flag = true
|
||||
break
|
||||
}
|
||||
}
|
||||
var screen_width = window.screen.width
|
||||
var screen_height = window.screen.height
|
||||
|
||||
//根据屏幕分辨率判断是否是手机
|
||||
if (screen_width < 500 && screen_height < 800) {
|
||||
mobile_flag = true
|
||||
}
|
||||
return mobile_flag
|
||||
}
|
||||
|
||||
let mobile = isMobile()
|
||||
NProgress.configure({ showSpinner: false }) // NProgress Configuration
|
||||
// TODO 线上部署在conmponetns/tools/UserMenu.vue的退出登录时需解开代码以及注释代码
|
||||
|
||||
@@ -46,7 +72,11 @@ router.beforeEach((to, from, next) => {
|
||||
store.commit('SET_AVATAR', res.result.userInfo.avatar)
|
||||
let fullPath = ''
|
||||
if (to.fullPath == '/') {
|
||||
fullPath = INDEX_MAIN_PAGE_PATH
|
||||
if (mobile) {
|
||||
fullPath = '/phoneSearch'
|
||||
} else {
|
||||
fullPath = INDEX_MAIN_PAGE_PATH
|
||||
}
|
||||
} else {
|
||||
fullPath = to.path
|
||||
}
|
||||
@@ -64,7 +94,13 @@ router.beforeEach((to, from, next) => {
|
||||
if (Vue.ls.get(ACCESS_TOKEN)) {
|
||||
/* has token */
|
||||
if (to.path === '/user/login') {
|
||||
next({ path: INDEX_MAIN_PAGE_PATH })
|
||||
let fullPath = ''
|
||||
if (mobile) {
|
||||
fullPath = '/phoneSearch'
|
||||
} else {
|
||||
fullPath = INDEX_MAIN_PAGE_PATH
|
||||
}
|
||||
next({ path: fullPath })
|
||||
NProgress.done()
|
||||
} else {
|
||||
if (store.getters.permissionList.length === 0) {
|
||||
@@ -81,7 +117,13 @@ router.beforeEach((to, from, next) => {
|
||||
// 根据roles权限生成可访问的路由表
|
||||
// 动态添加可访问路由表
|
||||
router.addRoutes(store.getters.addRouters)
|
||||
const redirect = decodeURIComponent(from.query.redirect || to.path)
|
||||
let redirect = decodeURIComponent(from.query.redirect || to.path)
|
||||
if (mobile) {
|
||||
if (redirect == '/'){
|
||||
redirect = '/phoneSearch'
|
||||
}
|
||||
}
|
||||
|
||||
if (to.path === redirect) {
|
||||
// hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record
|
||||
next({ ...to, replace: true })
|
||||
@@ -103,7 +145,11 @@ router.beforeEach((to, from, next) => {
|
||||
|
||||
let fullPath = ''
|
||||
if (to.fullPath == '/') {
|
||||
fullPath = INDEX_MAIN_PAGE_PATH
|
||||
if (mobile) {
|
||||
fullPath = '/phoneSearch'
|
||||
} else {
|
||||
fullPath = INDEX_MAIN_PAGE_PATH
|
||||
}
|
||||
} else {
|
||||
fullPath = to.path
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
import { Base64 } from 'js-base64'
|
||||
import { Toast } from 'vant'
|
||||
|
||||
let downLoadFileUrl = window._CONFIG['domianPreviewURL'] + '/sys/common/download'
|
||||
let downLoadImgUrl = window._CONFIG['domianWebImgURL'] + '/sys/common/download'
|
||||
|
||||
export function kkFileView(fileName, fileId) {
|
||||
let index1 = fileName.lastIndexOf('.')
|
||||
let index2 = fileName.length
|
||||
let fileSuffix = fileName.substring(index1, index2)
|
||||
if (fileSuffix == '.docx' || fileSuffix == '.doc' || fileSuffix == '.pdf' || fileSuffix == '.xlsx' || fileSuffix == '.xls') {
|
||||
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(downLoadFileUrl + '/' + fileId + fileSuffix)
|
||||
window.open(url)
|
||||
} else if (fileSuffix == '.png' || fileSuffix == '.jpeg' || fileSuffix == '.gif' || fileSuffix == '.jpg') {
|
||||
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(downLoadImgUrl + '/' + fileId + fileSuffix)
|
||||
window.open(url)
|
||||
} else {
|
||||
Toast('当前格式不支持预览')
|
||||
}
|
||||
}
|
||||
@@ -55,7 +55,7 @@
|
||||
</a-table>
|
||||
</div>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
|
||||
@@ -97,7 +97,7 @@
|
||||
</a-form-model>
|
||||
</a-spin>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button @click="handleSubmit" v-if="!disabled" type="primary" :loading="confirmLoading">{{$t('submit')}}
|
||||
</a-button>
|
||||
</div>
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
</a-form-model>
|
||||
</a-spin>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<div class="drawer-bootom-button">
|
||||
<a-popconfirm :title="$t('AreYouWantDiscardEditing')" @confirm="handleCancel" :okText="$t('determine')"
|
||||
:cancelText="$t('cancel')">
|
||||
<a-button style="margin-right: .8rem">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px">{{$t('cancel')}}</a-button>
|
||||
</a-popconfirm>
|
||||
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
|
||||
</div>
|
||||
|
||||
@@ -946,12 +946,14 @@
|
||||
margin-right: 4px;
|
||||
color: #01A0AC;
|
||||
cursor: pointer;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.leftconteTdInformation-icon {
|
||||
color: #01A0AC;
|
||||
cursor: pointer;
|
||||
margin-right: 6px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.rightTdInformation {
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
:url="url"
|
||||
/>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
|
||||
@@ -611,7 +611,7 @@
|
||||
</a-form-model>
|
||||
</a-spin>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button @click="handleSubmit" v-if="!disabled" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
|
||||
</div>
|
||||
<uploadFile ref="uploadFile" :disabled="disabled" @uploadSuccess="uploadSuccess"/>
|
||||
|
||||
@@ -159,7 +159,7 @@
|
||||
</a-form-model>
|
||||
</a-spin>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
</a-form>
|
||||
</a-spin>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
|
||||
</div>
|
||||
</a-modal>
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
</a-form>
|
||||
<!-- </a-spin>-->
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('close')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('close')}}</a-button>
|
||||
<!-- <a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('close')}}</a-button>-->
|
||||
</div>
|
||||
</a-modal>
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
</a-form>
|
||||
</a-spin>
|
||||
<div v-show="!disableSubmit">
|
||||
<a-button style="margin-right: .8rem" @confirm="handleCancel">取消</a-button>
|
||||
<a-button style="margin-right: 8px" @confirm="handleCancel">取消</a-button>
|
||||
<a-button @click="handleOk" type="primary" :loading="confirmLoading">提交</a-button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
|
||||
@@ -166,7 +166,7 @@
|
||||
</a-form-model>
|
||||
</a-spin>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button type="primary" @click="handleSubmit" :loading="confirmLoading">{{$t('submit')}}</a-button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
@@ -279,7 +279,7 @@ export default {
|
||||
if (res.success) {
|
||||
this.confirmLoading = false
|
||||
this.$message.success(this.$t('OperationSuccessful'))
|
||||
|
||||
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
this.confirmLoading = false
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
</a-form>
|
||||
</a-spin>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
</a-row>
|
||||
</a-form-model>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
|
||||
</div>
|
||||
</a-modal>
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
</a-form>
|
||||
</a-spin>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
|
||||
@@ -97,7 +97,7 @@
|
||||
</a-form>
|
||||
</a-spin>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('determine')}}</a-button>
|
||||
</div>
|
||||
</a-modal>
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
</a-form>
|
||||
</a-spin>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('export')}}</a-button>
|
||||
</div>
|
||||
</a-modal>
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
</a-form>
|
||||
</a-spin>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('export')}}</a-button>
|
||||
</div>
|
||||
</a-modal>
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
</a-form>
|
||||
</a-spin>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
|
||||
@@ -101,7 +101,7 @@
|
||||
</a-row>
|
||||
</a-form-model>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
|
||||
</div>
|
||||
</a-modal>
|
||||
|
||||
@@ -313,7 +313,7 @@
|
||||
</a-form-model>
|
||||
</a-spin>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
<template>
|
||||
<div class="header">
|
||||
<van-nav-bar
|
||||
title="标题"
|
||||
left-text="返回"
|
||||
right-text="按钮"
|
||||
left-arrow
|
||||
@click-left="onClickLeft"
|
||||
@click-right="onClickRight"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'header',
|
||||
methods:{
|
||||
onClickLeft(){
|
||||
|
||||
},
|
||||
onClickRight(){
|
||||
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,543 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="header-search">
|
||||
<van-icon @click="iconClick" class="icon" name="arrow-left"/>
|
||||
<span class="header-search-text">
|
||||
{{serial_number}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="header-right-text" @click="subscribeClick">
|
||||
<img v-if="subscribeFlag == '1'" src="~@/assets/icon_link_document.png" alt="">
|
||||
<img v-else src="~@/assets/icon_link.png" alt="">
|
||||
<span :class="{'header-right-text-color':subscribeFlag == '1'?true:false}">{{$t('subscribe')}}</span>
|
||||
</div>
|
||||
<div class="header-right-text" @click="collectionClick">
|
||||
<img v-if="collectFlag == '1'" src="~@/assets/icon_star_document.png" alt="">
|
||||
<img v-else src="~@/assets/icon_star.png" alt="">
|
||||
<span :class="{'header-right-text-color':collectFlag == '1'?true:false}">{{$t('Collection')}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<van-collapse class="collapse" v-model="activeNames">
|
||||
<div v-for="(item,index) in detailList">
|
||||
<div v-for="val in Object.keys(item)">
|
||||
<van-collapse-item v-if="val == $t('essentialInformation')" :title="val" name="1">
|
||||
<div class="content-box-type-box" v-for="(ol,index1) in item[val]">
|
||||
<div class="content-box-type-num" v-if="ol.field_show_type == 10">
|
||||
<span class="content-box-left-num">{{ol.db_field_txt}}</span>
|
||||
<span class="content-box-text-num"
|
||||
v-if="!ol.list">--</span>
|
||||
<span class="content-box-text-num"
|
||||
v-for="valItem in ol.list"
|
||||
@click="numClick(valItem)"
|
||||
v-else-if="ol.list && ol.list.length > 0">
|
||||
{{valItem.title}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="content-box-type-num" v-else-if="ol.field_show_type == 8">
|
||||
<span class="content-box-left-num">{{ol.db_field_txt}}</span>
|
||||
<span class="content-box-text-num" style="color: #040B29">
|
||||
{{ol.value || '--'}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="content-box-type" v-else-if="ol.urlClick">
|
||||
<span class="content-box-left">{{ol.db_field_txt}}</span>
|
||||
<span class="content-box-text" style="color: #01A0AC"
|
||||
@click="urlClick(ol)">{{ol.value || '--'}}</span>
|
||||
</div>
|
||||
<div class="content-box-type" v-else>
|
||||
<span class="content-box-left">{{ol.db_field_txt}}</span>
|
||||
<span class="content-box-text">{{ol.value || '--'}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</van-collapse-item>
|
||||
|
||||
<van-collapse-item v-else-if="val == $t('textInformation')"
|
||||
:title="val" name="2">
|
||||
<div class="textInformation" v-for="(ol,index1) in item[val]">
|
||||
<div class="textInformationText">
|
||||
{{ol.db_field_txt}}
|
||||
</div>
|
||||
<div v-if="ol.value && ol.value.length > 0">
|
||||
<div class="textInformationFile" @click="fileClick(valItem)" v-for="valItem in ol.value">
|
||||
{{valItem.fileName}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</van-collapse-item>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<van-collapse-item :title="$t('DetailsPhasedImplementation')" name="3">
|
||||
<van-list
|
||||
v-model="loading"
|
||||
:finished="finished"
|
||||
:finished-text="$t('noMore')"
|
||||
:loading-text="$t('loading')"
|
||||
@load="onLoad"
|
||||
>
|
||||
<div class="Implementation" v-for="(item,index) in dataGrad" :key="index">
|
||||
<div class="ImplementationText">{{item.standNumberOrClause}}</div>
|
||||
<div class="ImplementationBox">
|
||||
<div class="ImplementationBoxLeft">
|
||||
{{item.implementationTypeText}}
|
||||
</div>
|
||||
<div class="ImplementationBoxRight">
|
||||
{{item.implementationDate}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="ImplementationButtom">
|
||||
{{item.remarks}}
|
||||
</div>
|
||||
</div>
|
||||
</van-list>
|
||||
</van-collapse-item>
|
||||
</van-collapse>
|
||||
<van-overlay :show="show">
|
||||
<van-loading type="spinner">{{textLoading}}</van-loading>
|
||||
</van-overlay>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction, downFile } from '@/api/manage'
|
||||
import { kkFileView } from '@/utils/kkfileView'
|
||||
import eventBUs from '../../common/event'
|
||||
import { Toast } from 'vant'
|
||||
|
||||
export default {
|
||||
name: 'phoneDocumentDetails',
|
||||
data() {
|
||||
return {
|
||||
activeNames: ['1', '2', '3'],
|
||||
url: {
|
||||
getInfo: 'document/bussDocumentLibraryEO/getInfoById',
|
||||
list: 'log/bussLogEO/page',
|
||||
getTitle: '/document/bussDocumentLibraryEO/getTitle',
|
||||
getPage: '/document/phasedImplementationDetailsEO/page',
|
||||
getMenuList: 'document/bussDocumentLibraryEO/getMenuList'
|
||||
},
|
||||
show: false,
|
||||
serial_number: '',
|
||||
detailList: [],
|
||||
loading: false,
|
||||
finished: false,
|
||||
pageNo: 0,
|
||||
dataGrad: [],
|
||||
textLoading: this.$t('loading'),
|
||||
collectFlag: 0,
|
||||
subscribeFlag: 0
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
document.title = 'NIO GRP'
|
||||
let _this = this
|
||||
this.getWdkCollectAndSubscribeInfoByUser()
|
||||
this.getTitle(function() {
|
||||
_this.getInfoById()
|
||||
})
|
||||
},
|
||||
watch: {
|
||||
'$route': function(res) {
|
||||
let _this = this
|
||||
this.getWdkCollectAndSubscribeInfoByUser()
|
||||
this.getTitle(function() {
|
||||
_this.getInfoById()
|
||||
})
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
iconClick() {
|
||||
if (this.$route.query.goRouter) {
|
||||
this.$router.push({
|
||||
path: this.$route.query.goRouter,
|
||||
query: {
|
||||
searchValue: this.$route.query.searchValue,
|
||||
activeTab: this.$route.query.activeTab
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$router.go(-1)
|
||||
}
|
||||
},
|
||||
getWdkCollectAndSubscribeInfoByUser() {
|
||||
getAction('/phone/search/getWdkCollectAndSubscribeInfoByUser', { id: this.$route.query.id }).then((res) => {
|
||||
if (res.success) {
|
||||
if (res.result.subscribeList && res.result.subscribeList.length > 0) {
|
||||
this.subscribeFlag = '1'
|
||||
} else {
|
||||
this.subscribeFlag = '0'
|
||||
}
|
||||
if (res.result.collectionList && res.result.collectionList.length > 0) {
|
||||
this.collectFlag = '1'
|
||||
} else {
|
||||
this.collectFlag = '0'
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
getTitle(callback) {
|
||||
this.show = true
|
||||
let _id = this.$route.query.id
|
||||
getAction(this.url.getTitle, { id: _id }).then((res) => {
|
||||
if (res.success) {
|
||||
this.serial_number = res.result
|
||||
callback && callback()
|
||||
} else {
|
||||
this.serial_number = ''
|
||||
}
|
||||
})
|
||||
},
|
||||
getInfoById() {
|
||||
let _id = this.$route.query.id
|
||||
getAction(this.url.getInfo, { id: _id }).then((res) => {
|
||||
if (res.success) {
|
||||
this.detailList = res.result
|
||||
this.show = false
|
||||
} else {
|
||||
this.detailList = []
|
||||
}
|
||||
})
|
||||
},
|
||||
collectionClick() {
|
||||
let url = ''
|
||||
if (this.collectFlag == 0 || !this.collectFlag) {
|
||||
url = 'document/bussDocumentLibraryEO/addCollect'
|
||||
} else {
|
||||
url = 'document/bussDocumentLibraryEO/cancelCollect'
|
||||
}
|
||||
getAction(url, { id: this.$route.query.id }).then((res) => {
|
||||
if (res.success) {
|
||||
Toast(this.$t('OperationSuccessful'))
|
||||
this.getWdkCollectAndSubscribeInfoByUser()
|
||||
} else {
|
||||
Toast(this.$t('operationFailed'))
|
||||
}
|
||||
})
|
||||
},
|
||||
subscribeClick() {
|
||||
let url = ''
|
||||
if (this.subscribeFlag == 0 || !this.subscribeFlag) {
|
||||
url = 'document/bussDocumentLibraryEO/addSubscribe'
|
||||
} else {
|
||||
url = 'document/bussDocumentLibraryEO/cancelSubscribe'
|
||||
}
|
||||
getAction(url, { id: this.$route.query.id }).then((res) => {
|
||||
if (res.success) {
|
||||
Toast(this.$t('OperationSuccessful'))
|
||||
this.getWdkCollectAndSubscribeInfoByUser()
|
||||
} else {
|
||||
Toast(this.$t('operationFailed'))
|
||||
}
|
||||
})
|
||||
},
|
||||
getPage() {
|
||||
let query = {
|
||||
pageNo: this.pageNo,
|
||||
pageSize: 10,
|
||||
bussDocumentLibraryId: this.$route.query.id
|
||||
}
|
||||
getAction(this.url.getPage, query).then((res) => {
|
||||
if (res.success) {
|
||||
if (res.result.records.length > 0 && this.pageNo > 1) {
|
||||
this.dataGrad = this.dataGrad.concat(res.result.records)
|
||||
} else if (res.result.records.length > 0 && this.pageNo == 1) {
|
||||
this.dataGrad = res.result.records
|
||||
} else if (res.result.records.length == 0) {
|
||||
this.finished = true
|
||||
}
|
||||
this.loading = false
|
||||
} else {
|
||||
this.dataGrad = []
|
||||
}
|
||||
})
|
||||
},
|
||||
onLoad() {
|
||||
if (this.finished) {
|
||||
this.dataGrad = []
|
||||
this.finished = false
|
||||
} else {
|
||||
this.pageNo++
|
||||
this.getPage()
|
||||
}
|
||||
},
|
||||
fileClick(item) {
|
||||
kkFileView(item.fileName, item.id)
|
||||
},
|
||||
urlClick(item) {
|
||||
window.open(item.value)
|
||||
},
|
||||
numClick(item) {
|
||||
this.$router.push({
|
||||
path: '/phoneDocumentDetails',
|
||||
query: {
|
||||
id: item.id
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.box {
|
||||
padding: 0 0.4rem 0.4rem 0.4rem;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.fixed {
|
||||
/*position: fixed;*/
|
||||
/*top: 0;*/
|
||||
/*left: 0;*/
|
||||
/*width: 100%;*/
|
||||
/*z-index: 1000;*/
|
||||
/*background: #fff;*/
|
||||
/*padding-top: 0.4rem;*/
|
||||
}
|
||||
|
||||
.header-search {
|
||||
/*padding-left: 0.4rem;*/
|
||||
/*padding-right: 0.4rem;*/
|
||||
width: 100%;
|
||||
display: flex;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
padding-top: 0.4rem;
|
||||
background: #fff;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.icon {
|
||||
font-size: 0.66rem;
|
||||
width: 0.7rem;
|
||||
}
|
||||
|
||||
.header-search-text {
|
||||
font-size: 0.44rem;
|
||||
font-family: PingFang SC-Medium, PingFang SC;
|
||||
font-weight: 600;
|
||||
color: #040B29;
|
||||
margin-left: 0.2rem;
|
||||
word-break: break-all;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
text-overflow: ellipsis;
|
||||
/*! autoprefixer: off */
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 2;
|
||||
/*! autoprefixer: on;*/
|
||||
text-justify: inter-ideograph;
|
||||
}
|
||||
|
||||
.header-right {
|
||||
margin-top: 0.4rem;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.header-right-text {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-right: 0.4rem;
|
||||
}
|
||||
|
||||
.header-right-text:last-child {
|
||||
margin-right: 0.1rem;
|
||||
}
|
||||
|
||||
.header-right-text img {
|
||||
width: 0.4rem;
|
||||
}
|
||||
|
||||
.header-right-text span {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #000000;
|
||||
margin-left: 0.1rem;
|
||||
}
|
||||
|
||||
.collapse {
|
||||
margin-top: 0.6rem;
|
||||
}
|
||||
|
||||
::v-deep .van-cell {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
::v-deep .van-cell::after {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
::v-deep .van-collapse-item--border::after {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
::v-deep .van-hairline--top-bottom::after, .van-hairline-unset--top-bottom::after {
|
||||
border-width: 0;
|
||||
}
|
||||
|
||||
::v-deep .van-cell__title span {
|
||||
font-size: 0.44rem;
|
||||
font-family: PingFang SC-Medium, PingFang SC;
|
||||
font-weight: 600;
|
||||
color: #040B29;
|
||||
}
|
||||
|
||||
::v-deep .collapse .van-icon {
|
||||
font-size: 0.44rem;
|
||||
color: #040B29;
|
||||
}
|
||||
|
||||
::v-deep .van-collapse-item {
|
||||
margin-bottom: 0.6rem;
|
||||
}
|
||||
|
||||
.content-box-type-box {
|
||||
margin-top: 0.08rem;
|
||||
margin-bottom: 0.4rem;
|
||||
}
|
||||
|
||||
.content-box-type {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.content-box-type-box:last-child {
|
||||
margin-bottom: 0.1rem;
|
||||
}
|
||||
|
||||
.content-box-left {
|
||||
display: inline-block;
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #6F7385;
|
||||
flex: auto;
|
||||
min-width: 2rem;
|
||||
}
|
||||
|
||||
.content-box-left-num {
|
||||
display: inline-block;
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #6F7385;
|
||||
width: 100%;
|
||||
flex: none;
|
||||
}
|
||||
|
||||
.content-box-text-num {
|
||||
text-align: left;
|
||||
width: 100%;
|
||||
margin-top: 0.2rem;
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #01A0AC;
|
||||
word-break: break-all;
|
||||
flex: none;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.content-box-text {
|
||||
text-align: right;
|
||||
margin-left: 0.3rem;
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #040B29;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
::v-deep .van-collapse-item__content {
|
||||
padding: 0.5rem 0;
|
||||
}
|
||||
|
||||
.textInformation {
|
||||
padding: 0.2rem 0 0 0;
|
||||
}
|
||||
|
||||
.textInformationText {
|
||||
margin-bottom: 0.5rem;
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #040B29;
|
||||
}
|
||||
|
||||
.textInformationFile {
|
||||
margin-bottom: 0.3rem;
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #01A0AC;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.Implementation {
|
||||
width: 100%;
|
||||
padding: 0.2rem 0 0.3rem 0;
|
||||
border-bottom: 1px solid #E6E7EC;
|
||||
margin-bottom: 0.2rem;
|
||||
}
|
||||
|
||||
.ImplementationText {
|
||||
font-size: 0.42rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #040B29;
|
||||
}
|
||||
|
||||
.ImplementationBox {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-top: 0.2rem;
|
||||
margin-bottom: 0.2rem;
|
||||
}
|
||||
|
||||
.ImplementationBoxLeft {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #868A9A;
|
||||
}
|
||||
|
||||
.ImplementationBoxRight {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #868A9A;
|
||||
}
|
||||
|
||||
.ImplementationButtom {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #41475E;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
::v-deep .van-loading {
|
||||
color: #fff;
|
||||
font-size: 0.36rem;
|
||||
}
|
||||
|
||||
::v-deep .van-loading__text {
|
||||
color: #fff;
|
||||
font-size: 0.46rem;
|
||||
}
|
||||
|
||||
::v-deep .van-overlay {
|
||||
z-index: 1001;
|
||||
text-align: center;
|
||||
line-height: 30;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.header-right-text-color {
|
||||
color: #01A0AC !important;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,211 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="header-search">
|
||||
<van-icon @click="iconClick" class="icon" name="arrow-left"/>
|
||||
<span class="header-search-text">
|
||||
{{$route.query.projectName + ' ' + $t('preHomoFlow')}}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<van-list
|
||||
v-model="loading"
|
||||
:finished="finished"
|
||||
:finished-text="$t('noMore')"
|
||||
:loading-text="$t('loading')"
|
||||
@load="onLoad"
|
||||
>
|
||||
<div class="content-text" @click="handlingClick(item)" v-for="(item,index) in list">
|
||||
<div class="content-text-left">
|
||||
<div class="content-text-top">
|
||||
<span class="content-text-top-left">
|
||||
{{item.category}}
|
||||
</span>
|
||||
<span class="content-text-top-right">
|
||||
{{item.inspectionItem}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="content-text-button">
|
||||
<span>{{item.serialNumber}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-text-right">
|
||||
<van-icon name="arrow"/>
|
||||
</div>
|
||||
</div>
|
||||
</van-list>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction, deleteAction, downloadFile } from '@/api/manage'
|
||||
|
||||
export default {
|
||||
name: 'phoneHandlingPage',
|
||||
data() {
|
||||
return {
|
||||
page: '/phone/toDoCenter/queryPreHomoPage',
|
||||
list: [],
|
||||
pageNo: 0,
|
||||
pageSize: 10,
|
||||
loading: false,
|
||||
finished: false,
|
||||
isDisplay:false,
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
document.title = 'NIO GRP'
|
||||
this.isDisplay = JSON.parse(this.$route.query.isDisplay)
|
||||
},
|
||||
methods: {
|
||||
iconClick() {
|
||||
if (this.$route.query.goRouter) {
|
||||
this.$router.push({
|
||||
path: this.$route.query.goRouter,
|
||||
query: {
|
||||
searchValue: this.$route.query.searchValue,
|
||||
activeTab: this.$route.query.activeTab
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$router.go(-1)
|
||||
}
|
||||
},
|
||||
handlingClick(item) {
|
||||
this.$router.push({
|
||||
path: '/phonePreHomoMangement',
|
||||
query: {
|
||||
taskDefinitionKey: this.$route.query.taskDefinitionKey,
|
||||
projectName:this.$route.query.projectName,
|
||||
id: item.id,
|
||||
isDisplay:this.isDisplay
|
||||
}
|
||||
})
|
||||
},
|
||||
onLoad() {
|
||||
if (this.finished) {
|
||||
this.list = []
|
||||
this.finished = false
|
||||
} else {
|
||||
this.pageNo++
|
||||
this.getPage()
|
||||
}
|
||||
},
|
||||
getPage() {
|
||||
let params = {
|
||||
pageNo: this.pageNo,
|
||||
pageSize: this.pageSize,
|
||||
taskDefinitionKey: this.$route.query.taskDefinitionKey,
|
||||
projectLibraryId: this.$route.query.projectLibraryId
|
||||
}
|
||||
getAction(this.page, params).then(res => {
|
||||
if (res.success) {
|
||||
if (res.result.records.length > 0 && this.pageNo > 1) {
|
||||
this.list = this.list.concat(res.result.records)
|
||||
} else if (res.result.records.length > 0 && this.pageNo == 1) {
|
||||
this.list = res.result.records
|
||||
} else if (res.result.records.length == 0) {
|
||||
this.finished = true
|
||||
}
|
||||
this.loading = false
|
||||
} else {
|
||||
this.subscribeList = []
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.box {
|
||||
padding: 0 0.4rem 0.4rem 0.4rem;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.header-search {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
padding-top: 0.4rem;
|
||||
background: #fff;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.icon {
|
||||
font-size: 0.66rem;
|
||||
width: 0.7rem;
|
||||
}
|
||||
|
||||
.header-search-text {
|
||||
font-size: 0.44rem;
|
||||
font-family: PingFang SC-Medium, PingFang SC;
|
||||
font-weight: 600;
|
||||
color: #040B29;
|
||||
margin-left: 0.2rem;
|
||||
word-break: break-all;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
text-overflow: ellipsis;
|
||||
/*! autoprefixer: off */
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 2;
|
||||
/*! autoprefixer: on;*/
|
||||
text-justify: inter-ideograph;
|
||||
}
|
||||
|
||||
.content {
|
||||
margin-top: 0.36rem;
|
||||
}
|
||||
|
||||
.content-text {
|
||||
padding: 0.3rem 0;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
border-bottom: 0.02rem solid #E6E7EC;
|
||||
}
|
||||
|
||||
.content-text-left {
|
||||
width: calc(100% - 1rem);
|
||||
}
|
||||
|
||||
.content-text-right {
|
||||
width: 1rem;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.content-text-top {
|
||||
font-size: 0.42rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #040B29;
|
||||
}
|
||||
|
||||
.content-text-button {
|
||||
font-size: 0.42rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #595E72;
|
||||
margin-top: 0.13rem;
|
||||
}
|
||||
|
||||
.content-text-right .van-icon {
|
||||
font-size: 0.5rem;
|
||||
color: #040B29;
|
||||
}
|
||||
|
||||
.content-text-top-right {
|
||||
margin-left: 0.3rem;
|
||||
}
|
||||
|
||||
.content-text-top-left {
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.content-text-top-right {
|
||||
word-break: break-all;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,284 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="box-header">
|
||||
<div class="img-header">
|
||||
<img src="~@/assets/logoOne.png" alt="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="name-header">
|
||||
{{user.username}}
|
||||
</div>
|
||||
<div class="eamil-header">
|
||||
{{user.email}}
|
||||
</div>
|
||||
|
||||
<div class="content-box-top" @click="recentBrowsingClick">
|
||||
<img src="~@/assets/icon_eye.png" class="content-box-img" alt="">
|
||||
<span class="content-box-text">
|
||||
{{$t('recentBrowsing')}}
|
||||
</span>
|
||||
<van-icon class="icon" name="arrow"/>
|
||||
</div>
|
||||
<div class="content-box" @click="collectionClick">
|
||||
<img src="~@/assets/icon_star.png" class="content-box-img" alt="">
|
||||
<span class="content-box-text">
|
||||
{{$t('myCollection')}}
|
||||
</span>
|
||||
<van-icon class="icon" name="arrow"/>
|
||||
</div>
|
||||
<div class="content-box" @click="subscribeClick">
|
||||
<img src="~@/assets/icon_link.png" class="content-box-img" alt="">
|
||||
<span class="content-box-text">
|
||||
{{$t('mySubscription')}}
|
||||
</span>
|
||||
<van-icon class="icon" name="arrow"/>
|
||||
</div>
|
||||
<!-- <div class="content-box">-->
|
||||
<!-- <img src="~@/assets/icon_assign.png" class="content-box-img" alt="">-->
|
||||
<!-- <span class="content-box-text">-->
|
||||
<!-- 退出登录-->
|
||||
<!-- </span>-->
|
||||
<!-- <van-icon class="icon" name="arrow"/>-->
|
||||
<!-- </div>-->
|
||||
<div class="content-box">
|
||||
<img src="~@/assets/yuyan.png" class="content-box-img" alt="">
|
||||
<span class="content-box-text-one">
|
||||
{{$t('languageSwitching')}}
|
||||
</span>
|
||||
<span class="lang" v-if="checked">En</span>
|
||||
<span class="lang" v-else>中文</span>
|
||||
<van-switch @change="checkedChange" :loading="isLoading" v-model="checked"/>
|
||||
</div>
|
||||
<van-tabbar v-model="active" @change="onChange">
|
||||
<van-tabbar-item name="search" icon="search">{{$t('phoneSearch')}}</van-tabbar-item>
|
||||
<van-tabbar-item name="toDoCenter" icon="bell">{{$t('todocenter')}}</van-tabbar-item>
|
||||
<van-tabbar-item name="taskData" icon="underway">{{$t('taskStatistics')}}</van-tabbar-item>
|
||||
<van-tabbar-item name="home" icon="manager">{{$t('mine')}}</van-tabbar-item>
|
||||
</van-tabbar>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Vue from 'vue'
|
||||
import store from '../../store'
|
||||
import router, { resetRouter } from '../../router'
|
||||
import moment from 'moment'
|
||||
import { mapActions, mapGetters, mapState } from 'vuex'
|
||||
import { getFileAccessHttpUrl, getAction } from '@/api/manage'
|
||||
import enUS from 'ant-design-vue/lib/locale/en_US'
|
||||
import zhCN from 'ant-design-vue/lib/locale-provider/zh_CN'
|
||||
import { UI_CACHE_DB_DICT_DATA, ACCESS_TOKEN } from '@/store/mutation-types'
|
||||
import { generateIndexRouter } from '@/utils/util'
|
||||
|
||||
moment.locale('zh-cn')
|
||||
const EN = 'en-us'
|
||||
const ZH = 'zh-cn'
|
||||
export default {
|
||||
name: 'phoneHome',
|
||||
data() {
|
||||
return {
|
||||
active: 'home',
|
||||
checked: localStorage.getItem('language') == 'en-us' ? true : false,
|
||||
isLoading: false,
|
||||
user: {}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
document.title = 'NIO GRP'
|
||||
this.user = this.userInfo()
|
||||
},
|
||||
methods: {
|
||||
...mapGetters(['userInfo']),
|
||||
onChange(value) {
|
||||
if (value == 'toDoCenter') {
|
||||
this.$router.push({
|
||||
path: '/phoneToDoCenter'
|
||||
})
|
||||
} else if (value == 'taskData') {
|
||||
this.$router.push({
|
||||
path: '/phoneTaskData'
|
||||
})
|
||||
} else if (value == 'search') {
|
||||
this.$router.push({
|
||||
path: '/phoneSearch'
|
||||
})
|
||||
}
|
||||
},
|
||||
subscribeClick() {
|
||||
this.$router.push({
|
||||
path: '/phoneMySubscribe'
|
||||
})
|
||||
},
|
||||
collectionClick() {
|
||||
this.$router.push({
|
||||
path: '/phoneMyCollection'
|
||||
})
|
||||
},
|
||||
recentBrowsingClick() {
|
||||
this.$router.push({
|
||||
path: '/phoneRecentBrowsing'
|
||||
})
|
||||
},
|
||||
checkedChange(value) {
|
||||
if (value) {
|
||||
this.changeLocale('en-us')
|
||||
} else {
|
||||
this.changeLocale('zh-cn')
|
||||
}
|
||||
},
|
||||
changeLocale(localeval) {
|
||||
this.isLoading = true
|
||||
switch (localeval) {
|
||||
case 'zh-cn':
|
||||
localStorage.setItem('language', 'zh-cn')
|
||||
break
|
||||
case 'en-us':
|
||||
localStorage.setItem('language', 'en-us')
|
||||
break
|
||||
}
|
||||
getAction('/sys/dict/queryAllDictItemsByCut', {}).then((res) => {
|
||||
if (res.success) {
|
||||
Vue.ls.remove(UI_CACHE_DB_DICT_DATA)
|
||||
Vue.ls.set(UI_CACHE_DB_DICT_DATA, res.result, 7 * 24 * 60 * 60 * 1000)
|
||||
store.dispatch('GetPermissionList').then(res => {
|
||||
const menuData = res.result.menu
|
||||
resetRouter()
|
||||
let constRoutes = []
|
||||
constRoutes = generateIndexRouter(menuData)
|
||||
router.addRoutes(constRoutes)
|
||||
this.$root.Bus.$emit('switchLanguage', localeval)
|
||||
this.isLoading = false
|
||||
this.localeval = localeval
|
||||
if (localeval === EN) {
|
||||
moment.locale(EN)
|
||||
this.$i18n.locale = EN
|
||||
this.locale = enUS
|
||||
} else {
|
||||
moment.locale(ZH)
|
||||
this.$i18n.locale = ZH
|
||||
this.locale = zhCN
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
::v-deep .van-tabbar-item--active {
|
||||
color: #00B3BE;
|
||||
}
|
||||
|
||||
.box {
|
||||
padding: 0.4rem;
|
||||
}
|
||||
|
||||
.box-header {
|
||||
padding-top: 0.8rem;
|
||||
text-align: center;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.img-header {
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
border-radius: 50%;
|
||||
background: #D9D9D9;
|
||||
line-height: 3rem;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.name-header {
|
||||
font-size: 0.4rem;
|
||||
font-family: PingFang SC-Medium, PingFang SC;
|
||||
font-weight: 600;
|
||||
color: #040B29;
|
||||
text-align: center;
|
||||
margin-top: 0.5rem;
|
||||
}
|
||||
|
||||
.eamil-header {
|
||||
font-size: 0.36rem;
|
||||
font-family: PingFang SC-Medium, PingFang SC;
|
||||
font-weight: 600;
|
||||
color: #595E72;
|
||||
text-align: center;
|
||||
margin-top: 0.2rem;
|
||||
}
|
||||
|
||||
.content-box-top {
|
||||
border-top: 1px solid #E6E7EC;
|
||||
margin-top: 0.8rem;
|
||||
height: 1.6rem;
|
||||
border-bottom: 1px solid #E6E7EC;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.content-box {
|
||||
height: 1.6rem;
|
||||
border-bottom: 1px solid #E6E7EC;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.content-box-img {
|
||||
width: 0.52rem;
|
||||
}
|
||||
|
||||
.content-box-text {
|
||||
font-size: 0.4rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 600;
|
||||
color: #040B29;
|
||||
margin-left: 0.2rem;
|
||||
width: calc(100% - 0.9rem);
|
||||
}
|
||||
|
||||
.content-box-text-one {
|
||||
font-size: 0.4rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 600;
|
||||
color: #040B29;
|
||||
margin-left: 0.2rem;
|
||||
width: calc(100% - 1.8rem);
|
||||
}
|
||||
|
||||
.icon {
|
||||
font-size: 0.46rem;
|
||||
font-weight: 500;
|
||||
color: #040B29;
|
||||
}
|
||||
|
||||
::v-deep .van-switch {
|
||||
background-color: #BBBDC7;
|
||||
height: 0.6rem;
|
||||
width: 1.4rem;
|
||||
}
|
||||
|
||||
::v-deep .van-switch__node {
|
||||
width: 0.6rem;
|
||||
height: 0.6rem;
|
||||
}
|
||||
|
||||
::v-deep .van-switch--on {
|
||||
background-color: #00B3BE;
|
||||
}
|
||||
|
||||
::v-deep .van-switch--on .van-switch__node {
|
||||
transform: translateX(0.56rem)
|
||||
}
|
||||
|
||||
.lang {
|
||||
font-size: 0.36rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #595E72;
|
||||
display: inline-block;
|
||||
width: 1rem;
|
||||
margin-right: 0.2rem;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,324 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="header-search">
|
||||
<van-icon @click="iconClick" class="icon" name="arrow-left"/>
|
||||
<span class="header-search-text">
|
||||
{{$t('myCollection')}}
|
||||
</span>
|
||||
</div>
|
||||
<van-tabs v-model="activeTab" @change="activeChange">
|
||||
<van-tab name="documentLibrary" :title="$t('DocumentLibrary')"></van-tab>
|
||||
<van-tab name="problemKnowledgeBase" :title="$t('problemKnowledgeBase')"></van-tab>
|
||||
</van-tabs>
|
||||
<div class="content" v-if="activeTab == 'documentLibrary'">
|
||||
<van-list
|
||||
v-model="loading"
|
||||
:finished="finished"
|
||||
:finished-text="$t('noMore')"
|
||||
:loading-text="$t('loading')"
|
||||
@load="onLoad"
|
||||
>
|
||||
<div class="content-text" @click="collectionClick(item)" v-for="(item,index) in collectionList" :key="index">
|
||||
<div class="content-text-left">
|
||||
<div class="content-text-top">
|
||||
<span class="content-text-top-left">
|
||||
{{item.serialNumber}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="content-text-button">
|
||||
<span> {{item.title}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-text-right">
|
||||
<van-icon name="arrow"/>
|
||||
</div>
|
||||
</div>
|
||||
</van-list>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="content" v-else-if="activeTab == 'problemKnowledgeBase'">
|
||||
<van-list
|
||||
v-model="problemLoading"
|
||||
:finished="problemFinished"
|
||||
:finished-text="$t('noMore')"
|
||||
:loading-text="$t('loading')"
|
||||
@load="problemOnLoad"
|
||||
>
|
||||
<div class="content-text" @click="problemKnowledgeBaseClick(item)" v-for="(item,index) in problemList"
|
||||
:key="index">
|
||||
<div class="content-text-left">
|
||||
<!-- <div class="content-text-top">-->
|
||||
<!-- <span class="content-text-top-left">-->
|
||||
<!-- {{item.serialNumber}}-->
|
||||
<!-- </span>-->
|
||||
<!-- </div>-->
|
||||
<div class="content-text-button">
|
||||
<span> {{item.title}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-text-right">
|
||||
<van-icon name="arrow"/>
|
||||
</div>
|
||||
</div>
|
||||
</van-list>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction, deleteAction, downloadFile } from '@/api/manage'
|
||||
|
||||
export default {
|
||||
name: 'phoneMyCollection',
|
||||
data() {
|
||||
return {
|
||||
collectionList: [],
|
||||
pageNo: 0,
|
||||
pageSize: 10,
|
||||
loading: false,
|
||||
finished: false,
|
||||
activeTab: 'documentLibrary',
|
||||
problemList: [],
|
||||
problemLoading: false,
|
||||
problemFinished: false,
|
||||
problemPageNo: 1,
|
||||
url: {
|
||||
documentLibraryUrl: 'collection/onlCgformCollection/page',
|
||||
problemKnowledgeBaseUrl: '/problemKnowledgeBase/problemKnowledgeBaseCollectEO/queryCollectPageList'
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
document.title = 'NIO GRP'
|
||||
// this.getCollection()
|
||||
},
|
||||
methods: {
|
||||
iconClick() {
|
||||
this.$router.go(-1)
|
||||
},
|
||||
activeChange() {
|
||||
if (this.activeTab == 'documentLibrary') {
|
||||
this.loading = true
|
||||
this.collectionList = []
|
||||
this.finished = false
|
||||
this.pageNo = 1
|
||||
this.getCollection()
|
||||
} else if (this.activeTab == 'problemKnowledgeBase') {
|
||||
this.problemLoading = true
|
||||
this.problemList = []
|
||||
this.problemFinished = false
|
||||
this.problemPageNo = 1
|
||||
this.getProblem()
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
if (this.finished) {
|
||||
this.collectionList = []
|
||||
this.finished = false
|
||||
} else {
|
||||
this.pageNo++
|
||||
this.getCollection()
|
||||
}
|
||||
},
|
||||
problemOnLoad() {
|
||||
if (this.problemFinished) {
|
||||
this.problemList = []
|
||||
this.problemFinished = false
|
||||
} else {
|
||||
this.problemPageNo++
|
||||
this.getProblem()
|
||||
}
|
||||
},
|
||||
getProblem() {
|
||||
let params = {
|
||||
pageNo: this.problemPageNo,
|
||||
pageSize: 10
|
||||
}
|
||||
getAction(this.url.problemKnowledgeBaseUrl, params).then(res => {
|
||||
if (res.success) {
|
||||
let result = res.result ? res.result.records : []
|
||||
if (result.length > 0 && this.problemPageNo > 1) {
|
||||
this.problemList = this.problemList.concat(result)
|
||||
} else if (result.length > 0 && this.problemPageNo == 1) {
|
||||
this.problemList = result
|
||||
} else if (result.length == 0) {
|
||||
this.problemFinished = true
|
||||
}
|
||||
this.problemLoading = false
|
||||
} else {
|
||||
this.problemList = []
|
||||
}
|
||||
})
|
||||
},
|
||||
getCollection() {
|
||||
let params = {
|
||||
pageNo: this.pageNo,
|
||||
pageSize: this.pageSize
|
||||
}
|
||||
postAction(this.url.documentLibraryUrl, params).then(res => {
|
||||
if (res.success) {
|
||||
let result = res.result ? res.result.records : []
|
||||
if (result.length > 0 && this.pageNo > 1) {
|
||||
this.collectionList = this.collectionList.concat(result)
|
||||
} else if (result.length > 0 && this.pageNo == 1) {
|
||||
this.collectionList = result
|
||||
} else if (result.length == 0) {
|
||||
this.finished = true
|
||||
}
|
||||
this.loading = false
|
||||
} else {
|
||||
this.collectionList = []
|
||||
}
|
||||
})
|
||||
},
|
||||
recentBrowseAdd(browseType, id) {
|
||||
let query = {
|
||||
browseType: browseType,
|
||||
browseDataId: id
|
||||
}
|
||||
postAction('/phone/recentBrowse/add', query).then((res) => {
|
||||
})
|
||||
},
|
||||
collectionClick(item) {
|
||||
this.recentBrowseAdd('Document Library', item.documentId)
|
||||
this.$router.push({
|
||||
path: '/phoneDocumentDetails',
|
||||
query: {
|
||||
id: item.documentId
|
||||
}
|
||||
})
|
||||
},
|
||||
problemKnowledgeBaseClick(item) {
|
||||
this.recentBrowseAdd('Knowledge sharing', item.id)
|
||||
this.$router.push({
|
||||
path: '/phoneProblemKnowledgeBase',
|
||||
query: {
|
||||
id: item.id
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.box {
|
||||
padding: 0 0.4rem 0.4rem 0.4rem;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
::v-deep .van-tabbar-item--active {
|
||||
color: #00B3BE;
|
||||
}
|
||||
|
||||
.header-search {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
padding-top: 0.4rem;
|
||||
background: #fff;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.icon {
|
||||
font-size: 0.66rem;
|
||||
width: 0.7rem;
|
||||
}
|
||||
|
||||
.header-search-text {
|
||||
font-size: 0.44rem;
|
||||
font-family: PingFang SC-Medium, PingFang SC;
|
||||
font-weight: 600;
|
||||
color: #040B29;
|
||||
margin-left: 0.2rem;
|
||||
word-break: break-all;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
text-overflow: ellipsis;
|
||||
/*! autoprefixer: off */
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 2;
|
||||
/*! autoprefixer: on;*/
|
||||
text-justify: inter-ideograph;
|
||||
}
|
||||
|
||||
.content {
|
||||
margin-top: 0.26rem;
|
||||
}
|
||||
|
||||
.content-text {
|
||||
padding: 0.3rem 0;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
border-bottom: 0.02rem solid #E6E7EC;
|
||||
}
|
||||
|
||||
.content-text-left {
|
||||
width: calc(100% - 1rem);
|
||||
}
|
||||
|
||||
.content-text-right {
|
||||
width: 1rem;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.content-text-top {
|
||||
font-size: 0.42rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #040B29;
|
||||
}
|
||||
|
||||
.content-text-button {
|
||||
font-size: 0.42rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #595E72;
|
||||
margin-top: 0.13rem;
|
||||
word-break: break-all;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
text-overflow: ellipsis;
|
||||
/*! autoprefixer: off */
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 3;
|
||||
/*! autoprefixer: on;*/
|
||||
text-justify: inter-ideograph;
|
||||
}
|
||||
|
||||
.content-text-right .van-icon {
|
||||
font-size: 0.5rem;
|
||||
color: #040B29;
|
||||
}
|
||||
|
||||
.content-text-top-right {
|
||||
margin-left: 0.3rem;
|
||||
}
|
||||
|
||||
::v-deep .van-tab {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #868A9A;
|
||||
flex: none;
|
||||
margin-right: 0.2rem;
|
||||
}
|
||||
|
||||
::v-deep .van-tab--active {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Medium, PingFang SC;
|
||||
font-weight: 600;
|
||||
color: #040B29;
|
||||
}
|
||||
|
||||
::v-deep .van-tabs {
|
||||
margin-top: 0.36rem;
|
||||
}
|
||||
|
||||
::v-deep .van-tabs__line {
|
||||
background-color: #00B3BE;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,203 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="header-search">
|
||||
<van-icon @click="iconClick" class="icon" name="arrow-left"/>
|
||||
<span class="header-search-text">
|
||||
{{$t('mySubscription')}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="content">
|
||||
<van-list
|
||||
v-model="loading"
|
||||
:finished="finished"
|
||||
:finished-text="$t('noMore')"
|
||||
:loading-text="$t('loading')"
|
||||
@load="onLoad"
|
||||
>
|
||||
<div class="content-text" @click="collectionClick(item)" v-for="(item,index) in subscribeList" :key="index">
|
||||
<div class="content-text-left">
|
||||
<div class="content-text-top">
|
||||
<span class="content-text-top-left">
|
||||
{{item.serialNumber}}
|
||||
</span>
|
||||
<!-- <span class="content-text-top-right">-->
|
||||
<!-- 测试检验项目-->
|
||||
<!-- </span>-->
|
||||
</div>
|
||||
<div class="content-text-button">
|
||||
<span>{{item.title}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-text-right">
|
||||
<van-icon name="arrow"/>
|
||||
</div>
|
||||
</div>
|
||||
</van-list>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction, deleteAction, downloadFile } from '@/api/manage'
|
||||
|
||||
export default {
|
||||
name: 'phoneMySubscribe',
|
||||
data() {
|
||||
return {
|
||||
subscribeList: [],
|
||||
pageNo: 0,
|
||||
pageSize: 10,
|
||||
loading: false,
|
||||
finished: false
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
document.title = 'NIO GRP'
|
||||
// this.getSubscribe()
|
||||
},
|
||||
methods: {
|
||||
iconClick() {
|
||||
this.$router.go(-1)
|
||||
},
|
||||
onLoad() {
|
||||
if (this.finished) {
|
||||
this.subscribeList = []
|
||||
this.finished = false
|
||||
} else {
|
||||
this.pageNo++
|
||||
this.getSubscribe()
|
||||
}
|
||||
},
|
||||
getSubscribe() {
|
||||
let params = {
|
||||
pageNo: this.pageNo,
|
||||
pageSize: this.pageSize
|
||||
}
|
||||
postAction(`subscribe/onlCgformSubscribe/page`, params).then(res => {
|
||||
if (res.success) {
|
||||
if (res.result.records.length > 0 && this.pageNo > 1) {
|
||||
this.subscribeList = this.subscribeList.concat(res.result.records)
|
||||
} else if (res.result.records.length > 0 && this.pageNo == 1) {
|
||||
this.subscribeList = res.result.records
|
||||
} else if (res.result.records.length == 0) {
|
||||
this.finished = true
|
||||
}
|
||||
this.loading = false
|
||||
} else {
|
||||
this.subscribeList = []
|
||||
}
|
||||
})
|
||||
},
|
||||
recentBrowseAdd(browseType, id) {
|
||||
let query = {
|
||||
browseType: browseType,
|
||||
browseDataId: id
|
||||
}
|
||||
postAction('/phone/recentBrowse/add', query).then((res) => {
|
||||
})
|
||||
},
|
||||
collectionClick(item) {
|
||||
this.recentBrowseAdd('Document Library', item.documentId)
|
||||
this.$router.push({
|
||||
path: '/phoneDocumentDetails',
|
||||
query: {
|
||||
id: item.documentId
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.box {
|
||||
padding: 0 0.4rem 0.4rem 0.4rem;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.header-search {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
padding-top: 0.4rem;
|
||||
background: #fff;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.icon {
|
||||
font-size: 0.66rem;
|
||||
width: 0.7rem;
|
||||
}
|
||||
|
||||
.header-search-text {
|
||||
font-size: 0.44rem;
|
||||
font-family: PingFang SC-Medium, PingFang SC;
|
||||
font-weight: 600;
|
||||
color: #040B29;
|
||||
margin-left: 0.2rem;
|
||||
word-break: break-all;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
text-overflow: ellipsis;
|
||||
/*! autoprefixer: off */
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 2;
|
||||
/*! autoprefixer: on;*/
|
||||
text-justify: inter-ideograph;
|
||||
}
|
||||
|
||||
.content {
|
||||
margin-top: 0.36rem;
|
||||
}
|
||||
|
||||
.content-text {
|
||||
padding: 0.3rem 0;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
border-bottom: 0.02rem solid #E6E7EC;
|
||||
}
|
||||
|
||||
.content-text-left {
|
||||
width: calc(100% - 1rem);
|
||||
}
|
||||
|
||||
.content-text-right {
|
||||
width: 1rem;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.content-text-top {
|
||||
font-size: 0.42rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #040B29;
|
||||
}
|
||||
|
||||
.content-text-button {
|
||||
font-size: 0.42rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #595E72;
|
||||
margin-top: 0.13rem;
|
||||
word-break: break-all;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
text-overflow: ellipsis;
|
||||
/*! autoprefixer: off */
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 3;
|
||||
/*! autoprefixer: on;*/
|
||||
text-justify: inter-ideograph;
|
||||
}
|
||||
|
||||
.content-text-right .van-icon {
|
||||
font-size: 0.5rem;
|
||||
color: #040B29;
|
||||
}
|
||||
|
||||
.content-text-top-right {
|
||||
margin-left: 0.3rem;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,943 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="header-search">
|
||||
<van-icon @click="iconClick" class="icon" name="arrow-left"/>
|
||||
<span class="header-search-text">
|
||||
{{$route.query.projectName + ' ' + $t('preHomoFlow')}}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<van-collapse class="collapse" v-model="activeNames">
|
||||
<van-collapse-item :title="$t('essentialInformation')" name="1">
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left">{{$t('category')}}</span>
|
||||
<span class="content-box-text">{{queryForm.category || '--'}}</span>
|
||||
</div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left">{{$t('inspectionItems')}}</span>
|
||||
<span class="content-box-text">{{queryForm.inspectionItem || '--'}}</span>
|
||||
</div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left">{{$t('configurationItem')}}</span>
|
||||
<span class="content-box-text">{{queryForm.configItem || '--'}}</span>
|
||||
</div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left">WVTA ID</span>
|
||||
<span class="content-box-text">{{queryForm.wvtaId || '--'}}</span>
|
||||
</div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left">{{$t('standardNo')}}</span>
|
||||
<span class="content-box-text content-box-text-color"
|
||||
@click="standardClick(queryForm)">{{queryForm.serialNumber || '--'}}</span>
|
||||
</div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left">{{$t('areaOfResponsibility')}}</span>
|
||||
<span class="content-box-text">{{queryForm.dutyTerritoryName || '--'}}</span>
|
||||
</div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left">{{$t('engineeringInterfacePerson')}}</span>
|
||||
<span class="content-box-text">{{queryForm.sdtName || '--'}}</span>
|
||||
</div>
|
||||
</van-collapse-item>
|
||||
|
||||
<van-collapse-item :title="$t('TaskRequirements')" name="2">
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left">{{$t('personLiable')}}</span>
|
||||
<span class="content-box-text">{{queryForm.dutyPersonName || '--'}}</span>
|
||||
</div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left">{{$t('cutoffTime')}}</span>
|
||||
<span class="content-box-text">{{queryForm.endTime || '--'}}</span>
|
||||
</div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left">{{$t('typeOfDeliverables')}}</span>
|
||||
<span class="content-box-text">{{queryForm.deliverableTypeName || '--'}}</span>
|
||||
</div>
|
||||
<div class="content-box-type-text">
|
||||
{{$t('deliverableTemplate')}}
|
||||
</div>
|
||||
<div class="content-box-type-text-one"
|
||||
style="color: #040B29"
|
||||
v-if="dataSourceFile && dataSourceFile.length == 0">
|
||||
--
|
||||
</div>
|
||||
<div class="content-box-type-text-one"
|
||||
v-else
|
||||
@click="deliverablesResultFileClick(item)"
|
||||
v-for="item in dataSourceFile">
|
||||
{{item.fileName}}
|
||||
</div>
|
||||
<!-- <div class="content-box-type-text">-->
|
||||
<!-- {{$t('descriptionDeliverables')}}-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="content-box-type-text-Two">-->
|
||||
<!-- {{queryProject[queryData.remarks] || '--'}}-->
|
||||
<!-- </div>-->
|
||||
</van-collapse-item>
|
||||
<van-collapse-item v-if="queryForm.deliveryResult"
|
||||
:title="$t('DeliverablesResult')" name="3">
|
||||
<!-- v-for="item in deliverablesResultFile"-->
|
||||
<!-- {{item.fileName}}-->
|
||||
<div class="content-box-type-text-one"
|
||||
v-if="queryForm.valueType == 'file'"
|
||||
v-for="item in deliveryResultList"
|
||||
@click="deliverablesResultFileClick(item)">
|
||||
{{item.fileName}}
|
||||
</div>
|
||||
<div class="content-box-type-text-one-select"
|
||||
v-if="queryForm.valueType == 'select'">
|
||||
{{queryForm.deliveryResult == '1' ? $t('yes') :$t('not')}}
|
||||
</div>
|
||||
<div class="content-box-type-text-one-select"
|
||||
v-if="queryForm.valueType == 'text'">
|
||||
{{queryForm.deliveryResult}}
|
||||
</div>
|
||||
</van-collapse-item>
|
||||
<van-collapse-item :title="$t('taskHandling')" v-if="!isDisplay" name="4">
|
||||
<van-form @submit="onSubmit" ref="form">
|
||||
<div class="resultofhandlingClass"
|
||||
v-if="$route.query.taskDefinitionKey == 'Task Review' ||
|
||||
$route.query.taskDefinitionKey == 'Task responsibility confirmation' ||
|
||||
($route.query.taskDefinitionKey == 'Task handling' && (queryForm.valueType == 'file' ||
|
||||
queryForm.valueType == 'text' || queryForm.valueType == 'select'))"
|
||||
style="margin-bottom: 0.1rem">
|
||||
<span>{{$t('resultofhandling')}}</span>
|
||||
<span class="requiredClass"
|
||||
v-if="$route.query.taskDefinitionKey == 'Task Review' ||
|
||||
$route.query.taskDefinitionKey == 'Task responsibility confirmation'">
|
||||
*</span>
|
||||
</div>
|
||||
<van-field name="disposeResult"
|
||||
class="uploader"
|
||||
v-if="$route.query.taskDefinitionKey == 'Task Review' ||
|
||||
$route.query.taskDefinitionKey == 'Task responsibility confirmation'"
|
||||
:rules="[{ required: true, message: $t('resultofhandling') + $t('cannotEmpty') }]">
|
||||
<template #input>
|
||||
<van-radio-group @change="disposeResultChange" v-model="form.disposeResult" direction="horizontal">
|
||||
<van-radio name="rzgcssc_tg" v-if="$route.query.taskDefinitionKey == 'Task Review'">
|
||||
{{$t('reviewAndPass')}}
|
||||
</van-radio>
|
||||
<van-radio name="rzgcssc_th" v-if="$route.query.taskDefinitionKey == 'Task Review'">
|
||||
{{$t('reviewAndReturn')}}
|
||||
</van-radio>
|
||||
<van-radio name="zrrjsrw" v-if="$route.query.taskDefinitionKey == 'Task responsibility confirmation'">
|
||||
{{$t('missionAccepted')}}
|
||||
</van-radio>
|
||||
<van-radio name="zrrjjrw" v-if="$route.query.taskDefinitionKey == 'Task responsibility confirmation'">
|
||||
{{$t('missionRejection')}}
|
||||
</van-radio>
|
||||
</van-radio-group>
|
||||
</template>
|
||||
</van-field>
|
||||
<van-field
|
||||
v-if="form.disposeResult == 'rzgcssc_tg'"
|
||||
v-model.trim="form.reportNumber"
|
||||
rows="4"
|
||||
name="reportNumber"
|
||||
class="textarea"
|
||||
autosize
|
||||
:label="$t('reportNo')"
|
||||
maxlength="200"
|
||||
:placeholder="$t('pleaseEnter')+$t('reportNo')"
|
||||
/>
|
||||
<van-field
|
||||
v-if="form.disposeResult == 'rzgcssc_tg'"
|
||||
v-model.trim="form.productModel"
|
||||
rows="4"
|
||||
name="productModel"
|
||||
class="textarea"
|
||||
autosize
|
||||
:label="$t('productModel')"
|
||||
maxlength="200"
|
||||
:placeholder="$t('pleaseEnter')+$t('productModel')"
|
||||
/>
|
||||
<van-field
|
||||
v-if="form.disposeResult == 'rzgcssc_tg'"
|
||||
v-model.trim="form.productionEnterpriseName"
|
||||
rows="4"
|
||||
class="textarea productionEnterpriseName"
|
||||
autosize
|
||||
name="productionEnterpriseName"
|
||||
:label="$t('nameOfManufacturer')"
|
||||
maxlength="200"
|
||||
:placeholder="$t('pleaseEnter')+$t('nameOfManufacturer')"
|
||||
/>
|
||||
|
||||
<div class="resultofhandlingClass"
|
||||
v-if="form.disposeResult == 'rzgcssc_th' || form.disposeResult == 'zrrjjrw'">
|
||||
<span>{{$t('feedback')}}</span>
|
||||
<span class="requiredClass">*</span>
|
||||
</div>
|
||||
|
||||
<van-field
|
||||
v-if="form.disposeResult == 'rzgcssc_th' || form.disposeResult == 'zrrjjrw'"
|
||||
v-model.trim="form.reasonForReturn"
|
||||
rows="4"
|
||||
name="reasonForReturn"
|
||||
class="textarea"
|
||||
autosize
|
||||
:show-error="false"
|
||||
:rules="[{ required: true, message: $t('feedbackMessage') + $t('cannotEmpty') }]"
|
||||
maxlength="200"
|
||||
type="textarea"
|
||||
:placeholder="$t('pleaseEnter')+$t('feedbackMessage')"
|
||||
/>
|
||||
|
||||
<div v-if="$route.query.taskDefinitionKey == 'Task handling'">
|
||||
|
||||
<div class="resultofhandlingClass">
|
||||
<span>{{$t('DeliverablesResult')}}</span>
|
||||
<span class="requiredClass">*</span>
|
||||
</div>
|
||||
|
||||
<van-field name="uploader" class="uploader"
|
||||
:rules="[{ required: true, message: $t('DeliverablesResult') + $t('cannotEmpty') }]"
|
||||
v-if="queryForm.valueType == 'file'">
|
||||
<template #input>
|
||||
<van-uploader :preview-image="false"
|
||||
accept="*"
|
||||
v-model="form.deliveryResult"
|
||||
:after-read="upload"
|
||||
class="uploader-button">
|
||||
<van-button icon="back-top" type="primary">{{$t('upload1')}}</van-button>
|
||||
</van-uploader>
|
||||
</template>
|
||||
</van-field>
|
||||
<van-field
|
||||
v-else-if="queryForm.valueType == 'text'"
|
||||
:rules="[{ required: true, message: $t('DeliverablesResult') + $t('cannotEmpty') }]"
|
||||
v-model.trim="form.deliveryResult"
|
||||
rows="4"
|
||||
class="textarea"
|
||||
autosize
|
||||
:show-error="false"
|
||||
maxlength="200"
|
||||
:placeholder="$t('pleaseEnter')+$t('DeliverablesResult')"
|
||||
/>
|
||||
<van-field name="disposeResult"
|
||||
class="uploader"
|
||||
v-else-if="queryForm.valueType == 'select'"
|
||||
:rules="[{ required: true, message: $t('DeliverablesResult') + $t('cannotEmpty') }]">
|
||||
<template #input>
|
||||
<van-radio-group v-model="form.deliveryResult" direction="horizontal">
|
||||
<van-radio name="1">
|
||||
{{$t('yes')}}
|
||||
</van-radio>
|
||||
<van-radio name="2">
|
||||
{{$t('not')}}
|
||||
</van-radio>
|
||||
</van-radio-group>
|
||||
</template>
|
||||
</van-field>
|
||||
<div class="file-list"
|
||||
v-for="(item,index) in fileList"
|
||||
:key="index">
|
||||
<span class="file-text">{{item.fileName}}
|
||||
<van-icon class="file-text-icon" name="passed"/>
|
||||
</span>
|
||||
<a-icon @click="fileClick(index)" class="icon-text" type="delete"/>
|
||||
</div>
|
||||
</div>
|
||||
<van-button class="submitButton"
|
||||
round
|
||||
block
|
||||
type="info"
|
||||
native-type="submit">{{$t('submit')}}
|
||||
</van-button>
|
||||
</van-form>
|
||||
</van-collapse-item>
|
||||
</van-collapse>
|
||||
<van-overlay :show="show">
|
||||
<van-loading type="spinner">{{textLoading}}</van-loading>
|
||||
</van-overlay>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction, deleteAction, downloadFile } from '@/api/manage'
|
||||
import { Dialog, Toast } from 'vant'
|
||||
import Vue from 'vue'
|
||||
import { ACCESS_TOKEN } from '@/store/mutation-types'
|
||||
import { kkFileView } from '@/utils/kkfileView'
|
||||
import axios from 'axios'
|
||||
|
||||
export default {
|
||||
name: 'phonePreHomoMangement',
|
||||
data() {
|
||||
return {
|
||||
activeNames: ['1', '2', '3', '4'],
|
||||
fileList: [],
|
||||
show: false,
|
||||
textLoading: this.$t('loading'),
|
||||
queryForm: {},
|
||||
queryData: {},
|
||||
form: {},
|
||||
uploadAction: window._CONFIG['domianURL'] + '/sys/common/upload',
|
||||
queryProject: {},
|
||||
dataSourceFile: [],
|
||||
deliverablesResultFile: [],
|
||||
deliveryResultList: [],
|
||||
isDisplay: false,
|
||||
url: {
|
||||
queryProjectCertificationInventoryById: '/phone/toDoCenter/queryProjectCertificationInventoryById',
|
||||
saveBatch: '/project/projectCertificationInventoryEO/saveBatch'
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
document.title = 'NIO GRP'
|
||||
this.isDisplay = JSON.parse(this.$route.query.isDisplay)
|
||||
this.getData()
|
||||
},
|
||||
methods: {
|
||||
iconClick() {
|
||||
this.$router.go(-1)
|
||||
},
|
||||
|
||||
getFileInfos(item) {
|
||||
getAction('sys/common/getFileInfos', { id: item }).then((res) => {
|
||||
if (res.success) {
|
||||
this.deliveryResultList = res.result
|
||||
this.fileList = []
|
||||
this.form.deliveryResult = []
|
||||
this.deliveryResultList.forEach((val) => {
|
||||
let fileName = val.fileName
|
||||
let index1 = fileName.lastIndexOf('.')
|
||||
let index2 = fileName.length
|
||||
let fileSuffix = fileName.substring(index1, index2)
|
||||
val.fileSuffix = fileSuffix
|
||||
this.fileList.push({
|
||||
id: val.id,
|
||||
fileName: val.fileName
|
||||
})
|
||||
})
|
||||
this.form.deliveryResult = this.fileList
|
||||
} else {
|
||||
this.deliveryResultList = []
|
||||
}
|
||||
})
|
||||
},
|
||||
getDeliveryResult(item) {
|
||||
getAction('sys/common/getFileInfos', { id: item }).then((res) => {
|
||||
if (res.success) {
|
||||
this.dataSourceFile = res.result
|
||||
this.dataSourceFile.forEach((val) => {
|
||||
let fileName = val.fileName
|
||||
let index1 = fileName.lastIndexOf('.')
|
||||
let index2 = fileName.length
|
||||
let fileSuffix = fileName.substring(index1, index2)
|
||||
val.fileSuffix = fileSuffix
|
||||
})
|
||||
} else {
|
||||
this.dataSourceFile = []
|
||||
}
|
||||
})
|
||||
},
|
||||
disposeResultChange(value) {
|
||||
if (value == 'rzgcssc_tg') {
|
||||
this.form.reasonForReturn = ''
|
||||
} else if (value == 'rzgcssc_th') {
|
||||
this.form.productionEnterpriseName = ''
|
||||
this.form.productModel = ''
|
||||
this.form.reportNumber = ''
|
||||
} else if (value == 'zrrjsrw') {
|
||||
this.form.reasonForReturn = ''
|
||||
} else if (value == 'zrrjjrw') {
|
||||
this.form.reasonForReturn = ''
|
||||
}
|
||||
this.$nextTick(() => {
|
||||
this.form = { ...this.form }
|
||||
})
|
||||
},
|
||||
onSubmit() {
|
||||
this.$refs.form.validate().then(() => {
|
||||
this.textLoading = this.$t('Submitting')
|
||||
this.show = true
|
||||
if (this.$route.query.taskDefinitionKey == 'Task Review') {
|
||||
if (this.form.disposeResult == 'rzgcssc_tg') {
|
||||
this.preservationClick()
|
||||
} else {
|
||||
this.ApprovedClick()
|
||||
}
|
||||
} else if (this.$route.query.taskDefinitionKey == 'Task handling') {
|
||||
this.submitPreservation()
|
||||
} else if (this.$route.query.taskDefinitionKey == 'Task responsibility confirmation') {
|
||||
this.ApprovedClick()
|
||||
}
|
||||
})
|
||||
},
|
||||
submitClick() {
|
||||
let query = {
|
||||
'nodeKey': 'zrrtjrw',
|
||||
'projectLibraryId': this.queryForm.projectLibraryId,
|
||||
'ids': this.queryForm.id
|
||||
}
|
||||
postAction('/project/projectCertificationInventoryEO/submitTask', query).then((res) => {
|
||||
if (res.success) {
|
||||
Toast(this.$t('OperationSuccessful'))
|
||||
this.$router.go(-1)
|
||||
this.show = false
|
||||
} else {
|
||||
Toast(this.$t('operationFailed'))
|
||||
}
|
||||
})
|
||||
},
|
||||
submitPreservation() {
|
||||
let content = []
|
||||
let fileListId = []
|
||||
let form = JSON.parse(JSON.stringify(this.form))
|
||||
if (this.queryForm.valueType == 'file') {
|
||||
this.fileList.forEach(res => {
|
||||
fileListId.push(res.id)
|
||||
})
|
||||
form.deliveryResult = fileListId.join(',')
|
||||
}
|
||||
content[0] = Object.assign(this.queryForm, form)
|
||||
postAction(this.url.saveBatch, { 'dataList': content }).then((res) => {
|
||||
if (res.success) {
|
||||
this.submitClick()
|
||||
}
|
||||
})
|
||||
},
|
||||
ApprovedClick() {
|
||||
let query = {
|
||||
'nodeKey': this.form.disposeResult,
|
||||
'projectLibraryId': this.queryForm.projectLibraryId,
|
||||
'ids': this.queryForm.id,
|
||||
reasonForReturn: this.form.reasonForReturn
|
||||
}
|
||||
postAction('/project/projectCertificationInventoryEO/submitTask', query).then((res) => {
|
||||
if (res.success) {
|
||||
Toast(this.$t('OperationSuccessful'))
|
||||
this.$router.go(-1)
|
||||
this.show = false
|
||||
} else {
|
||||
Toast(this.$t('operationFailed'))
|
||||
}
|
||||
})
|
||||
},
|
||||
//保存
|
||||
preservationClick() {
|
||||
let content = []
|
||||
content[0] = Object.assign(this.queryForm, this.form)
|
||||
postAction(this.url.saveBatch, { 'dataList': content }).then((res) => {
|
||||
if (res.success) {
|
||||
this.ApprovedClick()
|
||||
}
|
||||
})
|
||||
},
|
||||
getData() {
|
||||
getAction(this.url.queryProjectCertificationInventoryById, { id: this.$route.query.id }).then((res) => {
|
||||
if (res.success) {
|
||||
this.queryForm = res.result || {}
|
||||
if (this.queryForm.deliveryResult && this.queryForm.valueType == 'file') {
|
||||
this.getFileInfos(this.queryForm.deliveryResult)
|
||||
}
|
||||
if (this.queryForm.deliverableTemplate) {
|
||||
this.getDeliveryResult(this.queryForm.deliverableTemplate)
|
||||
}
|
||||
this.queryForm = { ...this.queryForm }
|
||||
} else {
|
||||
this.queryForm = {}
|
||||
}
|
||||
})
|
||||
},
|
||||
async upload(file) {
|
||||
// 这时候我们创建一个formData对象实例
|
||||
const formData = new FormData()
|
||||
// 通过append方法添加需要的file
|
||||
// 这里需要注意 append(key, value)来添加数据,如果指定的key不存在则会新增一条数据,如果key存在,则添加到数据的末尾
|
||||
formData.append('file', file.file)
|
||||
// 调用uploadFile上传的接口
|
||||
const res = await this.uploadFile(formData)
|
||||
this.fileList.push(res)
|
||||
// 上传文件的guid和后台返回的guid一样,通过push方法把上传的文件存放到上传成功才能提交的数组里面
|
||||
},
|
||||
uploadFile(formData) {
|
||||
this.textLoading = this.$t('loading')
|
||||
this.show = true
|
||||
return new Promise(resolve => {
|
||||
const token = Vue.ls.get(ACCESS_TOKEN)
|
||||
axios({
|
||||
url: this.uploadAction,
|
||||
method: 'post',
|
||||
data: formData,
|
||||
headers: {
|
||||
'Content-Type': 'multipart/form-data', // 文件上传
|
||||
'X-Access-Token': token
|
||||
}
|
||||
}).then((res) => {
|
||||
resolve(res.data.result)
|
||||
this.show = false
|
||||
})
|
||||
})
|
||||
},
|
||||
fileClick(index) {
|
||||
this.fileList.splice(index, 1)
|
||||
this.form.deliveryResult.splice(index, 1)
|
||||
this.form = { ...this.form }
|
||||
},
|
||||
deliverablesResultFileClick(item) {
|
||||
kkFileView(item.fileName, item.id)
|
||||
},
|
||||
standardClick(item) {
|
||||
this.$router.push({
|
||||
path: '/phoneDocumentDetails',
|
||||
query: {
|
||||
id: item.bussDocumentLibraryId
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.box {
|
||||
padding: 0 0.4rem 0.4rem 0.4rem;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.header-search {
|
||||
/*padding-left: 0.4rem;*/
|
||||
/*padding-right: 0.4rem;*/
|
||||
width: 100%;
|
||||
display: flex;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
padding-top: 0.4rem;
|
||||
background: #fff;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
|
||||
.icon {
|
||||
font-size: 0.66rem;
|
||||
width: 0.7rem;
|
||||
}
|
||||
|
||||
.header-search-text {
|
||||
font-size: 0.44rem;
|
||||
font-family: PingFang SC-Medium, PingFang SC;
|
||||
font-weight: 600;
|
||||
color: #040B29;
|
||||
margin-left: 0.2rem;
|
||||
word-break: break-all;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
text-overflow: ellipsis;
|
||||
/*! autoprefixer: off */
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 2;
|
||||
/*! autoprefixer: on;*/
|
||||
text-justify: inter-ideograph;
|
||||
}
|
||||
|
||||
.collapse {
|
||||
margin-top: 0.6rem;
|
||||
}
|
||||
|
||||
::v-deep .van-cell {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
::v-deep .van-cell::after {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
::v-deep .van-collapse-item--border::after {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
::v-deep .van-hairline--top-bottom::after, .van-hairline-unset--top-bottom::after {
|
||||
border-width: 0;
|
||||
}
|
||||
|
||||
::v-deep .van-cell--clickable .van-cell__title span {
|
||||
font-size: 0.44rem;
|
||||
font-family: PingFang SC-Medium, PingFang SC;
|
||||
font-weight: 600;
|
||||
color: #040B29;
|
||||
}
|
||||
|
||||
::v-deep .collapse .van-cell--clickable .van-icon {
|
||||
font-size: 0.44rem;
|
||||
color: #040B29;
|
||||
}
|
||||
|
||||
::v-deep .van-collapse-item {
|
||||
margin-bottom: 0.6rem;
|
||||
}
|
||||
|
||||
.content-box-type {
|
||||
display: flex;
|
||||
margin-top: 0.08rem;
|
||||
margin-bottom: 0.4rem;
|
||||
}
|
||||
|
||||
.content-box-type:last-child {
|
||||
margin-bottom: 0.1rem;
|
||||
}
|
||||
|
||||
.content-box-left {
|
||||
display: inline-block;
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #6F7385;
|
||||
flex: auto;
|
||||
min-width: 2rem;
|
||||
}
|
||||
|
||||
.content-box-type-text {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #6F7385;
|
||||
margin-bottom: 0.4rem;
|
||||
}
|
||||
|
||||
.content-box-type-text-one {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #01A0AC;
|
||||
margin-bottom: 0.4rem;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.content-box-type-text-one-select {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #040B29;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.content-box-type-text-one:last-child {
|
||||
margin-bottom: 0.1rem;
|
||||
}
|
||||
|
||||
.content-box-type-text-Two {
|
||||
display: inline-block;
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #040B29;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.content-box-text {
|
||||
text-align: right;
|
||||
margin-left: 0.3rem;
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #040B29;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
::v-deep .van-collapse-item__content {
|
||||
padding: 0.5rem 0;
|
||||
}
|
||||
|
||||
::v-deep .van-step__circle-container .van-icon {
|
||||
font-size: 0.55rem;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
::v-deep .van-step--finish {
|
||||
color: #00BEBE;
|
||||
}
|
||||
|
||||
::v-deep .van-step--vertical {
|
||||
padding: 0.26rem 0 0.46rem 0;
|
||||
}
|
||||
|
||||
::v-deep .van-step--vertical:not(:last-child)::after {
|
||||
border-bottom-width: 0;
|
||||
}
|
||||
|
||||
.vanStepBox {
|
||||
margin-left: 0.2rem;
|
||||
}
|
||||
|
||||
.van-text {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #040B29;
|
||||
}
|
||||
|
||||
.van-text-color {
|
||||
padding: 0.19rem 0.3rem;
|
||||
color: #26BD4B;
|
||||
font-size: 0.34rem;
|
||||
background: rgba(38, 189, 75, 0.12);
|
||||
border-radius: 0.1rem;
|
||||
}
|
||||
|
||||
.van-time {
|
||||
font-size: 0.34rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #868A9A;
|
||||
margin-top: 0.3rem;
|
||||
}
|
||||
|
||||
.van-name {
|
||||
color: #868A9A;
|
||||
margin-right: 0.1rem;
|
||||
font-size: 0.34rem;
|
||||
}
|
||||
|
||||
.van-name-time {
|
||||
color: #868A9A;
|
||||
margin-left: 0.1rem;
|
||||
font-size: 0.34rem;
|
||||
}
|
||||
|
||||
.van-desgin {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #41475E;
|
||||
margin-top: 0.3rem;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.van-file {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #01A0AC;
|
||||
margin-top: 0.3rem;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
::v-deep .van-form .van-cell__title {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #595E72;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
::v-deep .van-form .van-cell__value {
|
||||
margin-top: 0.1rem;
|
||||
}
|
||||
|
||||
::v-deep .van-form .van-radio__icon .van-icon {
|
||||
width: 0.45rem;
|
||||
height: 0.45rem;
|
||||
line-height: 0.38rem;
|
||||
}
|
||||
|
||||
::v-deep .van-form .van-radio__icon--checked .van-icon {
|
||||
background-color: #00BEBE;
|
||||
border-color: #00BEBE;
|
||||
}
|
||||
|
||||
::v-deep .van-form .van-radio__icon {
|
||||
height: 0.45rem;
|
||||
}
|
||||
|
||||
::v-deep .van-form .van-radio__label {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #040B29;
|
||||
}
|
||||
|
||||
::v-deep .van-form .van-cell {
|
||||
margin-bottom: 0.3rem;
|
||||
}
|
||||
|
||||
.textarea {
|
||||
display: block;
|
||||
}
|
||||
|
||||
::v-deep .van-form .textarea .van-field__control {
|
||||
background: #F5F6F7;
|
||||
border-radius: 0.12rem;
|
||||
padding: 0.2rem;
|
||||
margin-top: 0.1rem;
|
||||
}
|
||||
|
||||
.uploader {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.uploader-button {
|
||||
margin-top: 0.2rem;
|
||||
}
|
||||
|
||||
.uploader-button .van-button--primary {
|
||||
background-color: #fff;
|
||||
border: 0.03rem solid #00BEBE;
|
||||
color: #01A0AC;
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Medium, PingFang SC;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.uploader-button .van-button {
|
||||
height: 0.9rem;
|
||||
border-radius: 0.12rem;
|
||||
}
|
||||
|
||||
.uploader-button .van-button .van-icon {
|
||||
font-size: 0.42rem;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
::v-deep .van-loading {
|
||||
color: #fff;
|
||||
font-size: 0.36rem;
|
||||
}
|
||||
|
||||
::v-deep .van-loading__text {
|
||||
color: #fff;
|
||||
font-size: 0.46rem;
|
||||
}
|
||||
|
||||
::v-deep .van-overlay {
|
||||
z-index: 1001;
|
||||
text-align: center;
|
||||
line-height: 30;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.submitButton {
|
||||
border-radius: 0.2rem;
|
||||
background: #00B3BE;
|
||||
border: none;
|
||||
margin-top: 1.2rem;
|
||||
}
|
||||
|
||||
::v-deep .van-icon-success:before {
|
||||
font-size: 0.34rem;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
::v-deep .van-radio {
|
||||
margin-bottom: 0.1rem;
|
||||
}
|
||||
|
||||
.file-list {
|
||||
width: 100%;
|
||||
background: #FFFFFF;
|
||||
border-radius: 0.2rem;
|
||||
border: 0.02rem solid #E6E7EC;
|
||||
padding: 0.26rem 0.4rem;
|
||||
font-size: 0.38rem;
|
||||
font-weight: 400;
|
||||
color: #040B29;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 0.2rem;
|
||||
}
|
||||
|
||||
.file-text {
|
||||
display: inline-block;
|
||||
margin-right: 0.3rem;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.file-text-icon {
|
||||
font-size: 0.41rem;
|
||||
margin-left: 0.2rem;
|
||||
color: #26BD4B;
|
||||
font-weight: 600;
|
||||
float: right;
|
||||
margin-top: 0.11rem;
|
||||
}
|
||||
|
||||
.icon-text {
|
||||
font-size: 0.4rem;
|
||||
color: #040B29;
|
||||
}
|
||||
|
||||
::v-deep .van-field--error .van-field__control::placeholder {
|
||||
color: #BBBDC7;
|
||||
}
|
||||
|
||||
.van-text-status {
|
||||
margin-bottom: 0.3rem;
|
||||
margin-top: 0.3rem;
|
||||
}
|
||||
|
||||
.van-collapse-item:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.AcceptedClass {
|
||||
background: #e9f8ed;
|
||||
color: #26BD4B;
|
||||
}
|
||||
|
||||
.RejectedClass {
|
||||
background: #fdeaea;
|
||||
color: #E83030;
|
||||
}
|
||||
|
||||
.TransferClass {
|
||||
background: #fff6e8;
|
||||
color: #FDA71C;
|
||||
}
|
||||
|
||||
.ReturnedClass {
|
||||
background: #fff6e8;
|
||||
color: #FDA71C;
|
||||
}
|
||||
|
||||
.AdoptClass {
|
||||
background: #e9f8ed;
|
||||
color: #26BD4B;
|
||||
}
|
||||
|
||||
.ComplianceClass {
|
||||
background: #e9f8ed;
|
||||
color: #26BD4B;
|
||||
}
|
||||
|
||||
.NonComplianceClass {
|
||||
background: #fdeaea;
|
||||
color: #E83030;
|
||||
}
|
||||
|
||||
.trackedClass {
|
||||
background: #fff6e8;
|
||||
color: #FDA71C;
|
||||
}
|
||||
|
||||
.NAClass {
|
||||
background: #f1f1f3;
|
||||
color: #707486;
|
||||
}
|
||||
|
||||
.content-box-text-color {
|
||||
color: #01A0AC;
|
||||
}
|
||||
|
||||
.resultofhandlingClass {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #595E72;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.requiredClass {
|
||||
color: #E83030;
|
||||
font-size: 0.38rem;
|
||||
margin-left: 0.02rem;
|
||||
}
|
||||
|
||||
::v-deep .productionEnterpriseName .van-field__error-message {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,694 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="header-search">
|
||||
<van-icon @click="iconClick" class="icon" name="arrow-left"/>
|
||||
<span class="header-search-text">
|
||||
{{queryForm.title}}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="header-buttom" v-if="queryForm.problemTypeNameList && queryForm.problemTypeNameList.length > 0">
|
||||
<div class="header-buttom-text" v-for="val in queryForm.problemTypeNameList">
|
||||
{{val}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="problemName">
|
||||
<div class="problemNameLeft">
|
||||
<img src="~@/assets/icon_contact.png" class="problemNameLeftImg" alt="">
|
||||
<span class="problemNameLeftText">{{queryForm.createBy}}</span>
|
||||
</div>
|
||||
<div class="problemNameLeft">
|
||||
<img src="~@/assets/icon_time.png" class="problemNameLeftImg" alt="">
|
||||
<span class="problemNameLeftText">{{queryForm.createTime}}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="content" v-html="queryForm.content">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="contentFile" v-if="queryForm.accessoryFileNameList && queryForm.accessoryFileNameList.length > 0">
|
||||
<div class="contentFile-text"
|
||||
@click="fileClick(item)"
|
||||
v-for="item in queryForm.accessoryFileNameList">
|
||||
{{item.fileName}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="iconText">
|
||||
<div class="iconTextLeft">
|
||||
<img src="~@/assets/icon_kan.png" alt="">
|
||||
<span class="iconTextLeft-text">
|
||||
{{queryForm.browsingHistoryCount}}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="iconTextLeft" @click="likeClick()">
|
||||
<img v-if="!this.isPraise" src="~@/assets/icon_zan.png" alt="">
|
||||
<img v-else src="~@/assets/dianzan.png" alt="">
|
||||
<span class="iconTextLeft-text" :class="{'icon-active':this.isPraise}">
|
||||
{{queryForm.praiseCount}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="iconTextLeft" @click="starClick()">
|
||||
<img v-if="!this.isCollect" src="~@/assets/icon_shoucang.png" alt="">
|
||||
<img v-else src="~@/assets/xuanzhong.png" alt="">
|
||||
<span class="iconTextLeft-text" :class="{'icon-active':this.isCollect}">
|
||||
{{queryForm.collectCount}}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="comment">
|
||||
<div class="comment-text" @click="howAboutCommentClick">
|
||||
{{$t('howAboutComment')}}~
|
||||
</div>
|
||||
|
||||
<div class="comment-content" v-for="(item,index) in releaseList" :key="index">
|
||||
<div class="comment-content-text">
|
||||
<div class="comment-content-text-left">
|
||||
<span class="comment-content-text-yuan"></span>
|
||||
{{item.createBy}}
|
||||
</div>
|
||||
<div class="comment-content-text-right">
|
||||
<span>{{item.createTime}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="comment-text-box">
|
||||
{{item.commentContent}}
|
||||
</div>
|
||||
<div class="comment-text-button">
|
||||
<div class="commentRight" @click="messageClick(item)">
|
||||
<img src="~@/assets/icon_reply.png" alt="">
|
||||
<span>{{$t('answer')}}</span>
|
||||
</div>
|
||||
<div class="commentRight"
|
||||
v-if="administrators || item.createBy == userInfoQuery.username"
|
||||
@click="deleteClick(item)">
|
||||
<img src="~@/assets/icon_rubbish.png" alt="">
|
||||
<span>{{$t('delete')}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div style="margin-top: 0.3rem"
|
||||
v-if="item.problemKnowledgeBaseCommentVOList && item.problemKnowledgeBaseCommentVOList.length > 0">
|
||||
<div class="reply-box" v-for="(val,index1) in item.problemKnowledgeBaseCommentVOList">
|
||||
<div class="comment-content-text">
|
||||
<div class="comment-content-text-left">
|
||||
<span class="comment-content-text-yuan"></span>
|
||||
{{val.createBy}}
|
||||
</div>
|
||||
<div class="comment-content-text-right">
|
||||
<span>{{val.createTime}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="comment-text-box">
|
||||
{{val.commentContent}}
|
||||
</div>
|
||||
<div class="comment-text-button-one">
|
||||
<div class="commentRight" @click="messageClick(item)">
|
||||
<img src="~@/assets/icon_reply.png" alt="">
|
||||
</div>
|
||||
<div class="commentRight"
|
||||
v-if="administrators || val.createBy == userInfoQuery.username"
|
||||
@click="deleteClick(val)">
|
||||
<img src="~@/assets/icon_rubbish.png" alt="">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="input-text" v-if="isDisplay">
|
||||
<van-cell-group>
|
||||
<van-field rows="1"
|
||||
class="sendInput"
|
||||
autosize
|
||||
type="textarea"
|
||||
v-model="sendValue"
|
||||
placeholder="说点什么吧"/>
|
||||
<van-button type="primary" :disabled="sendDisplay" @click="sendClick">{{$t('send')}}</van-button>
|
||||
</van-cell-group>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction, putAction } from '@/api/manage'
|
||||
import { mapGetters } from 'vuex'
|
||||
import { kkFileView } from '@/utils/kkfileView'
|
||||
import { deleteAction } from '../../api/manage'
|
||||
import { Dialog, Toast } from 'vant'
|
||||
|
||||
export default {
|
||||
name: 'phoneProblemKnowledgeBase',
|
||||
data() {
|
||||
return {
|
||||
url: {
|
||||
queryById: '/problemKnowledgeBase/problemKnowledgeBaseEO/queryById'
|
||||
},
|
||||
queryForm: {},
|
||||
releaseList: [],
|
||||
isCollect: false,
|
||||
isPraise: false,
|
||||
sendValue: '',
|
||||
isDisplay: false,
|
||||
commentQuery: {},
|
||||
sendDisplay: true,
|
||||
num: 1,
|
||||
userInfoQuery: {},
|
||||
administrators: false
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
document.title = 'NIO GRP'
|
||||
this.administrators = false
|
||||
this.userInfoQuery = this.userInfo()
|
||||
if (this.userInfo().userRoleList && this.userInfo().userRoleList.length > 0) {
|
||||
this.userInfo().userRoleList.forEach(res => {
|
||||
if (res.roleCode == 'admin') {
|
||||
this.administrators = true
|
||||
}
|
||||
})
|
||||
}
|
||||
window.addEventListener('scroll', this.scrolling)
|
||||
window.addEventListener('mousedown', this.handleonmousedown)
|
||||
this.getQueryBy()
|
||||
this.releaseData()
|
||||
this.viewAdd()
|
||||
},
|
||||
watch: {
|
||||
sendValue: function(res) {
|
||||
if (!res) {
|
||||
this.sendDisplay = true
|
||||
} else {
|
||||
this.sendDisplay = false
|
||||
}
|
||||
}
|
||||
},
|
||||
destroyed() {
|
||||
// 离开该页面需要移除这个监听的事件,不然会报错
|
||||
window.removeEventListener('scroll', this.handleScroll)
|
||||
window.removeEventListener('mousedown', this.handleonmousedown)
|
||||
},
|
||||
methods: {
|
||||
...mapGetters(['userInfo']),
|
||||
// scrolling() {
|
||||
// this.isDisplay = false
|
||||
// },
|
||||
handleonmousedown(e) {
|
||||
if (e.srcElement.type == 'textarea' || e.target.type == 'textarea') {
|
||||
|
||||
} else if (e.target.innerText == this.$t('send')) {
|
||||
|
||||
} else {
|
||||
this.isDisplay = false
|
||||
}
|
||||
},
|
||||
iconClick() {
|
||||
if (this.$route.query.goRouter) {
|
||||
this.$router.push({
|
||||
path: this.$route.query.goRouter,
|
||||
query: {
|
||||
searchValue: this.$route.query.searchValue,
|
||||
activeTab: this.$route.query.activeTab
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$router.go(-1)
|
||||
}
|
||||
},
|
||||
viewAdd() {
|
||||
let query = {
|
||||
problemKnowledgeBaseId: this.$route.query.id,
|
||||
browsingUserId: this.userInfo().id
|
||||
}
|
||||
postAction('/problemKnowledgeBase/problemKnowledgeBaseBrowsingHistoryEO/add', query).then((res) => {
|
||||
})
|
||||
},
|
||||
getQueryBy() {
|
||||
let query = {
|
||||
id: this.$route.query.id
|
||||
}
|
||||
getAction(this.url.queryById, query).then((res) => {
|
||||
if (res.success) {
|
||||
this.queryForm = res.result || {}
|
||||
this.queryForm = { ...this.queryForm }
|
||||
if (this.queryForm.praiseEO && this.queryForm.praiseEO.praiseStatus == 'Praise') {
|
||||
this.isPraise = true
|
||||
} else {
|
||||
this.isPraise = false
|
||||
}
|
||||
if (this.queryForm.collectEO && this.queryForm.collectEO.collectStatus == 'Collect') {
|
||||
this.isCollect = true
|
||||
} else {
|
||||
this.isCollect = false
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
likeClick() {
|
||||
if (this.isDisplay) {
|
||||
this.isDisplay = false
|
||||
return
|
||||
}
|
||||
let praiseStatus = ''
|
||||
this.isPraise = !this.isPraise
|
||||
if (this.isPraise) {
|
||||
praiseStatus = 'Praise'
|
||||
this.queryForm.praiseCount = this.queryForm.praiseCount + 1
|
||||
} else {
|
||||
praiseStatus = 'Cancel praise'
|
||||
this.queryForm.praiseCount = this.queryForm.praiseCount - 1
|
||||
}
|
||||
let query = {
|
||||
problemKnowledgeBaseId: this.$route.query.id,
|
||||
praiseUserId: this.userInfo().id,
|
||||
praiseStatus: praiseStatus,
|
||||
id: this.queryForm.praiseEO ? this.queryForm.praiseEO.id : undefined
|
||||
}
|
||||
putAction('/problemKnowledgeBase/problemKnowledgeBasePraiseEO/edit', query).then((res) => {
|
||||
if (!this.queryForm.praiseEO || !this.queryForm.praiseEO.id) {
|
||||
this.queryById()
|
||||
}
|
||||
})
|
||||
},
|
||||
starClick() {
|
||||
if (this.isDisplay) {
|
||||
this.isDisplay = false
|
||||
return
|
||||
}
|
||||
let collectStatus = ''
|
||||
this.isCollect = !this.isCollect
|
||||
if (this.isCollect) {
|
||||
collectStatus = 'Collect'
|
||||
this.queryForm.collectCount = this.queryForm.collectCount + 1
|
||||
} else {
|
||||
collectStatus = 'Cancel Collect'
|
||||
this.queryForm.collectCount = this.queryForm.collectCount - 1
|
||||
}
|
||||
let query = {
|
||||
problemKnowledgeBaseId: this.$route.query.id,
|
||||
collectUserId: this.userInfo().id,
|
||||
collectStatus: collectStatus,
|
||||
id: this.queryForm.collectEO ? this.queryForm.collectEO.id : undefined
|
||||
}
|
||||
putAction('/problemKnowledgeBase/problemKnowledgeBaseCollectEO/edit', query).then((res) => {
|
||||
if (!this.queryForm.collectEO || !this.queryForm.collectEO.id) {
|
||||
this.queryById()
|
||||
}
|
||||
})
|
||||
},
|
||||
releaseData() {
|
||||
let query = {
|
||||
problemKnowledgeBaseId: this.$route.query.id
|
||||
}
|
||||
getAction('/problemKnowledgeBase/problemKnowledgeBaseCommentEO/list', query).then((res) => {
|
||||
if (res.success) {
|
||||
this.releaseList = res.result || []
|
||||
} else {
|
||||
this.releaseList = []
|
||||
}
|
||||
})
|
||||
},
|
||||
deleteClick(item) {
|
||||
let _this = this
|
||||
if (this.isDisplay) {
|
||||
this.isDisplay = false
|
||||
return
|
||||
}
|
||||
|
||||
function beforeClose(action, done) {
|
||||
if (action === 'confirm') {
|
||||
let url = ''
|
||||
if (item.problemKnowledgeBaseId) {
|
||||
url = '/problemKnowledgeBase/problemKnowledgeBaseCommentEO/deleteBatch'
|
||||
} else {
|
||||
url = '/project/problemKnowledgeBaseReplyEO/deleteBatch'
|
||||
}
|
||||
deleteAction(url, { ids: item.id }).then((res) => {
|
||||
if (res.success) {
|
||||
Toast(_this.$t('OperationSuccessful'))
|
||||
_this.releaseData()
|
||||
done()
|
||||
} else {
|
||||
_this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
done()
|
||||
}
|
||||
}
|
||||
|
||||
Dialog.confirm({
|
||||
message: this.$t('confirmDeletion') + '?',
|
||||
beforeClose
|
||||
})
|
||||
},
|
||||
howAboutCommentClick() {
|
||||
this.isDisplay = true
|
||||
this.num = 1
|
||||
this.$nextTick(() => {
|
||||
let vanField = document.querySelectorAll('.sendInput .van-field__control')[0]
|
||||
vanField.focus()
|
||||
})
|
||||
},
|
||||
fileClick(item) {
|
||||
kkFileView(item.fileName, item.id)
|
||||
},
|
||||
messageClick(item) {
|
||||
this.isDisplay = true
|
||||
this.num = 2
|
||||
this.commentQuery = item
|
||||
this.$nextTick(() => {
|
||||
let vanField = document.querySelectorAll('.sendInput .van-field__control')[0]
|
||||
vanField.focus()
|
||||
})
|
||||
},
|
||||
sendClick() {
|
||||
if (this.num == 1) {
|
||||
let query = {
|
||||
problemKnowledgeBaseId: this.$route.query.id,
|
||||
commentContent: this.sendValue,
|
||||
commentUserId: this.userInfo().id
|
||||
}
|
||||
postAction('/problemKnowledgeBase/problemKnowledgeBaseCommentEO/add', query).then((res) => {
|
||||
if (res.success) {
|
||||
Toast(this.$t('OperationSuccessful'))
|
||||
this.releaseData()
|
||||
this.sendValue = ''
|
||||
this.isDisplay = false
|
||||
} else {
|
||||
Toast(this.$t('operationFailed'))
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.handleComment()
|
||||
}
|
||||
},
|
||||
handleComment() {
|
||||
let query = {
|
||||
commentId: this.commentQuery.id,
|
||||
replyContent: this.sendValue
|
||||
}
|
||||
postAction('/project/problemKnowledgeBaseReplyEO/add', query).then((res) => {
|
||||
if (res.success) {
|
||||
Toast(this.$t('OperationSuccessful'))
|
||||
this.releaseData()
|
||||
this.sendValue = ''
|
||||
this.isDisplay = false
|
||||
} else {
|
||||
Toast(this.$t('operationFailed'))
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.box {
|
||||
padding: 0 0.4rem 0.4rem 0.4rem;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.box-showModal {
|
||||
position: absolute;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.header-search {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
padding-top: 0.4rem;
|
||||
background: #fff;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.icon {
|
||||
font-size: 0.66rem;
|
||||
width: 0.7rem;
|
||||
}
|
||||
|
||||
.header-search-text {
|
||||
font-size: 0.44rem;
|
||||
font-family: PingFang SC-Medium, PingFang SC;
|
||||
font-weight: 600;
|
||||
color: #040B29;
|
||||
margin-left: 0.2rem;
|
||||
word-break: break-all;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
text-overflow: ellipsis;
|
||||
/*! autoprefixer: off */
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 2;
|
||||
/*! autoprefixer: on;*/
|
||||
text-justify: inter-ideograph;
|
||||
}
|
||||
|
||||
.header-buttom {
|
||||
margin-top: 0.36rem;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.header-buttom-text {
|
||||
font-size: 0.34rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #00B3BE;
|
||||
padding: 0.17rem 0.3rem;
|
||||
background: rgba(0, 179, 190, 0.12);
|
||||
border-radius: 0.12rem;
|
||||
opacity: 1;
|
||||
display: inline-block;
|
||||
margin-left: 0.2rem;
|
||||
}
|
||||
|
||||
.problemName {
|
||||
display: flex;
|
||||
margin-top: 0.16rem;
|
||||
height: 1rem;
|
||||
line-height: 1rem;
|
||||
}
|
||||
|
||||
.problemNameLeft {
|
||||
margin-right: 0.5rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.problemNameLeftImg {
|
||||
width: 0.42rem;
|
||||
}
|
||||
|
||||
.problemNameLeftText {
|
||||
font-size: 0.34rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #868A9A;
|
||||
margin-left: 0.2rem;
|
||||
margin-top: 0.07rem;
|
||||
}
|
||||
|
||||
.content {
|
||||
margin-top: 0.1rem;
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #040B29;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.contentFile {
|
||||
margin-top: 0.2rem;
|
||||
}
|
||||
|
||||
.contentFile-text {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #01A0AC;
|
||||
margin-bottom: 0.2rem;
|
||||
}
|
||||
|
||||
.iconText {
|
||||
text-align: right;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
margin-top: 0.4rem;
|
||||
padding-bottom: 0.6rem;
|
||||
border-bottom: 0.02rem solid #E6E7EC;
|
||||
}
|
||||
|
||||
.iconTextLeft-text {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #000000;
|
||||
margin-left: 0.12rem;
|
||||
}
|
||||
|
||||
.iconTextLeft {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-left: 0.4rem;
|
||||
}
|
||||
|
||||
.iconTextLeft img {
|
||||
width: 0.46rem;
|
||||
}
|
||||
|
||||
.comment {
|
||||
margin-top: 0.8rem;
|
||||
}
|
||||
|
||||
.comment-text {
|
||||
width: 100%;
|
||||
background: #F6F7FA;
|
||||
border-radius: 0.23rem;
|
||||
font-size: 0.42rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #868A9A;
|
||||
text-align: center;
|
||||
padding: 0.36rem 0;
|
||||
}
|
||||
|
||||
.comment-content {
|
||||
padding: 0.7rem 0;
|
||||
box-sizing: border-box;
|
||||
border-bottom: 0.02rem solid #E6E7EC;
|
||||
}
|
||||
|
||||
.comment-content-text {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.comment-content-text-left {
|
||||
font-size: 0.42rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #040B29;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.comment-content-text-yuan {
|
||||
width: 0.2rem;
|
||||
height: 0.2rem;
|
||||
display: inline-block;
|
||||
border-radius: 50%;
|
||||
background: #01A0AC;
|
||||
margin-right: 0.2rem;
|
||||
}
|
||||
|
||||
.comment-content-text-right {
|
||||
font-size: 0.34rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #868A9A;
|
||||
}
|
||||
|
||||
.comment-text-box {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #41475E;
|
||||
word-break: break-all;
|
||||
margin-top: 0.3rem;
|
||||
}
|
||||
|
||||
.comment-text-button {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
text-align: right;
|
||||
margin-top: 0.3rem;
|
||||
/*margin-bottom: 0.3rem;*/
|
||||
}
|
||||
|
||||
.comment-text-button-one {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
text-align: right;
|
||||
margin-top: 0.3rem;
|
||||
}
|
||||
|
||||
.commentRight {
|
||||
margin-left: 0.4rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.commentRight img {
|
||||
width: 0.44rem;
|
||||
}
|
||||
|
||||
.commentRight span {
|
||||
font-size: 0.36rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #868A9A;
|
||||
margin-left: 0.1rem;
|
||||
}
|
||||
|
||||
.reply-box {
|
||||
background: #F6F7F8;
|
||||
/*border-radius: 0.16rem;*/
|
||||
padding: 0.4rem 0.4rem 0 0.4rem;
|
||||
margin-left: 0.5rem;
|
||||
}
|
||||
|
||||
.reply-box:last-child {
|
||||
padding-bottom: 0.4rem;
|
||||
border-bottom-left-radius: 0.16rem;
|
||||
border-bottom-right-radius: 0.16rem;
|
||||
}
|
||||
|
||||
.reply-box:first-child {
|
||||
border-top-left-radius: 0.16rem;
|
||||
border-top-right-radius: 0.16rem;
|
||||
}
|
||||
|
||||
.icon-active {
|
||||
color: #00B3BE !important;
|
||||
}
|
||||
|
||||
.input-text {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
background: #F6F7FA;
|
||||
padding: 0.2rem 0.4rem;
|
||||
}
|
||||
|
||||
.input-text .van-cell-group {
|
||||
display: flex;
|
||||
background: transparent;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.input-text .van-cell {
|
||||
width: calc(100% - 1.8rem);
|
||||
display: inline-block;
|
||||
border-radius: 0.6rem;
|
||||
margin-right: 0.3rem;
|
||||
}
|
||||
|
||||
.input-text .van-button {
|
||||
width: 1.8rem;
|
||||
height: 1rem;
|
||||
border-radius: 0.4rem;
|
||||
background: #01A0AC;
|
||||
border: none;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,898 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="header-search">
|
||||
<van-icon @click="iconClick" class="icon" name="arrow-left"/>
|
||||
<span class="header-search-text">
|
||||
{{queryForm.serialNumber}} {{title}}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<van-collapse class="collapse" v-model="activeNames">
|
||||
<van-collapse-item :title="$t('essentialInformation')" name="1">
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left">{{$t('entryName')}}</span>
|
||||
<span class="content-box-text">{{queryForm.projectName+'-'+queryForm.projectVersion}}</span>
|
||||
</div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left">{{$t('regulationNo')}}</span>
|
||||
<span class="content-box-text">{{queryForm.serialNumber || '--'}}</span>
|
||||
</div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left">{{$t('title')}}</span>
|
||||
<span class="content-box-text">{{queryForm.title || '--'}}</span>
|
||||
</div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left">{{$t('subtitle')}}</span>
|
||||
<span class="content-box-text">{{queryForm.subtitle || '--'}}</span>
|
||||
</div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left">{{$t('applicableSupplement')}}</span>
|
||||
<span class="content-box-text">{{queryForm.applicableSupplement || '--'}}</span>
|
||||
</div>
|
||||
</van-collapse-item>
|
||||
|
||||
<van-collapse-item :title="$t('TaskRequirements')" name="2">
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left">{{$t('Sponsor')}}</span>
|
||||
<span class="content-box-text">{{queryProject[queryData.Sponsor] || '--'}}</span>
|
||||
</div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left">{{$t('personLiable')}}</span>
|
||||
<span class="content-box-text">{{queryProject[queryData.personLiable] || '--'}}</span>
|
||||
</div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left">{{$t('deliveryDate')}}</span>
|
||||
<span class="content-box-text">{{queryProject[queryData.DueDate] || '--'}}</span>
|
||||
</div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left">{{$t('typeOfDeliverables')}}</span>
|
||||
<span class="content-box-text">{{queryProject[queryData.typeOfDeliverables] || '--'}}</span>
|
||||
</div>
|
||||
<div class="content-box-type-text">
|
||||
{{$t('deliverableTemplate')}}
|
||||
</div>
|
||||
<div class="content-box-type-text-Two" v-if="dataSourceFile && dataSourceFile.length == 0">
|
||||
--
|
||||
</div>
|
||||
<div class="content-box-type-text-one"
|
||||
v-else
|
||||
@click="dataSourceFileClick(item)"
|
||||
v-for="item in dataSourceFile">
|
||||
{{item.fileName}}
|
||||
</div>
|
||||
<div class="content-box-type-text">
|
||||
{{$t('descriptionDeliverables')}}
|
||||
</div>
|
||||
<div class="content-box-type-text-Two">
|
||||
{{queryProject[queryData.remarks] || '--'}}
|
||||
</div>
|
||||
</van-collapse-item>
|
||||
<van-collapse-item :title="$t('Processhistory')" name="3">
|
||||
<van-steps inactive-icon="passed"
|
||||
active-icon="passed"
|
||||
active-color="#00BEBE"
|
||||
direction="vertical" :active="dataSource.length">
|
||||
<van-step v-for="(item,index) in dataSource" :key="index">
|
||||
<div class="vanStepBox">
|
||||
<div class="van-text">
|
||||
{{item.name}}
|
||||
</div>
|
||||
<div class="van-text-status">
|
||||
<span class="van-text-color" :class="statusClass[item.operatorResult]" v-if="item.operatorResultName">
|
||||
{{item.operatorResultName}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="van-time">
|
||||
<span class="van-name">
|
||||
{{item.assignee}}
|
||||
</span>
|
||||
|
|
||||
<span class="van-name-time">
|
||||
{{item.createTime}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="van-desgin">
|
||||
{{item.approvalOpinion}}
|
||||
</div>
|
||||
<div class="van-file" @click="approvalFileClick(item,index1)"
|
||||
v-if="item.approvalFileName && item.approvalFileName.length > 0"
|
||||
v-for="(val,index1) in item.approvalFileName" :key="index1">
|
||||
{{val}}
|
||||
</div>
|
||||
</div>
|
||||
</van-step>
|
||||
</van-steps>
|
||||
</van-collapse-item>
|
||||
<van-collapse-item :title="$t('taskHandling')" name="4" v-if="!queryData.isDisplay">
|
||||
<van-form @submit="onSubmit" ref="form">
|
||||
<div class="resultofhandlingClass" style="margin-bottom: 0.1rem">
|
||||
<span>{{$t('resultofhandling')}}</span>
|
||||
<span class="requiredClass">*</span>
|
||||
</div>
|
||||
<van-field name="disposeResult"
|
||||
class="uploader"
|
||||
:rules="[{ required: true, message: $t('resultofhandling') + $t('cannotEmpty') }]">
|
||||
<template #input>
|
||||
<van-radio-group v-model="form.disposeResult" direction="horizontal">
|
||||
<van-radio name="Accepted" v-if="queryData.TaskKey == 'zrrqr' || queryData.TaskKey == 'dezrrqr'">
|
||||
{{$t('accept')}}
|
||||
</van-radio>
|
||||
<van-radio name="Rejected" v-if="queryData.TaskKey == 'zrrqr'">
|
||||
{{$t('refuse')}}
|
||||
</van-radio>
|
||||
<van-radio name="Adopt" :disabled="isAdopt"
|
||||
v-if="queryData.TaskKey == 'fggcssh' || queryData.TaskKey == 'fggcsbcsh'">
|
||||
{{$t('adopt')}}
|
||||
</van-radio>
|
||||
<van-radio name="Compliance"
|
||||
v-if="queryData.TaskKey == 'dezrrtjjfw' || queryData.TaskKey == 'zrrtjjfw' || queryData.TaskKey == 'zrrbctjxg'">
|
||||
{{$t('accord')}}
|
||||
</van-radio>
|
||||
<van-radio name="Non-Compliance"
|
||||
v-if="queryData.TaskKey == 'dezrrtjjfw' || queryData.TaskKey == 'zrrtjjfw' || queryData.TaskKey == 'zrrbctjxg'">
|
||||
{{$t('nonConformity')}}
|
||||
</van-radio>
|
||||
<van-radio name="To be tracked"
|
||||
v-if="queryData.TaskKey == 'zrrtjjfw' || queryData.TaskKey == 'dezrrtjjfw' || queryData.TaskKey == 'zrrbctjxg'">
|
||||
{{$t('Tracked')}}
|
||||
</van-radio>
|
||||
<van-radio name="NA"
|
||||
v-if="queryData.TaskKey == 'zrrtjjfw' || queryData.TaskKey == 'dezrrtjjfw' || queryData.TaskKey == 'zrrbctjxg'">
|
||||
{{$t('notInvolved')}}
|
||||
</van-radio>
|
||||
<van-radio name="Returned"
|
||||
v-if="queryData.TaskKey == 'dezrrqr' || queryData.TaskKey == 'dezrrtjjfw' ||
|
||||
queryData.TaskKey == 'zrrtjjfw' || queryData.TaskKey == 'fggcssh' || queryData.TaskKey == 'fggcsbcsh'">
|
||||
{{$t('sendBack')}}
|
||||
</van-radio>
|
||||
</van-radio-group>
|
||||
</template>
|
||||
</van-field>
|
||||
|
||||
<div class="resultofhandlingClass">
|
||||
<span>{{$t('feedback')}}</span>
|
||||
<span class="requiredClass">*</span>
|
||||
</div>
|
||||
<van-field
|
||||
v-model.trim="form.approvalOpinion"
|
||||
rows="4"
|
||||
class="textarea"
|
||||
autosize
|
||||
:show-error="false"
|
||||
:rules="[{ required: true, message: $t('feedbackMessage') + $t('cannotEmpty') }]"
|
||||
maxlength="200"
|
||||
type="textarea"
|
||||
:placeholder="$t('pleaseEnter')+$t('feedbackMessage')"
|
||||
/>
|
||||
|
||||
<van-field name="uploader" class="uploader"
|
||||
v-if="queryData.TaskKey == 'dezrrtjjfw' || queryData.TaskKey == 'zrrtjjfw' || queryData.TaskKey == 'fggcssh'
|
||||
|| queryData.TaskKey == 'zrrbctjxg' || queryData.TaskKey == 'fggcsbcsh'"
|
||||
:label="$t('attachmentUpload')">
|
||||
<template #input>
|
||||
<van-uploader :preview-image="false"
|
||||
accept="*"
|
||||
:after-read="upload"
|
||||
class="uploader-button">
|
||||
<van-button icon="back-top" type="primary">{{$t('upload1')}}</van-button>
|
||||
</van-uploader>
|
||||
</template>
|
||||
</van-field>
|
||||
<div class="file-list"
|
||||
v-for="(item,index) in fileList"
|
||||
:key="index">
|
||||
<span class="file-text">{{item.fileName}}
|
||||
<van-icon class="file-text-icon" name="passed"/>
|
||||
</span>
|
||||
<a-icon @click="fileClick(index)" class="icon-text" type="delete"/>
|
||||
</div>
|
||||
<van-button class="submitButton"
|
||||
round
|
||||
block
|
||||
type="info"
|
||||
native-type="submit">{{$t('submit')}}
|
||||
</van-button>
|
||||
</van-form>
|
||||
</van-collapse-item>
|
||||
</van-collapse>
|
||||
<van-overlay :show="show">
|
||||
<van-loading type="spinner">{{textLoading}}</van-loading>
|
||||
</van-overlay>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction, deleteAction, downloadFile, uploadAction } from '@/api/manage'
|
||||
import { mapGetters } from 'vuex'
|
||||
import moment from 'moment'
|
||||
import axios from 'axios'
|
||||
import Vue from 'vue'
|
||||
import { kkFileView } from '@/utils/kkfileView'
|
||||
import { ACCESS_TOKEN } from '@/store/mutation-types'
|
||||
|
||||
export default {
|
||||
name: 'phoneProcessManagement',
|
||||
data() {
|
||||
return {
|
||||
activeNames: ['1', '2', '3', '4'],
|
||||
show: false,
|
||||
form: {},
|
||||
statusClass: {
|
||||
'Accepted': 'AcceptedClass',
|
||||
'Rejected': 'RejectedClass',
|
||||
'Transfer': 'TransferClass',
|
||||
'Returned': 'ReturnedClass',
|
||||
'Adopt': 'AdoptClass',
|
||||
'Compliance': 'ComplianceClass',
|
||||
'Non-Compliance': 'NonComplianceClass',
|
||||
'To be tracked': 'trackedClass',
|
||||
'NA': 'NAClass'
|
||||
},
|
||||
dataSource: [],
|
||||
url: {
|
||||
urlFrom: 'project/projectLibraryBase/queryById',
|
||||
queryProjectLawsInventoryInfoById: 'project/projectLawsInventoryEO/queryProjectLawsInventoryInfoById',
|
||||
queryTaskDetailByTaskIds: '/task/queryTaskDetailByTaskIds',
|
||||
edit: '/project/projectTaskInventoryDetailEO/edit',
|
||||
dreSubmit: '/project/projectTaskInventoryFeedbackEO/dreSubmit',
|
||||
list: '/project/projectTaskInventoryFeedbackEO/list',
|
||||
historyList: '/wkflow/processHistoryEO/queryComplianceProcessHistoryList'
|
||||
},
|
||||
queryForm: {},
|
||||
queryProject: {},
|
||||
queryBy: {},
|
||||
queryData: {},
|
||||
title: '',
|
||||
dataSourceFile: [],
|
||||
textLoading: '',
|
||||
fileList: [],
|
||||
uploadAction: window._CONFIG['domianURL'] + '/sys/common/upload',
|
||||
examineTitle: '',
|
||||
isAdopt: false
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
document.title = 'NIO GRP'
|
||||
this.textLoading = this.$t('loading')
|
||||
this.getData(this.$route.query)
|
||||
},
|
||||
methods: {
|
||||
...mapGetters(['userInfo']),
|
||||
dataSourceFileClick(item) {
|
||||
kkFileView(item.fileName, item.id)
|
||||
},
|
||||
approvalFileClick(item, index) {
|
||||
kkFileView(item.approvalFileName[index], item.approvalFile[index])
|
||||
},
|
||||
iconClick() {
|
||||
if (this.$route.query.goRouter) {
|
||||
this.$router.push({
|
||||
path: this.$route.query.goRouter,
|
||||
query: {
|
||||
searchValue: this.$route.query.searchValue,
|
||||
activeTab: this.$route.query.activeTab
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$router.go(-1)
|
||||
}
|
||||
},
|
||||
onSubmit() {
|
||||
this.$refs.form.validate().then(() => {
|
||||
let handlingTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
|
||||
let content = []
|
||||
if (this.fileList && this.fileList.length > 0) {
|
||||
this.fileList.forEach(res => {
|
||||
content.push(res.id)
|
||||
})
|
||||
}
|
||||
this.form.approvalFile = content.join(',')
|
||||
this.completeTask({ operatorTime: handlingTime, ...this.form })
|
||||
})
|
||||
},
|
||||
getData(row) {
|
||||
this.show = true
|
||||
this.queryData = row
|
||||
this.queryData.isDisplay = JSON.parse(this.queryData.isDisplay)
|
||||
let _this = this
|
||||
if (row.flowType == '2') {
|
||||
this.title = this.$t('designTheComplianceProcess')
|
||||
} else if (row.flowType == '4') {
|
||||
this.title = this.$t('verifyComplianceProcess')
|
||||
}
|
||||
if (row.TaskKey == 'zrrqr' || row.TaskKey == 'dezrrqr' || row.TaskKey == 'zrrtjjfw' || row.TaskKey == 'dezrrtjjfw') {
|
||||
this.examineTitle = this.$t('personLiableConfirm')
|
||||
} else {
|
||||
this.examineTitle = this.$t('sponsorReview')
|
||||
}
|
||||
this.getHistoryList()
|
||||
if (row.taskIds) {
|
||||
this.queryTaskDetailByTask(function() {
|
||||
_this.queryProjectLawsInventoryInfo()
|
||||
})
|
||||
} else {
|
||||
this.queryBy.projectLibraryId = row.projectLibraryId
|
||||
this.queryBy.id = row.projectTaskInventoryId
|
||||
this.queryProjectLawsInventoryInfo()
|
||||
}
|
||||
},
|
||||
|
||||
queryTaskDetailByTask(callback) {
|
||||
this.loading = true
|
||||
getAction(this.url.queryTaskDetailByTaskIds, { taskIds: this.queryData.taskIds }).then((res) => {
|
||||
if (res instanceof String) {
|
||||
this.queryBy = JSON.parse(res) || {}
|
||||
callback()
|
||||
} else {
|
||||
this.queryBy = res || {}
|
||||
callback()
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
queryProjectLawsInventoryInfo() {
|
||||
let query = {
|
||||
id: this.queryBy.id,
|
||||
operatorType: 'taskAffirmQuery'
|
||||
}
|
||||
this.queryBy.approvalOpinion = ''
|
||||
this.queryBy.approvalFile = ''
|
||||
getAction(this.url.queryProjectLawsInventoryInfoById, query).then((res) => {
|
||||
if (res.success) {
|
||||
this.queryProject = res.result[0] || {}
|
||||
if (this.queryBy.disposeResult == 'To be tracked' || this.queryBy.disposeResult == 'Non-Compliance') {
|
||||
this.isAdopt = true
|
||||
}
|
||||
if (this.queryProject[this.queryData.deliverableTemplate]) {
|
||||
this.getFileInfos(this.queryProject[this.queryData.deliverableTemplate])
|
||||
}
|
||||
this.getQueryForm()
|
||||
} else {
|
||||
this.queryProject = {}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
getHistoryList() {
|
||||
let query = {
|
||||
actiProcInstId: this.queryData.actiProcInstId || this.queryData.prcId,
|
||||
flowType: this.queryData.flowType,
|
||||
projectLawsInventoryId: this.queryData.projectTaskInventoryId
|
||||
}
|
||||
getAction('/wkflow/processHistoryEO/queryComplianceProcessHistoryList', query).then((res) => {
|
||||
if (res.success) {
|
||||
this.dataSource = res.result || []
|
||||
this.dataSource.forEach(val => {
|
||||
if (val.approvalFileName) {
|
||||
val.approvalFileName = val.approvalFileName.split(',')
|
||||
val.approvalFile = val.approvalFile.split(',')
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.dataSource = []
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
getFileInfos(item) {
|
||||
getAction('sys/common/getFileInfos', { id: item }).then((res) => {
|
||||
if (res.success) {
|
||||
this.dataSourceFile = res.result
|
||||
this.dataSourceFile.forEach((val) => {
|
||||
let fileName = val.fileName
|
||||
let index1 = fileName.lastIndexOf('.')
|
||||
let index2 = fileName.length
|
||||
let fileSuffix = fileName.substring(index1, index2)
|
||||
val.fileSuffix = fileSuffix
|
||||
})
|
||||
} else {
|
||||
this.dataSourceFile = []
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
getQueryForm() {
|
||||
getAction(this.url.urlFrom, { id: this.queryBy.projectLibraryId }).then((res) => {
|
||||
if (res.success) {
|
||||
this.queryForm = res.result[0] || {}
|
||||
if (this.queryProject) {
|
||||
this.queryForm = { ...this.queryForm, ...this.queryProject }
|
||||
}
|
||||
this.show = false
|
||||
} else {
|
||||
this.queryForm = {}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
async upload(file) {
|
||||
// 这时候我们创建一个formData对象实例
|
||||
const formData = new FormData()
|
||||
// 通过append方法添加需要的file
|
||||
// 这里需要注意 append(key, value)来添加数据,如果指定的key不存在则会新增一条数据,如果key存在,则添加到数据的末尾
|
||||
formData.append('file', file.file)
|
||||
// 调用uploadFile上传的接口
|
||||
const res = await this.uploadFile(formData)
|
||||
this.fileList.push(res)
|
||||
// 上传文件的guid和后台返回的guid一样,通过push方法把上传的文件存放到上传成功才能提交的数组里面
|
||||
},
|
||||
uploadFile(formData) {
|
||||
this.textLoading = this.$t('loading')
|
||||
this.show = true
|
||||
return new Promise(resolve => {
|
||||
const token = Vue.ls.get(ACCESS_TOKEN)
|
||||
axios({
|
||||
url: this.uploadAction,
|
||||
method: 'post',
|
||||
data: formData,
|
||||
headers: {
|
||||
'Content-Type': 'multipart/form-data', // 文件上传
|
||||
'X-Access-Token': token
|
||||
}
|
||||
}).then((res) => {
|
||||
resolve(res.data.result)
|
||||
this.show = false
|
||||
})
|
||||
})
|
||||
},
|
||||
completeTask(value) {
|
||||
this.textLoading = this.$t('Submitting')
|
||||
this.show = true
|
||||
let json = Object.assign(this.queryBy, value)
|
||||
let data = JSON.stringify(json).replace(/\"/g, '\'')
|
||||
Object.keys(value).forEach(res => {
|
||||
if (value[res] && typeof value[res] == 'string') {
|
||||
value[res] = value[res].replace(/\"/g, '“')
|
||||
value[res] = value[res].replace(/\'/g, '‘')
|
||||
}
|
||||
})
|
||||
let query = {
|
||||
userid: this.userInfo().id,
|
||||
taskId: this.queryData.taskId || this.queryData.taskIds,
|
||||
json: data
|
||||
}
|
||||
postAction('/workFlow/completeTask', query).then((res) => {
|
||||
if (res.success) {
|
||||
this.$message.success(this.$t('OperationSuccessful'))
|
||||
this.show = false
|
||||
this.$router.go(-1)
|
||||
} else {
|
||||
this.show = false
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
fileClick(index) {
|
||||
this.fileList.splice(index, 1)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.box {
|
||||
padding: 0 0.4rem 0.4rem 0.4rem;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.header-search {
|
||||
/*padding-left: 0.4rem;*/
|
||||
/*padding-right: 0.4rem;*/
|
||||
width: 100%;
|
||||
display: flex;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
padding-top: 0.4rem;
|
||||
background: #fff;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
|
||||
.icon {
|
||||
font-size: 0.66rem;
|
||||
width: 0.7rem;
|
||||
}
|
||||
|
||||
.header-search-text {
|
||||
font-size: 0.44rem;
|
||||
font-family: PingFang SC-Medium, PingFang SC;
|
||||
font-weight: 600;
|
||||
color: #040B29;
|
||||
margin-left: 0.2rem;
|
||||
word-break: break-all;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
text-overflow: ellipsis;
|
||||
/*! autoprefixer: off */
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 2;
|
||||
/*! autoprefixer: on;*/
|
||||
text-justify: inter-ideograph;
|
||||
}
|
||||
|
||||
.collapse {
|
||||
margin-top: 0.6rem;
|
||||
}
|
||||
|
||||
::v-deep .van-cell {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
::v-deep .van-cell::after {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
::v-deep .van-collapse-item--border::after {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
::v-deep .van-hairline--top-bottom::after, .van-hairline-unset--top-bottom::after {
|
||||
border-width: 0;
|
||||
}
|
||||
|
||||
::v-deep .van-cell--clickable .van-cell__title span {
|
||||
font-size: 0.44rem;
|
||||
font-family: PingFang SC-Medium, PingFang SC;
|
||||
font-weight: 600;
|
||||
color: #040B29;
|
||||
}
|
||||
|
||||
::v-deep .collapse .van-cell--clickable .van-icon {
|
||||
font-size: 0.44rem;
|
||||
color: #040B29;
|
||||
}
|
||||
|
||||
::v-deep .van-collapse-item {
|
||||
margin-bottom: 0.6rem;
|
||||
}
|
||||
|
||||
.content-box-type {
|
||||
display: flex;
|
||||
margin-top: 0.08rem;
|
||||
margin-bottom: 0.4rem;
|
||||
}
|
||||
|
||||
.content-box-type:last-child {
|
||||
margin-bottom: 0.1rem;
|
||||
}
|
||||
|
||||
.content-box-left {
|
||||
display: inline-block;
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #6F7385;
|
||||
flex: auto;
|
||||
min-width: 2rem;
|
||||
}
|
||||
|
||||
.content-box-type-text {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #6F7385;
|
||||
margin-bottom: 0.4rem;
|
||||
}
|
||||
|
||||
.content-box-type-text-one {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #01A0AC;
|
||||
margin-bottom: 0.4rem;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.content-box-type-text-Two {
|
||||
display: inline-block;
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #040B29;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.content-box-text {
|
||||
text-align: right;
|
||||
margin-left: 0.3rem;
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #040B29;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
::v-deep .van-collapse-item__content {
|
||||
padding: 0.5rem 0;
|
||||
}
|
||||
|
||||
::v-deep .van-step__circle-container .van-icon {
|
||||
font-size: 0.55rem;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
::v-deep .van-step--finish {
|
||||
color: #00BEBE;
|
||||
}
|
||||
|
||||
::v-deep .van-step--vertical {
|
||||
padding: 0.26rem 0 0.46rem 0;
|
||||
}
|
||||
|
||||
::v-deep .van-step--vertical:not(:last-child)::after {
|
||||
border-bottom-width: 0;
|
||||
}
|
||||
|
||||
.vanStepBox {
|
||||
margin-left: 0.2rem;
|
||||
}
|
||||
|
||||
.van-text {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #040B29;
|
||||
}
|
||||
|
||||
.van-text-color {
|
||||
padding: 0.19rem 0.3rem;
|
||||
color: #26BD4B;
|
||||
font-size: 0.34rem;
|
||||
background: rgba(38, 189, 75, 0.12);
|
||||
border-radius: 0.1rem;
|
||||
}
|
||||
|
||||
.van-time {
|
||||
font-size: 0.34rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #868A9A;
|
||||
margin-top: 0.3rem;
|
||||
}
|
||||
|
||||
.van-name {
|
||||
color: #868A9A;
|
||||
margin-right: 0.1rem;
|
||||
font-size: 0.34rem;
|
||||
}
|
||||
|
||||
.van-name-time {
|
||||
color: #868A9A;
|
||||
margin-left: 0.1rem;
|
||||
font-size: 0.34rem;
|
||||
}
|
||||
|
||||
.van-desgin {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #41475E;
|
||||
margin-top: 0.3rem;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.van-file {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #01A0AC;
|
||||
margin-top: 0.3rem;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
::v-deep .van-form .van-cell__title {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #595E72;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
::v-deep .van-form .van-cell__value {
|
||||
margin-top: 0.1rem;
|
||||
}
|
||||
|
||||
::v-deep .van-form .van-radio__icon .van-icon {
|
||||
width: 0.45rem;
|
||||
height: 0.45rem;
|
||||
line-height: 0.38rem;
|
||||
}
|
||||
|
||||
::v-deep .van-form .van-radio__icon--checked .van-icon {
|
||||
background-color: #00BEBE;
|
||||
border-color: #00BEBE;
|
||||
}
|
||||
|
||||
::v-deep .van-form .van-radio__icon {
|
||||
height: 0.45rem;
|
||||
}
|
||||
|
||||
::v-deep .van-form .van-radio__label {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #040B29;
|
||||
}
|
||||
|
||||
::v-deep .van-form .van-cell {
|
||||
margin-bottom: 0.3rem;
|
||||
}
|
||||
|
||||
.textarea {
|
||||
display: block;
|
||||
}
|
||||
|
||||
::v-deep .van-form .textarea .van-field__control {
|
||||
background: #F5F6F7;
|
||||
border-radius: 0.12rem;
|
||||
padding: 0.2rem;
|
||||
margin-top: 0.1rem;
|
||||
}
|
||||
|
||||
.uploader {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.uploader-button {
|
||||
margin-top: 0.2rem;
|
||||
}
|
||||
|
||||
.uploader-button .van-button--primary {
|
||||
background-color: #fff;
|
||||
border: 0.03rem solid #00BEBE;
|
||||
color: #01A0AC;
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Medium, PingFang SC;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.uploader-button .van-button {
|
||||
height: 0.9rem;
|
||||
border-radius: 0.12rem;
|
||||
}
|
||||
|
||||
.uploader-button .van-button .van-icon {
|
||||
font-size: 0.42rem;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
::v-deep .van-loading {
|
||||
color: #fff;
|
||||
font-size: 0.36rem;
|
||||
}
|
||||
|
||||
::v-deep .van-loading__text {
|
||||
color: #fff;
|
||||
font-size: 0.46rem;
|
||||
}
|
||||
|
||||
::v-deep .van-overlay {
|
||||
z-index: 1001;
|
||||
text-align: center;
|
||||
line-height: 30;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.submitButton {
|
||||
border-radius: 0.2rem;
|
||||
background: #00B3BE;
|
||||
border: none;
|
||||
margin-top: 1.2rem;
|
||||
}
|
||||
|
||||
::v-deep .van-icon-success:before {
|
||||
font-size: 0.34rem;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
::v-deep .van-radio {
|
||||
margin-bottom: 0.1rem;
|
||||
}
|
||||
|
||||
.file-list {
|
||||
width: 100%;
|
||||
background: #FFFFFF;
|
||||
border-radius: 0.2rem;
|
||||
border: 0.02rem solid #E6E7EC;
|
||||
padding: 0.26rem 0.4rem;
|
||||
font-size: 0.38rem;
|
||||
font-weight: 400;
|
||||
color: #040B29;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 0.2rem;
|
||||
}
|
||||
|
||||
.file-text {
|
||||
display: inline-block;
|
||||
margin-right: 0.3rem;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.file-text-icon {
|
||||
font-size: 0.41rem;
|
||||
margin-left: 0.2rem;
|
||||
color: #26BD4B;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.icon-text {
|
||||
font-size: 0.4rem;
|
||||
color: #040B29;
|
||||
}
|
||||
|
||||
::v-deep .van-field--error .van-field__control::placeholder {
|
||||
color: #BBBDC7;
|
||||
}
|
||||
|
||||
.van-text-status {
|
||||
margin-bottom: 0.3rem;
|
||||
margin-top: 0.3rem;
|
||||
}
|
||||
|
||||
.van-collapse-item:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.AcceptedClass {
|
||||
background: #e9f8ed;
|
||||
color: #26BD4B;
|
||||
}
|
||||
|
||||
.RejectedClass {
|
||||
background: #fdeaea;
|
||||
color: #E83030;
|
||||
}
|
||||
|
||||
.TransferClass {
|
||||
background: #fff6e8;
|
||||
color: #FDA71C;
|
||||
}
|
||||
|
||||
.ReturnedClass {
|
||||
background: #fff6e8;
|
||||
color: #FDA71C;
|
||||
}
|
||||
|
||||
.AdoptClass {
|
||||
background: #e9f8ed;
|
||||
color: #26BD4B;
|
||||
}
|
||||
|
||||
.ComplianceClass {
|
||||
background: #e9f8ed;
|
||||
color: #26BD4B;
|
||||
}
|
||||
|
||||
.NonComplianceClass {
|
||||
background: #fdeaea;
|
||||
color: #E83030;
|
||||
}
|
||||
|
||||
.trackedClass {
|
||||
background: #fff6e8;
|
||||
color: #FDA71C;
|
||||
}
|
||||
|
||||
.NAClass {
|
||||
background: #f1f1f3;
|
||||
color: #707486;
|
||||
}
|
||||
|
||||
.resultofhandlingClass {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #595E72;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.requiredClass {
|
||||
color: #E83030;
|
||||
font-size: 0.38rem;
|
||||
margin-left: 0.06rem;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,189 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="header-search">
|
||||
<van-icon @click="iconClick" class="icon" name="arrow-left"/>
|
||||
<span class="header-search-text">
|
||||
{{$t('recentBrowsing')}}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<div class="content-text" @click="recentBrowsingClick(item)" v-for="(item,index) in recentBrowsingList"
|
||||
:key="index">
|
||||
<div class="content-text-left">
|
||||
<div class="content-text-top">
|
||||
<span class="content-text-top-left">
|
||||
{{item.title || '--'}}
|
||||
</span>
|
||||
<!-- <span class="content-text-top-right">-->
|
||||
<!-- 测试检验项目-->
|
||||
<!-- </span>-->
|
||||
</div>
|
||||
<div class="content-text-button">
|
||||
<span>{{item.browseTypeName}}</span>
|
||||
</div>
|
||||
<div class="content-text-button">
|
||||
<span>{{$t('browsingTime')}}:{{item.createTime}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-text-right">
|
||||
<van-icon name="arrow"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction, deleteAction, downloadFile } from '@/api/manage'
|
||||
import { mapGetters } from 'vuex'
|
||||
import { kkFileView } from '@/utils/kkfileView'
|
||||
|
||||
export default {
|
||||
name: 'phoneRecentBrowsing',
|
||||
data() {
|
||||
return {
|
||||
url: {
|
||||
page: '/phone/recentBrowse/page'
|
||||
},
|
||||
recentBrowsingList: []
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
document.title = 'NIO GRP'
|
||||
this.getRecentBrowsing()
|
||||
},
|
||||
methods: {
|
||||
...mapGetters(['userInfo']),
|
||||
iconClick() {
|
||||
this.$router.go(-1)
|
||||
},
|
||||
getRecentBrowsing() {
|
||||
let query = {
|
||||
createBy: this.userInfo().username,
|
||||
pageNo: 1,
|
||||
pageSize: 30
|
||||
}
|
||||
getAction(this.url.page, query).then((res) => {
|
||||
if (res.success) {
|
||||
this.recentBrowsingList = res.result.records || []
|
||||
} else {
|
||||
this.recentBrowsingList = []
|
||||
}
|
||||
})
|
||||
},
|
||||
recentBrowsingClick(item) {
|
||||
if (item.browseType == 'Document Library') {
|
||||
this.$router.push({
|
||||
path: '/phoneDocumentDetails',
|
||||
query: {
|
||||
id: item.browseDataId
|
||||
}
|
||||
})
|
||||
} else if (item.browseType == 'Regulatory Monthly Report') {
|
||||
kkFileView(item.title, item.fileId)
|
||||
} else if (item.browseType == 'Knowledge sharing') {
|
||||
this.$router.push({
|
||||
path: '/phoneProblemKnowledgeBase',
|
||||
query: {
|
||||
id: item.browseDataId
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.box {
|
||||
padding: 0 0.4rem 0.4rem 0.4rem;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.header-search {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
padding-top: 0.4rem;
|
||||
background: #fff;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.icon {
|
||||
font-size: 0.66rem;
|
||||
width: 0.7rem;
|
||||
}
|
||||
|
||||
.header-search-text {
|
||||
font-size: 0.44rem;
|
||||
font-family: PingFang SC-Medium, PingFang SC;
|
||||
font-weight: 600;
|
||||
color: #040B29;
|
||||
margin-left: 0.2rem;
|
||||
word-break: break-all;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
text-overflow: ellipsis;
|
||||
/*! autoprefixer: off */
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 2;
|
||||
/*! autoprefixer: on;*/
|
||||
text-justify: inter-ideograph;
|
||||
}
|
||||
|
||||
.content {
|
||||
margin-top: 0.36rem;
|
||||
}
|
||||
|
||||
.content-text {
|
||||
padding: 0.3rem 0;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
border-bottom: 0.02rem solid #E6E7EC;
|
||||
}
|
||||
|
||||
.content-text-left {
|
||||
width: calc(100% - 1rem);
|
||||
}
|
||||
|
||||
.content-text-right {
|
||||
width: 1rem;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.content-text-top {
|
||||
font-size: 0.42rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #040B29;
|
||||
word-break: break-all;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
text-overflow: ellipsis;
|
||||
/*! autoprefixer: off */
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 3;
|
||||
/*! autoprefixer: on;*/
|
||||
text-justify: inter-ideograph;
|
||||
}
|
||||
|
||||
.content-text-button {
|
||||
font-size: 0.42rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #595E72;
|
||||
margin-top: 0.13rem;
|
||||
}
|
||||
|
||||
.content-text-right .van-icon {
|
||||
font-size: 0.5rem;
|
||||
color: #040B29;
|
||||
}
|
||||
|
||||
.content-text-top-right {
|
||||
margin-left: 0.3rem;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,269 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="header-box">
|
||||
<img src="~@/assets/logoOne.png" alt="">
|
||||
<span class="logoTitle">NIO GRP</span>
|
||||
</div>
|
||||
<div class="content-box">
|
||||
<form action="/">
|
||||
<van-search v-model="value" @search="onSearch" left-icon="none" right-icon="search"
|
||||
:placeholder="$t('phoneSearch')"/>
|
||||
</form>
|
||||
</div>
|
||||
<div class="content-box-value">
|
||||
<div class="left-img">
|
||||
<img src="~@/assets/wendang.png" alt="">
|
||||
</div>
|
||||
<div class="text-left">
|
||||
<div class="text-left-top">{{$t('DocumentLibrary')}}</div>
|
||||
<div class="text-left-button">{{$t('stored')+ ' '+documentLibraryTotal+' ' + $t('individual')+$t('document')}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-right" @click="documentDetailsClick">
|
||||
{{$t('goToCheck')}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-box-value">
|
||||
<div class="left-img">
|
||||
<img src="~@/assets/icon_wiki.png" alt="">
|
||||
</div>
|
||||
<div class="text-left">
|
||||
<div class="text-left-top">{{$t('problemKnowledgeBase')}}</div>
|
||||
<div class="text-left-button">{{$t('stored')+ ' '+problemKnowledgeBaseTotal+' ' +
|
||||
$t('individual')+$t('problemKnowledgeBase')}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-right" @click="phoneProblemKnowledgeBaseClick">
|
||||
{{$t('goToCheck')}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-box-value">
|
||||
<div class="left-img">
|
||||
<img src="~@/assets/yuebao.png" alt="">
|
||||
</div>
|
||||
<div class="text-left">
|
||||
<div class="text-left-top">{{$t('monthlyReportRegulations')}}</div>
|
||||
<div class="text-left-button">{{$t('stored')+ ' '+monthlyReportRegulationsTotal+' ' +
|
||||
$t('individual')+$t('monthlyReportRegulations')}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-right" @click="processManagementClick">
|
||||
{{$t('goToCheck')}}
|
||||
</div>
|
||||
</div>
|
||||
<van-tabbar v-model="active" @change="onChange">
|
||||
<van-tabbar-item name="search" icon="search">{{$t('phoneSearch')}}</van-tabbar-item>
|
||||
<van-tabbar-item name="toDoCenter" icon="bell">{{$t('todocenter')}}</van-tabbar-item>
|
||||
<van-tabbar-item name="taskData" icon="underway">{{$t('taskStatistics')}}</van-tabbar-item>
|
||||
<van-tabbar-item name="home" icon="manager">{{$t('mine')}}</van-tabbar-item>
|
||||
</van-tabbar>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction, deleteAction, downloadFile } from '@/api/manage'
|
||||
|
||||
export default {
|
||||
name: 'phoneSearch',
|
||||
data() {
|
||||
return {
|
||||
active: 'search',
|
||||
value: '',
|
||||
documentLibraryTotal: 0,
|
||||
problemKnowledgeBaseTotal: 0,
|
||||
monthlyReportRegulationsTotal: 0
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
document.title = 'NIO GRP'
|
||||
this.getDataCount()
|
||||
},
|
||||
methods: {
|
||||
onChange(value) {
|
||||
if (value == 'toDoCenter') {
|
||||
this.$router.push({
|
||||
path: '/phoneToDoCenter'
|
||||
})
|
||||
} else if (value == 'taskData') {
|
||||
this.$router.push({
|
||||
path: '/phoneTaskData'
|
||||
})
|
||||
} else if (value == 'home') {
|
||||
this.$router.push({
|
||||
path: '/phoneHome'
|
||||
})
|
||||
}
|
||||
},
|
||||
onSearch(value) {
|
||||
this.$router.push({
|
||||
path: '/phoneSearchList',
|
||||
query: {
|
||||
searchValue: this.value
|
||||
}
|
||||
})
|
||||
},
|
||||
documentDetailsClick() {
|
||||
this.$router.push({
|
||||
path: '/phoneSearchList',
|
||||
query: {
|
||||
activeTab: 'documentLibrary'
|
||||
}
|
||||
})
|
||||
},
|
||||
processManagementClick() {
|
||||
this.$router.push({
|
||||
path: '/phoneSearchList',
|
||||
query: {
|
||||
activeTab: 'monthlyReportRegulations'
|
||||
}
|
||||
})
|
||||
},
|
||||
phoneProblemKnowledgeBaseClick() {
|
||||
this.$router.push({
|
||||
path: '/phoneSearchList',
|
||||
query: {
|
||||
activeTab: 'problemKnowledgeBase'
|
||||
}
|
||||
})
|
||||
},
|
||||
getDataCount() {
|
||||
getAction('/phone/search/getDataCount', {}).then((res) => {
|
||||
if (res.success) {
|
||||
this.documentLibraryTotal = res.result.documentLibraryCount || 0
|
||||
this.problemKnowledgeBaseTotal = res.result.problemKnowledgeBaseCount || 0
|
||||
this.monthlyReportRegulationsTotal = res.result.lawsMonthlyReportManageCount || 0
|
||||
} else {
|
||||
this.documentLibraryTotal = 0
|
||||
this.problemKnowledgeBaseTotal = 0
|
||||
this.monthlyReportRegulationsTotal = 0
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
::v-deep .van-tabbar-item--active {
|
||||
color: #00B3BE;
|
||||
}
|
||||
|
||||
.box {
|
||||
padding: 0.4rem;
|
||||
}
|
||||
|
||||
.header-box {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
padding-top: 2.2rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.logoTitle {
|
||||
font-size: 0.64rem;
|
||||
margin-left: 0.24rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #040B29;
|
||||
}
|
||||
|
||||
::v-deep .van-search {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.content-box {
|
||||
margin-top: 1.2rem;
|
||||
}
|
||||
|
||||
.content-box .van-search {
|
||||
width: 100%;
|
||||
height: 1.3rem;
|
||||
}
|
||||
|
||||
::v-deep .content-box .van-search .van-search__content {
|
||||
height: 1.3rem;
|
||||
background: #FFFFFF;
|
||||
border-radius: 0.24rem 0.24rem 0.24rem 0.24rem;
|
||||
opacity: 1;
|
||||
border: 0.06rem solid #040B29;
|
||||
}
|
||||
|
||||
::v-deep .van-search__content .van-cell {
|
||||
line-height: 0.96rem;
|
||||
}
|
||||
|
||||
::v-deep .van-field__body {
|
||||
font-size: 0.4rem;
|
||||
}
|
||||
|
||||
::v-deep .van-field__body .van-field__right-icon .van-icon {
|
||||
font-size: 0.52rem !important;
|
||||
font-weight: 600 !important;
|
||||
}
|
||||
|
||||
.content-box-value {
|
||||
margin-top: 0.4rem;
|
||||
background: #FFFFFF;
|
||||
border-radius: 0.24rem 0.24rem 0.24rem 0.24rem;
|
||||
opacity: 1;
|
||||
border: 0.05rem solid #E6E7EC;
|
||||
padding: 0.4rem;
|
||||
box-sizing: border-box;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.left-img {
|
||||
width: 1.1rem;
|
||||
height: 1.1rem;
|
||||
background: #F6F7F8;
|
||||
border-radius: 0.12rem;
|
||||
text-align: center;
|
||||
line-height: 1.1rem;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.left-img img {
|
||||
width: 0.58rem;
|
||||
height: 0.58rem;
|
||||
}
|
||||
|
||||
.text-left {
|
||||
float: left;
|
||||
margin-left: 0.3rem;
|
||||
width: calc(100% - 3.4rem);
|
||||
}
|
||||
|
||||
.text-left-top {
|
||||
font-size: 0.38rem;
|
||||
font-family: Blue Sky Noto-Bold, Blue Sky Noto;
|
||||
font-weight: bold;
|
||||
color: #41475E;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.text-left-button {
|
||||
font-size: 0.32rem;
|
||||
font-family: Blue Sky Noto-Light, Blue Sky Noto;
|
||||
font-weight: 300;
|
||||
color: #595E72;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.text-right {
|
||||
width: 1.8rem;
|
||||
height: 0.74rem;
|
||||
background: rgba(0, 179, 190, 0.12);
|
||||
border-radius: 99px 99px 99px 99px;
|
||||
opacity: 1;
|
||||
border: 1px solid rgba(0, 179, 190, 0.12);
|
||||
float: right;
|
||||
font-size: 0.3rem;
|
||||
text-align: center;
|
||||
line-height: 0.74rem;
|
||||
font-weight: 500;
|
||||
color: #00B3BE;
|
||||
margin-top: 0.22rem;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,735 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="fixed">
|
||||
<div class="header-search">
|
||||
<van-icon @click="iconClick" class="icon" name="arrow-left"/>
|
||||
<!-- <van-dropdown-menu v-if="activeTab == 'documentLibrary'">-->
|
||||
<!-- <van-dropdown-item @change="selectModelChange" v-model="selectModel" :options="option"/>-->
|
||||
<!-- </van-dropdown-menu>-->
|
||||
<!-- <van-search v-model="value"-->
|
||||
<!-- class="search-text"-->
|
||||
<!-- v-if="activeTab == 'documentLibrary'"-->
|
||||
<!-- show-action-->
|
||||
<!-- left-icon="none"-->
|
||||
<!-- @search="onSearch"-->
|
||||
<!-- @clear="onClear"-->
|
||||
<!-- @cancel="onClear"-->
|
||||
<!-- :action-text="$t('reset')"-->
|
||||
<!-- :placeholder="$t('phoneSearch')"/>-->
|
||||
<form action="/" style="width: 100%;">
|
||||
<van-search v-model="value"
|
||||
@search="onSearch"
|
||||
@clear="onClear"
|
||||
@cancel="onClear"
|
||||
:placeholder="$t('phoneSearch')"/>
|
||||
</form>
|
||||
</div>
|
||||
<div class="content">
|
||||
<van-tabs v-model="activeTab" :ellipsis="false" @change="activeChange">
|
||||
<van-tab name="whole" :title="$t('whole')"></van-tab>
|
||||
<van-tab name="documentLibrary" :title="$t('DocumentLibrary')"></van-tab>
|
||||
<van-tab name="problemKnowledgeBase" :title="$t('problemKnowledgeBase')"></van-tab>
|
||||
<van-tab name="monthlyReportRegulations" :title="$t('monthlyReportRegulations')"></van-tab>
|
||||
</van-tabs>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-box">
|
||||
<div class="search-top">
|
||||
{{$t('searchScope')}}:
|
||||
<!-- <span v-if="activeTab == 'documentLibrary' && searchValue">-->
|
||||
<!-- {{selectModelName}}:</span>-->
|
||||
<span>{{searchValue}}</span>
|
||||
</div>
|
||||
|
||||
<div v-if="activeTab == 'whole'">
|
||||
<van-list
|
||||
v-model="loading"
|
||||
:finished="finished"
|
||||
:finished-text="$t('noMore')"
|
||||
:loading-text="$t('loading')"
|
||||
@load="onLoad"
|
||||
>
|
||||
<div class="content-box-content" @click="dataClick(item)" v-for="(item,index) in list" :key="index">
|
||||
<div v-if="item.module_type_flag == 'WDK'">
|
||||
<div class="content-box-title" v-html="item.serial_number || '--'">
|
||||
</div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left"
|
||||
:class="{'content-box-left-En-WDK':language == 'en-us' ? true : false}"
|
||||
>{{$t('title')}}</span>
|
||||
<span class="content-box-text" v-html="item.title || '--'"></span>
|
||||
</div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left"
|
||||
:class="{'content-box-left-En-WDK':language == 'en-us' ? true : false}">{{$t('status')}}</span>
|
||||
<span class="content-box-text">{{item.state_dictText || '--'}}</span>
|
||||
</div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left"
|
||||
:class="{'content-box-left-En-WDK':language == 'en-us' ? true : false}">{{$t('category')}}</span>
|
||||
<span class="content-box-text" v-html="item.module_type || '--'"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else-if="item.module_type_flag == 'WTZSK' || item.module_type_flag == 'ZSFX'">
|
||||
<div class="content-box-title" v-html="item.title || '--'">
|
||||
</div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left-problemKnow"
|
||||
:class="{'content-box-left-problemKnow-En':language == 'en-us' ? true : false}"
|
||||
>{{$t('creator')}}</span>
|
||||
<span class="content-box-text">{{item.create_by || '--'}}</span>
|
||||
</div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left-problemKnow"
|
||||
:class="{'content-box-left-problemKnow-En':language == 'en-us' ? true : false}">
|
||||
{{$t('phoneCreationTime')}}
|
||||
</span>
|
||||
<span class="content-box-text">{{item.create_time_str || '--'}}</span>
|
||||
</div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left-problemKnow"
|
||||
:class="{'content-box-left-problemKnow-En':language == 'en-us' ? true : false}">{{$t('category')}}</span>
|
||||
<span class="content-box-text" v-html="item.module_type || '--'"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else-if="item.module_type_flag == 'FGYB'">
|
||||
<div class="content-box-title" v-html="item.title || '--'">
|
||||
</div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left-monthly"
|
||||
:class="{'content-box-left-monthly-En':language == 'en-us' ? true : false}">{{$t('uploadedBy')}}</span>
|
||||
<span class="content-box-text">{{item.create_by || '--'}}</span>
|
||||
</div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left-monthly"
|
||||
:class="{'content-box-left-monthly-En':language == 'en-us' ? true : false}">{{$t('uploadTime')}}</span>
|
||||
<span class="content-box-text">{{item.create_time_str || '--'}}</span>
|
||||
</div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left-monthly"
|
||||
:class="{'content-box-left-monthly-En':language == 'en-us' ? true : false}">{{$t('category')}}</span>
|
||||
<span class="content-box-text" v-html="item.module_type || '--'"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</van-list>
|
||||
</div>
|
||||
|
||||
<div v-else-if="activeTab == 'documentLibrary'">
|
||||
<van-list
|
||||
v-model="loading"
|
||||
:finished="finished"
|
||||
:finished-text="$t('noMore')"
|
||||
:loading-text="$t('loading')"
|
||||
@load="onLoad"
|
||||
>
|
||||
<div class="content-box-content" @click="dataClick(item)" v-for="(item,index) in documentLibraryList"
|
||||
:key="index">
|
||||
<div class="content-box-title" v-html="item.serial_number || '--'"></div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left"
|
||||
:class="{'content-box-left-En':language == 'en-us' ? true : false}">{{$t('title')}}</span>
|
||||
<span class="content-box-text" v-html="item.title || '--'"></span>
|
||||
</div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left"
|
||||
:class="{'content-box-left-En':language == 'en-us' ? true : false}">{{$t('status')}}</span>
|
||||
<span class="content-box-text">{{item.state_dictText}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</van-list>
|
||||
</div>
|
||||
|
||||
<div v-else-if="activeTab == 'problemKnowledgeBase'">
|
||||
<van-list
|
||||
v-model="loading"
|
||||
:finished="finished"
|
||||
:finished-text="$t('noMore')"
|
||||
:loading-text="$t('loading')"
|
||||
@load="onLoad"
|
||||
>
|
||||
<div class="content-box-content" @click="dataClick(item)" v-for="(item,index) in problemKnowledgeBaseList"
|
||||
:key="index">
|
||||
<div class="content-box-title" v-html="item.title || '--'"></div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left-problemKnow"
|
||||
:class="{'content-box-left-problemKnow-En':language == 'en-us' ? true : false}"
|
||||
>{{$t('creator')}}</span>
|
||||
<span class="content-box-text">{{item.create_by || '--'}}</span>
|
||||
</div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left-problemKnow"
|
||||
:class="{'content-box-left-problemKnow-En':language == 'en-us' ? true : false}">
|
||||
{{$t('phoneCreationTime')}}
|
||||
</span>
|
||||
<span class="content-box-text">{{item.create_time_str || '--'}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</van-list>
|
||||
</div>
|
||||
|
||||
<div v-else-if="activeTab == 'monthlyReportRegulations'">
|
||||
<van-list
|
||||
v-model="loading"
|
||||
:finished="finished"
|
||||
:finished-text="$t('noMore')"
|
||||
:loading-text="$t('loading')"
|
||||
@load="onLoad"
|
||||
>
|
||||
<div class="content-box-content" @click="dataClick(item)" v-for="(item,index) in monthlyReportRegulationsList"
|
||||
:key="index">
|
||||
<div class="content-box-title" v-html="item.title || '--'"></div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left-monthly"
|
||||
:class="{'content-box-left-monthly-En':language == 'en-us' ? true : false}">{{$t('uploadedBy')}}</span>
|
||||
<span class="content-box-text">{{item.create_by || '--'}}</span>
|
||||
</div>
|
||||
<div class="content-box-type">
|
||||
<span class="content-box-left-monthly"
|
||||
:class="{'content-box-left-monthly-En':language == 'en-us' ? true : false}">{{$t('uploadTime')}}</span>
|
||||
<span class="content-box-text">{{item.create_time_str || '--'}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</van-list>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction, downloadFile } from '@/api/manage'
|
||||
import { Base64 } from 'js-base64'
|
||||
import { kkFileView } from '@/utils/kkfileView'
|
||||
|
||||
export default {
|
||||
name: 'phoneSearchList',
|
||||
data() {
|
||||
return {
|
||||
value: '',
|
||||
activeTab: '',
|
||||
list: [],
|
||||
documentLibraryList: [],
|
||||
problemKnowledgeBaseList: [],
|
||||
monthlyReportRegulationsList: [],
|
||||
loading: false,
|
||||
finished: false,
|
||||
language: localStorage.getItem('language'),
|
||||
pageNo: 0,
|
||||
searchValue: '',
|
||||
downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download',
|
||||
downLoadImgUrl: window._CONFIG['domianWebImgURL'] + '/sys/common/download',
|
||||
url: {
|
||||
wholeUrl: 'search/document/getFullTextInfoList',
|
||||
documentLibraryUrl: '/phone/search/getWdkPage',
|
||||
problemKnowledgeBaseUrl: '/search/document/getProblemKnowledgeBasePage',
|
||||
monthlyReportRegulationsUrl: '/search/lawsMonthlyReport/page',
|
||||
queryCondition: 'search/document/queryCondition'
|
||||
},
|
||||
selectModel: '',
|
||||
option: [],
|
||||
searchOption: [],
|
||||
selectModelNameSearch: ''
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
document.title = 'NIO GRP'
|
||||
this.getCondition()
|
||||
if (this.$route.query.searchValue) {
|
||||
this.value = this.$route.query.searchValue
|
||||
this.searchValue = this.$route.query.searchValue
|
||||
}
|
||||
if (this.$route.query.activeTab) {
|
||||
this.activeTab = this.$route.query.activeTab
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
selectModelChange(event) {
|
||||
let content = this.option.filter((res) => {
|
||||
return res.value === event
|
||||
})
|
||||
if (content && content.length > 0) {
|
||||
this.selectModelNameSearch = content[0].text
|
||||
} else {
|
||||
this.selectModelNameSearch = ''
|
||||
}
|
||||
},
|
||||
getCondition() {
|
||||
let query = {
|
||||
flag: 1,
|
||||
searchFlag: 1
|
||||
}
|
||||
getAction(this.url.queryCondition, query).then((res) => {
|
||||
if (res.success) {
|
||||
let searchOption = res.result || []
|
||||
if (searchOption.length > 0) {
|
||||
this.selectModel = searchOption[0].db_field_name
|
||||
this.selectModelNameSearch = searchOption[0].db_field_txt
|
||||
for (let i = 0; i < searchOption.length; i++) {
|
||||
this.option.push({
|
||||
text: searchOption[i].db_field_txt,
|
||||
value: searchOption[i].db_field_name
|
||||
})
|
||||
}
|
||||
}
|
||||
} else {
|
||||
this.searchOption = []
|
||||
}
|
||||
})
|
||||
},
|
||||
iconClick() {
|
||||
this.$router.push({
|
||||
path: '/phoneSearch'
|
||||
})
|
||||
},
|
||||
onSearch() {
|
||||
this.searchValue = this.value
|
||||
this.selectModelName = this.selectModelNameSearch
|
||||
if (this.activeTab == 'whole') {
|
||||
this.list = []
|
||||
} else if (this.activeTab == 'documentLibrary') {
|
||||
this.documentLibraryList = []
|
||||
} else if (this.activeTab == 'problemKnowledgeBase') {
|
||||
this.problemKnowledgeBaseList = []
|
||||
} else if (this.activeTab == 'monthlyReportRegulations') {
|
||||
this.monthlyReportRegulationsList = []
|
||||
}
|
||||
this.loading = true
|
||||
this.finished = false
|
||||
this.pageNo = 1
|
||||
this.getList()
|
||||
},
|
||||
onClear() {
|
||||
this.searchValue = ''
|
||||
this.value = ''
|
||||
this.selectModelName = ''
|
||||
if (this.activeTab == 'whole') {
|
||||
this.list = []
|
||||
} else if (this.activeTab == 'documentLibrary') {
|
||||
this.documentLibraryList = []
|
||||
} else if (this.activeTab == 'problemKnowledgeBase') {
|
||||
this.problemKnowledgeBaseList = []
|
||||
} else if (this.activeTab == 'monthlyReportRegulations') {
|
||||
this.monthlyReportRegulationsList = []
|
||||
}
|
||||
this.loading = true
|
||||
this.finished = false
|
||||
this.pageNo = 1
|
||||
this.getList()
|
||||
},
|
||||
activeChange() {
|
||||
this.searchValue = ''
|
||||
this.value = ''
|
||||
this.selectModelName = ''
|
||||
if (this.activeTab == 'whole') {
|
||||
this.list = []
|
||||
} else if (this.activeTab == 'documentLibrary') {
|
||||
this.documentLibraryList = []
|
||||
} else if (this.activeTab == 'problemKnowledgeBase') {
|
||||
this.problemKnowledgeBaseList = []
|
||||
} else if (this.activeTab == 'monthlyReportRegulations') {
|
||||
this.monthlyReportRegulationsList = []
|
||||
}
|
||||
this.loading = true
|
||||
this.finished = false
|
||||
this.pageNo = 1
|
||||
this.getList()
|
||||
},
|
||||
recentBrowseAdd(browseType, id) {
|
||||
let query = {
|
||||
browseType: browseType,
|
||||
browseDataId: id
|
||||
}
|
||||
postAction('/phone/recentBrowse/add', query).then((res) => {
|
||||
})
|
||||
},
|
||||
dataClick(item) {
|
||||
if (item.module_type_flag == 'WDK') {
|
||||
this.recentBrowseAdd('Document Library', item.id.slice(0, 32))
|
||||
this.$router.push({
|
||||
path: '/phoneDocumentDetails',
|
||||
query: {
|
||||
id: item.id.slice(0, 32),
|
||||
goRouter: '/phoneSearchList',
|
||||
searchValue:this.value,
|
||||
activeTab:this.activeTab
|
||||
}
|
||||
})
|
||||
} else if (item.module_type_flag == 'WTZSK' || item.module_type_flag == 'ZSFX') {
|
||||
let id = item.id.replace('base', '')
|
||||
this.recentBrowseAdd('Knowledge sharing', id)
|
||||
this.$router.push({
|
||||
path: '/phoneProblemKnowledgeBase',
|
||||
query: {
|
||||
id: id,
|
||||
goRouter: '/phoneSearchList',
|
||||
searchValue:this.value,
|
||||
activeTab:this.activeTab
|
||||
}
|
||||
})
|
||||
} else if (item.module_type_flag == 'FGYB') {
|
||||
this.recentBrowseAdd('Regulatory Monthly Report', item.id)
|
||||
kkFileView(item.file_name, item.file_id)
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
if (this.finished) {
|
||||
this.list = []
|
||||
this.finished = false
|
||||
} else {
|
||||
this.pageNo++
|
||||
this.getList()
|
||||
}
|
||||
},
|
||||
getList() {
|
||||
let url = ''
|
||||
let params = {
|
||||
pageNo: this.pageNo,
|
||||
pageSize: 10,
|
||||
selectValue: this.value,
|
||||
mapOne: {},
|
||||
mapTwo: {}
|
||||
}
|
||||
if (this.activeTab == 'whole') {
|
||||
url = this.url.wholeUrl
|
||||
postAction(url, params).then(res => {
|
||||
if (res.success) {
|
||||
if (res.result.records.length > 0 && this.pageNo > 1) {
|
||||
this.list = this.list.concat(res.result.records)
|
||||
} else if (res.result.records.length > 0 && this.pageNo == 1) {
|
||||
this.list = res.result.records
|
||||
} else if (res.result.records.length == 0) {
|
||||
this.finished = true
|
||||
}
|
||||
this.loading = false
|
||||
} else {
|
||||
this.list = []
|
||||
this.loading = false
|
||||
this.finished = true
|
||||
}
|
||||
})
|
||||
} else if (this.activeTab == 'documentLibrary') {
|
||||
url = this.url.documentLibraryUrl
|
||||
this.getDocumentLibrary(url, params)
|
||||
} else if (this.activeTab == 'problemKnowledgeBase') {
|
||||
url = this.url.problemKnowledgeBaseUrl
|
||||
this.getProblemKnowledgeBase(url, params)
|
||||
} else if (this.activeTab == 'monthlyReportRegulations') {
|
||||
url = this.url.monthlyReportRegulationsUrl
|
||||
this.getMonthlyReportRegulations(url, params)
|
||||
}
|
||||
},
|
||||
getDocumentLibrary(url, params) {
|
||||
getAction(url, params).then(res => {
|
||||
if (res.success) {
|
||||
if (res.result.records.length > 0 && this.pageNo > 1) {
|
||||
this.documentLibraryList = this.documentLibraryList.concat(res.result.records)
|
||||
} else if (res.result.records.length > 0 && this.pageNo == 1) {
|
||||
this.documentLibraryList = res.result.records
|
||||
} else if (res.result.records.length == 0) {
|
||||
this.finished = true
|
||||
}
|
||||
this.loading = false
|
||||
} else {
|
||||
this.documentLibraryList = []
|
||||
this.loading = false
|
||||
this.finished = true
|
||||
}
|
||||
})
|
||||
},
|
||||
getProblemKnowledgeBase(url, params) {
|
||||
postAction(url, params).then(res => {
|
||||
if (res.success) {
|
||||
if (res.result.records.length > 0 && this.pageNo > 1) {
|
||||
this.problemKnowledgeBaseList = this.problemKnowledgeBaseList.concat(res.result.records)
|
||||
} else if (res.result.records.length > 0 && this.pageNo == 1) {
|
||||
this.problemKnowledgeBaseList = res.result.records
|
||||
} else if (res.result.records.length == 0) {
|
||||
this.finished = true
|
||||
}
|
||||
this.loading = false
|
||||
} else {
|
||||
this.problemKnowledgeBaseList = []
|
||||
this.loading = false
|
||||
this.finished = true
|
||||
}
|
||||
})
|
||||
},
|
||||
getMonthlyReportRegulations(url, params) {
|
||||
postAction(url, params).then(res => {
|
||||
if (res.success) {
|
||||
if (res.result.records.length > 0 && this.pageNo > 1) {
|
||||
this.monthlyReportRegulationsList = this.monthlyReportRegulationsList.concat(res.result.records)
|
||||
} else if (res.result.records.length > 0 && this.pageNo == 1) {
|
||||
this.monthlyReportRegulationsList = res.result.records
|
||||
} else if (res.result.records.length == 0) {
|
||||
this.finished = true
|
||||
}
|
||||
this.loading = false
|
||||
} else {
|
||||
this.monthlyReportRegulationsList = []
|
||||
this.loading = false
|
||||
this.finished = true
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
::v-deep .van-tabbar-item--active {
|
||||
color: #00B3BE;
|
||||
}
|
||||
|
||||
.box {
|
||||
padding-top: 3rem;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.header-search {
|
||||
padding: 0 0.4rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.icon {
|
||||
font-size: 0.66rem;
|
||||
}
|
||||
|
||||
::v-deep .van-search {
|
||||
padding: 0 0 0 0.2rem;
|
||||
}
|
||||
|
||||
::v-deep .van-search__action {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #040B29;
|
||||
padding: 0 0 0 0.3rem;
|
||||
height: 1.1rem;
|
||||
line-height: 1.1rem;
|
||||
}
|
||||
|
||||
.header-search .van-search {
|
||||
width: 100%;
|
||||
height: 1.1rem;
|
||||
}
|
||||
|
||||
::v-deep .header-search .van-search .van-search__content {
|
||||
height: 1.1rem;
|
||||
background: #F5F6F7;
|
||||
border-radius: 0.2rem 0.2rem 0.2rem 0.2rem;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
::v-deep .van-search__content .van-cell {
|
||||
line-height: 0.9rem;
|
||||
}
|
||||
|
||||
::v-deep .van-field__body {
|
||||
font-size: 0.4rem;
|
||||
}
|
||||
|
||||
::v-deep .van-field__left-icon .van-icon {
|
||||
font-size: 0.46rem !important;
|
||||
font-weight: 600 !important;
|
||||
}
|
||||
|
||||
.content {
|
||||
margin-top: 0.38rem;
|
||||
position: relative;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
::v-deep .van-tabs__line {
|
||||
background-color: #00B3BE;
|
||||
}
|
||||
|
||||
::v-deep .van-tab {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #868A9A;
|
||||
flex: none;
|
||||
margin-right: 0.2rem;
|
||||
}
|
||||
|
||||
::v-deep .van-tab--active {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Medium, PingFang SC;
|
||||
font-weight: 600;
|
||||
color: #040B29;
|
||||
}
|
||||
|
||||
::v-deep .van-tabs {
|
||||
padding: 0 0.4rem;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.search-right {
|
||||
position: absolute;
|
||||
right: 0.4rem;
|
||||
top: 0.07rem;
|
||||
}
|
||||
|
||||
.search-right-icon {
|
||||
font-size: 0.48rem;
|
||||
}
|
||||
|
||||
.content-box {
|
||||
padding: 0.4rem 0.4rem;
|
||||
box-sizing: border-box;
|
||||
background: #F7F7F8;
|
||||
}
|
||||
|
||||
.content-box-content {
|
||||
padding: 0.3rem 0.28rem;
|
||||
background: #fff;
|
||||
border-radius: 0.2rem;
|
||||
position: relative;
|
||||
margin-bottom: 0.4rem;
|
||||
}
|
||||
|
||||
.content-box-title {
|
||||
font-family: PingFang SC-Semibold, PingFang SC;
|
||||
font-weight: 600;
|
||||
color: #040B29;
|
||||
font-size: 0.42rem;
|
||||
}
|
||||
|
||||
.content-box-type {
|
||||
font-size: 0.34rem;
|
||||
font-family: PingFang SC-Medium, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #41475E;
|
||||
display: flex;
|
||||
margin-top: 0.08rem;
|
||||
}
|
||||
|
||||
.content-box-left {
|
||||
display: inline-block;
|
||||
flex: none;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.content-box-text {
|
||||
margin-left: 0.3rem;
|
||||
word-break: break-all;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
text-overflow: ellipsis;
|
||||
/*! autoprefixer: off */
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 3;
|
||||
/*! autoprefixer: on;*/
|
||||
text-justify: inter-ideograph;
|
||||
}
|
||||
|
||||
.search-top {
|
||||
font-size: 0.36rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #595E72;
|
||||
margin-bottom: 0.2rem;
|
||||
}
|
||||
|
||||
.search-top span {
|
||||
color: #040B29;
|
||||
}
|
||||
|
||||
.fixed {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
z-index: 1000;
|
||||
background: #fff;
|
||||
padding-top: 0.4rem;
|
||||
}
|
||||
|
||||
::v-deep .van-tabs__nav--line.van-tabs__nav--complete {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
::v-deep .van-tabs__wrap--scrollable .van-tab {
|
||||
padding: 0 0.1rem;
|
||||
}
|
||||
|
||||
.content-box-left-problemKnow {
|
||||
display: inline-block;
|
||||
font-weight: 500;
|
||||
width: 1.4rem;
|
||||
flex: none;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.content-box-left-En {
|
||||
width: 1.1rem;
|
||||
}
|
||||
|
||||
.content-box-left-problemKnow-En {
|
||||
width: 2.3rem;
|
||||
}
|
||||
|
||||
.content-box-left-En-WDK {
|
||||
width: 1.5rem;
|
||||
}
|
||||
|
||||
.content-box-left-monthly {
|
||||
display: inline-block;
|
||||
font-weight: 500;
|
||||
width: 1.4rem;
|
||||
word-break: break-all;
|
||||
flex: none;
|
||||
}
|
||||
|
||||
.content-box-left-monthly-En {
|
||||
width: 2.11rem;
|
||||
}
|
||||
|
||||
::v-deep .highlight-class {
|
||||
color: #21c9cc !important;
|
||||
}
|
||||
|
||||
::v-deep .van-dropdown-menu {
|
||||
height: 1.1rem;
|
||||
}
|
||||
|
||||
::v-deep .van-dropdown-menu__title--active {
|
||||
color: #21c9cc;
|
||||
}
|
||||
|
||||
::v-deep .van-dropdown-item__option--active {
|
||||
color: #21c9cc;
|
||||
}
|
||||
|
||||
::v-deep .van-dropdown-item__option--active .van-dropdown-item__icon {
|
||||
color: #21c9cc;
|
||||
}
|
||||
|
||||
::v-deep .van-dropdown-menu .van-dropdown-menu__bar {
|
||||
height: 1.1rem;
|
||||
background: #F5F6F7;
|
||||
font-size: 0.38rem;
|
||||
box-shadow: none;
|
||||
width: 2rem;
|
||||
border-top-left-radius: 0.2rem;
|
||||
border-bottom-left-radius: 0.2rem;
|
||||
border-right: 0.02rem #E6E7EC solid;
|
||||
margin-left: 0.2rem;
|
||||
}
|
||||
|
||||
::v-deep .van-dropdown-menu__title::after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.search-text {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.search-text .van-search__content {
|
||||
border-top-left-radius: 0 !important;
|
||||
border-bottom-left-radius: 0 !important;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,464 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="content">
|
||||
<van-tabs v-model="activeTab" @change="activeChange" :ellipsis="false">
|
||||
<van-tab name="regulatoryCertification" :title="$t('regulatoryCertificationProcess')"></van-tab>
|
||||
<van-tab name="parametercollection" :title="$t('authenticationParameterCollection')"></van-tab>
|
||||
</van-tabs>
|
||||
</div>
|
||||
<div class="content-box">
|
||||
<div class="regulatory" v-if="activeTab == 'regulatoryCertification'">
|
||||
<!-- <div class="content-box-text">-->
|
||||
<!-- {{$t('regulatoryCertificationProcessData')}}-->
|
||||
<!-- </div>-->
|
||||
<div class="regulatory-box">
|
||||
<div class="content-box-data" @click="regulationListIssuanceClick">
|
||||
<div class="content-box-data-text">
|
||||
{{$t('regulationListIssuance')}}
|
||||
</div>
|
||||
<div class="content-box-data-num">
|
||||
{{publishingCount}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-box-data" @click="processClick(2)">
|
||||
<div class="content-box-data-text">
|
||||
{{$t('designTheComplianceProcess')}}
|
||||
</div>
|
||||
<div class="content-box-data-num">
|
||||
{{designCount}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-box-data" @click="processClick(4)">
|
||||
<div class="content-box-data-text">
|
||||
{{$t('verifyComplianceProcess')}}
|
||||
</div>
|
||||
<div class="content-box-data-num">
|
||||
{{verifyCount}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-box-data" @click="processClick(21)">
|
||||
<div class="content-box-data-text">
|
||||
{{$t('thePreHomeProcess')}}
|
||||
</div>
|
||||
<div class="content-box-data-num">
|
||||
{{preHomoCount}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-box-data" @click="regulationListIssuanceClick">
|
||||
<div class="content-box-data-text">
|
||||
{{$t('technicalAssessmentOfRegulations')}}
|
||||
</div>
|
||||
<div class="content-box-data-num">
|
||||
{{technologyEvaluationCount}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-box-data" @click="regulationListIssuanceClick">
|
||||
<div class="content-box-data-text">
|
||||
{{$t('legalOpinionCollection')}}
|
||||
</div>
|
||||
<div class="content-box-data-num">
|
||||
{{opinionCollectionCount}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="parameter" v-else-if="activeTab == 'parametercollection'">
|
||||
<!-- <div class="content-box-text">-->
|
||||
<!-- {{$t('authenticationParameterCollectionData')}}-->
|
||||
<!-- </div>-->
|
||||
<van-list
|
||||
v-model="loading"
|
||||
:finished="finished"
|
||||
:finished-text="$t('noMore')"
|
||||
:loading-text="$t('loading')"
|
||||
@load="onLoad"
|
||||
>
|
||||
<div class="parame-box" @click="parameClick" v-for="(item,index) in dataSource" :key="index">
|
||||
<div class="parame-box-top">
|
||||
<span class="parame-box-top-text-left"
|
||||
:class="{'parame-box-top-text-left-one':language == 'en-us'? true : false}">
|
||||
{{$t('phoneRelatedItems')}}:</span>
|
||||
<span class="parame-box-top-text-right"
|
||||
:class="{'parame-box-top-text-right-one':language == 'en-us'? true : false}">
|
||||
{{item.projectName}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="parame-box-top">
|
||||
<span class="parame-box-top-text-left"
|
||||
:class="{'parame-box-top-text-left-one':language == 'en-us'? true : false}">
|
||||
{{$t('listHeading')}}:
|
||||
</span>
|
||||
<span class="parame-box-top-text-right"
|
||||
:class="{'parame-box-top-text-right-one':language == 'en-us'? true : false}">
|
||||
{{item.title}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="parame-box-top">
|
||||
<span class="parame-box-top-text-left"
|
||||
:class="{'parame-box-top-text-left-one':language == 'en-us'? true : false}">
|
||||
{{$t('Version')}}:
|
||||
</span>
|
||||
<span class="parame-box-top-text-right"
|
||||
:class="{'parame-box-top-text-right-one':language == 'en-us'? true : false}">
|
||||
{{item.version}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="parame-box-bottom">
|
||||
<div class="parame-box-bottom-box">
|
||||
<div class="parame-box-bottom-box-text-top">
|
||||
{{$t('completednum')}}
|
||||
</div>
|
||||
<div class="parame-box-bottom-box-text-num">
|
||||
{{item.waitFillNum || '--'}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="parame-box-bottom-box">
|
||||
<div class="parame-box-bottom-box-text-top">
|
||||
{{$t('filledBy')}}
|
||||
</div>
|
||||
<div class="parame-box-bottom-box-text-num">
|
||||
{{item.waitSdtNum || '--'}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="parame-box-bottom-box">
|
||||
<div class="parame-box-bottom-box-text-top">
|
||||
{{$t('parameterToBeInitiated')}}
|
||||
</div>
|
||||
<div class="parame-box-bottom-box-text-num">
|
||||
{{item.waitCollectNum || '--'}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</van-list>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<van-tabbar v-model="active" @change="onChange">
|
||||
<van-tabbar-item name="search" icon="search">{{$t('phoneSearch')}}</van-tabbar-item>
|
||||
<van-tabbar-item name="toDoCenter" icon="bell">{{$t('todocenter')}}</van-tabbar-item>
|
||||
<van-tabbar-item name="taskData" icon="underway">{{$t('taskStatistics')}}</van-tabbar-item>
|
||||
<van-tabbar-item name="home" icon="manager">{{$t('mine')}}</van-tabbar-item>
|
||||
</van-tabbar>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction, deleteAction, downloadFile } from '@/api/manage'
|
||||
import { Toast } from 'vant'
|
||||
|
||||
export default {
|
||||
name: 'phoneTaskData',
|
||||
data() {
|
||||
return {
|
||||
active: 'taskData',
|
||||
activeTab: 'regulatoryCertification',
|
||||
language: localStorage.getItem('language'),
|
||||
pageNo: 0,
|
||||
pageSize: 10,
|
||||
loading: false,
|
||||
finished: false,
|
||||
dataSource: [],
|
||||
publishingCount: 0,
|
||||
preHomoCount: 0,
|
||||
designCount: 0,
|
||||
verifyCount: 0,
|
||||
technologyEvaluationCount: 0,
|
||||
opinionCollectionCount: 0
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
document.title = 'NIO GRP'
|
||||
this.getProcessDataCount()
|
||||
},
|
||||
methods: {
|
||||
onChange(value) {
|
||||
if (value == 'toDoCenter') {
|
||||
this.$router.push({
|
||||
path: '/phoneToDoCenter'
|
||||
})
|
||||
} else if (value == 'search') {
|
||||
this.$router.push({
|
||||
path: '/phoneSearch'
|
||||
})
|
||||
} else if (value == 'home') {
|
||||
this.$router.push({
|
||||
path: '/phoneHome'
|
||||
})
|
||||
}
|
||||
},
|
||||
regulationListIssuanceClick() {
|
||||
Toast(this.$t('pleaseProcessThePC'))
|
||||
},
|
||||
parameClick() {
|
||||
Toast(this.$t('pleaseProcessThePC'))
|
||||
},
|
||||
processClick(num) {
|
||||
this.$router.push({
|
||||
path: '/phoneToDoCenter',
|
||||
query: {
|
||||
flowType: num
|
||||
}
|
||||
})
|
||||
},
|
||||
getProcessDataCount() {
|
||||
getAction('/phone/taskStatistics/getRegulatoryCertificationProcessDataCount', {}).then((res) => {
|
||||
if (res.success) {
|
||||
this.publishingCount = res.result.publishingCount || 0
|
||||
this.preHomoCount = res.result.preHomoCount || 0
|
||||
this.designCount = res.result.designCount || 0
|
||||
this.verifyCount = res.result.verifyCount || 0
|
||||
this.technologyEvaluationCount = res.result.technologyEvaluationCount || 0
|
||||
this.opinionCollectionCount = res.result.opinionCollectionCount || 0
|
||||
} else {
|
||||
this.publishingCount = 0
|
||||
this.preHomoCount = 0
|
||||
this.designCount = 0
|
||||
this.verifyCount = 0
|
||||
this.technologyEvaluationCount = 0
|
||||
this.opinionCollectionCount = 0
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
activeChange() {
|
||||
if (this.activeTab == 'regulatoryCertification') {
|
||||
this.getProcessDataCount()
|
||||
} else if (this.activeTab == 'parametercollection') {
|
||||
this.loading = true
|
||||
this.dataSource = []
|
||||
this.finished = false
|
||||
this.pageNo = 1
|
||||
this.getList()
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
if (this.finished) {
|
||||
this.dataSource = []
|
||||
this.finished = false
|
||||
} else {
|
||||
this.pageNo++
|
||||
this.getList()
|
||||
}
|
||||
},
|
||||
getList() {
|
||||
let query = {
|
||||
pageNo: this.pageNo,
|
||||
pageSize: this.pageSize
|
||||
}
|
||||
getAction('todoCenter/params/manifest/page', query).then((res) => {
|
||||
if (res.success) {
|
||||
if (res.result.records.length > 0 && this.pageNo > 1) {
|
||||
this.dataSource = this.dataSource.concat(res.result.records)
|
||||
} else if (res.result.records.length > 0 && this.pageNo == 1) {
|
||||
this.dataSource = res.result.records
|
||||
} else if (res.result.records.length == 0) {
|
||||
this.finished = true
|
||||
}
|
||||
this.loading = false
|
||||
} else {
|
||||
this.dataSource = []
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
::v-deep .van-tabbar-item--active {
|
||||
color: #00B3BE;
|
||||
}
|
||||
|
||||
.box {
|
||||
padding-top: 1.32rem;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.content {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
z-index: 1000;
|
||||
background: #fff;
|
||||
padding-top: 0.16rem;
|
||||
}
|
||||
|
||||
::v-deep .van-tabs__line {
|
||||
background-color: #00B3BE;
|
||||
}
|
||||
|
||||
::v-deep .van-tab {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #868A9A;
|
||||
flex: none;
|
||||
margin-right: 0.6rem;
|
||||
}
|
||||
|
||||
::v-deep .van-tab--active {
|
||||
font-size: 0.38rem;
|
||||
font-family: PingFang SC-Medium, PingFang SC;
|
||||
font-weight: 600;
|
||||
color: #040B29;
|
||||
}
|
||||
|
||||
.regulatory {
|
||||
padding: 0.36rem 0.36rem 0 0.36rem;
|
||||
background: #fff;
|
||||
box-shadow: 0.1rem 0.1rem 0.16rem 0 rgba(54, 61, 84, 0.05);
|
||||
border-radius: 0.2rem;
|
||||
}
|
||||
|
||||
.parameter {
|
||||
padding: 0.36rem;
|
||||
background: #fff;
|
||||
box-shadow: 0.1rem 0.1rem 0.16rem 0 rgba(54, 61, 84, 0.05);
|
||||
border-radius: 0.2rem;
|
||||
}
|
||||
|
||||
.regulatory-box {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
::v-deep .van-tabs {
|
||||
padding: 0 0.4rem;
|
||||
}
|
||||
|
||||
.content-box {
|
||||
width: 100%;
|
||||
padding: 0.4rem;
|
||||
background: #F7F7F8;
|
||||
margin-bottom: 1.3rem;
|
||||
}
|
||||
|
||||
.content-box-text {
|
||||
font-size: 0.4rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #040B29;
|
||||
margin-bottom: 0.4rem;
|
||||
margin-top: 0.2rem;
|
||||
}
|
||||
|
||||
.content-box-data {
|
||||
background: #F7F8FA;
|
||||
border-radius: 0.2rem;
|
||||
padding: 0.42rem;
|
||||
box-sizing: border-box;
|
||||
width: calc(50% - 0.2rem);
|
||||
display: inline-block;
|
||||
margin-right: 0.4rem;
|
||||
margin-bottom: 0.4rem;
|
||||
}
|
||||
|
||||
.content-box-data:nth-child(even) {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.content-box-data-text {
|
||||
font-size: 0.36rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #41475E;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.content-box-data-num {
|
||||
font-size: 0.44rem;
|
||||
font-family: PingFang SC-Medium, PingFang SC;
|
||||
font-weight: 600;
|
||||
color: #01A0AC;
|
||||
margin-top: 0.12rem;
|
||||
}
|
||||
|
||||
.parame-box {
|
||||
padding: 0.36rem;
|
||||
box-sizing: border-box;
|
||||
background: #F7F8FA;
|
||||
border-radius: 0.2rem;
|
||||
margin-bottom: 0.3rem;
|
||||
}
|
||||
|
||||
.parame-box:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.parame-box-top {
|
||||
display: flex;
|
||||
margin-bottom: 0.12rem;
|
||||
}
|
||||
|
||||
.parame-box-top-text-left {
|
||||
font-size: 0.36rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #868A9A;
|
||||
display: inline-block;
|
||||
margin-right: 0.12rem;
|
||||
flex: 1;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.parame-box-top-text-left-one {
|
||||
flex: 1.1;
|
||||
}
|
||||
|
||||
.parame-box-top-text-right {
|
||||
font-size: 0.36rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #040B29;
|
||||
flex: 3;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.parame-box-top-text-right-one {
|
||||
flex: 2;
|
||||
}
|
||||
|
||||
.parame-box-bottom {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: 0.18rem;
|
||||
}
|
||||
|
||||
.parame-box-bottom-box {
|
||||
width: calc(33% - 0.16rem);
|
||||
background: #fff;
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
padding: 0.26rem 0.16rem;
|
||||
box-sizing: border-box;
|
||||
border-radius: 0.2rem;
|
||||
}
|
||||
|
||||
.parame-box-bottom-box-text-top {
|
||||
font-size: 0.32rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #595E72;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.parame-box-bottom-box-text-num {
|
||||
font-size: 0.44rem;
|
||||
font-family: PingFang SC-Regular, PingFang SC;
|
||||
font-weight: 600;
|
||||
color: #01A0AC;
|
||||
margin-top: 0.12rem;
|
||||
}
|
||||
|
||||
::v-deep .van-tabs__nav--line.van-tabs__nav--complete {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
::v-deep .van-tabs__wrap--scrollable .van-tab {
|
||||
padding: 0 0.1rem;
|
||||
}
|
||||
</style>
|
||||
@@ -92,7 +92,7 @@
|
||||
</a-row>
|
||||
</a-form-model>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button @click="handleSubmit" type="primary">{{$t('submit')}}</a-button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
|
||||
@@ -258,7 +258,7 @@
|
||||
</a-form-model>
|
||||
</a-spin>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
|
||||
@@ -571,7 +571,7 @@
|
||||
</a-form-model>
|
||||
</a-spin>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
|
||||
@@ -533,7 +533,7 @@
|
||||
</a-form-model>
|
||||
</a-spin>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button @click="handleSubmit" v-if="formInline.roleCodeIndex == 0" type="primary" :loading="confirmLoading">
|
||||
{{$t('submit')}}
|
||||
</a-button>
|
||||
|
||||
@@ -478,7 +478,7 @@
|
||||
</a-form-model>
|
||||
</a-spin>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
<viewFileModel ref="viewFileModelRef"/>
|
||||
|
||||
@@ -151,7 +151,7 @@
|
||||
<!-- />-->
|
||||
<!-- </div>-->
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('determine')}}</a-button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
</div>
|
||||
<div class="box-content">
|
||||
<div class="box-content-left">
|
||||
<div id="main-left"></div>
|
||||
<div id="main-left-Collect"></div>
|
||||
</div>
|
||||
</div>
|
||||
<responsibilityList @responsibility="responsibility" ref="responsibilityListRef"/>
|
||||
@@ -186,7 +186,7 @@
|
||||
this.submitdata = this.submitquantity
|
||||
this.syncReportdata = this.syncReportquantity
|
||||
}
|
||||
var chartDom = document.getElementById('main-left')
|
||||
var chartDom = document.getElementById('main-left-Collect')
|
||||
var myChart = echarts.init(chartDom)
|
||||
var option
|
||||
var option1
|
||||
@@ -345,7 +345,7 @@
|
||||
},
|
||||
|
||||
mainLeftEcharts(data, color) {
|
||||
this.getEcharts('main-left', this.$t('Parametercollection'), color, data, 1)
|
||||
this.getEcharts('main-left-Collect', this.$t('Parametercollection'), color, data, 1)
|
||||
},
|
||||
responsibility(item) {
|
||||
this.$emit('currentStatus', item)
|
||||
@@ -367,7 +367,7 @@
|
||||
border: 2px #eff1f3 solid;
|
||||
border-radius: 6px;
|
||||
|
||||
#main-left {
|
||||
#main-left-Collect {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 24px 20px;
|
||||
|
||||
@@ -387,7 +387,7 @@
|
||||
</a-form-model>
|
||||
</a-spin>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button @click="handleOk" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
</div>
|
||||
</a-spin>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
/>
|
||||
</div>
|
||||
<div class='drawer-bootom-button'>
|
||||
<a-button style='margin-right: .8rem' @click='handleCancel'>{{ $t('cancel') }}</a-button>
|
||||
<a-button style='margin-right: 8px' @click='handleCancel'>{{ $t('cancel') }}</a-button>
|
||||
<a-button @click='handleSubmit' type='primary' :loading='confirmLoading'>{{ $t('submit') }}</a-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -171,7 +171,7 @@
|
||||
/>
|
||||
</div>
|
||||
<div class='drawer-bootom-button'>
|
||||
<a-button style='margin-right: .8rem' @click='handleCancel'>{{ $t('cancel') }}</a-button>
|
||||
<a-button style='margin-right: 8px' @click='handleCancel'>{{ $t('cancel') }}</a-button>
|
||||
<a-button @click='handleSubmit' type='primary' :loading='confirmLoading'>{{ $t('submit') }}</a-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
/>
|
||||
</div>
|
||||
<div class='drawer-bootom-button'>
|
||||
<a-button style='margin-right: .8rem' @click='handleCancel'>{{ $t('cancel') }}</a-button>
|
||||
<a-button style='margin-right: 8px' @click='handleCancel'>{{ $t('cancel') }}</a-button>
|
||||
<a-button @click='handleSubmit' type='primary' :loading='confirmLoading'>{{ $t('submit') }}</a-button>
|
||||
</div>
|
||||
<!-- 清单弹框 -->
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
<div class="title-text">
|
||||
<!-- <span class="title-text-text" :title="$t('Required')">{{$t('Required')}}</span>-->
|
||||
</div>
|
||||
<a-button style="margin-right: .8rem" @click="addConfiguration(index)" :loading="loading" v-has="'params:config:add'">{{$t('addConfiguration')}}
|
||||
<a-button style="margin-right: 8px" @click="addConfiguration(index)" :loading="loading" v-has="'params:config:add'">{{$t('addConfiguration')}}
|
||||
</a-button>
|
||||
<a-button @click="deleteConfiguration(item.id,index)" v-has="'params:config:delete'" type="primary" :loading="confirmLoading">
|
||||
{{$t('deleteConfiguration')}}
|
||||
@@ -107,7 +107,7 @@
|
||||
</a-form-model>
|
||||
</a-spin>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
/>
|
||||
</div>
|
||||
<div class='drawer-bootom-button'>
|
||||
<a-button style='margin-right: .8rem' @click='handleCancel'>{{ $t('cancel') }}</a-button>
|
||||
<a-button style='margin-right: 8px' @click='handleCancel'>{{ $t('cancel') }}</a-button>
|
||||
<a-button @click='handleSubmit' type='primary' :loading='confirmLoading'>{{ $t('submit') }}</a-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
</a-form-model>
|
||||
</a-spin>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
</div>
|
||||
</a-spin>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
<responsibilityList ref="responsibilityListRef"/>
|
||||
|
||||
@@ -151,7 +151,7 @@
|
||||
</a-button>
|
||||
</div>
|
||||
<!-- <div class='drawer-bootom-button'>-->
|
||||
<!-- <a-button style='margin-right: .8rem' @click='handleCancel'>{{ $t('cancel') }}</a-button>-->
|
||||
<!-- <a-button style='margin-right: 8px' @click='handleCancel'>{{ $t('cancel') }}</a-button>-->
|
||||
<!-- <a-button @click='handleSubmit' type='primary' :loading='confirmLoading'>{{ $t('submit') }}</a-button>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
|
||||
@@ -46,9 +46,9 @@
|
||||
</a-button>
|
||||
</a-dropdown>
|
||||
<a-popconfirm title="确定放弃编辑?" @confirm="close" okText="确定" cancelText="取消">
|
||||
<a-button style="margin-right: .8rem">取消</a-button>
|
||||
<a-button style="margin-right: 8px">取消</a-button>
|
||||
</a-popconfirm>
|
||||
<a-button @click="handleSubmit(false)" type="primary" :loading="loading" ghost style="margin-right: 0.8rem">仅保存</a-button>
|
||||
<a-button @click="handleSubmit(false)" type="primary" :loading="loading" ghost style="margin-right: 8px">仅保存</a-button>
|
||||
<a-button @click="handleSubmit(true)" type="primary" :loading="loading">保存并关闭</a-button>
|
||||
</div>
|
||||
<dept-role-datarule-modal ref="datarule"></dept-role-datarule-modal>
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
</a-button>
|
||||
</a-dropdown>
|
||||
<a-popconfirm :title="$t('AreYouWantDiscardEditing')" @confirm="close" :okText="$t('determine')" :cancelText="$t('cancel')">
|
||||
<a-button style="margin-right: .8rem">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px">{{$t('cancel')}}</a-button>
|
||||
</a-popconfirm>
|
||||
<a-button @click="handleSubmit(true)" type="primary">{{$t('preservation')}}</a-button>
|
||||
</div>
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
</a-form-model>
|
||||
</a-spin>
|
||||
<div class='drawer-bootom-button'>
|
||||
<a-button style='margin-right: .8rem' @click='handleCancel'>{{ $t('cancel') }}</a-button>
|
||||
<a-button style='margin-right: 8px' @click='handleCancel'>{{ $t('cancel') }}</a-button>
|
||||
<a-button @click='handleSubmit' type='primary' :loading='confirmLoading'>{{ $t('determine') }}</a-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -216,7 +216,7 @@
|
||||
<div class="drawer-bootom-button" v-show="!disableSubmit">
|
||||
<!-- <a-popconfirm :title="$t('AreYouWantDiscardEditing')" @confirm="handleCancel" :okText="$t('determine')"-->
|
||||
<!-- :cancelText="$t('cancel')">-->
|
||||
<a-button style="margin-right: .8rem" @click="handleSubmit">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleSubmit">{{$t('cancel')}}</a-button>
|
||||
<!-- </a-popconfirm>-->
|
||||
<a-button @click="handleSubmitOk" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
|
||||
</div>
|
||||
|
||||
@@ -43,10 +43,10 @@
|
||||
</a-button>
|
||||
</a-dropdown>
|
||||
<!-- <a-popconfirm title="确定放弃编辑?" @confirm="close" okText="确定" cancelText="取消">-->
|
||||
<!-- <a-button style="margin-right: .8rem">取消</a-button>-->
|
||||
<!-- <a-button style="margin-right: 8px">取消</a-button>-->
|
||||
<!-- </a-popconfirm>-->
|
||||
<a-button @click="close()" type="primary" :loading="loading" ghost style="margin-right: 0.8rem">取消</a-button>
|
||||
<a-button @click="handleSubmit(false)" type="primary" :loading="loading" ghost style="margin-right: 0.8rem">仅保存</a-button>
|
||||
<a-button @click="close()" type="primary" :loading="loading" ghost style="margin-right: 8px">取消</a-button>
|
||||
<a-button @click="handleSubmit(false)" type="primary" :loading="loading" ghost style="margin-right: 8px">仅保存</a-button>
|
||||
<a-button @click="handleSubmit(true)" type="primary" :loading="loading">保存并关闭</a-button>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
</a-form-model>
|
||||
</a-spin>
|
||||
<div class='drawer-bootom-button'>
|
||||
<a-button style='margin-right: .8rem' @click='handleCancel'>{{ $t('cancel') }}</a-button>
|
||||
<a-button style='margin-right: 8px' @click='handleCancel'>{{ $t('cancel') }}</a-button>
|
||||
<a-button @click='handleSubmit' type='primary' :loading='confirmLoading'>{{ $t('determine') }}</a-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
width: 170
|
||||
},
|
||||
{
|
||||
title: this.$t('relatedVersion'),
|
||||
title: this.$t('Version'),
|
||||
align: 'left',
|
||||
dataIndex: 'version',
|
||||
ellipsis: true,
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
</a-form-model>
|
||||
</div>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button @click="determineClick" type="primary">{{$t('determine')}}</a-button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
|
||||
@@ -148,12 +148,12 @@
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row>
|
||||
<a-col :span="13">
|
||||
<a-col :span="12">
|
||||
<a-form-item>
|
||||
<a-checkbox v-decorator="['rememberMe', {initialValue: true, valuePropName: 'checked'}]">自动登录</a-checkbox>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="6">
|
||||
<a-col :span="12" style="text-align: right">
|
||||
<a-form-item>
|
||||
<a-button type="primary" @click="ssoLogin">sso登录</a-button>
|
||||
</a-form-item>
|
||||
@@ -194,8 +194,8 @@
|
||||
import Vue from 'vue'
|
||||
import { putAction, postAction, getAction } from '@/api/manage'
|
||||
import { getRSAPublicKey } from '@/api/login.js'
|
||||
import { login, logout, phoneLogin, thirdLogin } from "@/api/login"
|
||||
import { ACCESS_TOKEN, USER_NAME,USER_INFO,UI_CACHE_DB_DICT_DATA } from "@/store/mutation-types"
|
||||
import { login, logout, phoneLogin, thirdLogin } from '@/api/login'
|
||||
import { ACCESS_TOKEN, USER_NAME, USER_INFO, UI_CACHE_DB_DICT_DATA } from '@/store/mutation-types'
|
||||
|
||||
const Base64 = require('js-base64').Base64
|
||||
import { JSEncrypt } from 'jsencrypt'
|
||||
@@ -229,7 +229,7 @@
|
||||
randCodeImage: '',
|
||||
requestCodeSuccess: false,
|
||||
rsaPublicKey: '',
|
||||
code:''
|
||||
code: ''
|
||||
}
|
||||
},
|
||||
created() {
|
||||
@@ -237,12 +237,12 @@
|
||||
Vue.ls.remove(ACCESS_TOKEN)
|
||||
|
||||
this.handleChangeCheckCode()
|
||||
let query =[]
|
||||
if(this.$route.query.redirect){
|
||||
query=this.$route.query.redirect.includes('code=')?this.$route.query.redirect.split('code='):[]
|
||||
this.code=query[1]
|
||||
let query = []
|
||||
if (this.$route.query.redirect) {
|
||||
query = this.$route.query.redirect.includes('code=') ? this.$route.query.redirect.split('code=') : []
|
||||
this.code = query[1]
|
||||
}
|
||||
if(this.code){
|
||||
if (this.code) {
|
||||
this.ssoLoginSuccess()
|
||||
}
|
||||
this.getRouterData()
|
||||
@@ -358,7 +358,13 @@
|
||||
if (!langCn) {
|
||||
localStorage.setItem('language', 'zh-cn')
|
||||
}
|
||||
this.$router.push({ path: '/dashboard/analysis' }).catch((res) => {
|
||||
let fullPath = ''
|
||||
if (this.mobile) {
|
||||
fullPath = '/phoneSearch'
|
||||
} else {
|
||||
fullPath = '/dashboard/analysis'
|
||||
}
|
||||
this.$router.push({ path: fullPath }).catch((res) => {
|
||||
})
|
||||
this.$notification.success({
|
||||
message: '欢迎',
|
||||
@@ -413,11 +419,11 @@
|
||||
})
|
||||
},
|
||||
//sso登录跳转
|
||||
ssoLogin(){
|
||||
ssoLogin() {
|
||||
window.open('https://signin-test.nio.com/oauth2/authorize?client_id=100679&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fdashboard%2Fanalysis&response_type=code', '_blank')
|
||||
},
|
||||
//sso登录
|
||||
ssoLoginSuccess(){
|
||||
ssoLoginSuccess() {
|
||||
let that = this
|
||||
let loginParams = {}
|
||||
loginParams.checkKey = that.currdatetime
|
||||
@@ -425,24 +431,28 @@
|
||||
// 新建JSEncrypt对象
|
||||
let encrypt = new JSEncrypt()
|
||||
encrypt.setPublicKey(loginParams.rsaPublicKey)
|
||||
getAction(`opensso/callback`,{code:this.code}).then(res=>{
|
||||
if(res.success){
|
||||
getAction(`opensso/callback`, { code: this.code }).then(res => {
|
||||
if (res.success) {
|
||||
Vue.ls.set(ACCESS_TOKEN, res.result.token, 7 * 24 * 60 * 60 * 1000)
|
||||
Vue.ls.set(USER_NAME, res.result.userInfo.username, 7 * 24 * 60 * 60 * 1000)
|
||||
Vue.ls.set(USER_INFO, res.result.userInfo, 7 * 24 * 60 * 60 * 1000)
|
||||
Vue.ls.set(UI_CACHE_DB_DICT_DATA, res.result.sysAllDictItems, 7 * 24 * 60 * 60 * 1000)
|
||||
this.$store.commit('SET_TOKEN', res.result.token)
|
||||
this.$store.commit('SET_INFO', res.result.userInfo)
|
||||
this.$store.commit('SET_NAME', { username: res.result.userInfo.username,realname: res.result.userInfo.realname, welcome: welcome() })
|
||||
this.$store.commit('SET_NAME', {
|
||||
username: res.result.userInfo.username,
|
||||
realname: res.result.userInfo.realname,
|
||||
welcome: welcome()
|
||||
})
|
||||
this.$store.commit('SET_AVATAR', res.result.userInfo.avatar)
|
||||
this.loginSuccess()
|
||||
}else if(res.message=='【单点登录】获取access_token失败'){
|
||||
} else if (res.message == '【单点登录】获取access_token失败') {
|
||||
this.ssoLogin()
|
||||
}else{
|
||||
} else {
|
||||
this.$message.error(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -529,9 +539,9 @@
|
||||
height: 46% !important;
|
||||
background: transparent;
|
||||
min-height: 0;
|
||||
padding: 0 2rem 0 2rem;
|
||||
padding: 0 0.4rem 0 0.4rem;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
top: 3.6rem;
|
||||
margin-top: 6rem;
|
||||
transform: translateY(-50%);
|
||||
|
||||
|
||||
@@ -185,7 +185,7 @@
|
||||
</a-form-model>
|
||||
</a-spin>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('cancel')}}</a-button>
|
||||
<a-button type="primary" @click="handleSubmit" :loading="confirmLoading">{{$t('submit')}}</a-button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
|
||||