Commit c1a0b9fc by lichengming

修改了报告模块按钮显示

修改了报告档案按样品查看原始记录
修改了分项报告审核复核驳回功能
parent 33986546
......@@ -36,5 +36,23 @@ export default {
generateAppendix: data =>
http.post('soil/v1/exp_report/generate_appendix', data).then(res => res),
itemReportMerge: data =>
http.post('soil/v1/exp_report/item_report_merge', data).then(res => res)
http.post('soil/v1/exp_report/item_report_merge', data).then(res => res),
backExpReportCheckBack: data =>
http
.post(
'soil/v1/exp_report/back_exp_report_check?ids=' +
data.ids +
'&remark=' +
data.remark
)
.then(res => res),
backExpReportIssueBack: data =>
http
.post(
'soil/v1/exp_report/back_exp_report_issue?ids=' +
data.ids +
'&remark=' +
data.remark
)
.then(res => res)
}
......@@ -9,21 +9,21 @@
<Form id="search-contract-record" :label-width="70" inline onsubmit="return false">
<label class="label-sign"></label>
<Form-item label="项目名称:">
<Input v-model="formObj.expName" name="expName" placeholder="请输入项目名称" style="width: 200px"
clearable @on-enter="_search"/>
<Input v-model="formObj.expName" @on-enter="_search" name="expName" placeholder="请输入项目名称"
style="width: 200px" clearable/>
</Form-item>
<Form-item class="search-btn">
<Button type="primary" @click="_search">搜索</Button>
<Button @click="_search" 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 :msg="btn" :open="searchOpen" @on-result-change="_btnClick" show-search-btn="true" />
</Col>
<!-- 表格 -->
<Col span="24">
<PTVXETable ref="pageTable" :table-height="tableHeight"
:get-page="getPage" :icon-msg="iconMsg" show-check-box @on-result-change="_tableResultChange">
:get-page="getPage" :icon-msg="iconMsg" @on-result-change="_tableResultChange" show-check-box>
<vxe-table-column
v-for="item in pageColumns"
:key="item.key"
......@@ -44,7 +44,7 @@
</Row>
</div>
</Modal>
<Reason ref="reasonModal" @on-result-change="_reasonResult"></Reason>
</div>
</template>
<script>
......@@ -53,7 +53,9 @@
*/
import { meterEntrust, soilReport, soilStatistics } from '../../../api'
import Global from '../../../api/config'
import Reason from '../../../components/base/Reason'
export default {
components: { Reason },
data() {
return {
showModal: false,
......@@ -68,7 +70,10 @@ export default {
{ title: '创建人', key: 'uname' },
{ title: '创建时间', key: 'ctime', dateTime: true }
],
btn: [{ id: 'item-check-submit', type: 'primary', name: '提交至复核' }],
btn: [
{ id: 'item-check-submit', type: 'primary', name: '提交至复核' },
{ id: '', type: 'primary', name: '驳回' }
],
iconMsg: [
{
type: 'ios-book',
......@@ -105,12 +110,41 @@ export default {
case '提交至复核':
this._submitExpReportCheck()
break
case '驳回':
this._goBack()
break
case 'search':
this.searchOpen = !this.searchOpen
break
}
},
_goBack() {
// 退回
if (this.selectIds.length === 0) {
this.$Message.warning('请至少选择一条委托!')
} else {
this.$refs.reasonModal._open('退回原因')
}
},
_reasonResult(data) {
this.$refs.pageTable._showLoading()
if (undefined !== data && data !== '') {
this._reportCheckBack(data)
}
},
_reportCheckBack: async function(data) {
const result = await soilReport.backExpReportCheckBack({
ids: this.selectIds.join(','),
remark: data
})
if (result) {
this.$Message.success('退回成功!')
await this._page()
this.$emit('on-result-change')
this.$refs.pageTable._hideLoading()
}
},
_iconClick(res, data) {
this.$nextTick(() => {
switch (res) {
......
......@@ -9,21 +9,21 @@
<Form id="search-contract-record" :label-width="70" inline onsubmit="return false">
<label class="label-sign"></label>
<Form-item label="项目名称:">
<Input v-model="formObj.expName" name="expName" placeholder="请输入项目名称" style="width: 200px"
clearable @on-enter="_search"/>
<Input v-model="formObj.expName" @on-enter="_search" name="expName" placeholder="请输入项目名称"
style="width: 200px" clearable/>
</Form-item>
<Form-item class="search-btn">
<Button type="primary" @click="_search">搜索</Button>
<Button @click="_search" 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 :msg="btn" :open="searchOpen" @on-result-change="_btnClick" show-search-btn="true" />
</Col>
<!-- 表格 -->
<Col span="24">
<PTVXETable ref="pageTable" :table-height="tableHeight"
:get-page="getPage" :icon-msg="iconMsg" show-check-box @on-result-change="_tableResultChange">
:get-page="getPage" :icon-msg="iconMsg" @on-result-change="_tableResultChange" show-check-box>
<vxe-table-column
v-for="item in pageColumns"
:key="item.key"
......@@ -44,7 +44,7 @@
</Row>
</div>
</Modal>
<Reason ref="reasonModal" @on-result-change="_reasonResult"></Reason>
</div>
</template>
<script>
......@@ -53,7 +53,9 @@
*/
import { meterEntrust, soilReport, soilStatistics } from '../../../api'
import Global from '../../../api/config'
import Reason from '../../../components/base/Reason'
export default {
components: { Reason },
data() {
return {
showModal: false,
......@@ -68,7 +70,10 @@ export default {
{ title: '创建人', key: 'uname' },
{ title: '创建时间', key: 'ctime', dateTime: true }
],
btn: [{ id: 'issue-pass', type: 'primary', name: '通过' }],
btn: [
{ id: 'issue-pass', type: 'primary', name: '通过' },
{ id: '', type: 'primary', name: '驳回' }
],
iconMsg: [
{
type: 'ios-book',
......@@ -105,11 +110,41 @@ export default {
case '通过':
this._submitExpReportIssue()
break
case '驳回':
this._goBack()
break
case 'search':
this.searchOpen = !this.searchOpen
break
}
},
_goBack() {
// 退回
if (this.selectIds.length === 0) {
this.$Message.warning('请至少选择一条委托!')
} else {
this.$refs.reasonModal._open('退回原因')
}
},
_reasonResult(data) {
this.$refs.pageTable._showLoading()
if (undefined !== data && data !== '') {
this._reportCheckBack(data)
}
},
_reportCheckBack: async function(data) {
const result = await soilReport.backExpReportIssueBack({
ids: this.selectIds.join(','),
remark: data
})
if (result) {
this.$Message.success('退回成功!')
await this._page()
this.$emit('on-result-change')
this.$refs.pageTable._hideLoading()
}
},
_iconClick(res, data) {
this.$nextTick(() => {
......
......@@ -111,11 +111,11 @@ export default {
selectIds: [],
selectData: [],
iconMsg: [
{ id: 'report-audit-view', type: 'md-image', name: '预览报告' },
// { id: 'report-audit-view', type: 'md-image', name: '预览报告' },
{
id: 'report-audit-view-report',
type: 'ios-book',
name: '查看汇总报告'
name: '管理汇总报告'
},
{ id: 'report-audit-upload', type: 'ios-cloud', name: '附件' },
{ id: 'report-audit-record', type: 'ios-clock', name: '操作日志' }
......
......@@ -135,11 +135,11 @@ export default {
selectIds: [],
selectData: [],
iconMsg: [
{ id: 'report-issue-view', type: 'md-image', name: '预览报告' },
// { id: 'report-issue-view', type: 'md-image', name: '预览报告' },
{
id: 'report-issue-view-report',
type: 'ios-book',
name: '查看汇总报告'
name: '管理汇总报告'
},
{ id: 'report-issue-upload', type: 'ios-cloud', name: '附件' },
{ id: 'report-issue-record', type: 'ios-clock', name: '操作日志' }
......
......@@ -139,16 +139,16 @@ export default {
id: 'make-report-upload-report',
name: '上传报告'
},
{
type: 'md-image',
id: 'make-report-view-report',
name: '预览报告'
},
{
type: 'ios-book',
id: 'make-report-edit-report',
name: '编辑报告'
},
// {
// type: 'md-image',
// id: 'make-report-view-report',
// name: '预览报告'
// },
// {
// type: 'ios-book',
// id: 'make-report-edit-report',
// name: '编辑报告'
// },
// {
// type: 'ios-document-outline',
// id: '',
......
<template>
<div>
<Row>
<!--查询-->
<Col span="24">
<Form id="task-assign-item-left" :label-width="70" inline onsubmit="return false">
<label class="label-sign"></label>
<Form-item class="search-item" label="检测项目:">
<Input v-model="formObj.name" @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 @on-result-change="_btnClick" :msg="btn" class="contHide" style="margin-bottom: 6px;"></btn-list>
</Col>
<!-- 表格 -->
<Col span="24">
<PTVXETable ref="pageTable" :page-columns="pageColumns" :table-name="tableName"
:table-height="tableHeight"
:get-page="getPage" @on-result-change="_tableResultChange" select-data>
<vxe-table-column
v-for="item in userColumns.length > 0 ?userColumns:pageColumns"
:key="item.key"
:field="item.key"
:title="item.title"
:min-width="item.width"
:fixed="item.fixed?item.fixed:undefined"
sortable>
<template slot-scope="scope">
<a v-if="item.detail" @click.stop="_detailModal(scope.row)">{{scope.row[item.key]}}</a>
<span v-else-if="item.date">{{scope.row[item.key]?$dateformat(scope.row[item.key],'yyyy-mm-dd'):''}}</span>
<span v-else>{{scope.row[item.key]}}</span>
</template>
</vxe-table-column>
</PTVXETable>
</Col>
</Row>
</div>
</template>
<script>
import { soilTest } from '../../../api'
export default {
components: {},
props: {
rightSelectData: null
},
data() {
return {
currentComponent: '',
formObj: {
name: undefined
},
formObjSample: {
name: undefined,
entrustId: undefined
},
formObjBatchSample: {
obj: {
entrustId: '',
nameList: []
}
},
sampleIds: [],
batchSampleIds: [],
itemName: '',
tableName: 'food-task-assign-item-left',
// 用户自己选中的列
userColumns: [],
selectDataName: [],
optionList: [
{ key: 'name', name: '检测项目', placeholder: '请输入检测项目' },
{ key: 'testBasis', name: '检测依据', placeholder: '请输入检测依据' }
],
getPage: {},
iconMsg: [],
btn: [],
id: '',
selectId: '',
pageColumns: [{ title: '检测项目', key: 'name', width: 120 }]
}
},
computed: {
tableHeight: function() {
return this.$tableHeight('tabSearch')
}
},
methods: {
// 重置column
_resetColumn(colList) {
this.userColumns = colList
this.$refs.pageTable._loadColumn(colList)
},
_modalResult() {
if (this.currentComponent === 'AutoAssignModal') {
this._formSearch()
}
},
_selInputResult1(msg, data) {
switch (msg) {
case 'search':
this._formSearch()
break
}
},
_open(id) {
this.id = id
this.selectId = ''
this._page()
},
_searchParams() {
const obj = {}
const obj1 = this.$refs.selInput1._getFormObj()
Object.assign(obj, obj1)
return obj
},
_page: async function() {
Object.assign(this.formObj, this.$refs.pageTable._searchParams())
this.formObj.entrustId = this.id
const result = await soilTest.pageTestByExp(
this.$serializeForm(this.formObj)
)
if (result) {
this.$refs.pageTable._hideLoading()
this.getPage = result
}
},
_tableResultChange(msg, data) {
switch (msg) {
case 'page':
this._page()
break
case 'selectData':
this.selectDataName = []
for (let i = 0; i < data.length; i++) {
this.selectDataName.push(data[i].name)
}
this.$emit('on-result-change', this.selectDataName)
break
case 'changeSize':
this._page()
break
}
},
_formSearch() {
this.$refs.pageTable._pageChange(1)
},
_btnClick(msg) {
switch (msg) {
case '生成项目报告':
// this.$emit('on-result-change', data)
this._itemReportMakeBatch()
break
case '自动分配':
this._autoAssign()
break
}
},
_iconClick(res, data, currentComponent) {
this.$nextTick(() => {
switch (res) {
case '生成项目报告':
// this.$emit('on-result-change', data)
this._itemReportMake(data)
break
}
})
}
}
}
</script>
<template>
<div>
<Row>
<!--查询-->
<Col span="24">
<Form id="task-assign-item-right" :label-width="70" inline onsubmit="return false">
<label class="label-sign"></label>
<Form-item class="search-item" label="试样编号:">
<Input v-model="formObj.sampleCode" @on-enter="_formSearch" name="sampleCode" 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 :msg="btn" @on-result-change="_btnClick" class="contHide"></btn-list>
</Col>
<!-- 表格 -->
<Col span="24">
<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>
<vxe-table-column
v-for="item in userColumns.length > 0 ?userColumns:pageColumns"
:key="item.key"
:field="item.key"
:title="item.title"
:min-width="item.width"
:fixed="item.fixed?item.fixed:undefined"
sortable>
<template slot-scope="scope">
<div v-if="item.key === 'name'" :style="{color:colorComputed(scope.row.planEndDate)}">
{{scope.row[item.key]}}
</div>
<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>
<span
v-else-if="item.date">{{scope.row[item.key]?$dateformat(scope.row[item.key],'yyyy-mm-dd'):''}}</span>
<span v-else-if="item.datetime">{{scope.row[item.key]?$dateformat(scope.row[item.key],'yyyy-mm-dd HH:MM'):''}}</span>
<span v-else-if="item.key==='progress'">{{scope.row[item.key].display}}</span>
<span v-else>{{scope.row[item.key]}}</span>
</template>
</vxe-table-column>
</PTVXETable>
</Col>
</Row>
</div>
</template>
<script>
import { soilReport, soilTest } from '../../../api'
export default {
components: {},
data() {
return {
// 定义表格名称----英文
tableName: 'food-task-assign-item-right',
formObj: {
entrustId: '',
name: '',
testMethod: '',
testBasis: '',
obj: {
entrustId: '',
nameList: []
}
},
entrustId: '',
envPro: false,
// 用户自己选中的列
userColumns: [],
currentComponent: '',
btn: [],
iconMsg: [
{
type: 'ios-book',
id: '',
name: '查看原始记录'
}
],
getPage: {},
pageColumns: [
{ title: '试验项目', key: 'name', width: 120, fixed: 'left' },
{ title: '缩写', key: 'shortName', width: 90 },
{ title: '钻孔编号', key: 'boreholeName', width: 120 },
{ title: '现场编号', key: 'siteNo', width: 110 },
{ title: '试样编号', key: 'sampleCode', width: 140 },
{ title: '原始记录填写', key: 'recorded', width: 120 },
{ title: '试样深度', key: 'sampleDepth', width: 110 },
{ title: '土质描述', key: 'describeDetail', width: 110 },
{ title: '含水率', key: 'haveWater', width: 110 },
{ title: '密度', key: 'density', width: 110 },
{ title: '土粒比重', key: 'bulkDensity', width: 110 },
{ 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: 'mainType', width: 140 },
{ title: '小类', key: 'smallType', width: 140 }
],
leftSelectData: [],
selectIds: [], // 检测项目id
selectData: [], // 检测项目data
selectSampleIds: [], // 样品ids
result: [],
sampleNames: '', // 没有计划完成时间的样品名
defaultPlanDate: null, // 是否有字典
warningValue: ''
}
},
computed: {
tableHeight: function() {
return this.$tableHeight('tabSearch')
},
colorComputed() {
return function(val) {
return val - new Date().getTime() > this.warningValue * 86400000
? '#606266'
: val - new Date().getTime() <= 0
? '#eb6877'
: '#f90'
}
}
},
mounted() {
// this._dicSearch()
if (process.env.NODE_ENV === 'production') {
this.envPro = true
}
},
methods: {
_iconClick(res, data, currentComponent) {
this.$nextTick(() => {
switch (res) {
case '查看原始记录':
this._reportView(data)
break
}
})
},
_reportView(data) {
if (data.recorded === '是') {
if (data.objectKey) {
this._reportMakeLook(data)
} else {
this.$refs.editModal._openWithType(data.recordId, 'ENVTESTMAKEEDIT')
}
} else {
this.$Message.warning('未填写原始记录')
}
},
_reportMakeLook: async function(data) {
const result = await soilReport.getExcelOriginalRecord(data.id)
if (result) {
this._viewReport(result)
}
},
_viewReport(data) {
this.$refs.pageTable._hideLoading()
if (data) {
this.$openWindowModeless({
objectKey: data.objectKey,
idType: 10,
id: data.id,
isReport: 4
})
}
},
_btnClick(msg) {
switch (msg) {
case '填写原始记录':
this._addRecord()
break
}
},
_getEntrustId(id) {
this.entrustId = id
},
_open(id, data) {
this.leftSelectData = data
this.entrustId = id
if (data.length === 0) {
this.$set(this.getPage, 'records', [])
this.$set(this.getPage, 'total', 0)
this.$set(this.getPage, 'current', 1)
this.selectSampleIds = []
this.selectIds = []
this.selectData = []
this.result = []
} else {
this._formSearch()
}
},
_refresh() {
this.$emit('on-result-change')
},
_formSearch() {
this.$refs.pageTable._pageChange(1)
},
_searchParams() {
const obj = {}
const obj1 = this.$refs.selInput1._getFormObj()
const obj2 = this.$refs.selInput2._getFormObj()
const obj3 = { foodItemList: this.leftSelectData }
Object.assign(obj, obj1, obj2, obj3)
return obj
},
_page: async function() {
this.formObj.obj.nameList = []
Object.assign(this.formObj, this.$refs.pageTable._searchParams())
this.formObj.obj.entrustId = this.entrustId
this.formObj.obj.nameList = this.leftSelectData
// this.formObj.entrustId = this.entrustId
// this.formObj.nameList = this.leftSelectData.join(',')
const result = await soilTest.pageExperimentTestBath(
this.$serializeForm(this.formObj)
)
if (result) {
this.$refs.pageTable._hideLoading()
this.$refs.pageTable._checkAll()
this.getPage = result
}
},
_tableResultChange(msg, data) {
const selectIds = []
switch (msg) {
case 'page':
this._page()
break
case 'iconClick':
this._iconClick(data.name, data.rowData, data.currentComponent)
break
case 'selectData':
for (let i = 0; i < data.length; i++) {
selectIds.push(data[i].id)
}
this.selectIds = selectIds
this.selectData = data
this.$emit('child-data', data)
break
case 'table-col':
// 用户选中的表格列
this.userColumns = data
break
case 'changeSize':
this._page()
// this.$refs.pageTable._checkAll()
break
}
},
_clearAll() {
this.getPage.records = []
this.selectIds = []
}
}
}
</script>
<template>
<div>
<TwoColumnPage>
<template slot="left">
<ItemLeftList ref="leftModal" :rightSelectData =rightSelectData @on-result-change="_leftResult"></ItemLeftList>
</template>
<template slot="right">
<ItemRightList ref="rightModal" :entrustIds = id @child-data="_rightSelectData" @on-result-change="_rightResult"></ItemRightList>
</template>
</TwoColumnPage>
</div>
</template>
<script>
import TwoColumnPage from '../../../components/base/TwoColumnPage'
import ItemLeftList from './ItemLeftList'
import ItemRightList from './ItemRightList'
export default {
components: {
TwoColumnPage,
ItemLeftList,
ItemRightList
},
data() {
return {
id: '',
rightSelectData: []
}
},
methods: {
_leftResult(data) {
console.log('ItemTabs', data)
this.$refs.rightModal._open(this.id, data)
},
_rightResult() {
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) {
this.id = id
this.$refs.leftModal._open(this.id)
this.$refs.rightModal._getEntrustId(this.id)
// this.$refs.rightModal._getColumn()
},
_clearTable() {
this.$refs.rightModal._clearAll()
}
}
}
</script>
<template>
<div>
<Modal v-model="showSampleModal" v-drag @on-visible-change="_visibleChange" width="1330"
class="zIndex-900 modal-footer-none">
<p slot="header"> 按样品查看原始记录</p>
<div>
<WaitReceive ref="waitReceiveModal"></WaitReceive>
</div>
</Modal>
</div>
</template>
<script>
import WaitReceive from './ItemTabs'
export default {
components: {
WaitReceive
},
data() {
return {
contractId: '', // 合同id
entrustId: '',
showSampleModal: false,
modalTitle: '',
selectIds: [],
name: '',
currentComponent: ''
}
},
mounted() {
// this.currentComponent = 'waitScan'
},
methods: {
_open(entrustId) {
this.showSampleModal = true
this.entrustId = entrustId // 委托id
// this.currentComponent = 'waitScan'
this.selectIds = []
this._waitPage()
},
// 待接收
_waitPage() {
this.$refs.waitReceiveModal._open(this.entrustId)
},
_search() {
this.$emit('on-result-change')
},
// 关闭弹框的时候刷新上个界面
_visibleChange(data) {
if (data === false) {
this._search()
}
}
}
}
</script>
......@@ -83,9 +83,18 @@ import { soilReport } from '../../../../api'
import Operation from '../../../../components/operation/Operation'
import SampleByMakeModal from '../../report-manage/SampleByMakeModal'
import OriginalRecordView from '../OriginalRecordView'
import SampleManage from '../SampleManage'
export default {
// eslint-disable-next-line vue/no-unused-components
components: { Operation, SampleByMakeModal, OriginalRecordView },
components: {
Operation,
// eslint-disable-next-line vue/no-unused-components
SampleByMakeModal,
// eslint-disable-next-line vue/no-unused-components
OriginalRecordView,
// eslint-disable-next-line vue/no-unused-components
SampleManage
},
props: {
reportStatus: null
},
......@@ -124,6 +133,11 @@ export default {
id: 'report-manage-view-record',
name: '查看原始记录'
},
{
type: 'ios-list-box',
id: '',
name: '按样品查看原始记录'
},
{ type: 'ios-cloud', id: 'report-manage-upload', name: '附件' },
{
type: 'ios-clock',
......@@ -182,6 +196,9 @@ export default {
case '查看原始记录':
this._viewRecord(data.id)
break
case '按样品查看原始记录':
this._viewRecordBySample(data.id)
break
case '附件':
this._upload(data.id)
break
......@@ -191,6 +208,12 @@ export default {
}
})
},
_viewRecordBySample(id) {
this.currentComponent = 'SampleManage'
this.$nextTick(() => {
this.$refs.refModal._open(id)
})
},
_upload(id) {
this.currentComponent = 'FileManage'
this.$nextTick(() => {
......
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