You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
udi-spms-vue/src/views/pharmaceuticals/distribution/selectMsfxOrderDialog.vue

369 lines
14 KiB
Vue

<template>
<div>
<el-card class="el-card">
<el-form :model="orderQuery" size="mini" label-width="100px" v-show="showSearch">
<!-- <el-row>-->
<!-- <el-col :span="6">-->
<!-- <el-form-item class="query-form-item" label="单据编号:">-->
<!-- <el-input v-model="orderQuery.bill_code" placeholder="单据编号"-->
<!-- style="width: 90%"-->
<!-- clearable="true"-->
<!-- ></el-input>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- <el-col :span="6">-->
<!-- <el-form-item label="单据类型:" class="query-form-item">-->
<!-- <el-select v-model="orderQuery.bill_type" style="width: 90%" placeholder="选择单据" clearable>-->
<!-- <el-option label="所有" :value="'A'"></el-option>-->
<!-- <el-option label="入库" :value="'AI'"></el-option>-->
<!-- <el-option label="出库" :value="'AO'"></el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- &lt;!&ndash;<el-col :span="6">&ndash;&gt;-->
<!-- &lt;!&ndash; <el-form-item class="query-form-item" label="药品信息:">&ndash;&gt;-->
<!-- &lt;!&ndash; <el-input v-model="orderQuery.cpmctymc" placeholder="药品信息" clearable="true"&ndash;&gt;-->
<!-- &lt;!&ndash; style="width: 90%"&ndash;&gt;-->
<!-- &lt;!&ndash; ></el-input>&ndash;&gt;-->
<!-- &lt;!&ndash; </el-form-item>&ndash;&gt;-->
<!-- &lt;!&ndash;</el-col>&ndash;&gt;-->
<!-- <el-col :span="6">-->
<!-- <el-form-item class="query-form-item" label="发货单位:">-->
<!-- <el-input v-model="orderQuery.bzgg" placeholder="发货单位" clearable="true"-->
<!-- style="width: 90%"-->
<!-- ></el-input>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- <el-col :span="6">-->
<!-- <el-form-item class="query-form-item" label="收货单位:">-->
<!-- <el-input v-model="orderQuery.ylqxzcrbarmc" placeholder="收货单位"-->
<!-- style="width: 90%"-->
<!-- clearable="true"-->
<!-- ></el-input>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- </el-row>-->
<el-row>
<el-col :span="8">
<el-form-item label="单据时间:">
<el-date-picker
:picker-options="pickerOptions"
v-model="actDateRange"
type="daterange"
format="yyyy 年 MM 月 dd 日"
style="width: 90%"
value-format="yyyy-MM-dd"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="6" >
<el-form-item label="订单编号:">
<el-input v-model="orderQuery.billCode"
style="transform: translateX (-500px)"
clearable="true"
placeholder="订单编号"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="top-right-btn">
<el-button-group>
<el-button icon="el-icon-view" type="primary" @click="hideSearch">显示/隐藏搜索栏</el-button>
<el-button type="primary" icon="el-icon-refresh" @click="onReset">重置</el-button>
<el-button type="primary" icon="el-icon-search" @click="search">查询</el-button>
<el-button type="primary" icon="el-icon-check" @click="confirmSelect" :loading="loading"></el-button>
</el-button-group>
</div>
<el-table
:data="dataList"
style="width: 100%"
highlight-current-row="false"
v-loading="loading"
border
@current-change="handleChange"
ref="multipleTable"
>
<el-table-column label width="45">
<template slot-scope="scope">
<el-radio :label="scope.row.billCode" v-model="radioCheck" :disabled="scope.row.checkBillNO" ><span></span></el-radio>
</template>
</el-table-column>
<el-table-column label="序号" type="index"></el-table-column>
<el-table-column label="订单编号" prop="billCode" width="140" show-overflow-tooltip ></el-table-column>
<el-table-column width="180" label="单据时间" prop="billTimeFormat" show-overflow-tooltip ></el-table-column>
<!-- <el-table-column label="单据类型" prop="billType" show-overflow-tooltip ></el-table-column>-->
<!-- <el-table-column label="药品信息" prop="physicInfo" show-overflow-tooltip width="240"></el-table-column>-->
<!-- <el-table-column label="药品名称" prop="physicName" show-overflow-tooltip width="180"></el-table-column>-->
<el-table-column label="发货企业" prop="fromUserName" show-overflow-tooltip width="180"></el-table-column>
<el-table-column label="收货企业" prop="toUserName" show-overflow-tooltip width="180"></el-table-column>
<!-- <el-table-column width="100" label="生产批号" prop="produceBatchNo" show-overflow-tooltip ></el-table-column>-->
<!-- <el-table-column label="生产日期" prop="produceDate" show-overflow-tooltip width="180"></el-table-column>-->
<!-- <el-table-column label="有效期至" prop="exprieDate" show-overflow-tooltip width="180"></el-table-column>-->
<!-- <el-table-column width="120" label="制剂数量" prop="prepnCount" show-overflow-tooltip ></el-table-column>-->
<!-- <el-table-column width="120" label="最小包装数量" prop="codeCount" show-overflow-tooltip ></el-table-column>-->
<!-- <el-table-column width="120" label="厂商" prop="produceEntName" show-overflow-tooltip ></el-table-column>-->
</el-table>
<!-- <pagination-->
<!-- v-show="pageTotal>0"-->
<!-- :total="pageTotal"-->
<!-- :page.sync="orderQuery.page"-->
<!-- :limit.sync="orderQuery.limit"-->
<!-- />-->
<!--@pagination="getList"-->
</el-card>
<!-- <el-card>-->
<el-tabs type="border-card" style="margin: 15px">
<el-tab-pane label="单据明细">
<el-table
:data="aliYljgBillDetailDrugList"
style="width: 100%"
highlight-current-row="false"
v-loading="loading"
border
ref="multipleTable"
>
<el-table-column label="药品通用名" prop="prodName" width="240" show-overflow-tooltip ></el-table-column>
<!-- <el-table-column width="140" label="药品商品名" prop="prodName" show-overflow-tooltip ></el-table-column>-->
<!-- <el-table-column label="生产企业名称" prop="productEntName" show-overflow-tooltip ></el-table-column>-->
<!-- <el-table-column label="药品信息" prop="physicInfo" show-overflow-tooltip ></el-table-column>-->
<!-- <el-table-column label="药品名称" prop="physicName" show-overflow-tooltip ></el-table-column>-->
<!-- <el-table-column label="制剂数量" prop="prepnCount" show-overflow-tooltip ></el-table-column>-->
<el-table-column width="100" label="生产批号" prop="produceBatchNo" show-overflow-tooltip ></el-table-column>
<!-- <el-table-column label="包装单位描述" prop="pkgUnitDesc" show-overflow-tooltip ></el-table-column>-->
<el-table-column width="180" label="生产日期" prop="produceDate" show-overflow-tooltip ></el-table-column>
<el-table-column width="180" label="有效期至" prop="validEndDate" show-overflow-tooltip ></el-table-column>
<el-table-column width="180" label="制剂规格描述" prop="prepnSpec" show-overflow-tooltip ></el-table-column>
<el-table-column width="120" label="制剂数量" prop="leastPrepnAmount" show-overflow-tooltip ></el-table-column>
<el-table-column width="120" label="最小包装数量" prop="leastPkgAmount" show-overflow-tooltip ></el-table-column>
<el-table-column width="120" label="厂商" prop="productEntName" show-overflow-tooltip ></el-table-column>
<el-table-column label="操作" width="160" fixed="right">
<template slot-scope="scope">
<el-button
type="text"
size="small"
@click.native.stop="handleCodeDetailClick(scope.row)"
>追溯码明细
</el-button>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
</el-tabs>
<!-- </el-card>-->
<el-dialog
title="追溯码明细"
:visible.sync="codeDetailVisible"
append-to-body width="65%"
:close-on-click-modal="false"
:close-on-press-escape="false"
v-if="codeDetailVisible"
>
<retraceCodeDetailDialog
:dataList="this.codes">
</retraceCodeDetailDialog>
</el-dialog>
</div>
</template>
<script>
import retraceCodeDetailDialog from './retraceCodeDetailDialog'
import { aliYljgSearchbillPage,aliYljgBillDetail } from '@/api/thrsys/alihealthBus.js'
import { addAliBizProduct } from '@/api/inout/order.js'
export default {
components: { retraceCodeDetailDialog },
props: {
closeDialog: {
type: Function,
required: true,
},
orderFormData: {
type: Object,
required: true,
}
},
data() {
return {
loading: false,
orderQuery: {
beginDate:null,
ensDate:null,
billCode:null,
page: 1,
limit: 100
},
pageTotal: 10,
dataList: [],
aliYljgBillDetailDrugList: [],
codes: [],
pickerOptions: {
shortcuts: [
{
text: '最近一个月',
onClick(picker) {
const end = new Date()
const start = new Date()
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
picker.$emit('pick', [start, end])
}
},
{
text: '最近三个月',
onClick(picker) {
const end = new Date()
const start = new Date()
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
picker.$emit('pick', [start, end])
}
}
]
},
actDateRange: [],
showSearch: true,
codeDetailVisible: false,
radioCheck: null,
currentRow: null
}
},
methods: {
onReset() {
this.orderQuery = {
beginDate: null,
ensDate: null,
page: 1,
limit: 100
},
this.getList()
},
confirmSelect() {
if (this.currentRow == null) {
this.$message.error('请选择要选入的单据!')
return
}
if (this.orderFormData.action == null) {
this.$message.error('请选择单据类型!')
return
}
this.orderFormData.orderEntity = JSON.parse(JSON.stringify(this.orderFormData));
this.orderFormData.aliData = this.currentRow
// this.loading = true
// 显示加载状态
const loading = this.$loading({
lock: true,
text: '选入中...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
addAliBizProduct(this.orderFormData).then((res) => {
if (res.code === 20000) {
this.codeDetailVisible = false
this.$message.success('选入成功')
// this.loading = false
this.closeDialog(res.data)
// 关闭加载状态
loading.close();
} else {
this.$message.error(res.message)
// this.loading = false
loading.close();
}
}).catch((error) => {
this.$message.error('选入失败')
// this.loading = false
loading.close();
})
},
hideSearch() {
this.showSearch = !this.showSearch
},
search() {
this.getList()
},
handleCodeDetailClick(row) {
this.codes = row.aliYljgBillDetailDrugCodeList
this.codeDetailVisible = true
},
handleChange(currentRow) {
this.getBillDetail(currentRow)
if (currentRow.checkBillNO){
this.$message.error('已被选入')
return
}
this.radioCheck = currentRow.billCode
this.currentRow = currentRow
},
createDateTime() {
const end = new Date(); // 结束日期为当前日期
const start = new Date(); // 开始日期为当前日期
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); // 减去7天
const formatDate = (date) => {
const year = date.getFullYear();
const month = (date.getMonth() + 1).toString().padStart(2, '0');
const day = date.getDate().toString().padStart(2, '0');
return `${year}-${month}-${day}`;
};
this.actDateRange = [formatDate(start), formatDate(end)];
},
getList() {
if (this.actDateRange !== null) {
this.orderQuery.beginDate = this.actDateRange[0]
this.orderQuery.ensDate = this.actDateRange[1]
}else {
this.$message.error('请先选择查询日期范围!')
}
aliYljgSearchbillPage(this.orderQuery).then(res => {
if (res.code == 20000) {
this.dataList = res.data.list || []
this.radioCheck = null
}
})
},
getBillDetail(currentRow) {
aliYljgBillDetail(currentRow).then(res => {
if (res.code == 20000) {
this.aliYljgBillDetailDrugList = res.data.aliYljgBillDetailDrugList || []
}
})
}
},
created() {
this.createDateTime()
this.getList()
}
}
</script>
<style scoped>
.query-form-item {
display: block !important;
margin-right: 10px;
margin-bottom: 5px;
}
div /deep/ .el-table .warning-row {
background: #bebebe;
}
div /deep/ .el-table .success-row {
background: #ffffff;
}
</style>