Commit fe1a159e by zhangmengqi

Merge branch 'dev'

parents e185ebd6 12816a03
...@@ -13,6 +13,10 @@ export default { ...@@ -13,6 +13,10 @@ export default {
pageItem: data => http.post('soil/v1/experiment/page', data).then(res => res), pageItem: data => http.post('soil/v1/experiment/page', data).then(res => res),
pageItemByEntrustId: data => pageItemByEntrustId: data =>
http.post('soil/v1/experiment/page_by_entrust', data).then(res => res), http.post('soil/v1/experiment/page_by_entrust', data).then(res => res),
openSoilRecord: data =>
http.post('soil/v1/open_soil_record/page', data).then(res => res),
getRecordById: data =>
http.get('soil/v1/open_soil_record/' + data).then(res => res),
listEntrustItemNum: data => listEntrustItemNum: data =>
http http
.post('soil/v1/statistics/list_entrust_item_num', data) .post('soil/v1/statistics/list_entrust_item_num', data)
......
...@@ -120,6 +120,24 @@ export default { ...@@ -120,6 +120,24 @@ export default {
data.remark data.remark
) )
.then(res => res), .then(res => res),
expReportIssueBack: data =>
http
.post(
'soil/v1/exp_report/exp_report_issue_back?ids=' +
data.ids +
'&remark=' +
data.remark
)
.then(res => res),
expReportCheckBack: data =>
http
.post(
'soil/v1/exp_report/exp_report_check_back?ids=' +
data.ids +
'&remark=' +
data.remark
)
.then(res => res),
// 样品检测退回 // 样品检测退回
testInputBack: data => testInputBack: data =>
......
...@@ -216,6 +216,8 @@ export default { ...@@ -216,6 +216,8 @@ export default {
http.post('soil/v1/exp_report/page', data).then(res => res), 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),
batchDeleteReport: data =>
http.delete('soil/v1/exp_report/?ids=' + data).then(res => res),
reportPage: data => http.post('soil/v1/report/page', data).then(res => res), reportPage: data => http.post('soil/v1/report/page', data).then(res => res),
pageSummaryCheck: data => pageSummaryCheck: data =>
http.post('soil/v1/report/page_summary_check', data).then(res => res), http.post('soil/v1/report/page_summary_check', data).then(res => res),
......
<template> <template>
<div> <div>
<!--内容--> <!--内容-->
<Modal v-model="showModal" :width="100" class="modal-footer-none modal-top-0"> <Modal v-model="showModal" :width="100" @on-visible-change="_visibleChange" class="modal-footer-none modal-top-0">
<p slot="header">{{modalTitle}}</p> <p slot="header">{{modalTitle}}</p>
<div> <div>
<el-tabs v-model="activeName" @tab-click="_changeTabs"> <el-tabs v-model="activeName" @tab-click="_changeTabs">
...@@ -103,6 +103,9 @@ export default { ...@@ -103,6 +103,9 @@ export default {
this._summary() this._summary()
break break
} }
},
_visibleChange() {
this.$emit('on-result-change')
} }
// _sampleTabResult(msg) { // _sampleTabResult(msg) {
// if (msg === 'changeTab') { // if (msg === 'changeTab') {
......
...@@ -60,17 +60,18 @@ ...@@ -60,17 +60,18 @@
style="width:400px"> style="width:400px">
</DatePicker> </DatePicker>
</Modal> </Modal>
<Reason ref="reasonModal" @on-result-change="_reasonResult" ></Reason>
</div> </div>
</template> </template>
<script> <script>
import { soilReport, soilStatistics, soilTest } from '../../../api' import { soilReport, soilSample, soilStatistics, soilTest } from '../../../api'
import Global from '../../../api/config' import Global from '../../../api/config'
import Reason from '../../../components/base/Reason'
/** /**
* 报告编制的-待办-报告台账 * 报告编制的-待办-报告台账
*/ */
export default { export default {
components: {}, components: { Reason },
data() { data() {
return { return {
notOkCountList: [ notOkCountList: [
...@@ -91,6 +92,11 @@ export default { ...@@ -91,6 +92,11 @@ export default {
type: 'primary', type: 'primary',
id: '', id: '',
name: '提交' name: '提交'
},
{
type: 'primary',
id: '',
name: '退回'
} }
], ],
selectIds: [], selectIds: [],
...@@ -276,6 +282,8 @@ export default { ...@@ -276,6 +282,8 @@ export default {
this._page() this._page()
}, },
_page: async function() { _page: async function() {
this.selectData = []
this.selectIds = []
Object.assign(this.formObj, this.$refs.pageTable._searchParams()) Object.assign(this.formObj, this.$refs.pageTable._searchParams())
const result = await soilTest.pageSummaryCheck( const result = await soilTest.pageSummaryCheck(
this.$serializeForm(this.formObj) this.$serializeForm(this.formObj)
...@@ -299,12 +307,39 @@ export default { ...@@ -299,12 +307,39 @@ export default {
case '提交': case '提交':
this._submit() this._submit()
break break
case '退回':
this._goBack()
break
case 'search': case 'search':
this.searchOpen = !this.searchOpen this.searchOpen = !this.searchOpen
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.expReportCheckBack({
ids: this.selectIds,
remark: data
})
if (result) {
this.$Message.success('退回成功!')
await this._page()
}
},
// 选择审核人 // 选择审核人
_selectAuditor() { _selectAuditor() {
if (this.selectIds.length === 0) { if (this.selectIds.length === 0) {
......
...@@ -60,18 +60,20 @@ ...@@ -60,18 +60,20 @@
style="width:400px"> style="width:400px">
</DatePicker> </DatePicker>
</Modal> </Modal>
<Reason ref="reasonModal" @on-result-change="_reasonResult" ></Reason>
</div> </div>
</template> </template>
<script> <script>
import http from '../../../api/http' import http from '../../../api/http'
import { soilReport, soilStatistics, soilTest } from '../../../api' import { soilReport, soilSample, soilStatistics, soilTest } from '../../../api'
import Global from '../../../api/config' import Global from '../../../api/config'
import Reason from '../../../components/base/Reason'
/** /**
* 报告编制的-待办-报告台账 * 报告编制的-待办-报告台账
*/ */
export default { export default {
components: {}, components: { Reason },
data() { data() {
return { return {
notOkCountList: [ notOkCountList: [
...@@ -92,6 +94,11 @@ export default { ...@@ -92,6 +94,11 @@ export default {
type: 'primary', type: 'primary',
id: '', id: '',
name: '提交' name: '提交'
},
{
type: 'primary',
id: '',
name: '退回'
} }
], ],
selectIds: [], selectIds: [],
...@@ -300,12 +307,39 @@ export default { ...@@ -300,12 +307,39 @@ export default {
case '提交': case '提交':
this._submit() this._submit()
break break
case '退回':
this._goBack()
break
case 'search': case 'search':
this.searchOpen = !this.searchOpen this.searchOpen = !this.searchOpen
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.expReportIssueBack({
ids: this.selectIds,
remark: data
})
if (result) {
this.$Message.success('退回成功!')
await this._page()
}
},
// 选择审核人 // 选择审核人
_selectAuditor() { _selectAuditor() {
if (this.selectIds.length === 0) { if (this.selectIds.length === 0) {
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
</Form-item> </Form-item>
</Form> </Form>
<Col span="24"> <Col span="24">
<btn-list :msg="btn" :open="searchOpen" show-search-btn="true" @on-result-change="_btnClick" /> <btn-list :open="searchOpen" show-search-btn="true" @on-result-change="_btnClick" />
</Col> </Col>
<!-- <Col span="24">--> <!-- <Col span="24">-->
<!-- &lt;!&ndash; <Button type="primary" @click="_submitReportCheck">&ndash;&gt;--> <!-- &lt;!&ndash; <Button type="primary" @click="_submitReportCheck">&ndash;&gt;-->
......
...@@ -65,6 +65,7 @@ import SampleManage from './SampleManage' ...@@ -65,6 +65,7 @@ import SampleManage from './SampleManage'
import SamplePreparationEdit from './SamplePreparationEdit' import SamplePreparationEdit from './SamplePreparationEdit'
import SoilSampleItemManageEdit from './SoilSampleItemManageEdit' import SoilSampleItemManageEdit from './SoilSampleItemManageEdit'
import SoilEntrustItemNum from './SoilItemNum' import SoilEntrustItemNum from './SoilItemNum'
import ViewPrepareRecord from './ViewPrepareRecord'
export default { export default {
components: { components: {
// eslint-disable-next-line vue/no-unused-components // eslint-disable-next-line vue/no-unused-components
...@@ -78,7 +79,9 @@ export default { ...@@ -78,7 +79,9 @@ export default {
// eslint-disable-next-line vue/no-unused-components // eslint-disable-next-line vue/no-unused-components
CreateReport, CreateReport,
// eslint-disable-next-line vue/no-unused-components // eslint-disable-next-line vue/no-unused-components
SoilEntrustItemNum SoilEntrustItemNum,
// eslint-disable-next-line vue/no-unused-components
ViewPrepareRecord
}, },
data() { data() {
return { return {
...@@ -108,6 +111,11 @@ export default { ...@@ -108,6 +111,11 @@ export default {
name: '导出开土制备记录' name: '导出开土制备记录'
}, },
{ {
type: 'ios-folder-outline',
id: '',
name: '开土制备记录查看'
},
{
type: 'ios-camera-outline', type: 'ios-camera-outline',
id: '', id: '',
name: '试样照片' name: '试样照片'
...@@ -196,6 +204,9 @@ export default { ...@@ -196,6 +204,9 @@ export default {
case '导出开土制备记录': case '导出开土制备记录':
this._exportPrepare(data.id) this._exportPrepare(data.id)
break break
case '开土制备记录查看':
this._viewPrepareRecord(data.id)
break
case '试样列表': case '试样列表':
this._sampleManage(data.id) this._sampleManage(data.id)
break break
...@@ -410,6 +421,13 @@ export default { ...@@ -410,6 +421,13 @@ export default {
}) })
// this.$refs.itemManageModal._openByEntrustId(data) // this.$refs.itemManageModal._openByEntrustId(data)
}, },
_viewPrepareRecord(data) {
this.currentComponent = 'ViewPrepareRecord'
this.$nextTick(() => {
this.$refs.refModal._openByEntrustId(data)
})
// this.$refs.itemManageModal._openByEntrustId(data)
},
_itemNumManage(data) { _itemNumManage(data) {
this.currentComponent = 'SoilEntrustItemNum' this.currentComponent = 'SoilEntrustItemNum'
this.$nextTick(() => { this.$nextTick(() => {
......
<template>
<div>
<Modal v-model="showModal" v-drag width="700">
<p slot="header">
{{ modalTitle }}
</p>
<div>
<!--内容-->
<Row>
<!--查询-->
<Col span="24">
<Form id="search-sample-company" v-show="searchOpen" :label-width="100" inline onsubmit="return false">
<label class="label-sign"></label>
<Form-item label="创建人:" class="search-item">
<Input v-model="formObj.uname" @on-enter="_formSearch" placeholder="请输入创建人" clearable />
</Form-item>
<Form-item class="search-btn">
<Button @click="_formSearch" type="primary">
搜索
</Button>
</Form-item>
</Form>
</Col>
<!--操作-->
<Col span="24">
<btn-list :open="searchOpen" @on-result-change="_btnClick" class="contHide" show-search-btn="true"></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" 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"
:edit-render="item.editCell?{autofocus: 'input'}:null"
:fixed="item.fixed?item.fixed:undefined" sortable>
<template slot-scope="scope">
<div v-if="item.detail">
<a @click.stop="_detailModal(scope.row)">{{ scope.row[item.key] }}</a>
</div>
<div v-else-if="item.key==='epibolyItem'" @click.stop="_handleRow(scope)">
<el-select v-if="showOption" v-model="scope.row.epibolyItem" @change="_optionChange(scope.row)" placeholder="请选择">
<el-option
v-for="(item,index) in subOptions"
:key="index"
:label="item.label"
:value="index"
/>
</el-select>
<span v-if="!showOption">{{ scope.row[item.key]===0? '否':'是' }}</span>
</div>
<div v-else-if="item.key==='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>
</PTVXETable>
</Col>
</Row>
</div>
<div slot="footer">
<modal-footer ref="footerModal" :footer="footerList" @on-result-change="_footerResult" />
</div>
</Modal>
</div>
</template>
<script>
import http from '../../../api/http'
import { soilAptitude, soilEntrust } from '../../../api'
export default {
components: {},
data() {
return {
formId: 'SampleItemManage',
currentComponent: '',
btn: [
{
type: 'success',
id: '',
name: '批量填写试验项目信息'
},
{
type: 'error',
id: '',
name: '删除'
}
],
itemData: [
{
name: '是',
value: 1
},
{
name: '否',
value: 0
}
],
iconMsg: [{ type: 'ios-book', id: '', name: '编辑' }],
sampleId: '', // 样品id
entrustId: '',
showModal: false,
modalTitle: '开土制备记录查看',
selectIds: [],
itemId: '',
index: '',
showOption: true,
searchOpen: true,
selectData: {},
getPage: {},
groupoptions: [],
testBasisList: [],
currentRow: '',
currentIndex: '',
footerList: [
{ id: '', name: '取消', type: '' },
{ id: '', name: '关闭', type: 'primary' }
],
pageColumns: [
{ title: '创建人', key: 'uname', width: 160 },
{ title: '版本', key: 'version', width: 160 },
{
title: '备注',
key: 'remark',
width: 160
}
],
subOptions: [
{
value: '0',
label: '否'
},
{
value: '1',
label: '是'
}
],
dateList: [],
formObj: {
name: undefined,
sampleId: undefined,
groupName: undefined,
uname: undefined,
entrustId: undefined,
grouped: undefined
}
}
},
computed: {
tableHeight: function() {
return this.$tableHeight('tableModal')
}
},
methods: {
_selectjudgeBasis(id, index) {
console.log(id)
this.itemId = id
this.index = index
this.$refs.EditModal._open()
},
_optionChange(data) {
console.log(data)
if (data.epibolyItem === 1) {
this._submit(data.id)
} else {
this._cancelSub(data.id)
}
},
_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
},
_ok() {
console.log(this.getPage.records)
},
_modalResult(data1, data2) {
switch (this.currentComponent) {
case 'CopyModal':
if (data1 === 0) {
this._copySample(data2)
} else {
this._copyAll(data2)
}
break
default:
this._search()
}
},
_getGroupList: async function() {
const result = await soilAptitude.getGroupList()
if (result) {
this.groupoptions = result
}
},
_getTestBasisList: async function() {
const result = await soilAptitude.getBasisList()
if (result) {
this.testBasisList = result
}
},
_selGroup(msg, data, handleObj) {
console.log(handleObj)
if (msg === 'select') {
this.getPage.records[this.currentIndex].groupName = data.name
this.getPage.records[this.currentIndex].groupId = data.id
const tempData = {}
tempData.groupName = data.name
tempData.groupId = data.id
this._editItem(handleObj.id, tempData)
}
},
_selTestBasis(msg, data, handleObj) {
console.log(handleObj)
if (msg === 'select') {
this.getPage.records[this.currentIndex].testBasis = data.name
const tempData = {}
tempData.testBasis = data.name
this._editItem(handleObj.id, tempData)
}
},
inputChange(data) {
const editData = {}
editData.shortName = data.shortName
this._editItem(data.id, editData)
},
inputMainTypeChange(data) {
const editData = {}
editData.mainType = data.mainType
this._editItem(data.id, editData)
},
inputSmallTypeChange(data) {
const editData = {}
editData.smallType = data.smallType
this._editItem(data.id, editData)
},
basisChange(data) {
const editData = {}
editData.testBasis = data.testBasis
this._editItem(data.id, editData)
},
methodChange(data) {
const editData = {}
editData.testMethod = data.testMethod
this._editItem(data.id, editData)
},
_editItem: async function(id, obj) {
const result = await soilEntrust.editItem({ id: id, obj: obj })
if (result) {
this.$Message.success('修改成功')
} else {
this.$Message.warning('修改失败')
}
},
_handleRow(data) {
this.currentRow = data.row
this.currentIndex = data.rowIndex
},
_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._writeInfo()
break
case '提交分包':
this._submitOutPack()
break
case '取消分包':
this._cancelOutPack()
break
case '添加':
this._editModal(false)
break
case '复制历史样品':
this._copyHisSample()
break
case '导入样品':
this._importSample()
break
case '导入检测项目':
this._importItem()
break
case '导入检测项目包':
this._importItemPackage()
break
case '复制历史样品检测项目':
this._copyHisItem()
break
case '删除':
this._deleteSelected()
break
case '导出':
this._exportSample()
break
case '添加模拟样品':
this._editImitateModal(false)
break
case 'search':
this.searchOpen = !this.searchOpen
break
}
})
},
_writeInfo() {
if (this.selectIds.length === 0) {
this.$Message.warning('请选择一条或多条数据!')
} else {
this.$refs.batchEdit._open(this.selectIds)
}
},
_backData(data) {
this.getPage.records[this.index].code = data.code
this._codeEdit({ id: this.itemId, obj: { code: data.code } })
},
_codeEdit: async function(data) {
const result = await soilEntrust.pageItemEdit(data)
if (result) {
this.$message.success('保存成功')
this._pageByEntrustId()
} else {
this.$message.warning('保存失败')
}
},
_compareSymbolEdit: async function(data) {
const result = await soilEntrust.pageItemEdit(data)
if (result) {
this.$message.success('保存成功')
this._pageByEntrustId()
} else {
this.$message.warning('保存失败')
}
},
_limitValueEdit: async function(data) {
const result = await soilEntrust.pageItemEdit(data)
if (result) {
this.$message.success('保存成功')
this._pageByEntrustId()
} else {
this.$message.warning('保存失败')
}
},
_unitEdit: async function(data) {
const result = await soilEntrust.pageItemEdit(data)
if (result) {
this.$message.success('保存成功')
this._pageByEntrustId()
} else {
this.$message.warning('保存失败')
}
},
_submitOutPack() {
if (this.selectIds.length === 0) {
this.$Message.warning('请至少选择一条')
} else {
this.$Modal.confirm({
title: '提示',
content: '确定分包这' + this.selectIds.length + '条',
onOk: () => {
this._submit()
}
})
}
},
_cancelOutPack() {
if (this.selectIds.length === 0) {
this.$Message.warning('请至少选择一条')
} else {
this.$Modal.confirm({
title: '提示',
content: '确定取消这' + this.selectIds.length + '条分包',
onOk: () => {
this._cancelSub()
}
})
}
},
_submit: async function(data) {
if (data !== undefined) {
this.selectIds = data
}
const result = await soilEntrust.submitOutPack(this.selectIds)
if (result) {
this._resultChange('分包成功')
}
},
_cancelSub: async function(data) {
if (data !== undefined) {
this.selectIds = data
}
const result = await soilEntrust.cancelOutPack(this.selectIds)
if (result) {
this._resultChange('取消分包成功')
}
},
_exportSample() {
if (this.selectIds.length === 0) {
this.$Message.warning('请至少选择一条样品')
} else {
this.$Modal.confirm({
title: '提示',
content: '确定导出这' + this.selectIds.length + '条样品',
onOk: () => {
http.open(
'/food/v1/sample/company/export',
{ ids: this.selectIds.join(',') },
'_blank'
)
}
})
}
},
_copyHisSample() {
this.$refs.refModal._open(this.sampleId)
},
_iconClick(res, data, componentName, index) {
this.currentComponent = componentName
this.$nextTick(function() {
switch (res) {
case '编辑':
this._editModal(data)
break
case '复制':
this._copy(data)
break
case '删除':
console.log(index)
this._deleteById(data.id)
break
case '导出样品委托协议':
this._exportAgreement(data.id)
break
case '附件':
this.$refs.refModal._open(data.id, 'sampleId')
break
}
})
},
_exportAgreement(id) {
this.$store
.dispatch(
'ReportExport/getById',
'food-contract-company-export-sample-agreement'
)
.then(() => {
if (this.$store.state.ReportExport.model) {
if (this.$store.state.ReportExport.model.indexOf('?') !== -1) {
window.open(
this.$store.state.ReportExport.model + '&sampleId=' + id,
'_blank'
)
} else {
window.open(
this.$store.state.ReportExport.model + '?sampleId=' + id,
'_blank'
)
}
}
})
},
_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 'iconClick':
this._iconClick(data.name, data.rowData, data.componentName)
break
case 'page':
this._pageByEntrustId()
break
case 'changeSize':
this._pageByEntrustId()
break
}
},
_open(id) {
this.formObj = this.$resetFields(this.formObj)
this.dateList = []
this.showModal = true
this.sampleId = id // 委托id
this.$refs.pageTable._hideLoading()
this._pageByEntrustId()
},
_openByEntrustId(id) {
this.formObj = this.$resetFields(this.formObj)
this.dateList = []
this.showModal = true
this.entrustId = id // 委托id
this.$refs.pageTable._hideLoading()
this._pageByEntrustId()
// this._getGroupList()
// this._getTestBasisList()
},
_openRecord(id) {
this.formObj = this.$resetFields(this.formObj)
this.dateList = []
this.showModal = true
this.sampleId = id // 委托id
this.$refs.pageTable._hideLoading()
this.showOption = false
this._pageByEntrustId()
},
_formSearch() {
this.$refs.pageTable._pageChange(1)
},
_pageByEntrustId: async function() {
this.selectIds = []
Object.assign(this.formObj, this.$refs.pageTable._searchParams())
this.formObj = this.$serializeForm(this.formObj)
this.formObj.entrustId = this.entrustId
const result = await soilEntrust.openSoilRecord(
this.$serializeForm(this.formObj)
)
if (result) {
this.$refs.pageTable._hideLoading()
this.getPage = result
console.log(result)
}
},
_page: async function() {
Object.assign(this.formObj, this.$refs.pageTable._searchParams())
this.formObj = this.$serializeForm(this.formObj)
this.formObj.sampleId = this.sampleId
const result = await soilEntrust.pageItem(
this.$serializeForm(this.formObj)
)
if (result) {
this.$refs.pageTable._hideLoading()
this.getPage = result
console.log(result)
}
},
_deleteByIds(ids, content) {
this.$Modal.confirm({
title: '提示',
content: content || '确定删除该记录?',
onOk: () => {
this._deleteOk(ids)
}
})
},
_deleteOk: async function(ids) {
const result = await soilEntrust.experimentDeleteById(ids)
if (result) {
this._resultChange('删除成功! ')
}
},
_deleteById(id) {
// 删除一条记录
this._deleteByIds([id])
},
_deleteSelected() {
// 批量删除
const ids = this.selectIds
if (ids.length === 0) {
this.$Message.warning('请选择一条或多条数据!')
} else {
this._deleteByIds(ids, '确定删除 ' + ids.length + ' 条记录?')
}
},
_detailModal(data) {},
_editModal: async function(data) {
const result = await soilEntrust.getRecordById(data.id)
if (result) {
this._viewReport(result)
}
},
_viewReport(data) {
this.$refs.pageTable._hideLoading()
if (data) {
this.$openWindowModeless({
objectKey: data.objectKey,
idType: 14,
id: data.id,
isReport: 4
})
}
},
// 添加编辑模拟样品
_editImitateModal(edit, data) {
if (edit) {
// 模拟样品的编辑
const tempData = JSON.parse(JSON.stringify(data)) // 深拷贝
this.$refs.imitateModal._open(tempData, this.sampleId)
} else {
// 模拟样品的添加
this.$refs.imitateModal._open('', this.sampleId)
}
},
_search() {
this._pageByEntrustId()
},
_resultChange(msg) {
this._pageByEntrustId()
this.$Message.success(msg)
this.$emit('on-result-change')
},
_copy(data) {
this.$refs.copyModal._open(data.id, data.type)
},
// 复制样品
_copySample(data) {
this.$store
.dispatch('FoodSample/getByCompanyId', data.sampleId)
.then(() => {
const result = this.$store.state.FoodSample.companyModel
if (data.type === 0) {
// 普通样品
this.currentComponent = 'FoodSampleCompanyEdit'
this.$nextTick(function() {
this.$refs.refModal._openCopySample(result)
})
} else if (data.type === 3) {
// 模拟样品
this.$refs.imitateModal._openCopySample(result)
}
})
},
_copyAll(data) {
this.$store
.dispatch('FoodSample/getByCompanyId', data.sampleId)
.then(() => {
const result = this.$store.state.FoodSample.companyModel
if (data.type === 0) {
// 普通样品
this.currentComponent = 'FoodSampleCompanyEdit'
this.$nextTick(function() {
this.$refs.refModal._openCopyAll(result)
})
} else if (data.type === 3) {
// 模拟样品
this.$refs.imitateModal._openCopyAll(result)
}
})
},
// 导入样品
_importSample() {
const data = {
importUrl: '/food/v1/sample/company/import_' + this.sampleId,
downloadUrl: '/food/v1/excel/template/FoodSampleCompany',
title: '导入'
}
this.$refs.refModal._open(data)
},
// 导入检测项目
_importItem() {
if (this.selectIds.length === 0) {
this.$Message.warning('请至少选中一条样品数据!')
} else {
this.$refs.refModal._open(
this.selectIds,
this.selectData[0],
this.selectData
)
}
},
// 导入检测项目包
_importItemPackage() {
if (this.selectIds.length === 0) {
this.$Message.warning('请至少选中一条样品数据!')
} else {
this.$refs.refModal._open(this.selectIds, 'sample-rel-package-item')
}
},
_copyHisItem() {
if (this.selectIds.length === 0) {
this.$Message.warning('请至少选中一条样品数据!')
} else {
this.$refs.refModal._open(this.selectIds)
}
},
_operationRecord(id) {
// 操作日志
this.$refs.recordModal._open(id)
}
}
}
</script>
<template>
<div>
<Modal v-model="showBackModal" :mask-closable="false" class="zIndex-1100">
<p slot="header">{{modalTitle}}</p>
<div>
<Form ref="formObj" :model="formObj" :rules="ruleValidate" :label-width="90">
<Form-item label="打印份数" prop="number">
<InputNumber :min="1" :step="1" v-model.number="formObj.number"
name="number"
style="width:100%" placeholder="请输入打印份数">
</InputNumber>
</Form-item>
</Form>
</div>
<div slot="footer" class="btn-width">
<Button @click="_cancel" style="margin-left: 8px">取消</Button>
<Button @click="_ok" type="primary">确定</Button>
</div>
</Modal>
</div>
</template>
<script>
/**
* 制备标签打印数量
*/
export default {
components: {},
data() {
return {
currentComponent: '',
modalTitle: '打印份数',
showBackModal: false,
formObj: {
number: 1
},
ruleValidate: {
number: [
{
required: true,
message: '打印份数不能为空',
trigger: 'blur',
type: 'number'
}
]
},
printerVal: '',
selectData: [],
companyId: ''
}
},
methods: {
// 打开界面
_open() {
this.showBackModal = true
this.formObj.number = 1
},
_cancel() {
this.showBackModal = false
},
// 打开界面
_ok() {
this.$refs.formObj.validate(valid => {
if (valid) {
this.$emit('on-result-change', this.formObj.number)
this.showBackModal = false
} else {
this.$Message.error('表单验证失败!')
}
})
}
}
}
</script>
...@@ -73,18 +73,26 @@ ...@@ -73,18 +73,26 @@
</Row> </Row>
</div> </div>
<!--选择领样人--> <!--选择领样人-->
<downloadPlugin ref="downloadPlugin"></downloadPlugin>
<SelectPrinter ref="selectPrint" @on-result-change="_printResult"></SelectPrinter>
<PrintNum ref="printNum" @on-result-change="_printNumResult"></PrintNum>
</div> </div>
</template> </template>
<script> <script>
import { soilAptitude, soilEntrust } from '../../../../api' import { soilAptitude, soilEntrust, soilStatistics } from '../../../../api'
import SelectPrinter from '../../sample-preparation/SelectPrinter'
import { getLodop } from '../../../../plugins/clodop/LodopFuncs'
import downloadPlugin from '../../../../plugins/download/downloadPlugin'
import PrintNum from './PrintNum'
let LODOP
export default { export default {
components: {}, components: { PrintNum, SelectPrinter, downloadPlugin },
data() { data() {
return { return {
btn: [ btn: [
{ type: 'primary', id: '', name: '发放' }, { type: 'primary', id: '', name: '发放' },
{ type: 'primary', id: '', name: '发放到高级试验' } { type: 'primary', id: '', name: '发放到高级试验' },
{ type: 'primary', id: '', name: '打印标签' }
], ],
selectIds: [], selectIds: [],
getPage: {}, getPage: {},
...@@ -295,8 +303,15 @@ export default { ...@@ -295,8 +303,15 @@ export default {
case '接收': case '接收':
this._sampleReceive() this._sampleReceive()
break break
// case '打印标签':
// this._selectPrinter('print-label')
// break
case '打印标签': case '打印标签':
this._selectPrinter('print-label') if (this.selectData.length > 0) {
this.$refs.selectPrint._open()
} else {
this.$Message.warning('请至少选择一条数据')
}
break break
case '自定义打印': case '自定义打印':
if (this.selectData.length === 0) { if (this.selectData.length === 0) {
...@@ -311,6 +326,117 @@ export default { ...@@ -311,6 +326,117 @@ export default {
} }
}) })
}, },
_pluginDownload() {
this.$refs.downloadPlugin._open()
},
_printResult(data) {
console.log(data)
if (data) {
console.log('data.printerVal')
this.printerVal = data.printerVal
this.$refs.printNum._open()
// this._getLabelInfo()
}
},
_printNumResult(data) {
this.printNum = data
this._getLabelInfo()
},
_getLabelInfo: async function() {
console.log('this._getLabelInfo')
const result = await soilStatistics._getLabel(
this.$serializeForm(this.formObj)
)
if (result) {
for (let i = 0; i < result.records.length; i++) {
if (result.records[i].type.display === '打印前处理标签') {
this.labelCode = result.records[i].code
}
}
console.log(result)
}
this._printMessage()
},
_printMessage: function() {
LODOP = getLodop()
if (LODOP === 'undefined' || LODOP === undefined) {
this._pluginDownload()
return false
}
if (LODOP.GET_PRINTER_COUNT() === 0) {
this.$Messager.warning('系统未关联打印机,请确认....')
return false
}
const data = this.selectData
for (let i = 0; i < data.length; i++) {
for (let j = 0; j < this.printNum; j++) {
this._printLabelOk(data[i])
}
}
},
_printLabelOk(row) {
LODOP.PRINT_INITA('') // 必须在设置打印机之前
// 返回的标签代码
// eslint-disable-next-line no-eval
eval(this._replaceCodes(row))
// 设置打印机
LODOP.SET_PRINTER_INDEX(this.printerVal)
// 打开设计模式
// LODOP.PRINT_DESIGN()
LODOP.PRINT()
},
_replaceCodes(row) {
// /g表示全局替换
let result = this.labelCode
result = result.replace(
/\$sampleCode\$/g,
undefined !== row.sampleCode ? row.sampleCode : ''
)
result = result.replace(
/\$sampleDepth\$/g,
undefined !== row.sampleDepth ? row.sampleDepth : ''
)
result = result.replace(
/\$receiver\$/g,
undefined !== row.receiver ? row.receiver : ''
)
result = result.replace(
/\$receiveTime\$/g,
undefined !== row.receiveTime ? this._formatDate(row.receiveTime) : ''
)
result = result.replace(
/\$entrustCode\$/g,
undefined !== row.entrustCode ? row.entrustCode : ''
)
// 检测项目
result = result.replace(
/\$experimentNames\$/g,
undefined !== row.experimentNames ? row.experimentNames : ''
)
// 二维码地址
result = result.replace(
/\$qrCode\$/g,
undefined !== row.qrCode ? row.qrCode : ''
)
return result
},
_formatDate(time) {
const date = new Date(time)
const YY = date.getFullYear() + '-'
const MM =
(date.getMonth() + 1 < 10
? '0' + (date.getMonth() + 1)
: date.getMonth() + 1) + '-'
const DD = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
const hh =
(date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':'
const mm =
(date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) +
':'
const ss =
date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
return YY + MM + DD + ' ' + hh + mm + ss
},
// 扫码发放 // 扫码发放
_oneKeySend() { _oneKeySend() {
if (this.selectIds.length === 0) { if (this.selectIds.length === 0) {
......
...@@ -11,9 +11,12 @@ ...@@ -11,9 +11,12 @@
<el-tab-pane label="按样品审核" name="waitScan"> <el-tab-pane label="按样品审核" name="waitScan">
<WaitScan ref="waitScanModal"></WaitScan> <WaitScan ref="waitScanModal"></WaitScan>
</el-tab-pane> </el-tab-pane>
<!-- <el-tab-pane label="查看原始记录" name="viewRecord">--> <el-tab-pane label="查看项目报告" name="viewReport">
<!-- <OriginalRecordView ref="recordModal"></OriginalRecordView>--> <ItemReportView ref="reportModal"></ItemReportView>
<!-- </el-tab-pane>--> </el-tab-pane>
<el-tab-pane label="查看原始记录" name="viewRecord">
<OriginalRecordView ref="recordModal"></OriginalRecordView>
</el-tab-pane>
</el-tabs> </el-tabs>
<!-- <keep-alive>--> <!-- <keep-alive>-->
<!-- &lt;!&ndash; eslint-disable-next-line vue/require-component-is &ndash;&gt;--> <!-- &lt;!&ndash; eslint-disable-next-line vue/require-component-is &ndash;&gt;-->
...@@ -26,13 +29,15 @@ ...@@ -26,13 +29,15 @@
<script> <script>
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 ItemReportView from './ItemReportView'
import OriginalRecordView from './OriginalRecordView'
export default { export default {
components: { components: {
WaitReceive, WaitReceive,
WaitScan WaitScan,
// OriginalRecordView ItemReportView,
OriginalRecordView
}, },
data() { data() {
return { return {
...@@ -85,6 +90,8 @@ export default { ...@@ -85,6 +90,8 @@ export default {
this.$refs.waitReceiveModal._clearTable() this.$refs.waitReceiveModal._clearTable()
this.$refs.waitScanModal._open(this.entrustId) this.$refs.waitScanModal._open(this.entrustId)
// this._waitSend() // this._waitSend()
} else if (tab.name === 'viewReport') {
this.$refs.reportModal._open(this.entrustId)
} }
}, },
_search() { _search() {
......
<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.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" :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: [
{
type: 'primary',
id: '',
name: '通过'
}
],
selectIds: [],
iconMsg: [
{
type: 'md-create',
id: '',
name: '编辑'
},
{
type: 'ios-book',
id: '',
name: '查看项目报告'
},
{ type: 'md-trash', id: '', name: '删除' }
],
pageColumns: [
{ title: '项目名称', key: 'expName' },
{ 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')
}
}
},
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 '通过':
this._pass()
break
case 'search':
this.searchOpen = !this.searchOpen
break
}
})
},
_pass() {
if (this.selectIds.length === 0) {
this.$Message.warning('请至少选择一条数据')
} else {
this.$Modal.confirm({
title: '提示',
content: '确定通过?',
onOk: () => {
this.$refs.pageTable._showLoading()
this._passItemReport(this.selectIds)
}
})
}
},
_passItemReport: async function(ids) {
const result = await soilReport.expReportCheck({ ids: ids.join(',') })
if (result) {
this.$refs.pageTable._hideLoading()
this.$Message.success('提交成功')
this._page()
} else {
this.$refs.pageTable._hideLoading()
}
},
_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: 13,
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() {
this.selectIds = []
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>
<template>
<div>
<Modal v-model="showModal" v-drag width="1200">
<p slot="header">
{{ modalTitle }}
</p>
<div>
<!--内容-->
<Row>
<!--查询-->
<Col span="24">
<Form id="search-sample-company" v-show="searchOpen" :label-width="90" inline onsubmit="return false">
<label class="label-sign"></label>
<Form-item label="试验名称:" class="search-item">
<Input v-model="formObj.name" @on-enter="_formSearch" placeholder="请输入试验名称" clearable />
</Form-item>
<Form-item class="search-btn">
<Button @click="_formSearch" type="primary">
搜索
</Button>
</Form-item>
</Form>
</Col>
<!--操作-->
<Col span="24">
<btn-list :open="searchOpen" @on-result-change="_btnClick" class="contHide" show-search-btn="true"></btn-list>
</Col>
<!-- 表格 -->
<Col span="24">
<PTVXETable ref="pageTable" :table-height="tableHeight" :form-id="formId" :loading="true"
:get-page="getPage" @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">
<div v-if="item.detail">
<a @click.stop="_detailModal(scope.row)">{{ scope.row[item.key] }}</a>
</div>
<div v-else-if="item.key==='epibolyItem'" @click.stop="_handleRow(scope)">
<el-select v-if="showOption" v-model="scope.row.epibolyItem" @change="_optionChange(scope.row)" placeholder="请选择">
<el-option
v-for="(item,index) in subOptions"
:key="index"
:label="item.label"
:value="index"
/>
</el-select>
<span v-if="!showOption">{{ scope.row[item.key]===0? '否':'是' }}</span>
</div>
<div v-else-if="item.key==='status'">
{{ scope.row[item.key].display }}
</div>
<div v-else-if="item.judged">
{{ scope.row[item.key]===0? '否':'是' }}
</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==='code'" @click.stop="_handleRow(scope)">
<el-input
v-model="scope.row.code"
@blur="_codeEdit({id:scope.row.id, obj :{code:scope.row.code}})"
style="width: 130px;"
blur
placeholder="请选择检测依据"
/>
<i @click.stop="_selectjudgeBasis(scope.row.id,scope.$index)" style="cursor: pointer;font-size: 14px;" class="icons iconfont pt-search icon-search"></i>
</div>
<div v-else-if="item.key==='compareSymbol'" @click.stop="_handleRow(scope)">
<el-input
v-model="scope.row.compareSymbol"
@blur="_compareSymbolEdit({id:scope.row.id, obj :{compareSymbol:scope.row.compareSymbol}})"
blur
placeholder="请输入比较符"
/>
</div>
<div v-else-if="item.key==='limitValue'" @click.stop="_handleRow(scope)">
<el-input
v-model="scope.row.limitValue"
@blur="_limitValueEdit({id:scope.row.id, obj :{limitValue:scope.row.limitValue}})"
blur
placeholder="请输入限值"
/>
</div>
<div v-else-if="item.key==='unit'" @click.stop="_handleRow(scope)">
<el-input
v-model="scope.row.unit"
@blur="_unitEdit({id:scope.row.id, obj :{unit:scope.row.unit}})"
blur
placeholder="请输入单位"
/>
</div>
<div v-else>
{{ scope.row[item.key] }}
</div>
</template>
</vxe-table-column>
</PTVXETable>
</Col>
</Row>
</div>
<div slot="footer">
<modal-footer ref="footerModal" :footer="footerList" @on-result-change="_footerResult" />
</div>
</Modal>
</div>
</template>
<script>
import http from '../../../api/http'
import { soilEntrust, soilTest } from '../../../api'
export default {
components: {},
data() {
return {
formId: 'SampleItemManage',
currentComponent: '',
iconMsg: [{ type: 'pt-a-end', id: '', name: '删除' }],
sampleId: '', // 样品id
showModal: false,
modalTitle: '管理检测项目',
selectIds: [],
itemId: '',
recordId: '',
index: '',
showOption: true,
searchOpen: true,
selectData: {},
getPage: {},
currentRow: '',
currentIndex: '',
footerList: [
{ id: '', name: '取消', type: '' },
{ id: '', name: '关闭', type: 'primary' }
],
pageColumns: [
{ title: '试验名称', key: 'name', width: 160 },
{ title: '试验项目英文简写', key: 'shortName', width: 140 },
{ title: '大类', key: 'mainType', width: 140 },
{ title: '小类', key: 'smallType' },
{ title: '检测依据', key: 'testBasis', width: 180 },
{ title: '试验方法', key: 'testMethod', width: 180 },
{ title: '状态', key: 'status', width: 180 }
],
subOptions: [
{
value: '0',
label: '否'
},
{
value: '1',
label: '是'
}
],
dateList: [],
formObj: {
name: undefined,
recordId: undefined,
code: undefined
}
}
},
computed: {
tableHeight: function() {
return this.$tableHeight('tableModal')
}
},
methods: {
_selectjudgeBasis(id, index) {
console.log(id)
this.itemId = id
this.index = index
this.$refs.EditModal._open()
},
_optionChange(data) {
console.log(data)
if (data.epibolyItem === 1) {
this._submit(data.id)
} else {
this._cancelSub(data.id)
}
},
_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
},
_ok() {
console.log(this.getPage.records)
},
_modalResult(data1, data2) {
switch (this.currentComponent) {
case 'CopyModal':
if (data1 === 0) {
this._copySample(data2)
} else {
this._copyAll(data2)
}
break
default:
this._search()
}
},
_handleRow(data) {
this.currentRow = data.row
this.currentIndex = data.rowIndex
},
_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._submitOutPack()
break
case '取消分包':
this._cancelOutPack()
break
case '添加':
this._editModal(false)
break
case '复制历史样品':
this._copyHisSample()
break
case '导入样品':
this._importSample()
break
case '导入检测项目':
this._importItem()
break
case '导入检测项目包':
this._importItemPackage()
break
case '复制历史样品检测项目':
this._copyHisItem()
break
case '删除':
this._deleteSelected()
break
case '导出':
this._exportSample()
break
case '添加模拟样品':
this._editImitateModal(false)
break
case 'search':
this.searchOpen = !this.searchOpen
break
}
})
},
_backData(data) {
this.getPage.records[this.index].code = data.code
this._codeEdit({ id: this.itemId, obj: { code: data.code } })
},
_codeEdit: async function(data) {
const result = await soilEntrust.pageItemEdit(data)
if (result) {
this.$message.success('保存成功')
this._page()
} else {
this.$message.warning('保存失败')
}
},
_compareSymbolEdit: async function(data) {
const result = await soilEntrust.pageItemEdit(data)
if (result) {
this.$message.success('保存成功')
this._page()
} else {
this.$message.warning('保存失败')
}
},
_limitValueEdit: async function(data) {
const result = await soilEntrust.pageItemEdit(data)
if (result) {
this.$message.success('保存成功')
this._page()
} else {
this.$message.warning('保存失败')
}
},
_unitEdit: async function(data) {
const result = await soilEntrust.pageItemEdit(data)
if (result) {
this.$message.success('保存成功')
this._page()
} else {
this.$message.warning('保存失败')
}
},
_submitOutPack() {
if (this.selectIds.length === 0) {
this.$Message.warning('请至少选择一条')
} else {
this.$Modal.confirm({
title: '提示',
content: '确定分包这' + this.selectIds.length + '条',
onOk: () => {
this._submit()
}
})
}
},
_cancelOutPack() {
if (this.selectIds.length === 0) {
this.$Message.warning('请至少选择一条')
} else {
this.$Modal.confirm({
title: '提示',
content: '确定取消这' + this.selectIds.length + '条分包',
onOk: () => {
this._cancelSub()
}
})
}
},
_submit: async function(data) {
if (data !== undefined) {
this.selectIds = data
}
const result = await soilEntrust.submitOutPack(this.selectIds)
if (result) {
this._resultChange('分包成功')
}
},
_cancelSub: async function(data) {
if (data !== undefined) {
this.selectIds = data
}
const result = await soilEntrust.cancelOutPack(this.selectIds)
if (result) {
this._resultChange('取消分包成功')
}
},
_exportSample() {
if (this.selectIds.length === 0) {
this.$Message.warning('请至少选择一条样品')
} else {
this.$Modal.confirm({
title: '提示',
content: '确定导出这' + this.selectIds.length + '条样品',
onOk: () => {
http.open(
'/food/v1/sample/company/export',
{ ids: this.selectIds.join(',') },
'_blank'
)
}
})
}
},
_copyHisSample() {
this.$refs.refModal._open(this.sampleId)
},
_iconClick(res, data, componentName, index) {
this.currentComponent = componentName
this.$nextTick(function() {
switch (res) {
case '编辑':
this._editModal(true, data)
break
case '复制':
this._copy(data)
break
case '删除':
console.log(index)
this._deleteById(data.id)
break
case '导出样品委托协议':
this._exportAgreement(data.id)
break
case '附件':
this.$refs.refModal._open(data.id, 'sampleId')
break
}
})
},
_exportAgreement(id) {
this.$store
.dispatch(
'ReportExport/getById',
'food-contract-company-export-sample-agreement'
)
.then(() => {
if (this.$store.state.ReportExport.model) {
if (this.$store.state.ReportExport.model.indexOf('?') !== -1) {
window.open(
this.$store.state.ReportExport.model + '&sampleId=' + id,
'_blank'
)
} else {
window.open(
this.$store.state.ReportExport.model + '?sampleId=' + id,
'_blank'
)
}
}
})
},
_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 'iconClick':
// this._iconClick(data.name, data.rowData, data.componentName)
// break
case 'page':
this._page()
break
case 'changeSize':
this._page()
break
}
},
_open(id) {
this.formObj = this.$resetFields(this.formObj)
this.dateList = []
this.showModal = true
this.sampleId = id // 委托id
this.recordId = id
this.$refs.pageTable._hideLoading()
this._page()
},
_openRecord(id) {
this.formObj = this.$resetFields(this.formObj)
this.dateList = []
this.showModal = true
this.sampleId = id // 委托id
this.$refs.pageTable._hideLoading()
this.showOption = false
this._page()
},
_formSearch() {
this.$refs.pageTable._pageChange(1)
},
_page: async function() {
Object.assign(this.formObj, this.$refs.pageTable._searchParams())
this.formObj = this.$serializeForm(this.formObj)
this.formObj.recordId = this.recordId
const result = await soilTest.pageOriginalExp(
this.$serializeForm(this.formObj)
)
if (result) {
this.$refs.pageTable._hideLoading()
this.getPage = result
console.log(result)
}
},
_deleteByIds(ids, content) {
this.$Modal.confirm({
title: '提示',
content: content || '确定删除该记录?',
onOk: () => {
this._deleteOk(ids)
}
})
},
_deleteOk: async function(ids) {
const result = await soilEntrust.deleteById(ids)
if (result) {
this._resultChange('删除成功! ')
}
},
_deleteById(id) {
// 删除一条记录
this._deleteByIds([id])
},
_deleteSelected() {
// 批量删除
const ids = this.selectIds
if (ids.length === 0) {
this.$Message.warning('请选择一条或多条数据!')
} else {
this._deleteByIds(ids, '确定删除 ' + ids.length + ' 条记录?')
}
},
_detailModal(data) {},
_editModal(edit, data) {
if (edit) {
console.log(data)
this.$refs.sampleManageEdit._open(data)
// localStorage.setItem('type', data.type)
// // 编辑
// this.$store.dispatch('FoodSample/getByCompanyId', data.id).then(() => {
// const result = this.$store.state.FoodSample.companyModel
// if (data.type === 0) {
// // 普通企业样品
// this.$refs.refModal._open(result, this.sampleId)
// } else if (data.type === 3) {
// // 模拟样品
// this._editImitateModal(true, result)
// }
// })
} else {
// 添加
this.$refs.refModal._open('', this.sampleId)
}
},
// 添加编辑模拟样品
_editImitateModal(edit, data) {
if (edit) {
// 模拟样品的编辑
const tempData = JSON.parse(JSON.stringify(data)) // 深拷贝
this.$refs.imitateModal._open(tempData, this.sampleId)
} else {
// 模拟样品的添加
this.$refs.imitateModal._open('', this.sampleId)
}
},
_search() {
this._page()
},
_resultChange(msg) {
this._page()
this.$Message.success(msg)
this.$emit('on-result-change')
},
_copy(data) {
this.$refs.copyModal._open(data.id, data.type)
},
// 复制样品
_copySample(data) {
this.$store
.dispatch('FoodSample/getByCompanyId', data.sampleId)
.then(() => {
const result = this.$store.state.FoodSample.companyModel
if (data.type === 0) {
// 普通样品
this.currentComponent = 'FoodSampleCompanyEdit'
this.$nextTick(function() {
this.$refs.refModal._openCopySample(result)
})
} else if (data.type === 3) {
// 模拟样品
this.$refs.imitateModal._openCopySample(result)
}
})
},
_copyAll(data) {
this.$store
.dispatch('FoodSample/getByCompanyId', data.sampleId)
.then(() => {
const result = this.$store.state.FoodSample.companyModel
if (data.type === 0) {
// 普通样品
this.currentComponent = 'FoodSampleCompanyEdit'
this.$nextTick(function() {
this.$refs.refModal._openCopyAll(result)
})
} else if (data.type === 3) {
// 模拟样品
this.$refs.imitateModal._openCopyAll(result)
}
})
},
// 导入样品
_importSample() {
const data = {
importUrl: '/food/v1/sample/company/import_' + this.sampleId,
downloadUrl: '/food/v1/excel/template/FoodSampleCompany',
title: '导入'
}
this.$refs.refModal._open(data)
},
// 导入检测项目
_importItem() {
if (this.selectIds.length === 0) {
this.$Message.warning('请至少选中一条样品数据!')
} else {
this.$refs.refModal._open(
this.selectIds,
this.selectData[0],
this.selectData
)
}
},
// 导入检测项目包
_importItemPackage() {
if (this.selectIds.length === 0) {
this.$Message.warning('请至少选中一条样品数据!')
} else {
this.$refs.refModal._open(this.selectIds, 'sample-rel-package-item')
}
},
_copyHisItem() {
if (this.selectIds.length === 0) {
this.$Message.warning('请至少选中一条样品数据!')
} else {
this.$refs.refModal._open(this.selectIds)
}
},
_operationRecord(id) {
// 操作日志
this.$refs.recordModal._open(id)
}
}
}
</script>
<template>
<div>
<!--<Modal v-model="showModal" title="原始记录" :mask-closable="false" width="1300" class="modal-footer-none">-->
<!--<div style="text-align:center;align-content:center;width: 100%;height: 790px" v-html="htmlContent">-->
<!--</div>-->
<!--</Modal>-->
</div>
</template>
<script>
import Global from '../../../api/config'
import { soilTest } from '../../../api'
/**
* 编辑原始记录详情
*/
export default {
data() {
return {
// showModal: false,
again: false,
formId: '',
htmlContent: '',
formIdTemp: ''
}
},
created() {
// 监听原始记录消息
// eslint-disable-next-line nuxt/no-globals-in-created
window.addEventListener('message', this._saveOriginal)
},
// 销毁监听事件
beforeDestroy() {
this.again = false
window.removeEventListener('message', this._saveOriginal)
},
methods: {
_open(formId) {
this.formId = formId
this.formIdTemp = formId + this.$randomCode()
this.again = true
// this.showModal = true;
let recordUrl = ''
if (process.env.NODE_ENV === 'production') {
recordUrl = 'http://record.patzn.com'
} else {
recordUrl = Global.recordURL
}
// 编辑的时候传此bindUri 是为了 绑定spreadJs自定义的公式
const bindUri =
Global.baseURL + '/env/v1/env_item/original_record_data_bind?source='
const url =
recordUrl +
'/print/v1/eln/form_soil_' +
formId +
'?bindUri=' +
encodeURIComponent(bindUri)
// this.htmlContent = '<iframe style="padding: 0px;width:100%;height:100%" frameborder="0" src=' + encodeURI(url) + '></iframe>';
this.$layx(this.formIdTemp, '编辑原始记录', url)
},
_openWithType(formId, fromType) {
this.formId = formId
this.formIdTemp = formId + this.$randomCode()
this.again = true
// this.showModal = true;
let recordUrl = ''
if (process.env.NODE_ENV === 'production') {
recordUrl = 'http://record.patzn.com'
} else {
recordUrl = Global.recordURL
}
// 编辑的时候传此bindUri 是为了 绑定spreadJs自定义的公式
const bindUri =
Global.baseURL + '/env/v1/env_item/original_record_data_bind?source='
const url =
recordUrl +
'/print/v1/eln/form_soil_' +
formId +
'?bindUri=' +
encodeURIComponent(bindUri) +
'&type=' +
fromType
// this.htmlContent = '<iframe style="padding: 0px;width:100%;height:100%" frameborder="0" src=' + encodeURI(url) + '></iframe>';
this.$layx(this.formIdTemp, '编辑原始记录', url)
},
_saveOriginal(data) {
console.log('修改的数据', data)
if (this.again) {
if (data.data.msg === true) {
this._editSaveRecord(data)
} else {
this._cancel()
}
this.again = false
}
},
_cancel() {
// this.showModal = false;
// 关闭所有layx弹框
// eslint-disable-next-line no-undef
layx.destroyAll(this.formIdTemp)
},
_updateRecord: async function(param) {
const result = await soilTest.updateItem(param)
console.log(result)
if (result) {
this.$Message.success('保存成功')
this._cancel()
this.$emit('on-result-change')
}
},
// 保存后解析项目的检测值
_editSaveRecord(data) {
const param = {
formId: this.formId
}
console.log('data', data)
const copyMapTemp = {}
if (data.data.copySheet && data.data.copyedSheet) {
param.copyMap = {}
const copyedKey = String(data.data.copyedSheet)
copyMapTemp[copyedKey] = ''
copyMapTemp[copyedKey] = String(data.data.copySheet)
// 存在复制sheet的情况
param.copyMap = JSON.stringify(copyMapTemp)
} else if (typeof data.data.testValueArry !== 'undefined') {
const testValue = data.data.testValueArry
param.copyMap = {}
testValue.forEach(item => {
const copyedKey = String(item.copyedSheet)
copyMapTemp[copyedKey] = ''
copyMapTemp[copyedKey] = String(item.copySheet)
param.copyMap = JSON.stringify(copyMapTemp)
})
}
this._updateRecord(param)
// this.$store.dispatch('EnvItem/updateFormForItem', param).then(() => {
// if (this.$store.state.EnvItem.success) {
// this.$Message.success('保存成功')
// // this.showModal = false;
// this.$emit('on-result-change')
// this._cancel()
// }
// })
}
}
}
</script>
<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: [
{
type: 'error',
id: '',
name: '批量删除'
}
],
selectIds: [],
iconMsg: [
{
type: 'md-create',
id: '',
name: '编辑'
},
{
type: 'ios-book',
id: '',
name: '查看原始记录'
},
{
type: 'ios-list',
id: '',
name: '查看试验项目'
},
{ type: 'md-trash', id: '', name: '删除' }
],
pageColumns: [
{ title: '模板名称', key: 'title' },
{ title: '委托编号', key: 'entrustCode' },
{ 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 '批量删除':
this._batchDelete()
break
case 'search':
this.searchOpen = !this.searchOpen
break
}
})
},
_batchDelete() {
if (this.selectIds.length === 0) {
this.$Message.warning('请至少选择一条数据')
} else {
this.$Modal.confirm({
title: '提示',
content: '确定删除?',
onOk: () => {
this._delete()
}
})
}
},
_delete: async function() {
const result = await soilTest.deleteRecord(this.selectIds.join(','))
if (result) {
this.$Message.success('删除成功')
this._page()
}
},
_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._reportMakeLook(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() {
this.selectIds = []
Object.assign(this.formObj, this.$refs.pageTable._searchParams())
const result = await soilTest.recordPage(
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.deleteRecord(ids)
if (result) {
this.$Message.success('删除成功')
this._page()
}
}
}
}
</script>
...@@ -14,9 +14,9 @@ ...@@ -14,9 +14,9 @@
<el-tab-pane label="查看项目报告" name="viewReport"> <el-tab-pane label="查看项目报告" name="viewReport">
<ItemReportView ref="reportModal"></ItemReportView> <ItemReportView ref="reportModal"></ItemReportView>
</el-tab-pane> </el-tab-pane>
<!-- <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-tabs> </el-tabs>
<!-- <keep-alive>--> <!-- <keep-alive>-->
<!-- &lt;!&ndash; eslint-disable-next-line vue/require-component-is &ndash;&gt;--> <!-- &lt;!&ndash; eslint-disable-next-line vue/require-component-is &ndash;&gt;-->
...@@ -30,14 +30,14 @@ ...@@ -30,14 +30,14 @@
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 ItemReportView from './ItemReportView' import ItemReportView from './ItemReportView'
// import OriginalRecordView from './OriginalRecordView' import OriginalRecordView from './OriginalRecordView'
export default { export default {
components: { components: {
WaitReceive, WaitReceive,
WaitScan, WaitScan,
ItemReportView ItemReportView,
// OriginalRecordView OriginalRecordView
}, },
data() { data() {
return { return {
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
</Col> </Col>
<!--操作--> <!--操作-->
<Col span="24"> <Col span="24">
<btn-list :open="searchOpen" :msg="btn" :showSearchBtn="true" @on-result-change="_btnClick" <btn-list :open="searchOpen" :showSearchBtn="true" @on-result-change="_btnClick"
class="contHide"></btn-list> class="contHide"></btn-list>
</Col> </Col>
<!-- 表格 --> <!-- 表格 -->
......
<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: [
{
type: 'error',
id: '',
name: '批量删除'
}
],
selectIds: [],
iconMsg: [
{
type: 'md-create',
id: '',
name: '编辑'
},
{
type: 'ios-book',
id: '',
name: '查看原始记录'
},
{
type: 'ios-list',
id: '',
name: '查看试验项目'
},
{ type: 'md-trash', id: '', name: '删除' }
],
pageColumns: [
{ title: '模板名称', key: 'title' },
{ title: '委托编号', key: 'entrustCode' },
{ 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 '批量删除':
this._batchDelete()
break
case 'search':
this.searchOpen = !this.searchOpen
break
}
})
},
_batchDelete() {
if (this.selectIds.length === 0) {
this.$Message.warning('请至少选择一条数据')
} else {
this.$Modal.confirm({
title: '提示',
content: '确定删除?',
onOk: () => {
this._delete()
}
})
}
},
_delete: async function() {
const result = await soilTest.deleteRecord(this.selectIds.join(','))
if (result) {
this.$Message.success('删除成功')
this._page()
}
},
_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._reportMakeLook(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() {
this.selectIds = []
Object.assign(this.formObj, this.$refs.pageTable._searchParams())
const result = await soilTest.recordPage(
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.deleteRecord(ids)
if (result) {
this.$Message.success('删除成功')
this._page()
}
}
}
}
</script>
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
</Col> </Col>
<!--操作--> <!--操作-->
<Col span="24"> <Col span="24">
<btn-list :open="searchOpen" :showSearchBtn="true" @on-result-change="_btnClick" <btn-list :open="searchOpen" :msg="btn" :showSearchBtn="true" @on-result-change="_btnClick"
class="contHide"></btn-list> class="contHide"></btn-list>
</Col> </Col>
<!-- 表格 --> <!-- 表格 -->
...@@ -61,7 +61,13 @@ export default { ...@@ -61,7 +61,13 @@ export default {
return { return {
currentComponent: '', currentComponent: '',
getPage: {}, getPage: {},
btn: [], btn: [
{
type: 'error',
id: '',
name: '批量删除'
}
],
selectIds: [], selectIds: [],
iconMsg: [ iconMsg: [
{ {
...@@ -128,12 +134,35 @@ export default { ...@@ -128,12 +134,35 @@ export default {
this.currentComponent = componentName this.currentComponent = componentName
this.$nextTick(function() { this.$nextTick(function() {
switch (msg) { switch (msg) {
case '批量删除':
this._batchDelete()
break
case 'search': case 'search':
this.searchOpen = !this.searchOpen this.searchOpen = !this.searchOpen
break break
} }
}) })
}, },
_batchDelete() {
if (this.selectIds.length === 0) {
this.$Message.warning('请至少选择一条数据')
} else {
this.$Modal.confirm({
title: '提示',
content: '确定删除?',
onOk: () => {
this._delete()
}
})
}
},
_delete: async function() {
const result = await soilTest.batchDeleteReport(this.selectIds.join(','))
if (result) {
this.$Message.success('删除成功')
this._page()
}
},
_iconClick(res, data, currentComponent) { _iconClick(res, data, currentComponent) {
this.currentComponent = currentComponent this.currentComponent = currentComponent
this.$nextTick(() => { this.$nextTick(() => {
...@@ -236,6 +265,7 @@ export default { ...@@ -236,6 +265,7 @@ export default {
this.$refs.pageTable._pageChange(1) this.$refs.pageTable._pageChange(1)
}, },
_page: async function() { _page: async function() {
this.selectIds = []
Object.assign(this.formObj, this.$refs.pageTable._searchParams()) Object.assign(this.formObj, this.$refs.pageTable._searchParams())
const result = await soilTest.expReportPage( const result = await soilTest.expReportPage(
this.$serializeForm(this.formObj) this.$serializeForm(this.formObj)
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
</Col> </Col>
<!--操作--> <!--操作-->
<Col span="24"> <Col span="24">
<btn-list :open="searchOpen" :showSearchBtn="true" @on-result-change="_btnClick" <btn-list :open="searchOpen" :msg="btn" :showSearchBtn="true" @on-result-change="_btnClick"
class="contHide"></btn-list> class="contHide"></btn-list>
</Col> </Col>
<!-- 表格 --> <!-- 表格 -->
...@@ -64,7 +64,13 @@ export default { ...@@ -64,7 +64,13 @@ export default {
return { return {
currentComponent: '', currentComponent: '',
getPage: {}, getPage: {},
btn: [], btn: [
{
type: 'error',
id: '',
name: '批量删除'
}
],
selectIds: [], selectIds: [],
iconMsg: [ iconMsg: [
{ {
...@@ -135,12 +141,35 @@ export default { ...@@ -135,12 +141,35 @@ export default {
this.currentComponent = componentName this.currentComponent = componentName
this.$nextTick(function() { this.$nextTick(function() {
switch (msg) { switch (msg) {
case '批量删除':
this._batchDelete()
break
case 'search': case 'search':
this.searchOpen = !this.searchOpen this.searchOpen = !this.searchOpen
break break
} }
}) })
}, },
_batchDelete() {
if (this.selectIds.length === 0) {
this.$Message.warning('请至少选择一条数据')
} else {
this.$Modal.confirm({
title: '提示',
content: '确定删除?',
onOk: () => {
this._delete()
}
})
}
},
_delete: async function() {
const result = await soilTest.deleteRecord(this.selectIds.join(','))
if (result) {
this.$Message.success('删除成功')
this._page()
}
},
_iconClick(res, data, currentComponent) { _iconClick(res, data, currentComponent) {
this.currentComponent = currentComponent this.currentComponent = currentComponent
this.$nextTick(() => { this.$nextTick(() => {
...@@ -248,6 +277,7 @@ export default { ...@@ -248,6 +277,7 @@ export default {
this.$refs.pageTable._pageChange(1) this.$refs.pageTable._pageChange(1)
}, },
_page: async function() { _page: async function() {
this.selectIds = []
Object.assign(this.formObj, this.$refs.pageTable._searchParams()) Object.assign(this.formObj, this.$refs.pageTable._searchParams())
const result = await soilTest.recordPage( const result = await soilTest.recordPage(
this.$serializeForm(this.formObj) this.$serializeForm(this.formObj)
......
...@@ -50,6 +50,9 @@ import CreateItemReport from './CreateItemReport' ...@@ -50,6 +50,9 @@ import CreateItemReport from './CreateItemReport'
import CreateBatchItemReport from './CreateBatchItemReport' import CreateBatchItemReport from './CreateBatchItemReport'
export default { export default {
components: { CreateItemReport, CreateBatchItemReport }, components: { CreateItemReport, CreateBatchItemReport },
props: {
rightSelectData: null
},
data() { data() {
return { return {
currentComponent: '', currentComponent: '',
...@@ -153,7 +156,9 @@ export default { ...@@ -153,7 +156,9 @@ export default {
case 'iconClick': case 'iconClick':
const selcetName = [] const selcetName = []
selcetName.push(data.rowData.name) selcetName.push(data.rowData.name)
if (this.rightSelectData.length === 0) {
this.$emit('on-result-change', selcetName) this.$emit('on-result-change', selcetName)
}
this._iconClick(data.name, data.rowData, data.componentName) this._iconClick(data.name, data.rowData, data.componentName)
break break
case 'changeSize': case 'changeSize':
...@@ -187,8 +192,15 @@ export default { ...@@ -187,8 +192,15 @@ export default {
}, },
_itemReportMakeBatch() { _itemReportMakeBatch() {
if (this.selectDataName.length > 0) { if (this.selectDataName.length > 0) {
if (this.rightSelectData.length > 0) {
// this.itemName = data.name
this.batchSampleIds = this.rightSelectData
} else {
// console.log('12345767')
// this.itemName = data.name // this.itemName = data.name
this._searchBatchSampleId(this.id, this.selectDataName) this._searchBatchSampleId(this.id, this.selectDataName)
}
// this.itemName = data.name
// this.selectId = data.id // this.selectId = data.id
this.$refs.createBatchModal._open() this.$refs.createBatchModal._open()
} else { } else {
...@@ -196,8 +208,15 @@ export default { ...@@ -196,8 +208,15 @@ export default {
} }
}, },
_itemReportMake(data) { _itemReportMake(data) {
if (this.rightSelectData.length > 0) {
this.itemName = data.name
this.sampleIds = this.rightSelectData
console.log('点击生成报告', this.rightSelectData)
} else {
// console.log('12345767')
this.itemName = data.name this.itemName = data.name
this._searchSampleId(this.id, data.name) this._searchSampleId(this.id, data.name)
}
// this.selectId = data.id // this.selectId = data.id
this.$refs.createModal._open() this.$refs.createModal._open()
}, },
......
...@@ -593,6 +593,7 @@ export default { ...@@ -593,6 +593,7 @@ export default {
} }
this.selectIds = selectIds this.selectIds = selectIds
this.selectData = data this.selectData = data
this.$emit('child-data', data)
break break
case 'table-col': case 'table-col':
// 用户选中的表格列 // 用户选中的表格列
......
...@@ -2,10 +2,10 @@ ...@@ -2,10 +2,10 @@
<div> <div>
<TwoColumnPage> <TwoColumnPage>
<template slot="left"> <template slot="left">
<ItemLeftList ref="leftModal" @on-result-change="_leftResult"></ItemLeftList> <ItemLeftList ref="leftModal" :rightSelectData =rightSelectData @on-result-change="_leftResult"></ItemLeftList>
</template> </template>
<template slot="right"> <template slot="right">
<ItemRightList ref="rightModal" @on-result-change="_rightResult"></ItemRightList> <ItemRightList ref="rightModal" @child-data="_rightSelectData" @on-result-change="_rightResult"></ItemRightList>
</template> </template>
</TwoColumnPage> </TwoColumnPage>
</div> </div>
...@@ -24,7 +24,8 @@ export default { ...@@ -24,7 +24,8 @@ export default {
}, },
data() { data() {
return { return {
id: '' id: '',
rightSelectData: []
} }
}, },
methods: { methods: {
...@@ -35,6 +36,16 @@ export default { ...@@ -35,6 +36,16 @@ export default {
_rightResult() { _rightResult() {
this.$refs.leftModal._page() this.$refs.leftModal._page()
}, },
_rightSelectData(data) {
this.rightSelectData = []
if (data.length > 0) {
const rightSelectId = []
for (let i = 0; i < data.length; i++) {
rightSelectId.push(data[i].id)
}
this.rightSelectData = rightSelectId
}
},
_open(id) { _open(id) {
this.id = id this.id = id
this.$refs.leftModal._open(this.id) this.$refs.leftModal._open(this.id)
......
...@@ -7,6 +7,12 @@ ...@@ -7,6 +7,12 @@
<Form-item label="模板名称:" class="search-item"> <Form-item label="模板名称:" class="search-item">
<Input v-model="formObj.alias" @on-enter="_formSearch" placeholder="请输入模板名称" clearable/> <Input v-model="formObj.alias" @on-enter="_formSearch" placeholder="请输入模板名称" clearable/>
</Form-item> </Form-item>
<Form-item label="模板类别:" class="search-item">
<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 class="search-btn" style="margin-left: -10px"> <Form-item class="search-btn" style="margin-left: -10px">
<Button @click="_formSearch" type="primary">搜索</Button> <Button @click="_formSearch" type="primary">搜索</Button>
</Form-item> </Form-item>
...@@ -58,8 +64,20 @@ export default { ...@@ -58,8 +64,20 @@ export default {
modalTitle: '报告模板', modalTitle: '报告模板',
sampleId: '', sampleId: '',
formObj: { formObj: {
name: undefined name: undefined,
classType: undefined
},
typeList: [
{
value: '力学'
},
{
value: '物性'
}, },
{
value: '高级'
}
],
selectData: [] selectData: []
} }
}, },
......
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