Commit d5e8db79 authored by 盖献康's avatar 盖献康

Merge branch 'develop' of http://gitlab.91isoft.com:90/car-test/web into developer/gaixiankang

parents c17ae5c6 9b4a045a
......@@ -10,4 +10,4 @@ VUE_APP_BASE_API = '/prod-api'
# 图片服务器地址
VUE_APP_IMAGE_API ='/'
VUE_APP_CLIENT_API = 'https://10.12.48.78/usecase'
VUE_APP_CLIENT_API = 'http://10.12.48.78:8090'
......@@ -9,4 +9,4 @@ VUE_APP_BASE_API = 'http://49.232.167.247:22032'
# 图片服务器地址
VUE_APP_IMAGE_API = 'http://49.232.167.247:22037'
VUE_APP_CLIENT_API = 'https://10.12.48.78/usecase'
VUE_APP_CLIENT_API = 'http://10.12.48.78:8090'
......@@ -3,9 +3,9 @@
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<% if (process.env.NODE_ENV === 'production') { %>
<!-- <% if (process.env.NODE_ENV === 'production') { %>
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
<% } %>
<% } %> -->
<meta name="renderer" content="webkit">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
......
......@@ -47,3 +47,22 @@ export function selectMaterial(data) {
data: data
})
}
// 查看任务概览任务详情
export function selectTaskInfo(data){
return request({
url:'/task/getById',
method:'post',
data: data
})
}
// 查看任务概览数据统计
export function selectDataStatistics(data){
return request({
url:'/task/dataStatistics',
method: 'post',
data: data
})
}
......@@ -118,3 +118,7 @@
top: 20px;
transform: translateX(100%);
}
.el-checkbox__input.is-disabled + span.el-checkbox__label {
color: #606266;
}
......@@ -24,7 +24,6 @@ const standard = {
pageNum: 1,
pageSize: 9999
}).then(res => {
console.log(res.rows)
if (res.code === 200) {
standard.state.standard = res.rows[0].id
commit('SET_STANDARD_LIST', res.rows)
......
......@@ -13,7 +13,7 @@
v-for="(item, key) in standardList"
:key="key"
:value="item.id"
:label="item.name"
:label="item.standardNo + item.name"
></el-option>
</el-select>
</el-form-item>
......@@ -82,7 +82,9 @@
:key="index"
class="task-card-box"
>
<div class="inspection-standard">检验依据:《{{ item.name }}</div>
<div class="inspection-standard">
检验依据:{{ item.standardNo }}{{ item.name }}
</div>
<div class="card-content">
<div class="card-cell">
<div class="cell-label">任务编号</div>
......@@ -98,7 +100,7 @@
@click="goNext('/task/task-detail?taskId=' + item.id)"
>
{{ item.taskName ? item.taskName : '---' }}
<span class="green">(已归档)</span>
<!-- <span class="green">(已归档)</span> -->
</el-link>
</div>
</div>
......@@ -106,9 +108,9 @@
<div class="cell-label">车辆型号</div>
<div
class="cell-value"
:title="item.taskName ? item.taskName : '---'"
:title="item.productModel ? item.productModel : '---'"
>
{{ item.taskName ? item.taskName : '---' }}
{{ item.productModel ? item.productModel : '---' }}
</div>
</div>
<div class="card-cell">
......@@ -197,7 +199,7 @@
type="primary"
plain
size="mini"
@click="goNext('/processing/fileLibrary?id=' + item.id)"
@click="goNext('/processing/checkFileLibrary?id=' + item.id)"
>车企文件库</el-button
>
</div>
......
......@@ -23,11 +23,11 @@
label-position="top"
class="scene-form"
>
<el-form-item label="评审要求分类" prop="reviewType">
<el-form-item label="标准要求分类" prop="reviewType">
<!-- 下拉框 -->
<el-select
v-model="sceneForm.reviewType"
placeholder="请选择评审要求分类"
placeholder="请选择标准要求分类"
style="width: 100%"
>
<el-option
......@@ -101,10 +101,10 @@ export default {
sceneForm: {},
sceneRules: {
reviewType: [
{ required: true, message: '请选择评审类型', trigger: 'change' }
{ required: true, message: '请选择标准要求分类', trigger: 'change' }
],
sceneClassification: [
{ required: true, message: '请选择场景分类', trigger: 'change' }
{ required: true, message: '请选择评审类型', trigger: 'change' }
],
sceneContent: [
{ required: true, message: '请输入场景内容', trigger: 'blur' }
......
<template>
<el-dialog
:visible.sync="dialogManger.dialogVisible"
:title="modelTitle"
width="1200"
append-to-body
destroy-on-close
:close-on-click-modal="false"
:before-close="handleClose"
>
<el-form
ref="fileRef"
:model="model"
label-width="100px"
label-position="top"
class="file-form-class"
:rules="rules"
>
<el-row :gutter="40">
<el-col :span="12">
<el-form-item label="企业名称" prop="enterpriseName">
<el-input
v-model="model.enterpriseName"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="文件版本" prop="version">
<el-input v-model="model.version" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="文件状态" prop="status">
<el-select
v-model="model.status"
placeholder="请选择"
style="width: 100%"
>
<el-option
v-for="item in dict.type.file_status"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="文件识别号" prop="identifyNumber">
<el-input
v-model="model.identifyNumber"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="存储位置" prop="storage">
<el-input v-model="model.storage" placeholder="请输入"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="文件名称" prop="fileName">
<el-input
v-model="model.fileName"
placeholder="请输入"
:disabled="true"
></el-input>
</el-form-item>
<el-form-item label="发布日期" prop="publishDate">
<el-date-picker
v-model="model.publishDate"
value-format="yyyy-MM-dd"
type="date"
placeholder="选择日期"
style="width: 100%"
>
</el-date-picker>
</el-form-item>
<el-form-item label="文件照片" prop="photo">
<ImageUpload v-model="model.photo" :limit="1"></ImageUpload>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer">
<el-button @click="handleClose()"> 取消</el-button>
<el-button type="primary" @click="handleConfirm()"> 保存</el-button>
</div>
</el-dialog>
</template>
<script>
export default {
props: {
dialogManger: {
type: Object,
default() {
return {
dialogVisible: false,
dialogEditId: 0
}
}
}
},
dicts: ['file_status'],
data() {
return {
model: this.$modelDataSource({
url: '/review/enterprise/archive',
dataKey: 'model',
attributes: {
id: 0,
enterpriseName: '',
fileName: '',
version: '',
publishDate: '',
status: '',
storage: '',
identifyNumber: '',
photo: '',
taskId: ''
}
}),
rules: {
enterpriseName: [
{ required: true, message: '请输入企业名称', trigger: 'blur' }
],
fileName: [
{ required: true, message: '请输入文件名称', trigger: 'blur' }
],
version: [
{ required: true, message: '请输入文件版本', trigger: 'blur' }
],
publishDate: [
{ required: true, message: '请选择发布日期', trigger: 'change' }
],
status: [
{ required: true, message: '请选择文件状态', trigger: 'change' }
],
storage: [
{ required: true, message: '请输入存储位置', trigger: 'blur' }
],
identifyNumber: [
{ required: true, message: '请输入文件识别号', trigger: 'blur' }
],
photo: [
{ required: true, message: '请选择文件照片', trigger: 'change' }
]
}
}
},
computed: {
modelTitle() {
return this.dialogManger.dialogEditId ? '编辑' : '新增' + '校验场景'
}
},
watch: {
'dialogManger.dialogEditId'(newValue) {
this.model.fetch(
newValue,
{},
() => {
this.dialogManger.dialogVisible = true
},
() => {
this.$emit('refresh')
}
)
}
},
methods: {
handleClose() {
this.$emit('close')
},
handleConfirm() {
this.$refs['fileRef'].validate(valid => {
if (valid) {
this.model.save(
() => {
this.dialogManger.dialogVisible = false
this.$emit('refresh')
},
errors => {}
)
}
})
}
}
}
</script>
<template>
<task-standard>
<div slot="header-right">
<header-button icon="arrow-left" type="no-line" @click="goBack">
返回
</header-button>
</div>
<el-form ref="queryForm" :model="queryParams" size="small" :inline="true">
<template v-if="showSearch">
<el-form-item prop="fileName" label="文件名称">
<el-input
v-model="queryParams.fileName"
placeholder="请输入"
clearable
@keyup.enter.native="loadData"
/>
</el-form-item>
<el-form-item prop="status" label="文件状态">
<el-select v-model="queryParams.status" placeholder="请选择">
<el-option
v-for="item in dict.type.file_status"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="identifyNumber" label="文件识别号">
<el-input
v-model="queryParams.identifyNumber"
placeholder="请输入"
clearable
@keyup.enter.native="loadData"
/>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>查询</el-button
>
<el-button
type="default"
icon="el-icon-refresh"
size="mini"
@click="resetQuery"
>重置</el-button
>
</el-form-item>
</template>
<!-- <el-form-item>
<right-toolbar
:show-search.sync="showSearch"
@queryTable="loadData"
></right-toolbar>
</el-form-item> -->
</el-form>
<el-table
v-loading="tableLoading"
border
:scroll-x="'1500px'"
:default-sort="{ prop: 'createTime', order: 'descending' }"
:data="tableData"
>
<el-table-column type="index" width="55" label="序号" align="center">
<template slot-scope="scope">
<span>{{ scope.$index + 1 }}</span>
</template>
</el-table-column>
<el-table-column
label="所属车企"
sortable
min-width="210"
prop="enterpriseName"
align="left"
>
</el-table-column>
<el-table-column
prop="fileName"
label="文件名称"
min-width="220"
align="left"
>
</el-table-column>
<el-table-column
prop="version"
label="文件版本"
min-width="100"
align="left"
>
</el-table-column>
<el-table-column
prop="publishDate"
label="发布日期"
min-width="100"
align="left"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.publishDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column
prop="status"
label="文件状态"
min-width="100"
align="left"
>
<template slot-scope="scope">
<el-tag v-if="scope.row.status == 0" size="medium" type="success"
>{{ getDictData(dict.type.file_status, scope.row.status) }}
</el-tag>
<el-tag v-else size="medium" type="warning"
>{{ getDictData(dict.type.file_status, scope.row.status) }}
</el-tag>
</template>
</el-table-column>
<el-table-column
prop="storage"
label="存储位置"
min-width="210"
align="left"
>
</el-table-column>
<el-table-column
prop="identifyNumber"
label="文件识别号"
min-width="170"
align="left"
>
</el-table-column>
<el-table-column
prop="photo"
label="文件照片"
min-width="80"
align="left"
>
<template slot-scope="scope">
<img
:src="baseUrl + scope.row.photo"
alt="文件照片"
width="36"
height="36"
/>
</template>
</el-table-column>
<el-table-column
prop="createBy"
label="创建人员"
min-width="130"
align="left"
>
</el-table-column>
<el-table-column
label="创建时间"
min-width="170"
align="left"
sortable
prop="createTime"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column
v-if="view == 1"
label="操作"
align="center"
min-width="90"
fixed="right"
class-name="fixed-width"
>
<template slot-scope="scope">
<page-button
style="margin: 0 auto"
icon="edit"
title="修改"
@click.native="handleUpdate(scope.row.id)"
></page-button>
</template>
</el-table-column>
</el-table>
<yan-dialog
:dialog-manger="dialogManger"
@refresh="refreshList = true"
@close="dialogManger.dialogVisible = false"
></yan-dialog>
<pagination
:total="total"
:background="false"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="loadData"
>
</pagination>
</task-standard>
</template>
<script>
import page from '@/mixins/page'
import dialog from './components/dialog.vue'
import routerMixins from '@/mixins/router'
export default {
components: {
'yan-dialog': dialog
},
dicts: ['file_status'],
mixins: [page, routerMixins],
data() {
return {
// 弹窗管理器
dialogManger: {
dialogVisible: false,
refreshList: false,
dialogEditId: 0
},
refreshList: false,
baseUrl: process.env.VUE_APP_IMAGE_API,
listUrl: '/review/enterprise/archive/findEnterpriseArchiveByTaskId',
// 表格loading状态
tableLoading: false,
// 表格数据
tableData: [],
view: ''
}
},
watch: {
refreshList(newVal) {
if (newVal) {
this.loadData()
this.refreshList = false
}
}
},
created() {
this.queryParams.taskId = this.$route.query.id
this.view = this.$route.query.view
},
methods: {
resetQuery() {
// this.refs.queryForm.restForm() this.resetForm("queryForm");
this.queryParams = {
pageNum: this.queryParams.pageNum,
pageSize: this.queryParams.pageSize,
taskId: this.$route.query.id
}
this.handleQuery()
},
handleUpdate(id) {
this.dialogManger.dialogVisible = true
this.dialogManger.dialogEditId = id
}
}
}
</script>
<style lang="scss" scoped></style>
......@@ -12,6 +12,7 @@
v-model="queryParams.fileName"
placeholder="请输入"
clearable
@keyup.enter.native="loadData"
/>
</el-form-item>
<el-form-item prop="status" label="文件状态">
......@@ -30,6 +31,7 @@
v-model="queryParams.identifyNumber"
placeholder="请输入"
clearable
@keyup.enter.native="loadData"
/>
</el-form-item>
<el-form-item>
......@@ -107,7 +109,10 @@
align="left"
>
<template slot-scope="scope">
<el-tag size="medium" type="success"
<el-tag v-if="scope.row.status == 0" size="medium" type="success"
>{{ getDictData(dict.type.file_status, scope.row.status) }}
</el-tag>
<el-tag v-else size="medium" type="warning"
>{{ getDictData(dict.type.file_status, scope.row.status) }}
</el-tag>
</template>
......
......@@ -13,7 +13,7 @@
v-for="(item, key) in standardList"
:key="key"
:value="item.id"
:label="item.name"
:label="item.standardNo + item.name"
></el-option>
</el-select>
</el-form-item>
......@@ -197,7 +197,7 @@
type="primary"
plain
size="mini"
@click="goNext('/processing/fileLibrary?id=' + item.id)"
@click="goNext('/processing/checkFileLibrary?id=' + item.id)"
>车企文件库</el-button
>
</div>
......
......@@ -58,6 +58,7 @@ export default {
return {
task: {},
taskId: 1,
view: '',
fileUrl:
'http://storage.xuetangx.com/public_assets/xuetangx/PDF/PlayerAPI_v1.0.6.pdf'
}
......@@ -67,6 +68,7 @@ export default {
this.taskId = this.$route.query.id
this.getTaskDetail()
}
this.view = this.$route.query.view
},
methods: {
async getTaskDetail() {
......
......@@ -23,11 +23,11 @@
label-position="top"
class="scene-form"
>
<el-form-item label="评审要求分类" prop="reviewType">
<el-form-item label="标准要求分类" prop="reviewType">
<!-- 下拉框 -->
<el-select
v-model="sceneForm.reviewType"
placeholder="请选择评审要求分类"
placeholder="请选择标准要求分类"
style="width: 100%"
>
<el-option
......@@ -101,10 +101,10 @@ export default {
sceneForm: {},
sceneRules: {
reviewType: [
{ required: true, message: '请选择评审类型', trigger: 'change' }
{ required: true, message: '请选择标准要求分类', trigger: 'change' }
],
sceneClassification: [
{ required: true, message: '请选择场景分类', trigger: 'change' }
{ required: true, message: '请选择评审类型', trigger: 'change' }
],
sceneContent: [
{ required: true, message: '请输入场景内容', trigger: 'blur' }
......
......@@ -653,6 +653,8 @@ export default {
this.$modal.msgError(res.msg)
}
})
} else {
this.$message.error('您有未保存内容,请点击保存按钮')
}
}
})
......
......@@ -13,7 +13,7 @@
v-for="(item, key) in standardList"
:key="key"
:value="item.id"
:label="item.name"
:label="item.standardNo + item.name"
></el-option>
</el-select>
</el-form-item>
......@@ -443,7 +443,6 @@ export default {
* 企业文件库
*/
handleFileLibrary(item) {
console.log(item)
this.$router.push({
path: '/processing/fileLibrary?id=' + item.id
})
......
......@@ -74,6 +74,7 @@
border
:scroll-x="'1500px'"
:data="tableData"
:default-sort="{ prop: 'createTime', order: 'descending' }"
@sort-change="sort_change"
>
<el-table-column type="index" width="55" label="序号" align="center">
......
......@@ -150,7 +150,7 @@
@click="goTaskDetails(item.taskId)"
>{{ item.taskNo ? item.taskNo : '--' }}
<span v-show="index + 1 != scope.row.taskSampleRelation.length">
,
</span></el-link
>
</div>
......
<template>
<page-standard>
<div class="header">
<div class="header-title">任务编号</div>
<div class="header-state">(任务状态:)</div>
<div class="header-title">
{{ taskForm.taskNo }} - {{ taskForm.taskName }}
</div>
<div class="header-state">
(任务状态:<dict-tag
:options="dict.type.system_task_status"
:value="taskForm.taskStatus"
/>)
</div>
</div>
<div class="detailsCard">
<el-row :gutter="41" style="margin-bottom: 24px">
<el-col :span="8" class="card-title">
检验依据:<sapn class="card-contnet">GBxxx</sapn>
</el-col>
<el-col :span="8" class="card-title"> 检验项目: </el-col>
<el-col :span="8" class="card-title"> 保密等级: </el-col>
</el-row>
<el-row :gutter="41" style="margin-bottom: 24px">
<el-col :span="8" class="card-title"> 产品名称: </el-col>
<el-col :span="8" class="card-title"> 小组成员: </el-col>
<el-col :span="8" class="card-title"> 委托单位: </el-col>
</el-row>
<el-row :gutter="41" style="margin-bottom: 24px">
<el-col :span="8" class="card-title"> 车辆型号: </el-col>
</el-row>
<el-form
:model="taskForm"
size="small"
label-position="right"
label-width="100px"
>
<el-row :gutter="41">
<el-col :span="8">
<el-form-item label="检验依据:">
<sapn class="card-contnet">{{ taskForm.name }}</sapn>
</el-form-item>
</el-col>
<el-col :span="8" class="card-title">
<el-form-item label="检验项目:">
<el-checkbox-group v-model="taskList">
<el-checkbox
v-for="(item, index) in taskList"
:key="index"
:label="item"
disabled
></el-checkbox>
</el-checkbox-group>
</el-form-item>
</el-col>
<el-col :span="8" class="card-title" style="display: flex">
<el-form-item label="保密等级:">
<dict-tag
:options="dict.type.confidentiality_level"
:value="taskForm.confidentialityLevel"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="41">
<el-col :span="8" class="card-title">
<el-form-item label="产品名称:">
<sapn class="card-contnet">{{ taskForm.productName }}</sapn>
</el-form-item>
</el-col>
<el-col :span="8" class="card-title">
<el-form-item label="小组成员:">
<sapn class="card-contnet"
>{{ taskForm.leader ? taskForm.leader + '(组长)、' : '' }}
<div v-for="(item, index) in taskForm.auditors" :key="index">
{{ item.name }}
<span v-show="index + 1 != taskForm.auditors.length">
</span>
</div>
</sapn>
</el-form-item>
</el-col>
<el-col :span="8" class="card-title">
<el-form-item label="委托单位:">
<sapn class="card-contnet">{{ taskForm.entrustedUnit }}</sapn>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="41">
<el-col :span="8" class="card-title">
<el-form-item label="车辆型号:">
<sapn class="card-contnet">{{ taskForm.productModel }}</sapn>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<div>
<el-tabs v-model="activeName" @tab-click="tabClick">
......@@ -36,14 +94,16 @@
<el-col :span="4">
<el-progress
type="circle"
:percentage="30"
:percentage="
percentageChange(dataStatistic.systemDetailsPass)
"
color="#13BE24"
:width="120"
:width="130"
:stroke-width="16"
:format="format"
></el-progress>
</el-col>
<el-col :span="4">
<el-col :span="6">
<div class="prograss-laout" style="text-align: end">
<span class="line-prograss-title">审查细则(条)</span>
<span class="line-prograss-title"
......@@ -55,32 +115,44 @@
<span class="line-prograss-title">审查中(个)</span>
</div>
</el-col>
<el-col :span="14">
<el-col :span="12">
<div class="prograss-laout">
<el-progress
:text-inside="true"
:stroke-width="16"
:percentage="70"
:percentage="
percentageChange(dataStatistic.systemDetails)
"
:format="progressLine"
text-color="#fff"
></el-progress>
<el-progress
:text-inside="true"
:stroke-width="16"
:percentage="100"
:percentage="
percentageChange(dataStatistic.systemDetailsPassNum)
"
:format="progressLine"
status="success"
text-color="#fff"
></el-progress>
<el-progress
:text-inside="true"
:stroke-width="16"
:percentage="80"
:percentage="
percentageChange(dataStatistic.systemDetailsNoPassNum)
"
:format="progressLine"
status="warning"
text-color="#fff"
></el-progress>
<el-progress
:text-inside="true"
:stroke-width="16"
:percentage="50"
:percentage="
percentageChange(dataStatistic.systemDetailsUnderNum)
"
:format="progressLine"
status="exception"
color="#f98921"
text-color="#fff"
......@@ -97,14 +169,16 @@
<el-col :span="4">
<el-progress
type="circle"
:percentage="30"
:percentage="
percentageChange(dataStatistic.systemStandardsPass)
"
color="#13BE24"
:width="120"
:width="130"
:stroke-width="16"
:format="format"
></el-progress>
</el-col>
<el-col :span="4">
<el-col :span="6">
<div class="prograss-laout" style="text-align: end">
<span class="line-prograss-title">标准条款(个)</span>
<span class="line-prograss-title"
......@@ -116,32 +190,48 @@
<span class="line-prograss-title">审查中(个)</span>
</div>
</el-col>
<el-col :span="14">
<el-col :span="12">
<div class="prograss-laout">
<el-progress
:text-inside="true"
:stroke-width="16"
:percentage="70"
:percentage="
percentageChange(dataStatistic.systemStandards)
"
:format="progressLine"
text-color="#fff"
></el-progress>
<el-progress
:text-inside="true"
:stroke-width="16"
:percentage="100"
:percentage="
percentageChange(dataStatistic.systemStandardsPassNum)
"
:format="progressLine"
status="success"
text-color="#fff"
></el-progress>
<el-progress
:text-inside="true"
:stroke-width="16"
:percentage="80"
:percentage="
percentageChange(
dataStatistic.systemStandardsNoPassNum
)
"
:format="progressLine"
status="warning"
text-color="#fff"
></el-progress>
<el-progress
:text-inside="true"
:stroke-width="16"
:percentage="50"
:percentage="
percentageChange(
dataStatistic.systemStandardsUnderNum
)
"
:format="progressLine"
status="exception"
color="#f98921"
text-color="#fff"
......@@ -160,54 +250,68 @@
<el-row :gutter="40">
<el-col :span="12">
<div style="border: 1px solid #ebebeb; padding: 24px 0 24px 24px">
<el-row style="text-align: center"> 用例维度 </el-row>
<el-row class="prograss-title"> 用例维度 </el-row>
<el-row :gutter="20">
<el-col :span="4">
<el-progress
type="circle"
:percentage="30"
:percentage="
percentageChange(dataStatistic.carDetailsPass)
"
color="#13BE24"
:width="120"
:width="130"
:stroke-width="16"
:format="format"
></el-progress>
</el-col>
<el-col :span="4">
<el-col :span="6">
<div class="prograss-laout" style="text-align: end">
<span class="line-prograss-title">审查细则(条)</span>
<span class="line-prograss-title"
>测试用例合计(个)</span
>审查细则通过(个)</span
>
<span class="line-prograss-title">测试通过(个)</span>
<span class="line-prograss-title">测试未通过(个)</span>
<span class="line-prograss-title">执行未完成(个)</span>
<span class="line-prograss-title"
>审查细则未通过(个)</span
>
<span class="line-prograss-title">审查中(个)</span>
</div>
</el-col>
<el-col :span="14">
<el-col :span="12">
<div class="prograss-laout">
<el-progress
:text-inside="true"
:stroke-width="16"
:percentage="70"
:percentage="percentageChange(dataStatistic.carDetails)"
:format="progressLine"
text-color="#fff"
></el-progress>
<el-progress
:text-inside="true"
:stroke-width="16"
:percentage="100"
:percentage="
percentageChange(dataStatistic.carDetailsPassNum)
"
:format="progressLine"
status="success"
text-color="#fff"
></el-progress>
<el-progress
:text-inside="true"
:stroke-width="16"
:percentage="80"
:percentage="
percentageChange(dataStatistic.carDetailsNoPassNum)
"
:format="progressLine"
status="warning"
text-color="#fff"
></el-progress>
<el-progress
:text-inside="true"
:stroke-width="16"
:percentage="50"
:percentage="
percentageChange(dataStatistic.carDetailsUnderNum)
"
:format="progressLine"
status="exception"
color="#f98921"
text-color="#fff"
......@@ -219,56 +323,70 @@
</el-col>
<el-col :span="12">
<div style="border: 1px solid #ebebeb; padding: 24px 0 24px 24px">
<el-row style="text-align: center"> 合规维度 </el-row>
<el-row class="prograss-title"> 合规维度 </el-row>
<el-row :gutter="20">
<el-col :span="4">
<el-progress
type="circle"
:percentage="30"
:percentage="
percentageChange(dataStatistic.carStandardsPass)
"
color="#13BE24"
:width="120"
:width="130"
:stroke-width="16"
:format="format"
></el-progress>
</el-col>
<el-col :span="4">
<el-col :span="6">
<div class="prograss-laout" style="text-align: end">
<span class="line-prograss-title">标准条款(个)</span>
<span class="line-prograss-title"
>审查细则通过(个)</span
>标准条款通过(个)</span
>
<span class="line-prograss-title"
>审查细则未通过(个)</span
>标准条款未通过(个)</span
>
<span class="line-prograss-title">审查中(个)</span>
</div>
</el-col>
<el-col :span="14">
<el-col :span="12">
<div class="prograss-laout">
<el-progress
:text-inside="true"
:stroke-width="16"
:percentage="70"
:percentage="
percentageChange(dataStatistic.carStandards)
"
:format="progressLine"
text-color="#fff"
></el-progress>
<el-progress
:text-inside="true"
:stroke-width="16"
:percentage="100"
:percentage="
percentageChange(dataStatistic.carStandardsPassNum)
"
:format="progressLine"
status="success"
text-color="#fff"
></el-progress>
<el-progress
:text-inside="true"
:stroke-width="16"
:percentage="80"
:percentage="
percentageChange(dataStatistic.carStandardsNoPassNum)
"
:format="progressLine"
status="warning"
text-color="#fff"
></el-progress>
<el-progress
:text-inside="true"
:stroke-width="16"
:percentage="50"
:percentage="
percentageChange(dataStatistic.carStandardsUnderNum)
"
:format="progressLine"
status="exception"
color="#f98921"
text-color="#fff"
......@@ -281,61 +399,73 @@
</el-row>
<div class="tip-navigation">
<div class="tip"></div>
<div class="tip-title">体系审查</div>
<div class="tip-title">车型试验</div>
</div>
<el-row :gutter="40">
<el-col :span="12">
<div style="border: 1px solid #ebebeb; padding: 24px 0 24px 24px">
<el-row style="text-align: center"> 用例维度 </el-row>
<el-row class="prograss-title"> 用例维度 </el-row>
<el-row :gutter="20">
<el-col :span="4">
<el-progress
type="circle"
:percentage="30"
:percentage="
percentageChange(dataStatistic.testDetailsPass)
"
color="#13BE24"
:width="120"
:width="130"
:stroke-width="16"
:format="format"
:format="formatTest"
></el-progress>
</el-col>
<el-col :span="4">
<el-col :span="6">
<div class="prograss-laout" style="text-align: end">
<span class="line-prograss-title">审查细则(条)</span>
<span class="line-prograss-title"
>审查细则通过(个)</span
>
<span class="line-prograss-title"
>审查细则未通过(个)</span
>测试用例合计(个)</span
>
<span class="line-prograss-title">审查中(个)</span>
<span class="line-prograss-title">测试通过(个)</span>
<span class="line-prograss-title">测试未通过(个)</span>
<span class="line-prograss-title">执行未完成(个)</span>
</div>
</el-col>
<el-col :span="14">
<el-col :span="12">
<div class="prograss-laout">
<el-progress
:text-inside="true"
:stroke-width="16"
:percentage="70"
:percentage="
percentageChange(dataStatistic.testDetails)
"
:format="progressLine"
text-color="#fff"
></el-progress>
<el-progress
:text-inside="true"
:stroke-width="16"
:percentage="100"
:percentage="
percentageChange(dataStatistic.testDetailsPassNum)
"
:format="progressLine"
status="success"
text-color="#fff"
></el-progress>
<el-progress
:text-inside="true"
:stroke-width="16"
:percentage="80"
:percentage="
percentageChange(dataStatistic.testDetailsNoPassNum)
"
:format="progressLine"
status="warning"
text-color="#fff"
></el-progress>
<el-progress
:text-inside="true"
:stroke-width="16"
:percentage="50"
:percentage="
percentageChange(dataStatistic.testDetailsUnderNum)
"
:format="progressLine"
status="exception"
color="#f98921"
text-color="#fff"
......@@ -347,56 +477,66 @@
</el-col>
<el-col :span="12">
<div style="border: 1px solid #ebebeb; padding: 24px 0 24px 24px">
<el-row style="text-align: center"> 用例维度 </el-row>
<el-row class="prograss-title"> 合规维度 </el-row>
<el-row :gutter="20">
<el-col :span="4">
<el-progress
type="circle"
:percentage="30"
:percentage="
percentageChange(dataStatistic.testStandardsPass)
"
color="#13BE24"
:width="120"
:width="130"
:stroke-width="16"
:format="format"
></el-progress>
</el-col>
<el-col :span="4">
<el-col :span="6">
<div class="prograss-laout" style="text-align: end">
<span class="line-prograss-title">审查细则(条)</span>
<span class="line-prograss-title"
>审查细则通过(个)</span
>
<span class="line-prograss-title"
>审查细则未通过(个)</span
>
<span class="line-prograss-title">审查中(个)</span>
<span class="line-prograss-title">标准条款(个)</span>
<span class="line-prograss-title">测试通过(个)</span>
<span class="line-prograss-title">测试未通过(个)</span>
<span class="line-prograss-title">执行未完成(个)</span>
</div>
</el-col>
<el-col :span="14">
<el-col :span="12">
<div class="prograss-laout">
<el-progress
:text-inside="true"
:stroke-width="16"
:percentage="70"
:percentage="
percentageChange(dataStatistic.testDetailsUnderNum)
"
:format="testStandards"
text-color="#fff"
></el-progress>
<el-progress
:text-inside="true"
:stroke-width="16"
:percentage="100"
:percentage="
percentageChange(dataStatistic.testStandardsPassNum)
"
:format="testStandards"
status="success"
text-color="#fff"
></el-progress>
<el-progress
:text-inside="true"
:stroke-width="16"
:percentage="80"
:percentage="
percentageChange(dataStatistic.testStandardsNoPassNum)
"
:format="testStandards"
status="warning"
text-color="#fff"
></el-progress>
<el-progress
:text-inside="true"
:stroke-width="16"
:percentage="50"
:percentage="
percentageChange(dataStatistic.testStandardsUnderNum)
"
:format="testStandards"
status="exception"
color="#f98921"
text-color="#fff"
......@@ -411,7 +551,212 @@
<el-tab-pane label="样品信息" name="sampleInformation">
<div class="tip-navigation">
<div class="tip"></div>
<div class="tip-title">整车样品信息</div>
<div class="tip-title">
{{
'整车样品信息 (' + taskForm.completeVehicleSample.length + ')'
}}
</div>
</div>
<div style="display: flex; flex-wrap: wrap">
<div
v-for="(item, index) in taskForm.completeVehicleSample"
:key="index"
class="sampleCard"
>
<div class="sampleHeader">
<div class="avater">
<image-preview
width="62px"
height="62px"
:src="item.trademark"
></image-preview>
</div>
<div class="title">
<div class="top">{{ item.sampleNumber }}</div>
<div class="bottom">{{ item.sampleName }}</div>
</div>
</div>
<div style="margin-left: 4.8rem">
<div v-if="item.samplePhotos">
<image-preview
width="32px"
height="32px"
:src="item.samplePhotos"
></image-preview>
</div>
<div v-else>暂无样品照片</div>
</div>
<el-divider></el-divider>
<el-row :gutter="20" style="margin-bottom: 20px">
<el-col :span="8">
<div class="greenCard">
<div>
<div class="title">样品数量</div>
<div class="content">
{{ item.numberOfSamples ? item.numberOfSamples : '-' }}
</div>
</div>
</div>
</el-col>
<el-col :span="8">
<div class="yellowCard">
<div>
<div class="title">送样日期</div>
<div class="content">
{{ item.deliveryDate ? item.deliveryDate : '-' }}
</div>
</div>
</div>
</el-col>
<el-col :span="8">
<div class="blueCard">
<div>
<div class="title">送样者</div>
<div class="content">
{{ item.sampleSender ? item.sampleSender : '-' }}
</div>
</div>
</div>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="8">
<div class="greenCard">
<div>
<div class="title">车辆识别码</div>
<div class="content">
{{
item.identificationCode
? item.identificationCode
: '-'
}}
</div>
</div>
</div>
</el-col>
<el-col :span="8">
<div class="yellowCard">
<div>
<div class="title">生产日期</div>
<div class="content">
{{ item.manufactureDate ? item.manufactureDate : '-' }}
</div>
</div>
</div>
</el-col>
<el-col :span="8">
<div class="blueCard">
<div>
<div class="title">生产企业</div>
<div class="content">
{{
item.manufacturingEnterprise
? item.manufacturingEnterprise
: '-'
}}
</div>
</div>
</div>
</el-col>
</el-row>
</div>
</div>
<div class="tip-navigation">
<div class="tip"></div>
<div class="tip-title">
{{ '零部件样品信息 (' + taskForm.partVehicleSample.length + ')' }}
</div>
</div>
<div style="display: flex; flex-wrap: wrap">
<div
v-for="(item, index) in taskForm.partVehicleSample"
:key="index"
class="sampleCard"
>
<div class="sampleHeader">
<div class="avater">
<image-preview
width="62px"
height="62px"
:src="item.trademark"
></image-preview>
</div>
<div class="title">
<div class="top">{{ item.sampleNumber }}</div>
<div class="bottom">{{ item.sampleName }}</div>
</div>
</div>
<div style="margin-left: 4.8rem">
<div v-if="item.samplePhotos">
<image-preview
width="32px"
height="32px"
:src="item.samplePhotos"
></image-preview>
</div>
<div v-else>暂无样品照片</div>
</div>
<el-divider></el-divider>
<el-row :gutter="20" style="margin-bottom: 20px">
<el-col :span="8">
<div class="greenCard">
<div>
<div class="title">样品数量</div>
<div class="content">
{{ item.numberOfSamples ? item.numberOfSamples : '-' }}
</div>
</div>
</div>
</el-col>
<el-col :span="8">
<div class="yellowCard">
<div>
<div class="title">送样日期</div>
<div class="content">
{{ item.deliveryDate ? item.deliveryDate : '-' }}
</div>
</div>
</div>
</el-col>
<el-col :span="8">
<div class="blueCard">
<div>
<div class="title">送样者</div>
<div class="content">
{{ item.sampleSender ? item.sampleSender : '-' }}
</div>
</div>
</div>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="8">
<div class="yellowCard">
<div>
<div class="title">生产日期</div>
<div class="content">
{{ item.manufactureDate ? item.manufactureDate : '-' }}
</div>
</div>
</div>
</el-col>
<el-col :span="16">
<div class="blueCard">
<div>
<div class="title">生产企业</div>
<div class="content">
{{
item.manufacturingEnterprise
? item.manufacturingEnterprise
: '-'
}}
</div>
</div>
</div>
</el-col>
</el-row>
</div>
</div>
</el-tab-pane>
</el-tabs>
......@@ -419,16 +764,60 @@
</page-standard>
</template>
<script>
import { selectDataStatistics, selectTaskInfo } from '@/api/system/sample'
import dict from '@/utils/dict'
export default {
dicts: ['system_task_status', 'confidentiality_level'],
data() {
return {
taskList: [],
taskId: '',
taskForm: {},
dataStatistic: {
systemDetailsPass: 0
},
activeName: 'dataStatistics'
}
},
created() {
this.taskId = this.$route.query.taskId
this.getTaskInfo()
this.getDataStatistics()
},
methods: {
dict,
getDataStatistics() {
selectDataStatistics({ id: this.taskId }).then(res => {
this.dataStatistic = res.data
console.log('数据统计', res)
})
},
getTaskInfo() {
selectTaskInfo({ id: this.taskId }).then(res => {
this.taskForm = res.data
if (res.data.taskList) {
this.taskList = this.taskForm.taskList.split(',')
}
console.log('任务详情', res)
})
},
tabClick() {},
formatTest(percentage) {
return (percentage = `测试通过率\n\n ${percentage}%`)
},
format(percentage) {
return (percentage = `审查通过率\n\n ${percentage}%`)
},
progressLine(percentage) {
return (percentage = `${percentage}`)
},
percentageChange(data) {
if (data) {
return data
} else {
return 0
}
}
}
}
......@@ -442,11 +831,13 @@ export default {
padding: 25px 25px 0 25px;
margin-bottom: 40px;
.card-title {
display: flex;
font-size: 14px;
font-weight: 700;
color: #606266;
}
.card-contnet {
display: flex;
font-size: 14px;
font-weight: 400;
color: #606266;
......@@ -462,6 +853,8 @@ export default {
margin-bottom: 16px;
}
.header-state {
display: flex;
justify-content: center;
font-size: 16px;
font-weight: 400;
color: #13be24;
......@@ -503,6 +896,100 @@ export default {
color: #606266;
margin-bottom: 20px;
}
.sampleCard {
width: 30%;
margin-bottom: 20px;
margin-right: 40px;
padding: 25px;
background: #ffffff;
border: 1px solid #ebebeb;
border-radius: 4px;
.sampleHeader {
display: flex;
.avater {
margin-right: 14px;
}
.title {
height: 62px;
display: flex;
flex-direction: column;
justify-content: space-between;
.top {
font-size: 16px;
font-weight: 700;
color: #303133;
}
.bottom {
font-size: 14px;
font-weight: 400;
color: #606266;
}
}
}
.greenCard {
display: flex;
justify-content: center;
align-items: center;
height: 70px;
background: rgba(19, 190, 36, 0.1);
border-radius: 8px;
.title {
text-align: center;
font-size: 14px;
font-weight: 400;
color: #303133;
margin-bottom: 10px;
}
.content {
font-size: 14px;
font-weight: 700;
color: #13be24;
text-align: center;
}
}
.yellowCard {
display: flex;
justify-content: center;
align-items: center;
height: 70px;
background: rgba(249, 171, 56, 0.1);
border-radius: 8px;
.title {
text-align: center;
font-size: 14px;
font-weight: 400;
color: #303133;
margin-bottom: 10px;
}
.content {
font-size: 14px;
font-weight: 700;
color: #f9ab38;
text-align: center;
}
}
.blueCard {
display: flex;
justify-content: center;
align-items: center;
height: 70px;
background: rgba(26, 111, 215, 0.1);
border-radius: 8px;
.title {
font-size: 14px;
font-weight: 400;
color: #303133;
margin-bottom: 10px;
text-align: center;
}
.content {
font-size: 14px;
font-weight: 700;
color: #1a6fd7;
text-align: center;
}
}
}
::v-deep .el-progress__text {
white-space: pre;
}
......
......@@ -19,7 +19,8 @@ export default {
data() {
return {
id: this.$route.query,
url: 'https://10.12.48.78/usecase/car/caseManage/case/casePublishDetail/case_items;375'
url: 'http://10.12.48.78:8090/car/caseManage/case/casePublishDetail/case_items;375'
// http://10.12.48.80:1234/car/caseManage/case/casePublishDetail/case_items;375
}
},
mounted() {
......
......@@ -24,7 +24,7 @@
v-for="(item, key) in standardList"
:key="key"
:value="item.id"
:label="item.name"
:label="item.standardNo + item.name"
></el-option>
</el-select>
</el-form-item>
......@@ -462,7 +462,7 @@
type="primary"
plain
size="mini"
@click="goNext('/processing/fileLibrary?id=' + item.id)"
@click="goNext('/processing/checkFileLibrary?id=' + item.id)"
>车企文件库</el-button
>
</div>
......@@ -585,15 +585,6 @@ export default {
* 耗时计算
*/
getHourDiff,
/**
* 企业文件库
*/
handleFileLibrary(item) {
console.log(item)
this.$router.push({
path: '/processing/fileLibrary?id=' + item.id
})
},
/**
* 开始任务
* @param {} item 单项数据
......
......@@ -42,7 +42,7 @@ module.exports = {
}
},
[process.env.VUE_APP_CLIENT_API]: {
target: `https://10.12.48.78/usecase`,
target: `http://10.12.48.78:8090`,
changeOrigin: true,
pathRewrite: {
['^' + process.env.VUE_APP_CLIENT_API]: ''
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment