Commit 4a5e8ea0 by lichengming

修改了检测依据管理

parent 985ebacf
...@@ -26,3 +26,4 @@ export { default as workbench } from './meter/workbench/workbench' ...@@ -26,3 +26,4 @@ export { default as workbench } from './meter/workbench/workbench'
*/ */
export { default as meterEntrust } from './meter/meter-entrust' export { default as meterEntrust } from './meter/meter-entrust'
export { default as meterSample } from './meter/meter-sample' export { default as meterSample } from './meter/meter-sample'
export { default as soilAptitude } from './soil/soil-aptitude'
/**
* 工作台
*/
import http from '../http'
import { https } from '../https'
export default {
// page
page: data => http.post('meter/v1/sample/page', data).then(res => res),
getById: data => http.get('meter/v1/sample/' + data).then(res => res),
reportPreview: data =>
http
.post('meter/v1/sample/report_preview_login?id=' + data)
.then(res => res),
deleteById: data =>
http.delete('meter/v1/sample/?ids=' + data).then(res => res),
// 保存
save: data =>
https
.post('meter/v1/sample/add_send_entrust', JSON.stringify(data))
.then(res => res),
addSample: data => http.post('meter/v1/sample/', data).then(res => res)
}
<template>
<div>
<!--内容-->
<div class="layout-content-padding">
<div class="layout-content-main">
<Row>
<Col span="24" class="margin-top-10">
<!--搜索表单-->
<Form id="search-form" :label-width="70" v-show="searchOpen" inline onsubmit="return false">
<label class="label-sign"></label>
<Form-item class="search-item" label="依据编号:">
<Input @on-enter="_formSearch" name="stdNum" placeholder="请输入标准号" clearable/>
</Form-item>
<Form-item class="search-item" label="依据名称:">
<Input @on-enter="_formSearch" name="name" placeholder="请输入标准名称" clearable/>
</Form-item>
<!-- <Form-item class="search-item" label="标准状态:">-->
<!-- <Select name="status" placeholder="请选择标准状态" clearable>-->
<!-- <Option v-for="item in statusList" :value="item.value" :key="item.name">{{item.name}}</Option>-->
<!-- </Select>-->
<!-- </Form-item>-->
<!-- <Form-item class="search-item" label="标准分类:">-->
<!-- <Select name='classify' placeholder="请选择标准分类" clearable>-->
<!-- <Option v-for="item in classifyList" :value="item.value" :key="item.name">{{item.name}}</Option>-->
<!-- </Select>-->
<!-- </Form-item>-->
<!-- <Form-item label="标准类型:" class="search-item margin-left-6">-->
<!-- <Select name="type" placeholder="请选择标准类型" clearable>-->
<!-- <Option v-for="item in typeList" :value="item.value" :key="item.value">{{ item.name }}</Option>-->
<!-- </Select>-->
<!-- </Form-item>-->
<!-- <Form-item class="search-item" label="发布单位:">-->
<!-- <Input @on-enter="_formSearch" name="publishUnit" placeholder="请输入发布单位" clearable/>-->
<!-- </Form-item>-->
<Form-item class="search-btn">
<Button @click="_formSearch" type="primary">搜索</Button>
</Form-item>
</Form>
</Col>
<!--操作-->
<Col span="24">
<btn-list :msg="btn" :open="searchOpen" :showSearchBtn="true" @on-result-change="_btnClick"
class="contHide"></btn-list>
</Col>
<!--表格 -->
<Col span="24">
<PTVXETable ref="pageTable" :tableHeight="tableHeight"
@on-result-change="_tableResultChange" :getPage="getPage" :iconMsg="iconMsg">
<vxe-table-column
:field="item.key"
:title="item.title"
:min-width="item.width?item.width:200"
:fixed="item.fixed?item.fixed:undefined"
v-for="item in pageColumns"
:key="item.key" sortable>
<template slot-scope="scope">
<div v-if="item.key==='status'">{{scope.row[item.key]===0?'现行':scope.row[item.key]===1?'即将实施':
scope.row[item.key]===2?'部分被代替':scope.row[item.key]===3?'被代替':scope.row[item.key]===4?'作废':''}}
</div>
<div v-else-if="item.key==='classify'">
{{scope.row[item.key]===0?'判定依据':scope.row[item.key]===1?'检测依据':scope.row[item.key]===2?'其他':''}}
</div>
<div v-else-if="item.key==='type'">
{{scope.row[item.key]===0?'国家标准':scope.row[item.key]===1?'地方标准':scope.row[item.key]===2?'行业标准':scope.row[item.key]===3?'企业标准': ''}}
</div>
<div v-else-if="item.date">{{scope.row[item.key]?$dateformat(scope.row[item.key],'yyyy-mm-dd'):''}}
</div>
<div v-else-if="item.key==='fileUrl'">
<span v-if="scope.row['fileUrl']" class="green-color"></span>
<span v-else class="red-color"></span>
</div>
<div v-else>{{scope.row[item.key]}}</div>
</template>
</vxe-table-column>
</PTVXETable>
</Col>
</Row>
</div>
</div>
<!--组件加载-->
<StandardsManageEdit ref="editModal" @on-result-change="_page"></StandardsManageEdit>
<DownloadTemplateImport ref="importModal" @on-result-change="_page"></DownloadTemplateImport>
<SubstitutionalRelation ref="relationModal" @on-result-change="_page"></SubstitutionalRelation>
<UploadModal ref="uploadModal" @on-result-change="_page"></UploadModal>
<!-- <component ref="refModal" :is="currentComponent" @on-result-change="_page"></component>-->
</div>
</template>
<script>
import http from '../../api/http'
import { soilAptitude } from '../../api'
import global from '../../api/config'
import DownloadTemplateImport from '../../components/import/DownloadTemplateImport' // 导入
import StandardsManageEdit from './StandardsManageEdit' // 添加、编辑
import SubstitutionalRelation from './SubstitutionalRelation' // 查看替代关系
import UploadModal from './UploadModal' // 上传文件
export default {
components: {
StandardsManageEdit,
DownloadTemplateImport,
SubstitutionalRelation,
UploadModal
},
data() {
return {
currentComponent: '',
formObj: {},
btn: [
{
type: 'success',
id: '',
name: '添加',
componentName: 'StandardsManageEdit'
},
{ type: 'error', id: '', name: '删除' },
{ id: '', name: '导入', componentName: 'DownloadTemplateImport' },
{ id: '', name: '导出' }
],
// 表格
pageColumns: [
{ title: '依据编号', key: 'stdNum' },
{ title: '依据名称', key: 'name' },
{ title: '标准状态', key: 'status', width: 120 },
{ title: '标准分类', key: 'classify' },
{ title: '标准类型', key: 'type' },
{ title: '发布单位', key: 'publishUnit' },
{ title: '发布日期', key: 'publishDate', date: true, width: 140 },
{ title: '文件是否上传', key: 'fileUrl', width: 120 }
],
// 操作
iconMsg: [
{
type: 'stats-bars',
id: '',
name: '查看替代关系',
componentName: 'SubstitutionalRelation'
},
{
type: 'compose',
id: '',
name: '编辑',
componentName: 'StandardsManageEdit'
},
{
type: 'ios-upload',
id: '',
name: '上传',
componentName: 'UploadModal'
},
{ type: 'ios-download', id: '', name: '下载' },
{ type: 'android-image', id: '', name: '预览' },
{ type: 'trash-a', id: '', name: '删除' }
],
searchOpen: false,
getPage: {},
// 选中的内容
selectIds: [],
statusList: [
{ value: 0, name: '现行' },
{ value: 1, name: '即将实施' },
{ value: 2, name: '部分被代替' },
{ value: 3, name: '被代替' },
{ value: 4, name: '作废' }
],
classifyList: [
{ value: 0, name: '判定标准' },
{ value: 1, name: '检测依据' },
{ value: 2, name: '其他' }
],
typeList: [
{ value: 0, name: '国家标准' },
{ value: 1, name: '地方标准' },
{ value: 2, name: '行业标准' },
{ value: 3, name: '企业标准' }
]
}
},
computed: {
// 表格的高度
tableHeight: function() {
if (this.searchOpen) {
return this.$tableHeight('search')
} else {
return this.$tableHeight('noSearch')
}
}
},
mounted() {
this._page()
},
methods: {
// 操作按钮
_btnClick(msg, currentComponent) {
this.currentComponent = currentComponent
switch (msg) {
case '添加':
this.$nextTick(() => {
this._editModal(false)
})
break
case '删除':
this._deleteSelected()
break
case '导入':
this.$nextTick(() => {
this._import()
})
break
case '导出':
// this._export()
break
// 收起搜索
case 'search':
this.searchOpen = !this.searchOpen
break
}
},
// 表格中操作
_iconClick(res, data, currentComponent) {
this.currentComponent = currentComponent
this.$nextTick(() => {
switch (res) {
case '编辑':
this._editModal(true, data.id)
break
case '上传':
this._upload(data.id)
break
case '下载':
this._download(data)
break
case '预览':
this._viewReport(data)
break
case '查看替代关系':
this.$refs.relationModal._open(data.id)
break
case '删除':
this._deleteById(data.id)
break
}
})
},
_upload(id) {
const obj = {
importUrl: '/food/v1/food_standard_info/upload/' + id
}
this.$refs.uploadModal._open(obj)
},
_editModal: async function(edit, id) {
if (edit) {
// 编辑
// this.$store.dispatch('StandardInfo/getById', id).then(() => {
// this.$refs.refModal._open(this.$store.state.StandardInfo.model)
// })
const result = await soilAptitude.getById(id)
if (result) {
this.$refs.editModal._open(result)
}
} else {
// 添加
this.$refs.editModal._open()
}
},
// 获取数据
_page: async function() {
// this.$refs.pageTable._page('search-form', 'StandardInfo/page')
console.log('page')
Object.assign(this.formObj, this.$refs.pageTable._searchParams())
const result = await soilAptitude.page(this.formObj)
if (result) {
console.log(result)
this.$refs.pageTable._hideLoading()
this.getPage = result
}
},
// 查询
_formSearch() {
this.$refs.pageTable._pageChange(1)
},
// 删除一条记录
_deleteById(id) {
this._deleteByIds([id])
},
// 批量删除
_deleteSelected() {
if (this.selectIds.length === 0) {
this.$Message.warning('请选择一条或多条数据!')
} else {
this._deleteByIds(
this.selectIds,
'确定删除这 ' + this.selectIds.length + ' 条记录?'
)
}
},
_deleteByIds(ids, content) {
this.$Modal.confirm({
title: '提示',
loading: true,
content: content || '确定删除该记录?',
onOk: () => {
console.log('删除')
this._delOk(ids)
// this.$store
// .dispatch('StandardInfo/deleteByIdsMore', { ids: ids.join(',') })
// .then(() => {
// if (this.$store.state.StandardInfo.success) {
// this._page()
// this.$Message.success('删除成功!')
// this.$Modal.remove()
// } else {
// this.$Modal.remove()
// }
// })
}
})
},
_delOk: async function(ids) {
const result = await soilAptitude.deleteById(ids)
if (result) {
this.$message.success('删除成功')
this._page()
}
},
// 表格内容
_tableResultChange(msg, data) {
switch (msg) {
case 'page':
this._page()
// this.getPage = this.$store.state.StandardInfo.page
break
case 'selectIds':
this.selectIds = data
break
case 'iconClick':
this._iconClick(data.name, data.rowData, data.componentName)
break
case 'changeSize':
this._page()
break
}
},
// 导入
_import() {
const data = {
importUrl: '/food/v1/food_standard_info/import_standard',
downloadUrl: '/food/v1/excel/template/FoodStandardInfo',
title: '导入食品标准管理'
}
this.$refs.importModal._open(data)
},
// 导出
_export() {
const ids = this.selectIds
this._exportByIds(
ids,
ids.length === 0
? '确定导出全部记录?'
: '确定导出 ' + ids.length + ' 条记录?'
)
},
_exportByIds(ids, content) {
this.$Modal.confirm({
title: '提示',
content: content,
onOk: () => {
if (ids.length === 0) {
http.open('/food/v1/food_standard_info/export_standard')
} else {
http.open('/food/v1/food_standard_info/export_standard?ids=' + ids)
}
}
})
},
// 预览
_viewReport(data) {
const fileUrl = encodeURIComponent(
global.baseURL + '/food/v1/food_standard_info/download/' + data.id
)
window.open(
global.staticURL + '/pdf/PDFJS/pdfjs/web/viewer.html?file=' + fileUrl
)
},
// 下载
_download(data) {
this.$Modal.confirm({
title: '提示',
content: '确定要下载文件?',
onOk: () => {
if (!data.fileUrl) {
this.$Message.error('附件未上传,请上传附件!')
return
}
window.open(
global.baseURL + '/food/v1/food_standard_info/download/' + data.id,
'_blank'
)
}
})
}
}
}
</script>
<template>
<div>
<Modal v-model="showEditModal" :mask-closable="false" :width="800" class="zIndex-1200">
<p slot="header">{{modalTitle}}</p>
<div>
<Form ref="formObj" id="edit-form" :model="formObj" :rules="ruleValidate" :label-width="80" inline>
<Form-item label="标准号" prop="stdNum" class="width-48">
<Input v-model="formObj.stdNum" name="stdNum" placeholder="请输入标准号不超过255个字符"/>
</Form-item>
<Form-item label="标准名称" prop="name" class="width-48">
<Input v-model="formObj.name" name="name" placeholder="请输入标准名称"/>
</Form-item>
<Form-item label="英文名称" prop="enName" class="width-48">
<Input v-model="formObj.enName" name="enName" placeholder="请输入英文名"/>
</Form-item>
<Form-item label="标准状态" prop="status" class="width-48">
<Select v-model="formObj.status" name='status'>
<Option v-for="item in statusList" :value="item.value" :key="item.value">{{ item.name }}</Option>
</Select>
</Form-item>
<Form-item label="标准类型" prop="type" class="width-48">
<Select v-model="formObj.type" name="type">
<Option v-for="item in typeList" :value="item.value" :key="item.value">{{ item.name }}</Option>
</Select>
</Form-item>
<Form-item label="发布日期" prop="publishDate" class="width-48">
<Date-picker v-model="formObj.publishDate" type="date" name="publishDate" placeholder="发布日期"
format="yyyy-MM-dd" style="width: 100%;"></Date-picker>
</Form-item>
<Form-item label="实施日期" prop="effectDate" class="width-48">
<Date-picker v-model="formObj.effectDate" type="date" name="effectDate" placeholder="实施日期"
format="yyyy-MM-dd" style="width: 100%;"></Date-picker>
</Form-item>
<Form-item label="归口单位" prop="belongUnit" class="width-48">
<Input v-model="formObj.belongUnit" name="belongUnit" placeholder="请输入归口单位"/>
</Form-item>
<Form-item label="发布单位" prop="publishUnit" class="width-48">
<Input v-model="formObj.publishUnit" name="publishUnit" placeholder="请输入发布单位"/>
</Form-item>
<Form-item label="标准介绍" prop="remark" style="width:98%">
<Input :rows="3" :maxlength="255" v-model="formObj.remark" placeholder="请输入标准介绍,不能超过256个字..."
type="textarea" name="remark"/>
</Form-item>
</Form>
</div>
<div slot="footer">
<ModalFooter ref="footerModal" @on-result-change="_footerResult" :footer="footerList"></ModalFooter>
</div>
</Modal>
</div>
</template>
<script>
/**
* 添加编辑
*/
import ModalFooter from '../../components/base/modalFooter'
import { soilAptitude } from '../../api'
export default {
components: {
ModalFooter
},
data() {
return {
formId: '',
lengthLimitList: [
{ key: 'stdNum', title: '标准号' },
{ key: 'enName', title: '英文名称' },
{ key: 'belongUnit', title: '归口单位' },
{ key: 'publishUnit', title: '发布单位' }
],
modalTitle: '添加食品标准表',
formObj: {
belongUnit: '',
ccsNum: '',
effectDate: '',
enName: '',
classify: 0,
fileType: '',
icsClass: '',
name: '',
publishDate: '',
publishUnit: '',
status: 0,
stdNum: '',
type: 0,
remark: ''
},
ruleValidate: {
stdNum: [
{ required: true, message: '标准号不能为空', trigger: 'blur' }
],
name: [{ required: true, message: '标准名称不能为空', trigger: 'blur' }]
},
showEditModal: false,
classifyList: [
{ value: 0, name: '判定依据' },
{ value: 1, name: '检测依据' },
{ value: 2, name: '其他' }
],
typeList: [
{ value: 0, name: '国家标准' },
{ value: 1, name: '地方标准' },
{ value: 2, name: '行业标准' },
{ value: 3, name: '企业标准' }
],
statusList: [
{ value: 0, name: '现行' },
{ value: 1, name: '即将实施' },
{ value: 2, name: '部分被代替' },
{ value: 3, name: '被代替' },
{ value: 4, name: '作废' }
],
footerList: [
{ id: '', name: '取消', type: '' },
{ id: '', name: '保存', type: 'primary' }
]
}
},
methods: {
/** *modal-footer */
_footerResult(name) {
switch (name) {
case '取消':
this._cancel()
break
case '保存':
this._ok()
break
}
},
_hideLoading() {
this.$refs.footerModal._hideLoading()
},
_resultChange(msg) {
if (this.$store.state.StandardInfo.success) {
this.showEditModal = false
this.$Message.success(msg)
this.$emit('on-result-change')
}
this._hideLoading()
},
_ok() {
this.$refs.formObj.validate(valid => {
if (valid) {
if (this.formObj.publishDate && this.formObj.effectDate) {
if (this.formObj.publishDate > this.formObj.effectDate) {
this.$Message.error('发布日期应早于实施日期')
this._hideLoading()
return
}
}
const data = this.$serialize('edit-form')
console.log(data)
// if (this.$lengthLimitVal(this.lengthLimitList, data) === false) {
// this._hideLoading()
// return
// }
if (this.$string(this.formObj.id).isEmpty()) {
// 添加
// this._save(data)
// this.$store.dispatch('StandardInfo/add', data).then(() => {
// this._resultChange('添加成功!')
// })
} else {
// 编辑
// this._edit(data)
// this.$store
// .dispatch('StandardInfo/edit', { id: this.formObj.id, obj: data })
// .then(() => {
// this._resultChange('编辑成功')
// })
}
} else {
this.$Message.error('表单验证失败!')
this._hideLoading()
}
})
},
_save: async function(data) {
const result = await soilAptitude.save(data)
console.log(result)
if (result) {
this._resultChange('添加成功!')
}
},
_edit: async function(data) {
const result = await soilAptitude.edit(data)
if (result) {
this._resultChange('编辑成功!')
}
},
_cancel() {
this._hideLoading()
this.showEditModal = false
},
_open(formObj) {
this.formId = this.$randomCode()
console.log(this.formId)
this._hideLoading()
this.$refs.formObj.resetFields()
if (this.$string(formObj).isEmpty()) {
this.modalTitle = '添加'
this.formObj.id = ''
} else {
this.formObj = formObj
this.formObj.effectDate = this.formObj.effectDate
? new Date(formObj.effectDate)
: ''
this.formObj.publishDate = this.formObj.publishDate
? new Date(formObj.publishDate)
: ''
this.modalTitle = '编辑'
}
this.showEditModal = true
},
_registerAdd() {
this.formId = this.$randomCode()
this._hideLoading()
this.$refs.formObj.resetFields()
this.modalTitle = '添加'
this.formObj.id = ''
this.formObj.type = 3
this.showEditModal = true
}
}
}
</script>
<template>
<Modal v-model="showModal" :width="800" class="modal-footer-none">
<p slot="header">{{modalTitle}}</p>
<div>
<!-- 表格 -->
<form id="sub-rel-form">
<input v-model="standardId" type="hidden" name="standardId"/>
</form>
<Row>
<Col span="24">
<element-table ref="pageTable" @on-result-change="_tableResultChange"
:getPage="getPage" table-height="300" hide-checkbox>
<el-table-column
:prop="item.key"
:label="item.title"
:min-width="item.width"
:fixed="item.fixed?item.fixed:undefined"
v-for="item in pageColumns"
:key="item.id"
sortable show-overflow-tooltip>
<template slot-scope="scope">
<span>{{scope.row[item.key]}}</span>
</template>
</el-table-column>
</element-table>
</Col>
</Row>
</div>
</Modal>
</template>
<script>
export default {
components: {},
data() {
return {
showModal: false,
modalTitle: '替代关系',
pageColumns: [
{ title: '标准号', key: 'standardNum' },
{ title: '替代标准号(旧)', key: 'standardInsteadNum' },
{ title: '被替代标准号(新)', key: 'standardInsteadedNum' }
],
getPage: {},
// 选中的内容
selectIds: [],
// 多选
standardId: ''
}
},
methods: {
_open(id) {
this.showModal = true
this.standardId = id
$('input[name=standardId]').val(id)
this._page()
},
// 获取数据
_page() {
console.log('page')
// this.$refs.pageTable._page('sub-rel-form', 'StandardInstead/page')
},
// 表格内容
_tableResultChange(msg, data) {
switch (msg) {
case 'page':
this._page()
// this.getPage = this.$store.state.StandardInstead.page
break
case 'selectIds':
this.selectIds = data
break
case 'iconClick':
this._iconClick(data.name, data.rowData)
break
default:
this._page()
}
}
}
}
</script>
<!--下载模板导入-->
<template>
<div>
<Modal v-model="showModal" :mask-closable="false" class="zIndex-1100">
<p slot="header">{{modalTitle}}</p>
<Alert v-if="showError" type="error" show-icon style="margin-top: 10px">{{errorMessage}}</Alert>
<Alert v-if="showSuccess" type="success" show-icon style="margin-top: 10px">{{successMessage}}</Alert>
<div v-show="isLoad">
<Spin >
<Icon type="load-c" size=18 class="file-spin-icon-load"></Icon>
<div>正在导入,请稍后...</div>
</Spin>
</div>
<div>
<label>
<Upload
:action="importUrl"
:on-success="_handelsuccess"
:before-upload="_beupload"
:on-progress="_handelprogress"
:on-format-error="_formatError"
:data="dataObj"
:with-credentials="true"
:show-upload-list="false"
:format="format"
>
<Button :disabled="isDisabled" type="primary">上传</Button>
</Upload>
</label>
</div>
<div slot="footer" class="btn-width">
<Button @click="_cancel" :loading="isLoad" type="ghost">取消</Button>
</div>
</Modal>
</div>
</template>
<script>
/**
* 导入并下载模板
*/
import global from '../../api/config'
export default {
components: {},
data() {
return {
modalTitle: '上传文件',
showModal: false,
isLoad: false,
isDisabled: false,
showError: false,
showSuccess: false,
dataObj: {
file: ''
},
errorMessage: '',
successMessage: '',
format: ['pdf', 'PDF'],
importUrl: ''
}
},
methods: {
_open(data) {
this.isLoad = false
this.showModal = true
this.isDisabled = false
this.showError = false
this.showSuccess = false
this.importUrl = global.baseURL + data.importUrl
},
_cancel() {
this.showModal = false
},
_beupload(file) {
this.dataObj.file = file.name
},
_handelprogress(event, file, fileList) {
this.isLoad = true
this.isDisabled = true
},
_handelsuccess(response, file, fileList) {
// 上传成功
if (response.success) {
this.isLoad = false
this.$Message.success('导入成功!')
this.$emit('on-result-change')
this.showModal = false
this.isDisabled = false
this.showError = false
this.showSuccess = true
this.successMessage = response.msg
} else {
this.isLoad = false
this.showSuccess = false
this.isDisabled = false
this.errorMessage = response.msg
this.showError = true
this.$Message.error(response.msg)
}
},
_formatError(file) {
this.$Notice.error({
title: '文件格式不正确',
duration: 10,
desc: '文件 ' + file.name + ' 格式不正确,请上传格式为 pdf 格式的文件!'
})
this.isLoad = false
}
}
}
</script>
...@@ -3,10 +3,70 @@ ...@@ -3,10 +3,70 @@
*/ */
// 工作台 // 工作台
import workbench from '../pages/workbench/workbench' import workbench from '../pages/workbench/workbench'
import StandardManage from '../pages/meter-aptitude/StandardManage'
import Blank from '~/pages/blank'
export default [ export default [
{ {
path: 'workbench', path: 'workbench',
component: workbench, component: workbench,
meta: { title: '首页' } meta: { title: '首页' }
},
{
path: 'entrust',
component: Blank,
children: [
{
path: 'entrust_register',
component: workbench,
meta: { title: '试验委托登记' }
},
{
path: 'review',
component: workbench,
meta: { title: '试验委托评审' }
}
]
},
{
path: 'sample',
component: Blank,
children: [
{
path: 'receive',
component: workbench,
meta: { title: '收样室收样' }
},
{
path: 'prepare',
component: workbench,
meta: { title: '开土制备' }
},
{
path: 'take',
component: workbench,
meta: { title: '试验室领样' }
},
{
path: 'backups',
component: workbench,
meta: { title: '备样管理' }
}
]
},
{
path: 'aptitude',
component: Blank,
children: [
{
path: 'test_basis',
component: StandardManage,
meta: { title: '检测依据管理' }
},
{
path: 'experiment',
component: workbench,
meta: { title: '试验项目' }
}
]
} }
] ]
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