Commit 3d550846 by zhangmengqi

Merge branch 'dev'

parents fc4c977d a9cdee5d
...@@ -9,6 +9,8 @@ export default { ...@@ -9,6 +9,8 @@ export default {
http.get('/res/v1/user_group/get_by_uid/' + data.uid).then(res => res), http.get('/res/v1/user_group/get_by_uid/' + data.uid).then(res => res),
userPage: data => userPage: data =>
http.post('/res/v1/user_group/page_rel_user', data).then(res => res), http.post('/res/v1/user_group/page_rel_user', data).then(res => res),
pageGroupUser: data =>
http.post('/soil/v1/experiment/page_group_user', data).then(res => res),
add: data => http.post('/res/v1/user_group/', data).then(res => res), add: data => http.post('/res/v1/user_group/', data).then(res => res),
edit: data => edit: data =>
http.put('/res/v1/user_group/' + data.id, data.obj).then(res => res), http.put('/res/v1/user_group/' + data.id, data.obj).then(res => res),
......
...@@ -91,5 +91,10 @@ export default { ...@@ -91,5 +91,10 @@ export default {
.delete('soil/v1/original_template_config/?ids=' + data) .delete('soil/v1/original_template_config/?ids=' + data)
.then(res => res), .then(res => res),
expReportTemplateConfig: data => expReportTemplateConfig: data =>
http.get('soil/v1/exp_report_template_config/' + data).then(res => res) http.get('soil/v1/exp_report_template_config/' + data).then(res => res),
// 汇总表分页列表
pageSummaryTemplate: data =>
http
.post('soil/v1/exp_report_template/page_summary_template', data)
.then(res => res)
} }
...@@ -45,6 +45,8 @@ export default { ...@@ -45,6 +45,8 @@ export default {
getVOById: data => http.get('soil/v1/entrust/vo/' + data).then(res => res), getVOById: data => http.get('soil/v1/entrust/vo/' + data).then(res => res),
deleteById: data => deleteById: data =>
http.delete('soil/v1/entrust/?ids=' + data).then(res => res), http.delete('soil/v1/entrust/?ids=' + data).then(res => res),
standardAnnexDelete: data =>
http.delete('soil/v1/standard_annex/?ids=' + data).then(res => res),
experimentDeleteById: data => experimentDeleteById: data =>
http.delete('soil/v1/experiment/?ids=' + data).then(res => res), http.delete('soil/v1/experiment/?ids=' + data).then(res => res),
// 保存 // 保存
...@@ -131,8 +133,24 @@ export default { ...@@ -131,8 +133,24 @@ export default {
http.post('soil/v1/sample/page_take', data).then(res => res), http.post('soil/v1/sample/page_take', data).then(res => res),
testType: data => testType: data =>
http.post('res/v1/dict/dict_query?type=' + data).then(res => res), http.post('res/v1/dict/dict_query?type=' + data).then(res => res),
projectQueryList: data =>
http.post('res/v1/dict/dict_query', data).then(res => res),
pageSurplusHandleCheckHis: data => pageSurplusHandleCheckHis: data =>
http http
.post('soil/v1/prepare/page_surplus_handle_check_his', data) .post('soil/v1/prepare/page_surplus_handle_check_his', data)
.then(res => res),
aloneSampleAdd: data =>
http.post('soil/v1/alone_sample/', data).then(res => res),
aloneSampleGetById: data =>
http.get('soil/v1/alone_sample/' + data).then(res => res),
aloneSampleEdit: data =>
http.put('soil/v1/alone_sample/' + data.id, data).then(res => res),
aloneSampleDelete: data =>
http.delete('soil/v1/alone_sample/?ids=' + data).then(res => res),
getUserByGroupId: data =>
http.post('base/v1/user/page', data).then(res => res),
submitToInstock: data =>
http
.post('soil/v1/alone_sample/submit_to_out_storage', data)
.then(res => res) .then(res => res)
} }
...@@ -21,7 +21,7 @@ export default { ...@@ -21,7 +21,7 @@ export default {
http.delete('soil/v1/receive_location/?ids=' + data).then(res => res), http.delete('soil/v1/receive_location/?ids=' + data).then(res => res),
removeSampleFromLocation: data => removeSampleFromLocation: data =>
http http
.post('soil/v1/sample/remove_sample_from_location/?ids=' + data) .post('soil/v1/sample/remove_sample_from_location/', data)
.then(res => res), .then(res => res),
locationEdit: data => locationEdit: data =>
http.put('soil/v1/receive_location/' + data.id, data.obj).then(res => res), http.put('soil/v1/receive_location/' + data.id, data.obj).then(res => res),
...@@ -120,6 +120,17 @@ export default { ...@@ -120,6 +120,17 @@ export default {
data.remark data.remark
) )
.then(res => res), .then(res => res),
// 样品检测退回
testInputBack: data =>
http
.post(
'soil/v1/experiment/exp_data_input_back?ids=' +
data.ids +
'&reason=' +
data.remark
)
.then(res => res),
getDictList: data => getDictList: data =>
http.post('res/v1/dict/dict_query?type=' + data).then(res => res), http.post('res/v1/dict/dict_query?type=' + data).then(res => res),
editBackup: data => editBackup: data =>
...@@ -176,7 +187,7 @@ export default { ...@@ -176,7 +187,7 @@ export default {
prepareCheckBack: data => prepareCheckBack: data =>
http.post('soil/v1/sample/prepare_check_back', data).then(res => res), http.post('soil/v1/sample/prepare_check_back', data).then(res => res),
sampleBringOut: data => sampleBringOut: data =>
http.post('soil/v1/sample/sample_bring_out?ids=' + data).then(res => res), http.post('soil/v1/sample/sample_bring_out', data).then(res => res),
boxPage: data => http.post('soil/v1/box/page', data).then(res => res), boxPage: data => http.post('soil/v1/box/page', data).then(res => res),
addBox: data => http.post('soil/v1/box/', data).then(res => res), addBox: data => http.post('soil/v1/box/', data).then(res => res),
deleteBox: data => http.delete('soil/v1/box/?ids=' + data).then(res => res), deleteBox: data => http.delete('soil/v1/box/?ids=' + data).then(res => res),
...@@ -208,5 +219,40 @@ export default { ...@@ -208,5 +219,40 @@ export default {
'&entrustId=' + '&entrustId=' +
data.entrustId data.entrustId
) )
.then(res => res) .then(res => res),
generateReport: data =>
http
.post(
'soil/v1/exp_report/generate_report?entrustId=' +
data.entrustId +
'&templateId=' +
data.templateId +
'&expReportIds=' +
data.expReportIds
)
.then(res => res),
aloneSamplePage: data =>
http.post('soil/v1/alone_sample/page', data).then(res => res),
aloneWarehouseLocation: data =>
http.post('soil/v1/alone_warehouse_location/page', data).then(res => res),
aloneWarehouseLocationAdd: data =>
http.post('soil/v1/alone_warehouse_location/', data).then(res => res),
aloneWarehouseLocationGetById: data =>
http.get('soil/v1/alone_warehouse_location/' + data).then(res => res),
aloneWarehouseLocationEdit: data =>
http
.put('soil/v1/alone_warehouse_location/' + data.id, data.obj)
.then(res => res),
aloneWarehouseLocationDelete: data =>
http
.delete('soil/v1/alone_warehouse_location/?ids=' + data)
.then(res => res),
pageWaitStorage: data =>
http.post('soil/v1/alone_sample/page_wait_storage', data).then(res => res),
inStorageSubmit: data =>
http.post('soil/v1/alone_sample/in_storage_submit', data).then(res => res),
pageWaitDelivery: data =>
http.post('soil/v1/alone_sample/page_wait_delivery', data).then(res => res),
outStorageSubmit: data =>
http.post('soil/v1/alone_sample/out_storage_submit', data).then(res => res)
} }
...@@ -75,6 +75,11 @@ export default { ...@@ -75,6 +75,11 @@ export default {
.then(res => res), .then(res => res),
recordPage: data => recordPage: data =>
http.post('soil/v1/original_record/page', data).then(res => res), http.post('soil/v1/original_record/page', data).then(res => res),
pageSoilAppendix: data =>
http.post('soil/v1/appendix/page', data).then(res => res),
appendixDelete: data =>
http.delete('soil/v1/appendix/?ids=' + data).then(res => res),
pageTest: data => pageTest: data =>
http.post('soil/v1/experiment/page_test', data).then(res => res), http.post('soil/v1/experiment/page_test', data).then(res => res),
pageCheck: data => pageCheck: data =>
...@@ -151,6 +156,8 @@ export default { ...@@ -151,6 +156,8 @@ export default {
http.delete('soil/v1/original_record/?ids=' + data).then(res => res), http.delete('soil/v1/original_record/?ids=' + data).then(res => res),
expReportPage: data => expReportPage: data =>
http.post('soil/v1/exp_report/page', data).then(res => res), http.post('soil/v1/exp_report/page', data).then(res => res),
pageExperimentReport: data =>
http.post('soil/v1/exp_report/page', data).then(res => res),
deleteReport: data => deleteReport: data =>
http.delete('soil/v1/exp_report/?ids=' + data).then(res => res) http.delete('soil/v1/exp_report/?ids=' + data).then(res => res)
} }
...@@ -10,6 +10,10 @@ export default { ...@@ -10,6 +10,10 @@ export default {
// 根据机构查人员 // 根据机构查人员
userSelect: data => userSelect: data =>
http.post('/base/v1/user/page_org/' + data.orgId, data).then(res => res), http.post('/base/v1/user/page_org/' + data.orgId, data).then(res => res),
pageUserVO: data =>
http
.post('/soil/v1/experiment/page_user_vo/' + data.orgId, data)
.then(res => res),
pageFlowExcludeMemberShip: data => pageFlowExcludeMemberShip: data =>
http http
.post('/base/v1/user/page_flow_exclude_member_ship/' + data.groupId, data) .post('/base/v1/user/page_flow_exclude_member_ship/' + data.groupId, data)
......
...@@ -33,16 +33,16 @@ export default { ...@@ -33,16 +33,16 @@ export default {
data() { data() {
return { return {
isTree: true, isTree: true,
leftSpan: 9, leftSpan: 8,
rightSpan: 15 rightSpan: 16
} }
}, },
methods: { methods: {
_treeHide() { _treeHide() {
this.isTree = !this.isTree this.isTree = !this.isTree
if (this.isTree) { if (this.isTree) {
this.leftSpan = 9 this.leftSpan = 8
this.rightSpan = 15 this.rightSpan = 16
} else { } else {
this.leftSpan = 0 this.leftSpan = 0
this.rightSpan = 24 this.rightSpan = 24
......
<template>
<div>
<Modal v-model="showEditModal" :mask-closable="false" width="600">
<p slot="header">{{modalTitle}}</p>
<div>
<Upload
:action="action"
:show-upload-list="false"
:before-upload="_beupload"
multiple
>
<Button type="dashed" icon="ios-cloud-upload-outline">上传文件(小于50MB)</Button>
</Upload>
<div>
<Card :dis-hover="true" style="width: 100%;height: 400px;overflow: auto;">
<p slot="title">已上传文件列表</p>
<div v-for="(item,index) in fileList" :key="index" class="file-upload-list">
<div>
<div class="file-upload-list-cover">
<Icon @click.native.stop="_handleRemove(item)" type="md-trash" style="color: white;font-size: 20px;"></Icon>
</div>
</div>
{{item.fileName }}
</div>
</Card>
</div>
</div>
<div slot="footer" class="btn-width">
<Button @click="showEditModal = false">取消</Button>
<Button @click="_mutipleUpload" :loading="isLoading" type="primary">{{btnName}}</Button>
</div>
</Modal>
</div>
</template>
<script>
/**
* 上传文件,在文件夹下
*/
import axios from 'axios'
import global from '../../../api/config'
import loading from '../../../api/loading'
export default {
data() {
return {
id: '',
ID: '',
action: '',
modalTitle: '',
showEditModal: false,
name: '',
isLoading: false,
btnName: '上传',
fileList: []
}
},
methods: {
_open(obj) {
this.fileList = []
this.showEditModal = true
this.ID = obj
this.modalTitle = '上传文件'
},
_beupload(file) {
// 单个文件上传超过50M时,取消上传
const isLt50M = file.size / 1024 / 1024 < 50
const fileName = file.name.split('.')[0]
if (!isLt50M) {
this.$Message.warning({
content: '文件 ' + fileName + ' 大小超多50M,请重新上传!',
duration: 3
})
this.isLoading = false
} else {
// 动态循环给文件命名
const temObj = {
file: file,
fileName: fileName
}
this.fileList.push(temObj)
}
return false
},
_mutipleUpload() {
if (this.fileList.length > 0 && this.btnName === '上传') {
this.isLoading = true
this.btnName = '上传中...'
// 创建formula对象
const formData = new FormData()
formData.append('entrustId', this.ID)
// 多个文件
for (let i = 0; i < this.fileList.length; i++) {
formData.append('file' + i, this.fileList[i].file)
}
const config = {
headers: {
'Content-Type': 'multipart/form-data'
}
}
const instanceFile = axios.create()
instanceFile.defaults.withCredentials = true
// 发起请求
instanceFile
.post(
global.baseURL + '/soil/v1/entrust_annex/upload_bath/' + this.ID,
formData,
{
headers: config
}
)
.then(res => {
if (res.data.code === '1') {
this.$Message.success('上传成功!')
this.showEditModal = false
this.$emit('on-result-change')
} else if (res.data.code === '0') {
loading.toast.show(res.data.code, res.data.msg)
this.$Message.error('操作失败')
}
this._resetLoading()
})
.catch(err => {
console.log(err)
this._resetLoading()
})
} else {
this.$Message.warning('请至少上传一个文件')
this._resetLoading()
}
},
_resetLoading() {
this.isLoading = false
this.btnName = '上传'
},
// 删除对应的上传的文件
_handleRemove(data) {
const index = this.fileList.findIndex(item => item === data)
this.fileList.splice(index, 1)
}
}
}
</script>
<style>
.file-upload-list {
display: inline-block;
width: 100px;
height: 100px;
text-align: center;
line-height: 100px;
border: 1px solid transparent;
border-radius: 4px;
overflow: hidden;
background: #fff;
position: relative;
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
margin-right: 4px;
}
.file-upload-list:hover .file-upload-list-cover {
display: block;
}
.file-upload-list-cover {
display: none;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background: rgba(0, 0, 0, 0.6);
}
</style>
...@@ -22,7 +22,7 @@ export default { ...@@ -22,7 +22,7 @@ export default {
data() { data() {
return { return {
showModal: false, showModal: false,
modalTitle: '附件' modalTitle: '附件管理'
} }
}, },
methods: { methods: {
......
...@@ -104,8 +104,8 @@ export default { ...@@ -104,8 +104,8 @@ export default {
msg: 'FoodContractAttachment', msg: 'FoodContractAttachment',
pageUrl: 'soil/v1/entrust_annex/page', pageUrl: 'soil/v1/entrust_annex/page',
deleteUrl: '/soil/v1/entrust_annex/?ids=', deleteUrl: '/soil/v1/entrust_annex/?ids=',
uploadFileUrl: '/soil/v1/standard_annex/upload/', uploadFileUrl: '/soil/v1/entrust_annex/upload/',
downloadFileUrl: '/soil/v1/standard_annex/download/', downloadFileUrl: '/soil/v1/entrust_annex/download/',
downloadBatch: '/food/v1/contract_attachment/download_batch', downloadBatch: '/food/v1/contract_attachment/download_batch',
uri: 'FoodContractAttachment/getByContractId', uri: 'FoodContractAttachment/getByContractId',
viewUri: '/soil/v1/standard_annex/preview/' viewUri: '/soil/v1/standard_annex/preview/'
...@@ -116,8 +116,8 @@ export default { ...@@ -116,8 +116,8 @@ export default {
this.sampleId = id this.sampleId = id
this.urlData = { this.urlData = {
msg: 'FoodSampleAttachment', msg: 'FoodSampleAttachment',
pageUrl: 'FoodSampleAttachment/page', pageUrl: 'soil/v1/alone_sample_annex/page',
deleteUrl: 'FoodSampleAttachment/deleteByIds', deleteUrl: 'soil/v1/alone_sample_annex/?ids=',
uploadFileUrl: '/food/v1/sample_attachment/upload/', uploadFileUrl: '/food/v1/sample_attachment/upload/',
downloadFileUrl: '/food/v1/sample_attachment/download/', downloadFileUrl: '/food/v1/sample_attachment/download/',
downloadBatch: '/food/v1/sample_attachment/download_batch', downloadBatch: '/food/v1/sample_attachment/download_batch',
......
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
<Button>上传</Button> <Button>上传</Button>
</Upload> </Upload>
</label> </label>
<Button @click="_batchUpload">批量上传</Button>
<!--一系列操作--> <!--一系列操作-->
<!--非表格--> <!--非表格-->
<!-- <Button v-if="viewStyle === 2 || viewStyle === 3" v-for="item in menusListA" :key="item.name" @click="_radioChange(item.value)"--> <!-- <Button v-if="viewStyle === 2 || viewStyle === 3" v-for="item in menusListA" :key="item.name" @click="_radioChange(item.value)"-->
...@@ -115,6 +116,7 @@ ...@@ -115,6 +116,7 @@
<!--/--> <!--/-->
</Col> </Col>
</Row> </Row>
<BatchUpload ref="batchUpload" @on-result-change="_page"></BatchUpload>
<!--上传loading--> <!--上传loading-->
<div v-show="isLoad"> <div v-show="isLoad">
<Spin fix> <Spin fix>
...@@ -134,11 +136,12 @@ ...@@ -134,11 +136,12 @@
// import VueGallerySlideshow from 'vue-gallery-slideshow' // import VueGallerySlideshow from 'vue-gallery-slideshow'
import global from '../../../api/config' import global from '../../../api/config'
import { meterEntrust } from '../../../api' import { meterEntrust } from '../../../api'
import BatchUpload from './BatchUpload'
/** /**
* 公共组件modal 弹框(支持上传,下载,预览,删除附件等操作) * 公共组件modal 弹框(支持上传,下载,预览,删除附件等操作)
*/ */
export default { export default {
// components: { VueGallerySlideshow }, components: { BatchUpload },
props: { props: {
fileName: null fileName: null
}, },
...@@ -202,6 +205,9 @@ export default { ...@@ -202,6 +205,9 @@ export default {
} }
}, },
methods: { methods: {
_batchUpload() {
this.$refs.batchUpload._open(this.id)
},
_setUploadData(data, idsObj, idKey) { _setUploadData(data, idsObj, idKey) {
this.selectIds = [] this.selectIds = []
this.imgViewIndex = null this.imgViewIndex = null
...@@ -411,6 +417,7 @@ export default { ...@@ -411,6 +417,7 @@ export default {
} else { } else {
this.isLoad = true this.isLoad = true
this.$Message.error(response.msg) this.$Message.error(response.msg)
this.isLoad = false
} }
} }
} }
......
...@@ -228,7 +228,12 @@ export default { ...@@ -228,7 +228,12 @@ export default {
this._page() this._page()
}) })
}, },
_page: async function() { _page: async function(fileName) {
if (fileName) {
this.formObj.fileName = fileName
} else {
this.formObj.fileName = undefined
}
Object.assign(this.formObj, this.$refs.pageTable._searchParams()) Object.assign(this.formObj, this.$refs.pageTable._searchParams())
const result = await meterEntrust.attachmentPage( const result = await meterEntrust.attachmentPage(
this.urlData.pageUrl, this.urlData.pageUrl,
...@@ -423,6 +428,7 @@ export default { ...@@ -423,6 +428,7 @@ export default {
} else { } else {
this.isLoad = true this.isLoad = true
this.$Message.error(response.msg) this.$Message.error(response.msg)
this.isLoad = false
} }
} }
} }
......
...@@ -222,7 +222,7 @@ export default { ...@@ -222,7 +222,7 @@ export default {
}, },
// 搜索 // 搜索
_search() { _search() {
this.$refs.fileModal._page() this.$refs.fileModal._page(this.fileName)
} }
} }
} }
......
...@@ -8,13 +8,13 @@ ...@@ -8,13 +8,13 @@
<Col span="10"> <Col span="10">
<Card class="user_card_tree"> <Card class="user_card_tree">
<p slot="title">{{titleChange}}</p> <p slot="title">{{titleChange}}</p>
<p v-if="isChange === undefined" slot="extra" @click="_changeLimit"> <!-- <p v-if="isChange === undefined" slot="extra" @click="_changeLimit">-->
<Tooltip content="切换" placement="top-end"> <!-- <Tooltip content="切换" placement="top-end">-->
<Badge dot> <!-- <Badge dot>-->
<Icon type="ios-switch" size="23"></Icon> <!-- <Icon type="ios-switch" size="23"></Icon>-->
</Badge> <!-- </Badge>-->
</Tooltip> <!-- </Tooltip>-->
</p> <!-- </p>-->
<div> <div>
<orginZtree v-show="changeBool" ref="orginZtree" @on-result-change="_orgData"></orginZtree> <orginZtree v-show="changeBool" ref="orginZtree" @on-result-change="_orgData"></orginZtree>
<userMarshalling <userMarshalling
......
...@@ -68,6 +68,7 @@ export default { ...@@ -68,6 +68,7 @@ export default {
pageParams: { page: 1, rows: 20 }, pageParams: { page: 1, rows: 20 },
pageColumns: [ pageColumns: [
{ title: '姓名', key: 'realname' }, { title: '姓名', key: 'realname' },
{ title: '待办试验项目量', key: 'total' },
{ title: '性别', key: 'sex', sex: true, width: 100 } { title: '性别', key: 'sex', sex: true, width: 100 }
], ],
getPage: {}, getPage: {},
...@@ -109,7 +110,9 @@ export default { ...@@ -109,7 +110,9 @@ export default {
this._pageChange(1) this._pageChange(1)
}, },
_page: async function() { _page: async function() {
const result = await sysUser.userSelect(this._searchParams()) const data = this._searchParams()
console.log('---xxx---', data)
const result = await sysUser.userSelect(data)
if (result) { if (result) {
this.getPage = result this.getPage = result
} }
...@@ -123,7 +126,9 @@ export default { ...@@ -123,7 +126,9 @@ export default {
return this.$extend(data, this.pageParams) return this.$extend(data, this.pageParams)
}, },
_pageMa: async function() { _pageMa: async function() {
const result = await lmsMarshalManage.userPage(this._searchParamsMa()) const result = await lmsMarshalManage.pageGroupUser(
this._searchParamsMa()
)
if (result) { if (result) {
this.getPage = result this.getPage = result
} }
......
...@@ -310,7 +310,7 @@ export default { ...@@ -310,7 +310,7 @@ export default {
}, },
_deleteOk: async function(ids) { _deleteOk: async function(ids) {
const result = await soilEntrust.deleteById(ids) const result = await soilEntrust.standardAnnexDelete(ids)
if (result) { if (result) {
this._resultChange('删除成功! ') this._resultChange('删除成功! ')
} }
......
...@@ -353,6 +353,7 @@ export default { ...@@ -353,6 +353,7 @@ export default {
_editModal(edit, id) { _editModal(edit, id) {
this.currentComponent = 'EntrustRegisterEdit' this.currentComponent = 'EntrustRegisterEdit'
if (edit) { if (edit) {
this.$refs.pageTable._showLoading()
// 编辑 // 编辑
this._getById(id) this._getById(id)
} else { } else {
...@@ -373,6 +374,9 @@ export default { ...@@ -373,6 +374,9 @@ export default {
const result = await soilEntrust.getVOById(id) const result = await soilEntrust.getVOById(id)
if (result) { if (result) {
this.$refs.refModal._openEdit(result) this.$refs.refModal._openEdit(result)
this.$refs.pageTable._hideLoading()
} else {
this.$refs.pageTable._hideLoading()
} }
}, },
_delete: async function(ids) { _delete: async function(ids) {
......
...@@ -14,7 +14,10 @@ ...@@ -14,7 +14,10 @@
placeholder="请选择委托日期" name="entrustDate"></Date-picker> placeholder="请选择委托日期" name="entrustDate"></Date-picker>
</Form-item> </Form-item>
<Form-item label="项目名称" prop="projectName" class="width-48"> <Form-item label="项目名称" prop="projectName" class="width-48">
<Input v-model="formObj.projectName" name="projectName" placeholder="请输入项目名称"/> <!-- <Input v-model="formObj.projectName" name="projectName" placeholder="请输入项目名称"/>-->
<AutoComplete ref="autoInput" v-model="formObj.projectName" :down-data="projectData"
@on-result-change="_projectChange" name="projectName" placeholder="请输入或选择项目名称"
></AutoComplete>
</Form-item> </Form-item>
<Form-item label="钻孔名称" prop="boreholeName" class="width-48"> <Form-item label="钻孔名称" prop="boreholeName" class="width-48">
<Input v-model="formObj.boreholeName" name="boreholeName" placeholder="请输入名称"/> <Input v-model="formObj.boreholeName" name="boreholeName" placeholder="请输入名称"/>
...@@ -149,6 +152,7 @@ export default { ...@@ -149,6 +152,7 @@ export default {
}, },
showBtn: true, showBtn: true,
customerData: [], customerData: [],
projectData: [],
edit: false, edit: false,
cityData: [], cityData: [],
selectData: [], selectData: [],
...@@ -340,15 +344,41 @@ export default { ...@@ -340,15 +344,41 @@ export default {
} else if (this.customerData.indexOf(data) !== -1) { } else if (this.customerData.indexOf(data) !== -1) {
this._getQueryList(data) this._getQueryList(data)
} else { } else {
this._cusNameQuery(data)
} }
}, },
_customerMatch(data) { _customerMatch(data) {
this._getQueryList(data) this._getQueryList(data)
}, },
_cusNameQuery(query) { _cusNameQuery(query) {
console.log('query', query)
this.formObj.client = query this.formObj.client = query
this._getQueryList(query)
},
_projectChange(msg, data) {
if (this.$string(this.id).isEmpty()) {
// 添加的时候选择单位
switch (msg) {
case 'select':
this._projectMatch(data)
break
case 'query':
this._projectQuery(data)
break
}
} else if (this.projectData.indexOf(data) !== -1) {
this._getProjectQueryList(data)
} else {
this._projectQuery(data)
}
},
_projectMatch(data) {
this._getQueryList(data)
},
_projectQuery(query) {
this.formObj.projectName = query
this._getProjectQueryList(query)
}, },
_btnClick(msg) { _btnClick(msg) {
this.$nextTick(function() { this.$nextTick(function() {
switch (msg) { switch (msg) {
...@@ -690,11 +720,10 @@ export default { ...@@ -690,11 +720,10 @@ export default {
this._getList() this._getList()
this._getTestType() this._getTestType()
this._getPackList() this._getPackList()
this._getProjectList()
this._getSoil() this._getSoil()
this._getUser()
this.showBtn = true this.showBtn = true
this.showModal = true this.showModal = true
this._getUser()
this._hideLoading() this._hideLoading()
if (this.$string(formObj).isEmpty()) { if (this.$string(formObj).isEmpty()) {
this.$refs.formObj.resetFields() this.$refs.formObj.resetFields()
...@@ -704,6 +733,7 @@ export default { ...@@ -704,6 +733,7 @@ export default {
this.formObj.entrustDate = new Date() this.formObj.entrustDate = new Date()
this.modalTitle = '委托单新增' this.modalTitle = '委托单新增'
} }
this._getUser()
}, },
_openEdit(formObj) { _openEdit(formObj) {
this.edit = true this.edit = true
...@@ -712,6 +742,7 @@ export default { ...@@ -712,6 +742,7 @@ export default {
this._getTestType() this._getTestType()
this._getPackList() this._getPackList()
this._getSoil() this._getSoil()
this._getProjectList()
this.showBtn = false this.showBtn = false
this.showModal = true this.showModal = true
this.$refs.formObj.resetFields() this.$refs.formObj.resetFields()
...@@ -780,12 +811,41 @@ export default { ...@@ -780,12 +811,41 @@ export default {
this.customerData = list this.customerData = list
} }
}, },
_getProjectList: async function() {
const result = await soilEntrust.testType('项目名称')
const projectlist = []
if (result) {
for (let i = 0; i < result.length; i++) {
projectlist.push(result[i].name)
}
this.projectData = projectlist
}
},
_getQueryList: async function(data) { _getQueryList: async function(data) {
const result = await meterEntrust.pageQueryList(data) const result = await meterEntrust.pageQueryList(data)
const queryList = []
if (result) { if (result) {
for (let i = 0; i < result.length; i++) {
queryList.push(result[i].cname)
}
this.customerData = queryList
console.log('委托商', result) console.log('委托商', result)
} }
}, },
_getProjectQueryList: async function(data) {
const queryData = {}
queryData.type = '项目名称'
queryData.name = data
const result = await soilEntrust.projectQueryList(queryData)
const queryList = []
if (result) {
for (let i = 0; i < result.length; i++) {
queryList.push(result[i].name)
}
this.projectData = queryList
console.log('项目名称', result)
}
},
_save: async function(data) { _save: async function(data) {
const result = await soilEntrust.save(data) const result = await soilEntrust.save(data)
if (result) { if (result) {
......
<template>
<div>
<div class="layout-content-padding">
<div class="layout-content-main">
<el-tabs v-model="activeName" @tab-click="_changeTabs">
<el-tab-pane label="待完成" name="wait"></el-tab-pane>
<el-tab-pane label="历史记录" name="his"></el-tab-pane>
</el-tabs>
<keep-alive>
<!-- eslint-disable-next-line vue/require-component-is -->
<component ref="refModal" :is="currentComponent"></component>
</keep-alive>
</div>
</div>
</div>
</template>
<script>
import MeterSendEntrust from './EntrustRegister'
import MeterSendEntrustHis from './EntrustRegisterHis'
export default {
name: 'MeterSendEntrustIndex',
components: {
// eslint-disable-next-line vue/no-unused-components
MeterSendEntrust,
// eslint-disable-next-line vue/no-unused-components
MeterSendEntrustHis
},
data() {
return {
activeName: 'wait',
currentComponent: ''
}
},
mounted() {
this.activeName = 'wait'
this.currentComponent = 'MeterSendEntrust'
this.$nextTick(() => {
this.$refs.refModal._page()
})
},
methods: {
_changeTabs(tab, event) {
if (tab.name === 'wait') {
this.currentComponent = 'MeterSendEntrust'
this.$nextTick(() => {
this.$refs.refModal._page()
})
} else {
this.currentComponent = 'MeterSendEntrustHis'
this.$nextTick(() => {
this.$refs.refModal._page()
})
}
}
}
}
</script>
<style scoped>
</style>
<template>
<div>
<!--内容-->
<div class="layout-content-padding">
<div class="layout-content-main">
<Row>
<!--查询-->
<Col span="24" style="margin-top: 10px">
<Form id="formId" v-show="searchOpen" :label-width="90" inline onsubmit="return false">
<label class="label-sign"></label>
<Form-item class="search-item" label="委托编号:">
<Input v-model="formObj.entrustCode" @on-enter="_formSearch" name="entrustCode" placeholder="请输入委托编号" clearable/>
</Form-item>
<Form-item class="search-item" label="项目名称:">
<Input v-model="formObj.projectName" @on-enter="_formSearch" name="projectName" 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" :show-search-btn="true" @on-result-change="_btnClick"
class="contHide"></btn-list>
</Col>
<!--表格-->
<Col span="24">
<PTVXETable ref="pageTable" :table-height="tableHeight" :form-id="formId" :loading="true"
:get-page="getPage" :icon-msg="iconMsg" @on-result-change="_tableResultChange">
<vxe-table-column
v-for="item in pageColumns"
:key="item.key"
:field="item.key"
:title="item.title"
:min-width="item.width?item.width:200"
:fixed="item.fixed?item.fixed:undefined" sortable>
<template slot-scope="scope">
<span v-if="item.date">{{scope.row[item.key]?$dateformat(scope.row[item.key],'yyyy-mm-dd'):''}}</span>
<span v-else-if="item.status">{{scope.row[item.key].display}}</span>
<div v-else-if="item.detail">
<a @click.stop="_detailModal(scope.row)">{{ scope.row[item.key] }}</a>
</div>
<span v-else>{{scope.row[item.key]}}</span>
</template>
</vxe-table-column>
</PTVXETable>
</Col>
</Row>
</div>
</div>
<keep-alive>
<!-- eslint-disable-next-line vue/require-component-is -->
<component ref="refModal" :is="currentComponent" @on-result-change="_componentResult"></component>
</keep-alive>
</div>
</template>
<script>
import { soilEntrust, soilSample } from '../../api'
import Operation from '../../components/operation/Operation'
import importModal from '../../components/import/DownloadTemplateImport'
import EntrustRegisterEdit from './EntrustRegisterEdit'
import RegisterDetail from './RegisterDetail'
import ViewDetail from './ViewDetail'
import Instock from './Instock'
export default {
components: {
// eslint-disable-next-line vue/no-unused-components
Operation,
// eslint-disable-next-line vue/no-unused-components
EntrustRegisterEdit,
// eslint-disable-next-line vue/no-unused-components
importModal,
// eslint-disable-next-line vue/no-unused-components
RegisterDetail,
// eslint-disable-next-line vue/no-unused-components
ViewDetail,
// eslint-disable-next-line vue/no-unused-components
Instock
},
data() {
return {
currentComponent: '',
formId: 'meterSubcontractorFormId',
searchOpen: false,
btn: [
{
type: 'success',
id: '',
name: '入库'
}
],
iconMsg: [
{
type: 'md-create',
id: '',
name: '编辑'
},
{
type: 'ios-list',
id: '',
name: '查看'
},
{
type: 'md-cloud',
id: '',
name: '附件'
},
{
type: 'md-remove-circle',
id: '',
name: '删除'
}
],
formObj: {
client: undefined,
contractCode: undefined,
entrustCode: undefined
},
selectIds: [],
getPage: {},
pageColumns: [
{ title: '项目名称', key: 'projectName', width: 120 },
{ title: '项目负责人', key: 'projectLeader', width: 150, detail: true },
{ title: '钻孔名称', key: 'boreholeName', width: 120 },
{ title: '箱数', key: 'casesNum', width: 120 },
{ title: '登记日期', key: 'registTime', width: 120, date: true }
]
}
},
computed: {
tableHeight: function() {
if (this.searchOpen) {
return this.$tableHeight('search')
} else {
return this.$tableHeight('noSearch')
}
}
},
mounted() {},
methods: {
_btnClick(msg, componentName) {
this.currentComponent = componentName
this.$nextTick(function() {
switch (msg) {
case '入库':
this._instock()
break
case '试验委托单导入':
this._import()
break
case '登记':
this._editModal(false)
break
case '提交至评审':
this._submitToReview()
break
case '提交':
this._submitToSkipReview()
break
case 'search':
this.searchOpen = !this.searchOpen
break
}
})
},
_instock() {
if (this.selectIds.length === 0) {
this.$Message.warning('请至少选择一条数据')
} else {
this.currentComponent = 'Instock'
this.$nextTick(() => {
this.$refs.refModal._open(this.selectIds)
})
}
},
_detailModal(data) {
console.log(data)
this._getUserInfo(data)
this.currentComponent = 'RegisterDetail'
},
_getUserInfo: async function(data) {
const result = await soilEntrust.getUserByGroupId({
realname: data.projectLeader,
id: data.projectLeaderId
})
if (result) {
this.$refs.refModal._open(result)
}
},
_import() {
this.currentComponent = 'importModal'
const data = {
importUrl: '/soil/v1/entrust/import_entrust/',
downloadUrl: '/soil/v1/excel/template/SoilEntrustImport',
title: '试验委托单导入'
}
this.$nextTick(() => {
this.$refs.refModal._open(data, '试验委托单导入')
})
},
_componentResult(msg, data) {
switch (this.currentComponent) {
case 'MeterSubcontractorEdit':
this._formSearch()
break
case 'DrugSampleManage':
this._formSearch()
break
case 'FileManage':
this._fileResult(msg, data)
break
default:
this._page()
}
},
_iconClick(res, data, componentName) {
this.currentComponent = componentName
this.$nextTick(function() {
switch (res) {
case '编辑':
this._editModal(true, data.id)
break
case '查看':
this._viewModal(true, data.id)
break
case '试样列表':
this._sampleManage(data.id)
break
case '试验项目列表':
this._itemManage(data.id)
break
case '附件':
this._upload(data.id)
break
case '删除':
this._deleteByIds([data.id])
break
case '操作日志':
this._record(data.id)
break
}
})
},
_sampleManage(data) {
// 管理样品
this.currentComponent = 'SoilSampleManage'
this.$nextTick(() => {
this.$refs.refModal._open(data)
})
},
_itemManage(data) {
// 管理样品
this.currentComponent = 'SoilSampleItemManage'
this.$nextTick(() => {
this.$refs.refModal._openByEntrustId(data)
})
},
_submitToReview() {
this._submitByContractIds('委托评审')
},
_submitToSkipReview() {
const ids = this.selectIds
if (ids.length === 0) {
this.$Message.warning('请至少选择一条数据!')
} else {
this.$Modal.confirm({
title: '提示',
content: '确定要提交 ' + ids.length + ' 条记录?',
onOk: () => {
this.$refs.pageTable._showLoading()
this._subToSkipRe(ids)
}
})
}
},
_submitByContractIds(cont) {
const ids = this.selectIds
if (ids.length === 0) {
this.$Message.warning('请至少选择一条数据!')
} else {
this.$Modal.confirm({
title: '提示',
content: '确定要把这 ' + ids.length + ' 条记录提交到' + cont + '?',
onOk: () => {
this.$refs.pageTable._showLoading()
this._subToRe(ids)
}
})
}
},
_subToRe: async function(ids) {
const result = await soilEntrust.submit(ids)
if (result) {
this._resultChange('提交成功')
}
},
_subToSkipRe: async function(ids) {
const result = await soilEntrust.submitSkipReview(ids)
if (result) {
this._resultChange('提交成功')
}
},
_resultChange(msg) {
this.$Message.success(msg)
this._page()
this.$refs.pageTable._hideLoading()
},
_record(id) {
this.currentComponent = 'Operation'
this.$nextTick(() => {
this.$refs.refModal._open(id)
})
},
_tableResultChange(msg, data) {
switch (msg) {
case 'selectIds':
this.selectIds = data
break
case 'iconClick':
this._iconClick(data.name, data.rowData, data.componentName)
break
case 'page':
this._page()
break
case 'changeSize':
this._page()
break
}
},
_page: async function() {
Object.assign(this.formObj, this.$refs.pageTable._searchParams())
const result = await soilSample.pageWaitStorage(
this.$serializeForm(this.formObj)
)
if (result) {
this.$refs.pageTable._hideLoading()
this.getPage = result
}
},
_formSearch() {
this.$refs.pageTable._pageChange(1)
},
// 删除
_deleteByIds(ids, content) {
this.$Modal.confirm({
title: '提示',
content: content || '确定删除该记录?',
onOk: () => {
this._delete(ids)
}
})
},
// 编辑&添加
_editModal(edit, id) {
this.currentComponent = 'EntrustRegisterEdit'
if (edit) {
this.$refs.pageTable._showLoading()
// 编辑
this._getById(id)
} else {
// 添加
this.$nextTick(() => {
this.$refs.refModal._open()
})
}
},
_viewModal(edit, id) {
this.currentComponent = 'ViewDetail'
if (edit) {
this.$refs.pageTable._showLoading()
// 编辑
this._getDetailById(id)
} else {
// 添加
this.$nextTick(() => {
this.$refs.refModal._open()
})
}
},
_getDetailById: async function(id) {
const result = await soilEntrust.aloneSampleGetById(id)
if (result) {
this.$refs.refModal._open(result)
this.$refs.pageTable._hideLoading()
} else {
this.$refs.pageTable._hideLoading()
}
},
_upload(id) {
// 上传文件
this.currentComponent = 'FileManage'
this.$nextTick(() => {
this.$refs.refModal._open(id, 'entrustId')
})
},
_getById: async function(id) {
const result = await soilEntrust.aloneSampleGetById(id)
if (result) {
this.$refs.refModal._openEdit(result)
this.$refs.pageTable._hideLoading()
} else {
this.$refs.pageTable._hideLoading()
}
},
_delete: async function(ids) {
const result = await soilEntrust.aloneSampleDelete(ids)
if (result) {
this._formSearch()
this.$Message.success('删除成功!')
}
}
}
}
</script>
<template>
<div>
<Modal v-model="showModal" :mask-closable="false" width="900">
<p slot="header">{{modalTitle}}</p>
<div>
<Form id="MeterSendTestEdit" ref="formObj" :model="formObj" :label-width="90" inline>
<!-- <Form-item label="委托商" prop="client" class="width-48">-->
<!-- <AutoComplete ref="autoInput" v-model="formObj.client" :down-data="customerData"-->
<!-- @on-result-change="_cusNameChange" name="client" placeholder="请输入或选择委托单位"-->
<!-- ></AutoComplete>-->
<!-- </Form-item>-->
<Form-item label="接收人" prop="receiver" class="width-48">
<Input v-model="formObj.receiver" name="receiver" placeholder="请输入接收人"/>
</Form-item>
<Form-item label="接收日期:" prop="receiveTime" class="width-48">
<Date-picker v-model="formObj.receiveTime" @on-change="_ctimeChange" type="date" split-panels style="width:100%;"
placeholder="请选择接收日期" name="receiveTime"></Date-picker>
</Form-item>
<Form-item label="项目名称" prop="projectName" class="width-48">
<!-- <Input v-model="formObj.projectName" name="projectName" placeholder="请输入项目名称"/>-->
<AutoComplete ref="autoInput" v-model="formObj.projectName" :down-data="projectData"
@on-result-change="_projectChange" name="projectName" placeholder="请输入或选择项目名称"
></AutoComplete>
</Form-item>
<Form-item @click.native="_selectProjectPerson" label="项目负责人" prop="projectLeader" class="width-48">
<Input v-model="formObj.projectLeader" name="projectLeader" placeholder="请输入项目负责人"/>
</Form-item>
<Form-item label="钻孔名称" prop="boreholeName" class="width-48">
<Input v-model="formObj.boreholeName" name="boreholeName" placeholder="请输入名称"/>
</Form-item>
<Form-item label="箱数" prop="casesNum" class="width-48">
<Input v-model="formObj.casesNum" name="casesNum" placeholder="请输入箱数"/>
</Form-item>
<Form-item @click.native="_selectRegisterPerson" label="登记人" prop="registrant" class="width-48">
<Input v-model="formObj.registrant" name="registrant" placeholder="请输入登记人"/>
</Form-item>
<Form-item label="登记日期:" prop="registTime" class="width-48">
<Date-picker v-model="formObj.registTime" @on-change="_tabulateChange" name="registTime" type="date" split-panels style="width:100%;"
placeholder="请选择登记日期"></Date-picker>
</Form-item>
<!-- <Form-item label="检验类别" prop="testType" class="width-48">-->
<!-- <Input v-model="formObj.testType" name="testType" placeholder="请输入名称"/>-->
<!-- </Form-item>-->
</Form>
</div>
<div slot="footer">
<modal-footer ref="footerModal" :footer="footerList" @on-result-change="_footerResult"></modal-footer>
</div>
</Modal>
<importModal ref="importModal" @on-result-change="_inputBack" aptitude-item></importModal>
<SampleItemSelect ref="sampleItemSelectModal" @on-result-change="_itemImportBack" is-change />
<assignPerson ref="userModal" @on-result-change="_userResult"></assignPerson>
<SampleItemRemove ref="sampleItemRemove" @on-result-change = '_removeItemBack'></SampleItemRemove>
<SampleItemEdit ref="sampleItemEdit" @on-result-change = '_removeItemBack'></SampleItemEdit>
</div>
</template>
<script>
/**
* 添加编辑分包商
*/
import { meterEntrust, meterSample, soilEntrust } from '../../api'
import importModal from '../../components/import/DownloadTemplateImport'
import AutoComplete from '../../components/base/AutoCompletes'
import SampleItemSelect from '../meter-aptitude/standard-manage/SampleItemSelect'
import assignPerson from '../../components/user-info-single/assignPerson'
import Global from '../../api/config'
import SampleItemRemove from './SampleItemRemove'
import SampleItemEdit from './SampleItemEdit'
export default {
components: {
AutoComplete,
importModal,
SampleItemSelect,
assignPerson,
SampleItemRemove,
SampleItemEdit
},
data() {
return {
formId: 'meterSendTestEditFormId',
getPage: {
records: []
},
showBtn: true,
customerData: [],
projectData: [],
edit: false,
cityData: [],
selectData: [],
sampleItemList: [],
searchOpen: true,
testedCityData: [],
judgeType: [{ value: 1, name: '是' }, { value: 0, name: '否' }],
iconMsg: [
{
type: 'md-trash',
id: '',
name: '删除'
}
],
pageColumns: [
{ title: '试样编号', key: 'sampleCode', width: 140 },
{ title: '现场编号', key: 'siteNo', width: 140 },
{ title: '试验项目', key: 'experiments', width: 140 },
{ title: '试样深度', key: 'sampleDepth', width: 140 },
{ title: '样品包装类型', key: 'samplePack', width: 150 },
{ title: '土质描述', key: 'sampleDescribe' }
],
btn: [
{
type: 'success',
id: '',
name: '添加'
},
{
type: 'success',
id: '',
name: '导入试验项目'
}
],
btnEdit: [
{
type: 'success',
id: '',
name: '添加'
},
{
type: 'success',
id: '',
name: '导入样品'
},
{
type: 'success',
id: '',
name: '导入试验项目'
}
],
options: [
{
name: '检定'
},
{
name: '校准'
},
{
name: '外观检查'
}
],
typeoptions: [],
personType: '',
packList: [],
soilList: [],
currentIndex: -1,
id: '',
modalTitle: '',
subcontractorId: '',
formObj: {},
selectIds: [],
indexList: [],
itemList: [],
clearingWayList: ['款到后测试', '先测试后付款', '其他情况()'],
clearingWayListTemp: ['款到后测试', '先测试后付款', '其他情况()'],
showModal: false,
footerList: [
{ id: '', name: '取消', type: '' },
{ id: '', name: '保存', type: 'primary' }
],
aptitudeData: []
}
},
methods: {
typeChange(data) {
this.$forceUpdate()
this.formObj.testType = data
},
_removeItem(itemInfo) {
console.log('试验项目', itemInfo)
this.sampleItemList = itemInfo.experimentList
if (itemInfo.sampleCode !== '') {
this.$refs.sampleItemEdit._open(this.sampleItemList)
} else {
this.$refs.sampleItemRemove._open(this.sampleItemList)
}
},
_removeItemBack(data) {
this.$forceUpdate()
if (data) {
this.getPage.records[this.currentIndex].experimentList = data
const itemNames = []
for (let j = 0; j < data.length; j++) {
itemNames.push(data[j].name)
}
this.getPage.records[this.currentIndex].experiments = itemNames.join(
','
)
}
this.$set(
this.getPage.records,
this.currentIndex,
this.getPage.records[this.currentIndex]
)
},
_itemImportBack(data) {
this.$forceUpdate()
for (let i = 0; i < data.length; i++) {
data[i].id = undefined
}
const info = data
for (let i = 0; i < this.indexList.length; i++) {
const index = this.indexList[i]
if (
this.getPage.records[index].experimentList !== undefined &&
this.getPage.records[index].experimentList !== []
) {
const name = []
this.itemList = this.getPage.records[index].experimentList
name.push(this.getPage.records[index].experiments)
for (let i = 0; i < info.length; i++) {
this.itemList.push(info[i])
name.push(info[i].name)
}
this.getPage.records[index].experiments = name.join('、')
this.getPage.records[index].experimentList = this.itemList
this.$set(this.getPage.records, index, this.getPage.records[index])
} else {
const name = []
this.itemList = []
for (let i = 0; i < info.length; i++) {
this.itemList.push(info[i])
name.push(info[i].name)
}
this.getPage.records[index].experiments = name.join('、')
this.getPage.records[index].experimentList = this.itemList
this.$set(this.getPage.records, index, this.getPage.records[index])
}
}
},
_selectProjectPerson() {
this.personType = 'project'
this.$refs.userModal._openOrg('选择人员', 'itemTree')
},
_selectRegisterPerson() {
this.personType = 'resistrant'
this.$refs.userModal._openOrg('选择人员', 'itemTree')
},
_userResult(data, msg) {
console.log(msg)
this.$forceUpdate()
if (this.personType === 'resistrant') {
this.formObj.registrant = data.realname
this.formObj.registrantId = data.id
} else {
this.formObj.projectLeader = data.realname
this.formObj.projectLeaderId = data.id
}
},
_packChange(msg, data) {
switch (msg) {
case 'select':
this.getPage.records[this.currentIndex].samplePack = data
break
case 'query':
this.getPage.records[this.currentIndex].samplePack = data
break
}
},
_soilChange(msg, data) {
switch (msg) {
case 'select':
this.getPage.records[this.currentIndex].sampleDescribe = data
break
case 'query':
this.getPage.records[this.currentIndex].sampleDescribe = data
break
}
},
_cusNameChange(msg, data) {
if (this.$string(this.id).isEmpty()) {
// 添加的时候选择单位
switch (msg) {
case 'select':
this._customerMatch(data)
break
case 'query':
this._cusNameQuery(data)
break
}
} else if (this.customerData.indexOf(data) !== -1) {
this._getQueryList(data)
} else {
this._cusNameQuery(data)
}
},
_customerMatch(data) {
this._getQueryList(data)
},
_cusNameQuery(query) {
console.log('query', query)
this.formObj.client = query
this._getQueryList(query)
},
_projectChange(msg, data) {
if (this.$string(this.id).isEmpty()) {
// 添加的时候选择单位
switch (msg) {
case 'select':
this._projectMatch(data)
break
case 'query':
this._projectQuery(data)
break
}
} else if (this.projectData.indexOf(data) !== -1) {
this._getProjectQueryList(data)
} else {
this._projectQuery(data)
}
},
_projectMatch(data) {
this._getQueryList(data)
},
_projectQuery(query) {
this.formObj.projectName = query
this._getProjectQueryList(query)
},
_btnClick(msg) {
this.$nextTick(function() {
switch (msg) {
case '添加':
this._add()
break
case '导入试验项目':
this._importItem()
break
case '导入样品':
this._importSample()
break
case 'search':
this.searchOpen = !this.searchOpen
break
}
})
},
_importItem() {
if (this.selectIds.length === 0) {
this.$Message.warning('请选择至少一条数据!')
} else {
this.$refs.sampleItemSelectModal._open()
this.allSelect(this.selectData)
}
},
_getByEntrustId: async function(id) {
const result = await soilEntrust.getVOById(id)
if (result) {
this.$forceUpdate()
const sampleList = Object.assign(
this.getPage.records,
result.sampleList
)
this.$set(this.getPage.records, sampleList)
}
},
_inputBack(data) {
if (data) {
this._getByEntrustId(this.id)
}
},
_ctimeChange(data) {
this.formObj.receiveTime = data
},
_tabulateChange(data) {
this.formObj.registTime = data
},
_odateChange(data) {
this.formObj.odate = data
},
_judgeBasisChange(msg, data) {
switch (msg) {
case 'select':
this.formObj.stdId = data.id
this.formObj.code = data.stdNum
this.formObj.name = data.name
this.$refs.formObj.validateField('code')
break
case 'query':
this.formObj.stdId = ''
this.formObj.code = data.stdNum
this.formObj.name = ''
this._getJudgeBasisList(data.stdNum)
break
case 'focus':
this._getJudgeBasisList()
break
case 'blur':
if (this.formObj.stdId === '') {
this.formObj.code = ''
this._getJudgeBasisList()
}
this.$refs.formObj.validateField('code')
}
},
_selectjudgeBasis(index) {
this.index = index
this.$refs.EditModal._open()
},
_selectverification(index) {
this.index = index
this.$refs.VerificationModal._open()
},
_selectcontractCode() {
this.$refs.ContractModal._open()
},
_backData(data) {
this.$forceUpdate()
console.log(typeof this.index)
this.getPage.records[this.index].name = data.name
this.getPage.records[this.index].aptitudeId = data.id
this.getPage.records[this.index].verification = data.code + data.basis
this.getPage.records[this.index].price = data.price
this.getPage.records[this.index].totalPrice =
data.price * this.getPage.records[this.index].quantity
},
_backContract(data) {
this.formObj.client = data.client
this.formObj.operation.person = data.person
this.formObj.operation.tel = data.tel
this.formObj.operation.fax = data.fax
if (data.province) {
this.testedCityData = [data.province, data.city, data.county]
this.formObj.province = data.province
this.formObj.city = data.city
this.formObj.county = data.county
}
this.formObj.street = data.street
this.formObj.entrustDate = new Date(data.entrustDate)
this.formObj.odate = new Date(data.odate)
this.formObj.contractCode = data.salesCode
this.formObj.operation.fee = data.discountPrice
if (data.sampleQuoteList) {
this.getPage.records = data.sampleQuoteList
} else {
this.getPage.records = []
}
},
_backVerification(data) {
this.$forceUpdate()
this.getPage.records[this.index].verification = data.verification
},
_add() {
const data = {
sampleCode: '',
sampleDepth: '',
samplePack: '',
sampleDescribe: '',
siteNo: '',
experiments: ''
}
this.getPage.records.push(data)
},
_getPackList: async function() {
const result = await soilEntrust.testType('样品包装类型')
if (result) {
const pack = []
for (let i = 0; i < result.length; i++) {
pack.push(result[i].name)
}
this.packList = pack
}
},
_getSoil: async function() {
const result = await soilEntrust.testType('土质描述')
if (result) {
const soilRemark = []
for (let i = 0; i < result.length; i++) {
soilRemark.push(result[i].name)
}
this.soilList = soilRemark
}
},
_importSample() {
const data = {
importUrl: '/soil/v1/entrust/edit_import_entrust/?id=' + this.id,
downloadUrl: '/meter/v1/excel/template/MeterSampleImport',
title: '样品导入'
}
this.$refs.importModal._open(data, '样品导入')
},
_tableResultChange(msg, data, selData) {
switch (msg) {
case 'selectIds':
this.selectIds = data
this.selectData = selData
console.log(this.selectIds)
break
case 'iconClick':
this._iconClick(data.name, data.rowData, data.rowIndex)
break
}
},
allSelect(data) {
console.log(data)
this.indexList = []
for (let i = 0; i < data.length; i++) {
this.indexList.push(data[i].index)
}
console.log('索引', this.indexList)
},
// 省 市 区
_cascaderResult(name, data, msg) {
switch (name) {
case 'cus':
this._casChange(data, msg)
break
case 'tested':
this._testedChange(data, msg)
break
}
},
_emptyProvince() {
this.cityData = []
this.testedCityData = []
// this.formObj.tested.testedProvince = ''
// this.formObj.tested.testedCity = ''
// this.formObj.tested.testedCounty = ''
// this.formObj.testedTemp.testedProvince = ''
// this.formObj.testedTemp.testedCity = ''
// this.formObj.testedTemp.testedCounty = ''
},
_testedChange(data, msg) {
// 省、市、区
if (msg === 'clear') {
// this.formObj.tested.testedProvince = ''
// this.formObj.tested.testedCity = ''
// this.formObj.tested.testedCounty = ''
this.formObj.testedTemp.testedProvince = ''
this.formObj.testedTemp.testedCity = ''
this.formObj.testedTemp.testedCounty = ''
this.formObj.province = ''
this.formObj.city = ''
this.formObj.county = ''
this.testedCityData = []
} else {
// this.formObj.tested.testedProvince = data.value[0]
// this.formObj.tested.testedCity = data.value[1]
// this.formObj.tested.testedCounty = data.value[2]
this.formObj.province = data.value[0]
this.formObj.city = data.value[1]
this.formObj.county = data.value[2]
this.testedCityData = [data.value[0], data.value[1], data.value[2]]
}
},
_iconClick(res, data, index) {
switch (res) {
case '编辑':
// this._editModal(true, data.id)
break
case '删除':
this.getPage.records.splice(index, 1)
break
case '操作日志':
// this._record(data.id)
break
}
},
_deleteSample(data) {
if (data.id === undefined) {
return false
} else {
this._delete(data.id)
}
},
_delete: async function(id) {
const result = await meterSample.deleteById(id)
if (result) {
console.log(result)
}
},
_selectAptitude(data) {
console.log(data)
},
_handleRow(data) {
this.currentRow = data.row
this.currentIndex = data.rowIndex
},
channelInputLimit(e) {
const key = e.key
// 不允许输入'e'和'.'
if (key === 'e' || key === '.') {
e.returnValue = false
return false
}
return true
},
/** *modal-footer */
_footerResult(name) {
switch (name) {
case '取消':
this._cancel()
break
case '保存':
this._ok()
break
}
},
_hideLoading() {
this.$refs.footerModal._hideLoading()
},
_resultChange(msg) {
this.showModal = false
this.$Message.success(msg)
this.$emit('on-result-change')
this._hideLoading()
},
_ok() {
this.$refs.formObj.validate(valid => {
if (valid) {
const data = this.$serialize('MeterSendTestEdit')
console.log(this.getPage.records)
if (this.$string(this.id).isEmpty()) {
// 添加
if (this.formObj.projectLeaderId) {
data.projectLeaderId = this.formObj.projectLeaderId
}
if (this.formObj.registrantId) {
data.registrantId = this.formObj.registrantId
}
console.log('saveData', data)
this._save(data)
} else {
data.id = this.id
if (this.formObj.projectLeaderId) {
data.projectLeaderId = this.formObj.projectLeaderId
}
if (this.formObj.registrantId) {
data.registrantId = this.formObj.registrantId
}
this._edit(data)
}
} else {
this.$Message.error('表单验证失败!')
}
})
},
_wayResult(msg, data) {
switch (msg) {
case 'select':
this.formObj.clearingWay = data
break
case 'query':
this.formObj.clearingWay = data
this._wayQuery(data)
break
}
},
_wayQuery(query) {
if (query === '') {
this.clearingWayList = this.clearingWayListTemp
} else {
this.clearingWayList = this.clearingWayListTemp.filter(
item => item.indexOf(query) > -1
)
}
},
_cancel() {
this.showModal = false
},
_open(formObj) {
this.$refs.autoInput._clear()
this.edit = false
this._getProjectList()
this.showBtn = true
this.showModal = true
this._getUser()
this._hideLoading()
if (this.$string(formObj).isEmpty()) {
this.$refs.formObj.resetFields()
this.getPage.records = []
this.formObj.client = ''
this.id = ''
this.formObj.entrustDate = new Date()
this.modalTitle = '委托单新增'
}
},
_openEdit(formObj) {
this.edit = true
console.log(formObj)
this._getProjectList()
this.showBtn = false
this.showModal = true
this.$refs.formObj.resetFields()
this._getUser()
this.getPage.records = []
this._hideLoading()
this.id = ''
this.modalTitle = '委托单编辑'
this.id = formObj.id
this.formObj = formObj
this._showTime(formObj)
// for (let i = 0; i < formObj.sampleList.length; i++) {
// if (formObj.sampleList[i].lastTime !== undefined) {
// this.getPage.records[i].lastTime = new Date(
// formObj.sampleList[i].lastTime
// )
// }
// }
},
_getUser() {
const user = Global.getUserInfo()
this.formObj.tabulater = user.realname
},
_getTestType: async function() {
const result = await soilEntrust.testType('检验类别')
console.log(result)
if (result) {
console.log('检验类别', result)
this.typeoptions = result
}
},
_showTime(formObj) {
if (this.formObj.receiveTime === undefined) {
this.formObj.receiveTime = ''
} else {
this.formObj.receiveTime = new Date(formObj.receiveTime)
}
if (this.formObj.registTime === undefined) {
this.formObj.registTime = ''
} else {
this.formObj.registTime = new Date(formObj.registTime)
}
},
_showAddress(formObj) {
this.testedCityData = []
if (
formObj.province !== undefined &&
formObj.city !== undefined &&
formObj.county !== undefined
) {
this.testedCityData.push(formObj.province)
this.testedCityData.push(formObj.city)
this.testedCityData.push(formObj.county)
}
},
_getList: async function() {
const result = await meterEntrust.pageList()
const list = []
if (result) {
for (let i = 0; i < result.length; i++) {
list.push(result[i].cname)
}
this.customerData = list
}
},
_getProjectList: async function() {
const result = await soilEntrust.testType('项目名称')
const projectlist = []
if (result) {
for (let i = 0; i < result.length; i++) {
projectlist.push(result[i].name)
}
this.projectData = projectlist
}
},
_getQueryList: async function(data) {
const result = await meterEntrust.pageQueryList(data)
const queryList = []
if (result) {
for (let i = 0; i < result.length; i++) {
queryList.push(result[i].cname)
}
this.customerData = queryList
console.log('委托商', result)
}
},
_getProjectQueryList: async function(data) {
const queryData = {}
queryData.type = '项目名称'
queryData.name = data
const result = await soilEntrust.projectQueryList(queryData)
const queryList = []
if (result) {
for (let i = 0; i < result.length; i++) {
queryList.push(result[i].name)
}
this.projectData = queryList
console.log('项目名称', result)
}
},
_save: async function(data) {
const result = await soilEntrust.aloneSampleAdd(data)
if (result) {
this._resultChange('添加成功!')
} else {
setTimeout(() => {
this._hideLoading()
}, 500)
}
},
_edit: async function(data) {
this._hideLoading()
const result = await soilEntrust.aloneSampleEdit(data)
if (result) {
this._resultChange('编辑成功!')
}
},
_sampleEdit: async function(data) {
this._hideLoading()
const result = await soilEntrust.editDTO(data)
if (result) {
this.$Message.success('编辑成功')
}
},
_visibleChange(data) {
this.$forceUpdate()
console.log('清空')
this.formObj.client = ''
this.formObj = {}
}
}
}
</script>
<style>
.vxe-table--tooltip-wrapper {
z-index: 2147483647 !important;
}
</style>
<template>
<div>
<!--内容-->
<div class="layout-content-padding">
<div class="layout-content-main">
<Row>
<!--查询-->
<Col span="24" style="margin-top: 10px">
<Form id="formId" v-show="searchOpen" :label-width="90" inline onsubmit="return false">
<label class="label-sign"></label>
<Form-item class="search-item" label="委托商:">
<Input v-model="formObj.client" @on-enter="_formSearch" name="client" placeholder="请输入委托单位" clearable/>
</Form-item>
<Form-item class="search-item" label="委托编号:">
<Input v-model="formObj.entrustCode" @on-enter="_formSearch" name="entrustCode" 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" :show-search-btn="true" @on-result-change="_btnClick"
class="contHide"></btn-list>
</Col>
<!--表格-->
<Col span="24">
<PTVXETable ref="pageTable" :table-height="tableHeight" :form-id="formId" :loading="true"
:get-page="getPage" :icon-msg="iconMsg" @on-result-change="_tableResultChange">
<vxe-table-column
v-for="item in pageColumns"
:key="item.key"
:field="item.key"
:title="item.title"
:min-width="item.width?item.width:200"
:fixed="item.fixed?item.fixed:undefined" sortable>
<template slot-scope="scope">
<span v-if="item.date">{{scope.row[item.key]?$dateformat(scope.row[item.key],'yyyy-mm-dd'):''}}</span>
<span v-else-if="item.status">{{scope.row[item.key].display}}</span>
<span v-else>{{scope.row[item.key]}}</span>
</template>
</vxe-table-column>
</PTVXETable>
</Col>
</Row>
</div>
</div>
<keep-alive>
<!-- eslint-disable-next-line vue/require-component-is -->
<component ref="refModal" :is="currentComponent"></component>
</keep-alive>
</div>
</template>
<script>
import { soilAptitude, soilEntrust } from '../../api'
import MeterEntrustRecord from '../../components/operation/Operation'
export default {
// eslint-disable-next-line vue/no-unused-components
components: { MeterEntrustRecord },
data() {
return {
currentComponent: '',
formId: 'meterSubcontractorFormId',
searchOpen: true,
btn: [
// {
// type: 'success',
// id: '',
// name: '添加'
// }
],
iconMsg: [
{
type: 'ios-list',
id: '',
name: '试样列表'
},
{
type: 'ios-clock',
id: '',
name: '操作日志'
}
],
formObj: {
client: undefined,
entrustCode: undefined
},
selectIds: [],
getPage: {},
pageColumns: [
{ title: '委托商', key: 'client', width: 200 },
{ title: '委托编号', key: 'entrustCode', width: 120 },
{ title: '委托日期', key: 'entrustDate', width: 120, date: true },
{ title: '钻孔位置', key: 'boreholeLocation', width: 120 },
{ title: '水深(米)', key: 'waterDepth', width: 120 },
{ title: '钻孔名称', key: 'boreholeName', width: 120 },
{ title: '进度', key: 'progress', width: 120, status: true },
{ title: '平均容重', key: 'projectNo', width: 120 },
{ title: '报告编号', key: 'reportCode', width: 120 },
{ title: '制表日期', key: 'tabulateDate', width: 120, date: true },
{ title: '制表人', key: 'tabulater', width: 120 },
{ title: '批准日期', key: 'approveDate', width: 120, date: true },
{ title: '批准人', key: 'approver', width: 120 },
{ title: '检验类别', key: 'testType', width: 120 }
]
}
},
computed: {
tableHeight: function() {
if (this.searchOpen) {
return this.$tableHeight('search')
} else {
return this.$tableHeight('noSearch')
}
}
},
mounted() {
this._page()
},
methods: {
_btnClick(msg, componentName) {
this.currentComponent = componentName
this.$nextTick(function() {
switch (msg) {
case '添加':
this._editModal(false)
break
case 'search':
this.searchOpen = !this.searchOpen
break
}
})
},
_iconClick(res, data, componentName) {
this.currentComponent = componentName
this.$nextTick(function() {
switch (res) {
case '编辑':
this._editModal(true, data.id)
break
case '资质项目':
this._itemModal(data.id)
break
case '附件':
this._upload(data.id)
break
case '删除':
this._deleteByIds([data.id])
break
case '操作日志':
this._record(data.id)
break
case '查看样品':
this._sampleManage(data.id)
break
case '试样列表':
this._sampleManage(data.id)
break
}
})
},
_sampleManage(data) {
// 管理样品
this.currentComponent = 'SoilSampleManage'
this.$nextTick(() => {
this.$refs.refModal._open(data)
})
// this.$refs.sampleManageModal._open(data)
},
_record(id) {
this.currentComponent = 'MeterEntrustRecord'
this.$nextTick(() => {
this.$refs.refModal._open(id)
})
// this.$refs.entrustRecordModal._open(id)
},
_tableResultChange(msg, data) {
switch (msg) {
case 'iconClick':
this._iconClick(data.name, data.rowData, data.componentName)
break
case 'changeSize':
this._page()
break
}
},
_page: async function() {
Object.assign(this.formObj, this.$refs.pageTable._searchParams())
console.log('this.formObj', this.formObj)
const result = await soilEntrust.pageRegHis(this.formObj)
if (result) {
this.$refs.pageTable._hideLoading()
this.getPage = result
}
},
_formSearch() {
this.$refs.pageTable._pageChange(1)
},
// 删除
_deleteByIds(ids, content) {
this.$Modal.confirm({
title: '提示',
content: content || '确定删除该记录?',
onOk: () => {
this._delete(ids)
}
})
},
// 编辑&添加
_editModal(edit, id) {
if (edit) {
// 编辑
// this.$refs.editSubcontractorModal._open(id)
this._getById(id)
} else {
// 添加
this.$refs.editSubcontractorModal._open()
}
},
// 追加项目
_itemModal(data) {
this.$refs.refModal._open(data)
},
_upload(id) {
// 上传文件
this.$refs.refModal._open(id, 'subcontractorId')
},
_getById: async function(id) {
const result = await soilAptitude.getById(id)
if (result) {
this.$refs.editSubcontractorModal._open(result)
}
},
_delete: async function(ids) {
const result = await soilAptitude.deleteById(ids)
if (result) {
this._formSearch()
this.$Message.success('删除成功!')
}
}
}
}
</script>
<template>
<div>
<Modal v-model="showEditModal" v-drag :mask-closable="false" :width="500" class="zIndex-1200">
<p slot="header">{{modalTitle}}</p>
<div>
<Form id="edit-form" ref="formObj" :model="formObj" :rules="ruleValidate" :label-width="100" inline>
<Form-item label="库房号" prop="storehouse" style="width: 100%">
<Input v-model="formObj.storehouse" name="storehouse" placeholder="请输入库房号"/>
</Form-item>
<Form-item label="架位号" prop="shelfCode" style="width: 100%">
<Input v-model="formObj.shelfCode" name="shelfCode" placeholder="请输入架位号"/>
</Form-item>
<Form-item label="入库人" prop="inStocker" style="width: 100%">
<Input v-model="formObj.inStocker" @click.native="_selectStaff" name="inStocker" readonly/>
</Form-item>
<Form-item prop="inStockerId" style="width: 100%;display: none">
<Input v-model="formObj.inStockerId" @click.native="_selectStaff" name="inStockerId" readonly/>
</Form-item>
<Form-item label="入库时间:" prop="instockTime">
<Date-picker v-model="formObj.instockTime" @on-change="_ctimeChange" type="date" split-panels style="width:100%;"
placeholder="请选择入库时间" name="instockTime"></Date-picker>
</Form-item>
<Form-item label="留存有效期:" prop="keepLimitTime">
<Date-picker v-model="formObj.keepLimitTime" @on-change="_keepLimitTimeChange" type="date" split-panels style="width:100%;"
placeholder="请选择入库时间" name="keepLimitTime"></Date-picker>
</Form-item>
</Form>
</div>
<div slot="footer">
<ModalFooter ref="footerModal" @on-result-change="_footerResult" :footer="footerList"></ModalFooter>
</div>
</Modal>
<UserInfo ref="userModal" @on-result-change="_userData" is-change></UserInfo>
</div>
</template>
<script>
/**
* 添加编辑
*/
import ModalFooter from '../../components/base/modalFooter'
import { soilSample } from '../../api'
import Global from '../../api/config'
import UserInfo from '../../components/user-info-single/assignPerson'
export default {
components: {
ModalFooter,
UserInfo
},
data() {
return {
formId: '',
id: '',
lengthLimitList: [
{ key: 'stdNum', title: '标准号' },
{ key: 'enName', title: '英文名称' },
{ key: 'belongUnit', title: '归口单位' },
{ key: 'publishUnit', title: '发布单位' }
],
modalTitle: '入库',
formObj: {
name: '',
warehouse: '',
type: '',
remark: '',
inStocker: '',
inStockerId: ''
},
options: [
{
name: '国家标准'
},
{
name: '地方标准'
},
{
name: '行业标准'
},
{
name: '企业标准'
}
],
typeData: [
{
name: '待检',
value: 0
},
{
name: '备样',
value: 1
},
{
name: '备用',
value: 2
}
],
ruleValidate: {
warehouse: [
{ 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: {
_getUser() {
const user = Global.getUserInfo()
this.formObj.inStocker = user.realname
this.formObj.inStockerId = user.id
console.log(user)
},
_selectStaff() {
this.$refs.userModal._open()
},
_userData(data, msg, contractTempData) {
this.formObj.inStocker = data.realname
this.formObj.inStockerId = data.id
console.log(data, msg)
},
_ctimeChange(data) {
this.formObj.instockTime = data
},
_keepLimitTimeChange(data) {
this.formObj.keepLimitTime = data
},
/** *modal-footer */
_footerResult(name) {
switch (name) {
case '取消':
this._cancel()
break
case '确定':
this._ok()
break
}
},
_hideLoading() {
this.$refs.footerModal._hideLoading()
},
_resultChange(msg) {
this.showEditModal = false
this.$Message.success(msg)
this.$emit('on-result-change')
this._hideLoading()
},
_ok() {
this.$refs.formObj.validate(valid => {
if (valid) {
const data = this.$serialize('edit-form')
console.log(data)
data.ids = this.id
this._instockSubmit(data)
} else {
this.$Message.error('表单验证失败!')
this._hideLoading()
}
})
},
_instockSubmit: async function(data) {
const result = await soilSample.inStorageSubmit(data)
if (result) {
this._resultChange('成功入库')
}
},
_save: async function(data) {
const result = await soilSample.aloneWarehouseLocationAdd(data)
if (result) {
this._resultChange('添加成功!')
}
},
_edit: async function(data) {
const result = await soilSample.aloneWarehouseLocationEdit(data)
if (result) {
this._resultChange('编辑成功!')
}
},
_cancel() {
this._hideLoading()
this.showEditModal = false
},
_open(ids) {
this.formId = this.$randomCode()
this._hideLoading()
this.$refs.formObj.resetFields()
this.id = ids.join(',')
this._getUser()
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>
<div>
<Modal v-model="showDetailModal" v-drag :width="700" title="人员信息" class="modal-footer-none">
<div :style="{height}" style="overflow-y: auto">
<table class="tableClass">
<tbody>
<tr>
<th colspan="6" class="tableClass_back">人员信息</th>
</tr>
<tr>
<th>姓名</th>
<td>{{obj.realname}}</td>
<th>联系方式</th>
<td>{{obj.mobile}}</td>
</tr>
</tbody>
</table>
</div>
</Modal>
</div>
</template>
<script>
/**
* 政府委托信息表详情
*/
export default {
data() {
return {
obj: {
firsted: 0,
client: '',
boreholeLocation: '',
boreholeName: '',
waterDepth: '',
tabulater: '',
testType: ''
},
showDetailModal: false,
dispose: '',
height: '',
showMoney: false
}
},
methods: {
_open(obj, flag) {
console.log('obj', obj)
this.showDetailModal = true
this.obj = obj.records[0]
if (flag === 'showMoney') {
this.showMoney = true
} else {
this.showMoney = false
}
this.height = '350px'
}
}
}
</script>
<!--检测项目编辑列表(添加、导入检测项目)-->
<template>
<div>
<Modal
v-model="showModal"
:mask-closable="false"
:width="690"
@on-cancel="_cancel"
title="检测项目管理"
>
<Row>
<!--正常界面-->
<Col span="24">
<PTVXETable ref="pageTable" :loading="true"
:get-page="getPage" :icon-msg="iconMsg" @on-result-change="_tableResultChange" select-data>
<vxe-table-column
v-for="item in pageColumns"
:key="item.key"
:field="item.key"
:title="item.title"
:min-width="item.width?item.width:200"
:fixed="item.fixed?item.fixed:undefined" sortable>
<template slot-scope="scope">
<span v-if="item.key==='judged'">
{{ scope.row[item.key]===1?'是':'否' }}
</span>
<div v-else-if="item.key==='compareSymbol'" @click.stop="_handleRow(scope)">
<el-input
v-model="scope.row.compareSymbol"
placeholder="请输入比较符"
/>
</div>
<div v-else-if="item.key==='limitValue'" @click.stop="_handleRow(scope)">
<el-input
v-model="scope.row.limitValue"
placeholder="请输入限值"
/>
</div>
<div v-else-if="item.key==='unit'" @click.stop="_handleRow(scope)">
<el-input
v-model="scope.row.unit"
placeholder="请输入单位"
/>
</div>
<div v-else-if="item.key==='code'" @click.stop="_handleRow(scope)">
<el-input
v-model="scope.row.code"
style="width: 130px;"
blur
placeholder="请选择检测依据"
/>
<i @click.stop="_selectjudgeBasis(scope.$index)" style="cursor: pointer;font-size: 14px;" class="icons iconfont pt-search icon-search"></i>
</div>
<span v-else>
{{ scope.row[item.key] }}
</span>
</template>
</vxe-table-column>
</PTVXETable>
</Col>
</Row>
<div slot="footer">
<modal-footer ref="footerModal" :footer="footerList" @on-result-change="_footerResult" />
</div>
</Modal>
</div>
</template>
<script>
import { soilEntrust } from '../../api'
export default {
components: {},
data() {
return {
formObj: {
catalogueId: '',
name: '',
code: '',
standardCode: '',
standardName: ''
},
showModal: false,
searchOpen: false,
btn: [],
index: '',
iconMsg: [
{
type: 'md-trash',
id: '',
name: '删除'
}
],
footerList: [
{ id: '', name: '取消', type: '' },
{ id: '', name: '保存', type: 'primary' }
],
pageColumns: [
{ title: '试验名称', key: 'name', width: 140 },
{ title: '大类', key: 'mainType', width: 140 },
{ title: '小类', key: 'smallType', width: 140 },
{ title: '方法', key: 'testMethod', width: 180 }
],
catalogueId: '',
itemList: {
records: []
},
getPage: {
records: []
},
selectData: [],
originalList: []
}
},
methods: {
_open(expList) {
this.formObj = this.$resetFields(this.formObj)
this.showModal = true
this.getPage.records = expList
this.selectData = []
console.log(expList)
this.$refs.pageTable._clearSelection()
// this.formObj.sampleId = id
// this.$refs.pageTable._hideLoading()
// if (catalogueId) {
// this._page()
// }
},
_handleRow(scope) {
console.log(scope)
},
_selectjudgeBasis(index) {
console.log(index)
this.index = index
this.$refs.EditModal._open()
},
_formSearch() {
this.$refs.pageTable._pageChange(1)
},
_footerResult(name) {
switch (name) {
case '取消':
this._cancel()
break
case '保存':
this._saveCatalogueItem()
break
}
},
_page: async function() {
// this.$refs.pageTable._page('search-form-package', 'FoodJudgeBasis/page')
Object.assign(this.formObj, this.$refs.pageTable._searchParams())
const result = await soilEntrust.pageItem(
this.$serializeForm(this.formObj)
)
if (result) {
console.log(result)
this.getPage = result
this.$refs.pageTable._hideLoading()
}
},
_btnClick(msg) {
switch (msg) {
case '导入检测项目':
this.$refs.relItemModal._open(this.catalogueId)
break
}
},
// 操作列操作
_iconClick(res, data) {
switch (res) {
case '删除':
this._deleteById(data.id, data.index)
break
}
},
// 删除
_deleteById(id, index) {
this.$Modal.confirm({
title: '提示',
content: '确定删除该数据?',
onOk: () => {
this._deleteOk(id, index)
}
})
},
_deleteOk: async function(id, index) {
if (id) {
const result = await soilEntrust.experimentDeleteById(id)
if (result) {
this.$Message.success('删除成功')
this.getPage.records.splice(index, 1)
}
} else {
this.$Message.success('成功删除')
this.getPage.records.splice(index, 1)
}
},
// table结果 返回整行
_tableResultChange(msg, data) {
switch (msg) {
case 'selectData':
this.selectData = data
break
case 'iconClick':
this._iconClick(data.name, data.rowData)
break
case 'changeSize':
this._page()
}
},
_ok() {
const expNames = []
for (let i = 0; i < this.getPage.records.length; i++) {
expNames.push(this.getPage.records[i].name)
}
const data = expNames
this._saveCatalogueItem(data)
},
_saveCatalogueItem(data) {
this.showModal = false
this.$emit('on-result-change', this.getPage.records)
this._hideLoading()
console.log(this.getPage.records)
},
_cancel() {
this.selectData = []
this.showModal = false
this.$emit('on-result-change', this.getPage.records)
},
_visibleChange() {
const data = this.itemList.records
this._saveCatalogueItem(data)
this.selectData = []
this.showModal = false
},
_hideLoading() {
this.$refs.footerModal._hideLoading()
}
}
}
</script>
<!--检测项目编辑列表(添加、导入检测项目)-->
<template>
<div>
<Modal
v-model="showModal"
:mask-closable="false"
:width="690"
@on-cancel="_cancel"
title="检测项目管理"
>
<Row>
<!-- 表格 -->
<Col span="24">
<PTVXETable ref="pageTable" :loading="true"
:get-page="itemList" :icon-msg="iconMsg" @on-result-change="_tableResultChange" hide-page="true" select-data>
<vxe-table-column
v-for="item in pageColumns"
:key="item.key"
:field="item.key"
:title="item.title"
:min-width="item.width?item.width:200"
:fixed="item.fixed?item.fixed:undefined" sortable>
<template slot-scope="scope">
<span v-if="item.key==='judged'">
{{ scope.row[item.key]===1?'是':'否' }}
</span>
<div v-else-if="item.key==='compareSymbol'" @click.stop="_handleRow(scope)">
<el-input
v-model="scope.row.compareSymbol"
placeholder="请输入比较符"
/>
</div>
<div v-else-if="item.key==='limitValue'" @click.stop="_handleRow(scope)">
<el-input
v-model="scope.row.limitValue"
placeholder="请输入限值"
/>
</div>
<div v-else-if="item.key==='unit'" @click.stop="_handleRow(scope)">
<el-input
v-model="scope.row.unit"
placeholder="请输入单位"
/>
</div>
<div v-else-if="item.key==='code'" @click.stop="_handleRow(scope)">
<el-input
v-model="scope.row.code"
style="width: 130px;"
blur
placeholder="请选择检测依据"
/>
<i @click.stop="_selectjudgeBasis(scope.$index)" style="cursor: pointer;font-size: 14px;" class="icons iconfont pt-search icon-search"></i>
</div>
<span v-else>
{{ scope.row[item.key] }}
</span>
</template>
</vxe-table-column>
</PTVXETable>
</Col>
</Row>
<div slot="footer">
<modal-footer ref="footerModal" :footer="footerList" @on-result-change="_footerResult" />
</div>
</Modal>
</div>
</template>
<script>
import { soilAptitude } from '../../api'
export default {
components: {},
data() {
return {
formObj: {
catalogueId: '',
name: '',
code: '',
standardCode: '',
standardName: ''
},
showModal: false,
searchOpen: false,
btn: [],
index: '',
iconMsg: [
{
type: 'md-trash',
id: '',
name: '删除'
}
],
footerList: [
{ id: '', name: '取消', type: '' },
{ id: '', name: '保存', type: 'primary' }
],
pageColumns: [
{ title: '试验名称', key: 'name', width: 140 },
{ title: '大类', key: 'mainType', width: 140 },
{ title: '小类', key: 'smallType', width: 140 },
{ title: '方法', key: 'testMethod', width: 180 }
],
catalogueId: '',
itemList: {
records: []
},
selectData: [],
originalList: []
}
},
methods: {
_open(itemList) {
this.itemList.records = []
this.formObj = this.$resetFields(this.formObj)
this.showModal = true
this.itemList.records = itemList
this.$refs.pageTable._hideLoading()
this.$refs.pageTable._clearSelection()
// if (catalogueId) {
// this._page()
// }
},
_handleRow(scope) {
console.log(scope)
},
_selectjudgeBasis(index) {
console.log(index)
this.index = index
this.$refs.EditModal._open()
},
_formSearch() {
console.log(this.formObj.name)
const searchItem = []
for (let i = 0; i < this.itemList.records.length; i++) {
if (this.itemList.records[i].name === this.formObj.name) {
console.log(this.itemList.records[i])
searchItem.push(this.itemList.records[i])
}
}
this.itemList.records = searchItem
},
_footerResult(name) {
switch (name) {
case '取消':
this._cancel()
break
case '保存':
this._ok()
break
}
},
_page: async function() {
// this.$refs.pageTable._page('search-form-package', 'FoodJudgeBasis/page')
Object.assign(this.formObj, this.$refs.pageTable._searchParams())
const result = await soilAptitude.page(this.$serializeForm(this.formObj))
if (result) {
console.log(result)
this.getPage = result
this.$refs.pageTable._hideLoading()
}
},
_btnClick(msg) {
switch (msg) {
case '导入检测项目':
this.$refs.relItemModal._open(this.catalogueId)
break
}
},
// 操作列操作
_iconClick(res, data) {
switch (res) {
case '删除':
this.itemList.records.splice(data.index, 1)
break
}
},
// 删除
_deleteById(id) {
this.$Modal.confirm({
title: '提示',
content: '确定删除该数据?',
onOk: () => {
this._deleteOk(id)
}
})
},
_deleteOk(id) {
// const result = await drugCatalogueItem.deleteById(id)
this.itemList.splice(id, 1)
this.getPage.records = this.itemList
this.$Message.success('已删除')
},
// table结果 返回整行
_tableResultChange(msg, data) {
switch (msg) {
case 'selectData':
this.selectData = data
break
case 'iconClick':
this._iconClick(data.name, data.rowData)
break
}
},
_ok() {
const data = this.itemList.records
this._saveCatalogueItem(data)
},
_saveCatalogueItem(data) {
this.showModal = false
this.$emit('on-result-change', data)
this._hideLoading()
},
_cancel() {
const data = this.itemList.records
this._saveCatalogueItem(data)
this.selectData = []
this.showModal = false
},
_visibleChange() {
const data = this.itemList.records
this._saveCatalogueItem(data)
this.selectData = []
this.showModal = false
},
_hideLoading() {
this.$refs.footerModal._hideLoading()
}
}
}
</script>
<template>
<div>
<Modal v-model="showDetailModal" v-drag :width="700" title="人员信息" class="modal-footer-none">
<div :style="{height}" style="overflow-y: auto">
<table class="tableClass">
<tbody>
<tr>
<th colspan="6" class="tableClass_back">人员信息</th>
</tr>
<tr>
<th>接收人</th>
<td>{{obj.receiver}}</td>
<th>接收日期</th>
<td>{{$dateformat(obj.receiveTime,'yyyy-mm-dd')}}</td>
</tr>
<tr>
<th>项目名称</th>
<td>{{obj.projectName}}</td>
<th>项目负责人</th>
<td>{{obj.projectLeader}}</td>
</tr>
<tr>
<th>钻孔名称</th>
<td>{{obj.boreholeName}}</td>
<th>箱数</th>
<td>{{obj.casesNum}}</td>
</tr>
<tr>
<th>登记人</th>
<td>{{obj.registrant}}</td>
<th>登记日期</th>
<td>{{$dateformat(obj.registTime,'yyyy-mm-dd')}}</td>
</tr>
</tbody>
</table>
</div>
</Modal>
</div>
</template>
<script>
/**
* 政府委托信息表详情
*/
export default {
data() {
return {
obj: {
firsted: 0,
client: '',
boreholeLocation: '',
boreholeName: '',
waterDepth: '',
tabulater: '',
testType: ''
},
showDetailModal: false,
dispose: '',
height: '',
showMoney: false
}
},
methods: {
_open(obj, flag) {
this.showDetailModal = true
this.obj = obj
console.log('obj', obj)
if (flag === 'showMoney') {
this.showMoney = true
} else {
this.showMoney = false
}
this.height = '350px'
}
}
}
</script>
<template>
<div>
<div class="layout-content-padding">
<div class="layout-content-main">
<el-tabs v-model="activeName" @tab-click="_changeTabs">
<el-tab-pane label="待完成" name="wait"></el-tab-pane>
<el-tab-pane label="历史记录" name="his"></el-tab-pane>
</el-tabs>
<keep-alive>
<!-- eslint-disable-next-line vue/require-component-is -->
<component ref="refModal" :is="currentComponent"></component>
</keep-alive>
</div>
</div>
</div>
</template>
<script>
import MeterSendEntrust from './EntrustRegister'
import MeterSendEntrustHis from './EntrustRegisterHis'
export default {
name: 'MeterSendEntrustIndex',
components: {
// eslint-disable-next-line vue/no-unused-components
MeterSendEntrust,
// eslint-disable-next-line vue/no-unused-components
MeterSendEntrustHis
},
data() {
return {
activeName: 'wait',
currentComponent: ''
}
},
mounted() {
this.activeName = 'wait'
this.currentComponent = 'MeterSendEntrust'
this.$nextTick(() => {
this.$refs.refModal._page()
})
},
methods: {
_changeTabs(tab, event) {
if (tab.name === 'wait') {
this.currentComponent = 'MeterSendEntrust'
this.$nextTick(() => {
this.$refs.refModal._page()
})
} else {
this.currentComponent = 'MeterSendEntrustHis'
this.$nextTick(() => {
this.$refs.refModal._page()
})
}
}
}
}
</script>
<style scoped>
</style>
<template>
<div>
<!--内容-->
<div class="layout-content-padding">
<div class="layout-content-main">
<Row>
<!--查询-->
<Col span="24" style="margin-top: 10px">
<Form id="formId" v-show="searchOpen" :label-width="90" inline onsubmit="return false">
<label class="label-sign"></label>
<Form-item class="search-item" label="委托编号:">
<Input v-model="formObj.entrustCode" @on-enter="_formSearch" name="entrustCode" placeholder="请输入委托编号" clearable/>
</Form-item>
<Form-item class="search-item" label="项目名称:">
<Input v-model="formObj.projectName" @on-enter="_formSearch" name="projectName" 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" :show-search-btn="true" @on-result-change="_btnClick"
class="contHide"></btn-list>
</Col>
<!--表格-->
<Col span="24">
<PTVXETable ref="pageTable" :table-height="tableHeight" :form-id="formId" :loading="true"
:get-page="getPage" :icon-msg="iconMsg" @on-result-change="_tableResultChange">
<vxe-table-column
v-for="item in pageColumns"
:key="item.key"
:field="item.key"
:title="item.title"
:min-width="item.width?item.width:200"
:fixed="item.fixed?item.fixed:undefined" sortable>
<template slot-scope="scope">
<span v-if="item.date">{{scope.row[item.key]?$dateformat(scope.row[item.key],'yyyy-mm-dd'):''}}</span>
<span v-else-if="item.status">{{scope.row[item.key].display}}</span>
<div v-else-if="item.detail">
<a @click.stop="_detailModal(scope.row)">{{ scope.row[item.key] }}</a>
</div>
<span v-else>{{scope.row[item.key]}}</span>
</template>
</vxe-table-column>
</PTVXETable>
</Col>
</Row>
</div>
</div>
<keep-alive>
<!-- eslint-disable-next-line vue/require-component-is -->
<component ref="refModal" :is="currentComponent" @on-result-change="_componentResult"></component>
</keep-alive>
</div>
</template>
<script>
import { soilEntrust, soilSample } from '../../../api'
import Operation from '../../../components/operation/Operation'
import importModal from '../../../components/import/DownloadTemplateImport'
import EntrustRegisterEdit from './EntrustRegisterEdit'
import RegisterDetail from './RegisterDetail'
import ViewDetail from './ViewDetail'
import Outstock from './Outstock'
export default {
components: {
// eslint-disable-next-line vue/no-unused-components
Operation,
// eslint-disable-next-line vue/no-unused-components
EntrustRegisterEdit,
// eslint-disable-next-line vue/no-unused-components
importModal,
// eslint-disable-next-line vue/no-unused-components
RegisterDetail,
// eslint-disable-next-line vue/no-unused-components
ViewDetail,
// eslint-disable-next-line vue/no-unused-components
Outstock
},
data() {
return {
currentComponent: '',
formId: 'meterSubcontractorFormId',
searchOpen: false,
btn: [
{
type: 'success',
id: '',
name: '出库'
}
],
iconMsg: [
{
type: 'md-create',
id: '',
name: '编辑'
},
{
type: 'ios-list',
id: '',
name: '查看'
},
{
type: 'md-cloud',
id: '',
name: '附件'
},
{
type: 'md-remove-circle',
id: '',
name: '删除'
}
],
formObj: {
client: undefined,
contractCode: undefined,
entrustCode: undefined
},
selectIds: [],
getPage: {},
pageColumns: [
{ title: '项目名称', key: 'projectName', width: 120 },
{ title: '项目负责人', key: 'projectLeader', width: 150, detail: true },
{ title: '钻孔名称', key: 'boreholeName', width: 120 },
{ title: '箱数', key: 'casesNum', width: 120 },
{ title: '登记日期', key: 'registTime', width: 120, date: true }
]
}
},
computed: {
tableHeight: function() {
if (this.searchOpen) {
return this.$tableHeight('search')
} else {
return this.$tableHeight('noSearch')
}
}
},
mounted() {},
methods: {
_btnClick(msg, componentName) {
this.currentComponent = componentName
this.$nextTick(function() {
switch (msg) {
case '出库':
this._outstock()
break
case '试验委托单导入':
this._import()
break
case '登记':
this._editModal(false)
break
case '提交至评审':
this._submitToReview()
break
case '提交':
this._submitToSkipReview()
break
case 'search':
this.searchOpen = !this.searchOpen
break
}
})
},
_outstock() {
if (this.selectIds.length === 0) {
this.$Message.warning('请至少选择一条数据')
} else {
this.currentComponent = 'Outstock'
this.$nextTick(() => {
this.$refs.refModal._open(this.selectIds)
})
}
},
_detailModal(data) {
console.log(data)
this._getUserInfo(data)
this.currentComponent = 'RegisterDetail'
},
_getUserInfo: async function(data) {
const result = await soilEntrust.getUserByGroupId({
realname: data.projectLeader,
id: data.projectLeaderId
})
if (result) {
this.$refs.refModal._open(result)
}
},
_import() {
this.currentComponent = 'importModal'
const data = {
importUrl: '/soil/v1/entrust/import_entrust/',
downloadUrl: '/soil/v1/excel/template/SoilEntrustImport',
title: '试验委托单导入'
}
this.$nextTick(() => {
this.$refs.refModal._open(data, '试验委托单导入')
})
},
_componentResult(msg, data) {
switch (this.currentComponent) {
case 'MeterSubcontractorEdit':
this._formSearch()
break
case 'DrugSampleManage':
this._formSearch()
break
case 'FileManage':
this._fileResult(msg, data)
break
default:
this._page()
}
},
_iconClick(res, data, componentName) {
this.currentComponent = componentName
this.$nextTick(function() {
switch (res) {
case '编辑':
this._editModal(true, data.id)
break
case '查看':
this._viewModal(true, data.id)
break
case '试样列表':
this._sampleManage(data.id)
break
case '试验项目列表':
this._itemManage(data.id)
break
case '附件':
this._upload(data.id)
break
case '删除':
this._deleteByIds([data.id])
break
case '操作日志':
this._record(data.id)
break
}
})
},
_sampleManage(data) {
// 管理样品
this.currentComponent = 'SoilSampleManage'
this.$nextTick(() => {
this.$refs.refModal._open(data)
})
},
_itemManage(data) {
// 管理样品
this.currentComponent = 'SoilSampleItemManage'
this.$nextTick(() => {
this.$refs.refModal._openByEntrustId(data)
})
},
_submitToReview() {
this._submitByContractIds('委托评审')
},
_submitToSkipReview() {
const ids = this.selectIds
if (ids.length === 0) {
this.$Message.warning('请至少选择一条数据!')
} else {
this.$Modal.confirm({
title: '提示',
content: '确定要提交 ' + ids.length + ' 条记录?',
onOk: () => {
this.$refs.pageTable._showLoading()
this._subToSkipRe(ids)
}
})
}
},
_submitByContractIds(cont) {
const ids = this.selectIds
if (ids.length === 0) {
this.$Message.warning('请至少选择一条数据!')
} else {
this.$Modal.confirm({
title: '提示',
content: '确定要把这 ' + ids.length + ' 条记录提交到' + cont + '?',
onOk: () => {
this.$refs.pageTable._showLoading()
this._subToRe(ids)
}
})
}
},
_subToRe: async function(ids) {
const result = await soilEntrust.submit(ids)
if (result) {
this._resultChange('提交成功')
}
},
_subToSkipRe: async function(ids) {
const result = await soilEntrust.submitSkipReview(ids)
if (result) {
this._resultChange('提交成功')
}
},
_resultChange(msg) {
this.$Message.success(msg)
this._page()
this.$refs.pageTable._hideLoading()
},
_record(id) {
this.currentComponent = 'Operation'
this.$nextTick(() => {
this.$refs.refModal._open(id)
})
},
_tableResultChange(msg, data) {
switch (msg) {
case 'selectIds':
this.selectIds = data
break
case 'iconClick':
this._iconClick(data.name, data.rowData, data.componentName)
break
case 'page':
this._page()
break
case 'changeSize':
this._page()
break
}
},
_page: async function() {
Object.assign(this.formObj, this.$refs.pageTable._searchParams())
const result = await soilSample.pageWaitDelivery(
this.$serializeForm(this.formObj)
)
if (result) {
this.$refs.pageTable._hideLoading()
this.getPage = result
}
},
_formSearch() {
this.$refs.pageTable._pageChange(1)
},
// 删除
_deleteByIds(ids, content) {
this.$Modal.confirm({
title: '提示',
content: content || '确定删除该记录?',
onOk: () => {
this._delete(ids)
}
})
},
// 编辑&添加
_editModal(edit, id) {
this.currentComponent = 'EntrustRegisterEdit'
if (edit) {
this.$refs.pageTable._showLoading()
// 编辑
this._getById(id)
} else {
// 添加
this.$nextTick(() => {
this.$refs.refModal._open()
})
}
},
_viewModal(edit, id) {
this.currentComponent = 'ViewDetail'
if (edit) {
this.$refs.pageTable._showLoading()
// 编辑
this._getDetailById(id)
} else {
// 添加
this.$nextTick(() => {
this.$refs.refModal._open()
})
}
},
_getDetailById: async function(id) {
const result = await soilEntrust.aloneSampleGetById(id)
if (result) {
this.$refs.refModal._open(result)
this.$refs.pageTable._hideLoading()
} else {
this.$refs.pageTable._hideLoading()
}
},
_upload(id) {
// 上传文件
this.currentComponent = 'FileManage'
this.$nextTick(() => {
this.$refs.refModal._open(id, 'entrustId')
})
},
_getById: async function(id) {
const result = await soilEntrust.aloneSampleGetById(id)
if (result) {
this.$refs.refModal._openEdit(result)
this.$refs.pageTable._hideLoading()
} else {
this.$refs.pageTable._hideLoading()
}
},
_delete: async function(ids) {
const result = await soilEntrust.aloneSampleDelete(ids)
if (result) {
this._formSearch()
this.$Message.success('删除成功!')
}
}
}
}
</script>
<template>
<div>
<Modal v-model="showModal" :mask-closable="false" width="900">
<p slot="header">{{modalTitle}}</p>
<div>
<Form id="MeterSendTestEdit" ref="formObj" :model="formObj" :label-width="90" inline>
<!-- <Form-item label="委托商" prop="client" class="width-48">-->
<!-- <AutoComplete ref="autoInput" v-model="formObj.client" :down-data="customerData"-->
<!-- @on-result-change="_cusNameChange" name="client" placeholder="请输入或选择委托单位"-->
<!-- ></AutoComplete>-->
<!-- </Form-item>-->
<Form-item label="接收人" prop="receiver" class="width-48">
<Input v-model="formObj.receiver" name="receiver" placeholder="请输入接收人"/>
</Form-item>
<Form-item label="接收日期:" prop="receiveTime" class="width-48">
<Date-picker v-model="formObj.receiveTime" @on-change="_ctimeChange" type="date" split-panels style="width:100%;"
placeholder="请选择接收日期" name="receiveTime"></Date-picker>
</Form-item>
<Form-item label="项目名称" prop="projectName" class="width-48">
<!-- <Input v-model="formObj.projectName" name="projectName" placeholder="请输入项目名称"/>-->
<AutoComplete ref="autoInput" v-model="formObj.projectName" :down-data="projectData"
@on-result-change="_projectChange" name="projectName" placeholder="请输入或选择项目名称"
></AutoComplete>
</Form-item>
<Form-item @click.native="_selectProjectPerson" label="项目负责人" prop="projectLeader" class="width-48">
<Input v-model="formObj.projectLeader" name="projectLeader" placeholder="请输入项目负责人"/>
</Form-item>
<Form-item label="钻孔名称" prop="boreholeName" class="width-48">
<Input v-model="formObj.boreholeName" name="boreholeName" placeholder="请输入名称"/>
</Form-item>
<Form-item label="箱数" prop="casesNum" class="width-48">
<Input v-model="formObj.casesNum" name="casesNum" placeholder="请输入箱数"/>
</Form-item>
<Form-item @click.native="_selectRegisterPerson" label="登记人" prop="registrant" class="width-48">
<Input v-model="formObj.registrant" name="registrant" placeholder="请输入登记人"/>
</Form-item>
<Form-item label="登记日期:" prop="registTime" class="width-48">
<Date-picker v-model="formObj.registTime" @on-change="_tabulateChange" name="registTime" type="date" split-panels style="width:100%;"
placeholder="请选择登记日期"></Date-picker>
</Form-item>
<!-- <Form-item label="检验类别" prop="testType" class="width-48">-->
<!-- <Input v-model="formObj.testType" name="testType" placeholder="请输入名称"/>-->
<!-- </Form-item>-->
</Form>
</div>
<div slot="footer">
<modal-footer ref="footerModal" :footer="footerList" @on-result-change="_footerResult"></modal-footer>
</div>
</Modal>
<importModal ref="importModal" @on-result-change="_inputBack" aptitude-item></importModal>
<SampleItemSelect ref="sampleItemSelectModal" @on-result-change="_itemImportBack" is-change />
<assignPerson ref="userModal" @on-result-change="_userResult"></assignPerson>
<SampleItemRemove ref="sampleItemRemove" @on-result-change = '_removeItemBack'></SampleItemRemove>
<SampleItemEdit ref="sampleItemEdit" @on-result-change = '_removeItemBack'></SampleItemEdit>
</div>
</template>
<script>
/**
* 添加编辑分包商
*/
import { meterEntrust, meterSample, soilEntrust } from '../../../api'
import importModal from '../../../components/import/DownloadTemplateImport'
import AutoComplete from '../../../components/base/AutoCompletes'
import SampleItemSelect from '../../meter-aptitude/standard-manage/SampleItemSelect'
import assignPerson from '../../../components/user-info-single/assignPerson'
import Global from '../../../api/config'
import SampleItemRemove from './SampleItemRemove'
import SampleItemEdit from './SampleItemEdit'
export default {
components: {
AutoComplete,
importModal,
SampleItemSelect,
assignPerson,
SampleItemRemove,
SampleItemEdit
},
data() {
return {
formId: 'meterSendTestEditFormId',
getPage: {
records: []
},
showBtn: true,
customerData: [],
projectData: [],
edit: false,
cityData: [],
selectData: [],
sampleItemList: [],
searchOpen: true,
testedCityData: [],
judgeType: [{ value: 1, name: '是' }, { value: 0, name: '否' }],
iconMsg: [
{
type: 'md-trash',
id: '',
name: '删除'
}
],
pageColumns: [
{ title: '试样编号', key: 'sampleCode', width: 140 },
{ title: '现场编号', key: 'siteNo', width: 140 },
{ title: '试验项目', key: 'experiments', width: 140 },
{ title: '试样深度', key: 'sampleDepth', width: 140 },
{ title: '样品包装类型', key: 'samplePack', width: 150 },
{ title: '土质描述', key: 'sampleDescribe' }
],
btn: [
{
type: 'success',
id: '',
name: '添加'
},
{
type: 'success',
id: '',
name: '导入试验项目'
}
],
btnEdit: [
{
type: 'success',
id: '',
name: '添加'
},
{
type: 'success',
id: '',
name: '导入样品'
},
{
type: 'success',
id: '',
name: '导入试验项目'
}
],
options: [
{
name: '检定'
},
{
name: '校准'
},
{
name: '外观检查'
}
],
typeoptions: [],
personType: '',
packList: [],
soilList: [],
currentIndex: -1,
id: '',
modalTitle: '',
subcontractorId: '',
formObj: {},
selectIds: [],
indexList: [],
itemList: [],
clearingWayList: ['款到后测试', '先测试后付款', '其他情况()'],
clearingWayListTemp: ['款到后测试', '先测试后付款', '其他情况()'],
showModal: false,
footerList: [
{ id: '', name: '取消', type: '' },
{ id: '', name: '保存', type: 'primary' }
],
aptitudeData: []
}
},
methods: {
typeChange(data) {
this.$forceUpdate()
this.formObj.testType = data
},
_removeItem(itemInfo) {
console.log('试验项目', itemInfo)
this.sampleItemList = itemInfo.experimentList
if (itemInfo.sampleCode !== '') {
this.$refs.sampleItemEdit._open(this.sampleItemList)
} else {
this.$refs.sampleItemRemove._open(this.sampleItemList)
}
},
_removeItemBack(data) {
this.$forceUpdate()
if (data) {
this.getPage.records[this.currentIndex].experimentList = data
const itemNames = []
for (let j = 0; j < data.length; j++) {
itemNames.push(data[j].name)
}
this.getPage.records[this.currentIndex].experiments = itemNames.join(
','
)
}
this.$set(
this.getPage.records,
this.currentIndex,
this.getPage.records[this.currentIndex]
)
},
_itemImportBack(data) {
this.$forceUpdate()
for (let i = 0; i < data.length; i++) {
data[i].id = undefined
}
const info = data
for (let i = 0; i < this.indexList.length; i++) {
const index = this.indexList[i]
if (
this.getPage.records[index].experimentList !== undefined &&
this.getPage.records[index].experimentList !== []
) {
const name = []
this.itemList = this.getPage.records[index].experimentList
name.push(this.getPage.records[index].experiments)
for (let i = 0; i < info.length; i++) {
this.itemList.push(info[i])
name.push(info[i].name)
}
this.getPage.records[index].experiments = name.join('、')
this.getPage.records[index].experimentList = this.itemList
this.$set(this.getPage.records, index, this.getPage.records[index])
} else {
const name = []
this.itemList = []
for (let i = 0; i < info.length; i++) {
this.itemList.push(info[i])
name.push(info[i].name)
}
this.getPage.records[index].experiments = name.join('、')
this.getPage.records[index].experimentList = this.itemList
this.$set(this.getPage.records, index, this.getPage.records[index])
}
}
},
_selectProjectPerson() {
this.personType = 'project'
this.$refs.userModal._openOrg('选择人员', 'itemTree')
},
_selectRegisterPerson() {
this.personType = 'resistrant'
this.$refs.userModal._openOrg('选择人员', 'itemTree')
},
_userResult(data, msg) {
console.log(msg)
this.$forceUpdate()
if (this.personType === 'resistrant') {
this.formObj.registrant = data.realname
this.formObj.registrantId = data.id
} else {
this.formObj.projectLeader = data.realname
this.formObj.projectLeaderId = data.id
}
},
_packChange(msg, data) {
switch (msg) {
case 'select':
this.getPage.records[this.currentIndex].samplePack = data
break
case 'query':
this.getPage.records[this.currentIndex].samplePack = data
break
}
},
_soilChange(msg, data) {
switch (msg) {
case 'select':
this.getPage.records[this.currentIndex].sampleDescribe = data
break
case 'query':
this.getPage.records[this.currentIndex].sampleDescribe = data
break
}
},
_cusNameChange(msg, data) {
if (this.$string(this.id).isEmpty()) {
// 添加的时候选择单位
switch (msg) {
case 'select':
this._customerMatch(data)
break
case 'query':
this._cusNameQuery(data)
break
}
} else if (this.customerData.indexOf(data) !== -1) {
this._getQueryList(data)
} else {
this._cusNameQuery(data)
}
},
_customerMatch(data) {
this._getQueryList(data)
},
_cusNameQuery(query) {
console.log('query', query)
this.formObj.client = query
this._getQueryList(query)
},
_projectChange(msg, data) {
if (this.$string(this.id).isEmpty()) {
// 添加的时候选择单位
switch (msg) {
case 'select':
this._projectMatch(data)
break
case 'query':
this._projectQuery(data)
break
}
} else if (this.projectData.indexOf(data) !== -1) {
this._getProjectQueryList(data)
} else {
this._projectQuery(data)
}
},
_projectMatch(data) {
this._getQueryList(data)
},
_projectQuery(query) {
this.formObj.projectName = query
this._getProjectQueryList(query)
},
_btnClick(msg) {
this.$nextTick(function() {
switch (msg) {
case '添加':
this._add()
break
case '导入试验项目':
this._importItem()
break
case '导入样品':
this._importSample()
break
case 'search':
this.searchOpen = !this.searchOpen
break
}
})
},
_importItem() {
if (this.selectIds.length === 0) {
this.$Message.warning('请选择至少一条数据!')
} else {
this.$refs.sampleItemSelectModal._open()
this.allSelect(this.selectData)
}
},
_getByEntrustId: async function(id) {
const result = await soilEntrust.getVOById(id)
if (result) {
this.$forceUpdate()
const sampleList = Object.assign(
this.getPage.records,
result.sampleList
)
this.$set(this.getPage.records, sampleList)
}
},
_inputBack(data) {
if (data) {
this._getByEntrustId(this.id)
}
},
_ctimeChange(data) {
this.formObj.receiveTime = data
},
_tabulateChange(data) {
this.formObj.registTime = data
},
_odateChange(data) {
this.formObj.odate = data
},
_judgeBasisChange(msg, data) {
switch (msg) {
case 'select':
this.formObj.stdId = data.id
this.formObj.code = data.stdNum
this.formObj.name = data.name
this.$refs.formObj.validateField('code')
break
case 'query':
this.formObj.stdId = ''
this.formObj.code = data.stdNum
this.formObj.name = ''
this._getJudgeBasisList(data.stdNum)
break
case 'focus':
this._getJudgeBasisList()
break
case 'blur':
if (this.formObj.stdId === '') {
this.formObj.code = ''
this._getJudgeBasisList()
}
this.$refs.formObj.validateField('code')
}
},
_selectjudgeBasis(index) {
this.index = index
this.$refs.EditModal._open()
},
_selectverification(index) {
this.index = index
this.$refs.VerificationModal._open()
},
_selectcontractCode() {
this.$refs.ContractModal._open()
},
_backData(data) {
this.$forceUpdate()
console.log(typeof this.index)
this.getPage.records[this.index].name = data.name
this.getPage.records[this.index].aptitudeId = data.id
this.getPage.records[this.index].verification = data.code + data.basis
this.getPage.records[this.index].price = data.price
this.getPage.records[this.index].totalPrice =
data.price * this.getPage.records[this.index].quantity
},
_backContract(data) {
this.formObj.client = data.client
this.formObj.operation.person = data.person
this.formObj.operation.tel = data.tel
this.formObj.operation.fax = data.fax
if (data.province) {
this.testedCityData = [data.province, data.city, data.county]
this.formObj.province = data.province
this.formObj.city = data.city
this.formObj.county = data.county
}
this.formObj.street = data.street
this.formObj.entrustDate = new Date(data.entrustDate)
this.formObj.odate = new Date(data.odate)
this.formObj.contractCode = data.salesCode
this.formObj.operation.fee = data.discountPrice
if (data.sampleQuoteList) {
this.getPage.records = data.sampleQuoteList
} else {
this.getPage.records = []
}
},
_backVerification(data) {
this.$forceUpdate()
this.getPage.records[this.index].verification = data.verification
},
_add() {
const data = {
sampleCode: '',
sampleDepth: '',
samplePack: '',
sampleDescribe: '',
siteNo: '',
experiments: ''
}
this.getPage.records.push(data)
},
_getPackList: async function() {
const result = await soilEntrust.testType('样品包装类型')
if (result) {
const pack = []
for (let i = 0; i < result.length; i++) {
pack.push(result[i].name)
}
this.packList = pack
}
},
_getSoil: async function() {
const result = await soilEntrust.testType('土质描述')
if (result) {
const soilRemark = []
for (let i = 0; i < result.length; i++) {
soilRemark.push(result[i].name)
}
this.soilList = soilRemark
}
},
_importSample() {
const data = {
importUrl: '/soil/v1/entrust/edit_import_entrust/?id=' + this.id,
downloadUrl: '/meter/v1/excel/template/MeterSampleImport',
title: '样品导入'
}
this.$refs.importModal._open(data, '样品导入')
},
_tableResultChange(msg, data, selData) {
switch (msg) {
case 'selectIds':
this.selectIds = data
this.selectData = selData
console.log(this.selectIds)
break
case 'iconClick':
this._iconClick(data.name, data.rowData, data.rowIndex)
break
}
},
allSelect(data) {
console.log(data)
this.indexList = []
for (let i = 0; i < data.length; i++) {
this.indexList.push(data[i].index)
}
console.log('索引', this.indexList)
},
// 省 市 区
_cascaderResult(name, data, msg) {
switch (name) {
case 'cus':
this._casChange(data, msg)
break
case 'tested':
this._testedChange(data, msg)
break
}
},
_emptyProvince() {
this.cityData = []
this.testedCityData = []
// this.formObj.tested.testedProvince = ''
// this.formObj.tested.testedCity = ''
// this.formObj.tested.testedCounty = ''
// this.formObj.testedTemp.testedProvince = ''
// this.formObj.testedTemp.testedCity = ''
// this.formObj.testedTemp.testedCounty = ''
},
_testedChange(data, msg) {
// 省、市、区
if (msg === 'clear') {
// this.formObj.tested.testedProvince = ''
// this.formObj.tested.testedCity = ''
// this.formObj.tested.testedCounty = ''
this.formObj.testedTemp.testedProvince = ''
this.formObj.testedTemp.testedCity = ''
this.formObj.testedTemp.testedCounty = ''
this.formObj.province = ''
this.formObj.city = ''
this.formObj.county = ''
this.testedCityData = []
} else {
// this.formObj.tested.testedProvince = data.value[0]
// this.formObj.tested.testedCity = data.value[1]
// this.formObj.tested.testedCounty = data.value[2]
this.formObj.province = data.value[0]
this.formObj.city = data.value[1]
this.formObj.county = data.value[2]
this.testedCityData = [data.value[0], data.value[1], data.value[2]]
}
},
_iconClick(res, data, index) {
switch (res) {
case '编辑':
// this._editModal(true, data.id)
break
case '删除':
this.getPage.records.splice(index, 1)
break
case '操作日志':
// this._record(data.id)
break
}
},
_deleteSample(data) {
if (data.id === undefined) {
return false
} else {
this._delete(data.id)
}
},
_delete: async function(id) {
const result = await meterSample.deleteById(id)
if (result) {
console.log(result)
}
},
_selectAptitude(data) {
console.log(data)
},
_handleRow(data) {
this.currentRow = data.row
this.currentIndex = data.rowIndex
},
channelInputLimit(e) {
const key = e.key
// 不允许输入'e'和'.'
if (key === 'e' || key === '.') {
e.returnValue = false
return false
}
return true
},
/** *modal-footer */
_footerResult(name) {
switch (name) {
case '取消':
this._cancel()
break
case '保存':
this._ok()
break
}
},
_hideLoading() {
this.$refs.footerModal._hideLoading()
},
_resultChange(msg) {
this.showModal = false
this.$Message.success(msg)
this.$emit('on-result-change')
this._hideLoading()
},
_ok() {
this.$refs.formObj.validate(valid => {
if (valid) {
const data = this.$serialize('MeterSendTestEdit')
console.log(this.getPage.records)
if (this.$string(this.id).isEmpty()) {
// 添加
if (this.formObj.projectLeaderId) {
data.projectLeaderId = this.formObj.projectLeaderId
}
if (this.formObj.registrantId) {
data.registrantId = this.formObj.registrantId
}
console.log('saveData', data)
this._save(data)
} else {
data.id = this.id
if (this.formObj.projectLeaderId) {
data.projectLeaderId = this.formObj.projectLeaderId
}
if (this.formObj.registrantId) {
data.registrantId = this.formObj.registrantId
}
this._edit(data)
}
} else {
this.$Message.error('表单验证失败!')
}
})
},
_wayResult(msg, data) {
switch (msg) {
case 'select':
this.formObj.clearingWay = data
break
case 'query':
this.formObj.clearingWay = data
this._wayQuery(data)
break
}
},
_wayQuery(query) {
if (query === '') {
this.clearingWayList = this.clearingWayListTemp
} else {
this.clearingWayList = this.clearingWayListTemp.filter(
item => item.indexOf(query) > -1
)
}
},
_cancel() {
this.showModal = false
},
_open(formObj) {
this.$refs.autoInput._clear()
this.edit = false
this._getProjectList()
this.showBtn = true
this.showModal = true
this._getUser()
this._hideLoading()
if (this.$string(formObj).isEmpty()) {
this.$refs.formObj.resetFields()
this.getPage.records = []
this.formObj.client = ''
this.id = ''
this.formObj.entrustDate = new Date()
this.modalTitle = '委托单新增'
}
},
_openEdit(formObj) {
this.edit = true
console.log(formObj)
this._getProjectList()
this.showBtn = false
this.showModal = true
this.$refs.formObj.resetFields()
this._getUser()
this.getPage.records = []
this._hideLoading()
this.id = ''
this.modalTitle = '委托单编辑'
this.id = formObj.id
this.formObj = formObj
this._showTime(formObj)
// for (let i = 0; i < formObj.sampleList.length; i++) {
// if (formObj.sampleList[i].lastTime !== undefined) {
// this.getPage.records[i].lastTime = new Date(
// formObj.sampleList[i].lastTime
// )
// }
// }
},
_getUser() {
const user = Global.getUserInfo()
this.formObj.tabulater = user.realname
},
_getTestType: async function() {
const result = await soilEntrust.testType('检验类别')
console.log(result)
if (result) {
console.log('检验类别', result)
this.typeoptions = result
}
},
_showTime(formObj) {
if (this.formObj.receiveTime === undefined) {
this.formObj.receiveTime = ''
} else {
this.formObj.receiveTime = new Date(formObj.receiveTime)
}
if (this.formObj.registTime === undefined) {
this.formObj.registTime = ''
} else {
this.formObj.registTime = new Date(formObj.registTime)
}
},
_showAddress(formObj) {
this.testedCityData = []
if (
formObj.province !== undefined &&
formObj.city !== undefined &&
formObj.county !== undefined
) {
this.testedCityData.push(formObj.province)
this.testedCityData.push(formObj.city)
this.testedCityData.push(formObj.county)
}
},
_getList: async function() {
const result = await meterEntrust.pageList()
const list = []
if (result) {
for (let i = 0; i < result.length; i++) {
list.push(result[i].cname)
}
this.customerData = list
}
},
_getProjectList: async function() {
const result = await soilEntrust.testType('项目名称')
const projectlist = []
if (result) {
for (let i = 0; i < result.length; i++) {
projectlist.push(result[i].name)
}
this.projectData = projectlist
}
},
_getQueryList: async function(data) {
const result = await meterEntrust.pageQueryList(data)
const queryList = []
if (result) {
for (let i = 0; i < result.length; i++) {
queryList.push(result[i].cname)
}
this.customerData = queryList
console.log('委托商', result)
}
},
_getProjectQueryList: async function(data) {
const queryData = {}
queryData.type = '项目名称'
queryData.name = data
const result = await soilEntrust.projectQueryList(queryData)
const queryList = []
if (result) {
for (let i = 0; i < result.length; i++) {
queryList.push(result[i].name)
}
this.projectData = queryList
console.log('项目名称', result)
}
},
_save: async function(data) {
const result = await soilEntrust.aloneSampleAdd(data)
if (result) {
this._resultChange('添加成功!')
} else {
setTimeout(() => {
this._hideLoading()
}, 500)
}
},
_edit: async function(data) {
this._hideLoading()
const result = await soilEntrust.aloneSampleEdit(data)
if (result) {
this._resultChange('编辑成功!')
}
},
_sampleEdit: async function(data) {
this._hideLoading()
const result = await soilEntrust.editDTO(data)
if (result) {
this.$Message.success('编辑成功')
}
},
_visibleChange(data) {
this.$forceUpdate()
console.log('清空')
this.formObj.client = ''
this.formObj = {}
}
}
}
</script>
<style>
.vxe-table--tooltip-wrapper {
z-index: 2147483647 !important;
}
</style>
<template>
<div>
<!--内容-->
<div class="layout-content-padding">
<div class="layout-content-main">
<Row>
<!--查询-->
<Col span="24" style="margin-top: 10px">
<Form id="formId" v-show="searchOpen" :label-width="90" inline onsubmit="return false">
<label class="label-sign"></label>
<Form-item class="search-item" label="委托商:">
<Input v-model="formObj.client" @on-enter="_formSearch" name="client" placeholder="请输入委托单位" clearable/>
</Form-item>
<Form-item class="search-item" label="委托编号:">
<Input v-model="formObj.entrustCode" @on-enter="_formSearch" name="entrustCode" 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" :show-search-btn="true" @on-result-change="_btnClick"
class="contHide"></btn-list>
</Col>
<!--表格-->
<Col span="24">
<PTVXETable ref="pageTable" :table-height="tableHeight" :form-id="formId" :loading="true"
:get-page="getPage" :icon-msg="iconMsg" @on-result-change="_tableResultChange">
<vxe-table-column
v-for="item in pageColumns"
:key="item.key"
:field="item.key"
:title="item.title"
:min-width="item.width?item.width:200"
:fixed="item.fixed?item.fixed:undefined" sortable>
<template slot-scope="scope">
<span v-if="item.date">{{scope.row[item.key]?$dateformat(scope.row[item.key],'yyyy-mm-dd'):''}}</span>
<span v-else-if="item.status">{{scope.row[item.key].display}}</span>
<span v-else>{{scope.row[item.key]}}</span>
</template>
</vxe-table-column>
</PTVXETable>
</Col>
</Row>
</div>
</div>
<keep-alive>
<!-- eslint-disable-next-line vue/require-component-is -->
<component ref="refModal" :is="currentComponent"></component>
</keep-alive>
</div>
</template>
<script>
import { soilAptitude, soilEntrust } from '../../../api'
import MeterEntrustRecord from '../../../components/operation/Operation'
export default {
// eslint-disable-next-line vue/no-unused-components
components: { MeterEntrustRecord },
data() {
return {
currentComponent: '',
formId: 'meterSubcontractorFormId',
searchOpen: true,
btn: [
// {
// type: 'success',
// id: '',
// name: '添加'
// }
],
iconMsg: [
{
type: 'ios-list',
id: '',
name: '试样列表'
},
{
type: 'ios-clock',
id: '',
name: '操作日志'
}
],
formObj: {
client: undefined,
entrustCode: undefined
},
selectIds: [],
getPage: {},
pageColumns: [
{ title: '委托商', key: 'client', width: 200 },
{ title: '委托编号', key: 'entrustCode', width: 120 },
{ title: '委托日期', key: 'entrustDate', width: 120, date: true },
{ title: '钻孔位置', key: 'boreholeLocation', width: 120 },
{ title: '水深(米)', key: 'waterDepth', width: 120 },
{ title: '钻孔名称', key: 'boreholeName', width: 120 },
{ title: '进度', key: 'progress', width: 120, status: true },
{ title: '平均容重', key: 'projectNo', width: 120 },
{ title: '报告编号', key: 'reportCode', width: 120 },
{ title: '制表日期', key: 'tabulateDate', width: 120, date: true },
{ title: '制表人', key: 'tabulater', width: 120 },
{ title: '批准日期', key: 'approveDate', width: 120, date: true },
{ title: '批准人', key: 'approver', width: 120 },
{ title: '检验类别', key: 'testType', width: 120 }
]
}
},
computed: {
tableHeight: function() {
if (this.searchOpen) {
return this.$tableHeight('search')
} else {
return this.$tableHeight('noSearch')
}
}
},
mounted() {
this._page()
},
methods: {
_btnClick(msg, componentName) {
this.currentComponent = componentName
this.$nextTick(function() {
switch (msg) {
case '添加':
this._editModal(false)
break
case 'search':
this.searchOpen = !this.searchOpen
break
}
})
},
_iconClick(res, data, componentName) {
this.currentComponent = componentName
this.$nextTick(function() {
switch (res) {
case '编辑':
this._editModal(true, data.id)
break
case '资质项目':
this._itemModal(data.id)
break
case '附件':
this._upload(data.id)
break
case '删除':
this._deleteByIds([data.id])
break
case '操作日志':
this._record(data.id)
break
case '查看样品':
this._sampleManage(data.id)
break
case '试样列表':
this._sampleManage(data.id)
break
}
})
},
_sampleManage(data) {
// 管理样品
this.currentComponent = 'SoilSampleManage'
this.$nextTick(() => {
this.$refs.refModal._open(data)
})
// this.$refs.sampleManageModal._open(data)
},
_record(id) {
this.currentComponent = 'MeterEntrustRecord'
this.$nextTick(() => {
this.$refs.refModal._open(id)
})
// this.$refs.entrustRecordModal._open(id)
},
_tableResultChange(msg, data) {
switch (msg) {
case 'iconClick':
this._iconClick(data.name, data.rowData, data.componentName)
break
case 'changeSize':
this._page()
break
}
},
_page: async function() {
Object.assign(this.formObj, this.$refs.pageTable._searchParams())
console.log('this.formObj', this.formObj)
const result = await soilEntrust.pageRegHis(this.formObj)
if (result) {
this.$refs.pageTable._hideLoading()
this.getPage = result
}
},
_formSearch() {
this.$refs.pageTable._pageChange(1)
},
// 删除
_deleteByIds(ids, content) {
this.$Modal.confirm({
title: '提示',
content: content || '确定删除该记录?',
onOk: () => {
this._delete(ids)
}
})
},
// 编辑&添加
_editModal(edit, id) {
if (edit) {
// 编辑
// this.$refs.editSubcontractorModal._open(id)
this._getById(id)
} else {
// 添加
this.$refs.editSubcontractorModal._open()
}
},
// 追加项目
_itemModal(data) {
this.$refs.refModal._open(data)
},
_upload(id) {
// 上传文件
this.$refs.refModal._open(id, 'subcontractorId')
},
_getById: async function(id) {
const result = await soilAptitude.getById(id)
if (result) {
this.$refs.editSubcontractorModal._open(result)
}
},
_delete: async function(ids) {
const result = await soilAptitude.deleteById(ids)
if (result) {
this._formSearch()
this.$Message.success('删除成功!')
}
}
}
}
</script>
<template>
<div>
<Modal v-model="showEditModal" v-drag :mask-closable="false" :width="500" class="zIndex-1200">
<p slot="header">{{modalTitle}}</p>
<div>
<Form id="edit-form" ref="formObj" :model="formObj" :rules="ruleValidate" :label-width="100" inline>
<Form-item label="库房号" prop="storehouse" style="width: 100%">
<Input v-model="formObj.storehouse" name="storehouse" placeholder="请输入库房号"/>
</Form-item>
<Form-item label="架位号" prop="shelfCode" style="width: 100%">
<Input v-model="formObj.shelfCode" name="shelfCode" placeholder="请输入架位号"/>
</Form-item>
<Form-item label="出库人" prop="outStocker" style="width: 100%">
<Input v-model="formObj.outStocker" @click.native="_selectStaff" name="outStocker" readonly/>
</Form-item>
<Form-item prop="outStockerId" style="width: 100%;display: none">
<Input v-model="formObj.outStockerId" @click.native="_selectStaff" name="outStockerId" readonly/>
</Form-item>
<Form-item label="出库接收方" prop="outStockReceiver" style="width: 100%">
<Input v-model="formObj.outStockReceiver" @click.native="_selectoutStockReceiver" name="outStockReceiver" readonly/>
</Form-item>
<Form-item prop="outStockReceiverId" style="width: 100%;display: none">
<Input v-model="formObj.outStockReceiverId" @click.native="_selectoutStockReceiver" name="outStockReceiverId" readonly/>
</Form-item>
<Form-item label="出库时间:" prop="outStock">
<Date-picker v-model="formObj.outStock" @on-change="_ctimeChange" type="date" split-panels style="width:100%;"
placeholder="请选择出库时间" name="outStock"></Date-picker>
</Form-item>
<!-- <Form-item label="留存有效期:" prop="keepLimitTime">-->
<!-- <Date-picker v-model="formObj.keepLimitTime" @on-change="_keepLimitTimeChange" type="date" split-panels style="width:100%;"-->
<!-- placeholder="请选择入库时间" name="keepLimitTime"></Date-picker>-->
<!-- </Form-item>-->
</Form>
</div>
<div slot="footer">
<ModalFooter ref="footerModal" @on-result-change="_footerResult" :footer="footerList"></ModalFooter>
</div>
</Modal>
<UserInfo ref="userModal" @on-result-change="_userData" is-change></UserInfo>
</div>
</template>
<script>
/**
* 添加编辑
*/
import ModalFooter from '../../../components/base/modalFooter'
import { soilSample } from '../../../api'
import Global from '../../../api/config'
import UserInfo from '../../../components/user-info-single/assignPerson'
export default {
components: {
ModalFooter,
UserInfo
},
data() {
return {
formId: '',
id: '',
userType: '',
lengthLimitList: [
{ key: 'stdNum', title: '标准号' },
{ key: 'enName', title: '英文名称' },
{ key: 'belongUnit', title: '归口单位' },
{ key: 'publishUnit', title: '发布单位' }
],
modalTitle: '出库',
formObj: {
name: '',
warehouse: '',
type: '',
remark: '',
inStocker: '',
inStockerId: '',
outStockReceiver: '',
outStockReceiverId: ''
},
options: [
{
name: '国家标准'
},
{
name: '地方标准'
},
{
name: '行业标准'
},
{
name: '企业标准'
}
],
typeData: [
{
name: '待检',
value: 0
},
{
name: '备样',
value: 1
},
{
name: '备用',
value: 2
}
],
ruleValidate: {
warehouse: [
{ 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: {
_getUser() {
const user = Global.getUserInfo()
this.formObj.outStocker = user.realname
this.formObj.outStockerId = user.id
this.formObj.outStockReceiver = user.realname
this.formObj.outStockReceiverId = user.id
console.log(user)
},
_selectStaff() {
this.userType = ''
this.$refs.userModal._open()
},
_selectoutStockReceiver() {
this.userType = 'outStockReceiver'
this.$refs.userModal._open()
},
_userData(data, msg, contractTempData) {
if (this.userType === 'outStockReceiver') {
this.formObj.outStockReceiver = data.realname
this.formObj.outStockReceiverId = data.id
} else {
this.formObj.outStocker = data.realname
this.formObj.outStockerId = data.id
}
console.log(data, msg)
},
_ctimeChange(data) {
this.formObj.outStock = data
},
_keepLimitTimeChange(data) {
this.formObj.keepLimitTime = data
},
/** *modal-footer */
_footerResult(name) {
switch (name) {
case '取消':
this._cancel()
break
case '确定':
this._ok()
break
}
},
_hideLoading() {
this.$refs.footerModal._hideLoading()
},
_resultChange(msg) {
this.showEditModal = false
this.$Message.success(msg)
this.$emit('on-result-change')
this._hideLoading()
},
_ok() {
this.$refs.formObj.validate(valid => {
if (valid) {
const data = this.$serialize('edit-form')
console.log(data)
data.ids = this.id
data.entrustCode = '1564980847'
this._outstockSubmit(data)
} else {
this.$Message.error('表单验证失败!')
this._hideLoading()
}
})
},
_outstockSubmit: async function(data) {
const result = await soilSample.outStorageSubmit(data)
if (result) {
this._resultChange('成功出库')
}
},
_save: async function(data) {
const result = await soilSample.aloneWarehouseLocationAdd(data)
if (result) {
this._resultChange('添加成功!')
}
},
_edit: async function(data) {
const result = await soilSample.aloneWarehouseLocationEdit(data)
if (result) {
this._resultChange('编辑成功!')
}
},
_cancel() {
this._hideLoading()
this.showEditModal = false
},
_open(ids) {
this.formId = this.$randomCode()
this._hideLoading()
this.$refs.formObj.resetFields()
this.id = ids.join(',')
this._getUser()
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>
<div>
<Modal v-model="showDetailModal" v-drag :width="700" title="人员信息" class="modal-footer-none">
<div :style="{height}" style="overflow-y: auto">
<table class="tableClass">
<tbody>
<tr>
<th colspan="6" class="tableClass_back">人员信息</th>
</tr>
<tr>
<th>姓名</th>
<td>{{obj.realname}}</td>
<th>联系方式</th>
<td>{{obj.mobile}}</td>
</tr>
</tbody>
</table>
</div>
</Modal>
</div>
</template>
<script>
/**
* 政府委托信息表详情
*/
export default {
data() {
return {
obj: {
firsted: 0,
client: '',
boreholeLocation: '',
boreholeName: '',
waterDepth: '',
tabulater: '',
testType: ''
},
showDetailModal: false,
dispose: '',
height: '',
showMoney: false
}
},
methods: {
_open(obj, flag) {
console.log('obj', obj)
this.showDetailModal = true
this.obj = obj.records[0]
if (flag === 'showMoney') {
this.showMoney = true
} else {
this.showMoney = false
}
this.height = '350px'
}
}
}
</script>
<!--检测项目编辑列表(添加、导入检测项目)-->
<template>
<div>
<Modal
v-model="showModal"
:mask-closable="false"
:width="690"
@on-cancel="_cancel"
title="检测项目管理"
>
<Row>
<!--正常界面-->
<Col span="24">
<PTVXETable ref="pageTable" :loading="true"
:get-page="getPage" :icon-msg="iconMsg" @on-result-change="_tableResultChange" select-data>
<vxe-table-column
v-for="item in pageColumns"
:key="item.key"
:field="item.key"
:title="item.title"
:min-width="item.width?item.width:200"
:fixed="item.fixed?item.fixed:undefined" sortable>
<template slot-scope="scope">
<span v-if="item.key==='judged'">
{{ scope.row[item.key]===1?'是':'否' }}
</span>
<div v-else-if="item.key==='compareSymbol'" @click.stop="_handleRow(scope)">
<el-input
v-model="scope.row.compareSymbol"
placeholder="请输入比较符"
/>
</div>
<div v-else-if="item.key==='limitValue'" @click.stop="_handleRow(scope)">
<el-input
v-model="scope.row.limitValue"
placeholder="请输入限值"
/>
</div>
<div v-else-if="item.key==='unit'" @click.stop="_handleRow(scope)">
<el-input
v-model="scope.row.unit"
placeholder="请输入单位"
/>
</div>
<div v-else-if="item.key==='code'" @click.stop="_handleRow(scope)">
<el-input
v-model="scope.row.code"
style="width: 130px;"
blur
placeholder="请选择检测依据"
/>
<i @click.stop="_selectjudgeBasis(scope.$index)" style="cursor: pointer;font-size: 14px;" class="icons iconfont pt-search icon-search"></i>
</div>
<span v-else>
{{ scope.row[item.key] }}
</span>
</template>
</vxe-table-column>
</PTVXETable>
</Col>
</Row>
<div slot="footer">
<modal-footer ref="footerModal" :footer="footerList" @on-result-change="_footerResult" />
</div>
</Modal>
</div>
</template>
<script>
import { soilEntrust } from '../../../api'
export default {
components: {},
data() {
return {
formObj: {
catalogueId: '',
name: '',
code: '',
standardCode: '',
standardName: ''
},
showModal: false,
searchOpen: false,
btn: [],
index: '',
iconMsg: [
{
type: 'md-trash',
id: '',
name: '删除'
}
],
footerList: [
{ id: '', name: '取消', type: '' },
{ id: '', name: '保存', type: 'primary' }
],
pageColumns: [
{ title: '试验名称', key: 'name', width: 140 },
{ title: '大类', key: 'mainType', width: 140 },
{ title: '小类', key: 'smallType', width: 140 },
{ title: '方法', key: 'testMethod', width: 180 }
],
catalogueId: '',
itemList: {
records: []
},
getPage: {
records: []
},
selectData: [],
originalList: []
}
},
methods: {
_open(expList) {
this.formObj = this.$resetFields(this.formObj)
this.showModal = true
this.getPage.records = expList
this.selectData = []
console.log(expList)
this.$refs.pageTable._clearSelection()
// this.formObj.sampleId = id
// this.$refs.pageTable._hideLoading()
// if (catalogueId) {
// this._page()
// }
},
_handleRow(scope) {
console.log(scope)
},
_selectjudgeBasis(index) {
console.log(index)
this.index = index
this.$refs.EditModal._open()
},
_formSearch() {
this.$refs.pageTable._pageChange(1)
},
_footerResult(name) {
switch (name) {
case '取消':
this._cancel()
break
case '保存':
this._saveCatalogueItem()
break
}
},
_page: async function() {
// this.$refs.pageTable._page('search-form-package', 'FoodJudgeBasis/page')
Object.assign(this.formObj, this.$refs.pageTable._searchParams())
const result = await soilEntrust.pageItem(
this.$serializeForm(this.formObj)
)
if (result) {
console.log(result)
this.getPage = result
this.$refs.pageTable._hideLoading()
}
},
_btnClick(msg) {
switch (msg) {
case '导入检测项目':
this.$refs.relItemModal._open(this.catalogueId)
break
}
},
// 操作列操作
_iconClick(res, data) {
switch (res) {
case '删除':
this._deleteById(data.id, data.index)
break
}
},
// 删除
_deleteById(id, index) {
this.$Modal.confirm({
title: '提示',
content: '确定删除该数据?',
onOk: () => {
this._deleteOk(id, index)
}
})
},
_deleteOk: async function(id, index) {
if (id) {
const result = await soilEntrust.experimentDeleteById(id)
if (result) {
this.$Message.success('删除成功')
this.getPage.records.splice(index, 1)
}
} else {
this.$Message.success('成功删除')
this.getPage.records.splice(index, 1)
}
},
// table结果 返回整行
_tableResultChange(msg, data) {
switch (msg) {
case 'selectData':
this.selectData = data
break
case 'iconClick':
this._iconClick(data.name, data.rowData)
break
case 'changeSize':
this._page()
}
},
_ok() {
const expNames = []
for (let i = 0; i < this.getPage.records.length; i++) {
expNames.push(this.getPage.records[i].name)
}
const data = expNames
this._saveCatalogueItem(data)
},
_saveCatalogueItem(data) {
this.showModal = false
this.$emit('on-result-change', this.getPage.records)
this._hideLoading()
console.log(this.getPage.records)
},
_cancel() {
this.selectData = []
this.showModal = false
this.$emit('on-result-change', this.getPage.records)
},
_visibleChange() {
const data = this.itemList.records
this._saveCatalogueItem(data)
this.selectData = []
this.showModal = false
},
_hideLoading() {
this.$refs.footerModal._hideLoading()
}
}
}
</script>
<!--检测项目编辑列表(添加、导入检测项目)-->
<template>
<div>
<Modal
v-model="showModal"
:mask-closable="false"
:width="690"
@on-cancel="_cancel"
title="检测项目管理"
>
<Row>
<!-- 表格 -->
<Col span="24">
<PTVXETable ref="pageTable" :loading="true"
:get-page="itemList" :icon-msg="iconMsg" @on-result-change="_tableResultChange" hide-page="true" select-data>
<vxe-table-column
v-for="item in pageColumns"
:key="item.key"
:field="item.key"
:title="item.title"
:min-width="item.width?item.width:200"
:fixed="item.fixed?item.fixed:undefined" sortable>
<template slot-scope="scope">
<span v-if="item.key==='judged'">
{{ scope.row[item.key]===1?'是':'否' }}
</span>
<div v-else-if="item.key==='compareSymbol'" @click.stop="_handleRow(scope)">
<el-input
v-model="scope.row.compareSymbol"
placeholder="请输入比较符"
/>
</div>
<div v-else-if="item.key==='limitValue'" @click.stop="_handleRow(scope)">
<el-input
v-model="scope.row.limitValue"
placeholder="请输入限值"
/>
</div>
<div v-else-if="item.key==='unit'" @click.stop="_handleRow(scope)">
<el-input
v-model="scope.row.unit"
placeholder="请输入单位"
/>
</div>
<div v-else-if="item.key==='code'" @click.stop="_handleRow(scope)">
<el-input
v-model="scope.row.code"
style="width: 130px;"
blur
placeholder="请选择检测依据"
/>
<i @click.stop="_selectjudgeBasis(scope.$index)" style="cursor: pointer;font-size: 14px;" class="icons iconfont pt-search icon-search"></i>
</div>
<span v-else>
{{ scope.row[item.key] }}
</span>
</template>
</vxe-table-column>
</PTVXETable>
</Col>
</Row>
<div slot="footer">
<modal-footer ref="footerModal" :footer="footerList" @on-result-change="_footerResult" />
</div>
</Modal>
</div>
</template>
<script>
import { soilAptitude } from '../../../api'
export default {
components: {},
data() {
return {
formObj: {
catalogueId: '',
name: '',
code: '',
standardCode: '',
standardName: ''
},
showModal: false,
searchOpen: false,
btn: [],
index: '',
iconMsg: [
{
type: 'md-trash',
id: '',
name: '删除'
}
],
footerList: [
{ id: '', name: '取消', type: '' },
{ id: '', name: '保存', type: 'primary' }
],
pageColumns: [
{ title: '试验名称', key: 'name', width: 140 },
{ title: '大类', key: 'mainType', width: 140 },
{ title: '小类', key: 'smallType', width: 140 },
{ title: '方法', key: 'testMethod', width: 180 }
],
catalogueId: '',
itemList: {
records: []
},
selectData: [],
originalList: []
}
},
methods: {
_open(itemList) {
this.itemList.records = []
this.formObj = this.$resetFields(this.formObj)
this.showModal = true
this.itemList.records = itemList
this.$refs.pageTable._hideLoading()
this.$refs.pageTable._clearSelection()
// if (catalogueId) {
// this._page()
// }
},
_handleRow(scope) {
console.log(scope)
},
_selectjudgeBasis(index) {
console.log(index)
this.index = index
this.$refs.EditModal._open()
},
_formSearch() {
console.log(this.formObj.name)
const searchItem = []
for (let i = 0; i < this.itemList.records.length; i++) {
if (this.itemList.records[i].name === this.formObj.name) {
console.log(this.itemList.records[i])
searchItem.push(this.itemList.records[i])
}
}
this.itemList.records = searchItem
},
_footerResult(name) {
switch (name) {
case '取消':
this._cancel()
break
case '保存':
this._ok()
break
}
},
_page: async function() {
// this.$refs.pageTable._page('search-form-package', 'FoodJudgeBasis/page')
Object.assign(this.formObj, this.$refs.pageTable._searchParams())
const result = await soilAptitude.page(this.$serializeForm(this.formObj))
if (result) {
console.log(result)
this.getPage = result
this.$refs.pageTable._hideLoading()
}
},
_btnClick(msg) {
switch (msg) {
case '导入检测项目':
this.$refs.relItemModal._open(this.catalogueId)
break
}
},
// 操作列操作
_iconClick(res, data) {
switch (res) {
case '删除':
this.itemList.records.splice(data.index, 1)
break
}
},
// 删除
_deleteById(id) {
this.$Modal.confirm({
title: '提示',
content: '确定删除该数据?',
onOk: () => {
this._deleteOk(id)
}
})
},
_deleteOk(id) {
// const result = await drugCatalogueItem.deleteById(id)
this.itemList.splice(id, 1)
this.getPage.records = this.itemList
this.$Message.success('已删除')
},
// table结果 返回整行
_tableResultChange(msg, data) {
switch (msg) {
case 'selectData':
this.selectData = data
break
case 'iconClick':
this._iconClick(data.name, data.rowData)
break
}
},
_ok() {
const data = this.itemList.records
this._saveCatalogueItem(data)
},
_saveCatalogueItem(data) {
this.showModal = false
this.$emit('on-result-change', data)
this._hideLoading()
},
_cancel() {
const data = this.itemList.records
this._saveCatalogueItem(data)
this.selectData = []
this.showModal = false
},
_visibleChange() {
const data = this.itemList.records
this._saveCatalogueItem(data)
this.selectData = []
this.showModal = false
},
_hideLoading() {
this.$refs.footerModal._hideLoading()
}
}
}
</script>
<template>
<div>
<Modal v-model="showDetailModal" v-drag :width="700" title="人员信息" class="modal-footer-none">
<div :style="{height}" style="overflow-y: auto">
<table class="tableClass">
<tbody>
<tr>
<th colspan="6" class="tableClass_back">人员信息</th>
</tr>
<tr>
<th>接收人</th>
<td>{{obj.receiver}}</td>
<th>接收日期</th>
<td>{{$dateformat(obj.receiveTime,'yyyy-mm-dd')}}</td>
</tr>
<tr>
<th>项目名称</th>
<td>{{obj.projectName}}</td>
<th>项目负责人</th>
<td>{{obj.projectLeader}}</td>
</tr>
<tr>
<th>钻孔名称</th>
<td>{{obj.boreholeName}}</td>
<th>箱数</th>
<td>{{obj.casesNum}}</td>
</tr>
<tr>
<th>登记人</th>
<td>{{obj.registrant}}</td>
<th>登记日期</th>
<td>{{$dateformat(obj.registTime,'yyyy-mm-dd')}}</td>
</tr>
</tbody>
</table>
</div>
</Modal>
</div>
</template>
<script>
/**
* 政府委托信息表详情
*/
export default {
data() {
return {
obj: {
firsted: 0,
client: '',
boreholeLocation: '',
boreholeName: '',
waterDepth: '',
tabulater: '',
testType: ''
},
showDetailModal: false,
dispose: '',
height: '',
showMoney: false
}
},
methods: {
_open(obj, flag) {
this.showDetailModal = true
this.obj = obj
console.log('obj', obj)
if (flag === 'showMoney') {
this.showMoney = true
} else {
this.showMoney = false
}
this.height = '350px'
}
}
}
</script>
<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="90" v-show="searchOpen" inline onsubmit="return false">
<label class="label-sign"></label>
<Form-item class="search-item" label="库房号:">
<Input @on-enter="_formSearch" v-model="formObj.warehouse" name="warehouse" 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?'备用': ''}}
</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>
<!--组件加载-->
<ViewSample ref="viewSample"></ViewSample>
<StandardsManageEdit ref="editModal" @on-result-change="_page"></StandardsManageEdit>
</div>
</template>
<script>
import { soilSample } from '../../../api'
import StandardsManageEdit from './AddressManageEdit' // 添加、编辑
import ViewSample from './ViewLocationEntrust'
export default {
components: {
StandardsManageEdit,
ViewSample
},
data() {
return {
currentComponent: '',
formObj: {
code: undefined,
name: undefined
},
btn: [
{
type: 'success',
id: '',
name: '添加',
componentName: 'StandardsManageEdit'
},
{ type: 'error', id: '', name: '删除' }
],
// 表格
pageColumns: [
{ title: '库房号', key: 'warehouse' },
{ title: '货架号', key: 'name' },
{ title: '位置分类', key: 'type' },
{ title: '位置管理人', key: 'manager' },
{ title: '备注说明', key: 'remark' }
],
// 操作
iconMsg: [
{
type: 'md-create',
id: '',
name: '编辑',
componentName: 'StandardsManageEdit'
},
{
type: 'md-apps',
id: '',
name: '查看试样'
},
{ type: 'md-remove-circle', id: '', name: '删除' }
],
searchOpen: false,
getPage: {},
// 选中的内容
selectIds: []
}
},
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._viewSample(data.name)
break
case '删除':
this._deleteById(data.id)
break
}
})
},
_viewSample(data) {
this.$refs.viewSample._open(data)
},
_editModal: async function(edit, id) {
if (edit) {
const result = await soilSample.aloneWarehouseLocationGetById(id)
if (result) {
this.$refs.editModal._open(result)
}
} else {
// 添加
this.$refs.editModal._open()
}
},
// 获取数据
_page: async function() {
Object.assign(this.formObj, this.$refs.pageTable._searchParams())
const result = await soilSample.aloneWarehouseLocation(
this.$serializeForm(this.formObj)
)
if (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: () => {
this._delOk(ids)
}
})
},
_delOk: async function(ids) {
const result = await soilSample.aloneWarehouseLocationDelete(ids)
if (result) {
this._page()
this.$Modal.remove()
this.$Message.success('删除成功')
}
},
// 表格内容
_tableResultChange(msg, data) {
switch (msg) {
case 'page':
this._page()
break
case 'selectIds':
this.selectIds = data
break
case 'iconClick':
this._iconClick(data.name, data.rowData, data.componentName)
break
case 'changeSize':
this._page()
break
}
}
}
}
</script>
<template>
<div>
<Modal v-model="showEditModal" v-drag :mask-closable="false" :width="500" class="zIndex-1200">
<p slot="header">{{modalTitle}}</p>
<div>
<Form id="edit-form" ref="formObj" :model="formObj" :rules="ruleValidate" :label-width="100" inline>
<Form-item label="库房号" prop="warehouse" style="width: 100%">
<Input v-model="formObj.warehouse" name="warehouse" placeholder="请输入库房号"/>
</Form-item>
<Form-item label="货架号" prop="name" style="width: 100%">
<Input v-model="formObj.name" name="name" placeholder="请输入货架号"/>
</Form-item>
<Form-item label="位置分类:" prop="type" style="width: 100%">
<Select v-model="formObj.type" clearable name="type" placeholder="请选择类别">
<Option v-for="(item,index) in typeData" :value="item.value" :key="index">{{item.name}}</Option>
</Select>
</Form-item>
<Form-item label="位置管理人" prop="manager" style="width: 100%">
<Input v-model="formObj.manager" @click.native="_selectStaff" name="manager" readonly/>
</Form-item>
<Form-item prop="managerId" style="width: 100%;display: none">
<Input v-model="formObj.managerId" @click.native="_selectStaff" name="managerId" readonly/>
</Form-item>
<Form-item label="备注说明" prop="remark" style="width: 100%">
<Input v-model="formObj.remark" name="remark" placeholder="请输入备注说明"/>
</Form-item>
</Form>
</div>
<div slot="footer">
<ModalFooter ref="footerModal" @on-result-change="_footerResult" :footer="footerList"></ModalFooter>
</div>
</Modal>
<UserInfo ref="userModal" @on-result-change="_userData" is-change></UserInfo>
</div>
</template>
<script>
/**
* 添加编辑
*/
import ModalFooter from '../../../components/base/modalFooter'
import { soilSample } from '../../../api'
import Global from '../../../api/config'
import UserInfo from '../../../components/user-info-single/assignPerson'
export default {
components: {
ModalFooter,
UserInfo
},
data() {
return {
formId: '',
lengthLimitList: [
{ key: 'stdNum', title: '标准号' },
{ key: 'enName', title: '英文名称' },
{ key: 'belongUnit', title: '归口单位' },
{ key: 'publishUnit', title: '发布单位' }
],
modalTitle: '收样位置选择',
formObj: {
name: '',
warehouse: '',
type: '',
remark: '',
manager: '',
managerId: ''
},
options: [
{
name: '国家标准'
},
{
name: '地方标准'
},
{
name: '行业标准'
},
{
name: '企业标准'
}
],
typeData: [
{
name: '待检',
value: 0
},
{
name: '备样',
value: 1
},
{
name: '备用',
value: 2
}
],
ruleValidate: {
warehouse: [
{ 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: {
_getUser() {
const user = Global.getUserInfo()
this.formObj.manager = user.realname
this.formObj.managerId = user.id
console.log(user)
},
_selectStaff() {
this.$refs.userModal._open()
},
_userData(data, msg, contractTempData) {
this.formObj.manager = data.realname
this.formObj.managerId = data.id
console.log(data, msg)
},
/** *modal-footer */
_footerResult(name) {
switch (name) {
case '取消':
this._cancel()
break
case '保存':
this._ok()
break
}
},
_hideLoading() {
this.$refs.footerModal._hideLoading()
},
_resultChange(msg) {
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')
if (this.$string(this.formObj.id).isEmpty()) {
// 添加
console.log('data', data)
this._save(data)
} else {
// 编辑
this._edit({ id: this.formObj.id, obj: data })
}
} else {
this.$Message.error('表单验证失败!')
this._hideLoading()
}
})
},
_save: async function(data) {
const result = await soilSample.aloneWarehouseLocationAdd(data)
if (result) {
this._resultChange('添加成功!')
}
},
_edit: async function(data) {
const result = await soilSample.aloneWarehouseLocationEdit(data)
if (result) {
this._resultChange('编辑成功!')
}
},
_cancel() {
this._hideLoading()
this.showEditModal = false
},
_open(formObj) {
this.formId = this.$randomCode()
this._hideLoading()
this.$refs.formObj.resetFields()
if (this.$string(formObj).isEmpty()) {
this.modalTitle = '添加'
this.formObj.id = ''
this._getUser()
} else {
this.formObj = formObj
this.formObj.id = formObj.id
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>
<div>
<Modal v-model="showModal" v-drag width="1030" class="modal-footer-none">
<p slot="header">
{{ modalTitle }}
</p>
<div>
<!--内容-->
<Row>
<!--查询-->
<Col span="24">
<Form v-show="searchOpen" id="search-sample-company" :label-width="80" inline onsubmit="return false">
<label class="label-sign"></label>
<Form-item label="委托编号:" class="search-item">
<Input v-model="formObj.entrustCode" placeholder="请输入委托编号" clearable @on-enter="_formSearch" />
</Form-item>
<Form-item class="search-btn">
<Button type="primary" @click="_page">
搜索
</Button>
</Form-item>
</Form>
</Col>
<!--操作-->
<Col span="24">
<btn-list :msg="btn" :open="searchOpen" class="contHide" show-search-btn="true" @on-result-change="_btnClick"></btn-list>
</Col>
<!-- 表格 -->
<Col span="24">
<PTVXETable ref="pageTable" :table-height="tableHeight" :form-id="formId" :loading="true"
:get-page="getPage" :icon-msg="iconMsg" select-data @on-result-change="_tableResultChange">
<vxe-table-column
v-for="item in pageColumns"
:key="item.key"
:field="item.key"
:title="item.title"
:width="item.width?item.width:200"
:fixed="item.fixed?item.fixed:undefined" sortable>
<template slot-scope="scope">
<div v-if="item.status">
{{ scope.row[item.key].display }}
</div>
<div v-else-if="item.date">
{{ scope.row[item.key]?$dateformat(scope.row[item.key],'yyyy-mm-dd'):'' }}
</div>
<span v-else>
{{ scope.row[item.key] }}
</span>
</template>
</vxe-table-column>
</PTVXETable>
</Col>
</Row>
</div>
<div slot="footer">
<modal-footer ref="footerModal" :footer="footerList" @on-result-change="_footerResult" />
</div>
</Modal>
<SoilSampleItemManage ref="sampleItemManage" @on-result-change="_page"></SoilSampleItemManage>
</div>
</template>
<script>
import { soilEntrust } from '../../../api'
import SoilSampleItemManage from './ViewSample'
export default {
components: { SoilSampleItemManage },
data() {
return {
formId: 'soilSampleManage',
currentComponent: '',
btn: [
// {
// type: 'success',
// id: '',
// name: '导入检测项目'
// }
// {
// type: 'success',
// id: '',
// name: '导入检测项目包'
// },
// {
// type: 'success',
// id: '',
// name: '打印标签'
// }
],
itemList: [],
indexList: [],
footerList: [
{ id: '', name: '取消', type: '' },
{ id: '', name: '确定', type: 'primary' }
],
iconMsg: [
{
type: 'ios-beaker',
id: '',
name: '查看试样'
}
],
contractId: '', // 委托id
showModal: false,
searchOpen: true,
modalTitle: '管理样品',
selectIds: [],
selectData: {},
getPage: {},
pageColumns: [
{ title: '委托商', key: 'client', width: 230 },
{ title: '委托编号', key: 'entrustCode', width: 120 },
{ title: '委托日期', key: 'entrustDate', width: 120, date: true },
{ title: '钻孔位置', key: 'boreholeLocation', width: 120 },
{ title: '水深(米)', key: 'waterDepth', width: 120 },
{ title: '钻孔名称', key: 'boreholeName', width: 120 },
{ title: '进度', key: 'progress', width: 120, status: true },
{ title: '平均容重', key: 'projectNo', width: 120 },
{ title: '检验类别', key: 'testType', width: 120 }
],
formObj: {
receiveLocation: undefined,
entrustCode: undefined,
client: undefined
},
receiveLocation: ''
}
},
computed: {
tableHeight: function() {
return this.$tableHeight('tableModal')
}
},
methods: {
_footerResult(name) {
switch (name) {
case '取消':
this._cancel()
break
case '确定':
this._ok()
break
}
},
_cancel() {
this.showModal = false
},
_ok() {
this.showModal = false
this.$refs.footerModal._hideLoading()
console.log(this.getPage)
},
_dateChange(data) {
this.formObj.ctimeBegin = data[0]
this.formObj.ctimeEnd = data[1]
},
_btnClick(msg, componentName) {
this.currentComponent = componentName
this.$nextTick(function() {
switch (msg) {
case '添加':
this._editModal(false)
break
case '删除':
this._deleteSelected()
break
case 'search':
this.searchOpen = !this.searchOpen
break
}
})
},
_copyHisSample() {
this.$refs.refModal._open(this.contractId)
},
_iconClick(res, data, componentName, index) {
this.currentComponent = componentName
this.$nextTick(function() {
switch (res) {
case '查看试样':
this._itemManage(data.id)
break
case '编辑':
this._editModal(true, data)
break
case '复制':
this._copy(data)
break
case '删除':
console.log(index)
this._deleteById(data.id)
break
}
})
},
_itemManage(data) {
this.$refs.sampleItemManage._open(data, this.receiveLocation)
},
_tableResultChange(msg, data) {
const selectIds = []
switch (msg) {
case 'selectData':
for (let i = 0; i < data.length; i++) {
selectIds.push(data[i].id)
}
this.selectIds = selectIds
this.selectData = data
break
case 'allSelect':
this.allSelect(data)
break
case 'iconClick':
this._iconClick(data.name, data.rowData)
break
case 'changeSize':
this._page()
break
}
},
_open(name) {
this.formObj = this.$resetFields(this.formObj)
this.formObj.receiveLocation = name
this.receiveLocation = name
this.showModal = true
this.$refs.pageTable._hideLoading()
this._page()
},
_formSearch() {
this.$refs.pageTable._pageChange(1)
},
_page: async function() {
Object.assign(this.formObj, this.$refs.pageTable._searchParams())
this.formObj.entrustId = this.contractId
const result = await soilEntrust.pageLocationEntrust(
this.$serializeForm(this.formObj)
)
if (result) {
this.$refs.pageTable._hideLoading()
this.getPage = result
}
},
_deleteByIds(ids, content) {
this.$Modal.confirm({
title: '提示',
content: content || '确定删除该记录?',
onOk: () => {
this._deleteOk(ids)
}
})
},
_deleteById(id) {
// 删除一条记录
this._deleteByIds([id])
},
_deleteSelected() {
// 批量删除
const ids = this.selectIds
if (ids.length === 0) {
this.$Message.warning('请选择一条或多条数据!')
} else {
this._deleteByIds(ids, '确定删除 ' + ids.length + ' 条记录?')
}
},
_editModal(edit, data) {
if (edit) {
console.log(data)
this.$refs.sampleManageEdit._open(data)
} else {
// 添加
this.$refs.refModal._open('', this.contractId)
}
},
_search() {
this._page()
},
_resultChange(msg) {
this._page()
this.$Message.success(msg)
},
_operationRecord(id) {
// 操作日志
this.$refs.recordModal._open(id)
}
}
}
</script>
<template>
<div>
<Modal v-model="showModal" v-drag width="980" class="modal-footer-none">
<p slot="header">
{{ modalTitle }}
</p>
<div>
<!--内容-->
<Row>
<!--查询-->
<Col span="24">
<Form id="search-sample-company" v-show="searchOpen" :label-width="80" inline onsubmit="return false">
<label class="label-sign"></label>
<Form-item label="试样编号:" class="search-item">
<Input v-model="formObj.sampleCode" @on-enter="_formSearch" placeholder="请输入样品编号" clearable />
</Form-item>
<Form-item class="search-btn">
<Button @click="_page" type="primary">
搜索
</Button>
</Form-item>
</Form>
</Col>
<!--操作-->
<Col span="24">
<btn-list :msg="btn" :open="searchOpen" @on-result-change="_btnClick" class="contHide" show-search-btn="true"></btn-list>
</Col>
<!-- 表格 -->
<Col span="24">
<PTVXETableHeight ref="pageTable" :rows="500" :table-height="tableHeight" :form-id="formId" :loading="true"
:get-page="getPage" :icon-msg="iconMsg" @on-result-change="_tableResultChange" select-data>
<vxe-table-column
v-for="item in pageColumns"
:key="item.key"
:field="item.key"
:title="item.title"
:width="item.width?item.width:200"
:fixed="item.fixed?item.fixed:undefined" sortable>
<template slot-scope="scope">
<div v-if="item.status">
{{ scope.row[item.key].display }}
</div>
<div v-else-if="item.date">
{{ scope.row[item.key]?$dateformat(scope.row[item.key],'yyyy-mm-dd'):'' }}
</div>
<div v-else>
{{ scope.row[item.key] }}
</div>
</template>
</vxe-table-column>
</PTVXETableHeight>
</Col>
</Row>
</div>
<div slot="footer">
<modal-footer ref="footerModal" :footer="footerList" @on-result-change="_footerResult" />
</div>
</Modal>
</div>
</template>
<script>
import { soilSample } from '../../../api'
export default {
components: {},
data() {
return {
formId: 'soilSampleManage',
currentComponent: '',
btn: [
{
type: 'error',
id: '',
name: '批量删除'
}
],
iconMsg: [{ type: 'md-trash', id: '', name: '删除' }],
itemList: [],
indexList: [],
footerList: [
{ id: '', name: '取消', type: '' },
{ id: '', name: '确定', type: 'primary' }
],
entrustId: '', // 委托id
showModal: false,
recordHis: false,
searchOpen: true,
modalTitle: '管理样品',
selectIds: [],
selectData: {},
getPage: {},
pageColumns: [
{ title: '试样编号', key: 'sampleCode', width: 100, fixed: 'left' },
{ title: '试样深度', key: 'sampleDepth', width: 100 },
{ title: '现场编号', key: 'siteNo', width: 100 },
{ title: '委托编号', key: 'entrustCode', width: 100 },
{ title: '收样位置', key: 'receiveLocation', width: 100 },
{ title: '土质描述', key: 'sampleDescribe', width: 160 },
{ title: '土质描述详情', key: 'describeDetail', width: 160 },
{ title: '样品包装类型', key: 'samplePack', width: 120 }
],
sampleId: '',
dateList: [],
formObj: {
receiveLocation: undefined,
entrustId: undefined
}
}
},
computed: {
tableHeight: function() {
if (this.searchOpen) {
return this.$tableHeight('search')
} else {
return this.$tableHeight('noSearch')
}
}
},
methods: {
_handleRow(data) {
this.currentRow = data.row
this.currentIndex = data.rowIndex
},
_footerResult(name) {
switch (name) {
case '取消':
this._cancel()
break
case '确定':
this._ok()
break
}
},
_cancel() {
this.showModal = false
},
_ok() {
this.showModal = false
this.$refs.footerModal._hideLoading()
console.log(this.getPage)
},
_btnClick(msg, componentName) {
this.currentComponent = componentName
this.$nextTick(function() {
switch (msg) {
case '批量删除':
this._deleteSelected()
break
case 'search':
this.searchOpen = !this.searchOpen
break
}
})
},
_iconClick(res, data, componentName, index) {
this.currentComponent = componentName
this.$nextTick(function() {
switch (res) {
case '删除':
this._deleteById(data.id)
break
}
})
},
_tableResultChange(msg, data) {
const selectIds = []
switch (msg) {
case 'selectData':
for (let i = 0; i < data.length; i++) {
selectIds.push(data[i].id)
}
this.selectIds = selectIds
this.selectData = data
break
case 'allSelect':
this.allSelect(data)
break
case 'iconClick':
this._iconClick(data.name, data.rowData)
break
case 'changeSize':
this._page()
break
}
},
allSelect(data) {
this.indexList = []
for (let i = 0; i < data.length; i++) {
this.indexList.push(data[i].index)
}
console.log('索引', this.indexList)
},
_open(id, name) {
this.formObj = this.$resetFields(this.formObj)
this.dateList = []
this.showModal = true
this.formObj.entrustId = id // 委托id
this.formObj.receiveLocation = name // 委托id
this.$refs.pageTable._hideLoading()
this._page()
},
_formSearch() {
this.$refs.pageTable._pageChange(1)
},
_page: async function() {
Object.assign(this.formObj, this.$refs.pageTable._searchParams())
const result = await soilSample.pageLocationSample(this.formObj)
if (result) {
this.$refs.pageTable._hideLoading()
this.getPage = result
}
},
_deleteByIds(ids, content) {
this.$Modal.confirm({
title: '提示',
content: content || '确定删除该记录?',
onOk: () => {
this._deleteOk(ids)
}
})
},
_deleteById(id) {
// 删除一条记录
this._deleteByIds([id])
},
_deleteSelected() {
// 批量删除
const ids = this.selectIds
if (ids.length === 0) {
this.$Message.warning('请选择一条或多条数据!')
} else {
this._deleteByIds(ids, '确定删除 ' + ids.length + ' 条记录?')
}
},
_deleteOk: async function(ids) {
const result = await soilSample.removeSampleFromLocation({
ids: ids.join(',')
})
if (result) {
this.$Message.success('成功移除')
this._page()
}
// const result = await drugCatalogueItem.deleteById(id)
},
// 添加编辑模拟样品
_search() {
this._page()
},
_resultChange(msg) {
this.$Message.success(msg)
this._page()
}
}
}
</script>
<template>
<div>
<div class="layout-content-padding">
<div class="layout-content-main">
<el-tabs v-model="activeName" @tab-click="_changeTabs">
<el-tab-pane label="待完成" name="wait"></el-tab-pane>
<el-tab-pane label="历史记录" name="his"></el-tab-pane>
</el-tabs>
<keep-alive>
<!-- eslint-disable-next-line vue/require-component-is -->
<component ref="refModal" :is="currentComponent"></component>
</keep-alive>
</div>
</div>
</div>
</template>
<script>
import MeterSendEntrust from './EntrustRegister'
import MeterSendEntrustHis from './EntrustRegisterHis'
export default {
name: 'MeterSendEntrustIndex',
components: {
// eslint-disable-next-line vue/no-unused-components
MeterSendEntrust,
// eslint-disable-next-line vue/no-unused-components
MeterSendEntrustHis
},
data() {
return {
activeName: 'wait',
currentComponent: ''
}
},
mounted() {
this.activeName = 'wait'
this.currentComponent = 'MeterSendEntrust'
this.$nextTick(() => {
this.$refs.refModal._page()
})
},
methods: {
_changeTabs(tab, event) {
if (tab.name === 'wait') {
this.currentComponent = 'MeterSendEntrust'
this.$nextTick(() => {
this.$refs.refModal._page()
})
} else {
this.currentComponent = 'MeterSendEntrustHis'
this.$nextTick(() => {
this.$refs.refModal._page()
})
}
}
}
}
</script>
<style scoped>
</style>
<template>
<div>
<!--内容-->
<div class="layout-content-padding">
<div class="layout-content-main">
<Row>
<!--查询-->
<Col span="24" style="margin-top: 10px">
<Form id="formId" v-show="searchOpen" :label-width="90" inline onsubmit="return false">
<label class="label-sign"></label>
<Form-item class="search-item" label="委托编号:">
<Input v-model="formObj.entrustCode" @on-enter="_formSearch" name="entrustCode" placeholder="请输入委托编号" clearable/>
</Form-item>
<Form-item class="search-item" label="项目名称:">
<Input v-model="formObj.projectName" @on-enter="_formSearch" name="projectName" 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" :show-search-btn="true" @on-result-change="_btnClick"
class="contHide"></btn-list>
</Col>
<!--表格-->
<Col span="24">
<PTVXETable ref="pageTable" :table-height="tableHeight" :form-id="formId" :loading="true"
:get-page="getPage" :icon-msg="iconMsg" @on-result-change="_tableResultChange">
<vxe-table-column
v-for="item in pageColumns"
:key="item.key"
:field="item.key"
:title="item.title"
:min-width="item.width?item.width:200"
:fixed="item.fixed?item.fixed:undefined" sortable>
<template slot-scope="scope">
<span v-if="item.date">{{scope.row[item.key]?$dateformat(scope.row[item.key],'yyyy-mm-dd'):''}}</span>
<span v-else-if="item.status">{{scope.row[item.key].display}}</span>
<div v-else-if="item.detail">
<a @click.stop="_detailModal(scope.row)">{{ scope.row[item.key] }}</a>
</div>
<span v-else>{{scope.row[item.key]}}</span>
</template>
</vxe-table-column>
</PTVXETable>
</Col>
</Row>
</div>
</div>
<keep-alive>
<!-- eslint-disable-next-line vue/require-component-is -->
<component ref="refModal" :is="currentComponent" @on-result-change="_componentResult"></component>
</keep-alive>
</div>
</template>
<script>
import { soilEntrust, soilSample } from '../../api'
import Operation from '../../components/operation/Operation'
import importModal from '../../components/import/DownloadTemplateImport'
import EntrustRegisterEdit from './EntrustRegisterEdit'
import RegisterDetail from './RegisterDetail'
import ViewDetail from './ViewDetail'
export default {
components: {
// eslint-disable-next-line vue/no-unused-components
Operation,
// eslint-disable-next-line vue/no-unused-components
EntrustRegisterEdit,
// eslint-disable-next-line vue/no-unused-components
importModal,
// eslint-disable-next-line vue/no-unused-components
RegisterDetail,
// eslint-disable-next-line vue/no-unused-components
ViewDetail
},
data() {
return {
currentComponent: '',
formId: 'meterSubcontractorFormId',
searchOpen: false,
btn: [
{
type: 'success',
id: '',
name: '登记'
},
{
type: 'success',
id: '',
name: '提交'
}
],
iconMsg: [
{
type: 'md-create',
id: '',
name: '编辑'
},
{
type: 'ios-list',
id: '',
name: '查看'
},
{
type: 'md-cloud',
id: '',
name: '附件'
},
{
type: 'md-remove-circle',
id: '',
name: '删除'
}
],
formObj: {
client: undefined,
contractCode: undefined,
entrustCode: undefined
},
selectIds: [],
getPage: {},
pageColumns: [
{ title: '项目名称', key: 'projectName', width: 120 },
{ title: '项目负责人', key: 'projectLeader', width: 150, detail: true },
{ title: '钻孔名称', key: 'boreholeName', width: 120 },
{ title: '箱数', key: 'casesNum', width: 120 },
{ title: '登记日期', key: 'registTime', width: 120, date: true }
]
}
},
computed: {
tableHeight: function() {
if (this.searchOpen) {
return this.$tableHeight('search')
} else {
return this.$tableHeight('noSearch')
}
}
},
mounted() {},
methods: {
_btnClick(msg, componentName) {
this.currentComponent = componentName
this.$nextTick(function() {
switch (msg) {
case '试验委托单导入':
this._import()
break
case '登记':
this._editModal(false)
break
case '提交':
this._submitToInstock()
break
case 'search':
this.searchOpen = !this.searchOpen
break
}
})
},
_detailModal(data) {
console.log(data)
this._getUserInfo(data)
this.currentComponent = 'RegisterDetail'
},
_getUserInfo: async function(data) {
const result = await soilEntrust.getUserByGroupId({
realname: data.projectLeader,
id: data.projectLeaderId
})
if (result) {
this.$refs.refModal._open(result)
}
},
_import() {
this.currentComponent = 'importModal'
const data = {
importUrl: '/soil/v1/entrust/import_entrust/',
downloadUrl: '/soil/v1/excel/template/SoilEntrustImport',
title: '试验委托单导入'
}
this.$nextTick(() => {
this.$refs.refModal._open(data, '试验委托单导入')
})
},
_componentResult(msg, data) {
switch (this.currentComponent) {
case 'MeterSubcontractorEdit':
this._formSearch()
break
case 'DrugSampleManage':
this._formSearch()
break
case 'FileManage':
this._fileResult(msg, data)
break
default:
this._page()
}
},
_iconClick(res, data, componentName) {
this.currentComponent = componentName
this.$nextTick(function() {
switch (res) {
case '编辑':
this._editModal(true, data.id)
break
case '查看':
this._viewModal(true, data.id)
break
case '试样列表':
this._sampleManage(data.id)
break
case '试验项目列表':
this._itemManage(data.id)
break
case '附件':
this._upload(data.id)
break
case '删除':
this._deleteByIds([data.id])
break
case '操作日志':
this._record(data.id)
break
}
})
},
_sampleManage(data) {
// 管理样品
this.currentComponent = 'SoilSampleManage'
this.$nextTick(() => {
this.$refs.refModal._open(data)
})
},
_itemManage(data) {
// 管理样品
this.currentComponent = 'SoilSampleItemManage'
this.$nextTick(() => {
this.$refs.refModal._openByEntrustId(data)
})
},
_submitToInstock() {
this._submitByContractIds('出库')
},
_submitToSkipReview() {
const ids = this.selectIds
if (ids.length === 0) {
this.$Message.warning('请至少选择一条数据!')
} else {
this.$Modal.confirm({
title: '提示',
content: '确定要提交 ' + ids.length + ' 条记录?',
onOk: () => {
this.$refs.pageTable._showLoading()
this._subToSkipRe(ids)
}
})
}
},
_submitByContractIds(cont) {
const ids = this.selectIds
if (ids.length === 0) {
this.$Message.warning('请至少选择一条数据!')
} else {
this.$Modal.confirm({
title: '提示',
content: '确定要把这 ' + ids.length + ' 条记录提交到' + cont + '?',
onOk: () => {
this.$refs.pageTable._showLoading()
this._subToRe(ids)
}
})
}
},
_subToRe: async function(ids) {
const result = await soilEntrust.submitToInstock({ ids: ids.join(',') })
if (result) {
this._resultChange('提交成功')
}
},
_subToSkipRe: async function(ids) {
const result = await soilEntrust.submitSkipReview(ids)
if (result) {
this._resultChange('提交成功')
}
},
_resultChange(msg) {
this.$Message.success(msg)
this._page()
this.$refs.pageTable._hideLoading()
},
_record(id) {
this.currentComponent = 'Operation'
this.$nextTick(() => {
this.$refs.refModal._open(id)
})
},
_tableResultChange(msg, data) {
switch (msg) {
case 'selectIds':
this.selectIds = data
break
case 'iconClick':
this._iconClick(data.name, data.rowData, data.componentName)
break
case 'page':
this._page()
break
case 'changeSize':
this._page()
break
}
},
_page: async function() {
Object.assign(this.formObj, this.$refs.pageTable._searchParams())
const result = await soilSample.aloneSamplePage(
this.$serializeForm(this.formObj)
)
if (result) {
this.$refs.pageTable._hideLoading()
this.getPage = result
}
},
_formSearch() {
this.$refs.pageTable._pageChange(1)
},
// 删除
_deleteByIds(ids, content) {
this.$Modal.confirm({
title: '提示',
content: content || '确定删除该记录?',
onOk: () => {
this._delete(ids)
}
})
},
// 编辑&添加
_editModal(edit, id) {
this.currentComponent = 'EntrustRegisterEdit'
if (edit) {
this.$refs.pageTable._showLoading()
// 编辑
this._getById(id)
} else {
// 添加
this.$nextTick(() => {
this.$refs.refModal._open()
})
}
},
_viewModal(edit, id) {
this.currentComponent = 'ViewDetail'
if (edit) {
this.$refs.pageTable._showLoading()
// 编辑
this._getDetailById(id)
} else {
// 添加
this.$nextTick(() => {
this.$refs.refModal._open()
})
}
},
_getDetailById: async function(id) {
const result = await soilEntrust.aloneSampleGetById(id)
if (result) {
this.$refs.refModal._open(result)
this.$refs.pageTable._hideLoading()
} else {
this.$refs.pageTable._hideLoading()
}
},
_upload(id) {
// 上传文件
this.currentComponent = 'FileManage'
this.$nextTick(() => {
this.$refs.refModal._open(id, 'sampleId')
})
},
_getById: async function(id) {
const result = await soilEntrust.aloneSampleGetById(id)
if (result) {
this.$refs.refModal._openEdit(result)
this.$refs.pageTable._hideLoading()
} else {
this.$refs.pageTable._hideLoading()
}
},
_delete: async function(ids) {
const result = await soilEntrust.aloneSampleDelete(ids)
if (result) {
this._formSearch()
this.$Message.success('删除成功!')
}
}
}
}
</script>
<template>
<div>
<Modal v-model="showModal" :mask-closable="false" width="900">
<p slot="header">{{modalTitle}}</p>
<div>
<Form id="MeterSendTestEdit" ref="formObj" :model="formObj" :label-width="90" inline>
<!-- <Form-item label="委托商" prop="client" class="width-48">-->
<!-- <AutoComplete ref="autoInput" v-model="formObj.client" :down-data="customerData"-->
<!-- @on-result-change="_cusNameChange" name="client" placeholder="请输入或选择委托单位"-->
<!-- ></AutoComplete>-->
<!-- </Form-item>-->
<Form-item @click.native="_selectReceiverPerson" label="接收人" prop="receiver" class="width-48">
<Input v-model="formObj.receiver" name="receiver" placeholder="请输入接收人"/>
</Form-item>
<Form-item label="接收日期:" prop="receiveTime" class="width-48">
<Date-picker v-model="formObj.receiveTime" @on-change="_ctimeChange" type="date" split-panels style="width:100%;"
placeholder="请选择接收日期" name="receiveTime"></Date-picker>
</Form-item>
<Form-item label="项目名称" prop="projectName" class="width-48">
<!-- <Input v-model="formObj.projectName" name="projectName" placeholder="请输入项目名称"/>-->
<AutoComplete ref="autoInput" v-model="formObj.projectName" :down-data="projectData"
@on-result-change="_projectChange" name="projectName" placeholder="请输入或选择项目名称"
></AutoComplete>
</Form-item>
<Form-item @click.native="_selectProjectPerson" label="项目负责人" prop="projectLeader" class="width-48">
<Input v-model="formObj.projectLeader" name="projectLeader" placeholder="请输入项目负责人"/>
</Form-item>
<Form-item label="钻孔名称" prop="boreholeName" class="width-48">
<Input v-model="formObj.boreholeName" name="boreholeName" placeholder="请输入名称"/>
</Form-item>
<Form-item label="箱数" prop="casesNum" class="width-48">
<Input v-model="formObj.casesNum" name="casesNum" placeholder="请输入箱数"/>
</Form-item>
<Form-item @click.native="_selectRegisterPerson" label="登记人" prop="registrant" class="width-48">
<Input v-model="formObj.registrant" name="registrant" placeholder="请输入登记人"/>
</Form-item>
<Form-item label="登记日期:" prop="registTime" class="width-48">
<Date-picker v-model="formObj.registTime" @on-change="_tabulateChange" name="registTime" type="date" split-panels style="width:100%;"
placeholder="请选择登记日期"></Date-picker>
</Form-item>
<!-- <Form-item label="检验类别" prop="testType" class="width-48">-->
<!-- <Input v-model="formObj.testType" name="testType" placeholder="请输入名称"/>-->
<!-- </Form-item>-->
</Form>
</div>
<div slot="footer">
<modal-footer ref="footerModal" :footer="footerList" @on-result-change="_footerResult"></modal-footer>
</div>
</Modal>
<importModal ref="importModal" @on-result-change="_inputBack" aptitude-item></importModal>
<SampleItemSelect ref="sampleItemSelectModal" @on-result-change="_itemImportBack" is-change />
<assignPerson ref="userModal" @on-result-change="_userResult"></assignPerson>
<SampleItemRemove ref="sampleItemRemove" @on-result-change = '_removeItemBack'></SampleItemRemove>
<SampleItemEdit ref="sampleItemEdit" @on-result-change = '_removeItemBack'></SampleItemEdit>
</div>
</template>
<script>
/**
* 添加编辑分包商
*/
import { meterEntrust, meterSample, soilEntrust } from '../../api'
import importModal from '../../components/import/DownloadTemplateImport'
import AutoComplete from '../../components/base/AutoCompletes'
import SampleItemSelect from '../meter-aptitude/standard-manage/SampleItemSelect'
import assignPerson from '../../components/user-info-single/assignPerson'
import Global from '../../api/config'
import SampleItemRemove from './SampleItemRemove'
import SampleItemEdit from './SampleItemEdit'
export default {
components: {
AutoComplete,
importModal,
SampleItemSelect,
assignPerson,
SampleItemRemove,
SampleItemEdit
},
data() {
return {
formId: 'meterSendTestEditFormId',
getPage: {
records: []
},
showBtn: true,
customerData: [],
projectData: [],
edit: false,
cityData: [],
selectData: [],
sampleItemList: [],
searchOpen: true,
testedCityData: [],
judgeType: [{ value: 1, name: '是' }, { value: 0, name: '否' }],
iconMsg: [
{
type: 'md-trash',
id: '',
name: '删除'
}
],
pageColumns: [
{ title: '试样编号', key: 'sampleCode', width: 140 },
{ title: '现场编号', key: 'siteNo', width: 140 },
{ title: '试验项目', key: 'experiments', width: 140 },
{ title: '试样深度', key: 'sampleDepth', width: 140 },
{ title: '样品包装类型', key: 'samplePack', width: 150 },
{ title: '土质描述', key: 'sampleDescribe' }
],
btn: [
{
type: 'success',
id: '',
name: '添加'
},
{
type: 'success',
id: '',
name: '导入试验项目'
}
],
btnEdit: [
{
type: 'success',
id: '',
name: '添加'
},
{
type: 'success',
id: '',
name: '导入样品'
},
{
type: 'success',
id: '',
name: '导入试验项目'
}
],
options: [
{
name: '检定'
},
{
name: '校准'
},
{
name: '外观检查'
}
],
typeoptions: [],
personType: '',
packList: [],
soilList: [],
currentIndex: -1,
id: '',
modalTitle: '',
subcontractorId: '',
formObj: {},
selectIds: [],
indexList: [],
itemList: [],
clearingWayList: ['款到后测试', '先测试后付款', '其他情况()'],
clearingWayListTemp: ['款到后测试', '先测试后付款', '其他情况()'],
showModal: false,
footerList: [
{ id: '', name: '取消', type: '' },
{ id: '', name: '保存', type: 'primary' }
],
aptitudeData: []
}
},
methods: {
typeChange(data) {
this.$forceUpdate()
this.formObj.testType = data
},
_removeItem(itemInfo) {
console.log('试验项目', itemInfo)
this.sampleItemList = itemInfo.experimentList
if (itemInfo.sampleCode !== '') {
this.$refs.sampleItemEdit._open(this.sampleItemList)
} else {
this.$refs.sampleItemRemove._open(this.sampleItemList)
}
},
_removeItemBack(data) {
this.$forceUpdate()
if (data) {
this.getPage.records[this.currentIndex].experimentList = data
const itemNames = []
for (let j = 0; j < data.length; j++) {
itemNames.push(data[j].name)
}
this.getPage.records[this.currentIndex].experiments = itemNames.join(
','
)
}
this.$set(
this.getPage.records,
this.currentIndex,
this.getPage.records[this.currentIndex]
)
},
_itemImportBack(data) {
this.$forceUpdate()
for (let i = 0; i < data.length; i++) {
data[i].id = undefined
}
const info = data
for (let i = 0; i < this.indexList.length; i++) {
const index = this.indexList[i]
if (
this.getPage.records[index].experimentList !== undefined &&
this.getPage.records[index].experimentList !== []
) {
const name = []
this.itemList = this.getPage.records[index].experimentList
name.push(this.getPage.records[index].experiments)
for (let i = 0; i < info.length; i++) {
this.itemList.push(info[i])
name.push(info[i].name)
}
this.getPage.records[index].experiments = name.join('、')
this.getPage.records[index].experimentList = this.itemList
this.$set(this.getPage.records, index, this.getPage.records[index])
} else {
const name = []
this.itemList = []
for (let i = 0; i < info.length; i++) {
this.itemList.push(info[i])
name.push(info[i].name)
}
this.getPage.records[index].experiments = name.join('、')
this.getPage.records[index].experimentList = this.itemList
this.$set(this.getPage.records, index, this.getPage.records[index])
}
}
},
_selectProjectPerson() {
this.personType = 'project'
this.$refs.userModal._openOrg('选择人员', 'itemTree')
},
_selectReceiverPerson() {
this.personType = 'receive'
this.$refs.userModal._openOrg('选择人员', 'itemTree')
},
_selectRegisterPerson() {
this.personType = 'resistrant'
this.$refs.userModal._openOrg('选择人员', 'itemTree')
},
_userResult(data, msg) {
console.log(msg)
this.$forceUpdate()
if (this.personType === 'resistrant') {
this.formObj.registrant = data.realname
this.formObj.registrantId = data.id
} else if (this.personType === 'receive') {
this.formObj.receiver = data.realname
} else {
this.formObj.projectLeader = data.realname
this.formObj.projectLeaderId = data.id
}
},
_packChange(msg, data) {
switch (msg) {
case 'select':
this.getPage.records[this.currentIndex].samplePack = data
break
case 'query':
this.getPage.records[this.currentIndex].samplePack = data
break
}
},
_soilChange(msg, data) {
switch (msg) {
case 'select':
this.getPage.records[this.currentIndex].sampleDescribe = data
break
case 'query':
this.getPage.records[this.currentIndex].sampleDescribe = data
break
}
},
_cusNameChange(msg, data) {
if (this.$string(this.id).isEmpty()) {
// 添加的时候选择单位
switch (msg) {
case 'select':
this._customerMatch(data)
break
case 'query':
this._cusNameQuery(data)
break
}
} else if (this.customerData.indexOf(data) !== -1) {
this._getQueryList(data)
} else {
this._cusNameQuery(data)
}
},
_customerMatch(data) {
this._getQueryList(data)
},
_cusNameQuery(query) {
console.log('query', query)
this.formObj.client = query
this._getQueryList(query)
},
_projectChange(msg, data) {
if (this.$string(this.id).isEmpty()) {
// 添加的时候选择单位
switch (msg) {
case 'select':
this._projectMatch(data)
break
case 'query':
this._projectQuery(data)
break
}
} else if (this.projectData.indexOf(data) !== -1) {
this._getProjectQueryList(data)
} else {
this._projectQuery(data)
}
},
_projectMatch(data) {
this._getQueryList(data)
},
_projectQuery(query) {
this.formObj.projectName = query
this._getProjectQueryList(query)
},
_btnClick(msg) {
this.$nextTick(function() {
switch (msg) {
case '添加':
this._add()
break
case '导入试验项目':
this._importItem()
break
case '导入样品':
this._importSample()
break
case 'search':
this.searchOpen = !this.searchOpen
break
}
})
},
_importItem() {
if (this.selectIds.length === 0) {
this.$Message.warning('请选择至少一条数据!')
} else {
this.$refs.sampleItemSelectModal._open()
this.allSelect(this.selectData)
}
},
_getByEntrustId: async function(id) {
const result = await soilEntrust.getVOById(id)
if (result) {
this.$forceUpdate()
const sampleList = Object.assign(
this.getPage.records,
result.sampleList
)
this.$set(this.getPage.records, sampleList)
}
},
_inputBack(data) {
if (data) {
this._getByEntrustId(this.id)
}
},
_ctimeChange(data) {
this.formObj.receiveTime = data
},
_tabulateChange(data) {
this.formObj.registTime = data
},
_odateChange(data) {
this.formObj.odate = data
},
_judgeBasisChange(msg, data) {
switch (msg) {
case 'select':
this.formObj.stdId = data.id
this.formObj.code = data.stdNum
this.formObj.name = data.name
this.$refs.formObj.validateField('code')
break
case 'query':
this.formObj.stdId = ''
this.formObj.code = data.stdNum
this.formObj.name = ''
this._getJudgeBasisList(data.stdNum)
break
case 'focus':
this._getJudgeBasisList()
break
case 'blur':
if (this.formObj.stdId === '') {
this.formObj.code = ''
this._getJudgeBasisList()
}
this.$refs.formObj.validateField('code')
}
},
_selectjudgeBasis(index) {
this.index = index
this.$refs.EditModal._open()
},
_selectverification(index) {
this.index = index
this.$refs.VerificationModal._open()
},
_selectcontractCode() {
this.$refs.ContractModal._open()
},
_backData(data) {
this.$forceUpdate()
console.log(typeof this.index)
this.getPage.records[this.index].name = data.name
this.getPage.records[this.index].aptitudeId = data.id
this.getPage.records[this.index].verification = data.code + data.basis
this.getPage.records[this.index].price = data.price
this.getPage.records[this.index].totalPrice =
data.price * this.getPage.records[this.index].quantity
},
_backContract(data) {
this.formObj.client = data.client
this.formObj.operation.person = data.person
this.formObj.operation.tel = data.tel
this.formObj.operation.fax = data.fax
if (data.province) {
this.testedCityData = [data.province, data.city, data.county]
this.formObj.province = data.province
this.formObj.city = data.city
this.formObj.county = data.county
}
this.formObj.street = data.street
this.formObj.entrustDate = new Date(data.entrustDate)
this.formObj.odate = new Date(data.odate)
this.formObj.contractCode = data.salesCode
this.formObj.operation.fee = data.discountPrice
if (data.sampleQuoteList) {
this.getPage.records = data.sampleQuoteList
} else {
this.getPage.records = []
}
},
_backVerification(data) {
this.$forceUpdate()
this.getPage.records[this.index].verification = data.verification
},
_add() {
const data = {
sampleCode: '',
sampleDepth: '',
samplePack: '',
sampleDescribe: '',
siteNo: '',
experiments: ''
}
this.getPage.records.push(data)
},
_getPackList: async function() {
const result = await soilEntrust.testType('样品包装类型')
if (result) {
const pack = []
for (let i = 0; i < result.length; i++) {
pack.push(result[i].name)
}
this.packList = pack
}
},
_getSoil: async function() {
const result = await soilEntrust.testType('土质描述')
if (result) {
const soilRemark = []
for (let i = 0; i < result.length; i++) {
soilRemark.push(result[i].name)
}
this.soilList = soilRemark
}
},
_importSample() {
const data = {
importUrl: '/soil/v1/entrust/edit_import_entrust/?id=' + this.id,
downloadUrl: '/meter/v1/excel/template/MeterSampleImport',
title: '样品导入'
}
this.$refs.importModal._open(data, '样品导入')
},
_tableResultChange(msg, data, selData) {
switch (msg) {
case 'selectIds':
this.selectIds = data
this.selectData = selData
console.log(this.selectIds)
break
case 'iconClick':
this._iconClick(data.name, data.rowData, data.rowIndex)
break
}
},
allSelect(data) {
console.log(data)
this.indexList = []
for (let i = 0; i < data.length; i++) {
this.indexList.push(data[i].index)
}
console.log('索引', this.indexList)
},
// 省 市 区
_cascaderResult(name, data, msg) {
switch (name) {
case 'cus':
this._casChange(data, msg)
break
case 'tested':
this._testedChange(data, msg)
break
}
},
_emptyProvince() {
this.cityData = []
this.testedCityData = []
// this.formObj.tested.testedProvince = ''
// this.formObj.tested.testedCity = ''
// this.formObj.tested.testedCounty = ''
// this.formObj.testedTemp.testedProvince = ''
// this.formObj.testedTemp.testedCity = ''
// this.formObj.testedTemp.testedCounty = ''
},
_testedChange(data, msg) {
// 省、市、区
if (msg === 'clear') {
// this.formObj.tested.testedProvince = ''
// this.formObj.tested.testedCity = ''
// this.formObj.tested.testedCounty = ''
this.formObj.testedTemp.testedProvince = ''
this.formObj.testedTemp.testedCity = ''
this.formObj.testedTemp.testedCounty = ''
this.formObj.province = ''
this.formObj.city = ''
this.formObj.county = ''
this.testedCityData = []
} else {
// this.formObj.tested.testedProvince = data.value[0]
// this.formObj.tested.testedCity = data.value[1]
// this.formObj.tested.testedCounty = data.value[2]
this.formObj.province = data.value[0]
this.formObj.city = data.value[1]
this.formObj.county = data.value[2]
this.testedCityData = [data.value[0], data.value[1], data.value[2]]
}
},
_iconClick(res, data, index) {
switch (res) {
case '编辑':
// this._editModal(true, data.id)
break
case '删除':
this.getPage.records.splice(index, 1)
break
case '操作日志':
// this._record(data.id)
break
}
},
_deleteSample(data) {
if (data.id === undefined) {
return false
} else {
this._delete(data.id)
}
},
_delete: async function(id) {
const result = await meterSample.deleteById(id)
if (result) {
console.log(result)
}
},
_selectAptitude(data) {
console.log(data)
},
_handleRow(data) {
this.currentRow = data.row
this.currentIndex = data.rowIndex
},
channelInputLimit(e) {
const key = e.key
// 不允许输入'e'和'.'
if (key === 'e' || key === '.') {
e.returnValue = false
return false
}
return true
},
/** *modal-footer */
_footerResult(name) {
switch (name) {
case '取消':
this._cancel()
break
case '保存':
this._ok()
break
}
},
_hideLoading() {
this.$refs.footerModal._hideLoading()
},
_resultChange(msg) {
this.showModal = false
this.$Message.success(msg)
this.$emit('on-result-change')
this._hideLoading()
},
_ok() {
this.$refs.formObj.validate(valid => {
if (valid) {
const data = this.$serialize('MeterSendTestEdit')
console.log(this.getPage.records)
if (this.$string(this.id).isEmpty()) {
// 添加
if (this.formObj.projectLeaderId) {
data.projectLeaderId = this.formObj.projectLeaderId
}
if (this.formObj.registrantId) {
data.registrantId = this.formObj.registrantId
}
console.log('saveData', data)
this._save(data)
} else {
data.id = this.id
if (this.formObj.projectLeaderId) {
data.projectLeaderId = this.formObj.projectLeaderId
}
if (this.formObj.registrantId) {
data.registrantId = this.formObj.registrantId
}
this._edit(data)
}
} else {
this.$Message.error('表单验证失败!')
}
})
},
_wayResult(msg, data) {
switch (msg) {
case 'select':
this.formObj.clearingWay = data
break
case 'query':
this.formObj.clearingWay = data
this._wayQuery(data)
break
}
},
_wayQuery(query) {
if (query === '') {
this.clearingWayList = this.clearingWayListTemp
} else {
this.clearingWayList = this.clearingWayListTemp.filter(
item => item.indexOf(query) > -1
)
}
},
_cancel() {
this.showModal = false
},
_open(formObj) {
this.$refs.autoInput._clear()
this.edit = false
this._getProjectList()
this.showBtn = true
this.showModal = true
this._hideLoading()
if (this.$string(formObj).isEmpty()) {
this.$refs.formObj.resetFields()
this.getPage.records = []
this.formObj.client = ''
this.id = ''
this.formObj.entrustDate = new Date()
this.modalTitle = '委托单新增'
}
this._getUser()
},
_openEdit(formObj) {
this.edit = true
console.log(formObj)
this._getProjectList()
this.showBtn = false
this.showModal = true
this.$refs.formObj.resetFields()
this._getUser()
this.getPage.records = []
this._hideLoading()
this.id = ''
this.modalTitle = '委托单编辑'
this.id = formObj.id
this.formObj = formObj
this._showTime(formObj)
// for (let i = 0; i < formObj.sampleList.length; i++) {
// if (formObj.sampleList[i].lastTime !== undefined) {
// this.getPage.records[i].lastTime = new Date(
// formObj.sampleList[i].lastTime
// )
// }
// }
},
_getUser() {
const user = Global.getUserInfo()
this.formObj.receiver = user.realname
},
_getTestType: async function() {
const result = await soilEntrust.testType('检验类别')
console.log(result)
if (result) {
console.log('检验类别', result)
this.typeoptions = result
}
},
_showTime(formObj) {
if (this.formObj.receiveTime === undefined) {
this.formObj.receiveTime = ''
} else {
this.formObj.receiveTime = new Date(formObj.receiveTime)
}
if (this.formObj.registTime === undefined) {
this.formObj.registTime = ''
} else {
this.formObj.registTime = new Date(formObj.registTime)
}
},
_showAddress(formObj) {
this.testedCityData = []
if (
formObj.province !== undefined &&
formObj.city !== undefined &&
formObj.county !== undefined
) {
this.testedCityData.push(formObj.province)
this.testedCityData.push(formObj.city)
this.testedCityData.push(formObj.county)
}
},
_getList: async function() {
const result = await meterEntrust.pageList()
const list = []
if (result) {
for (let i = 0; i < result.length; i++) {
list.push(result[i].cname)
}
this.customerData = list
}
},
_getProjectList: async function() {
const result = await soilEntrust.testType('项目名称')
const projectlist = []
if (result) {
for (let i = 0; i < result.length; i++) {
projectlist.push(result[i].name)
}
this.projectData = projectlist
}
},
_getQueryList: async function(data) {
const result = await meterEntrust.pageQueryList(data)
const queryList = []
if (result) {
for (let i = 0; i < result.length; i++) {
queryList.push(result[i].cname)
}
this.customerData = queryList
console.log('委托商', result)
}
},
_getProjectQueryList: async function(data) {
const queryData = {}
queryData.type = '项目名称'
queryData.name = data
const result = await soilEntrust.projectQueryList(queryData)
const queryList = []
if (result) {
for (let i = 0; i < result.length; i++) {
queryList.push(result[i].name)
}
this.projectData = queryList
console.log('项目名称', result)
}
},
_save: async function(data) {
const result = await soilEntrust.aloneSampleAdd(data)
if (result) {
this._resultChange('添加成功!')
} else {
setTimeout(() => {
this._hideLoading()
}, 500)
}
},
_edit: async function(data) {
this._hideLoading()
const result = await soilEntrust.aloneSampleEdit(data)
if (result) {
this._resultChange('编辑成功!')
}
},
_sampleEdit: async function(data) {
this._hideLoading()
const result = await soilEntrust.editDTO(data)
if (result) {
this.$Message.success('编辑成功')
}
},
_visibleChange(data) {
this.$forceUpdate()
console.log('清空')
this.formObj.client = ''
this.formObj = {}
}
}
}
</script>
<style>
.vxe-table--tooltip-wrapper {
z-index: 2147483647 !important;
}
</style>
<template>
<div>
<!--内容-->
<div class="layout-content-padding">
<div class="layout-content-main">
<Row>
<!--查询-->
<Col span="24" style="margin-top: 10px">
<Form id="formId" v-show="searchOpen" :label-width="90" inline onsubmit="return false">
<label class="label-sign"></label>
<Form-item class="search-item" label="委托商:">
<Input v-model="formObj.client" @on-enter="_formSearch" name="client" placeholder="请输入委托单位" clearable/>
</Form-item>
<Form-item class="search-item" label="委托编号:">
<Input v-model="formObj.entrustCode" @on-enter="_formSearch" name="entrustCode" 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" :show-search-btn="true" @on-result-change="_btnClick"
class="contHide"></btn-list>
</Col>
<!--表格-->
<Col span="24">
<PTVXETable ref="pageTable" :table-height="tableHeight" :form-id="formId" :loading="true"
:get-page="getPage" :icon-msg="iconMsg" @on-result-change="_tableResultChange">
<vxe-table-column
v-for="item in pageColumns"
:key="item.key"
:field="item.key"
:title="item.title"
:min-width="item.width?item.width:200"
:fixed="item.fixed?item.fixed:undefined" sortable>
<template slot-scope="scope">
<span v-if="item.date">{{scope.row[item.key]?$dateformat(scope.row[item.key],'yyyy-mm-dd'):''}}</span>
<span v-else-if="item.status">{{scope.row[item.key].display}}</span>
<span v-else>{{scope.row[item.key]}}</span>
</template>
</vxe-table-column>
</PTVXETable>
</Col>
</Row>
</div>
</div>
<keep-alive>
<!-- eslint-disable-next-line vue/require-component-is -->
<component ref="refModal" :is="currentComponent"></component>
</keep-alive>
</div>
</template>
<script>
import { soilAptitude, soilEntrust } from '../../api'
import MeterEntrustRecord from '../../components/operation/Operation'
export default {
// eslint-disable-next-line vue/no-unused-components
components: { MeterEntrustRecord },
data() {
return {
currentComponent: '',
formId: 'meterSubcontractorFormId',
searchOpen: true,
btn: [
// {
// type: 'success',
// id: '',
// name: '添加'
// }
],
iconMsg: [
{
type: 'ios-list',
id: '',
name: '试样列表'
},
{
type: 'ios-clock',
id: '',
name: '操作日志'
}
],
formObj: {
client: undefined,
entrustCode: undefined
},
selectIds: [],
getPage: {},
pageColumns: [
{ title: '委托商', key: 'client', width: 200 },
{ title: '委托编号', key: 'entrustCode', width: 120 },
{ title: '委托日期', key: 'entrustDate', width: 120, date: true },
{ title: '钻孔位置', key: 'boreholeLocation', width: 120 },
{ title: '水深(米)', key: 'waterDepth', width: 120 },
{ title: '钻孔名称', key: 'boreholeName', width: 120 },
{ title: '进度', key: 'progress', width: 120, status: true },
{ title: '平均容重', key: 'projectNo', width: 120 },
{ title: '报告编号', key: 'reportCode', width: 120 },
{ title: '制表日期', key: 'tabulateDate', width: 120, date: true },
{ title: '制表人', key: 'tabulater', width: 120 },
{ title: '批准日期', key: 'approveDate', width: 120, date: true },
{ title: '批准人', key: 'approver', width: 120 },
{ title: '检验类别', key: 'testType', width: 120 }
]
}
},
computed: {
tableHeight: function() {
if (this.searchOpen) {
return this.$tableHeight('search')
} else {
return this.$tableHeight('noSearch')
}
}
},
mounted() {
this._page()
},
methods: {
_btnClick(msg, componentName) {
this.currentComponent = componentName
this.$nextTick(function() {
switch (msg) {
case '添加':
this._editModal(false)
break
case 'search':
this.searchOpen = !this.searchOpen
break
}
})
},
_iconClick(res, data, componentName) {
this.currentComponent = componentName
this.$nextTick(function() {
switch (res) {
case '编辑':
this._editModal(true, data.id)
break
case '资质项目':
this._itemModal(data.id)
break
case '附件':
this._upload(data.id)
break
case '删除':
this._deleteByIds([data.id])
break
case '操作日志':
this._record(data.id)
break
case '查看样品':
this._sampleManage(data.id)
break
case '试样列表':
this._sampleManage(data.id)
break
}
})
},
_sampleManage(data) {
// 管理样品
this.currentComponent = 'SoilSampleManage'
this.$nextTick(() => {
this.$refs.refModal._open(data)
})
// this.$refs.sampleManageModal._open(data)
},
_record(id) {
this.currentComponent = 'MeterEntrustRecord'
this.$nextTick(() => {
this.$refs.refModal._open(id)
})
// this.$refs.entrustRecordModal._open(id)
},
_tableResultChange(msg, data) {
switch (msg) {
case 'iconClick':
this._iconClick(data.name, data.rowData, data.componentName)
break
case 'changeSize':
this._page()
break
}
},
_page: async function() {
Object.assign(this.formObj, this.$refs.pageTable._searchParams())
console.log('this.formObj', this.formObj)
const result = await soilEntrust.pageRegHis(this.formObj)
if (result) {
this.$refs.pageTable._hideLoading()
this.getPage = result
}
},
_formSearch() {
this.$refs.pageTable._pageChange(1)
},
// 删除
_deleteByIds(ids, content) {
this.$Modal.confirm({
title: '提示',
content: content || '确定删除该记录?',
onOk: () => {
this._delete(ids)
}
})
},
// 编辑&添加
_editModal(edit, id) {
if (edit) {
// 编辑
// this.$refs.editSubcontractorModal._open(id)
this._getById(id)
} else {
// 添加
this.$refs.editSubcontractorModal._open()
}
},
// 追加项目
_itemModal(data) {
this.$refs.refModal._open(data)
},
_upload(id) {
// 上传文件
this.$refs.refModal._open(id, 'subcontractorId')
},
_getById: async function(id) {
const result = await soilAptitude.getById(id)
if (result) {
this.$refs.editSubcontractorModal._open(result)
}
},
_delete: async function(ids) {
const result = await soilAptitude.deleteById(ids)
if (result) {
this._formSearch()
this.$Message.success('删除成功!')
}
}
}
}
</script>
<template>
<div>
<Modal v-model="showDetailModal" v-drag :width="700" title="人员信息" class="modal-footer-none">
<div :style="{height}" style="overflow-y: auto">
<table class="tableClass">
<tbody>
<tr>
<th colspan="6" class="tableClass_back">人员信息</th>
</tr>
<tr>
<th>姓名</th>
<td>{{obj.realname}}</td>
<th>联系方式</th>
<td>{{obj.mobile}}</td>
</tr>
</tbody>
</table>
</div>
</Modal>
</div>
</template>
<script>
/**
* 政府委托信息表详情
*/
export default {
data() {
return {
obj: {
firsted: 0,
client: '',
boreholeLocation: '',
boreholeName: '',
waterDepth: '',
tabulater: '',
testType: ''
},
showDetailModal: false,
dispose: '',
height: '',
showMoney: false
}
},
methods: {
_open(obj, flag) {
console.log('obj', obj)
this.showDetailModal = true
this.obj = obj.records[0]
if (flag === 'showMoney') {
this.showMoney = true
} else {
this.showMoney = false
}
this.height = '350px'
}
}
}
</script>
<!--检测项目编辑列表(添加、导入检测项目)-->
<template>
<div>
<Modal
v-model="showModal"
:mask-closable="false"
:width="690"
@on-cancel="_cancel"
title="检测项目管理"
>
<Row>
<!--正常界面-->
<Col span="24">
<PTVXETable ref="pageTable" :loading="true"
:get-page="getPage" :icon-msg="iconMsg" @on-result-change="_tableResultChange" select-data>
<vxe-table-column
v-for="item in pageColumns"
:key="item.key"
:field="item.key"
:title="item.title"
:min-width="item.width?item.width:200"
:fixed="item.fixed?item.fixed:undefined" sortable>
<template slot-scope="scope">
<span v-if="item.key==='judged'">
{{ scope.row[item.key]===1?'是':'否' }}
</span>
<div v-else-if="item.key==='compareSymbol'" @click.stop="_handleRow(scope)">
<el-input
v-model="scope.row.compareSymbol"
placeholder="请输入比较符"
/>
</div>
<div v-else-if="item.key==='limitValue'" @click.stop="_handleRow(scope)">
<el-input
v-model="scope.row.limitValue"
placeholder="请输入限值"
/>
</div>
<div v-else-if="item.key==='unit'" @click.stop="_handleRow(scope)">
<el-input
v-model="scope.row.unit"
placeholder="请输入单位"
/>
</div>
<div v-else-if="item.key==='code'" @click.stop="_handleRow(scope)">
<el-input
v-model="scope.row.code"
style="width: 130px;"
blur
placeholder="请选择检测依据"
/>
<i @click.stop="_selectjudgeBasis(scope.$index)" style="cursor: pointer;font-size: 14px;" class="icons iconfont pt-search icon-search"></i>
</div>
<span v-else>
{{ scope.row[item.key] }}
</span>
</template>
</vxe-table-column>
</PTVXETable>
</Col>
</Row>
<div slot="footer">
<modal-footer ref="footerModal" :footer="footerList" @on-result-change="_footerResult" />
</div>
</Modal>
</div>
</template>
<script>
import { soilEntrust } from '../../api'
export default {
components: {},
data() {
return {
formObj: {
catalogueId: '',
name: '',
code: '',
standardCode: '',
standardName: ''
},
showModal: false,
searchOpen: false,
btn: [],
index: '',
iconMsg: [
{
type: 'md-trash',
id: '',
name: '删除'
}
],
footerList: [
{ id: '', name: '取消', type: '' },
{ id: '', name: '保存', type: 'primary' }
],
pageColumns: [
{ title: '试验名称', key: 'name', width: 140 },
{ title: '大类', key: 'mainType', width: 140 },
{ title: '小类', key: 'smallType', width: 140 },
{ title: '方法', key: 'testMethod', width: 180 }
],
catalogueId: '',
itemList: {
records: []
},
getPage: {
records: []
},
selectData: [],
originalList: []
}
},
methods: {
_open(expList) {
this.formObj = this.$resetFields(this.formObj)
this.showModal = true
this.getPage.records = expList
this.selectData = []
console.log(expList)
this.$refs.pageTable._clearSelection()
// this.formObj.sampleId = id
// this.$refs.pageTable._hideLoading()
// if (catalogueId) {
// this._page()
// }
},
_handleRow(scope) {
console.log(scope)
},
_selectjudgeBasis(index) {
console.log(index)
this.index = index
this.$refs.EditModal._open()
},
_formSearch() {
this.$refs.pageTable._pageChange(1)
},
_footerResult(name) {
switch (name) {
case '取消':
this._cancel()
break
case '保存':
this._saveCatalogueItem()
break
}
},
_page: async function() {
// this.$refs.pageTable._page('search-form-package', 'FoodJudgeBasis/page')
Object.assign(this.formObj, this.$refs.pageTable._searchParams())
const result = await soilEntrust.pageItem(
this.$serializeForm(this.formObj)
)
if (result) {
console.log(result)
this.getPage = result
this.$refs.pageTable._hideLoading()
}
},
_btnClick(msg) {
switch (msg) {
case '导入检测项目':
this.$refs.relItemModal._open(this.catalogueId)
break
}
},
// 操作列操作
_iconClick(res, data) {
switch (res) {
case '删除':
this._deleteById(data.id, data.index)
break
}
},
// 删除
_deleteById(id, index) {
this.$Modal.confirm({
title: '提示',
content: '确定删除该数据?',
onOk: () => {
this._deleteOk(id, index)
}
})
},
_deleteOk: async function(id, index) {
if (id) {
const result = await soilEntrust.experimentDeleteById(id)
if (result) {
this.$Message.success('删除成功')
this.getPage.records.splice(index, 1)
}
} else {
this.$Message.success('成功删除')
this.getPage.records.splice(index, 1)
}
},
// table结果 返回整行
_tableResultChange(msg, data) {
switch (msg) {
case 'selectData':
this.selectData = data
break
case 'iconClick':
this._iconClick(data.name, data.rowData)
break
case 'changeSize':
this._page()
}
},
_ok() {
const expNames = []
for (let i = 0; i < this.getPage.records.length; i++) {
expNames.push(this.getPage.records[i].name)
}
const data = expNames
this._saveCatalogueItem(data)
},
_saveCatalogueItem(data) {
this.showModal = false
this.$emit('on-result-change', this.getPage.records)
this._hideLoading()
console.log(this.getPage.records)
},
_cancel() {
this.selectData = []
this.showModal = false
this.$emit('on-result-change', this.getPage.records)
},
_visibleChange() {
const data = this.itemList.records
this._saveCatalogueItem(data)
this.selectData = []
this.showModal = false
},
_hideLoading() {
this.$refs.footerModal._hideLoading()
}
}
}
</script>
<!--检测项目编辑列表(添加、导入检测项目)-->
<template>
<div>
<Modal
v-model="showModal"
:mask-closable="false"
:width="690"
@on-cancel="_cancel"
title="检测项目管理"
>
<Row>
<!-- 表格 -->
<Col span="24">
<PTVXETable ref="pageTable" :loading="true"
:get-page="itemList" :icon-msg="iconMsg" @on-result-change="_tableResultChange" hide-page="true" select-data>
<vxe-table-column
v-for="item in pageColumns"
:key="item.key"
:field="item.key"
:title="item.title"
:min-width="item.width?item.width:200"
:fixed="item.fixed?item.fixed:undefined" sortable>
<template slot-scope="scope">
<span v-if="item.key==='judged'">
{{ scope.row[item.key]===1?'是':'否' }}
</span>
<div v-else-if="item.key==='compareSymbol'" @click.stop="_handleRow(scope)">
<el-input
v-model="scope.row.compareSymbol"
placeholder="请输入比较符"
/>
</div>
<div v-else-if="item.key==='limitValue'" @click.stop="_handleRow(scope)">
<el-input
v-model="scope.row.limitValue"
placeholder="请输入限值"
/>
</div>
<div v-else-if="item.key==='unit'" @click.stop="_handleRow(scope)">
<el-input
v-model="scope.row.unit"
placeholder="请输入单位"
/>
</div>
<div v-else-if="item.key==='code'" @click.stop="_handleRow(scope)">
<el-input
v-model="scope.row.code"
style="width: 130px;"
blur
placeholder="请选择检测依据"
/>
<i @click.stop="_selectjudgeBasis(scope.$index)" style="cursor: pointer;font-size: 14px;" class="icons iconfont pt-search icon-search"></i>
</div>
<span v-else>
{{ scope.row[item.key] }}
</span>
</template>
</vxe-table-column>
</PTVXETable>
</Col>
</Row>
<div slot="footer">
<modal-footer ref="footerModal" :footer="footerList" @on-result-change="_footerResult" />
</div>
</Modal>
</div>
</template>
<script>
import { soilAptitude } from '../../api'
export default {
components: {},
data() {
return {
formObj: {
catalogueId: '',
name: '',
code: '',
standardCode: '',
standardName: ''
},
showModal: false,
searchOpen: false,
btn: [],
index: '',
iconMsg: [
{
type: 'md-trash',
id: '',
name: '删除'
}
],
footerList: [
{ id: '', name: '取消', type: '' },
{ id: '', name: '保存', type: 'primary' }
],
pageColumns: [
{ title: '试验名称', key: 'name', width: 140 },
{ title: '大类', key: 'mainType', width: 140 },
{ title: '小类', key: 'smallType', width: 140 },
{ title: '方法', key: 'testMethod', width: 180 }
],
catalogueId: '',
itemList: {
records: []
},
selectData: [],
originalList: []
}
},
methods: {
_open(itemList) {
this.itemList.records = []
this.formObj = this.$resetFields(this.formObj)
this.showModal = true
this.itemList.records = itemList
this.$refs.pageTable._hideLoading()
this.$refs.pageTable._clearSelection()
// if (catalogueId) {
// this._page()
// }
},
_handleRow(scope) {
console.log(scope)
},
_selectjudgeBasis(index) {
console.log(index)
this.index = index
this.$refs.EditModal._open()
},
_formSearch() {
console.log(this.formObj.name)
const searchItem = []
for (let i = 0; i < this.itemList.records.length; i++) {
if (this.itemList.records[i].name === this.formObj.name) {
console.log(this.itemList.records[i])
searchItem.push(this.itemList.records[i])
}
}
this.itemList.records = searchItem
},
_footerResult(name) {
switch (name) {
case '取消':
this._cancel()
break
case '保存':
this._ok()
break
}
},
_page: async function() {
// this.$refs.pageTable._page('search-form-package', 'FoodJudgeBasis/page')
Object.assign(this.formObj, this.$refs.pageTable._searchParams())
const result = await soilAptitude.page(this.$serializeForm(this.formObj))
if (result) {
console.log(result)
this.getPage = result
this.$refs.pageTable._hideLoading()
}
},
_btnClick(msg) {
switch (msg) {
case '导入检测项目':
this.$refs.relItemModal._open(this.catalogueId)
break
}
},
// 操作列操作
_iconClick(res, data) {
switch (res) {
case '删除':
this.itemList.records.splice(data.index, 1)
break
}
},
// 删除
_deleteById(id) {
this.$Modal.confirm({
title: '提示',
content: '确定删除该数据?',
onOk: () => {
this._deleteOk(id)
}
})
},
_deleteOk(id) {
// const result = await drugCatalogueItem.deleteById(id)
this.itemList.splice(id, 1)
this.getPage.records = this.itemList
this.$Message.success('已删除')
},
// table结果 返回整行
_tableResultChange(msg, data) {
switch (msg) {
case 'selectData':
this.selectData = data
break
case 'iconClick':
this._iconClick(data.name, data.rowData)
break
}
},
_ok() {
const data = this.itemList.records
this._saveCatalogueItem(data)
},
_saveCatalogueItem(data) {
this.showModal = false
this.$emit('on-result-change', data)
this._hideLoading()
},
_cancel() {
const data = this.itemList.records
this._saveCatalogueItem(data)
this.selectData = []
this.showModal = false
},
_visibleChange() {
const data = this.itemList.records
this._saveCatalogueItem(data)
this.selectData = []
this.showModal = false
},
_hideLoading() {
this.$refs.footerModal._hideLoading()
}
}
}
</script>
<template>
<div>
<Modal v-model="showDetailModal" v-drag :width="700" title="人员信息" class="modal-footer-none">
<div :style="{height}" style="overflow-y: auto">
<table class="tableClass">
<tbody>
<tr>
<th colspan="6" class="tableClass_back">人员信息</th>
</tr>
<tr>
<th>接收人</th>
<td>{{obj.receiver}}</td>
<th>接收日期</th>
<td>{{$dateformat(obj.receiveTime,'yyyy-mm-dd')}}</td>
</tr>
<tr>
<th>项目名称</th>
<td>{{obj.projectName}}</td>
<th>项目负责人</th>
<td>{{obj.projectLeader}}</td>
</tr>
<tr>
<th>钻孔名称</th>
<td>{{obj.boreholeName}}</td>
<th>箱数</th>
<td>{{obj.casesNum}}</td>
</tr>
<tr>
<th>登记人</th>
<td>{{obj.registrant}}</td>
<th>登记日期</th>
<td>{{$dateformat(obj.registTime,'yyyy-mm-dd')}}</td>
</tr>
</tbody>
</table>
</div>
</Modal>
</div>
</template>
<script>
/**
* 政府委托信息表详情
*/
export default {
data() {
return {
obj: {
firsted: 0,
client: '',
boreholeLocation: '',
boreholeName: '',
waterDepth: '',
tabulater: '',
testType: ''
},
showDetailModal: false,
dispose: '',
height: '',
showMoney: false
}
},
methods: {
_open(obj, flag) {
this.showDetailModal = true
this.obj = obj
console.log('obj', obj)
if (flag === 'showMoney') {
this.showMoney = true
} else {
this.showMoney = false
}
this.height = '350px'
}
}
}
</script>
...@@ -10,25 +10,12 @@ ...@@ -10,25 +10,12 @@
class="search-form" class="search-form"
> >
<label class="label-sign" /> <label class="label-sign" />
<Form-item class="search-item" label="委托:"> <Form-item class="search-item" label="委托:">
<Input @on-enter="_formSearch" name="client" placeholder="请输入委托" clearable /> <Input @on-enter="_formSearch" name="client" placeholder="请输入委托" clearable />
</Form-item> </Form-item>
<Form-item class="search-item" label="委托编号:"> <Form-item class="search-item" label="委托编号:">
<Input @on-enter="_formSearch" name="entrustCode" placeholder="请输入委托编号" clearable /> <Input @on-enter="_formSearch" name="entrustCode" placeholder="请输入委托编号" clearable />
</Form-item> </Form-item>
<!-- <Form-item class="search-item" label="报检时间:">-->
<!-- <Date-picker-->
<!-- ref="sampleTime"-->
<!-- type="datetimerange"-->
<!-- placeholder="报检时间"-->
<!-- style="width: 100%;"-->
<!-- :editable="false"-->
<!-- transfer-->
<!-- @on-change="_labSampleTime"-->
<!-- />-->
<!-- <input type="hidden" name="inspectionDateBegin">-->
<!-- <input type="hidden" name="inspectionDateEnd">-->
<!-- </Form-item>-->
<Form-item class="search-btn"> <Form-item class="search-btn">
<Button @click="_formSearch" type="primary"> <Button @click="_formSearch" type="primary">
搜索 搜索
...@@ -36,59 +23,45 @@ ...@@ -36,59 +23,45 @@
</Form-item> </Form-item>
</Form> </Form>
<Col span="24"> <Col span="24">
<btn-list :msg="btn" :open="searchOpen" @on-result-change="_btnClick" show-search-btn="true" /> <btn-list :msg="btn" :open="searchOpen" @on-result-change="_btnClick" style="height: 30px;" show-search-btn="true" />
</Col> </Col>
<Col span="24"> <Col span="24">
<element-table <PTVXETable
ref="pageTable" ref="pageTable"
:page-columns="pageColumns" :tableHeight="tableHeight"
:table-height="tableHeight" :getPage="getPage"
:get-page="getPage" :iconMsg="iconMsg"
@on-result-change="_tableResultChange" @on-result-change="_tableResultChange" select-data>
show-check-box <vxe-table-column
select-data v-for="item in pageColumns"
> :key="item.key"
<el-table-column :field="item.key"
v-for="item in pageColumns" :title="item.title"
:key="item.key" :min-width="100"
:prop="item.key" :width="item.width"
:label="item.title" :fixed="item.fixed?item.fixed:undefined"
:align="item.align" sortable
:width="item.width" >
:min-width="200" <template slot-scope="scope">
:fixed="item.fixed?item.fixed:undefined" <a @click.stop="_detailModal(scope.row.id,scope.row.type)"
show-overflow-tooltip v-if="item.detail">{{scope.row[item.key]}}</a>
sortable <div v-else-if="item.type">{{scope.row[item.key]?'政府':'企业'}}</div>
> <div v-else-if="item.date">{{scope.row[item.key]?$dateformat(scope.row[item.key],'yyyy-mm-dd'): ''}}
<template slot-scope="scope" @click.stop="_handleIndex(scope)"> </div>
<span v-if="item.datetime"> <div v-else-if="item.key==='havePhoto'">{{scope.row[item.key]===1?'是':
{{ scope.row[item.key]?$dateformat(scope.row[item.key],'yyyy-mm-dd HH:MM:ss'):'' }} scope.row[item.key]===0?'否':''}}
</span> </div>
<div v-else-if="item.status"> <div v-else-if="item.status">
{{ scope.row[item.key] === undefined ? '': scope.row[item.key].display }} <span v-if="scope.row[item.key].display === '报告审核退回'||'报告签发退回' ===scope.row[item.key].display " style="color: red;">{{ scope.row[item.key] === undefined ? '': scope.row[item.key].display }}</span>
</div> <span v-else>{{ scope.row[item.key] === undefined ? '': scope.row[item.key].display }}</span>
<span v-else> </div>
{{ scope.row[item.key] }} <div v-else-if="item.judge">
</span> {{Number(scope.row[item.key]) === 0? '否':'是'}}
</template> </div>
</el-table-column> <div v-else>{{scope.row[item.key]}}</div>
<el-table-column </template>
slot="col" </vxe-table-column>
:width="120" </PTVXETable>
label="操作"
align="center"
fixed="right"
>
<template slot-scope="scope">
<icon-list
:msg="iconMsg"
:row-data="scope.row"
:row-index="scope.$index"
@on-result-change="_iconClick"
/>
</template>
</el-table-column>
</element-table>
</Col> </Col>
</Row> </Row>
<fileManage ref="FileManage" @on-result-change="_fileResult" /> <fileManage ref="FileManage" @on-result-change="_fileResult" />
...@@ -128,7 +101,6 @@ export default { ...@@ -128,7 +101,6 @@ export default {
btn: [ btn: [
// { id: 'env-report-make-submit', type: 'primary', name: '提交' }, // { id: 'env-report-make-submit', type: 'primary', name: '提交' },
// { id: '', type: 'primary', name: '生成' }, // { id: '', type: 'primary', name: '生成' },
{ id: 'ZBC', type: 'primary', name: '下载' }
], ],
getPage: {}, getPage: {},
searchOpen: false, searchOpen: false,
...@@ -312,12 +284,7 @@ export default { ...@@ -312,12 +284,7 @@ export default {
}, },
_uploadByIds(id) { _uploadByIds(id) {
const tempData = { this.$refs.FileManage._open(id, 'entrustId')
id: id,
uploadFileUrl: '/v1/entrust_attachment/upload/',
downloadFileUrl: '/v1/entrust_attachment/download/'
}
this.$refs.FileManage._open(tempData, 'entrustId')
}, },
// 文件返回的数据 // 文件返回的数据
_fileResult(msg, data) { _fileResult(msg, data) {
......
...@@ -318,12 +318,7 @@ export default { ...@@ -318,12 +318,7 @@ export default {
}, },
_uploadByIds(id) { _uploadByIds(id) {
const tempData = { this.$refs.FileManage._open(id, 'entrustId')
id: id,
uploadFileUrl: '/v1/entrust_attachment/upload/',
downloadFileUrl: '/v1/entrust_attachment/download/'
}
this.$refs.FileManage._open(tempData, 'entrustId')
}, },
// 文件返回的数据 // 文件返回的数据
_fileResult(msg, data) { _fileResult(msg, data) {
......
...@@ -36,62 +36,48 @@ ...@@ -36,62 +36,48 @@
</Form-item> </Form-item>
</Form> </Form>
<Col span="24"> <Col span="24">
<btn-list :msg="btn" :open="searchOpen" @on-result-change="_btnClick" show-search-btn="true" /> <btn-list :msg="btn" :open="searchOpen" @on-result-change="_btnClick" style="height: 30px;" show-search-btn="true" />
</Col> </Col>
<!-- <Button type="primary" @click="_submitReportCheck">--> <!-- <Button type="primary" @click="_submitReportCheck">-->
<!-- 提交--> <!-- 提交-->
<!-- </Button>--> <!-- </Button>-->
<Col span="24"> <Col span="24">
<element-table <PTVXETable
ref="pageTable" ref="pageTable"
:page-columns="pageColumns" :tableHeight="tableHeight"
:table-height="tableHeight" :getPage="getPage"
:get-page="getPage" :iconMsg="iconMsg"
@on-result-change="_tableResultChange" @on-result-change="_tableResultChange" select-data>
show-check-box <vxe-table-column
select-data v-for="item in pageColumns"
> :key="item.key"
<el-table-column :field="item.key"
v-for="item in pageColumns" :title="item.title"
:key="item.key" :min-width="100"
:prop="item.key" :width="item.width"
:label="item.title" :fixed="item.fixed?item.fixed:undefined"
:align="item.align" sortable
:width="item.width" >
:min-width="200" <template slot-scope="scope">
:fixed="item.fixed?item.fixed:undefined" <a @click.stop="_detailModal(scope.row.id,scope.row.type)"
show-overflow-tooltip v-if="item.detail">{{scope.row[item.key]}}</a>
sortable <div v-else-if="item.type">{{scope.row[item.key]?'政府':'企业'}}</div>
> <div v-else-if="item.date">{{scope.row[item.key]?$dateformat(scope.row[item.key],'yyyy-mm-dd'): ''}}
<template slot-scope="scope" @click.stop="_handleIndex(scope)"> </div>
<span v-if="item.datetime"> <div v-else-if="item.key==='havePhoto'">{{scope.row[item.key]===1?'是':
{{ scope.row[item.key]?$dateformat(scope.row[item.key],'yyyy-mm-dd HH:MM:ss'):'' }} scope.row[item.key]===0?'否':''}}
</span> </div>
<div v-else-if="item.status"> <div v-else-if="item.status">
{{ scope.row[item.key] === undefined ? '': scope.row[item.key].display }} <span v-if="scope.row[item.key].display === '报告审核退回'||'报告签发退回' ===scope.row[item.key].display " style="color: red;">{{ scope.row[item.key] === undefined ? '': scope.row[item.key].display }}</span>
</div> <span v-else>{{ scope.row[item.key] === undefined ? '': scope.row[item.key].display }}</span>
<span v-else> </div>
{{ scope.row[item.key] }} <div v-else-if="item.judge">
</span> {{Number(scope.row[item.key]) === 0? '否':'是'}}
</template> </div>
</el-table-column> <div v-else>{{scope.row[item.key]}}</div>
<el-table-column </template>
slot="col" </vxe-table-column>
:width="120" </PTVXETable>
label="操作"
align="center"
fixed="right"
>
<template slot-scope="scope">
<icon-list
:msg="iconMsg"
:row-data="scope.row"
:row-index="scope.$index"
@on-result-change="_iconClick"
/>
</template>
</el-table-column>
</element-table>
</Col> </Col>
</Row> </Row>
<fileManage ref="FileManage" @on-result-change="_fileResult" /> <fileManage ref="FileManage" @on-result-change="_fileResult" />
...@@ -131,7 +117,6 @@ export default { ...@@ -131,7 +117,6 @@ export default {
btn: [ btn: [
// { id: 'env-report-make-submit', type: 'primary', name: '提交' }, // { id: 'env-report-make-submit', type: 'primary', name: '提交' },
// { id: '', type: 'primary', name: '生成' }, // { id: '', type: 'primary', name: '生成' },
{ id: 'ZBC', type: 'primary', name: '下载' }
], ],
getPage: {}, getPage: {},
searchOpen: false, searchOpen: false,
...@@ -162,7 +147,7 @@ export default { ...@@ -162,7 +147,7 @@ export default {
const result = await soilReport.pageReportIssueHis(data) const result = await soilReport.pageReportIssueHis(data)
if (result) { if (result) {
this.getPage = result this.getPage = result
this.$refs.pageTable._initTable() this.$refs.pageTable._hideLoading()
} }
}, },
_clearPage() { _clearPage() {
...@@ -337,12 +322,7 @@ export default { ...@@ -337,12 +322,7 @@ export default {
}, },
_uploadByIds(id) { _uploadByIds(id) {
const tempData = { this.$refs.FileManage._open(id, 'entrustId')
id: id,
uploadFileUrl: '/v1/entrust_attachment/upload/',
downloadFileUrl: '/v1/entrust_attachment/download/'
}
this.$refs.FileManage._open(tempData, 'entrustId')
}, },
// 文件返回的数据 // 文件返回的数据
_fileResult(msg, data) { _fileResult(msg, data) {
......
...@@ -352,12 +352,7 @@ export default { ...@@ -352,12 +352,7 @@ export default {
}, },
_uploadByIds(id) { _uploadByIds(id) {
const tempData = { this.$refs.FileManage._open(id, 'entrustId')
id: id,
uploadFileUrl: '/v1/entrust_attachment/upload/',
downloadFileUrl: '/v1/entrust_attachment/download/'
}
this.$refs.FileManage._open(tempData, 'entrustId')
}, },
// 文件返回的数据 // 文件返回的数据
_fileResult(msg, data) { _fileResult(msg, data) {
......
<template>
<div>
<Modal v-model="showBatchModal" v-drag width="900">
<p slot="header">
生成报告
</p>
<div>
<!--内容-->
<div class="layout-content-padding">
<div class="layout-content-main">
<Row>
<!--样品信息-->
<!--报告模板-->
<Col span="24">
<SummarySheetTemplate ref="reportTemplate" @on-result-change="_templateResultChange"></SummarySheetTemplate>
</Col>
</Row>
</div>
</div>
</div>
<div slot="footer">
<modal-footer ref="footerModal" :footer="footerBtn" @on-result-change="_footerResult"></modal-footer>
</div>
</Modal>
<!--生成报告的进度条-->
</div>
</template>
<script>
import SummarySheetTemplate from './SummarySheetTemplate'
/**
* 样品列表--生成报告或者选择模板生成报告
*/
export default {
components: {
SummarySheetTemplate
},
data() {
return {
selectIds: [],
getPage: {
records: []
},
showBatchModal: false,
isLoading: false,
footerBtn: [
{ type: '', id: '', name: '取消' },
{ type: 'primary', id: '', name: '确定' }
],
pageColumns: [
{ title: '样品名称', key: 'name', width: 160 },
{ title: '样品编号', key: 'code', width: 150 },
{ title: '证书编号', key: 'certificate', width: 150 }
],
reportModelId: '',
backData: {},
// 样品数据
tableData: [],
// 签发日期
issueDateTemp: '',
issueDate: '',
showIssueModal: false
}
},
methods: {
_open() {
this.getPage.records = []
this.backData = {}
this.showBatchModal = true
this._reportTemplate()
this.reportModelId = ''
this.isLoading = false
},
// 报告模板
_reportTemplate() {
this.$refs.reportTemplate._open()
},
_footerResult(name) {
switch (name) {
case '确定':
this._ok()
break
case '取消':
this.showBatchModal = false
break
}
},
_templateResultChange(selectData) {
this.backData = selectData[0]
},
_issueChange(data) {
if (data) {
this.issueDate = data
}
},
_hideLoading() {
this.$refs.footerModal._hideLoading()
},
_ok() {
this.$refs.footerModal._hideLoading()
if (!this.backData.name) {
this.$Message.warning('请选择一个原始记录模板!')
// this._hideLoading()
} else {
this.$emit('on-result-change', this.backData)
this.showBatchModal = false
}
},
_issueCancel() {
this.showIssueModal = false
},
// 选择时间ok
_issueOk() {
this.isLoading = true
this.showIssueModal = false
this._createOk()
},
// 生成报告
_createOk() {
const obj = []
for (let i = 0; i < this.tableData.length; i++) {
obj.push({
sampleId: this.tableData[i].id,
reportSn: this.tableData[i].reportSn,
issueDate: this.issueDate
})
}
this.$layxLoading(true, '数据验证中')
const validateObj = {
sampleReports: obj,
reportModelId: this.reportModelId
}
// 先进行验证
this.$store
.dispatch('FoodSampleReport/createReportValidate', validateObj)
.then(() => {
if (this.$store.state.FoodSampleReport.success) {
// 验证成功之后再建立连接,然后进行生成报告操作
// 建立websocket连接
const currentTime = new Date().getTime()
this.$refs.progressModal._open(this.tableData.length, currentTime)
validateObj.seriesNo = currentTime
console.log('生成报告的当前序列号,', validateObj.seriesNo)
this.$store
.dispatch('FoodSampleReport/createReport', validateObj)
.then(() => {})
}
this._hideLoading()
this.isLoading = false
this.$layxLoading(false)
})
},
_closeResult() {
this.showBatchModal = false
this.$emit('on-result-change')
}
}
}
</script>
<template>
<div>
<Modal v-model="showModal" v-drag width="1200">
<p slot="header">
查看试验项目报告
</p>
<Row>
<!--查询-->
<Col span="24">
<Form :label-width="80" v-show="searchOpen" inline onsubmit="return false">
<label class="label-sign"></label>
<Form-item class="search-item" label="项目名称:">
<Input v-model="formObj.expName" @on-enter="_formSearch" placeholder="请输入项目名称" clearable></Input>
</Form-item>
<Form-item class="search-btn">
<Button @click="_formSearch" type="primary">搜索</Button>
</Form-item>
</Form>
</Col>
<!--操作-->
<Col span="24">
<btn-list :open="searchOpen" :msg="btn" :showSearchBtn="true" @on-result-change="_btnClick"
class="contHide"></btn-list>
</Col>
<!-- 表格 -->
<Col span="24">
<PTVXETable ref="pageTable" :tableHeight="tableHeight"
@on-result-change="_tableResultChange" :icon-msg="iconMsg" :getPage="getPage">
<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.dateTime">
{{scope.row[item.key]?$dateformat(scope.row[item.key],'yyyy-mm-dd HH:MM'):''}}
</div>
<div v-else>{{scope.row[item.key]}}</div>
</template>
</vxe-table-column>
</PTVXETable>
</Col>
</Row>
<div slot="footer">
<modal-footer ref="footerModal" :footer="footerList" @on-result-change="_footerResult" />
</div>
</Modal>
<ItemOriginalRecordEdit ref="recordEditModal"></ItemOriginalRecordEdit>
<ItemView ref="itemViewModal" @on-result-change="_page"></ItemView>
<CreateSummarySheet ref="createModal" @on-result-change="_certificateSelectExcelBack"></CreateSummarySheet>
</div>
</template>
<script>
/**
* 原始记录查看
*/
import Global from '../../../api/config'
import { soilReport, soilSample, soilTest } from '../../../api'
import ItemOriginalRecordEdit from './OriginalRecordEdit'
import ItemView from './ItemView'
import CreateSummarySheet from './CreateSummarySheet'
export default {
components: {
ItemOriginalRecordEdit,
ItemView,
CreateSummarySheet
},
data() {
return {
currentComponent: '',
getPage: {},
btn: [
{
type: 'primary',
id: '',
name: '生成报告'
}
],
selectIds: [],
showModal: false,
footerList: [
{ id: '', name: '取消', type: '' },
{ id: '', name: '关闭', type: 'primary' }
],
iconMsg: [
{
type: 'md-create',
id: '',
name: '编辑'
},
{
type: 'ios-book',
id: '',
name: '查看项目报告'
},
{ type: 'md-trash', id: '', name: '删除' }
],
pageColumns: [
{ title: '项目名称', key: 'expName' },
{ title: '试验科室', key: 'groupName' },
{ title: '备注', key: 'remark' },
{ title: '创建人', key: 'uname' },
{ title: '创建时间', key: 'ctime', dateTime: true }
],
formObj: {
entrustId: '',
expName: undefined
},
searchOpen: false
}
},
computed: {
tableHeight: function() {
if (this.searchOpen) {
return this.$tableHeight('', 340)
} else {
return this.$tableHeight('tabNoSearch')
}
}
},
methods: {
_componentResult(data) {
switch (this.currentComponent) {
case 'EditDateModal':
this._updateDate(data)
break
default:
this._page()
}
},
_updateDate(date) {
this.$store
.dispatch('PrintForm/updateTimeBatch', {
ids: this.selectIds.join(','),
fillInTime: date
})
.then(() => {
if (this.$store.state.PrintForm.success) {
this._page()
this.$Message.success('更新成功!')
}
})
},
_btnClick(msg, componentName) {
this.currentComponent = componentName
this.$nextTick(function() {
switch (msg) {
case '生成报告':
this._reportMake()
break
case 'search':
this.searchOpen = !this.searchOpen
break
}
})
},
_reportMake(data) {
if (this.selectIds.length === 0) {
this.$Message.warning('请至少选择一条数据')
} else {
this._itemReportMake(data)
}
},
_itemReportMake(data) {
// this.itemName = data.name
// this.selectId = data.id
this.$refs.createModal._open()
},
_certificateSelectExcelBack(data) {
if (data) {
console.log(this.selectIds)
console.log(data)
this._makeCodeExcel(data)
} else {
this.$refs.pageTable._hideLoading()
}
},
_makeCodeExcel: async function(data) {
this.$refs.pageTable._hideLoading()
const result = await soilSample.generateReport({
entrustId: this.formObj.entrustId,
expReportIds: this.selectIds,
templateId: data.id
})
if (result) {
// await this._page()
if (result === null || result === undefined) {
this.$Message.warning('证书编制失败,请联系管理员!')
this.$refs.pageTable._hideLoading()
return false
} else {
this._viewReport(result)
}
}
},
_viewReport(data) {
if (data) {
this.$openWindowModeless({
objectKey: data.objectKey,
idType: 10,
id: data.id,
isReport: 4
})
}
},
_reportMakeOk: async function() {
const result = await soilSample.reportMake({
entrustId: this.formObj.entrustId,
originalList: this.selectIds
})
if (result) {
this.$Message.success('报告成功生成')
this._page()
this.$emit('on-result-change')
}
this.$refs.pageTable._hideLoading()
},
openTooltip() {
this.$notify.info({
title: '提示',
message: '正在生成,请稍后',
duration: 3000
})
},
_footerResult(name) {
switch (name) {
case '取消':
this._cancel()
break
case '关闭':
this._cancel()
break
}
},
_cancel() {
this.$emit('on-result-change')
this.$refs.pageTable._hideLoading()
this.$refs.footerModal._hideLoading()
this.showModal = false
},
_iconClick(res, data, currentComponent) {
this.currentComponent = currentComponent
this.$nextTick(() => {
switch (res) {
case '编辑':
// this.$refs.recordEditModal._openWithType(
// data.originalRecordId,
// 'ENVTESTMAKEEDIT'
// )
this._reportMakeLook(data)
break
case '查看项目报告':
this._reportView(data)
// this._recordView(data.originalRecordId)
break
case '查看试验项目':
this._itemView(data.id)
break
case '删除':
this._deleteByIds([data.id])
break
}
})
},
// 查看试验项目
_itemView(id) {
this.$refs.itemViewModal._open(id)
},
_reportView(data) {
if (data.objectKey) {
this._reportMakeLook(data)
} else {
this._recordView(data.originalRecordId)
}
},
_reportMakeLook: async function(data) {
console.log(data)
const result = await soilReport.expReportGetById(data.id)
// this._viewReport(data)
// const result = await soilReport.getExcelOriginalRecord(data.id)
if (result) {
console.log('result')
this._viewReport(result)
}
},
// _viewReport(data) {
// if (data) {
// this.$openWindowModeless({
// objectKey: data.objectKey,
// idType: 11,
// id: data.id,
// isReport: 4
// })
// }
// },
// 查看原始记录
_recordView(originalRecordId) {
let recordUrl = ''
if (process.env.NODE_ENV === 'production') {
recordUrl = 'http://record.patzn.com'
} else {
recordUrl = Global.recordURL
}
// eslint-disable-next-line no-undef
layx.iframe(
'labRecordWriteOriView',
'原始记录预览',
recordUrl + '/print/v1/form/' + originalRecordId + '?type=ENVTESTMAKE',
{
event: {
onload: {
after: function(layxWindow, winform) {
// eslint-disable-next-line no-undef
layx.max(winform.id)
}
}
}
}
)
},
_open(entrustId) {
this.formObj.entrustId = entrustId
this._page()
this.showModal = true
},
_tableResultChange(msg, data) {
switch (msg) {
case 'page':
this.getPage = this.$store.state.EnvItem.page
break
case 'selectIds':
this.selectIds = data
break
case 'iconClick':
this._iconClick(data.name, data.rowData, data.componentName)
break
case 'changeSize':
this._page()
break
}
},
_formSearch() {
this.$refs.pageTable._pageChange(1)
},
_page: async function() {
Object.assign(this.formObj, this.$refs.pageTable._searchParams())
const result = await soilTest.expReportPage(
this.$serializeForm(this.formObj)
)
if (result) {
this.$refs.pageTable._hideLoading()
this.getPage = result
}
},
// 删除原始记录
_deleteByIds(ids, content) {
this.$Modal.confirm({
title: '提示',
content: content || '确定删除该记录?',
onOk: () => {
this._deleteOk(ids)
}
})
},
_deleteOk: async function(ids) {
const result = await soilTest.deleteReport(ids)
if (result) {
this.$Message.success('删除成功')
this._page()
}
}
}
}
</script>
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<el-tab-pane label="样品台账" name="sample"> <el-tab-pane label="样品台账" name="sample">
<ReportMakeBySample ref="sampleTabs" @on-result-change="_sampleTabResult"></ReportMakeBySample> <ReportMakeBySample ref="sampleTabs" @on-result-change="_sampleTabResult"></ReportMakeBySample>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="报告台账" name="report"> <el-tab-pane label="试验项目报告台账" name="report">
<ReportInfoMake ref="reportTabs"></ReportInfoMake> <ReportInfoMake ref="reportTabs"></ReportInfoMake>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
......
<template>
<div>
<Row>
<Col span="24">
<Form id="formId" :label-width="80" inline onsubmit="return false">
<label class="label-sign"></label>
<Form-item label="模板名称:" class="search-item">
<Input v-model="formObj.alias" @on-enter="_formSearch" placeholder="请输入模板名称" clearable/>
</Form-item>
<Form-item class="search-btn" style="margin-left: -10px">
<Button @click="_formSearch" type="primary">搜索</Button>
</Form-item>
</Form>
</Col>
<Col span="24">
<PTVXETableHeight
ref="pageTable"
:table-height="300"
:get-page="getPage"
:is-radio="true"
@on-result-change="_tableResultChange"
select-data="true"
hide-checkbox>
<vxe-table-column
v-for="item in pageColumns"
:key="item.key"
:field="item.key"
:title="item.title"
:width="item.width"
:min-width="200"
:fixed="item.fixed?item.fixed:undefined"
sortable
>
<template slot-scope="scope">
<span v-if="item.dateTime">{{scope.row[item.key]?$dateformat(scope.row[item.key],'yyyy-mm-dd HH:MM:ss'):''}}</span>
<span v-else-if="item.judged">{{scope.row[item.key]===1?'是':'否'}}</span>
<span v-else>{{scope.row[item.key]}}</span>
</template>
</vxe-table-column>
</PTVXETableHeight>
</Col>
</Row>
</div>
</template>
<script>
import { soilAptitude } from '../../../api'
export default {
components: {},
data() {
return {
tableHeight: '400',
pageColumns: [
{ title: '模板名称', key: 'alias', width: 220 },
{ title: '类别', key: 'classType', width: 140 },
{ title: '备注', key: 'remark' }
],
getPage: {},
modalTitle: '报告模板',
sampleId: '',
formObj: {
name: undefined
},
selectData: []
}
},
methods: {
_tableResultChange(msg, data) {
console.log(msg)
switch (msg) {
case 'page':
this._page()
break
case 'changeSize':
this._page()
break
case 'selectData':
this.selectData = data
break
case 'singleSelect':
this.selectData = [data]
this.$emit('on-result-change', this.selectData)
break
case 'iconClick':
this._iconClick(data.name, data.rowData)
break
}
},
_open(sampleId) {
this.sampleId = sampleId || ''
this._page()
},
_formSearch() {
this.$refs.pageTable._pageChange(1)
},
_page: async function() {
Object.assign(this.formObj, this.$refs.pageTable._searchParams())
const result = await soilAptitude.pageSummaryTemplate(
this.$serializeForm(this.formObj)
)
if (result) {
this.getPage = result
this.$refs.pageTable._hideLoading()
}
}
}
}
</script>
...@@ -5,28 +5,6 @@ ...@@ -5,28 +5,6 @@
<div class="layout-content-main"> <div class="layout-content-main">
<Row> <Row>
<!--查询--> <!--查询-->
<Col span="24">
<Form :label-width="90" v-show="searchOpen" inline onsubmit="return false">
<label class="label-sign"></label>
<Form-item class="search-item" label="报告编号:">
<Input @on-enter="_formSearch" v-model="formObj.reportSn" placeholder="请输入报告编号" clearable/>
</Form-item>
<Form-item class="search-item" label="样品编号:">
<Input @on-enter="_formSearch" v-model="formObj.sampleNum" placeholder="请输入样品编号" clearable/>
</Form-item>
<Form-item class="search-item" label="样品名称:">
<Input @on-enter="_formSearch" v-model="formObj.sampleName" 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"> <Col span="24">
<PTVXETable ref="pageTable" :pageColumns="pageColumns" :tableHeight="tableHeight" <PTVXETable ref="pageTable" :pageColumns="pageColumns" :tableHeight="tableHeight"
...@@ -82,7 +60,8 @@ ...@@ -82,7 +60,8 @@
<script> <script>
import global from '../../../../api/config' import global from '../../../../api/config'
import http from '../../../../api/http' import http from '../../../../api/http'
import { soilReport } from '../../../../api' import { soilReport, soilTest } from '../../../../api'
import Global from '../../../../api/config'
/** /**
* 报告编制的-待办-报告台账 * 报告编制的-待办-报告台账
...@@ -100,6 +79,7 @@ export default { ...@@ -100,6 +79,7 @@ export default {
btn: [{ id: 'food-report-make-batch-down', name: '下载' }], btn: [{ id: 'food-report-make-batch-down', name: '下载' }],
getPage: {}, getPage: {},
pageColumns: [ pageColumns: [
{ title: '试验项目', key: 'expName', width: 180, fixed: 'left' },
{ title: '创建人', key: 'uname', width: 180, fixed: 'left' }, { title: '创建人', key: 'uname', width: 180, fixed: 'left' },
{ title: '创建时间', key: 'ctime', width: 180, dateTime: true } { title: '创建时间', key: 'ctime', width: 180, dateTime: true }
], ],
...@@ -212,7 +192,8 @@ export default { ...@@ -212,7 +192,8 @@ export default {
this.$refs.refModal._open(data) this.$refs.refModal._open(data)
break break
case '预览/编辑报告': case '预览/编辑报告':
this._viewReport(data) this._reportView(data)
// this._viewReport(data)
break break
case '操作记录': case '操作记录':
this._record(data.id) this._record(data.id)
...@@ -238,16 +219,57 @@ export default { ...@@ -238,16 +219,57 @@ export default {
_upload(id) { _upload(id) {
this.$refs.refModal._open(id) this.$refs.refModal._open(id)
}, },
_reportView(data) {
if (data.objectKey) {
this._reportMakeLook(data)
} else {
this._recordView(data.originalRecordId)
}
},
_reportMakeLook: async function(data) {
console.log(data)
const result = await soilReport.expReportGetById(data.id)
// this._viewReport(data)
// const result = await soilReport.getExcelOriginalRecord(data.id)
if (result) {
console.log('result')
this._viewReport(result)
}
},
_viewReport(data) { _viewReport(data) {
if (data) { if (data) {
this.$openWindowModeless({ this.$openWindowModeless({
objectKey: data.objectKey, objectKey: data.objectKey,
idType: 10, idType: 11,
id: data.id, id: data.id,
isReport: 4 isReport: 4
}) })
} }
}, },
_recordView(originalRecordId) {
let recordUrl = ''
if (process.env.NODE_ENV === 'production') {
recordUrl = 'http://record.patzn.com'
} else {
recordUrl = Global.recordURL
}
// eslint-disable-next-line no-undef
layx.iframe(
'labRecordWriteOriView',
'原始记录预览',
recordUrl + '/print/v1/form/' + originalRecordId + '?type=ENVTESTMAKE',
{
event: {
onload: {
after: function(layxWindow, winform) {
// eslint-disable-next-line no-undef
layx.max(winform.id)
}
}
}
}
)
},
_tableResultChange(msg, data) { _tableResultChange(msg, data) {
switch (msg) { switch (msg) {
case 'page': case 'page':
...@@ -283,7 +305,7 @@ export default { ...@@ -283,7 +305,7 @@ export default {
}, },
_page: async function() { _page: async function() {
Object.assign(this.formObj, this.$refs.pageTable._searchParams()) Object.assign(this.formObj, this.$refs.pageTable._searchParams())
const result = await soilReport.reportPage( const result = await soilTest.pageExperimentReport(
this.$serializeForm(this.formObj) this.$serializeForm(this.formObj)
) )
if (result) { if (result) {
......
...@@ -80,11 +80,6 @@ ...@@ -80,11 +80,6 @@
<!-- eslint-disable-next-line vue/require-component-is --> <!-- eslint-disable-next-line vue/require-component-is -->
<component ref="refModal" :is="currentComponent" @on-result-change="_componentResult"></component> <component ref="refModal" :is="currentComponent" @on-result-change="_componentResult"></component>
</keep-alive> </keep-alive>
<!-- <SampleByMakeModal ref="sampleByMakeModal"></SampleByMakeModal>-->
<!-- <Operation ref="operation"></Operation>-->
<!-- <FileManage ref="FileManage"></FileManage>-->
<!-- <OriginalRecordView ref="originalRecordView" @on-result-change="_page"></OriginalRecordView>-->
<!-- <UploadByReport ref="uploadReport" @on-result-change="_page"></UploadByReport>-->
</div> </div>
</template> </template>
<script> <script>
...@@ -93,6 +88,7 @@ import SampleByMakeModal from '../SampleByMakeModal' ...@@ -93,6 +88,7 @@ import SampleByMakeModal from '../SampleByMakeModal'
import Operation from '../../../../components/operation/Operation' import Operation from '../../../../components/operation/Operation'
import OriginalRecordView from '../OriginalRecordView' import OriginalRecordView from '../OriginalRecordView'
import UploadByReport from '../UploadByReport' import UploadByReport from '../UploadByReport'
import ItemReportView from '../ItemReportView'
export default { export default {
components: { components: {
// eslint-disable-next-line vue/no-unused-components // eslint-disable-next-line vue/no-unused-components
...@@ -102,7 +98,9 @@ export default { ...@@ -102,7 +98,9 @@ export default {
// eslint-disable-next-line vue/no-unused-components // eslint-disable-next-line vue/no-unused-components
OriginalRecordView, OriginalRecordView,
// eslint-disable-next-line vue/no-unused-components // eslint-disable-next-line vue/no-unused-components
UploadByReport UploadByReport,
// eslint-disable-next-line vue/no-unused-components
ItemReportView
}, },
data() { data() {
return { return {
...@@ -142,6 +140,11 @@ export default { ...@@ -142,6 +140,11 @@ export default {
currentComponent: OriginalRecordView currentComponent: OriginalRecordView
}, },
{ {
type: 'ios-list-box',
id: '',
name: '查看试验项目报告'
},
{
type: 'ios-cloud-upload', type: 'ios-cloud-upload',
id: '', id: '',
name: '上传报告' name: '上传报告'
...@@ -176,11 +179,6 @@ export default { ...@@ -176,11 +179,6 @@ export default {
type: 'primary', type: 'primary',
id: '', id: '',
name: '提交' name: '提交'
},
{
type: 'primary',
id: 'food-report-make-maintain-info',
name: '信息维护'
} }
], ],
selectIds: [], selectIds: [],
...@@ -291,6 +289,9 @@ export default { ...@@ -291,6 +289,9 @@ export default {
case '查看原始记录': case '查看原始记录':
this._viewRecord(data.id) this._viewRecord(data.id)
break break
case '查看试验项目报告':
this._viewItemRecord(data.id)
break
case '上传报告': case '上传报告':
this._uploadReport(data.id) this._uploadReport(data.id)
break break
...@@ -318,6 +319,12 @@ export default { ...@@ -318,6 +319,12 @@ export default {
this.$refs.refModal._open(id) this.$refs.refModal._open(id)
}) })
}, },
_viewItemRecord(id) {
this.currentComponent = 'ItemReportView'
this.$nextTick(() => {
this.$refs.refModal._open(id)
})
},
_sampleManage(id) { _sampleManage(id) {
this.currentComponent = 'SampleByMakeModal' this.currentComponent = 'SampleByMakeModal'
this.$nextTick(() => { this.$nextTick(() => {
......
...@@ -8,11 +8,8 @@ ...@@ -8,11 +8,8 @@
<Col span="24"> <Col span="24">
<Form id="search-form-make-sample" :label-width="90" v-show="searchOpen" inline onsubmit="return false"> <Form id="search-form-make-sample" :label-width="90" v-show="searchOpen" inline onsubmit="return false">
<label class="label-sign"></label> <label class="label-sign"></label>
<Form-item class="search-item" label="样品编号:"> <Form-item class="search-item" label="试样编号:">
<Input @on-enter="_formSearch" v-model="formObj.num" placeholder="请输入样品编号" clearable/> <Input @on-enter="_formSearch" v-model="formObj.sampleCode" placeholder="请输入试样编号" clearable/>
</Form-item>
<Form-item class="search-item" label="样品名称:">
<Input @on-enter="_formSearch" v-model="formObj.name" placeholder="请输入样品名称" clearable/>
</Form-item> </Form-item>
<Form-item class="search-btn"> <Form-item class="search-btn">
<Button @click="_formSearch" type="primary">搜索</Button> <Button @click="_formSearch" type="primary">搜索</Button>
...@@ -129,18 +126,9 @@ export default { ...@@ -129,18 +126,9 @@ export default {
selectIds: [], selectIds: [],
selectData: [], selectData: [],
formObj: { formObj: {
entrustId: '', entrustId: undefined,
contractId: '', contractId: undefined,
num: '', sampleCode: undefined
name: '',
detectType: '',
taskSource: '',
onlyReportMake: 1,
reportDateBegin: '',
reportDateEnd: '',
reported: 0,
personal: 0,
dataPushed: ''
}, },
dateList: [], dateList: [],
type: '', type: '',
...@@ -196,20 +184,7 @@ export default { ...@@ -196,20 +184,7 @@ export default {
mounted() {}, mounted() {},
methods: { methods: {
// 初始化值 // 初始化值
_resetData(contractId, type, personal) {
this.formObj = this.$resetFields(this.formObj)
this.formObj.contractId = contractId
this.formObj.reported = 0
this.formObj.onlyReportMake = 1
this.formObj.personal = personal
this.type = type
this.dateList = []
},
// 当前列表有值,则不会重新调page接口 // 当前列表有值,则不会重新调page接口
_getPage(contractId, type, personal) {
this._resetData(contractId, type, personal)
this.getPage = this.$store.state.FoodSample.page
},
_reportDateChange(data) { _reportDateChange(data) {
this.formObj.reportDateBegin = data[0] this.formObj.reportDateBegin = data[0]
this.formObj.reportDateEnd = data[1] this.formObj.reportDateEnd = data[1]
......
...@@ -54,7 +54,8 @@ export default { ...@@ -54,7 +54,8 @@ export default {
{ title: '属性', key: 'dataAttribute', width: 120 }, { title: '属性', key: 'dataAttribute', width: 120 },
{ title: '列位置', key: 'columnPlace', width: 120 }, { title: '列位置', key: 'columnPlace', width: 120 },
{ title: '合并开始列', key: 'mergeBegin', width: 120 }, { title: '合并开始列', key: 'mergeBegin', width: 120 },
{ title: '合并结束列', key: 'mergeEnd', width: 120 } { title: '合并结束列', key: 'mergeEnd', width: 120 },
{ title: '合并行数', key: 'mergeRowNum', width: 120 }
], ],
getPage: {}, getPage: {},
iconMsg: [{ type: 'md-create', id: '', name: '编辑' }], iconMsg: [{ type: 'md-create', id: '', name: '编辑' }],
......
...@@ -44,6 +44,16 @@ ...@@ -44,6 +44,16 @@
placeholder="请输入合并结束列" placeholder="请输入合并结束列"
/> />
</Form-item> </Form-item>
<Form-item label="合并行数" prop="mergeRowNum" class="width-48">
<Input
v-model="formObj.mergeRowNum"
@keydown.native="channelInputLimit"
name="mergeRowNum"
type="number"
onmousewheel="return false"
placeholder="请输入合并行数"
/>
</Form-item>
</div> </div>
</Form> </Form>
</div> </div>
...@@ -77,6 +87,7 @@ export default { ...@@ -77,6 +87,7 @@ export default {
mainType: undefined, mainType: undefined,
smallType: undefined, smallType: undefined,
testValue: undefined, testValue: undefined,
mergeRowNum: undefined,
mergeBegin: undefined, mergeBegin: undefined,
mergeEnd: undefined mergeEnd: undefined
}, },
......
...@@ -32,24 +32,14 @@ ...@@ -32,24 +32,14 @@
placeholder="请输入样品开始行" placeholder="请输入样品开始行"
/> />
</Form-item> </Form-item>
<Form-item label="数据占用行" prop="dataTotalRow" class="width-48"> <Form-item label="数据占用行" prop="sampleMergerNum" class="width-48">
<el-input <el-input
v-model="formObj.dataTotalRow" v-model="formObj.sampleMergerNum"
@keydown.native="channelInputLimit"
name="sampleBeginCol"
type="number"
onmousewheel="return false"
placeholder="请输入数据占用行"
/>
</Form-item>
<Form-item label="总列数" prop="totalColumn" class="width-48">
<el-input
v-model="formObj.totalColumn"
@keydown.native="channelInputLimit" @keydown.native="channelInputLimit"
name="sampleMergerNum" name="sampleMergerNum"
type="number" type="number"
onmousewheel="return false" onmousewheel="return false"
placeholder="请输入总列数" placeholder="请输入数据占用行"
/> />
</Form-item> </Form-item>
<Form-item label="模板样品数" prop="templateSampleNum" class="width-48"> <Form-item label="模板样品数" prop="templateSampleNum" class="width-48">
......
<template>
<div>
<Modal v-model="showModal" width="1000" class="modal-footer-none">
<div slot="header">{{modalTitle}}</div>
<div>
<Form id="index-right-form" :label-width="80" inline onsubmit="return false">
<label class="label-sign"></label>
<Form-item class="search-item" label="属性名称:">
<Input v-model="formObj.attributeName" @on-enter="_formSearch" placeholder="请输入属性名称" clearable/>
</Form-item>
<Form-item class="search-btn">
<Button @click="_formSearch" type="primary">搜索</Button>
</Form-item>
</Form>
<btn-list :msg="btn" @on-result-change="_btnClick" class="contHide" style="margin-bottom: 10px;"/>
<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">
<template slot-scope="scope">
<span v-if="item.key==='defaulted'">{{scope.row[item.key]?'是':'否'}}</span>
<span v-else>{{scope.row[item.key]}}</span>
</template>
</vxe-table-column>
</PTVXETable>
</div>
</Modal>
<ConfigTemplateEdit ref="indexEdit" @on-result-change="_page"></ConfigTemplateEdit>
</div>
</template>
<script>
import { soilAptitude } from '../../../api'
import ConfigTemplateEdit from './ConfigTemplateEdit'
export default {
components: { ConfigTemplateEdit },
data() {
return {
id: '',
modalTitle: '',
showModal: false,
btn: [
{ type: 'success', id: '', name: '添加配置' },
{ type: 'error', id: '', name: '删除' }
],
tableHeight: document.documentElement.clientHeight - 180,
pageColumns: [
{ title: '属性名称', key: 'attributeName' },
{ title: '属性', key: 'dataAttribute', width: 120 },
{ title: '列位置', key: 'columnPlace', width: 120 },
{ title: '合并开始列', key: 'mergeBegin', width: 120 },
{ title: '合并结束列', key: 'mergeEnd', width: 120 },
{ title: '合并行数', key: 'mergeRowNum', width: 120 }
],
getPage: {},
iconMsg: [{ type: 'md-create', id: '', name: '编辑' }],
selectIds: [],
formObj: {
attributeName: undefined,
templateId: undefined
},
// 资质信息
aptitudeItemInfo: {}
}
},
methods: {
_open(data) {
console.log(data)
this.aptitudeItemInfo = data
this.formObj = this.$resetFields(this.formObj)
this.formObj.templateId = data.id
this.id = data.id
this.modalTitle = data.name + ' 指标管理'
this.showModal = true
this._page()
},
_page: async function() {
Object.assign(this.formObj, this.$refs.pageTable._searchParams())
const result = await soilAptitude.pageTemplateConfig(this.formObj)
if (result) {
console.log(result)
this.getPage = result
this.$refs.pageTable._hideLoading()
}
},
_formSearch() {
this.$refs.pageTable._pageChange(1)
},
_tableResultChange(msg, data) {
switch (msg) {
case 'page':
break
case 'selectIds':
this.selectIds = data
break
case 'iconClick':
this._iconClick(data.name, data.rowData)
break
case 'changeSize':
this._page()
break
}
},
_iconClick(res, data) {
switch (res) {
case '编辑':
this._editModal(true, data)
break
}
},
_editModal(edit, data) {
if (edit) {
this._getById(data)
} else {
this.$refs.indexEdit._open(this.id, '')
}
},
_getById: async function(data) {
const result = await soilAptitude.expReportTemplateConfig(data.id)
console.log(result)
if (result) {
this.$refs.indexEdit._open('', result)
}
},
_btnClick(msg) {
switch (msg) {
case '添加配置':
this._editModal(false)
break
case '删除':
this._deleteByIds()
break
}
},
_deleteByIds() {
if (this.selectIds.length === 0) {
// this.$msgTip('warning')
this.$message.warning('请至少选择一条记录')
} else {
this.$Modal.confirm({
title: '提示',
content: '确定删除 ' + this.selectIds.length + ' 条记录?',
onOk: () => {
this._delOk(this.selectIds)
}
})
}
},
_delOk: async function(ids) {
const result = await soilAptitude.deleteReportTemplateConfig(ids)
if (result) {
this.$message.success('删除成功')
this._page()
}
}
}
}
</script>
<template>
<div>
<Modal v-model="showModal" :mask-closable="false" @on-visible-change="_visibleChange" width="900">
<p slot="header">{{modalTitle}}</p>
<div>
<Form ref="formObj" :id="formId" :model="formObj" :rules="ruleValidate" :label-width="100" inline>
<div>
<Form-item label="属性名称" prop="attributeName" class="width-48">
<Input v-model="formObj.attributeName" name="attributeName" placeholder="请输入属性名称"/>
</Form-item>
<Form-item label="属性" prop="dataAttribute" class="width-48">
<Input v-model="formObj.dataAttribute" name="dataAttribute"
placeholder="请输入属性"/>
</Form-item>
<Form-item label="列位置" prop="columnPlace" class="width-48">
<Input
v-model="formObj.columnPlace"
@keydown.native="channelInputLimit"
name="columnPlace"
type="number"
onmousewheel="return false"
placeholder="请输入列位置"
/>
</Form-item>
<Form-item label="合并开始列" prop="mergeBegin" class="width-48">
<Input
v-model="formObj.mergeBegin"
@keydown.native="channelInputLimit"
name="mergeBegin"
type="number"
onmousewheel="return false"
placeholder="请输入合并开始列"
/>
</Form-item>
<Form-item label="合并结束列" prop="mergeEnd" class="width-48">
<Input
v-model="formObj.mergeEnd"
@keydown.native="channelInputLimit"
name="mergeEnd"
type="number"
onmousewheel="return false"
placeholder="请输入合并结束列"
/>
</Form-item>
<Form-item label="合并行数" prop="mergeRowNum" class="width-48">
<Input
v-model="formObj.mergeRowNum"
@keydown.native="channelInputLimit"
name="mergeRowNum"
type="number"
onmousewheel="return false"
placeholder="请输入合并行数"
/>
</Form-item>
<Form-item label="sheet索引" prop="sheetNum" class="width-48">
<Input
v-model="formObj.sheetNum"
@keydown.native="channelInputLimit"
name="sheetNum"
type="number"
onmousewheel="return false"
placeholder="请输入sheet索引"
/>
</Form-item>
</div>
</Form>
</div>
<div slot="footer">
<modal-footer ref="footerModal" @on-result-change="_footerResult" :footer="footerList"></modal-footer>
</div>
</Modal>
</div>
</template>
<script>
/**
* 添加编辑环境资质项目表
*/
import { soilAptitude } from '../../../api'
export default {
components: {},
data() {
return {
activeName: '',
hideUserSel: true,
id: '',
modalTitle: '',
templateId: '',
formObj: {
attributeName: undefined,
columnPlace: undefined,
unit: undefined,
status: undefined,
mainType: undefined,
smallType: undefined,
testValue: undefined,
mergeRowNum: undefined,
mergeBegin: undefined,
mergeEnd: undefined,
sheetNum: undefined
},
ruleValidate: {
name: [{ required: true, message: '指标名称不能为空', trigger: 'blur' }]
},
showModal: false,
footerList: [
{ name: '取消', type: '' },
{ name: '保存', type: 'primary' }
],
microbedList: [{ value: 0, name: '否' }, { value: 1, name: '是' }],
// 检测依据
testBasisData: [],
// 类别下拉数组
typeData: [],
// 检测科室
groupData: [],
groupName: '',
// 主检人
userData: [],
// 单位
unitData: [],
aptitudeData: [],
aptitude: '',
// testBasisName: '',
computeTypeList: [],
tester: '',
marksList: [],
detectionTypeList: [],
testItemData: [],
formId: ''
}
},
mounted() {
// 检测科室
// this._getUserGroup()
// 检测依据
// this._getTestBasisList()
// 资质
// this._getAptitudeList()
// this._getType()
},
methods: {
// 字典
_dicSearch() {
this.$store.dispatch('LmsBaseDict/getItem', '食品检出类别').then(() => {
const result = this.$store.state.LmsBaseDict.item
this.detectionTypeList = result
if (this.$string(this.id).isEmpty()) {
// 添加界面默认第一个
this.formObj.detectionType = result.length > 0 ? result[0].name : ''
}
})
},
channelInputLimit(e) {
const key = e.key
// 不允许输入'e'和'.'
if (key === 'e' || key === '.') {
e.returnValue = false
return false
}
return true
},
_testBasisChange(msg, data) {
switch (msg) {
case 'select':
this.formObj.stdId = data.id
this.formObj.testBasis = data.stdNum
this.formObj.testBasisName = data.name
this.formObj.testMethod = data.stdNum
this.$refs.formObj.validateField('testBasis')
break
case 'query':
this.formObj.stdId = ''
this.formObj.testMethod = ''
this.formObj.testBasis = data.stdNum
this.formObj.testBasisName = ''
this._getTestBasisList(data)
break
case 'blur':
if (this.formObj.stdId === '') {
this.formObj.testBasis = ''
this.formObj.testMethod = ''
this._getTestBasisList()
}
this.$refs.formObj.validateField('testBasis')
}
},
_selectJudgeType(data) {
this.formObj.microbed = data
},
_footerResult(name) {
switch (name) {
case '取消':
this._cancel()
break
case '保存':
this._ok()
break
case '填写说明':
this.$refs.introduction._open()
this._hideLoading()
break
}
},
_hideLoading() {
this.$refs.footerModal._hideLoading()
},
_open(id, formObj) {
this.formId = 'edit-form-template-config'
this._hideLoading()
this.$refs.formObj.resetFields()
if (this.$string(formObj).isEmpty()) {
this.id = ''
this.templateId = id
this.modalTitle = '添加试验指标'
} else {
this.hideUserSel = true
this.id = formObj.id
this.formObj = formObj
this.modalTitle = '编辑试验指标'
}
this.showModal = true
},
// 获取检测项目
_getItemList(value) {
const data = {}
if (value) {
Object.assign(data, { name: value })
}
this.$store.dispatch('FoodAptitudeItem/getTestItem', data).then(() => {
this.testItemData = this.$store.state.FoodAptitudeItem.list
})
},
// 检测项目结果
_testItemChange(msg, data) {
switch (msg) {
case 'select':
this.formObj.name = data
this.$refs.formObj.validateField('name')
this._changeMicrobed()
break
case 'query':
this.formObj.name = data
this._getItemList(data)
break
case 'blur':
this._changeMicrobed()
break
}
},
_changeMicrobed() {
// 新增或者导入新增资质时 如果检测项目名称带‘菌’字,则是否微生物默认为‘是’
if (this.id === '') {
if (this.formObj.name.indexOf('菌') > -1) {
this.$set(this.formObj, 'microbed', 1)
} else {
this.$set(this.formObj, 'microbed', 0)
}
}
},
_clearMarks() {
this.marksList = []
},
// 主检人&检测科室
_groupChange(data) {
if (data) {
this.groupName = data.label
this.formObj.groupId = data.value
this.formObj.tester = ''
this.formObj.testerId = ''
this._getUserList(data.value)
}
},
_userChange(data) {
if (data) {
this.formObj.testerId = data.value
this.formObj.tester = data.label
}
},
// 单位
_unitChange(msg, data) {
switch (msg) {
case 'select':
this.formObj.unit = data
break
case 'query':
this._getUnitList(data)
break
}
},
// 获取表数据
_resultChange(msg) {
this.showModal = false
this.$refs.footerModal._hideLoading()
this.$Message.success(msg)
this.$emit('on-result-change')
this.$refs.footerModal._hideLoading()
},
_ok() {
this.$refs.formObj.validate(valid => {
if (valid) {
const data = this.$serialize('edit-form-template-config')
if (this.$string(this.id).isEmpty()) {
data.templateId = this.templateId
// 添加
this._save(data)
} else {
// 编辑
this._edit({ id: this.formObj.id, obj: data })
}
} else {
this.$refs.footerModal._hideLoading()
this.$Message.error('表单验证失败!')
}
})
},
_save: async function(data) {
console.log(data)
const result = await soilAptitude.saveReportTemplateConfig(data)
console.log(result)
if (result) {
this._resultChange('添加成功!')
}
},
_edit: async function(data) {
const result = await soilAptitude.expReportTemplateConfigEdit(data)
if (result) {
this._resultChange('编辑成功!')
}
},
_cancel() {
this.showModal = false
this._hideLoading()
},
// 切换tab
_changeTabs(tab, event) {
if (tab.name === 'testStep') {
this.$refs.testStepByAptitude._open(
this.formObj.stepId,
this.formObj.id
)
}
},
_visibleChange(data) {
if (!data && this.$showBtn('food-aptitude-item-step-edit')) {
this.$emit('on-result-change')
this.$refs.testStepByAptitude._clear()
}
}
}
}
</script>
<template>
<div>
<Modal v-model="showEditModal" :mask-closable="false">
<p slot="header">{{modalTitle}}</p>
<div v-show="isLoad">
<Spin fix>
<Icon type="load-c" size=18 class="file-spin-icon-load"></Icon>
<div>正在上传,请稍后...</div>
</Spin>
</div>
<div>
<Form id="edit-form" ref="formObj" :model="formObj" :rules="ruleValidate" :label-width="95" inline class="inputBox">
<Form-item label="类别" prop="classType" style="width: 100%">
<el-select v-model="formObj.classType" placeholder="请选择类别" size="small" clearable>
<el-option :label="item.value" :value="item.value" v-for="(item,index) in typeList"
:key="index"></el-option>
</el-select>
</Form-item>
<Form-item label="报告模板名称" prop="alias" style="width: 100%">
<Input v-model="formObj.alias" name="alias" placeholder="请输入报告模板名称"></Input>
</Form-item>
<Form-item label="备注" prop="remark" style="width: 100%">
<Input v-model="formObj.remark" name="remark" placeholder="请输入备注"></Input>
</Form-item>
<Form-item label="样品开始行" prop="sampleBeginRow" class="width-48">
<el-input
v-model="formObj.sampleBeginRow"
@keydown.native="channelInputLimit"
name="sampleBeginRow"
type="number"
onmousewheel="return false"
placeholder="请输入样品开始行"
/>
</Form-item>
<Form-item label="数据占用行" prop="sampleMergerNum" class="width-48">
<el-input
v-model="formObj.sampleMergerNum"
@keydown.native="channelInputLimit"
name="sampleMergerNum"
type="number"
onmousewheel="return false"
placeholder="请输入数据占用行"
/>
</Form-item>
<Form-item label="模板样品数" prop="templateSampleNum" class="width-48">
<el-input
v-model="formObj.templateSampleNum"
@keydown.native="channelInputLimit"
name="templateSampleNum"
type="number"
onmousewheel="return false"
placeholder="请输入模板样品数"
/>
</Form-item>
</Form>
</div>
<div slot="footer" class="btn-width clearfix">
<Button @click="_cancel" style="margin-left: 8px;">取消</Button>
<Button @click="_ok" type="primary" style="margin-bottom: 0;float: right">保存</Button>
</div>
</Modal>
</div>
</template>
<script>
/**
* 添加编辑
*/
import { soilAptitude } from '../../../api'
const defVal = {
alias: undefined,
classType: undefined,
dataTotalRow: undefined,
totalColumn: undefined,
remark: undefined,
sampleBeginRow: undefined,
sampleBeginCol: undefined,
sampleMergerNum: undefined,
templateSampleNum: undefined,
classifyId: 0
}
export default {
data() {
const validatesampleBeginRow = (rule, value, callback) => {
if (this.formObj.sampleBeginRow === '') {
callback(new Error('内容不能为空'))
} else {
callback()
}
}
const validatetemplateSampleNum = (rule, value, callback) => {
if (this.formObj.templateSampleNum === '') {
callback(new Error('内容不能为空'))
} else {
callback()
}
}
return {
modalTitle: '编辑',
formObj: defVal,
ruleValidate: {
alias: [
{ required: true, message: '模板名称不能为空', trigger: 'blur' }
],
sampleBeginRow: [
{
required: true,
validator: validatesampleBeginRow,
message: '样品开始行不能为空',
trigger: 'blur'
}
],
templateSampleNum: [
{
required: true,
validator: validatetemplateSampleNum,
message: '模板样品数不能为空',
trigger: 'blur'
}
],
classType: [
{ required: true, message: '类别不能为空', trigger: 'blur' }
]
},
typeList: [
{
value: '力学'
},
{
value: '物性'
}
],
id: '',
showEditModal: false,
dataObj: {
file: ''
},
pname: '',
action: '',
isLoad: false,
isDisable: true,
format: ['docx', 'xlsx', 'xls']
}
},
methods: {
_onKeyUp() {
if (this.formObj.alias === '' || this.formObj.classType === '') {
this.isDisable = true
} else {
this.isDisable = false
this.action =
global.baseURL +
'/meter/v1/file_template/upload_template/?classType=' +
this.formObj.classType +
'&alias=' +
this.formObj.alias +
'&remark=' +
this.formObj.remark
}
},
channelInputLimit(e) {
const key = e.key
// 不允许输入'e'和'.'
if (key === 'e' || key === '.') {
e.returnValue = false
return false
}
return true
},
_selectZtree() {
// this.$refs.ztreeModal._openZtree()
},
_cancel() {
this.showEditModal = false
},
_ok() {
this.$refs.formObj.validate(valid => {
console.log('valid', valid)
if (valid) {
this._editOk()
} else {
this.$Message.error('请输入必填值')
}
})
},
_editOk: async function() {
const result = await soilAptitude.expReportTemplateEdit({
id: this.id,
formObj: this.formObj
})
if (result) {
this.$message.success('编辑成功')
this.showEditModal = false
this.$emit('on-result-change')
}
},
_open(data) {
console.log(data)
this.showEditModal = true
this.isLoad = false
this.id = data.id
this.formObj.alias = data.alias
this.formObj.remark = data.remark
this.formObj.classType = data.classType
this.formObj.sampleBeginRow = data.sampleBeginRow
this.formObj.sampleBeginCol = data.sampleBeginCol
this.formObj.sampleMergerNum = data.sampleMergerNum
this.formObj.templateSampleNum = data.templateSampleNum
this.modalTitle = '编辑模板'
console.log(this.id)
},
_beupload(file) {
this.dataObj.file = file.name
},
_handelprogress(event, file, fileList) {
this.isLoad = true
},
// _handelsuccess(response, file, fileList) {
// // 上传成功
// if (response.success) {
// this.isLoad = false
// this.$Message.success('上传成功!')
// this.$emit('on-result-change')
// this.showEditModal = false
// } else {
// this.isLoad = true
// this.$Message.error(response.msg)
// }
// },
_formatError(file) {
this.$Notice.error({
title: '文件格式不正确',
duration: 10,
desc:
'文件 ' +
file.name +
' 格式不正确,请上传格式为 docx、xlsx、xls 的文件!'
})
},
_ztree(result) {
this.pname = ''
if (result === undefined) {
this.formObj.classifyId = '0'
this.pname = ''
} else {
this.formObj.classifyId = result.id
this.pname = result.name
}
// 判断必填项是否为空
}
}
}
</script>
<style scoped>
.clearfix:after {
content: '';
clear: both;
display: block;
}
.inputBox >>> input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
-webkit-appearance: none !important;
}
.inputBox >>> input[type='number'] {
-moz-appearance: textfield !important;
}
</style>
<template>
<div>
<Modal v-model="showEditModal" :mask-closable="false">
<p slot="header">{{modalTitle}}</p>
<div v-show="isLoad">
<Spin fix>
<Icon type="load-c" size=18 class="file-spin-icon-load"></Icon>
<div>正在上传,请稍后...</div>
</Spin>
</div>
<div>
<Form id="edit-form" ref="formObj" :model="formObj" :rules="ruleValidate" :label-width="95">
<Form-item label="类别" prop="classType">
<!-- <Input v-model="formObj.classType" @on-keyup="_onKeyUp" name="classType" placeholder="请选择类别" icon="plus-circled"-->
<!-- ></Input>-->
<el-select v-model="formObj.classType" placeholder="请选择类别" size="small" clearable>
<el-option :label="item.value" :value="item.value" v-for="(item,index) in typeList"
:key="index"></el-option>
</el-select>
</Form-item>
<Form-item label="报告模板名称" prop="name">
<Input v-model="formObj.name" @on-keyup="_onKeyUp" name="name" placeholder="请输入报告模板名称"></Input>
</Form-item>
<Form-item label="备注" prop="remark">
<Input v-model="formObj.remark" @on-keyup="_onKeyUp" name="remark" placeholder="请输入备注"></Input>
</Form-item>
</Form>
</div>
<div slot="footer" class="btn-width clearfix">
<Button @click="_cancel" style="margin-left: 8px;">取消</Button>
<label style="margin-bottom: 0;float: right">
<Upload
:action="action"
: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="isDisable" type="primary">导入文件</Button>
</Upload>
</label>
</div>
</Modal>
<!--类别弹出树-->
<!-- <LmsTemplateClassifyZTree ref="ztreeModal" @on-result-change="_ztree"></LmsTemplateClassifyZTree>-->
</div>
</template>
<script>
/**
* 添加编辑
*/
// import LmsTemplateClassifyZTree from '../lms-template-classify/LmsTemplateClassifyZTree.vue'
import global from '../../../api/config'
const defVal = {
name: '',
remark: '',
classType: '',
classifyId: 0
}
export default {
// components: { LmsTemplateClassifyZTree },
data() {
return {
modalTitle: '添加',
formObj: defVal,
ruleValidate: {
name: [{ required: true, message: '名称不能为空', trigger: 'blur' }],
classType: [
{ required: true, message: '类别不能为空', trigger: 'blur' }
]
},
typeList: [
{
value: '力学'
},
{
value: '物性'
}
],
showEditModal: false,
dataObj: {
file: ''
},
pname: '',
action: '',
isLoad: false,
isDisable: true,
format: ['docx', 'xlsx', 'xls']
}
},
methods: {
_onKeyUp() {
if (this.formObj.name === '' || this.formObj.classType === '') {
this.isDisable = true
} else {
this.isDisable = false
this.action =
global.baseURL +
'/soil/v1/exp_report_template/upload_template_summary/?name=' +
this.formObj.name +
'&remark=' +
this.formObj.remark +
'&classType=' +
this.formObj.classType
}
},
_selectZtree() {
// this.$refs.ztreeModal._openZtree()
},
_cancel() {
this.showEditModal = false
},
_open() {
this.showEditModal = true
this.isLoad = false
this.formObj.name = ''
this.formObj.alias = ''
this.formObj.remark = ''
this.formObj.classType = ''
this.modalTitle = '添加模板'
},
_beupload(file) {
this.dataObj.file = file.name
},
_handelprogress(event, file, fileList) {
this.isLoad = true
},
_handelsuccess(response, file, fileList) {
// 上传成功
if (response.success) {
this.isLoad = false
this.$Message.success('上传成功!')
this.$emit('on-result-change')
this.showEditModal = false
} else {
this.isLoad = true
this.$Message.error(response.msg)
}
},
_formatError(file) {
this.$Notice.error({
title: '文件格式不正确',
duration: 10,
desc:
'文件 ' +
file.name +
' 格式不正确,请上传格式为 docx、xlsx、xls 的文件!'
})
},
_ztree(result) {
this.pname = ''
if (result === undefined) {
this.formObj.classifyId = '0'
this.pname = ''
} else {
this.formObj.classifyId = result.id
this.pname = result.name
}
// 判断必填项是否为空
this._onKeyUp()
}
}
}
</script>
<style scoped>
.clearfix:after {
content: '';
clear: both;
display: block;
}
</style>
<template>
<div>
<!--内容-->
<div class="layout-content-padding marginLeft-10">
<div class="layout-content-main tree-position">
<div class="position-right">
<Row>
<!--查询-->
<Col span="24">
<Form id="search-form" v-show="searchOpen" :label-width="80" inline onsubmit="return false">
<label class="label-sign"></label>
<Form-item class="search-item" label="模板名称:">
<Input v-model="formObj.alias" @on-enter="_formSearch" name="alias" placeholder="请输入模板名称" clearable></Input>
<input type="hidden" name="classifyId">
</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" :show-search-btn="true" @on-result-change="_btnClick"></btn-list>
</Col>
<!-- 表格 -->
<Col span="24">
<PTVXETable ref="pageTable" :page-columns="pageColumns"
:get-page="getPage" :opt-col-width="120" :icon-msg="iconMsg" @on-result-change="_tableResultChange">
<vxe-table-column
v-for="item in pageColumns"
:key="item.key"
:field="item.key"
:title="item.title"
:min-width="item.width?item.width:200"
:fixed="item.fixed?item.fixed:undefined" sortable>
<template slot-scope="scope">
<span>{{scope.row[item.key]}}</span>
</template>
</vxe-table-column>
</PTVXETable>
</Col>
</Row>
</div>
</div>
</div>
<!-- 添加、编辑 -->
<SoilRecordTemplateEdit ref="editModal" @on-result-change="_search"></SoilRecordTemplateEdit>
<SoilRecordEdit ref="reportEdit" @on-result-change="_search"></SoilRecordEdit>
<ConfigTemplate ref="configTemplateModal" @on-result-change="_page"></ConfigTemplate>
</div>
</template>
<script>
import global from '../../../api/config'
import { soilAptitude } from '../../../api'
import SoilRecordTemplateEdit from './SoilReportTemplateEdit'
import SoilRecordEdit from './SoilReportEdit'
import ConfigTemplate from './ConfigTemplate'
export default {
components: { SoilRecordTemplateEdit, SoilRecordEdit, ConfigTemplate },
data() {
return {
pageColumns: [
{ title: '报告模板名称', key: 'alias' },
{ title: '类别', key: 'classType' },
{ title: '备注', key: 'remark' }
],
formObj: {
name: undefined
},
iconMsg: [
{ type: 'md-create', id: '', name: '编辑' },
{ type: 'ios-build-outline', id: '', name: '配置' },
{ type: 'ios-book', id: '', name: '预览/编辑' },
{ type: 'md-remove-circle', id: '', name: '删除' }
],
getPage: {},
tableStyleObj: {},
btn: [
{ type: 'success', id: '', name: '添加' },
{ type: 'error', id: '', name: '删除' }
],
searchOpen: true,
selectIds: []
}
},
computed: {
// tableHeight: function() {
// if (this.searchOpen) {
// return this.$newTableHeight('search')
// } else {
// return this.$newTableHeight('noSearch')
// }
// }
},
mounted() {
// this._contHide()
// this._classTree()
this._page()
},
methods: {
_btnClick(msg) {
switch (msg) {
case '添加':
this._editModal()
break
case '删除':
this._delAll()
break
case 'search':
this.searchOpen = !this.searchOpen
break
}
},
_refresh() {
// 刷新
this.id = ''
this.name = ''
this._search()
this._classTree()
},
_classData(result, msg) {
$('input[name=classifyId]').val(result)
this._formSearch()
},
_classTree() {
this.$refs.classTree._Ztree()
},
_treeHide() {
// 左侧树隐藏
this.isTree = false
this.tableStyleObj.marginLeft = '15px'
},
_treeShow() {
this.isTree = true
this.tableStyleObj.marginLeft = '215px'
},
_iconClick(res, data) {
switch (res) {
case '编辑':
this._reportEdit(data)
break
case '配置':
this._configData(data)
break
case '下载':
this._download(data.id)
break
case '预览/编辑':
this._lookReport(data)
break
case '删除':
this._deleteByIds([data.id])
break
}
},
_lookReport: async function(data) {
const result = await soilAptitude.expReportTemplateGetById(data.id)
if (result) {
this._viewReport(result)
}
},
_viewReport(data) {
// window.open(global.baseURL + '/print/v1/oos?key=' + objectKey+'&edit=true', '', 'height=' + (screen.availHeight - 50) + ',' +
// 'width=' + (screen.availWidth - 10) + ',top=0,left=0,toolbar=no,menubar=no,scrollbars=auto,resizeable=no,' +
// 'location=no,status=no')
if (data) {
this.$openWindowModeless({
objectKey: data.objectKey,
id: data.id,
idType: 11,
isReport: 4
})
}
},
_contHide() {
this._page()
},
_page: async function() {
console.log('page')
Object.assign(this.formObj, this.$refs.pageTable._searchParams())
const result = await soilAptitude.pageSummaryTemplate(
this.$serializeForm(this.formObj)
)
if (result) {
this.$refs.pageTable._hideLoading()
this.getPage = result
}
// const result = await
// this.$refs.pageTable._page('search-form', 'SysFileTemplate/page')
},
_formSearch() {
this.$refs.pageTable._pageChange(1)
},
_editModal() {
this.$refs.editModal._open()
},
_reportEdit(data) {
this.$refs.reportEdit._open(data)
},
_configData(data) {
this.$refs.configTemplateModal._open(data)
},
// 批量删除
_delAll() {
const ids = this.selectIds
if (ids.length === 0) {
this.$Message.warning('请至少选择一条数据!')
} else {
this._deleteByIds(ids)
}
},
// 删除
_deleteByIds(ids, content) {
this.$Modal.confirm({
title: '提示',
content: content || '确定删除该记录?',
onOk: () => {
this._delete(ids)
}
})
},
_delete: async function(ids) {
const result = await soilAptitude.expReportTemplateDelete(ids)
if (result) {
this._formSearch()
this.$Message.success('删除成功!')
}
},
_download(id) {
this.$Modal.confirm({
title: '提示',
content: '确定要下载?',
onOk: () => {
window.open(
global.baseURL + '/base/v1/file_template/download/' + id,
'_blank'
)
}
})
},
_search() {
this._page()
},
_tableResultChange(msg, data) {
switch (msg) {
case 'page':
// this.getPage = this.$store.state.SysFileTemplate.page
break
case 'selectIds':
this.selectIds = data
break
case 'iconClick':
this._iconClick(data.name, data.rowData)
break
case 'changeSize':
this._page()
break
}
}
}
}
</script>
...@@ -251,7 +251,9 @@ export default { ...@@ -251,7 +251,9 @@ export default {
}, },
_calloutOk() { _calloutOk() {
console.log(this.selectIds) console.log(this.selectIds)
const result = soilSample.sampleBringOut(this.selectIds) const result = soilSample.sampleBringOut({
ids: this.selectIds.join(',')
})
if (result) { if (result) {
this.$Message.success('调出成功') this.$Message.success('调出成功')
this._page() this._page()
......
...@@ -117,6 +117,8 @@ export default { ...@@ -117,6 +117,8 @@ export default {
this.$refs.userModal._open() this.$refs.userModal._open()
}, },
_userData(data, msg, contractTempData) { _userData(data, msg, contractTempData) {
this.formObj.manager = data.realname
this.formObj.managerId = data.id
console.log(data, msg) console.log(data, msg)
}, },
/** *modal-footer */ /** *modal-footer */
......
...@@ -11,11 +11,8 @@ ...@@ -11,11 +11,8 @@
<Col span="24"> <Col span="24">
<Form v-show="searchOpen" id="search-sample-company" :label-width="80" inline onsubmit="return false"> <Form v-show="searchOpen" id="search-sample-company" :label-width="80" inline onsubmit="return false">
<label class="label-sign"></label> <label class="label-sign"></label>
<Form-item label="试样编号:" class="search-item"> <Form-item label="委托编号:" class="search-item">
<Input v-model="formObj.sampleCode" placeholder="请输入试样编号" clearable @on-enter="_formSearch" /> <Input v-model="formObj.entrustCode" placeholder="请输入委托编号" clearable @on-enter="_formSearch" />
</Form-item>
<Form-item label="现场编号:" class="search-item">
<Input v-model="formObj.siteNo" placeholder="请输入现场编号" clearable @on-enter="_formSearch" />
</Form-item> </Form-item>
<Form-item class="search-btn"> <Form-item class="search-btn">
<Button type="primary" @click="_page"> <Button type="primary" @click="_page">
......
...@@ -68,11 +68,6 @@ export default { ...@@ -68,11 +68,6 @@ export default {
currentComponent: '', currentComponent: '',
btn: [ btn: [
{ {
type: 'success',
id: 'ZBC',
name: '打印标签'
},
{
type: 'error', type: 'error',
id: '', id: '',
name: '批量删除' name: '批量删除'
...@@ -237,7 +232,9 @@ export default { ...@@ -237,7 +232,9 @@ export default {
} }
}, },
_deleteOk: async function(ids) { _deleteOk: async function(ids) {
const result = await soilSample.removeSampleFromLocation(ids.join(',')) const result = await soilSample.removeSampleFromLocation({
ids: ids.join(',')
})
if (result) { if (result) {
this.$Message.success('成功移除') this.$Message.success('成功移除')
this._page() this._page()
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
</template> </template>
<script> <script>
import { soilAptitude, soilTest } from '../../../api' import { soilTest } from '../../../api'
import IndexManageEdit from './IndexManageEdit' import IndexManageEdit from './IndexManageEdit'
export default { export default {
...@@ -151,9 +151,9 @@ export default { ...@@ -151,9 +151,9 @@ export default {
} }
}, },
_delOk: async function(ids) { _delOk: async function(ids) {
const result = await soilAptitude.expItemDeleteByIds(ids) const result = await soilTest.itemDelete(ids)
if (result) { if (result) {
this.$message.success('删除成功') this.$Message.success('删除成功')
this._page() this._page()
} }
} }
......
...@@ -159,7 +159,7 @@ export default { ...@@ -159,7 +159,7 @@ export default {
this.$refs.footerModal._hideLoading() this.$refs.footerModal._hideLoading()
}, },
_open(id, formObj) { _open(id, formObj) {
this.formId = 'edit-form' this.formId = 'edit-form-prepare'
this._hideLoading() this._hideLoading()
this.$refs.formObj.resetFields() this.$refs.formObj.resetFields()
if (this.$string(formObj).isEmpty()) { if (this.$string(formObj).isEmpty()) {
...@@ -318,7 +318,8 @@ export default { ...@@ -318,7 +318,8 @@ export default {
_ok() { _ok() {
this.$refs.formObj.validate(valid => { this.$refs.formObj.validate(valid => {
if (valid) { if (valid) {
const data = this.$serialize('edit-form') const data = this.$serialize('edit-form-prepare')
console.log('data', data)
if (this.$string(this.id).isEmpty()) { if (this.$string(this.id).isEmpty()) {
data.experimentId = this.expId data.experimentId = this.expId
// 添加 // 添加
...@@ -334,7 +335,7 @@ export default { ...@@ -334,7 +335,7 @@ export default {
}) })
}, },
_save: async function(data) { _save: async function(data) {
console.log(data) console.log('data', data)
const result = await soilTest.itemSave(data) const result = await soilTest.itemSave(data)
console.log(result) console.log(result)
if (result) { if (result) {
......
...@@ -98,6 +98,8 @@ export default { ...@@ -98,6 +98,8 @@ export default {
_selTestBasis(msg, data) { _selTestBasis(msg, data) {
if (msg === 'select') { if (msg === 'select') {
this.formObj.testBasis = data.name this.formObj.testBasis = data.name
} else if (msg === 'query') {
this.formObj.testBasis = data.name
} }
}, },
channelInputLimit(e) { channelInputLimit(e) {
...@@ -168,6 +170,7 @@ export default { ...@@ -168,6 +170,7 @@ export default {
this.showModal = true this.showModal = true
this.formObj = this.$resetFields(this.formObj) this.formObj = this.$resetFields(this.formObj)
this.sampleUnit = '' this.sampleUnit = ''
this.formObj.testBasis = ''
this.$refs.footerModal._hideLoading() this.$refs.footerModal._hideLoading()
this.ids = data this.ids = data
// 循环遍历数据 // 循环遍历数据
...@@ -212,7 +215,7 @@ export default { ...@@ -212,7 +215,7 @@ export default {
this.$refs.formObj.validate(valid => { this.$refs.formObj.validate(valid => {
if (valid) { if (valid) {
console.log(this.formObj) console.log(this.formObj)
const tempData = this.formObj const tempData = this.$serializeForm(this.formObj)
tempData.ids = this.ids.join(',') tempData.ids = this.ids.join(',')
this._saveInfo(tempData) this._saveInfo(tempData)
} else { } else {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<Modal v-model="showModal" v-drag :mask-closable="false"> <Modal v-model="showModal" v-drag :mask-closable="false">
<p slot="header">填写制备信息</p> <p slot="header">填写制备信息</p>
<div> <div>
<Form id="storage-location-form" ref="formObj" :model="formObj" :rules="ruleValidate" :label-width="100"> <Form ref="formObj" :id="formId" :model="formObj" :rules="ruleValidate" :label-width="100">
<Form-item label="制备方式:" prop="prepareWay"> <Form-item label="制备方式:" prop="prepareWay">
<el-select :value="formObj.prepareWay" @change="selPrepareWay" style="width:100%" size="small"> <el-select :value="formObj.prepareWay" @change="selPrepareWay" style="width:100%" size="small">
<el-option v-for="item in prepareWayList" :value="item.name" :key="item.name">{{ item.name }} <el-option v-for="item in prepareWayList" :value="item.name" :key="item.name">{{ item.name }}
...@@ -63,6 +63,7 @@ export default { ...@@ -63,6 +63,7 @@ export default {
showModal: false, showModal: false,
formObj: {}, formObj: {},
ruleValidate: {}, ruleValidate: {},
formId: '',
footerList: [ footerList: [
{ id: '', name: '取消', type: '' }, { id: '', name: '取消', type: '' },
{ id: '', name: '保存', type: 'primary' } { id: '', name: '保存', type: 'primary' }
...@@ -161,6 +162,7 @@ export default { ...@@ -161,6 +162,7 @@ export default {
}, },
_open(data) { _open(data) {
this.showModal = true this.showModal = true
this.formId = 'edit-form-batchEdit'
this.formObj = this.$resetFields(this.formObj) this.formObj = this.$resetFields(this.formObj)
this.sampleUnit = '' this.sampleUnit = ''
this.$refs.footerModal._hideLoading() this.$refs.footerModal._hideLoading()
...@@ -206,7 +208,8 @@ export default { ...@@ -206,7 +208,8 @@ export default {
_ok() { _ok() {
this.$refs.formObj.validate(valid => { this.$refs.formObj.validate(valid => {
if (valid) { if (valid) {
this.$emit('on-result-change', this.formObj) console.log('formObj', this.$serializeForm(this.formObj))
this.$emit('on-result-change', this.$serializeForm(this.formObj))
this.showModal = false this.showModal = false
this.$refs.footerModal._hideLoading() this.$refs.footerModal._hideLoading()
} else { } else {
......
...@@ -591,6 +591,7 @@ export default { ...@@ -591,6 +591,7 @@ export default {
this.$refs.pageTable._pageChange(1) this.$refs.pageTable._pageChange(1)
}, },
_pageByEntrustId: async function() { _pageByEntrustId: async function() {
this.selectIds = []
Object.assign(this.formObj, this.$refs.pageTable._searchParams()) Object.assign(this.formObj, this.$refs.pageTable._searchParams())
this.formObj = this.$serializeForm(this.formObj) this.formObj = this.$serializeForm(this.formObj)
this.formObj.entrustId = this.entrustId this.formObj.entrustId = this.entrustId
......
...@@ -5,8 +5,8 @@ ...@@ -5,8 +5,8 @@
<Col span="24"> <Col span="24">
<Form id="task-assign-item-right" :label-width="70" inline onsubmit="return false"> <Form id="task-assign-item-right" :label-width="70" inline onsubmit="return false">
<label class="label-sign"></label> <label class="label-sign"></label>
<Form-item class="search-item" label="检测项目:"> <Form-item class="search-item" label="试样编号:">
<Input @on-enter="_formSearch" name="name" placeholder="请输入检测项目" clearable></Input> <Input @on-enter="_formSearch" v-model="formObj.sampleCode" name="sampleCode" placeholder="请输入试样编号" clearable></Input>
</Form-item> </Form-item>
<Form-item class="search-btn"> <Form-item class="search-btn">
<Button @click="_formSearch" type="primary">搜索</Button> <Button @click="_formSearch" type="primary">搜索</Button>
......
...@@ -8,9 +8,6 @@ ...@@ -8,9 +8,6 @@
<Col span="24"> <Col span="24">
<Form id="search-form" :label-width="80" v-show="searchOpen" inline onsubmit="return false"> <Form id="search-form" :label-width="80" v-show="searchOpen" inline onsubmit="return false">
<label class="label-sign"></label> <label class="label-sign"></label>
<Form-item class="search-item" label="委托编号:">
<Input @on-enter="_formSearch" v-model="formObj.entrustCode" name="entrustCode" placeholder="请输入样品编号" clearable/>
</Form-item>
<Form-item class="search-item" label="试样编号:"> <Form-item class="search-item" label="试样编号:">
<Input @on-enter="_formSearch" v-model="formObj.sampleCode" name="sampleCode" placeholder="请输入样品名称" clearable/> <Input @on-enter="_formSearch" v-model="formObj.sampleCode" name="sampleCode" placeholder="请输入样品名称" clearable/>
</Form-item> </Form-item>
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
</template> </template>
<script> <script>
import { soilAptitude, soilTest } from '../../../api' import { soilTest } from '../../../api'
import IndexManageEdit from './IndexManageEdit' import IndexManageEdit from './IndexManageEdit'
export default { export default {
...@@ -151,9 +151,9 @@ export default { ...@@ -151,9 +151,9 @@ export default {
} }
}, },
_delOk: async function(ids) { _delOk: async function(ids) {
const result = await soilAptitude.expItemDeleteByIds(ids) const result = await soilTest.itemDelete(ids)
if (result) { if (result) {
this.$message.success('删除成功') this.$Message.success('删除成功')
this._page() this._page()
} }
} }
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
</template> </template>
<script> <script>
import { soilAptitude, soilTest } from '../../../api' import { soilTest } from '../../../api'
import IndexManageEdit from './IndexManageEdit' import IndexManageEdit from './IndexManageEdit'
export default { export default {
...@@ -151,9 +151,9 @@ export default { ...@@ -151,9 +151,9 @@ export default {
} }
}, },
_delOk: async function(ids) { _delOk: async function(ids) {
const result = await soilAptitude.expItemDeleteByIds(ids) const result = await soilTest.itemDelete(ids)
if (result) { if (result) {
this.$message.success('删除成功') this.$Message.success('删除成功')
this._page() this._page()
} }
} }
......
...@@ -5,11 +5,8 @@ ...@@ -5,11 +5,8 @@
<Col span="24"> <Col span="24">
<Form :label-width="80" v-show="searchOpen" inline onsubmit="return false"> <Form :label-width="80" v-show="searchOpen" inline onsubmit="return false">
<label class="label-sign"></label> <label class="label-sign"></label>
<Form-item class="search-item" label="模板名称:"> <Form-item class="search-item" label="项目名称:">
<Input v-model="formObj.title" @on-enter="_formSearch" placeholder="请输入模板名称" clearable></Input> <Input v-model="formObj.expName" @on-enter="_formSearch" placeholder="请输入项目名称" clearable></Input>
</Form-item>
<Form-item class="search-item" label="委托编号:">
<Input v-model="formObj.entrustCode" @on-enter="_formSearch" placeholder="请输入委托编号" clearable></Input>
</Form-item> </Form-item>
<Form-item class="search-btn"> <Form-item class="search-btn">
<Button @click="_formSearch" type="primary">搜索</Button> <Button @click="_formSearch" type="primary">搜索</Button>
...@@ -86,7 +83,8 @@ export default { ...@@ -86,7 +83,8 @@ export default {
{ title: '创建时间', key: 'ctime', dateTime: true } { title: '创建时间', key: 'ctime', dateTime: true }
], ],
formObj: { formObj: {
entrustId: '' entrustId: '',
expName: undefined
}, },
searchOpen: false searchOpen: false
} }
......
<template> <template>
<div> <div>
<Modal v-model="showSampleModal" v-drag @on-visible-change="_visibleChange" width="1200" <Modal v-model="showSampleModal" v-drag width="1330" class="zIndex-900 modal-footer-none"
class="zIndex-900 modal-footer-none"> @on-visible-change="_visibleChange">
<p slot="header"> {{name}}--管理样品</p> <p slot="header"> {{name}}--管理样品</p>
<div> <div>
<el-tabs v-model="activeName" @tab-click="_changeTabs"> <el-tabs v-model="activeName" @tab-click="_changeTabs">
...@@ -17,11 +17,10 @@ ...@@ -17,11 +17,10 @@
<el-tab-pane label="查看原始记录" name="viewRecord"> <el-tab-pane label="查看原始记录" name="viewRecord">
<OriginalRecordView ref="recordModal"></OriginalRecordView> <OriginalRecordView ref="recordModal"></OriginalRecordView>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="查看报告附件" name="soilAppendixRecord">
<SoilAppendix ref="soilAppendixRecordModal"></SoilAppendix>
</el-tab-pane>
</el-tabs> </el-tabs>
<!-- <keep-alive>-->
<!-- &lt;!&ndash; eslint-disable-next-line vue/require-component-is &ndash;&gt;-->
<!-- <component ref="refModal" :is="currentComponent"></component>-->
<!-- </keep-alive>-->
</div> </div>
</Modal> </Modal>
</div> </div>
...@@ -30,11 +29,13 @@ ...@@ -30,11 +29,13 @@
import WaitReceive from './item-tabs/ItemTabs' import WaitReceive from './item-tabs/ItemTabs'
import WaitScan from './sample-tabs/SampleTabs' import WaitScan from './sample-tabs/SampleTabs'
import OriginalRecordView from './OriginalRecordView' import OriginalRecordView from './OriginalRecordView'
import SoilAppendix from './SoilAppendix'
import ItemReportView from './ItemReportView' import ItemReportView from './ItemReportView'
export default { export default {
components: { components: {
WaitReceive, WaitReceive,
SoilAppendix,
WaitScan, WaitScan,
OriginalRecordView, OriginalRecordView,
ItemReportView ItemReportView
...@@ -80,16 +81,15 @@ export default { ...@@ -80,16 +81,15 @@ export default {
}, },
_changeTabs(tab, event) { _changeTabs(tab, event) {
if (tab.name === 'viewRecord') { if (tab.name === 'viewRecord') {
// this._issuedPage()
this.$refs.recordModal._open(this.entrustId) this.$refs.recordModal._open(this.entrustId)
} else if (tab.name === 'soilAppendixRecord') {
this.$refs.soilAppendixRecordModal._open(this.entrustId)
} else if (tab.name === 'waitReceive') { } else if (tab.name === 'waitReceive') {
// this._waitPage()
this.$refs.waitScanModal._clearTable() this.$refs.waitScanModal._clearTable()
this.$refs.waitReceiveModal._open(this.entrustId) this.$refs.waitReceiveModal._open(this.entrustId)
} else if (tab.name === 'waitScan') { } else if (tab.name === 'waitScan') {
this.$refs.waitReceiveModal._clearTable() this.$refs.waitReceiveModal._clearTable()
this.$refs.waitScanModal._open(this.entrustId) this.$refs.waitScanModal._open(this.entrustId)
// this._waitSend()
} else { } else {
this.$refs.reportModal._open(this.entrustId) this.$refs.reportModal._open(this.entrustId)
} }
......
<template>
<div>
<Row>
<!--查询-->
<Col span="24">
<Form :label-width="80" v-show="searchOpen" inline onsubmit="return false">
<label class="label-sign"></label>
<Form-item class="search-item" label="模板名称:">
<Input v-model="formObj.title" @on-enter="_formSearch" placeholder="请输入模板名称" clearable></Input>
</Form-item>
<Form-item class="search-item" label="委托编号:">
<Input v-model="formObj.entrustCode" @on-enter="_formSearch" placeholder="请输入委托编号" clearable></Input>
</Form-item>
<Form-item class="search-btn">
<Button @click="_formSearch" type="primary">搜索</Button>
</Form-item>
</Form>
</Col>
<!--操作-->
<Col span="24">
<btn-list :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" :icon-msg="iconMsg" :getPage="getPage">
<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.dateTime">
{{scope.row[item.key]?$dateformat(scope.row[item.key],'yyyy-mm-dd HH:MM'):''}}
</div>
<div v-else>{{scope.row[item.key]}}</div>
</template>
</vxe-table-column>
</PTVXETable>
</Col>
</Row>
<ItemOriginalRecordEdit ref="recordEditModal"></ItemOriginalRecordEdit>
<ItemView ref="itemViewModal"></ItemView>
</div>
</template>
<script>
/**
* 原始记录查看
*/
import Global from '../../../api/config'
import { soilReport, soilTest } from '../../../api'
import ItemOriginalRecordEdit from './OriginalRecordEdit'
import ItemView from './ItemView'
export default {
components: {
ItemOriginalRecordEdit,
ItemView
},
data() {
return {
currentComponent: '',
getPage: {},
btn: [],
selectIds: [],
iconMsg: [
{
type: 'ios-book',
id: '',
name: '查看附录'
},
{ type: 'md-trash', id: '', name: '删除' }
],
pageColumns: [
{ title: '附录名称', key: 'title' },
{ title: '填写人', key: 'uname' },
{ title: '创建时间', key: 'ctime', dateTime: true }
],
formObj: {
entrustId: ''
},
searchOpen: false
}
},
computed: {
tableHeight: function() {
if (this.searchOpen) {
return this.$tableHeight('', 340)
} else {
return this.$tableHeight('tabNoSearch')
}
}
},
mounted() {
this._page()
},
methods: {
_componentResult(data) {
switch (this.currentComponent) {
case 'EditDateModal':
this._updateDate(data)
break
default:
this._page()
}
},
_updateDate(date) {
this.$store
.dispatch('PrintForm/updateTimeBatch', {
ids: this.selectIds.join(','),
fillInTime: date
})
.then(() => {
if (this.$store.state.PrintForm.success) {
this._page()
this.$Message.success('更新成功!')
}
})
},
_btnClick(msg, componentName) {
this.currentComponent = componentName
this.$nextTick(function() {
switch (msg) {
case 'search':
this.searchOpen = !this.searchOpen
break
}
})
},
_iconClick(res, data, currentComponent) {
this.currentComponent = currentComponent
this.$nextTick(() => {
switch (res) {
case '编辑':
this._reportEdit(data)
break
case '查看附录':
this._reportView(data)
// this._recordView(data.originalRecordId)
break
case '查看试验项目':
this._itemView(data.id)
break
case '删除':
this._deleteByIds([data.id])
break
}
})
},
// 查看试验项目
_itemView(id) {
this.$refs.itemViewModal._open(id)
},
_reportView(data) {
if (data.objectKey) {
this._viewReport(data)
} else {
this._recordView(data.originalRecordId)
}
},
_reportEdit(data) {
if (data.objectKey) {
this._reportMakeLook(data)
} else {
this.$refs.recordEditModal._openWithType(
data.originalRecordId,
'ENVTESTMAKEEDIT'
)
}
},
_reportMakeLook: async function(data) {
console.log(data)
const result = await soilReport.originalRecordGetById(data.id)
if (result) {
this._viewReport(result)
}
},
_viewReport(data) {
if (data) {
this.$openWindowModeless({
objectKey: data.objectKey,
idType: 10,
id: data.id,
isReport: 4
})
}
},
// 查看原始记录
_recordView(originalRecordId) {
let recordUrl = ''
if (process.env.NODE_ENV === 'production') {
recordUrl = 'http://record.patzn.com'
} else {
recordUrl = Global.recordURL
}
// eslint-disable-next-line no-undef
layx.iframe(
'labRecordWriteOriView',
'原始记录预览',
recordUrl + '/print/v1/form/' + originalRecordId + '?type=ENVTESTMAKE',
{
event: {
onload: {
after: function(layxWindow, winform) {
// eslint-disable-next-line no-undef
layx.max(winform.id)
}
}
}
}
)
},
_open(entrustId) {
this.formObj.entrustId = entrustId
this._page()
},
_tableResultChange(msg, data) {
switch (msg) {
case 'page':
this.getPage = this.$store.state.EnvItem.page
break
case 'selectIds':
this.selectIds = data
break
case 'iconClick':
this._iconClick(data.name, data.rowData, data.componentName)
break
case 'changeSize':
this._page()
break
}
},
_formSearch() {
this.$refs.pageTable._pageChange(1)
},
_page: async function() {
Object.assign(this.formObj, this.$refs.pageTable._searchParams())
const result = await soilTest.pageSoilAppendix(
this.$serializeForm(this.formObj)
)
if (result) {
this.$refs.pageTable._hideLoading()
this.getPage = result
}
},
// 删除原始记录
_deleteByIds(ids, content) {
this.$Modal.confirm({
title: '提示',
content: content || '确定删除该记录?',
onOk: () => {
this._deleteOk(ids)
}
})
},
_deleteOk: async function(ids) {
const result = await soilTest.appendixDelete(ids)
if (result) {
this.$Message.success('删除成功')
this._page()
}
}
}
}
</script>
...@@ -59,8 +59,6 @@ ...@@ -59,8 +59,6 @@
</Row> </Row>
</div> </div>
</div> </div>
<!--组件加载-->
<!--选择领样人-->
<keep-alive> <keep-alive>
<!-- eslint-disable-next-line vue/require-component-is --> <!-- eslint-disable-next-line vue/require-component-is -->
<component ref="refModal" :is="currentComponent" @on-result-change="_componentResult"></component> <component ref="refModal" :is="currentComponent" @on-result-change="_componentResult"></component>
...@@ -104,12 +102,8 @@ export default { ...@@ -104,12 +102,8 @@ export default {
{ title: '水深(米)', key: 'waterDepth', width: 120 }, { title: '水深(米)', key: 'waterDepth', width: 120 },
{ title: '钻孔名称', key: 'boreholeName', width: 120 }, { title: '钻孔名称', key: 'boreholeName', width: 120 },
{ title: '进度', key: 'progress', width: 120, status: true }, { title: '进度', key: 'progress', width: 120, status: true },
// { title: '平均容重', key: 'projectNo', width: 120 },
// { title: '报告编号', key: 'reportCode', width: 120 },
{ title: '制表日期', key: 'tabulateDate', width: 120, date: true }, { title: '制表日期', key: 'tabulateDate', width: 120, date: true },
{ title: '制表人', key: 'tabulater', width: 120 }, { title: '制表人', key: 'tabulater', width: 120 },
// { title: '批准日期', key: 'approveDate', width: 120, date: true },
// { title: '批准人', key: 'approver', width: 120 },
{ title: '检验类别', key: 'testType', width: 120 } { title: '检验类别', key: 'testType', width: 120 }
], ],
searchOpen: false, searchOpen: false,
...@@ -365,7 +359,6 @@ export default { ...@@ -365,7 +359,6 @@ export default {
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.refModal._open(id, type, '数据录入') this.$refs.refModal._open(id, type, '数据录入')
}) })
// this.$refs.sampleManageModal._open(id, type, '数据录入')
}, },
_editModals(res, data) { _editModals(res, data) {
if (res === '登记协议') { if (res === '登记协议') {
......
...@@ -2,14 +2,6 @@ ...@@ -2,14 +2,6 @@
<div> <div>
<div class="layout-content-padding"> <div class="layout-content-padding">
<div class="layout-content-main"> <div class="layout-content-main">
<!-- <el-tabs v-model="activeName" @tab-click="_changeTabs">-->
<!-- <el-tab-pane label="数据录入" name="wait">-->
<!-- <SampleBackupsManage ref="waitTabs"></SampleBackupsManage>-->
<!-- </el-tab-pane>-->
<!-- <el-tab-pane label="录入历史" name="query">-->
<!-- <SampleBackupsQuery ref="queryTabs"></SampleBackupsQuery>-->
<!-- </el-tab-pane>-->
<!-- </el-tabs>-->
<el-tabs v-model="activeName" @tab-click="_changeTabs"> <el-tabs v-model="activeName" @tab-click="_changeTabs">
<el-tab-pane label="数据录入" name="waitTabs"></el-tab-pane> <el-tab-pane label="数据录入" name="waitTabs"></el-tab-pane>
<el-tab-pane label="录入历史" name="queryTabs"></el-tab-pane> <el-tab-pane label="录入历史" name="queryTabs"></el-tab-pane>
......
...@@ -71,11 +71,7 @@ export default { ...@@ -71,11 +71,7 @@ export default {
iconMsg: [{ type: 'ios-book', id: '', name: '生成项目报告' }], iconMsg: [{ type: 'ios-book', id: '', name: '生成项目报告' }],
id: '', id: '',
selectId: '', selectId: '',
pageColumns: [ pageColumns: [{ title: '检测项目', key: 'name', width: 120 }]
{ title: '检测项目', key: 'name', width: 120 },
{ title: '检测方法', key: 'testMethod', width: 140 },
{ title: '检测依据名称', key: 'testBasisName', width: 200 }
]
} }
}, },
computed: { computed: {
......
...@@ -6,21 +6,21 @@ ...@@ -6,21 +6,21 @@
<Form id="task-assign-item-right" :label-width="70" inline onsubmit="return false"> <Form id="task-assign-item-right" :label-width="70" inline onsubmit="return false">
<label class="label-sign"></label> <label class="label-sign"></label>
<Form-item class="search-item" label="试样编号:"> <Form-item class="search-item" label="试样编号:">
<Input v-model="formObj.sampleCode" @on-enter="_formSearch" name="sampleCode" placeholder="请输入试样编号" clearable></Input> <Input v-model="formObj.sampleCode" name="sampleCode" placeholder="请输入试样编号" clearable @on-enter="_formSearch"></Input>
</Form-item> </Form-item>
<Form-item class="search-btn"> <Form-item class="search-btn">
<Button @click="_formSearch" type="primary">搜索</Button> <Button type="primary" @click="_formSearch">搜索</Button>
</Form-item> </Form-item>
</Form> </Form>
</Col> </Col>
<!--操作--> <!--操作-->
<Col span="24"> <Col span="24">
<btn-list :msg="btn" @on-result-change="_btnClick" class="contHide"></btn-list> <btn-list :msg="btn" class="contHide" @on-result-change="_btnClick"></btn-list>
</Col> </Col>
<!-- 表格 --> <!-- 表格 -->
<Col span="24"> <Col span="24">
<PTVXETable ref="pageTable" :page-columns="pageColumns" :table-height="tableHeight" <PTVXETable ref="pageTable" :page-columns="pageColumns" :table-height="tableHeight"
:get-page="getPage" :icon-msg="iconMsg" :table-name="tableName" @on-result-change="_tableResultChange" is-task select-data> :get-page="getPage" :icon-msg="iconMsg" :table-name="tableName" is-task select-data @on-result-change="_tableResultChange">
<vxe-table-column <vxe-table-column
v-for="item in userColumns.length > 0 ?userColumns:pageColumns" v-for="item in userColumns.length > 0 ?userColumns:pageColumns"
:key="item.key" :key="item.key"
...@@ -56,6 +56,7 @@ ...@@ -56,6 +56,7 @@
<CollectFileManage ref="collectFileModal" @on-result-change="_page"></CollectFileManage> <CollectFileManage ref="collectFileModal" @on-result-change="_page"></CollectFileManage>
<SelEquip ref="selEquip" @on-result-change="_equipResult"></SelEquip> <SelEquip ref="selEquip" @on-result-change="_equipResult"></SelEquip>
<CreateReport ref="createModal" @on-result-change="_certificateSelectExcelBack"></CreateReport> <CreateReport ref="createModal" @on-result-change="_certificateSelectExcelBack"></CreateReport>
<Reason ref="reasonModal" @on-result-change="_reasonResult" />
</div> </div>
</template> </template>
<script> <script>
...@@ -69,6 +70,7 @@ import SelEquip from '../../../../components/select-equip/SelEquip' ...@@ -69,6 +70,7 @@ import SelEquip from '../../../../components/select-equip/SelEquip'
import EquipManage from '../EquipManage' import EquipManage from '../EquipManage'
import CollectManage from '../CollectManage' import CollectManage from '../CollectManage'
import CollectFileManage from '../CollectFileManage' import CollectFileManage from '../CollectFileManage'
import Reason from '../../../../components/base/Reason'
import CreateReport from './CreateReport' import CreateReport from './CreateReport'
export default { export default {
components: { components: {
...@@ -80,6 +82,7 @@ export default { ...@@ -80,6 +82,7 @@ export default {
EquipManage, EquipManage,
CollectManage, CollectManage,
CollectFileManage, CollectFileManage,
Reason,
CreateReport CreateReport
}, },
data() { data() {
...@@ -126,16 +129,11 @@ export default { ...@@ -126,16 +129,11 @@ export default {
}, },
{ type: 'success', id: '', name: '原始记录填写' }, { type: 'success', id: '', name: '原始记录填写' },
{ type: 'success', id: '', name: '完成提交' }, { type: 'success', id: '', name: '完成提交' },
{ type: 'success', id: '', name: '设备' }
],
btnPro: [
{ type: 'success', id: '', name: '填写原始记录' },
{ type: 'success', id: '', name: '设备' }, { type: 'success', id: '', name: '设备' },
{ type: 'success', id: '', name: '完成提交' } { type: 'success', id: '', name: '退回' }
], ],
iconMsg: [ iconMsg: [
{ type: 'ios-book', id: '', name: '查看原始记录' }, { type: 'ios-book', id: '', name: '查看原始记录' },
// { type: 'md-eye', id: '', name: '原始记录查看/编辑' },
{ type: 'md-apps', id: '', name: '查看指标' }, { type: 'md-apps', id: '', name: '查看指标' },
{ type: 'ios-bookmarks', id: '', name: '查看采集数据' }, { type: 'ios-bookmarks', id: '', name: '查看采集数据' },
{ type: 'ios-browsers', id: '', name: '查看采集文件' }, { type: 'ios-browsers', id: '', name: '查看采集文件' },
...@@ -144,16 +142,16 @@ export default { ...@@ -144,16 +142,16 @@ export default {
getPage: {}, getPage: {},
pageColumns: [ pageColumns: [
{ title: '试验项目', key: 'name', width: 120, fixed: 'left' }, { title: '试验项目', key: 'name', width: 120, fixed: 'left' },
{ title: '试样编号', key: 'sampleCode', width: 180 }, { title: '试样编号', key: 'sampleCode', width: 150 },
{ title: '是否填写原始记录', key: 'recorded', width: 180 }, { title: '原始记录填写', key: 'recorded', width: 120 },
{ title: '试样深度', key: 'sampleDepth', width: 180 }, { title: '试样深度', key: 'sampleDepth', width: 110 },
{ title: '试样包装类型', key: 'samplePack', width: 180 }, { title: '检测方法', key: 'testMethod', width: 140 },
{ title: '检测依据', key: 'testBasis', width: 140 },
{ title: '试样包装类型', key: 'samplePack', width: 160 },
{ title: '检测科室', key: 'groupName', width: 150 },
{ title: '状态', key: 'progress', width: 180 }, { title: '状态', key: 'progress', width: 180 },
{ title: '大类', key: 'mainType', width: 140 }, { title: '大类', key: 'mainType', width: 140 },
{ title: '小类', key: 'smallType', width: 140 }, { title: '小类', key: 'smallType', width: 140 }
{ title: '检测方法', key: 'testMethod', width: 260 },
{ title: '检测依据', key: 'testBasis', width: 140 },
{ title: '检测科室', key: 'groupName', width: 150 }
], ],
leftSelectData: {}, leftSelectData: {},
selectIds: [], // 检测项目id selectIds: [], // 检测项目id
...@@ -321,16 +319,13 @@ export default { ...@@ -321,16 +319,13 @@ export default {
} }
) )
}, },
// 获取column
_getColumn() {
this.$refs.pageTable._getColByTableName()
},
// 重置column // 重置column
_resetColumn(colList) { _resetColumn(colList) {
this.userColumns = colList this.userColumns = colList
this.$refs.pageTable._loadColumn(colList) this.$refs.pageTable._loadColumn(colList)
}, },
_equipResult: async function(res) { _equipResult: async function(res) {
this.$refs.pageTable._showLoading()
const tempData = {} const tempData = {}
tempData.equipList = [] tempData.equipList = []
res.map((item, index) => { res.map((item, index) => {
...@@ -351,48 +346,10 @@ export default { ...@@ -351,48 +346,10 @@ export default {
const result = await soilTest.addExpEquip(tempData) const result = await soilTest.addExpEquip(tempData)
if (result) { if (result) {
this.$Message.success('添加成功') this.$Message.success('添加成功')
} this.$refs.pageTable._hideLoading()
}, await this._page()
// 从字典查预警期 } else {
_dicSearch() { this.$refs.pageTable._hideLoading()
const data = ['食品检测预警天数', '食品默认计划完成时间']
this.$store.dispatch('LmsBaseDict/listDict', data).then(() => {
const result = this.$store.state.LmsBaseDict.list
// eslint-disable-next-line camelcase
const result_1 = result[0]
// eslint-disable-next-line camelcase
const result_2 = result[1]
// 1食品检测预警天数
if (result_1.length !== 0) {
this.warningValue = result_1[0].name
}
// 2食品默认计划完成时间
this.defaultPlanDate =
result_2.length !== 0
? result_2[0].name === '是'
? (this.defaultPlanDate = true)
: (this.defaultPlanDate = false)
: (this.defaultPlanDate = false)
})
},
_selInputResult1(msg, data) {
switch (msg) {
case 'keyword':
this.$refs.selInput2._setCompareKeyword(data)
break
case 'search':
this._formSearch()
break
}
},
_selInputResult2(msg, data) {
switch (msg) {
case 'keyword':
this.$refs.selInput1._setCompareKeyword(data)
break
case 'search':
this._formSearch()
break
} }
}, },
_modalResult(data) { _modalResult(data) {
...@@ -404,13 +361,6 @@ export default { ...@@ -404,13 +361,6 @@ export default {
this._userResult(data) this._userResult(data)
} }
break break
case 'EndDateModal':
// if(this.defaultPlanDate){
// this._endDate()
// } else {
this._page()
// }
break
case 'UserGroup': case 'UserGroup':
this._userGroupResult(data) this._userGroupResult(data)
break break
...@@ -418,62 +368,13 @@ export default { ...@@ -418,62 +368,13 @@ export default {
this._page() this._page()
} }
}, },
// 为 true时,有字典按人分配
_trueDefault(data) {
const tempData = {
ids: this.selectIds.join(','),
personId: data.userId,
personName: data.realname,
groupId: data.groupId,
groupName: data.groupName
}
Object.assign(tempData, { planDate: null })
this.$store.dispatch('FoodItem/personAllot', tempData).then(() => {
if (this.$store.state.FoodItem.success) {
this.sampleNames = ''
this._page()
this._resultChange('分配成功!')
}
})
},
// 设置时间
_endDate() {
if (this.selectIds.length === 0) {
this.$Message.warning('请至少选择一条数据!')
} else {
const user = Global.getUserInfo('userInfo')
this.currentComponent = 'AssignPerson'
this.$nextTick(function() {
this.$refs.refModal._openGoupByUserId('分配人员', user.id, 'itemTree')
})
}
},
// 调整分组
_userGroupResult(data) {
const tempData = {
groupId: data.id,
groupName: data.name,
ids: this.selectIds.join(',')
}
this.$store.dispatch('FoodItem/adjustTestGroup', tempData).then(() => {
this._resultChange('调整成功')
})
},
_resultChange(msg) { _resultChange(msg) {
this.$Message.success(msg) this.$Message.success(msg)
this._page() this._page()
this.$emit('on-result-change') this.$emit('on-result-change')
}, },
async _btnClick(msg) { _btnClick(msg) {
switch (msg) { switch (msg) {
case '按人分配':
this._allotByPerson()
// await this._reportDueDate()
// await this._userAssign()
break
case '试验项目分配':
this._userAssign()
break
case '填写原始记录': case '填写原始记录':
this._addRecord() this._addRecord()
break break
...@@ -486,31 +387,37 @@ export default { ...@@ -486,31 +387,37 @@ export default {
case '设备': case '设备':
this._selectEquipment() this._selectEquipment()
break break
case '按组分配': case '退回':
await this._reportDueDate() this._goBack()
await this._groupAssign()
break
case '调整分组':
if (this.selectIds.length === 0) {
this.$Message.warning('请至少选择=一条数据')
} else {
this.currentComponent = 'UserGroup'
this.$nextTick(() => {
this.$refs.refModal._open()
})
}
break
case '设置计划完成时间':
this.currentComponent = 'EndDateModal'
this.$nextTick(function() {
this._changeDate()
})
break
case '信息维护':
this._maintainInfo()
break break
} }
}, },
_goBack() {
// 退回
if (this.selectIds.length === 0) {
this.$Message.warning('请至少选择一条委托!')
} else {
this.$refs.reasonModal._open('退回原因')
}
},
_reasonResult(data) {
if (undefined !== data && data !== '') {
this._reportCheckBack(data)
}
},
_reportCheckBack: async function(data) {
const result = await soilSample.testInputBack({
ids: this.selectIds,
remark: data
})
if (result) {
this.$Message.success('退回成功!')
this.$emit('on-result-change')
await this._page()
}
},
_selectEquipment() { _selectEquipment() {
if (this.selectIds.length === 0) { if (this.selectIds.length === 0) {
this.$Message.warning('请至少选择一条数据!') this.$Message.warning('请至少选择一条数据!')
......
...@@ -5,8 +5,8 @@ ...@@ -5,8 +5,8 @@
<Col span="24"> <Col span="24">
<Form id="task-assign-sample-left" :label-width="70" inline onsubmit="return false"> <Form id="task-assign-sample-left" :label-width="70" inline onsubmit="return false">
<label class="label-sign"></label> <label class="label-sign"></label>
<Form-item class="search-item" label="委托编号:"> <Form-item class="search-item" label="样品编号:">
<Input v-model="formObj.client" @on-enter="_formSearch" placeholder="请输入检测项目" clearable></Input> <Input v-model="formObj.sampleCode" @on-enter="_formSearch" placeholder="请输入样品编号" clearable></Input>
</Form-item> </Form-item>
<Form-item class="search-btn"> <Form-item class="search-btn">
<Button @click="_formSearch" type="primary">搜索</Button> <Button @click="_formSearch" type="primary">搜索</Button>
...@@ -51,7 +51,8 @@ export default { ...@@ -51,7 +51,8 @@ export default {
return { return {
currentComponent: '', currentComponent: '',
formObj: { formObj: {
entrustId: undefined entrustId: undefined,
sampleCode: undefined
}, },
entrustId: '', entrustId: '',
tableName: 'food-task-assign-item-left', tableName: 'food-task-assign-item-left',
......
...@@ -8,9 +8,6 @@ ...@@ -8,9 +8,6 @@
<Form-item class="search-item" label="试验项目:"> <Form-item class="search-item" label="试验项目:">
<Input v-model="formObj.name" @on-enter="_formSearch" placeholder="请输入试验项目" clearable></Input> <Input v-model="formObj.name" @on-enter="_formSearch" placeholder="请输入试验项目" clearable></Input>
</Form-item> </Form-item>
<Form-item class="search-item" label="试样编号:">
<Input @on-enter="_formSearch" v-model="formObj.sampleCode" name="sampleCode" placeholder="请输入试样编号" clearable></Input>
</Form-item>
<Form-item class="search-btn"> <Form-item class="search-btn">
<Button @click="_formSearch" type="primary">搜索</Button> <Button @click="_formSearch" type="primary">搜索</Button>
</Form-item> </Form-item>
...@@ -271,6 +268,7 @@ export default { ...@@ -271,6 +268,7 @@ export default {
} }
}, },
_equipResult: async function(res) { _equipResult: async function(res) {
this.$refs.pageTable._showLoading()
console.log(res) console.log(res)
const tempData = {} const tempData = {}
tempData.equipList = [] tempData.equipList = []
...@@ -292,6 +290,10 @@ export default { ...@@ -292,6 +290,10 @@ export default {
const result = await soilTest.addExpEquip(tempData) const result = await soilTest.addExpEquip(tempData)
if (result) { if (result) {
this.$Message.success('添加成功') this.$Message.success('添加成功')
this.$refs.pageTable._hideLoading()
this._page()
} else {
this.$refs.pageTable._hideLoading()
} }
}, },
// 调整分组 // 调整分组
......
...@@ -68,13 +68,17 @@ export default { ...@@ -68,13 +68,17 @@ export default {
// this._issuedPage() // this._issuedPage()
} else if (tab.name === 'waitReceive') { } else if (tab.name === 'waitReceive') {
// this._waitPage() // this._waitPage()
this.$refs.waitScanModal._clearTable()
this.$refs.waitReceiveModal._open(this.entrustId) this.$refs.waitReceiveModal._open(this.entrustId)
} else if (tab.name === 'waitScan') { } else if (tab.name === 'waitScan') {
this.$refs.waitReceiveModal._clearTable()
this.$refs.waitScanModal._open(this.entrustId) this.$refs.waitScanModal._open(this.entrustId)
// this._waitSend() // this._waitSend()
} }
}, },
_search() { _search() {
this.$refs.waitScanModal._clearTable()
this.$refs.waitReceiveModal._clearTable()
this.$emit('on-result-change') this.$emit('on-result-change')
}, },
// 关闭弹框的时候刷新上个界面 // 关闭弹框的时候刷新上个界面
......
...@@ -170,6 +170,10 @@ export default { ...@@ -170,6 +170,10 @@ export default {
this.formObj.sampleCode = '' this.formObj.sampleCode = ''
this.getPage = {} this.getPage = {}
}, },
_clearAll() {
this.getPage.records = []
this.selectIds = []
},
_modalResult(data) { _modalResult(data) {
switch (this.currentComponent) { switch (this.currentComponent) {
case 'AssignPerson': case 'AssignPerson':
......
...@@ -40,6 +40,9 @@ export default { ...@@ -40,6 +40,9 @@ export default {
console.log(id) console.log(id)
this.$refs.leftModal._open(this.id) this.$refs.leftModal._open(this.id)
// this.$refs.rightModal._getColumn() // this.$refs.rightModal._getColumn()
},
_clearTable() {
this.$refs.rightModal._clearAll()
} }
} }
} }
......
...@@ -318,6 +318,10 @@ export default { ...@@ -318,6 +318,10 @@ export default {
this._page() this._page()
} }
}, },
_clearAll() {
this.getPage.records = []
this.selectIds = []
},
_refresh() { _refresh() {
this.$emit('on-result-change') this.$emit('on-result-change')
}, },
......
...@@ -35,6 +35,9 @@ export default { ...@@ -35,6 +35,9 @@ export default {
_open(id) { _open(id) {
this.$refs.SampleleftModal._open(id) this.$refs.SampleleftModal._open(id)
// this.$refs.rightModal._getColumn() // this.$refs.rightModal._getColumn()
},
_clearTable() {
this.$refs.SamplerightModal._clearAll()
} }
} }
} }
......
...@@ -78,6 +78,8 @@ export default { ...@@ -78,6 +78,8 @@ export default {
} }
}, },
_search() { _search() {
this.$refs.waitScanModal._clearTab()
this.$refs.waitReceiveModal._clearTab()
this.$emit('on-result-change') this.$emit('on-result-change')
}, },
// 关闭弹框的时候刷新上个界面 // 关闭弹框的时候刷新上个界面
......
...@@ -33,6 +33,9 @@ ...@@ -33,6 +33,9 @@
<div v-if="item.key === 'name'" :style="{color:colorComputed(scope.row.planEndDate)}"> <div v-if="item.key === 'name'" :style="{color:colorComputed(scope.row.planEndDate)}">
{{scope.row[item.key]}} {{scope.row[item.key]}}
</div> </div>
<div v-else-if="item.key==='progress'">
{{ scope.row[item.key].display }}
</div>
<a v-else-if="item.key==='code'" @click.stop="_detailModal(scope.row)">{{scope.row[item.key]}}</a> <a v-else-if="item.key==='code'" @click.stop="_detailModal(scope.row)">{{scope.row[item.key]}}</a>
<a v-else-if="item.key==='num'" @click.stop="_sampleDetail(scope.row)">{{scope.row[item.key]}}</a> <a v-else-if="item.key==='num'" @click.stop="_sampleDetail(scope.row)">{{scope.row[item.key]}}</a>
<span <span
...@@ -104,6 +107,7 @@ export default { ...@@ -104,6 +107,7 @@ export default {
getPage: {}, getPage: {},
pageColumns: [ pageColumns: [
{ title: '检测项目', key: 'name', width: 120, fixed: 'left' }, { title: '检测项目', key: 'name', width: 120, fixed: 'left' },
{ title: '状态', key: 'progress', width: 120 },
{ title: '试样编号', key: 'sampleCode', width: 180 }, { title: '试样编号', key: 'sampleCode', width: 180 },
{ title: '试样深度', key: 'sampleDepth', width: 180 }, { title: '试样深度', key: 'sampleDepth', width: 180 },
{ title: '试样包装类型', key: 'samplePack', width: 180 }, { title: '试样包装类型', key: 'samplePack', width: 180 },
......
...@@ -6,6 +6,10 @@ import workbench from '../pages/workbench/workbench' ...@@ -6,6 +6,10 @@ import workbench from '../pages/workbench/workbench'
import StandardManage from '../pages/meter-aptitude/standard-manage/StandardManage' import StandardManage from '../pages/meter-aptitude/standard-manage/StandardManage'
import ExperimentItemManage from '../pages/meter-aptitude/item-manage/ExperimentItemManage' import ExperimentItemManage from '../pages/meter-aptitude/item-manage/ExperimentItemManage'
import EntrustIndex from '../pages/meter-entrust/entrust-register/EntrustIndex' import EntrustIndex from '../pages/meter-entrust/entrust-register/EntrustIndex'
import ReceiveSampleIndex from '../pages/soil-alone-sample/EntrustIndex'
import InstockIndex from '../pages/soil-alone-sample-instock/EntrustIndex'
import OutstockIndex from '../pages/soil-alone-sample-manage/soil-alone-sample-outstock/EntrustIndex'
import StorehousePlace from '../pages/soil-alone-sample-manage/storehouse-place-manage/AddressManage'
import ReviewEntrust from '../pages/meter-entrust/entrust-review/ReviewEntrust' import ReviewEntrust from '../pages/meter-entrust/entrust-review/ReviewEntrust'
import SampleReceiveIndex from '../pages/soil-sample-manage/sample-receive/SampleReceiveIndex' import SampleReceiveIndex from '../pages/soil-sample-manage/sample-receive/SampleReceiveIndex'
import SamplePreparationIndex from '../pages/soil-sample-manage/sample-preparation/SamplePreparationIndex' import SamplePreparationIndex from '../pages/soil-sample-manage/sample-preparation/SamplePreparationIndex'
...@@ -36,6 +40,7 @@ import FoodReportManageIndex from '../pages/soil-report-manage/report-manage/Foo ...@@ -36,6 +40,7 @@ import FoodReportManageIndex from '../pages/soil-report-manage/report-manage/Foo
import DataConsult from '../pages/soil-test-manage/test-data-consult/DataConsult' import DataConsult from '../pages/soil-test-manage/test-data-consult/DataConsult'
import SoilRecordTemplate from '../pages/soil-record-template-manage/SoilRecordTemplate' import SoilRecordTemplate from '../pages/soil-record-template-manage/SoilRecordTemplate'
import SoilItemReportTemplate from '../pages/soil-report-manage/soil-item-report-template/SoilItemReportTemplate' import SoilItemReportTemplate from '../pages/soil-report-manage/soil-item-report-template/SoilItemReportTemplate'
import SoilSummarySheet from '../pages/soil-report-manage/soil-summary-sheet/SoilSummarySheetTemplate'
import Blank from '~/pages/blank' import Blank from '~/pages/blank'
export default [ export default [
{ {
...@@ -44,6 +49,33 @@ export default [ ...@@ -44,6 +49,33 @@ export default [
meta: { title: '首页' } meta: { title: '首页' }
}, },
{ {
path: 'alone_sample',
component: Blank,
meta: { title: '样品管理' },
children: [
{
path: 'receive_sample',
component: ReceiveSampleIndex,
meta: { title: '收样管理' }
},
{
path: 'instock',
component: InstockIndex,
meta: { title: '入库管理' }
},
{
path: 'outstock',
component: OutstockIndex,
meta: { title: '出库管理' }
},
{
path: 'storehouse_place',
component: StorehousePlace,
meta: { title: '库房位置管理' }
}
]
},
{
path: 'entrust', path: 'entrust',
component: Blank, component: Blank,
meta: { title: '委托单管理' }, meta: { title: '委托单管理' },
...@@ -188,6 +220,11 @@ export default [ ...@@ -188,6 +220,11 @@ export default [
path: 'item_report', path: 'item_report',
component: SoilItemReportTemplate, component: SoilItemReportTemplate,
meta: { title: '试验项目报告模板' } meta: { title: '试验项目报告模板' }
},
{
path: 'summary_sheet',
component: SoilSummarySheet,
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