Compare commits

...

3 Commits

Author SHA1 Message Date
FCD fdf19604ab 样式与文字调整 2 months ago
FCD 85833af3d0 新增药液管理 2 months ago
FCD 6c32326b1a 新增电表类型 2 months ago

@ -0,0 +1,51 @@
import request from '@/utils/request'
export function syncMedicationOrder(data) {
return request({
url: '/plan/medication/syncOrder',
method: 'post',
data: data
})
}
export function getMedicationOrderList(data) {
return request({
url: '/plan/medication/list',
method: 'get',
params: data
})
}
export function getMedicationOrderDetailList(data) {
return request({
url: '/plan/medication/detail/list',
method: 'get',
params: data
})
}
export function updateMedicationOrderDetailList(data) {
return request({
url: '/plan/medication/detail/list',
method: 'put',
data: data
})
}
export function updateMedication(data) {
return request({
url: '/plan/medication',
method: 'put',
data: data
})
}
export function reportSapMedication(data) {
return request({
url: '/plan/medication/reportSapMedication',
method: 'post',
data: data
})
}

@ -283,6 +283,13 @@
<el-form-item label="通讯地址" prop="addressCode">
<el-input v-model="form.addressCode" placeholder="请填写通讯地址" />
</el-form-item>
<el-form-item label="电表类型" prop="electricityMeterType">
<el-select v-model="form.electricityMeterType" clearable placeholder="请选择电表类型" style="width: 100%">
<el-option
v-for="item in dict.type.electricity_type" :value="item.value+''" :key="item.value+''" :label="item.label" >
</el-option>
</el-select>
</el-form-item>
<el-form-item label="计量设备状态" prop="monitorStatus">
<el-radio-group v-model="form.monitorStatus">
<el-radio
@ -505,7 +512,7 @@ import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
name: "ShuiMeasurement",
dicts: ["isAmmeter", "monitorStatus", "energy_type", "public_share_type",'monitor_hierarchy'],
dicts: ["isAmmeter", "monitorStatus", "energy_type", "public_share_type",'monitor_hierarchy','electricity_type'],
components: {
Treeselect,
},
@ -559,7 +566,11 @@ export default {
//
form: {},
//
rules: {},
rules: {
electricityMeterType:[
{ required: true, message: "电表类型不能为空", trigger: "blur" }
],
},
//
ids1: [],
//

@ -0,0 +1,412 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="98px">
<el-form-item label="生产工单编码" prop="orderCode">
<el-input v-model="queryParams.orderCode" placeholder="请输入生产订单编码" clearable @keyup.enter.native="getList" />
</el-form-item>
<el-form-item label="物料编码" prop="productCode">
<el-input v-model="queryParams.productCode" placeholder="请输入产品编码" clearable @keyup.enter.native="getList" />
</el-form-item>
<el-form-item label="物料名称" prop="productName">
<el-input v-model="queryParams.productName" placeholder="请输入产品名称" clearable @keyup.enter.native="getList" />
</el-form-item>
<el-form-item label="生产时间" prop="feedbackTimeArray">
<el-date-picker v-model="queryParams.feedbackTimeArray" format="yyyy-MM-dd" type="daterange" clearable range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="getList"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="success" plain icon="el-icon-edit" size="mini" @click="openSyncSapSelect()">
同步SAP药液工单
</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-edit" size="mini" @click="handleEditReport()">
报工信息维护
</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-edit" size="mini" @click="handleReportSap()">
报工SAP
</el-button>
</el-col>
</el-row>
<el-table v-loading="loading" :data="list" @selection-change="handleSelectionChange" >
<el-table-column type="selection" align="center" />
<el-table-column label="工单编码" align="center" prop="orderCode" width="130">
<template slot-scope="scope">
<el-button type="text" @click="handleOpenRawMaterial(scope.row)">{{ codeFormatter(scope.row.orderCode) }}</el-button>
</template>
</el-table-column>
<el-table-column label="物料编码" align="center" prop="materialCode" width="220" >
<template slot-scope="scope">
{{ codeFormatter(scope.row.materialCode) }}
</template>
</el-table-column>
<el-table-column label="物料名称" align="center" prop="materialName" width="220" :show-overflow-tooltip="true" />
<el-table-column label="排产数量" align="center" prop="amount" width="100" />
<el-table-column label="报工数量" align="center" prop="reportAmount" width="100" />
<el-table-column label="单位" align="center" prop="unit" />
<el-table-column label="生产时间" align="center" prop="productionDate" width="100" />
<el-table-column label="SAP报工状态" align="center" prop="status" width="150">
<template slot-scope="scope">
<dict-tag :options="dict.type.report_sap_status" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="SAP报工时间" align="center" prop="sapTime" width="150" >
parseTime
<template slot-scope="scope">
{{parseTime(scope.row.sapTime,'{y}-{m}-{d} {h}:{i}:{s}') }}
</template>
</el-table-column>
<el-table-column label="SAP报工信息" align="center" prop="sapRemark" width="150" />
<el-table-column label="操作">
<template slot-scope="scope">
<el-button type="text" @click="handleOpenRawMaterial(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
<pagination :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
<el-dialog title="配方原料" :visible.sync="openRawMaterial" width="1200px" v-loading="loadingRawMaterial" append-to-body>
<el-table :data="detailList" >
<el-table-column type="index" width="90" align="center" label="序号" />
<el-table-column label="工单编码" align="center" prop="orderCode" width="130">
<template slot-scope="scope">
{{ codeFormatter(scope.row.orderCode) }}
</template>
</el-table-column>
<el-table-column label="物料编码" align="center" prop="materialCode" width="220" >
<template slot-scope="scope">
{{ codeFormatter(scope.row.materialCode) }}
</template>
</el-table-column>
<el-table-column label="物料名称" align="center" prop="materialName"/>
<el-table-column label="需求量" align="center" prop="amount" width="100" />
<el-table-column label="实际需求量" align="center" prop="inputAmount" width="150" >
<template slot-scope="scope" >
<el-input type="number" v-if="showChangeRawMaterial" v-model="scope.row.inputAmount" placeholder="请输入订单数量"/>
<span v-else>{{scope.row.inputAmount}} </span>
</template>
</el-table-column>
<el-table-column label="单位" align="center" prop="unit" />
<el-table-column label="行号" align="center" prop="itemCode" />
<el-table-column label="生产时间" align="center" prop="productionDate" width="100" />
</el-table>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="closeOpenRawMaterial"> </el-button>
</div>
</el-dialog>
<el-dialog title="同步SAP订单" :visible.sync="openSyncSap" v-loading="loadingRawMaterial" append-to-body>
<el-form label-width="80px" >
<el-form-item label-width="100px" label="生产日期" prop="syncDate">
<el-date-picker
v-model="syncDates"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
>
</el-date-picker>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleSyncSap"> </el-button>
</div>
</el-dialog>
<el-dialog :visible.sync="openEdit" title="信息维护" width="600px">
<el-form :rules="editRules" ref="editFormRef" :model="editParams">
<el-row>
<el-col :span="24">
<el-form-item label="工单编码" prop="orderCode">
<el-input v-model="editParams.orderCode" readonly />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="物料编码" prop="materialCode">
<el-input v-model="editParams.materialCode" readonly />
</el-form-item>
</el-col>
<el-col :span="16">
<el-form-item label="物料名称" prop="materialName">
<el-input v-model="editParams.materialName" readonly />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="排产数量" prop="amount">
<el-input v-model="editParams.amount" readonly />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="报工数量" prop="reportAmount">
<el-input v-model="editParams.reportAmount" placeholder="请输入报工数量" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="单位" prop="unit">
<el-input v-model="editParams.unit" readonly />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="工时" prop="workTime">
<el-input v-model="editParams.workTime" placeholder="请输入工时" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="用人数量" prop="useNum">
<el-input v-model="editParams.useNum" placeholder="请输入用人数量" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="confirmEdit"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
getMedicationOrderDetailList,
getMedicationOrderList, reportSapMedication,
syncMedicationOrder, updateMedication, updateMedicationOrderDetailList
} from "@/api/mes/medication";
import {formatTime} from "@/utils";
import {parseTime} from "@/utils/ruoyi";
import {updateReportWorkW3} from "@/api/mes/reportWork";
export default {
name: "Medication",
dicts: [ "report_sap_status"],
data(){
return {
total:0,
queryParams:{
pageNum:1,
pageSize:10,
},
syncQueryParams:{
},
loading:false,
list:[],
detailList:[],
openRawMaterial:false,
loadingRawMaterial:true,
showChangeRawMaterial:true,
openSyncSap:false,
syncDates:[
parseTime(new Date(), '{y}-{m}-{d}'),
parseTime(new Date(), '{y}-{m}-{d}'),
],
openEdit:false,
selectRow:[],
editParams:{},
editRules: {
reportAmount: [
{ required: true, message: "报工数量不能为空", trigger: "blur" },
],
workTime: [
{ required: true, message: "工时不能为空", trigger: "blur" },
],
useNum: [
{ required: true, message: "用人数量不能为空", trigger: "blur" },
],
},
}
},
created() {
this.getList()
},
methods:{
parseTime,
getList(){
getMedicationOrderList(this.queryParams).then((res)=>{
this.list = res.rows
this.total = res.total
})
},
resetQuery(){
},
//
codeFormatter(value) {
if (value) {
return Number(value);
}
},
openSyncSapSelect(){
this.openSyncSap = true
},
handleSyncSap(){
if ( !this.syncDates || this.syncDates.length < 2){
this.$modal.msgError("请选择正确日期");
return;
}
const loadingInstance = this.$loading({
lock: true, //
text: '处理中,请稍候...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
syncMedicationOrder({
startTime:parseTime(new Date(this.syncDates[0]),'{y}{m}{d}'),
endTime:parseTime(new Date(this.syncDates[1]),'{y}{m}{d}'),
factory:localStorage.getItem("USER_POOL_NAME_CURRENT").replace("ds_","")
}).then(()=>{
this.getList()
this.$message.success('操作完成!');
this.openSyncSap = false
}).finally(()=>{
loadingInstance.close();
})
},
handleOpenRawMaterial(item) {
this.openRawMaterial = true
this.detailList = []
getMedicationOrderDetailList({
orderCode:item.orderCode
}).then((res)=>{
console.log(item)
if (item.status === "1"){
this.showChangeRawMaterial = false
}else if (item.status === "0") {
this.showChangeRawMaterial = true
}
this.detailList = res.data
})
},
closeOpenRawMaterial(){
if (this.showChangeRawMaterial){
//
const list = []
for (const detail of this.detailList){
if ( detail.inputAmount !== detail.amount ){
list.push(detail)
}
}
if (list.length > 0){
//
updateMedicationOrderDetailList(list).then(()=>{
this.$modal.msgSuccess("操作成功!");
})
}
}
this.openRawMaterial = false
},
handleEditReport(){
if (this.selectRow.length === 0){
this.$modal.msgError("请选择数据后再进行维护!");
return
}
if (this.selectRow.length > 1){
this.$modal.msgError("仅能选择一条进行维护!");
return
}
if(this.selectRow[0].status === "1"){
this.$modal.msgError("改已报工,无法修改!");
return
}
this.openEdit = true
this.editParams = this.selectRow[0]
},
handleReportSap(){
if (this.selectRow.length <= 0){
this.$modal.msgError("请选择需要报工的工单!");
return;
}
this.$modal
.confirm('是否开始报工')
.then(() => {
const loadingInstance = this.$loading({
lock: true, //
text: '处理中,请稍候...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
reportSapMedication(this.selectRow)
.then(res=>{
this.getList()
this.$modal.msgSuccess("操作成功!");
})
.finally(()=>{
loadingInstance.close();
})
})
.catch(() => {});
},
handleSelectionChange(selection){
this.selectRow = selection;
},
confirmEdit(){
this.$refs.editFormRef.validate((valid) => {
if (valid) {
updateMedication(this.editParams).then(res=>{
this.$modal.msgSuccess("操作成功!");
this.getList()
this.openEdit = false
})
} else {
this.$modal.msgError("请将信息填写完整!");
return false;
}
});
}
}
}
</script>
<style scoped lang="scss">
</style>

@ -176,10 +176,10 @@
<!-- 检验项目明细 -->
<el-table v-loading="loading" :data="checkProjectList" border :span-method="objectSpanMethod">
<el-table-column label="序号" align="center" type="index" width="50"/>
<el-table-column label="检验项目" align="center" prop="projectRuleName" />
<el-table-column label="标准要求" align="center" prop="checkStandard" width="400"/>
<el-table-column label="检验项目" align="center" prop="projectRuleName" width="90" />
<el-table-column label="标准要求" align="center" prop="checkStandard" width="350"/>
<el-table-column label="抽检数" align="center" prop="samplePlan" width="60"/>
<el-table-column label="实测结果" align="center" prop="actualValue" width="130"/>
<el-table-column label="实测结果" align="center" prop="actualValue" />
<el-table-column label="判定" align="center" prop="status" width="70">
<template slot-scope="scope">
<dict-tag :options="dict.type.check_result" :value="scope.row.status"/>
@ -192,14 +192,14 @@
</template>
</el-table-column>
<el-table-column label="不良数量" align="center" prop="defectQuality" width="80"/>-->
<el-table-column label="附件" align="center" prop="files" width="120">
<template slot-scope="scope">
<el-image v-for="(item,index) in scope.row.files" :key="index"
:src="item.fileAddress"
style="width: 100px; height: 100px"
:fit="fit" />
</template>
</el-table-column>
<!-- <el-table-column label="附件" align="center" prop="files" width="120">-->
<!-- <template slot-scope="scope">-->
<!-- <el-image v-for="(item,index) in scope.row.files" :key="index"-->
<!-- :src="item.fileAddress"-->
<!-- style="width: 100px; height: 100px"-->
<!-- :fit="fit" />-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
</el-col>
</el-row>

@ -666,7 +666,7 @@
<el-table v-loading="loading" :data="checkProjectList" border :span-method="objectSpanMethod" ><!---->
<el-table-column label="序号" align="center" type="index" width="50"/>
<el-table-column label="检验项目" align="left" prop="projectRuleName" width="150"/>
<el-table-column label="内容" align="left" prop="ruleName" width="300"/>
<el-table-column label="内容" align="left" prop="ruleName" />
<!--
<el-table-column label="检测项类型" align="center" prop="propertyCode" width="100">
<template slot-scope="scope">
@ -676,7 +676,7 @@
/>
</template>
</el-table-column>-->
<el-table-column label="实际检测结果" align="center" prop="actualValue" width="250"/>
<el-table-column label="实际检测结果" align="center" prop="actualValue" />
<el-table-column label="判定" align="center" prop="status" width="50"
:formatter="checkStatusFormate"
/>
@ -830,11 +830,11 @@
<el-table v-loading="loading" :data="checkProjectList" border :span-method="objectSpanMethod" ><!---->
<el-table-column label="序号" align="center" type="index" width="50"/>
<el-table-column label="检验项目" align="left" prop="projectRuleName" />
<el-table-column label="内容" align="left" prop="ruleName" width="300"/>
<el-table-column label="判定" align="center" prop="status" width="50"
<el-table-column label="内容" align="left" prop="ruleName"/>
<el-table-column label="判定" align="center" prop="status"
:formatter="checkStatusFormate"
/>
<el-table-column label="附件" align="center" prop="files" width="200">
<el-table-column label="附件" align="center" prop="files">
<template slot-scope="scope">
<el-image v-for="(item,index) in scope.row.files" :key="index"
:src="item.fileAddress"

@ -62,6 +62,25 @@
></el-option>
</el-select>
</el-form-item>
<el-form-item label="定量检测项" prop="projectNoArray">
<el-select
v-model="queryParams.projectNoArray"
multiple
collapse-tags
filterable
:filter-method="handleProjectFilter"
placeholder="请选择或搜索定量检测项"
clearable
>
<!-- 遍历过滤后的选项列表 -->
<el-option
v-for="item in filteredProjectOptions"
:key="item.recordId"
:label="item.ruleName"
:value="item.recordId"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="定量检测项" prop="projectNoArray">
<el-select
v-model="queryParams.projectNoArray"
@ -221,7 +240,7 @@
:visible.sync="open"
width="1300px"
append-to-body
>
>
<el-button type="primary" round v-if="title == 'CPK分析'" @click="handleExportCPK">CPK</el-button>
<div
@ -303,6 +322,7 @@ export default {
workCenterList: [],
checkTypeList: [],
projectNoOptions: [],
filteredProjectOptions:[],
//
form: {},
//
@ -366,6 +386,7 @@ export default {
getProjectListFunc(val) {
getProjectOptionList(val).then((response) => {
this.projectNoOptions = response;
this.filteredProjectOptions = response
});
},
indexMethod(index) {
@ -1041,6 +1062,22 @@ export default {
};
myChart1.setOption(option3);
},
handleProjectFilter(keyword){
this.projectSearchKeyword = keyword.trim();
}
},
computed: {
//
filteredProjectOptions() {
//
if (!this.projectSearchKeyword) {
return this.projectNoOptions;
}
// ruleName
return this.projectNoOptions.filter(item =>
item.ruleName.toLowerCase().includes(this.projectSearchKeyword.toLowerCase())
);
}
},
};
</script>

@ -65,21 +65,39 @@
></el-option>
</el-select>
</el-form-item>
<el-form-item label="定量检测项" prop="projectId">
<el-form-item label="定量检测项" prop="projectNoArray">
<el-select
v-model="queryParams.projectId"
collapse-tags
placeholder="必选定量检测项"
filterable
:filter-method="handleProjectFilter"
placeholder="请选择或搜索定量检测项"
clearable
>
<!-- 遍历过滤后的选项列表 -->
<el-option
v-for="item in projectNoOptions"
v-for="item in filteredProjectOptions"
:key="item.recordId"
:label="item.ruleName"
:value="item.recordId"
></el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label="定量检测项" prop="projectId">-->
<!-- <el-select-->
<!-- v-model="queryParams.projectId"-->
<!-- collapse-tags-->
<!-- placeholder="必选定量检测项"-->
<!-- >-->
<!-- <el-option-->
<!-- v-for="item in projectNoOptions"-->
<!-- :key="item.recordId"-->
<!-- :label="item.ruleName"-->
<!-- :value="item.recordId"-->
<!-- ></el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label="生产时间" prop="incomeTimeArray">
<el-date-picker
v-model="queryParams.incomeTimeArray"
@ -116,7 +134,7 @@
>导出</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
@ -129,7 +147,7 @@
<el-table-column label="线体名称" align="center" prop="equipmentName" width="90" />
<el-table-column label="产品编码" align="center" prop="materialCode" width="110" :formatter="productCodeFormate"/>
<el-table-column label="产品名称" align="center" prop="materialName" width="180" :show-overflow-tooltip="true"/>
<el-table-column label="订单号" align="center" prop="workorderCodeSap" width="100" :formatter="orderCodeFormate"/>
<!--<el-table-column label="工单号" align="center" prop="workorderCode" width="130"/>-->
<el-table-column label="批次号" align="center" prop="batchNo" width="150" />
@ -160,7 +178,7 @@
:visible.sync="open"
width="1300px"
append-to-body
>
>
<el-button type="primary" round v-if="title == 'CPK分析'" @click="handleExportCPK">CPK</el-button>
<div
@ -243,6 +261,7 @@ export default {
workCenterList: [],
checkTypeList: [],
projectNoOptions: [],
projectSearchKeyword:"",
//
form: {},
//
@ -435,9 +454,21 @@ export default {
`DLMxTable_${new Date().getTime()}.xlsx`
);
},
//
cancel() {
this.open = false;
handleProjectFilter(keyword){
this.projectSearchKeyword = keyword.trim();
}
},
computed: {
//
filteredProjectOptions() {
//
if (!this.projectSearchKeyword) {
return this.projectNoOptions;
}
// ruleName
return this.projectNoOptions.filter(item =>
item.ruleName.toLowerCase().includes(this.projectSearchKeyword.toLowerCase())
);
}
},
};

@ -2,6 +2,13 @@
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="80px">
<el-form-item label="生产批号" prop="incomeBatchNo">
<el-input
v-model="queryParams.incomeBatchNo"
placeholder="请输入生产批号"
clearable
/>
</el-form-item>
<el-form-item label="样品名称" prop="materialName">
<el-input
v-model="queryParams.materialName"

@ -41,7 +41,7 @@
v-hasPermi="['wms:outorder:export']">导出</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="el-icon-edit" size="mini" @click="clickShowPostingList('ZC')"></el-button>
<el-button type="success" plain icon="el-icon-edit" size="mini" @click="clickShowPostingList('ZC')"></el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="el-icon-edit" size="mini" @click="clickShowPostingList('X')"></el-button>

Loading…
Cancel
Save