Merge remote-tracking branch 'origin/master'

master
mengjiao 1 year ago
commit fdbe42858a

@ -79,4 +79,12 @@ export function queryEquFaultTypeTree(query) {
});
}
// 维修工单检验
export function subInspect(data) {
return request({
url: '/device/repairOrder/subInspect',
method: 'post',
data: data
});
}

@ -1,11 +1,11 @@
import request from '@/utils/request'
import { parseStrEmpty } from "@/utils/ruoyi";
import { parseStrEmpty } from '@/utils/ruoyi'
// 左侧数据
export function gettreeData(query) {
return request({
url: '/energy/buildInfo/treeData',
method: 'get',
method: 'get'
// params: query,
})
}
@ -13,24 +13,35 @@ export function gettreeData(query) {
// 右侧菜单
export function gettablewareInfo(query) {
return request({
url: `/energy/report/board/tablewareInfo`,
url: `/energy/report/board/tablewareInfo`,
method: 'get',
params: query,
params: query
})
}
// 详情数据
export function gettablewareDetailsInfo(query) {
return request({
url: '/energy/record/dnbInstant/tablewareDetailsInfo',
method: 'post',
params: query,
data: query
})
}
// 详情数据水
export function getwaterInstantInfo(query) {
return request({
url: '/energy/record/waterInstant/tablewareDetailsInfo',
method: 'post',
params: query,
data: query
})
}
}
// 详情数据水
export function tablewareDetailsInfo(query) {
return request({
url: '/energy/report/board/tablewareDetailsInfo',
method: 'get',
params: query
})
}

@ -1,12 +1,19 @@
import request from '@/utils/request'
// 打印
export function printPrepareByCode(workorderCode) {
export function printPrepareByCode(workorderCode,recoil) {
return request({
url: '/mes/prepareDetail/printPrepareByCode/' + workorderCode,
url: '/mes/prepareDetail/printPrepareByCode/' + workorderCode+'/'+recoil,
method: 'get'
});
}
export function printPrepareXByCode(productDate) {
return request({
url: '/mes/prepareDetail/printPrepareXByCode/' + productDate,
method: 'get'
});
}
// 查询mes备料单明细列表
export function listPrepareDetail(query) {

@ -68,6 +68,14 @@ export function getDailyReport(query) {
});
}
export function getDailyReportNew(query) {
return request({
url: '/mes/reportWork/getDailyReportNew',
method: 'get',
params: query
});
}
export function getWorkcenterList() {
return request({
url: '/mes/reportWork/getWorkcenterList',
@ -344,3 +352,23 @@ export function getWarehouseList(query) {
params: query
});
}
// 删除报工报表
export function deleteReportNow(reportCode) {
return request({
url: '/mes/reportWork/deleteReportNow/' + reportCode,
method: 'delete'
});
}
//预报工
export function preReportRow(reportCode) {
const data = {
reportCode
}
return request({
url: '/mes/reportWork/preReportRow',
method: 'post',
data: data
});
}

@ -135,4 +135,42 @@ export function getUnReadComment(data){
method:'post',
data:data
})
}
}
export function getWorkOrderBatch(workOrderId) {
return request({
url: '/plan/pro/workorder/getWorkOrderBatch/' + workOrderId,
method: 'get'
});
}
export function getWorkOrderBatchInfo(query) {
return request({
url: '/plan/pro/workorder/getWorkOrderBatchInfo',
method: 'get',
params: query
});
}
export function insertWorkOrderBatch(data){
return request({
url:'/plan/pro/workorder/insertWorkOrderBatch',
method:'post',
data:data
})
}
export function updateWorkOrderBatch(data){
return request({
url:'/plan/pro/workorder/updateWorkOrderBatch',
method:'put',
data:data
})
}
export function removeWorkOrderBatch(batchCode,workorderCode) {
return request({
url: '/plan/pro/workorder/removeWorkOrderBatch/' +batchCode+ '/' +workorderCode,
method: 'delete',
});
}

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询抽样规则-接收质量限列表
export function listAql(query) {
return request({
url: '/quality/aql/list',
method: 'get',
params: query
});
}
// 查询抽样规则-接收质量限详细
export function getAql(id) {
return request({
url: '/quality/aql/' + id,
method: 'get'
});
}
// 新增抽样规则-接收质量限
export function addAql(data) {
return request({
url: '/quality/aql',
method: 'post',
data: data
});
}
// 修改抽样规则-接收质量限
export function updateAql(data) {
return request({
url: '/quality/aql',
method: 'put',
data: data
});
}
// 删除抽样规则-接收质量限
export function delAql(id) {
return request({
url: '/quality/aql/' + id,
method: 'delete'
});
}

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询抽样规则-样品量字码列表
export function listCode(query) {
return request({
url: '/quality/code/list',
method: 'get',
params: query
});
}
// 查询抽样规则-样品量字码详细
export function getCode(id) {
return request({
url: '/quality/code/' + id,
method: 'get'
});
}
// 新增抽样规则-样品量字码
export function addCode(data) {
return request({
url: '/quality/code',
method: 'post',
data: data
});
}
// 修改抽样规则-样品量字码
export function updateCode(data) {
return request({
url: '/quality/code',
method: 'put',
data: data
});
}
// 删除抽样规则-样品量字码
export function delCode(id) {
return request({
url: '/quality/code/' + id,
method: 'delete'
});
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

@ -0,0 +1,150 @@
<template>
<div>
<div class="item" v-for="i in data">
<div :style="i.children? `transform: translateY(calc(-${(height||[])[i.id]/2}px + ${4*vw}px + 30px));` : ''"
:class="i.children? 'item1 itemInb':'itemInb'" ref="item" @click="itemClick(i)"
>
<div class="icon" ref="icon" :id="i.id" :childrenId="(i.children || []).map(e=>e.id).join(',')">
<div class="line" v-for="item in lineData[(i.id||'')]">
<div v-if="!item.isTop" :style="`width:${item.width}px;height:${item.height}px;position: absolute;`">
<svg :style="`width:${item.width}px;height:${item.height}px;position: absolute`">
<path
:d="`M0 0 Q${item.width/2} 0 ${item.width/2} ${item.height/2} ${item.width/2} ${item.height} ${item.width} ${item.height}`"
style="stroke: #fff; stroke-width: 2px; fill: none"
/>
</svg>
</div>
<div v-else
:style="`width:${item.width}px;height:${item.height}px;transform: translateY(-100%);position: absolute;`"
>
<svg :style="`width:${item.width}px;height:${item.height}px;position: absolute`">
<path
:d="`M0 ${item.height} Q${item.width/2} ${item.height} ${item.width/2} ${item.height/2} ${item.width/2} 0 ${item.width} 0`"
style="stroke: #fff; stroke-width: 2px; fill: none"
/>
</svg>
</div>
</div>
</div>
<div class="span">
<p>{{ i.name }}</p>
<!-- <p>{{ i.id }}</p>-->
<!-- <p>{{ i.id }}</p>-->
</div>
</div>
<div v-if="(i.children || []).length>0"
:style="`display: inline-block;left:calc${(index+1)*7.7}vw + ${(index+1)*24}px`"
>
<Tree :data="i.children" :index="index+1" ref="Tree" :vw="vw" :id="i.id" @getHeight="getHeight" @itemClick="itemClick"/>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'Tree',
props: ['data', 'index', 'vw', 'id'],
data() {
return {
height: null,
lineData: {}
}
},
watch: {
vw: {
deep: true,
handler() {
this.getHeight()
}
}
},
mounted() {
this.$nextTick(() => {
this.getHeight()
this.$emit('getHeight')
})
},
methods: {
async getHeight() {
if (this.$refs.Tree) {
let arr = {}
this.$refs.Tree.forEach(e => {
arr[e.id] = e.$el.offsetHeight
})
this.height = arr
}
await this.$nextTick()
if (this.$refs?.Tree?.[0]?.$refs) {
let icons = this.$refs.icon
let icon2s = this.$refs.Tree.map(com => com.$refs.icon).flat(Infinity)
icons.forEach(e => {
let id = e.getAttribute('id')
let po = e.getBoundingClientRect()
let data = {
top: po.top + (po.height / 2),
left: po.left + po.width,
children: e.getAttribute('childrenId').split(',')
}
this.$set(this.lineData, id, icon2s.filter(el => {
return data.children.includes(el.getAttribute('id'))
}).map(v => {
let po2 = v.getBoundingClientRect()
let data2 = {
top: po2.top + (po2.height / 2),
left: po2.left
}
return {
width: data2.left - data.left,
height: Math.max(1, ((data.top - data2.top) > 0 ? (data.top - data2.top) : (data2.top - data.top))),
isTop: (data.top - data2.top) > 0
}
}))
})
}
},
itemClick(i){
this.$emit('itemClick',i)
}
}
}
</script>
<style lang="scss" scoped>
.item {
width: auto;
height: auto;
position: relative;
}
.itemInb {
display: inline-block;
margin-right: 5vw;
}
.icon {
width: 8vw;
height: 8vw;
background-image: url("~@/assets/images/electricityOne1.png");
background-repeat: no-repeat;
position: relative;
background-size: 100% 100%;
.line {
position: absolute;
top: 50%;
left: 100%;
}
}
.span {
color: #fff;
text-align: center;
}
.item1 {
}
</style>

@ -313,12 +313,14 @@ export default {
setInterval(() => this.getAlarmData(), 1000 * 60);
this.poolNameList = JSON.parse(localStorage.getItem("POOL_NAME_LIST"));
this.poolName = localStorage.getItem("USER_POOL_NAME_CURRENT");
//
this.getUnReadList();
//
this.timer = setInterval(() => {
setTimeout(this.getUnReadList(), 30000);
}, 30000);
},
components: {
Breadcrumb,

@ -150,6 +150,21 @@ export const constantRoutes = [
component: () => import("@/views/kanban/Dryingprocess/index"),
hidden: true,
},
{
path: "/report/board/LeadershipViewCheart",
component: () => import("@/views/energy/LeadershipView/LeadershipViewChearts"),
hidden: true,
},
{
path: "/report/board/GroupHomePage",
component: () => import("@/views/energy/LeadershipView/GroupHomePage"),
hidden: true,
},
{
path: "/report/board/ApparentState",
component: () => import("@/views/energy/LeadershipView/ApparentState"),
hidden: true,
},
]

@ -34,6 +34,9 @@ service.interceptors.request.use(config => {
if (getToken() && !isToken) {
config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
}
if(config.contentType) {
config.headers['Content-Type']= config.contentType
}
// get请求映射params参数
if (config.method === 'get' && config.params) {
if(config.params.poolName){

@ -196,13 +196,13 @@
>
</template>
</el-table-column>
<el-table-column
label="处理状态"
<el-table-column
label="处理状态"
align="center"
prop="orderStatus" />
<el-table-column
label="报修来源"
align="center"
<el-table-column
label="报修来源"
align="center"
prop="orderSource" />
<el-table-column
label="报修去向"
@ -810,7 +810,7 @@
form.workPlanTime
}}</el-descriptions-item>
<el-descriptions-item label="是否停机维修">{{
form.workDownMachine ? "是" : "否"
form.workDownMachine ? "否" : "是"
}}</el-descriptions-item>
<el-descriptions-item label="计划停机时间">{{
form.workPlanDownTime
@ -832,7 +832,7 @@
form.workPlanTime
}}</el-descriptions-item>
<el-descriptions-item label="是否停机维修">{{
form.workDownMachine ? "是" : "否"
form.workDownMachine ? "否" : "是"
}}</el-descriptions-item>
<el-descriptions-item label="计划停机时间">{{
form.workPlanDownTime
@ -922,7 +922,7 @@
v-model="form.orderBreakdownTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="报修时间"
placeholder="故障时间"
style="width: 200px"
>
</el-date-picker>
@ -956,10 +956,10 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="报修人号" prop="orderRepairmanCode">
<el-form-item label="报修人号" prop="orderRepairmanCode">
<el-input
v-model="form.orderRepairmanCode"
placeholder="请选择报修人号"
placeholder="请选择报修人号"
style="width: 200px"
>
<el-button
@ -1331,6 +1331,12 @@ export default {
orderTime: [
{ required: true, message: "报修时间不能为空", trigger: "blur" },
],
orderDesc: [
{ required: true, message: "故障描述不能为空", trigger: "blur" },
],
orderRepairmanCode: [
{ required: true, message: "报修人工号不能为空", trigger: "blur" },
],
},
};
},
@ -1433,6 +1439,8 @@ export default {
orderTime: null,
orderHandle: null,
orderRepairman: null,
orderRepairmanCode: null,
orderRepairmanName: null,
orderConnection: null,
orderStatus: null,
orderRelevance: null,

@ -224,6 +224,17 @@
>委外申请</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-edit"
size="mini"
@click="clickInspect"
v-hasPermi="['device:repairOrder:inspect']"
>结果检验
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
@ -277,6 +288,16 @@
/>
</template>
</el-table-column>
<el-table-column
label="检验结果"
align="center"
prop="resultInspect"
width="100"
>
<template slot-scope="scope">
{{ scope.row.resultInspect == '1' ? "通过" :scope.row.resultInspect == '0' ? "不通过" :"待检验" }}
</template>
</el-table-column>
<el-table-column
label="报修单号"
align="center"
@ -1225,6 +1246,17 @@
</div>
</el-dialog>
<!-- 结果检验 -->
<el-dialog title="维修结果检验" :visible.sync="inspectDialog" width="30%">
<el-radio v-model="inspect" label="2"></el-radio>
<el-radio v-model="inspect" label="0"></el-radio>
<el-radio v-model="inspect" label="1"></el-radio>
<span slot="footer" class="dialog-footer">
<el-button @click="inspectDialog = false"> </el-button>
<el-button type="primary" @click="subInspect"> </el-button>
</span>
</el-dialog>
<!-- 查看维修记录对话框 -->
<el-dialog
:title="title"
@ -1626,6 +1658,7 @@ import {
applyOutsource,
writeRepairOrder,
queryEquFaultTypeTree,
subInspect,
} from "@/api/device/repairOrder";
import { listFaultReason } from "@/api/device/faultReason";
import { listFaultMeasures } from "@/api/device/faultMeasures";
@ -1723,6 +1756,12 @@ export default {
openWrite: false,
//
queryWrite: false,
//
inspectDialog: false,
//
inspect: null,
//
orderCodes: [],
//
queryParams: {
pageNum: 1,
@ -2089,6 +2128,7 @@ export default {
//
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.workId);
this.orderCodes = selection.map((item) => item.workCode);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
@ -2327,6 +2367,37 @@ export default {
}
});
},
//
clickInspect() {
if (this.ids.length == 0 || this.ids == null) {
this.$message({
message: "请勾选工单!",
type: "warning",
});
return;
}
//
this.inspectDialog = true;
this.inspect = "1";
},
//
subInspect() {
const data = {
ids: this.ids,
inspect: this.inspect,
orderCodes: this.orderCodes,
};
subInspect(data).then((response) => {
this.getList();
this.inspectDialog = false;
this.$message({
message: "提交成功!",
type: "success",
});
});
},
//
handleSelectEquipment() {
this.$refs.itemSelect.showFlag = true;

@ -9,6 +9,22 @@
v-show="showSearch"
label-width="98px"
>
<el-form-item label="备件申领单号" prop="applyCode">
<el-input
v-model="queryParams.applyCode"
placeholder="请输入备件申领单号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="关联工单号" prop="workCode">
<el-input
v-model="queryParams.workCode"
placeholder="请输入关联工单号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="备品备件编码" prop="spareCode">
<el-input
v-model="queryParams.spareCode"
@ -25,6 +41,14 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="使用设备" prop="spareUseEquipment">
<el-input
v-model="queryParams.spareUseEquipment"
placeholder="请输入使用设备"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="规格型号" prop="spareModel">
<el-input
v-model="queryParams.spareModel"
@ -33,10 +57,10 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="数量" prop="spareQuantity">
<el-form-item label="领用数量" prop="spareQuantity">
<el-input
v-model="queryParams.spareQuantity"
placeholder="请输入数量"
placeholder="请输入领用数量"
clearable
@keyup.enter.native="handleQuery"
/>
@ -49,14 +73,6 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item> -->
<el-form-item label="使用设备" prop="spareUseEquipment">
<el-input
v-model="queryParams.spareUseEquipment"
placeholder="请输入使用设备"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="申领人" prop="applyPeople">
<el-input
v-model="queryParams.applyPeople"
@ -219,6 +235,12 @@
width="100"
/>
<!-- <el-table-column label="使用组线" align="center" prop="spareGroupLine" /> -->
<el-table-column
label="申领人"
align="center"
prop="applyPeople"
width="80"
/>
<el-table-column
label="领用时间"
align="center"
@ -229,12 +251,6 @@
<span>{{ parseTime(scope.row.applyTime) }}</span>
</template>
</el-table-column>
<el-table-column
label="申领人"
align="center"
prop="applyPeople"
width="80"
/>
<!-- <el-table-column label="批准人" align="center" prop="applyApprovePeople" width="80"/> -->
<el-table-column
v-if="false"
@ -462,6 +478,7 @@ export default {
attr3: null,
factoryCode: null,
applyTimeArray: [],
workCode: null,
},
//
pickerOptions: {
@ -527,6 +544,7 @@ export default {
},
//
onItemSelectedSparePartsLedger(obj) {
this.form.storageId = obj[0].storageId;
this.form.spareCode = obj[0].materialCode;
this.form.spareName = obj[0].materialDesc;
this.form.spareModel = obj[0].spareMode;
@ -632,6 +650,7 @@ export default {
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
console.log("this.form",this.form);
if (this.form.applyId != null) {
updateSparePartsApplicationRecord(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
@ -639,6 +658,7 @@ export default {
this.getList();
});
} else {
console.log("this.form",this.form);
if (
this.form.amount - this.form.storageAmount <
this.form.spareQuantity

@ -76,38 +76,41 @@
</el-form>
<el-row :gutter="10" class="mb8">
<!-- <el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['device:sparePartsLedger:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['device:sparePartsLedger:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['device:sparePartsLedger:remove']"
>删除</el-button>
</el-col> -->
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['device:sparePartsLedger:add']"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['device:sparePartsLedger:edit']"
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['device:sparePartsLedger:remove']"
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
@ -128,32 +131,111 @@
<el-table
v-loading="loading"
:data="sparePartsLedgerList"
@selection-change="handleSelectionChange"
>
<!-- 序号 -->
<el-table-column type="index" width="90" align="center" :index="indexMethod" label="序号"/>
<el-table-column type="selection" width="55" align="center" />
<!-- 序号 -->
<el-table-column
type="index"
width="90"
align="center"
:index="indexMethod"
label="序号"
/>
<!-- 缺了所属设备编码设备数量所在产线 -->
<el-table-column label="备品备件号" align="center" prop="materialCode" width="120"/>
<el-table-column label="备品备件名称" align="center" prop="materialDesc" width="120"/>
<el-table-column label="所属设备名称" align="center" prop="ownEquipmentName" width="120"/>
<el-table-column
label="备品备件号"
align="center"
prop="materialCode"
width="120"
/>
<el-table-column
label="备品备件名称"
align="center"
prop="materialDesc"
width="120"
/>
<el-table-column
label="所属设备名称"
align="center"
prop="ownEquipmentName"
width="120"
/>
<!-- 供应商字段里 设备厂家 -->
<el-table-column label="设备厂家" align="center" prop="spareSupplier" width="200"/>
<el-table-column label="规格型号" align="center" prop="spareMode" width="200"/>
<el-table-column label="单机装配数量" align="center" prop="unitQuantity" width="100"/>
<el-table-column label="单价" align="center" prop="unitPrice" width="80"/>
<el-table-column label="单位" align="center" prop="userDefined1" width="80"/>
<el-table-column label="代用件" align="center" prop="substituteParts" width="80"/>
<el-table-column label="安全库存" align="center" prop="safeStock" width="80"/>
<el-table-column label="现有库存" align="center" prop="amount" width="80"/>
<el-table-column label="采购方式" align="center" prop="procurementMethod" width="150"/>
<el-table-column
label="设备厂家"
align="center"
prop="spareSupplier"
width="200"
/>
<el-table-column
label="规格型号"
align="center"
prop="spareMode"
width="200"
/>
<el-table-column
label="单机装配数量"
align="center"
prop="unitQuantity"
width="100"
/>
<el-table-column
label="单价"
align="center"
prop="unitPrice"
width="80"
/>
<el-table-column
label="单位"
align="center"
prop="userDefined1"
width="80"
/>
<el-table-column
label="代用件"
align="center"
prop="substituteParts"
width="80"
/>
<el-table-column
label="安全库存"
align="center"
prop="safeStock"
width="80"
/>
<el-table-column
label="现有库存"
align="center"
prop="amount"
width="80"
/>
<el-table-column
label="采购方式"
align="center"
prop="procurementMethod"
width="150"
/>
<!-- 生产厂商暂时没有用 -->
<!-- <el-table-column label="生产厂商" align="center" prop="spareManufacturer" width="200"/> -->
<el-table-column label="更换周期(月)" align="center" prop="spareReplacementCycle" width="120"/>
<el-table-column label="采购周期(天)" align="center" prop="procurementCycle" width="120"/>
<el-table-column label="期初结存" align="center" prop="openingBalance"/>
<el-table-column label="入库记录" align="center" prop="inputRecords"/>
<el-table-column label="出库记录" align="center" prop="outputRecords"/>
<el-table-column label="期末盘点" align="center" prop="endInventory"/>
<el-table-column label="期末金额" align="center" prop="endMoney"/>
<el-table-column
label="更换周期(月)"
align="center"
prop="spareReplacementCycle"
width="120"
/>
<el-table-column
label="采购周期(天)"
align="center"
prop="procurementCycle"
width="120"
/>
<el-table-column label="期初结存" align="center" prop="openingBalance" />
<el-table-column label="入库记录" align="center" prop="inputRecords" />
<el-table-column label="出库记录" align="center" prop="outputRecords" />
<el-table-column label="期末盘点" align="center" prop="endInventory" />
<el-table-column label="期末金额" align="center" prop="endMoney" />
<!-- <el-table-column
label="备品备件类型"
align="center"
@ -192,13 +274,28 @@
prop="factoryCode"
/> -->
<el-table-column label="创建人" align="center" prop="createBy" />
<el-table-column label="创建时间" align="center" prop="gmtCreate" width="180">
<el-table-column
label="创建时间"
align="center"
prop="gmtCreate"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.gmtCreate, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="最后更新人" align="center" prop="lastModifiedBy" width="100"/>
<el-table-column label="最后更新时间" align="center" prop="gmtModified" width="200">
<el-table-column
label="最后更新人"
align="center"
prop="lastModifiedBy"
width="100"
/>
<el-table-column
label="最后更新时间"
align="center"
prop="gmtModified"
width="200"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.gmtModified, "{y}-{m}-{d}") }}</span>
</template>
@ -232,9 +329,10 @@
/>
<!-- 添加或修改备品备件台账管理对话框 -->
<!-- <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="唯一序列" prop="storageId">
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<!--
<el-form-item label="唯一序列" prop="storageId">
<el-input v-model="form.storageId" placeholder="请输入唯一序列" />
</el-form-item>
<el-form-item label="仓库编码" prop="whCode">
@ -254,14 +352,9 @@
</el-form-item>
<el-form-item label="物料描述" prop="materialDesc">
<el-input v-model="form.materialDesc" placeholder="请输入物料描述" />
</el-form-item>
<el-form-item label="总数量" prop="amount">
<el-input v-model="form.amount" placeholder="请输入总数量" />
</el-form-item>
<el-form-item label="冻结数量" prop="storageAmount">
<el-input v-model="form.storageAmount" placeholder="请输入冻结数量" />
</el-form-item>
<el-form-item label="占用数量" prop="occupyAmount">
</el-form-item>
-->
<!-- <el-form-item label="占用数量" prop="occupyAmount">
<el-input v-model="form.occupyAmount" placeholder="请输入占用数量" />
</el-form-item>
<el-form-item label="LPN" prop="lpn">
@ -286,9 +379,6 @@
placeholder="请选择生产时间">
</el-date-picker>
</el-form-item>
<el-form-item label="单位" prop="userDefined1">
<el-input v-model="form.userDefined1" placeholder="请输入单位" />
</el-form-item>
<el-form-item label="SAP库位" prop="userDefined2">
<el-input v-model="form.userDefined2" placeholder="请输入SAP库位" />
</el-form-item>
@ -349,25 +439,212 @@
</el-form-item>
<el-form-item label="0存在" prop="delFlag">
<el-input v-model="form.delFlag" placeholder="请输入0存在" />
</el-form-item>
<el-form-item label="使用寿命" prop="spareUseLife">
</el-form-item> -->
<el-row :gutter="10" class="mb8">
<el-col :span="12">
<el-form-item label="备件编码" prop="materialCode">
<el-input
v-model="form.materialCode"
placeholder="请输入备件编码"
style="width: 250px"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="备件名称" prop="materialDesc">
<el-input
v-model="form.materialDesc"
placeholder="请输入备件名称"
style="width: 250px"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="所属设备编码" prop="ownEquipmentCode">
<el-input
v-model="form.ownEquipmentCode"
placeholder="请输入所属设备编码"
style="width: 250px"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="所属设备名称" prop="ownEquipmentName">
<el-input
v-model="form.ownEquipmentName"
placeholder="请输入所属设备名称"
style="width: 250px"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<!-- 原来的供应商 现在的设备厂商-->
<el-form-item label="设备厂商" prop="spareSupplier">
<el-input
v-model="form.spareSupplier"
placeholder="请输入设备厂商"
style="width: 250px"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="规格型号" prop="spareMode">
<el-input
v-model="form.spareMode"
placeholder="请输入规格型号"
style="width: 250px"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<!-- <el-form-item label="备件名称" prop="spareName">
<el-input v-model="form.spareName" placeholder="请输入备件名称" />
</el-form-item> -->
<!-- <el-form-item label="生产厂商" prop="spareManufacturer">
<el-input v-model="form.spareManufacturer" placeholder="请输入生产厂商" />
</el-form-item> -->
<!-- <el-form-item label="供应商" prop="spareSupplier">
<el-input v-model="form.spareSupplier" placeholder="请输入供应商" />
</el-form-item> -->
<el-form-item label="单机装配数量" prop="unitQuantity">
<el-input
v-model="form.unitQuantity"
placeholder="请输入单机装配数量"
style="width: 250px"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="单价" prop="unitPrice">
<el-input-number
:min="0"
:step="1"
v-model="form.unitPrice"
placeholder="请输入单价"
style="width: 250px"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="单位" prop="userDefined1">
<el-input
v-model="form.userDefined1"
placeholder="请输入单位"
style="width: 250px"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="代用件" prop="substituteParts">
<el-input
v-model="form.substituteParts"
placeholder="请输入代用件"
style="width: 250px"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="现有库存" prop="amount">
<el-input-number
:min="0"
:step="1"
v-model="form.amount"
placeholder="请输入现有库存"
style="width: 250px"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="安全库存" prop="safeStock">
<el-input
v-model="form.safeStock"
placeholder="请输入安全库存"
style="width: 250px"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="采购方式" prop="procurementMethod">
<el-input
v-model="form.procurementMethod"
placeholder="请输入采购方式"
style="width: 250px"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="更换周期(月)" prop="spareReplacementCycle">
<el-input
v-model="form.spareReplacementCycle"
placeholder="请输入更换周期"
style="width: 250px"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="采购周期(天)" prop="procurementCycle">
<el-input
v-model="form.procurementCycle"
placeholder="请输入采购周期"
style="width: 250px"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="期初结存" prop="openingBalance">
<el-input
v-model="form.openingBalance"
placeholder="请输入期初结存"
style="width: 250px"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="入库记录" prop="inputRecords">
<el-input
v-model="form.inputRecords"
placeholder="请输入入库记录"
style="width: 250px"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="出库记录" prop="outputRecords">
<el-input
v-model="form.outputRecords"
placeholder="请输入出库记录"
style="width: 250px"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="期末盘点" prop="endInventory">
<el-input
v-model="form.endInventory"
placeholder="请输入期末盘点"
style="width: 250px"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="期末金额" prop="endMoney">
<el-input-number
:min="0"
:step="1"
v-model="form.endMoney"
placeholder="请输入期末金额"
style="width: 250px"
/>
</el-form-item>
</el-col>
</el-row>
<!-- <el-form-item label="使用寿命" prop="spareUseLife">
<el-input v-model="form.spareUseLife" placeholder="请输入使用寿命" />
</el-form-item>
<el-form-item label="备件名称" prop="spareName">
<el-input v-model="form.spareName" placeholder="请输入备件名称" />
</el-form-item>
<el-form-item label="规格型号" prop="spareMode">
<el-input v-model="form.spareMode" placeholder="请输入规格型号" />
</el-form-item>
<el-form-item label="生产厂商" prop="spareManufacturer">
<el-input v-model="form.spareManufacturer" placeholder="请输入生产厂商" />
</el-form-item>
<el-form-item label="供应商" prop="spareSupplier">
<el-input v-model="form.spareSupplier" placeholder="请输入供应商" />
</el-form-item>
<el-form-item label="循环周期" prop="spareReplacementCycle">
<el-form-item label="循环周期" prop="spareReplacementCycle">
<el-input v-model="form.spareReplacementCycle" placeholder="请输入循环周期" />
</el-form-item>
</el-form-item> -->
<!--
<el-form-item label="计量单位" prop="spareMeasurementUnit">
<el-input v-model="form.spareMeasurementUnit" placeholder="请输入计量单位" />
</el-form-item>
@ -382,13 +659,13 @@
</el-form-item>
<el-form-item label="库存下限" prop="spareInventoryUpper">
<el-input v-model="form.spareInventoryUpper" placeholder="请输入库存下限" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog> -->
</el-form-item> -->
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
@ -470,7 +747,9 @@ export default {
spareConversionRatio: null,
spareInventoryFloor: null,
spareInventoryUpper: null,
ownEquipmentName : null,
ownEquipmentName: null,
ownEquipmentCode: null,
unitPrice: null,
},
options: [
{
@ -562,6 +841,7 @@ export default {
spareConversionRatio: null,
spareInventoryFloor: null,
spareInventoryUpper: null,
unitPrice: null,
};
this.resetForm("form");
},
@ -601,6 +881,7 @@ export default {
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.spareName = this.form.materialDesc;
if (this.form.storageId != null) {
updateSparePartsLedger(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
@ -643,7 +924,6 @@ export default {
`sparePartsLedger_${new Date().getTime()}.xlsx`
);
},
},
};
</script>
</script>

@ -447,6 +447,14 @@
/>
</template>
</el-table-column>
<el-table-column label="检验状态" align="center" prop="orderInspect">
<template slot-scope="scope">
<dict-tag
:options="dict.type.device_inspect_status"
:value="scope.row.orderInspect"
/>
</template>
</el-table-column>
<el-table-column
v-if="false"
label="主键"
@ -568,14 +576,6 @@
/>
</template>
</el-table-column>
<el-table-column label="检验状态" align="center" prop="orderInspect">
<template slot-scope="scope">
<dict-tag
:options="dict.type.device_inspect_status"
:value="scope.row.orderInspect"
/>
</template>
</el-table-column>
<el-table-column label="工单费用" align="center" prop="orderCost" />
<el-table-column label="保养人" align="center" prop="planPerson" />
<el-table-column
@ -1555,6 +1555,8 @@ export default {
loading: true,
//
ids: [],
//
orderCodes: [],
//
single: true,
//
@ -1741,6 +1743,7 @@ export default {
const data = {
ids: this.ids,
inspect: this.inspect,
orderCodes: this.orderCodes,
};
subInspect(data).then((response) => {
@ -2137,6 +2140,9 @@ export default {
//
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.orderId);
this.orderCodes = selection.map((item) => item.orderCode);
console.log('this.ids',this.ids);
console.log('this.orderCodes',this.orderCodes);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},

@ -0,0 +1,466 @@
<template>
<div id="wrapbg" class="app-container" style="height: 100vh">
<div class="zoomButton">
缩放比例
<el-button size="small" type="primary" icon="el-icon-minus" @click="reduce"></el-button>
{{ zoom }}
<el-button size="small" type="primary" icon="el-icon-plus" @click="add"></el-button>
</div>
<div class="aa">
<div class="zoom" :style="`transform-origin: 0 0;transform: scale(${zoom})`">
<Tree :data="treeData" :index="0" :vw="vw" @itemClick="itemClick" :key="key" v-if="treeShow"/>
</div>
</div>
<div class="menu">
<el-tree :data="leftTreeData" :props="defaultProps" @node-click="handleNodeClick"></el-tree>
</div>
<div
v-show="ModelShow"
id="modalBg"
class="modalBg"
@click="ModelShow = false"
></div>
<div v-show="ModelShow" class="modalInfo">
<span
style="
position: absolute;
top: 33%;
left: 17%;
transform: translate(-50%, -50%);
color: rgb(66, 183, 253);
font-size: 22px;
font-weight: 600;
"
>{{ equipment.consumption || 0 }}</span
>
<span
style="
position: absolute;
top: 37.5%;
left: 17%;
transform: translate(-50%, -50%);
color: rgb(204, 204, 204);
font-weight: 600;
"
>{{ energyType === 2 ? 'kwh' : 'm³' }}</span
>
<span
style="
position: absolute;
top: 20%;
left: 40%;
transform: translateY(-50%);
color: rgb(204, 204, 204);
"
>计量设备编号<span style="color: rgb(255, 255, 255)">{{
equipment.monitorId
}}</span></span
>
<span
style="
position: absolute;
top: 32%;
left: 40%;
transform: translateY(-50%);
color: rgb(204, 204, 204);
"
>计量设备名称<span style="color: rgb(255, 255, 255)">{{
equipment.monitorName
}}</span></span
>
<span
style="
position: absolute;
top: 44%;
left: 40%;
transform: translateY(-50%);
color: rgb(204, 204, 204);
"
>计量设备位置<span style="color: rgb(255, 255, 255)">{{
equipment.address
}}</span></span
>
<span
style="
position: absolute;
top: 58.2%;
left: 26.1%;
width: 41.6%;
height: 6%;
padding-left: 20px;
line-height: 34px;
transform: translate(-50%, -50%);
color: rgb(170, 170, 170);
background-color: rgb(5, 33, 83);
"
>Ua:
<span style="color: rgb(204, 204, 204)">{{ equipment.va }}</span></span
>
<span
style="
position: absolute;
top: 64.2%;
left: 26.1%;
width: 41.6%;
height: 6%;
padding-left: 20px;
line-height: 34px;
transform: translate(-50%, -50%);
color: rgb(170, 170, 170);
"
>Ia:
<span style="color: rgb(204, 204, 204)">{{ equipment.ia }}</span></span
>
<span
style="
position: absolute;
top: 70.2%;
left: 26.1%;
width: 41.6%;
height: 6%;
padding-left: 20px;
line-height: 34px;
transform: translate(-50%, -50%);
color: rgb(170, 170, 170);
background-color: rgb(5, 33, 83);
"
>cosΦ:
<span style="color: rgb(204, 204, 204)">{{
equipment.glys
}}</span></span
>
<span
style="
position: absolute;
top: 76.2%;
left: 26.1%;
width: 41.6%;
height: 6%;
padding-left: 20px;
line-height: 34px;
transform: translate(-50%, -50%);
color: rgb(170, 170, 170);
"
>Ep:
<span style="color: rgb(204, 204, 204)">{{ equipment.zxyg }}</span></span
>
<span
style="
position: absolute;
top: 82.2%;
left: 26.1%;
width: 41.6%;
height: 6%;
padding-left: 20px;
line-height: 34px;
transform: translate(-50%, -50%);
color: rgb(170, 170, 170);
background-color: rgb(5, 33, 83);
"
>P总:
<span style="color: rgb(204, 204, 204)">{{ equipment.activePower }}</span></span
>
<span
style="
position: absolute;
top: 88.2%;
left: 26.1%;
width: 41.6%;
height: 6%;
padding-left: 20px;
line-height: 34px;
transform: translate(-50%, -50%);
color: rgb(170, 170, 170);
"
>Q总:
<span style="color: rgb(204, 204, 204)">{{ equipment.reactivePower }}</span></span
>
<span
style="
position: absolute;
top: 58.2%;
left: 71.1%;
width: 41.6%;
height: 6%;
padding-left: 20px;
line-height: 34px;
transform: translate(-50%, -50%);
color: rgb(170, 170, 170);
background-color: rgb(5, 33, 83);
"
>A相电流值:
<span style="color: rgb(204, 204, 204)">{{ equipment.ia }}</span></span
>
<span
style="
position: absolute;
top: 64.2%;
left: 71.1%;
width: 41.6%;
height: 6%;
padding-left: 20px;
line-height: 34px;
transform: translate(-50%, -50%);
color: rgb(170, 170, 170);
"
>B相电流值:
<span style="color: rgb(204, 204, 204)">{{
equipment.ib
}}</span></span
>
<span
style="
position: absolute;
top: 70.2%;
left: 71.1%;
width: 41.6%;
height: 6%;
padding-left: 20px;
line-height: 34px;
transform: translate(-50%, -50%);
color: rgb(170, 170, 170);
background-color: rgb(5, 33, 83);
"
>C相电流值:
<span style="color: rgb(204, 204, 204)">{{
equipment.ic
}}</span></span
>
<span
style="
position: absolute;
top: 76.2%;
left: 71.1%;
width: 41.6%;
height: 6%;
padding-left: 20px;
line-height: 34px;
transform: translate(-50%, -50%);
color: rgb(170, 170, 170);
"
>A相电压值:
<span style="color: rgb(204, 204, 204)">{{ equipment.va }}</span></span
>
<span
style="
position: absolute;
top: 82.2%;
left: 71.1%;
width: 41.6%;
height: 6%;
padding-left: 20px;
line-height: 34px;
transform: translate(-50%, -50%);
color: rgb(170, 170, 170);
background-color: rgb(5, 33, 83);
"
>B相电压值:
<span style="color: rgb(204, 204, 204)">{{ equipment.vb }}</span></span
>
<span
style="
position: absolute;
top: 88.2%;
left: 71.1%;
width: 41.6%;
height: 6%;
padding-left: 20px;
line-height: 34px;
transform: translate(-50%, -50%);
color: rgb(170, 170, 170);
"
>C相电压值:
<span style="color: rgb(204, 204, 204)">{{ equipment.vc }}</span></span
>
<div class="closeBtn"></div>
</div>
</div>
</template>
<script>
import Tree from '@/components/demo'
import request from '@/utils/request'
import {
tablewareDetailsInfo
} from '@/api/energy/kanban/LeadershipView/ApparentState'
export default {
name: 'Index',
components: {
Tree
},
data() {
return {
vw: document.body.clientWidth / 100,
treeData: [],
leftTreeData:[],
equipment: {},
ModelShow: false,
energyType: 2,
zoom: 1,
key:1,
treeShow:true,
defaultProps: {
children: 'children',
label: 'name'
}
}
},
mounted() {
window.onresize = () => {
this.vw = document.body.clientWidth / 100
}
const fun = (arr, data) => {
let resData = []
arr.forEach(v => {
if (v.pId === data.id) {
resData.push({
...v,
children: fun(arr, v)
})
}
})
return resData.length === 0 ? null : resData
}
request({
url: '/energy/report/board/fixtureStatus',
method: 'get',
params: {
energyType: 2
}
}).then(e => {
let data = []
e.data.result.forEach(v => {
if (v.pId === 0) {
let a = {
...v,
children: fun(e.data.result, v)
}
data.push(a)
}
})
this.treeData = data
this.leftTreeData = data
console.log(data)
this.key +=1
this.treeShow = false
this.treeShow = true
// console.log([data[0]])
})
},
created() {
},
methods: {
itemClick(i) {
const nowDate = this.parseTime(new Date(), '{y}-{m}-{d}')
tablewareDetailsInfo({
energyType: 2,
monitorId: i.title,
beginCollectTime: nowDate + ' 00:00:00',
endCollectTime: nowDate + ' 23:59:59'
}).then((response) => {
this.equipment = response.data.result
this.ModelShow = true
})
},
reduce() {
if (this.zoom <= 0.1) {
return
}
if (this.zoom <= 1) {
this.zoom = Number((this.zoom - 0.1).toFixed(1))
} else if (this.zoom > 1) {
this.zoom = Number((this.zoom - 0.5).toFixed(1))
}
},
add() {
console.log(this.zoom)
if (this.zoom < 1) {
this.zoom = Number((this.zoom + 0.1).toFixed(1))
} else if (this.zoom >= 1) {
this.zoom = Number((this.zoom + 0.5).toFixed(1))
}
},
handleNodeClick(v){
const fun = (arr, data) => {
let resData = []
arr.forEach(v => {
if (v.pId === data.id) {
resData.push({
...v,
children: fun(arr, v)
})
}
})
return resData.length === 0 ? null : resData
}
request({
url: '/energy/report/board/fixtureStatus',
method: 'get',
params: {
energyType: 2,
objId:v.id
}
}).then(e => {
let data = []
e.data.result.forEach(v => {
if (v.pId === 0) {
let a = {
...v,
children: fun(e.data.result, v)
}
data.push(a)
}
})
this.treeData = data
this.key +=1
this.treeShow = false
this.treeShow = true
})
}
}
}
</script>
<style lang="scss" scoped>
.aa {
position: absolute;
top: 11%;
left: 18%;
width: 80%;
height: 84%;
overflow: auto;
}
.app-container {
width: 100%;
height: 100vh;
background-image: url("~@/assets/images/ApparentState.jpeg");
background-repeat: no-repeat;
background-size: 100% 100%;
position: relative;
}
.modalInfo {
width: 600px;
height: 580px;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background-image: url("~@/assets/images/electricityModal.png");
background-repeat: no-repeat;
background-size: 100% 100%;
z-index: 2;
}
.modalBg {
width: 100vw;
height: 100vh;
position: absolute;
top: 0;
left: 0;
background-color: rgba(0, 0, 0, 0.4);
z-index: 1;
}
</style>

File diff suppressed because it is too large Load Diff

@ -0,0 +1,908 @@
<!--<template>-->
<!-- <div class="wrap">-->
<!-- <div id="wrapbg" class="bg">-->
<!-- <div class="map" id="map"></div>-->
<!-- <div-->
<!-- style="-->
<!-- position: absolute;-->
<!-- top: 15.5%;-->
<!-- left: 4.7%;-->
<!-- transform: translate(-50%, -50%);-->
<!-- font-size: 0.8vw;-->
<!-- color: #c4c7cc;-->
<!-- "-->
<!-- >-->
<!-- 接入园区数量-->
<!-- </div>-->
<!-- <div-->
<!-- style="-->
<!-- position: absolute;-->
<!-- top: 15.5%;-->
<!-- left: 18.5%;-->
<!-- transform: translate(-50%, -50%);-->
<!-- font-size: 0.8vw;-->
<!-- color: #c4c7cc;-->
<!-- "-->
<!-- >-->
<!-- 接入设备数量-->
<!-- </div>-->
<!-- <div-->
<!-- style="-->
<!-- position: absolute;-->
<!-- top: 19.5%;-->
<!-- left: 3.7%;-->
<!-- transform: translate(-50%, -50%);-->
<!-- font-size: 0.8vw;-->
<!-- color: #c4c7cc;-->
<!-- "-->
<!-- >-->
<!-- <span-->
<!-- class="parkNum"-->
<!-- id="parkNum"-->
<!-- style="font-size: 1.6vw; color: #02bbfd"-->
<!-- >1</span-->
<!-- >-->
<!-- <span></span>-->
<!-- </div>-->
<!-- <div-->
<!-- style="-->
<!-- position: absolute;-->
<!-- top: 19.5%;-->
<!-- right: 78%;-->
<!-- transform: translate(-50%, -50%);-->
<!-- font-size: 0.8vw;-->
<!-- color: #c4c7cc;-->
<!-- "-->
<!-- >-->
<!-- <span-->
<!-- class="equipmentNum"-->
<!-- id="equipmentNum"-->
<!-- style="font-size: 1.6vw; color: #02fee3"-->
<!-- >28</span-->
<!-- >-->
<!-- <span></span>-->
<!-- </div>-->
<!-- <div class="monthElectricity" id="monthElectricity">-->
<!-- <div class="monthElectricityNum" id="monthElectricityNum">0</div>-->
<!-- <div class="monthElectricityTBNum" id="monthElectricityTBNum">-->
<!-- 同比 <span style="font-size: 0.8vw; color: #01b3f7">0%</span>-->
<!-- </div>-->
<!-- <div class="monthElectricityHBNum" id="monthElectricityHBNum">-->
<!-- 环比 <span style="font-size: 0.8vw; color: #01b3f7">0%</span>-->
<!-- </div>-->
<!-- <div class="monthElectricityTBImg" id="monthElectricityTBImg"></div>-->
<!-- <div class="monthElectricityHBImg" id="monthElectricityHBImg"></div>-->
<!-- </div>-->
<!-- <div class="yearElectricity" id="yearElectricity">-->
<!-- <div class="yearElectricityNum" id="yearElectricityNum">0</div>-->
<!-- <div class="yearElectricityTBNum" id="yearElectricityTBNum">-->
<!-- 同比 <span style="font-size: 0.8vw; color: #01b3f7">0%</span>-->
<!-- </div>-->
<!-- <div class="yearElectricityHBNum" id="yearElectricityHBNum">-->
<!-- 环比 <span style="font-size: 0.8vw; color: #01b3f7">0%</span>-->
<!-- </div>-->
<!-- <div class="yearElectricityTBImg" id="yearElectricityTBImg"></div>-->
<!-- <div class="yearElectricityHBImg" id="yearElectricityHBImg"></div>-->
<!-- </div>-->
<!-- <div class="monthWater" id="monthWater">-->
<!-- <div class="monthWaterNum" id="monthWaterNum">0</div>-->
<!-- <div class="monthWaterTBNum" id="monthWaterTBNum">-->
<!-- 同比 <span style="font-size: 0.8vw; color: #01b3f7">0%</span>-->
<!-- </div>-->
<!-- <div class="monthWaterHBNum" id="monthWaterHBNum">-->
<!-- 环比 <span style="font-size: 0.8vw; color: #01b3f7">0%</span>-->
<!-- </div>-->
<!-- <div class="monthWaterTBImg" id="monthWaterTBImg"></div>-->
<!-- <div class="monthWaterHBImg" id="monthWaterHBImg"></div>-->
<!-- </div>-->
<!-- <div class="yearWater" id="yearWater">-->
<!-- <div class="yearWaterNum" id="yearWaterNum">0</div>-->
<!-- <div class="yearWaterTBNum" id="yearWaterTBNum">-->
<!-- 同比 <span style="font-size: 0.8vw; color: #01b3f7">0%</span>-->
<!-- </div>-->
<!-- <div class="yearWaterHBNum" id="yearWaterHBNum">-->
<!-- 环比 <span style="font-size: 0.8vw; color: #01b3f7">0%</span>-->
<!-- </div>-->
<!-- <div class="yearWaterTBImg" id="yearWaterTBImg"></div>-->
<!-- <div class="yearWaterHBImg" id="yearWaterHBImg"></div>-->
<!-- </div>-->
<!-- <div class="chart1" id="chart1"></div>-->
<!-- <div class="chart2" id="chart2"></div>-->
<!-- <div class="chart3" id="chart3"></div>-->
<!-- <div class="electricWaterButton1" id="electricWaterButton1">-->
<!-- <div class="electricButton">电量</div>-->
<!-- <div class="waterButton">水量</div>-->
<!-- </div>-->
<!-- <div class="electricWaterButton2" id="electricWaterButton2">-->
<!-- <div class="electricButton">电量</div>-->
<!-- <div class="waterButton">水量</div>-->
<!-- </div>-->
<!-- <div class="electricWaterButton3" id="electricWaterButton3">-->
<!-- <div class="electricButton">电量</div>-->
<!-- <div class="waterButton">水量</div>-->
<!-- </div>-->
<!-- <div class="electricWaterButton4" id="electricWaterButton4">-->
<!-- <div class="electricButton">电量</div>-->
<!-- <div class="waterButton">水量</div>-->
<!-- </div>-->
<!-- <div class="dataTime" id="dataTime">-->
<!-- <div class="timeOne" id="timeOne">2023-01-01</div>-->
<!-- <div class="span"></div>-->
<!-- <div class="timeTwo" id="timeTwo">2023-01-01</div>-->
<!-- </div>-->
<!-- <div class="energyConsumptionRanking" id="energyConsumptionRanking">-->
<!-- <div class="rankOne rankItem">-->
<!-- <div class="rankItemInfo">-->
<!-- <div class="rankItemInfoIcon">TOP.1</div>-->
<!-- <div class="rankItemInfoName">园区3</div>-->
<!-- <div class="rankItemInfoNum">12344.00</div>-->
<!-- </div>-->
<!-- <div class="rankItemScheduleDiv">-->
<!-- <div class="rankItemSchedule"></div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="rankTwo rankItem">-->
<!-- <div class="rankItemInfo">-->
<!-- <div class="rankItemInfoIcon">TOP.2</div>-->
<!-- <div class="rankItemInfoName">园区3</div>-->
<!-- <div class="rankItemInfoNum">12344.00</div>-->
<!-- </div>-->
<!-- <div class="rankItemScheduleDiv">-->
<!-- <div class="rankItemSchedule"></div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="rankThree rankItem">-->
<!-- <div class="rankItemInfo">-->
<!-- <div class="rankItemInfoIcon">TOP.3</div>-->
<!-- <div class="rankItemInfoName">园区3</div>-->
<!-- <div class="rankItemInfoNum">12344.00</div>-->
<!-- </div>-->
<!-- <div class="rankItemScheduleDiv">-->
<!-- <div class="rankItemSchedule"></div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="rankItem">-->
<!-- <div class="rankItemInfo">-->
<!-- <div class="rankItemInfoIcon">TOP.1</div>-->
<!-- <div class="rankItemInfoName">园区3</div>-->
<!-- <div class="rankItemInfoNum">12344.00</div>-->
<!-- </div>-->
<!-- <div class="rankItemScheduleDiv">-->
<!-- <div class="rankItemSchedule"></div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="rankItem">-->
<!-- <div class="rankItemInfo">-->
<!-- <div class="rankItemInfoIcon">TOP.1</div>-->
<!-- <div class="rankItemInfoName">园区3</div>-->
<!-- <div class="rankItemInfoNum">12344.00</div>-->
<!-- </div>-->
<!-- <div class="rankItemScheduleDiv">-->
<!-- <div class="rankItemSchedule"></div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="rankItem">-->
<!-- <div class="rankItemInfo">-->
<!-- <div class="rankItemInfoIcon">TOP.1</div>-->
<!-- <div class="rankItemInfoName">园区3</div>-->
<!-- <div class="rankItemInfoNum">12344.00</div>-->
<!-- </div>-->
<!-- <div class="rankItemScheduleDiv">-->
<!-- <div class="rankItemSchedule"></div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="rankItem">-->
<!-- <div class="rankItemInfo">-->
<!-- <div class="rankItemInfoIcon">TOP.1</div>-->
<!-- <div class="rankItemInfoName">园区3</div>-->
<!-- <div class="rankItemInfoNum">12344.00</div>-->
<!-- </div>-->
<!-- <div class="rankItemScheduleDiv">-->
<!-- <div class="rankItemSchedule"></div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="rankItem">-->
<!-- <div class="rankItemInfo">-->
<!-- <div class="rankItemInfoIcon">TOP.1</div>-->
<!-- <div class="rankItemInfoName">园区3</div>-->
<!-- <div class="rankItemInfoNum">12344.00</div>-->
<!-- </div>-->
<!-- <div class="rankItemScheduleDiv">-->
<!-- <div class="rankItemSchedule"></div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="rankItem">-->
<!-- <div class="rankItemInfo">-->
<!-- <div class="rankItemInfoIcon">TOP.1</div>-->
<!-- <div class="rankItemInfoName">园区3</div>-->
<!-- <div class="rankItemInfoNum">12344.00</div>-->
<!-- </div>-->
<!-- <div class="rankItemScheduleDiv">-->
<!-- <div class="rankItemSchedule"></div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!--</template>-->
<!--<script>-->
<!--export default {-->
<!-- name: "Index",-->
<!-- data() {-->
<!-- return {};-->
<!-- },-->
<!-- mounted() {-->
<!-- this.EnergyConsumptionBusinessFormCharts();-->
<!-- this.BottomRightBusinessFormCharts();-->
<!-- this.BottomCenterCharts();-->
<!-- },-->
<!-- methods: {-->
<!-- EnergyConsumptionBusinessFormCharts() {-->
<!-- let myChart = this.$echarts.init(-->
<!-- this.$refs.EnergyConsumptionBusinessForm-->
<!-- );-->
<!-- myChart.setOption({-->
<!-- tooltip: {-->
<!-- trigger: "item",-->
<!-- },-->
<!-- // legend: {-->
<!-- // top: "30%",-->
<!-- // left: "65%",-->
<!-- // textStyle: {-->
<!-- // color: "white"-->
<!-- // }-->
<!-- // },-->
<!-- series: [-->
<!-- {-->
<!-- center: ["40%", "50%"],-->
<!-- name: "Access From",-->
<!-- type: "pie",-->
<!-- radius: ["40%", "70%"],-->
<!-- avoidLabelOverlap: false,-->
<!-- label: {-->
<!-- show: true,-->
<!-- position: "center",-->
<!-- },-->
<!-- emphasis: {-->
<!-- // label: {-->
<!-- // show: true,-->
<!-- // fontSize: 40,-->
<!-- // fontWeight: "bold"-->
<!-- // }-->
<!-- },-->
<!-- labelLine: {-->
<!-- show: false,-->
<!-- },-->
<!-- data: [-->
<!-- { value: 1048, name: "Search" },-->
<!-- { value: 735, name: "Direct" },-->
<!-- ],-->
<!-- },-->
<!-- ],-->
<!-- });-->
<!-- },-->
<!-- BottomCenterCharts() {-->
<!-- let myChart = this.$echarts.init(this.$refs.BottomCenterCharts);-->
<!-- myChart.setOption({-->
<!-- textStyle: {-->
<!-- color: "white",-->
<!-- },-->
<!-- tooltip: {-->
<!-- trigger: "axis",-->
<!-- axisPointer: {-->
<!-- type: "cross",-->
<!-- crossStyle: {-->
<!-- color: "white",-->
<!-- },-->
<!-- },-->
<!-- },-->
<!-- xAxis: [-->
<!-- {-->
<!-- type: "category",-->
<!-- data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],-->
<!-- axisPointer: {-->
<!-- type: "shadow",-->
<!-- },-->
<!-- },-->
<!-- ],-->
<!-- yAxis: [-->
<!-- {-->
<!-- type: "value",-->
<!-- name: "kwh",-->
<!-- min: 0,-->
<!-- max: 250,-->
<!-- interval: 100,-->
<!-- axisLabel: {-->
<!-- formatter: "{value} ml",-->
<!-- },-->
<!-- },-->
<!-- {-->
<!-- type: "value",-->
<!-- // name: 'Temperature',-->
<!-- min: 0,-->
<!-- max: 25,-->
<!-- interval: 5,-->
<!-- axisLabel: {-->
<!-- formatter: "{value} °C",-->
<!-- },-->
<!-- },-->
<!-- ],-->
<!-- series: [-->
<!-- {-->
<!-- name: "Evaporation",-->
<!-- type: "bar",-->
<!-- tooltip: {-->
<!-- valueFormatter: function (value) {-->
<!-- return value + " ml";-->
<!-- },-->
<!-- },-->
<!-- data: [-->
<!-- 2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4,-->
<!-- 3.3,-->
<!-- ],-->
<!-- },-->
<!-- {-->
<!-- name: "Precipitation",-->
<!-- type: "bar",-->
<!-- tooltip: {-->
<!-- valueFormatter: function (value) {-->
<!-- return value + " ml";-->
<!-- },-->
<!-- },-->
<!-- data: [-->
<!-- 2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0,-->
<!-- 2.3,-->
<!-- ],-->
<!-- },-->
<!-- {-->
<!-- name: "Temperature",-->
<!-- type: "line",-->
<!-- yAxisIndex: 1,-->
<!-- tooltip: {-->
<!-- valueFormatter: function (value) {-->
<!-- return value + " °C";-->
<!-- },-->
<!-- },-->
<!-- data: [-->
<!-- 2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2,-->
<!-- ],-->
<!-- },-->
<!-- ],-->
<!-- });-->
<!-- },-->
<!-- BottomRightBusinessFormCharts() {-->
<!-- let myChart = this.$echarts.init(this.$refs.BottomRightBusinessForm);-->
<!-- myChart.setOption({-->
<!-- tooltip: {-->
<!-- trigger: "item",-->
<!-- },-->
<!-- // legend: {-->
<!-- // top: "30%",-->
<!-- // left: "65%",-->
<!-- // textStyle: {-->
<!-- // color: "white"-->
<!-- // }-->
<!-- // },-->
<!-- series: [-->
<!-- {-->
<!-- center: ["40%", "50%"],-->
<!-- name: "Access From",-->
<!-- type: "pie",-->
<!-- radius: ["40%", "70%"],-->
<!-- avoidLabelOverlap: false,-->
<!-- label: {-->
<!-- show: true,-->
<!-- position: "center",-->
<!-- },-->
<!-- emphasis: {-->
<!-- // label: {-->
<!-- // show: true,-->
<!-- // fontSize: 40,-->
<!-- // fontWeight: "bold"-->
<!-- // }-->
<!-- },-->
<!-- labelLine: {-->
<!-- show: false,-->
<!-- },-->
<!-- data: [-->
<!-- { value: 1048, name: "Search" },-->
<!-- { value: 735, name: "Direct" },-->
<!-- ],-->
<!-- },-->
<!-- ],-->
<!-- });-->
<!-- },-->
<!-- },-->
<!--};-->
<!--</script>-->
<!--<style scoped lang="scss">-->
<!--.bg {-->
<!-- width: 100%;-->
<!-- height: 100%;-->
<!-- background-image: url("~@/img/page/bg.jpg");-->
<!-- background-repeat: no-repeat;-->
<!-- background-size: 100% 100%;-->
<!-- position: absolute;-->
<!-- overflow-y: hidden;-->
<!--}-->
<!--.map {-->
<!-- position: absolute;-->
<!-- width: 44%;-->
<!-- height: 61%;-->
<!-- left: 50%;-->
<!-- top: 10%;-->
<!-- transform: translateX(-50%);-->
<!--}-->
<!--.monthElectricityNum {-->
<!-- position: absolute;-->
<!-- top: 31.2%;-->
<!-- left: 6.7%;-->
<!-- color: #02f7d1;-->
<!-- font-size: 1vw;-->
<!-- transform: translateX(-50%);-->
<!--}-->
<!--.monthElectricityTBNum {-->
<!-- position: absolute;-->
<!-- top: 41%;-->
<!-- left: 4.5%;-->
<!-- color: #02f7d1;-->
<!-- font-size: 0.6vw;-->
<!-- transform: translateX(-50%);-->
<!--}-->
<!--.monthElectricityTBImg {-->
<!-- position: absolute;-->
<!-- top: 43%;-->
<!-- left: 4.5%;-->
<!-- width: 4%;-->
<!-- height: 4%;-->
<!-- color: #02f7d1;-->
<!-- font-size: 0.6vw;-->
<!-- transform: translateX(-50%);-->
<!-- background-image: url("~@/img/page/up.png");-->
<!-- background-repeat: no-repeat;-->
<!-- background-size: 100% 100%;-->
<!--}-->
<!--.monthElectricityHBNum {-->
<!-- position: absolute;-->
<!-- top: 41%;-->
<!-- left: 9.2%;-->
<!-- color: #02f7d1;-->
<!-- font-size: 0.6vw;-->
<!-- transform: translateX(-50%);-->
<!--}-->
<!--.monthElectricityHBImg {-->
<!-- position: absolute;-->
<!-- top: 43%;-->
<!-- left: 9.2%;-->
<!-- width: 4%;-->
<!-- height: 4%;-->
<!-- color: #02f7d1;-->
<!-- font-size: 0.6vw;-->
<!-- transform: translateX(-50%);-->
<!-- background-image: url("~@/img/page/up.png");-->
<!-- background-repeat: no-repeat;-->
<!-- background-size: 100% 100%;-->
<!--}-->
<!--.yearElectricityNum {-->
<!-- position: absolute;-->
<!-- top: 31.2%;-->
<!-- left: 16.8%;-->
<!-- color: #02f7d1;-->
<!-- font-size: 1vw;-->
<!-- transform: translateX(-50%);-->
<!--}-->
<!--.yearElectricityTBNum {-->
<!-- position: absolute;-->
<!-- top: 41%;-->
<!-- left: 14.5%;-->
<!-- color: #02f7d1;-->
<!-- font-size: 0.6vw;-->
<!-- transform: translateX(-50%);-->
<!--}-->
<!--.yearElectricityTBImg {-->
<!-- position: absolute;-->
<!-- top: 43%;-->
<!-- left: 14.5%;-->
<!-- width: 4%;-->
<!-- height: 4%;-->
<!-- color: #02f7d1;-->
<!-- font-size: 0.6vw;-->
<!-- transform: translateX(-50%);-->
<!-- background-image: url("~@/img/page/up.png");-->
<!-- background-repeat: no-repeat;-->
<!-- background-size: 100% 100%;-->
<!--}-->
<!--.yearElectricityHBNum {-->
<!-- position: absolute;-->
<!-- top: 41%;-->
<!-- left: 19.2%;-->
<!-- color: #02f7d1;-->
<!-- font-size: 0.6vw;-->
<!-- transform: translateX(-50%);-->
<!--}-->
<!--.yearElectricityHBImg {-->
<!-- position: absolute;-->
<!-- top: 43%;-->
<!-- left: 19.2%;-->
<!-- width: 4%;-->
<!-- height: 4%;-->
<!-- color: #02f7d1;-->
<!-- font-size: 0.6vw;-->
<!-- transform: translateX(-50%);-->
<!-- background-image: url("~@/img/page/up.png");-->
<!-- background-repeat: no-repeat;-->
<!-- background-size: 100% 100%;-->
<!--}-->
<!--.monthWaterNum {-->
<!-- position: absolute;-->
<!-- top: 51.2%;-->
<!-- left: 6.7%;-->
<!-- color: #07d1fd;-->
<!-- font-size: 1vw;-->
<!-- transform: translateX(-50%);-->
<!--}-->
<!--.monthWaterTBNum {-->
<!-- position: absolute;-->
<!-- top: 59.5%;-->
<!-- left: 4.5%;-->
<!-- color: #02f7d1;-->
<!-- font-size: 0.6vw;-->
<!-- transform: translateX(-50%);-->
<!--}-->
<!--.monthWaterTBImg {-->
<!-- position: absolute;-->
<!-- top: 61.5%;-->
<!-- left: 4.5%;-->
<!-- width: 4%;-->
<!-- height: 4%;-->
<!-- color: #02f7d1;-->
<!-- font-size: 0.6vw;-->
<!-- transform: translateX(-50%);-->
<!-- background-image: url("~@/img/page/up.png");-->
<!-- background-repeat: no-repeat;-->
<!-- background-size: 100% 100%;-->
<!--}-->
<!--.monthWaterHBNum {-->
<!-- position: absolute;-->
<!-- top: 59.5%;-->
<!-- left: 9.2%;-->
<!-- color: #02f7d1;-->
<!-- font-size: 0.6vw;-->
<!-- transform: translateX(-50%);-->
<!--}-->
<!--.monthWaterHBImg {-->
<!-- position: absolute;-->
<!-- top: 61.5%;-->
<!-- left: 9.2%;-->
<!-- width: 4%;-->
<!-- height: 4%;-->
<!-- color: #02f7d1;-->
<!-- font-size: 0.6vw;-->
<!-- transform: translateX(-50%);-->
<!-- background-image: url("~@/img/page/up.png");-->
<!-- background-repeat: no-repeat;-->
<!-- background-size: 100% 100%;-->
<!--}-->
<!--.yearWaterNum {-->
<!-- position: absolute;-->
<!-- top: 51.2%;-->
<!-- left: 16.8%;-->
<!-- color: #07d1fd;-->
<!-- font-size: 1vw;-->
<!-- transform: translateX(-50%);-->
<!--}-->
<!--.yearWaterTBNum {-->
<!-- position: absolute;-->
<!-- top: 59.5%;-->
<!-- left: 14.5%;-->
<!-- color: #02f7d1;-->
<!-- font-size: 0.6vw;-->
<!-- transform: translateX(-50%);-->
<!--}-->
<!--.yearWaterTBImg {-->
<!-- position: absolute;-->
<!-- top: 61.5%;-->
<!-- left: 14.5%;-->
<!-- width: 4%;-->
<!-- height: 4%;-->
<!-- color: #02f7d1;-->
<!-- font-size: 0.6vw;-->
<!-- transform: translateX(-50%);-->
<!-- background-image: url("~@/img/page/up.png");-->
<!-- background-repeat: no-repeat;-->
<!-- background-size: 100% 100%;-->
<!--}-->
<!--.yearWaterHBNum {-->
<!-- position: absolute;-->
<!-- top: 59.5%;-->
<!-- left: 19.2%;-->
<!-- color: #02f7d1;-->
<!-- font-size: 0.6vw;-->
<!-- transform: translateX(-50%);-->
<!--}-->
<!--.yearWaterHBImg {-->
<!-- position: absolute;-->
<!-- top: 61.5%;-->
<!-- left: 19.2%;-->
<!-- width: 4%;-->
<!-- height: 4%;-->
<!-- color: #02f7d1;-->
<!-- font-size: 0.6vw;-->
<!-- transform: translateX(-50%);-->
<!-- background-image: url("~@/img/page/up.png");-->
<!-- background-repeat: no-repeat;-->
<!-- background-size: 100% 100%;-->
<!--}-->
<!--.chart1 {-->
<!-- position: absolute;-->
<!-- top: 74.5%;-->
<!-- left: 2.2%;-->
<!-- width: 19%;-->
<!-- height: 20%;-->
<!--}-->
<!--.chart2 {-->
<!-- position: absolute;-->
<!-- top: 74.5%;-->
<!-- left: 79.2%;-->
<!-- width: 19%;-->
<!-- height: 20%;-->
<!--}-->
<!--.chart3 {-->
<!-- position: absolute;-->
<!-- top: 76.5%;-->
<!-- left: 23.2%;-->
<!-- width: 53%;-->
<!-- height: 18%;-->
<!--}-->
<!--.electricWaterButton1 .electricButton {-->
<!-- position: absolute;-->
<!-- top: 70.9%;-->
<!-- left: 12.8%;-->
<!-- font-size: 0.9vw;-->
<!-- color: #fff;-->
<!-- cursor: pointer;-->
<!-- padding: 0 18px;-->
<!-- background-image: url("~@/img/common/electricityWaterBg.png");-->
<!-- background-size: 100% 100%;-->
<!-- background-repeat: no-repeat;-->
<!--}-->
<!--.electricWaterButton1 .waterButton {-->
<!-- position: absolute;-->
<!-- top: 70.9%;-->
<!-- left: 16.3%;-->
<!-- font-size: 0.9vw;-->
<!-- color: #ccc;-->
<!-- cursor: pointer;-->
<!-- padding: 0 18px;-->
<!-- background-size: 100% 100%;-->
<!-- background-repeat: no-repeat;-->
<!--}-->
<!--.electricWaterButton2 .electricButton {-->
<!-- position: absolute;-->
<!-- top: 70.9%;-->
<!-- left: 67.8%;-->
<!-- font-size: 0.9vw;-->
<!-- color: #fff;-->
<!-- cursor: pointer;-->
<!-- padding: 0 18px;-->
<!-- background-image: url("~@/img/common/electricityWaterBg.png");-->
<!-- background-size: 100% 100%;-->
<!-- background-repeat: no-repeat;-->
<!--}-->
<!--.electricWaterButton2 .waterButton {-->
<!-- position: absolute;-->
<!-- top: 70.9%;-->
<!-- left: 71.3%;-->
<!-- font-size: 0.9vw;-->
<!-- color: #ccc;-->
<!-- cursor: pointer;-->
<!-- padding: 0 18px;-->
<!-- background-size: 100% 100%;-->
<!-- background-repeat: no-repeat;-->
<!--}-->
<!--.electricWaterButton3 .electricButton {-->
<!-- position: absolute;-->
<!-- top: 70.9%;-->
<!-- left: 89.6%;-->
<!-- font-size: 0.9vw;-->
<!-- color: #fff;-->
<!-- cursor: pointer;-->
<!-- padding: 0 18px;-->
<!-- background-image: url("~@/img/common/electricityWaterBg.png");-->
<!-- background-size: 100% 100%;-->
<!-- background-repeat: no-repeat;-->
<!--}-->
<!--.electricWaterButton3 .waterButton {-->
<!-- position: absolute;-->
<!-- top: 70.9%;-->
<!-- left: 93.3%;-->
<!-- font-size: 0.9vw;-->
<!-- color: #ccc;-->
<!-- cursor: pointer;-->
<!-- padding: 0 18px;-->
<!-- background-size: 100% 100%;-->
<!-- background-repeat: no-repeat;-->
<!--}-->
<!--.electricWaterButton4 .electricButton {-->
<!-- position: absolute;-->
<!-- top: 11.9%;-->
<!-- left: 89.6%;-->
<!-- font-size: 0.9vw;-->
<!-- color: #fff;-->
<!-- cursor: pointer;-->
<!-- padding: 0 18px;-->
<!-- background-image: url("~@/img/common/electricityWaterBg.png");-->
<!-- background-size: 100% 100%;-->
<!-- background-repeat: no-repeat;-->
<!--}-->
<!--.electricWaterButton4 .waterButton {-->
<!-- position: absolute;-->
<!-- top: 11.9%;-->
<!-- left: 93.3%;-->
<!-- font-size: 0.9vw;-->
<!-- color: #ccc;-->
<!-- cursor: pointer;-->
<!-- padding: 0 18px;-->
<!-- background-size: 100% 100%;-->
<!-- background-repeat: no-repeat;-->
<!--}-->
<!--.dataTime {-->
<!-- position: absolute;-->
<!-- width: 13%;-->
<!-- height: 3%;-->
<!-- top: 75.2%;-->
<!-- right: 25%;-->
<!-- line-height: 3vh;-->
<!-- font-size: 0.8vw;-->
<!-- border: 1px solid #054ea6;-->
<!-- background: url("~@/img/common/time.png") no-repeat scroll 5% center-->
<!-- transparent;-->
<!-- padding-left: 33px;-->
<!-- min-width: 185px;-->
<!--}-->
<!--.timeOne,-->
<!--.timeTwo {-->
<!-- color: #fff;-->
<!-- display: inline-block;-->
<!-- font-size: 0.8vw;-->
<!-- height: 3vh;-->
<!-- line-height: 3vh;-->
<!--}-->
<!--.span {-->
<!-- color: #fff;-->
<!-- display: inline-block;-->
<!-- line-height: 3vh;-->
<!-- padding: 0 4px;-->
<!--}-->
<!--.energyConsumptionRanking {-->
<!-- position: absolute;-->
<!-- width: 17.7%;-->
<!-- height: 50.9%;-->
<!-- top: 15.2%;-->
<!-- right: 1.8%;-->
<!-- padding: 0 1vw;-->
<!--}-->
<!--.rankItem {-->
<!-- width: 100%;-->
<!-- height: 10%;-->
<!-- margin-top: 0.5vh;-->
<!-- position: relative;-->
<!--}-->
<!--.rankItemInfo {-->
<!-- width: 100%;-->
<!-- height: calc(100% - 7px);-->
<!-- position: relative;-->
<!--}-->
<!--.rankOne .rankItemInfoIcon {-->
<!-- background-image: url("~@/img/page/1.png");-->
<!--}-->
<!--.rankTwo .rankItemInfoIcon {-->
<!-- background-image: url("~@/img/page/2.png");-->
<!--}-->
<!--.rankThree .rankItemInfoIcon {-->
<!-- background-image: url("~@/img/page/3.png");-->
<!--}-->
<!--.rankOne .rankItemSchedule {-->
<!-- background-color: #d4a02c;-->
<!--}-->
<!--.rankTwo .rankItemSchedule {-->
<!-- background-color: #f1efed;-->
<!--}-->
<!--.rankThree .rankItemSchedule {-->
<!-- background-color: #e38b45;-->
<!--}-->
<!--.rankItemInfoIcon {-->
<!-- background-image: url("~@/img/page/4.png");-->
<!-- background-repeat: no-repeat;-->
<!-- background-size: 100% 100%;-->
<!-- display: inline-block;-->
<!-- padding: 4px 12px 4px 8px;-->
<!-- color: #ccc;-->
<!-- font-style: italic;-->
<!-- position: absolute;-->
<!-- font-size: 0.8vw;-->
<!-- top: 50%;-->
<!-- transform: translateY(-50%);-->
<!--}-->
<!--.rankItemInfoName {-->
<!-- margin-left: 22px;-->
<!-- color: #ccc;-->
<!-- display: inline-block;-->
<!-- position: absolute;-->
<!-- top: 50%;-->
<!-- left: 50px;-->
<!-- transform: translateY(-50%);-->
<!--}-->
<!--.rankItemInfoNum {-->
<!-- position: absolute;-->
<!-- top: 50%;-->
<!-- right: 1%;-->
<!-- color: #ccc;-->
<!-- transform: translateY(-50%);-->
<!--}-->
<!--.rankItemScheduleDiv {-->
<!-- width: 100%;-->
<!-- margin-top: 4px;-->
<!-- height: 3px;-->
<!-- background-color: #042a63;-->
<!-- position: relative;-->
<!--}-->
<!--.rankItemSchedule {-->
<!-- position: absolute;-->
<!-- top: 0;-->
<!-- height: 100%;-->
<!-- left: 0;-->
<!-- width: 20%;-->
<!-- background-color: #0763c0;-->
<!--}-->
<!--</style>-->

@ -0,0 +1,749 @@
<!--<template>-->
<!-- <div class="wrap">-->
<!-- <div id="wrapbg" class="bg">-->
<!-- <div class="dateRight" id="dateRight"></div>-->
<!-- <div class="title" id="title">-->
<!-- <div class="title1" id="title1">当月电量走势图</div>-->
<!-- <div class="title2" id="title2">合计电量</div>-->
<!-- </div>-->
<!-- <div class="selectOneButton"></div>-->
<!-- <select class="selectOne" id="selectOne" onchange="selectOneChange()">-->
<!-- <option label="建筑" value="0"></option>-->
<!-- <option label="业态" value="1"></option>-->
<!-- <option label="分项" value="2"></option>-->
<!-- </select>-->
<!-- <div class="selectTwoButton"></div>-->
<!-- <select class="selectTwo" id="selectTwo"></select>-->
<!-- <div class="dataTime" id="dataTime">-->
<!-- <div class="timeOne" id="timeOne">2023-01-01</div>-->
<!-- <div class="span"></div>-->
<!-- <div class="timeTwo" id="timeTwo">2023-01-01</div>-->
<!-- </div>-->
<!-- <div class="login" id="login" @click="gopage('/report/board/index')">-->
<!-- 进入后台-->
<!-- </div>-->
<!-- <div class="topRight" id="topRight">-->
<!-- <div class="toIndex" @click="gopage('/report/index')"></div>-->
<!-- <div class="toEnergyPreview" @click="gopage('/report/LeadershipView/LeadershipViewChearts')"></div>-->
<!-- <div class="toState" @click="gopage('/report/LeadershipView/ApparentState')"></div>-->
<!-- </div>-->
<!-- <div class="totalElectricWaterQuantity" id="totalElectricWaterQuantity">-->
<!-- 0-->
<!-- </div>-->
<!-- <div class="totalLineLoss" id="totalLineLoss">0</div>-->
<!-- <div class="kwh">kwh</div>-->
<!-- <div class="kwh" style="top: 85.7%">kwh</div>-->
<!-- <div class="previewElectricWaterButton" id="previewElectricWaterButton">-->
<!-- <div class="electricButton">电量</div>-->
<!-- <div class="waterButton">水量</div>-->
<!-- </div>-->
<!-- <div class="rankingElectricWaterButton" id="rankingElectricWaterButton">-->
<!-- <div class="electricButton">电量</div>-->
<!-- <div class="waterButton">水量</div>-->
<!-- </div>-->
<!-- <div-->
<!-- class="lineLossPreviewElectricWaterButton"-->
<!-- id="lineLossPreviewElectricWaterButton"-->
<!-- >-->
<!-- <div class="electricButton">电量</div>-->
<!-- <div class="waterButton">水量</div>-->
<!-- </div>-->
<!-- <div class="trendChart" id="trendChart"></div>-->
<!-- <div class="linkRelativeRatio" id="linkRelativeRatio"></div>-->
<!-- <div class="onYearOnYearBasis" id="onYearOnYearBasis"></div>-->
<!-- <div class="lineLoss" id="lineLoss"></div>-->
<!-- <div class="EnergyConsumptionRanking" id="EnergyConsumptionRanking"></div>-->
<!-- <div class="LineLossRanking" id="LineLossRanking"></div>-->
<!-- </div>-->
<!-- </div>-->
<!--</template>-->
<!--<script>-->
<!--import {-->
<!-- selectTypeSubset,-->
<!-- previewPolyline,-->
<!--} from "@/api/kanban/LeadershipViewChearts";-->
<!--import { resizeFunc, throttle } from "@/utils/resize.js";-->
<!--export default {-->
<!-- name: "Index",-->
<!-- data() {-->
<!-- return {-->
<!-- version: "3.6.2",-->
<!-- value1: "",-->
<!-- type: "0",-->
<!-- RegionList: [],-->
<!-- dian1: true,-->
<!-- shui1: false,-->
<!-- QueryDataObject: {},-->
<!-- energyType1: "2",-->
<!-- };-->
<!-- },-->
<!-- mounted() {-->
<!-- resizeFunc(1905, 1080, "wrapbg")();-->
<!-- // this.selectTypeSubset(this.type);-->
<!-- // this.QueryDataObject.type = "0";-->
<!-- // this.initTodyChartCharts(2);-->
<!-- // this.initEnergyConsumptionCharts();-->
<!-- // this.initMonthOnMonthCharts();-->
<!-- // this.initYearOnYearCharts();-->
<!-- // this.initRingGraphCharts();-->
<!-- // this.initLineLossRankingCharts();-->
<!-- },-->
<!-- methods: {-->
<!-- gopage(path) {-->
<!-- this.$router.push({ path: path });-->
<!-- },-->
<!-- // -->
<!-- SeleteType(e) {-->
<!-- this.type = e.target.value;-->
<!-- this.QueryDataObject.type = e.target.value;-->
<!-- this.selectTypeSubset(this.type);-->
<!-- },-->
<!-- // -->
<!-- selectTypeSubset(type) {-->
<!-- selectTypeSubset(type).then((res) => {-->
<!-- this.RegionList = res.data;-->
<!-- console.log("RegionList", this.RegionList);-->
<!-- this.QueryDataObject.relationId = this.RegionList[0].relationId;-->
<!-- console.log("QueryDataObject", this.QueryDataObject);-->
<!-- });-->
<!-- },-->
<!-- // -->
<!-- SeleteRegion(e) {-->
<!-- this.QueryDataObject.relationId = e.target.value;-->
<!-- console.log("QueryDataObject", this.QueryDataObject);-->
<!-- },-->
<!-- // -->
<!-- SeleteDate(e) {-->
<!-- this.QueryDataObject.beginCollectTime = e[0].slice(0, 10);-->
<!-- this.QueryDataObject.endCollectTime = e[1].slice(0, 10);-->
<!-- console.log("QueryDataObject", this.QueryDataObject);-->
<!-- },-->
<!-- ClickDian1() {-->
<!-- this.dian1 = !this.dian1;-->
<!-- this.shui1 = !this.shui1;-->
<!-- this.energyType1 = "3";-->
<!-- },-->
<!-- initTodyChartCharts(energyType) {-->
<!-- let arr = {-->
<!-- type: this.QueryDataObject.type,-->
<!-- relationId: this.QueryDataObject.relationId,-->
<!-- beginCollectTime: this.QueryDataObject.beginCollectTime,-->
<!-- endCollectTime: this.QueryDataObject.endCollectTime,-->
<!-- energyType,-->
<!-- };-->
<!-- console.log("arr", arr);-->
<!-- previewPolyline(arr).then((res) => {-->
<!-- console.log("res", res);-->
<!-- });-->
<!-- let myChart = this.$echarts.init(this.$refs.TodyChart);-->
<!-- myChart.setOption({-->
<!-- legend: {-->
<!-- lineStyle: {-->
<!-- color: "#808080",-->
<!-- },-->
<!-- },-->
<!-- color: "white",-->
<!-- textStyle: {-->
<!-- color: "white",-->
<!-- },-->
<!-- title: {-->
<!-- show: true,-->
<!-- left: "center",-->
<!-- top: "14px",-->
<!-- text: "当月电量走势图",-->
<!-- textStyle: {-->
<!-- color: "white",-->
<!-- fontSize: "12",-->
<!-- },-->
<!-- },-->
<!-- xAxis: {-->
<!-- type: "category",-->
<!-- data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],-->
<!-- },-->
<!-- yAxis: {-->
<!-- type: "value",-->
<!-- },-->
<!-- series: [-->
<!-- {-->
<!-- data: [820, 932, 901, 934, 1290, 1330, 1320],-->
<!-- type: "line",-->
<!-- smooth: true,-->
<!-- },-->
<!-- ],-->
<!-- });-->
<!-- },-->
<!-- initRingGraphCharts() {-->
<!-- let myChart = this.$echarts.init(this.$refs.RingGraph);-->
<!-- myChart.setOption({-->
<!-- legend: {-->
<!-- lineStyle: {-->
<!-- color: "#808080",-->
<!-- },-->
<!-- },-->
<!-- color: "white",-->
<!-- textStyle: {-->
<!-- color: "white",-->
<!-- },-->
<!-- title: {-->
<!-- show: true,-->
<!-- left: "center",-->
<!-- top: "14px",-->
<!-- textStyle: {-->
<!-- color: "white",-->
<!-- fontSize: "12",-->
<!-- },-->
<!-- },-->
<!-- xAxis: {-->
<!-- type: "category",-->
<!-- data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],-->
<!-- },-->
<!-- yAxis: {-->
<!-- type: "value",-->
<!-- },-->
<!-- series: [-->
<!-- {-->
<!-- data: [20, 60, 90, 130, 120, 110, 100],-->
<!-- type: "line",-->
<!-- smooth: true,-->
<!-- },-->
<!-- ],-->
<!-- });-->
<!-- },-->
<!-- initMonthOnMonthCharts() {-->
<!-- let myChart = this.$echarts.init(this.$refs.MonthOnMonth);-->
<!-- myChart.setOption({-->
<!-- textStyle: {-->
<!-- color: "white",-->
<!-- },-->
<!-- tooltip: {-->
<!-- trigger: "axis",-->
<!-- },-->
<!-- legend: {-->
<!-- data: ["今日", "昨日"],-->
<!-- textStyle: {-->
<!-- color: "white",-->
<!-- },-->
<!-- },-->
<!-- grid: {-->
<!-- left: "3%",-->
<!-- right: "4%",-->
<!-- bottom: "3%",-->
<!-- containLabel: true,-->
<!-- },-->
<!-- xAxis: {-->
<!-- type: "category",-->
<!-- boundaryGap: false,-->
<!-- data: ["Mon", "Tue", "Wed"],-->
<!-- },-->
<!-- yAxis: {-->
<!-- type: "value",-->
<!-- },-->
<!-- series: [-->
<!-- {-->
<!-- name: "今日",-->
<!-- type: "line",-->
<!-- stack: "Total",-->
<!-- data: [120, 132, 101, 134, 90, 230, 210],-->
<!-- },-->
<!-- {-->
<!-- name: "昨日",-->
<!-- type: "line",-->
<!-- stack: "Total",-->
<!-- data: [220, 182, 191, 234, 290, 330, 310],-->
<!-- },-->
<!-- ],-->
<!-- });-->
<!-- },-->
<!-- initYearOnYearCharts() {-->
<!-- let myChart = this.$echarts.init(this.$refs.YearOnYear);-->
<!-- myChart.setOption({-->
<!-- textStyle: {-->
<!-- color: "white",-->
<!-- },-->
<!-- tooltip: {-->
<!-- trigger: "axis",-->
<!-- },-->
<!-- legend: {-->
<!-- data: ["今年", "去年"],-->
<!-- textStyle: {-->
<!-- color: "white",-->
<!-- },-->
<!-- },-->
<!-- grid: {-->
<!-- left: "3%",-->
<!-- right: "4%",-->
<!-- bottom: "3%",-->
<!-- containLabel: true,-->
<!-- },-->
<!-- xAxis: {-->
<!-- type: "category",-->
<!-- boundaryGap: false,-->
<!-- data: ["Mon", "Tue", "Wed"],-->
<!-- },-->
<!-- yAxis: {-->
<!-- type: "value",-->
<!-- },-->
<!-- series: [-->
<!-- {-->
<!-- name: "今年",-->
<!-- type: "line",-->
<!-- stack: "Total",-->
<!-- data: [120, 132, 101, 134, 90, 230, 210],-->
<!-- },-->
<!-- {-->
<!-- name: "去年",-->
<!-- type: "line",-->
<!-- stack: "Total",-->
<!-- data: [220, 182, 191, 234, 290, 330, 310],-->
<!-- },-->
<!-- ],-->
<!-- });-->
<!-- },-->
<!-- initEnergyConsumptionCharts() {-->
<!-- let myChart = this.$echarts.init(this.$refs.EnergyConsumption);-->
<!-- myChart.setOption({-->
<!-- legend: {-->
<!-- lineStyle: {-->
<!-- color: "#808080",-->
<!-- },-->
<!-- },-->
<!-- color: "white",-->
<!-- textStyle: {-->
<!-- color: "white",-->
<!-- },-->
<!-- title: {-->
<!-- show: true,-->
<!-- left: "center",-->
<!-- top: "14px",-->
<!-- textStyle: {-->
<!-- color: "white",-->
<!-- fontSize: "12",-->
<!-- },-->
<!-- },-->
<!-- xAxis: {-->
<!-- type: "value",-->
<!-- },-->
<!-- yAxis: {-->
<!-- type: "category",-->
<!-- data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],-->
<!-- },-->
<!-- series: [-->
<!-- {-->
<!-- data: [120, 200, 150, 80, 70, 110, 130],-->
<!-- type: "bar",-->
<!-- itemStyle: {-->
<!-- color: "blue",-->
<!-- },-->
<!-- },-->
<!-- ],-->
<!-- });-->
<!-- },-->
<!-- initLineLossRankingCharts() {-->
<!-- let myChart = this.$echarts.init(this.$refs.LineLossRanking);-->
<!-- myChart.setOption({-->
<!-- legend: {-->
<!-- lineStyle: {-->
<!-- color: "#808080",-->
<!-- },-->
<!-- },-->
<!-- color: "white",-->
<!-- textStyle: {-->
<!-- color: "white",-->
<!-- },-->
<!-- title: {-->
<!-- show: true,-->
<!-- left: "center",-->
<!-- top: "14px",-->
<!-- textStyle: {-->
<!-- color: "white",-->
<!-- fontSize: "12",-->
<!-- },-->
<!-- },-->
<!-- xAxis: {-->
<!-- type: "value",-->
<!-- },-->
<!-- yAxis: {-->
<!-- type: "category",-->
<!-- data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],-->
<!-- },-->
<!-- series: [-->
<!-- {-->
<!-- data: [120, 200, 150, 80, 70, 110, 130],-->
<!-- type: "bar",-->
<!-- itemStyle: {-->
<!-- color: "blue",-->
<!-- },-->
<!-- },-->
<!-- ],-->
<!-- });-->
<!-- },-->
<!-- genData(count) {-->
<!-- // prettier-ignore-->
<!-- const nameList = [-->
<!-- '赵', '钱', '孙', '姚', '强', '贾', '路', '娄', '危'-->
<!-- ];-->
<!-- const legendData = [];-->
<!-- const seriesData = [];-->
<!-- for (var i = 0; i < count; i++) {-->
<!-- var name =-->
<!-- Math.random() > 0.65-->
<!-- ? makeWord(4, 1) + "·" + makeWord(3, 0)-->
<!-- : makeWord(2, 1);-->
<!-- legendData.push(name);-->
<!-- seriesData.push({-->
<!-- name: name,-->
<!-- value: Math.round(Math.random() * 100000),-->
<!-- });-->
<!-- }-->
<!-- return {-->
<!-- legendData: legendData,-->
<!-- seriesData: seriesData,-->
<!-- };-->
<!-- function makeWord(max, min) {-->
<!-- const nameLen = Math.ceil(Math.random() * max + min);-->
<!-- const name = [];-->
<!-- for (var i = 0; i < nameLen; i++) {-->
<!-- name.push(nameList[Math.round(Math.random() * nameList.length - 1)]);-->
<!-- }-->
<!-- return name.join("");-->
<!-- }-->
<!-- },-->
<!-- goTarget(href) {-->
<!-- window.open(href, "_blank");-->
<!-- },-->
<!-- },-->
<!--};-->
<!--</script>-->
<!--<style scoped lang="scss">-->
<!--.wrap {-->
<!-- width: 100vw;-->
<!-- height: 100vh;-->
<!-- background-color: rgb(12, 21, 78);-->
<!--}-->
<!--.bg {-->
<!-- width: 1920px;-->
<!-- height: 1080px;-->
<!-- background-image: url("~@/img/energyPreview/backgroundImg.jpg");-->
<!-- background-repeat: no-repeat;-->
<!-- background-size: auto auto;-->
<!-- position: absolute;-->
<!-- overflow-y: hidden;-->
<!--}-->
<!--.trendChart {-->
<!-- position: absolute;-->
<!-- width: 46%;-->
<!-- height: 15%;-->
<!-- top: 21%;-->
<!-- left: 17%;-->
<!--}-->
<!--.linkRelativeRatio {-->
<!-- position: absolute;-->
<!-- width: 29%;-->
<!-- height: 25%;-->
<!-- top: 44%;-->
<!-- left: 3%;-->
<!--}-->
<!--.onYearOnYearBasis {-->
<!-- position: absolute;-->
<!-- width: 29%;-->
<!-- height: 25%;-->
<!-- top: 44%;-->
<!-- left: 34%;-->
<!--}-->
<!--.lineLoss {-->
<!-- position: absolute;-->
<!-- width: 46%;-->
<!-- height: 17%;-->
<!-- top: 76%;-->
<!-- left: 17%;-->
<!--}-->
<!--.EnergyConsumptionRanking {-->
<!-- position: absolute;-->
<!-- width: 31%;-->
<!-- height: 35%;-->
<!-- top: 16%;-->
<!-- left: 67%;-->
<!--}-->
<!--.LineLossRanking {-->
<!-- position: absolute;-->
<!-- width: 31%;-->
<!-- height: 35%;-->
<!-- top: 59%;-->
<!-- left: 67%;-->
<!--}-->
<!--.toIndex {-->
<!-- position: absolute;-->
<!-- transform: translate(-50%, -50%);-->
<!-- top: 3%;-->
<!-- right: 80%;-->
<!-- font-size: 1vw;-->
<!-- cursor: pointer;-->
<!-- padding: 0 20px;-->
<!-- color: #ccc;-->
<!--}-->
<!--.toEnergyPreview {-->
<!-- position: absolute;-->
<!-- transform: translate(-50%, -50%);-->
<!-- top: 3%;-->
<!-- right: 68%;-->
<!-- cursor: pointer;-->
<!-- font-size: 1vw;-->
<!-- color: #fff;-->
<!-- padding: 0 20px;-->
<!-- background-image: url("~@/img/common/indexSpanBg.png");-->
<!-- background-size: 100% 50%;-->
<!-- background-repeat: no-repeat;-->
<!-- background-position: bottom;-->
<!--}-->
<!--.toState {-->
<!-- position: absolute;-->
<!-- transform: translate(-50%, -50%);-->
<!-- top: 3%;-->
<!-- right: 16%;-->
<!-- font-size: 1vw;-->
<!-- padding: 0 20px;-->
<!-- color: #ccc;-->
<!-- background-repeat: no-repeat;-->
<!-- background-position: bottom;-->
<!-- cursor: pointer;-->
<!-- background-size: 100% 50%;-->
<!--}-->
<!--.totalElectricWaterQuantity {-->
<!-- position: absolute;-->
<!-- top: 26.8%;-->
<!-- left: 8.7%;-->
<!-- font-size: 28px;-->
<!-- color: #4db3fa;-->
<!-- font-weight: 600;-->
<!-- transform: translate(-50%, -50%);-->
<!--}-->
<!--.totalLineLoss {-->
<!-- position: absolute;-->
<!-- top: 82.8%;-->
<!-- left: 8.7%;-->
<!-- font-size: 28px;-->
<!-- color: #4db3fa;-->
<!-- font-weight: 600;-->
<!-- transform: translate(-50%, -50%);-->
<!--}-->
<!--.kwh {-->
<!-- position: absolute;-->
<!-- top: 29.7%;-->
<!-- left: 8.7%;-->
<!-- font-size: 1vw;-->
<!-- transform: translate(-50%, -50%);-->
<!-- color: #c7c3c4;-->
<!--}-->
<!--.previewElectricWaterButton .electricButton {-->
<!-- position: absolute;-->
<!-- top: 11.9%;-->
<!-- left: 54.8%;-->
<!-- font-size: 0.9vw;-->
<!-- color: #fff;-->
<!-- cursor: pointer;-->
<!-- padding: 0 18px;-->
<!-- background-image: url("~@/img/common/electricityWaterBg.png");-->
<!-- background-size: 100% 100%;-->
<!-- background-repeat: no-repeat;-->
<!--}-->
<!--.previewElectricWaterButton .waterButton {-->
<!-- position: absolute;-->
<!-- top: 11.9%;-->
<!-- left: 58.8%;-->
<!-- font-size: 0.9vw;-->
<!-- color: #ccc;-->
<!-- cursor: pointer;-->
<!-- padding: 0 18px;-->
<!-- background-size: 100% 100%;-->
<!-- background-repeat: no-repeat;-->
<!--}-->
<!--.rankingElectricWaterButton .electricButton {-->
<!-- position: absolute;-->
<!-- top: 11.9%;-->
<!-- left: 88.2%;-->
<!-- font-size: 0.9vw;-->
<!-- color: #fff;-->
<!-- padding: 0 18px;-->
<!-- background-image: url("~@/img/common/electricityWaterBg.png");-->
<!-- background-size: 100% 100%;-->
<!-- cursor: pointer;-->
<!-- background-repeat: no-repeat;-->
<!--}-->
<!--.rankingElectricWaterButton .waterButton {-->
<!-- position: absolute;-->
<!-- top: 11.9%;-->
<!-- left: 92.2%;-->
<!-- font-size: 0.9vw;-->
<!-- color: #ccc;-->
<!-- padding: 0 18px;-->
<!-- background-size: 100% 100%;-->
<!-- cursor: pointer;-->
<!-- background-repeat: no-repeat;-->
<!--}-->
<!--.lineLossPreviewElectricWaterButton .electricButton {-->
<!-- position: absolute;-->
<!-- top: 55.7%;-->
<!-- left: 88.2%;-->
<!-- font-size: 0.9vw;-->
<!-- color: #fff;-->
<!-- padding: 0 18px;-->
<!-- background-image: url("~@/img/common/electricityWaterBg.png");-->
<!-- background-size: 100% 100%;-->
<!-- background-repeat: no-repeat;-->
<!-- cursor: pointer;-->
<!--}-->
<!--.lineLossPreviewElectricWaterButton .waterButton {-->
<!-- position: absolute;-->
<!-- top: 55.7%;-->
<!-- left: 92.2%;-->
<!-- font-size: 0.9vw;-->
<!-- cursor: pointer;-->
<!-- color: #ccc;-->
<!-- padding: 0 18px;-->
<!-- background-size: 100% 100%;-->
<!-- background-repeat: no-repeat;-->
<!--}-->
<!--.selectOne option,-->
<!--.selectTwo option {-->
<!-- color: #000;-->
<!--}-->
<!--.selectOne,-->
<!--.selectTwo {-->
<!-- appearance: none;-->
<!-- -moz-appearance: none;-->
<!-- -webkit-appearance: none;-->
<!-- color: #fff;-->
<!-- border: 0;-->
<!-- position: absolute;-->
<!-- width: 5.4%;-->
<!-- height: 3%;-->
<!-- top: 7.2%;-->
<!-- padding-left: 1.52%;-->
<!-- background: rgba(0, 0, 0, 0);-->
<!--}-->
<!--.selectOne {-->
<!-- left: 1.5%;-->
<!--}-->
<!--.selectTwo {-->
<!-- left: 7%;-->
<!--}-->
<!--.selectOneButton,-->
<!--.selectTwoButton {-->
<!-- position: absolute;-->
<!-- width: 5.4%;-->
<!-- height: 3%;-->
<!-- top: 7.2%;-->
<!-- border: 1px solid #054ea6;-->
<!-- background: url("~@/img/common/selectButton.png") no-repeat scroll 90% center-->
<!-- transparent;-->
<!--}-->
<!--.selectOneButton {-->
<!-- left: 1.5%;-->
<!--}-->
<!--.selectTwoButton {-->
<!-- left: 7%;-->
<!--}-->
<!--.dataTime {-->
<!-- position: absolute;-->
<!-- width: 13%;-->
<!-- height: 3%;-->
<!-- top: 7.2%;-->
<!-- left: 13%;-->
<!-- line-height: 30px;-->
<!-- font-size: 16px;-->
<!-- border: 1px solid #054ea6;-->
<!-- background: url("~@/img/common/time.png") no-repeat scroll 5% center-->
<!-- transparent;-->
<!-- padding-left: 33px;-->
<!-- min-width: 185px;-->
<!--}-->
<!--.timeOne,-->
<!--.timeTwo {-->
<!-- color: #fff;-->
<!-- display: inline-block;-->
<!-- font-size: 16px;-->
<!-- height: 30px;-->
<!-- line-height: 30px;-->
<!--}-->
<!--.span {-->
<!-- color: #fff;-->
<!-- display: inline-block;-->
<!-- line-height: 3vh;-->
<!-- padding: 0 4px;-->
<!--}-->
<!--.dateRight {-->
<!-- position: absolute;-->
<!-- top: 8.8%;-->
<!-- right: 2%;-->
<!-- transform: translateY(-50%);-->
<!-- color: #fff;-->
<!--}-->
<!--.title1 {-->
<!-- transform: translate(-50%, -50%);-->
<!-- position: absolute;-->
<!-- top: 19.1%;-->
<!-- left: 41%;-->
<!-- color: #fff;-->
<!-- font-size: 0.8vw;-->
<!--}-->
<!--.title2 {-->
<!-- transform: translate(-50%, -50%);-->
<!-- position: absolute;-->
<!-- top: 19.1%;-->
<!-- left: 8.6%;-->
<!-- color: #fff;-->
<!-- font-size: 0.8vw;-->
<!--}-->
<!--.login {-->
<!-- position: absolute;-->
<!-- transform: translate(-50%, -50%);-->
<!-- top: 3%;-->
<!-- right: 6%;-->
<!-- text-align: center;-->
<!-- font-size: 1vw;-->
<!-- padding: 0 20px;-->
<!-- background-repeat: no-repeat;-->
<!-- background-position: bottom;-->
<!-- background-size: 100% 50%;-->
<!-- color: #ccc;-->
<!-- cursor: pointer;-->
<!--}-->
<!--</style>-->

@ -173,7 +173,7 @@
<!-- <vue-seamless-scroll :data="getlistcx" :class-option="classOption" class="wrapscroll"> -->
<table border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr style="height: 48px">
<tr style="height: 62px">
<td
style="
width: 4%;
@ -190,7 +190,7 @@
}}</span>
</td>
</tr>
<tr style="height: 48px">
<tr style="height: 62px">
<td
style="
width: 4%;
@ -205,7 +205,7 @@
<span v-if="workOrder">{{ workOrder.productName }}</span>
</td>
</tr>
<tr style="height: 48px">
<tr style="height: 62px">
<td
style="
width: 4%;
@ -220,7 +220,7 @@
<span v-if="workOrder">{{ workOrder.productCode }}</span>
</td>
</tr>
<tr style="height: 48px">
<tr style="height: 62px">
<td
style="
width: 4%;
@ -238,7 +238,7 @@
</td>
</tr>
<tr style="height: 48px">
<tr style="height: 62px">
<td
style="
width: 4%;
@ -284,9 +284,76 @@
</div>
</div>
<div
class="titlebox2"
style="margin-bottom: 17px; margin-top: 19px"
>
<div class="icon">
<img
src="../../../assets/images/packagingline/bg-title3.png"
alt=""
/>
</div>
<div class="titlename">产线效率用人</div>
</div>
<div class="Totalnumberbox">
<div class="Totalnumber">
<div class="number1">标准用人</div>
<div v-if="taskNum" class="number2">{{ workOrder.standarMan }}</div>
</div>
<div class="Totalnumber Totalnumber1">
<div class="number1">标准效率</div>
<div v-if="taskSampleNum" class="number2">
{{ workOrder.standarXl }}<span style="font-size: 18px; color: #6c8097;">{{ workOrder.unit }}</span>
</div>
</div>
</div>
<div class="Totalnumberbox">
<div class="Totalnumber">
<div class="number1">实际用人</div>
<div v-if="taskNum" class="number2">{{ workOrder.actMan }}</div>
</div>
<div class="Totalnumber Totalnumber1">
<div class="number1">实际效率</div>
<div v-if="taskSampleNum" class="number2">
{{ workOrder.actXl }}<span style="font-size: 18px; color: #6c8097;">{{ workOrder.unit }}</span>
</div>
</div>
</div>
<!-- 实际用人标准效率实际效率 -->
<!-- <div class="data-box">
<div class="box1 box">
<div class="data1">15</div>
<div class="data2">巡检次数</div>
</div>
<div class="box2 box">
<div class="data1">15</div>
<div class="data2">巡检抽样数量</div>
</div>
<div class="box3 box">
<div class="data1">15</div>
<div class="data2">标准用人</div>
</div>
</div>
<div class="data-box">
<div class="box1 box">
<div class="data1">15</div>
<div class="data2">实际用人</div>
</div>
<div class="box2 box">
<div class="data1">15</div>
<div class="data2">标准效率</div>
</div>
<div class="box3 box">
<div class="data1">15</div>
<div class="data2">实际效率</div>
</div>
</div> -->
<!-- <div
id="echart5"
style="margin: auto; width: 570px; height: 374.15px"
></div>
></div> -->
</div>
</div>
</div>
@ -443,7 +510,7 @@ export default {
factoryCode: "ds_" + _this.selectxt,
}).then((response) => {
if (response) {
_this.workOrder = response.data.workOrder;
_this.workOrder = response.data.workOrder;
_this.taskNum = response.data.taskNum;
_this.taskSampleNum = response.data.taskSampleNum;
if (response.data.piedata.checkList) {
@ -462,10 +529,9 @@ export default {
}
});
_this.initChart2();
}else{
} else {
_this.initChart3();
}
}
});
getPorOrderList({
@ -703,7 +769,7 @@ export default {
var data5 = this.piedata;
console.log(data5);
var myChart5 = echarts.init(document.querySelector("#echart5"));
var option5 = {
tooltip: {
trigger: "item",
@ -738,11 +804,10 @@ export default {
},
center: ["50%", "55%"],
avoidLabelOverlap: true,
data: [
{
value:
data5[0] && data5[0].name == "合格" ? data5[0].value : 0,
value: data5[0] && data5[0].name == "合格" ? data5[0].value : 0,
name:
data5[0] && data5[0].name == "合格" ? data5[0].name : "合格",
selected: true,
@ -757,10 +822,9 @@ export default {
},
},
label: {
// formatter: "{e|}\n{a|}{b|{c}/" + (d !== undefined ? "{d}%" : "") + "}{c|}",
formatter: "{e|}\n{a|}{b|{c}/{d}%}{c|}",
rich: {
a: {
padding: -33,
@ -804,11 +868,9 @@ export default {
},
},
label: {
formatter: "{e|}\n{c|}{b|{c}/{d}%}{a|}",
rich: {
c: {
padding: [5, 0],
lineHeight: 60,
verticalAlign: "top",
@ -844,7 +906,7 @@ export default {
var data5 = this.piedata;
console.log(data5);
var myChart5 = echarts.init(document.querySelector("#echart5"));
var option5 = {
tooltip: {
trigger: "item",
@ -879,11 +941,10 @@ export default {
},
center: ["50%", "55%"],
avoidLabelOverlap: true,
data: [
{
value:
data5[0] && data5[0].name == "合格" ? data5[0].value : 0,
value: data5[0] && data5[0].name == "合格" ? data5[0].value : 0,
name:
data5[0] && data5[0].name == "合格" ? data5[0].name : "合格",
selected: true,
@ -942,11 +1003,9 @@ export default {
},
},
label: {
formatter: "{e|}\n{c|}{b|{c}%}{a|}",
rich: {
c: {
padding: [5, 0],
lineHeight: 60,
verticalAlign: "top",
@ -1410,7 +1469,7 @@ export default {
}
.table-tbody {
height: 240px;
height: 320px;
// width: 1775px;
margin: auto;
@ -1463,14 +1522,17 @@ export default {
}
}
.Totalnumberbox {
margin-top: 22px;
margin-bottom: 24px;
display: flex;
align-items: center;
justify-content: space-between;
justify-content: space-around;
.Totalnumber:first-child {
margin-right: 10px;
}
.Totalnumber {
flex: 1;
// width: 235px;
height: 79px;
background: url("../../../assets/images/packagingline/bg-title5.png")
no-repeat;
@ -1480,7 +1542,7 @@ export default {
justify-content: space-around;
.number1 {
font-size: 18px;
font-size: 16px;
color: #ffffff;
line-height: 20px;
}
@ -1492,6 +1554,66 @@ export default {
}
}
}
.data-box {
display: flex;
align-items: center;
justify-content: space-around;
margin-bottom: 20px;
.box {
width: 176px;
height: 179px;
text-align: center;
.data1 {
font-weight: 500;
font-size: 48px;
color: #32c5ff;
text-align: center;
text-transform: none;
margin-top: 41px;
}
.data2 {
font-weight: 400;
font-size: 22px;
color: #ffffff;
text-align: center;
text-transform: none;
margin-top: 29px;
}
}
.box1 {
background: url("../../../assets/images/packagingline/bg-yichang1.png")
no-repeat;
background-size: 100% 100%;
.data1 {
color: #32c5ff;
}
}
.box2 {
background: url("../../../assets/images/packagingline/bg-yichang2.png")
no-repeat;
background-size: 100% 100%;
.data1 {
color: #66ffff;
}
}
.box3 {
background: url("../../../assets/images/packagingline/bg-yichang3.png")
no-repeat;
background-size: 100% 100%;
.data1 {
color: #edb83f;
}
}
}
}
}
}

@ -0,0 +1,272 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="98px">
<el-form-item label="工单日期:" prop="timeArray">
<el-date-picker
v-model="queryParams.timeArray"
format="yyyy-MM-dd"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
clearable
@keyup.enter.native="handleQuery"
>
</el-date-picker>
</el-form-item>
<el-form-item label="产线名称" prop="sapName">
<el-input
v-model="queryParams.sapName"
placeholder="请输入产线名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="工作中心">
<el-select v-model="queryParams.workCenter" filterable placeholder="请选择工作中心" clearable>
<el-option
v-for="item in options"
:key="item.factoryCode"
:label="item.factoryName"
:value="item.factoryCode"
@keyup.enter.native="handleQuery"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></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="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['mes:dailyReportNew:export']"
>导出</el-button>
</el-col>
<el-col :span="20">
<div style="color:firebrick;font-size: small; text-align: center;">产量=规格*实际产量订单完成率=实际产量/计划产量标准工时=产量/产线标准效率产线效率=标准工时/实际工时
总工时=实际用人*实际工时<br/>标准人均效率=实际产量/标准用人/标准工时实际人均效率=实际产量/总工时人均效率达成率=标准人均效率/实际人均效率</div>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="prepareList"
:summary-method="getSummaries"
:header-cell-style="{'text-align':'center'}"
:cell-style="{'text-align':'center'}"
>
<el-table-column prop="factoryCode" label="工厂" width="90"/>
<el-table-column prop="workshopCode" label="车间编码" width="90"/>
<el-table-column prop="workshopName" label="车间名称" width="90"/>
<el-table-column prop="productDate" label="日期" width="100"/>
<el-table-column prop="sapCode" label="产线编码" width="90"/>
<el-table-column prop="sapName" label="产线名称" width="160"/>
<el-table-column prop="equipmentName" label="组别" width="90"/>
<el-table-column prop="prodType" label="品类" width="80"/>
<el-table-column prop="teamLeaderName" label="组长" width="100"/>
<el-table-column prop="workorderCode" label="工单号" width="150"/>
<el-table-column prop="productCode" label="产品编码" width="120" :formatter="productCodeFormate"/>
<el-table-column prop="productName" label="产品名称" width="200"/>
<el-table-column prop="spec" label="规格" width="100"/>
<el-table-column prop="unit" label="单位(件)" width="80"/>
<el-table-column prop="quantitySplit" label="计划产量(件)" width="80"/>
<el-table-column prop="quantityFeedback" label="实际产量(件)" width="80"/>
<el-table-column prop="quantityAct" label="产量(PC)" width="80"/>
<el-table-column prop="completeRate" label="订单完成率(%)" width="80"/>
<el-table-column prop="efficiency" label="产线标准效率(PC/H)" width="100"/>
<el-table-column prop="manStandard" label="标准用人" width="80"/>
<el-table-column prop="useMan" label="实际用人" width="80"/>
<el-table-column
prop="workTimeStandard"
label="标准工时"
width="80">
</el-table-column>
<el-table-column
prop="workTime"
label="实际工时"
width="80">
</el-table-column>
<el-table-column
prop="productivity"
label="产线效率(%)"
width="80">
</el-table-column>
<el-table-column
prop="totalWorkTime"
label="总工时"
width="80">
</el-table-column>
<el-table-column
prop="manAvgStandard"
label="标准人均效率"
width="100">
</el-table-column>
<el-table-column
prop="manAvgActual"
label="实际人均效率"
width="100">
</el-table-column>
<el-table-column
prop="manAvgDo"
label="人均效率达成率"
width="120">
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
</template>
<script>
import { getDailyReportNew,getWorkcenterList} from "@/api/mes/reportWork";
import moment from 'moment';
export default {
name: "Prepare",
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
prepareList: [],
//
title: "",
//
open: false,
//
queryParams: {
timeArray: [moment(new Date().toLocaleDateString().replace(/\//g, "-")).format('YYYY-MM-DD'),
moment(new Date().toLocaleDateString().replace(/\//g, "-")).format('YYYY-MM-DD')],
productDateStart: null,
productDateEnd: null,
sapName: null,
pageNum: 1,
pageSize: 10,
workCenter: null,
factoryCode: null
},
//
form: {},
//
rules: {},
options: null
};
},
created() {
this.getList();
this.getWorkcenterList();
},
methods: {
indexMethod(index){
return index+1 ;
},
/** 查询备料单列表 */
getList() {
this.loading = true;
if(this.queryParams.timeArray.length>0){
this.queryParams.productDateStart = moment(this.queryParams.timeArray[0]).format('YYYY-MM-DD');
this.queryParams.productDateEnd = moment(this.queryParams.timeArray[1]).format('YYYY-MM-DD');
}
getDailyReportNew(this.queryParams).then(response => {
this.prepareList = response.rows;
this.total = response.total;
this.loading = false;
});
},
getWorkcenterList(){
getWorkcenterList().then(data => {
this.options = data;
});
this.queryParams.workCenter = this.options[0].factoryCode;
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
};
this.resetForm("form");
},
productCodeFormate(row, column, cellValue){
if(cellValue != null){
return cellValue.slice(7,18); //
}
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
/** 导出按钮操作 */
handleExport() {
this.download('mes/reportWork/getDailyReportNewExport', {
...this.queryParams
}, `dailyReport_${new Date().getTime()}.xlsx`)
},
getSummaries(param) {
const { columns, data } = param;
const sums = [];
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = '小计';
return;
}
const values = data.map(item => Number(item[column.property]));
if (!values.every(value => isNaN(value))) {
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr);
if (!isNaN(value)) {
return prev + curr;
} else {
return prev;
}
}, 0);
sums[index] += '';
if(index<6){
sums[index] = '';
}
} else {
sums[index] = '';//N/A
}
});
return sums;
}
}
};
</script>

@ -33,7 +33,7 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="标准效率(%)" prop="efficiency">
<el-form-item label="标准效率" prop="efficiency">
<el-input
v-model="queryParams.efficiency"
type="number"
@ -119,7 +119,7 @@
<el-table-column label="线体编码" align="center" prop="lineCode" />
<el-table-column label="线体名称" align="center" prop="lineName" />
<el-table-column label="标准用人" align="center" prop="useMan" />
<el-table-column label="标准效率(%)" align="center" prop="efficiency" />
<el-table-column label="标准效率" align="center" prop="efficiency" />
<el-table-column label="检验工具" align="center" prop="attr1" />
<el-table-column
label="操作"
@ -156,27 +156,40 @@
/>
<!-- 添加或修改线体管理对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="标准用人" prop="useMan">
<el-input v-model="form.useMan" type="number" placeholder="请输入标准用人" />
</el-form-item>
<el-form-item label="标准效率(%)" prop="efficiency">
<el-input v-model="form.efficiency" type="number" placeholder="请输入标准效率" />
</el-form-item>
<el-form-item label="检验工具" prop="attr1">
<el-input v-model="form.attr1" placeholder="请输入检验工具" />
</el-form-item>
<el-form-item
v-for="(item, index) in processItems"
:label="'第' + (index+1) +'道工艺'"
:key="item.key"
:prop="'processItems.'+index+'.value'"
:rules="{required: true, message: '请输入工艺', trigger: 'blur'}"
>
<el-input v-model="item.value" style="width: 70%;" placeholder="请输入工艺"></el-input>
<el-button @click.prevent="removeProcessItem(item)" style="margin-left:30px">删除</el-button>
</el-form-item>
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="90px">
<el-row :gutter="10">
<el-col :span="8">
<el-form-item label="标准用人" prop="useMan">
<el-input v-model="form.useMan" type="number" placeholder="请输入标准用人" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="标准效率" prop="efficiency">
<el-input v-model="form.efficiency" type="number" placeholder="请输入标准效率" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="检验工具" prop="attr1">
<el-input v-model="form.attr1" placeholder="请输入检验工具" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="24">
<el-form-item
v-for="(item, index) in processItems"
:label="'第' + (index+1) +'道工艺'"
:key="item.key"
:prop="'processItems.'+index+'.value'"
>
<el-input v-model="item.value" style="width: 35%;" placeholder="请输入工艺"></el-input>
<label for="dis-people" style="padding: 0 10px;">人员分配</label>
<el-input id="dis-people" type="number" v-model="item.quality" style="width: 30%;" placeholder="请输入数量"></el-input>
<el-button @click.prevent="removeProcessItem(item)" style="margin-left:30px">删除</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
@ -249,7 +262,8 @@ export default {
},
processItems:[{
value: '',
key: Date.now()
key: Date.now(),
quality: 0
}],
};
},
@ -290,6 +304,7 @@ export default {
factoryCode: null,
delFlag: null,
processList: [],
qualityList: [],
processItems: [{
value: '',
key: Date.now()
@ -330,10 +345,11 @@ export default {
getMesLine(id).then((response) => {
this.form = response.data;
if (response.data.processList !== null) {
this.processItems = response.data.processList.map(item => {
this.processItems = response.data.processList.map((item, index) => {
return {
value: item,
key: Date.now(),
quality: response.data.qualityList[index],
};
});
this.form.processItems = this.processItems;
@ -347,7 +363,10 @@ export default {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
this.form.processList = this.form.processItems.map(item => item.value);
this.form.processItems?.forEach(item => {
this.form.processList.push(item.value);
this.form.qualityList.push(item.quality);
});
updateMesLine(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;
@ -406,7 +425,8 @@ export default {
addProcessItem() {
this.processItems.push({
value: '',
key: Date.now()
key: Date.now(),
quanlity: ''
});
this.form.processItems = this.processItems;
},

@ -112,17 +112,27 @@
v-hasPermi="['mes:prepare:export']"
>导出</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
:disabled="single"
icon="el-icon-download"
size="mini"
@click="showPrint"
v-hasPermi="['mes:prepare:export']"
>打印预览</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
:disabled="single"
icon="el-icon-download"
size="mini"
@click="showPrint"
v-hasPermi="['mes:prepare:export']"
>打印生产物料</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-download"
size="mini"
@click="showPrintX"
v-hasPermi="['mes:prepare:export']"
>打印反冲物料</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
@ -212,7 +222,7 @@
</div>
</el-dialog>
<!-- 打印预览弹出层 -->
<!-- 打印预览弹出层(生产物料) -->
<el-dialog
title="备料信息"
:visible.sync="printDialogVisible"
@ -220,72 +230,35 @@
>
<div id="printFrom" class="my-print-box">
<el-form :ref="formRef" :model="form" :rules="validateRules">
<el-form :model="form">
<!-- 表头-工单信息 -->
<el-row class="my-print-head">
<el-col :offset="10" :span="5">生产订单备料单(订单物料)</el-col>
<el-col :offset="10" :span="5">生产订单备料单({{printData.printTitle}})</el-col>
</el-row>
<!-- 导航栏 -->
<el-row class="my-print-nav">
<el-col :span="4">工厂:{{printData.factory}}</el-col>
<el-col :span="4">工作中心:{{printData.workCenter}}</el-col>
<el-col :span="4" v-if="printData.prodLineCode!=null">线:{{printData.prodLineCode}}</el-col>
<el-col :span="4">生产日期:{{printData.productDate}}</el-col>
<el-col :span="4">打印日期:{{printData.printDate}}</el-col>
<el-col :span="4">页次: 1/ 1</el-col>
</el-row>
<!-- 主数据 -->
<el-table
v-if="refreshNewWorkerTable"
v-loading="newWorkerLoading"
class="my-print-table"
:data="printData.workTable"
border
style="width: 100%">
<el-table-column
type="index"
label="序号"
width="50">
</el-table-column>
<el-table-column
prop="materialCode"
label="料号"
width="130" :formatter="productCodeFormate">
</el-table-column>
<el-table-column
prop="materialName"
label="物料描述"
width="320">
</el-table-column>
<el-table-column
prop="unit"
width="50"
label="单位">
</el-table-column>
<el-table-column
prop="workorderCode"
width="100"
label="生产订单" :formatter="orderCodeFormate">
</el-table-column>
<el-table-column
prop="quantity"
label="请领数量">
</el-table-column>
<el-table-column
prop="fundQuanlity"
label="欠领数量">
</el-table-column>
<el-table-column
prop="routeCode"
width="80"
label="实发数量">
</el-table-column>
<el-table-column
prop="recoil"
label="反冲物料">
</el-table-column>
v-if="refreshNewWorkerTable" v-loading="newWorkerLoading"class="my-print-table":data="printData.workTable"
border style="width: 100%">
<el-table-column type="index" label="序号" width="50"></el-table-column>
<el-table-column prop="materialCode" label="料号" width="130" :formatter="productCodeFormate"></el-table-column>
<el-table-column prop="materialName" label="物料描述" width="320"></el-table-column>
<el-table-column prop="unit" width="50" label="单位"></el-table-column>
<el-table-column v-if="showWorkorderCode" prop="workorderCode" width="100" label="生产订单" :formatter="orderCodeFormate"></el-table-column>
<el-table-column prop="quantity" label="请领数量"></el-table-column>
<el-table-column prop="fundQuanlity" label="欠领数量"></el-table-column>
<el-table-column prop="routeCode" width="80" label="实发数量"></el-table-column>
<el-table-column prop="recoil" label="反冲物料"></el-table-column>
</el-table>
<br/>
<!-- 底部 -->
<el-row class="my-print-foot">
@ -299,22 +272,18 @@
<el-col :offset="1" :span="3">SAP-No:{{printData.SAPNo}}</el-col>
<el-col :offset="1" :span="3">Z-PM-F-030-A.2</el-col>
</el-row>
</el-form>
</div>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="handlePrint(printData)"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import { listPrepare, getPrepare, delPrepare, addPrepare, updatePrepare } from "@/api/mes/prepare";
import {printPrepareByCode} from "@/api/mes/prepareDetail";
import {printPrepareByCode,printPrepareXByCode} from "@/api/mes/prepareDetail";
import moment from "moment/moment";
// import { listPrepareDetail, getPrepareDetail, delPrepareDetail, addPrepareDetail, updatePrepareDetail } from "@/api/mes/prepareDetail";
// import Detail from "./prepareDetail.vue";
@ -325,11 +294,10 @@ export default {
return {
newWorkerLoading: false,
refreshNewWorkerTable:true,
showWorkorderCode:true,
//
selectPrepare:[],
//
formRef: 'form',
validateRules: [],
printData: {
printable: 'printFrom',
ignore: ['no-print'],
@ -443,7 +411,7 @@ export default {
properties: params.properties || null
})
},
//
// ()
showPrint() {
//
this.printData.workCenter = "暂无数据";
@ -451,24 +419,53 @@ export default {
this.printData.workTable = [];
this.printData.factory = null;
this.printData.productDate = null;
this.printData.prodLineCode = null;
//
this.printDialogVisible = true;
this.newWorkerLoading = true // true
this.refreshNewWorkerTable = false // refreshProTablefalse
printPrepareByCode(this.selectPrepare[0].workorderCode).then(response => {
console.log(response.data)
printPrepareByCode(this.selectPrepare[0].workorderCode,'0').then(response => {
this.showWorkorderCode = true;
this.printData.printTitle = '订单物料';
this.printData.factory = response.data.mesPrepareDetailList[0].factoryCode
this.printData.productDate = response.data.mesPrepareDetailList[0].productDate
this.printData.printDate = moment(new Date()).format('YYYY-MM-DD')
this.printData.workTable = response.data.mesPrepareDetailList
this.printData.prodLineCode = response.data.mesPrepare.prodLineCode
this.refreshNewWorkerTable = true // refreshProTabletrue
this.newWorkerLoading = false // false
})
},
// ()
showPrintX() {
if(this.queryParams.productDate == null){
this.$modal.msgError("请选择工单生产日期");
return;
}
//
this.printData.workCenter = "暂无数据";
this.printData.printDate = null;
this.printData.workTable = [];
this.printData.factory = null;
this.printData.productDate = null;
this.printData.prodLineCode = null;
//
this.printDialogVisible = true;
this.newWorkerLoading = true // true
this.refreshNewWorkerTable = false // refreshProTablefalse
printPrepareXByCode(moment(this.queryParams.productDate).format('YYYY-MM-DD'),'X').then(response => {
this.showWorkorderCode = false;
this.printData.printTitle = '反冲物料';
this.printData.factory = response.data.mesPrepareDetailList[0].factoryCode
this.printData.productDate = moment(this.queryParams.productDate).format('YYYY-MM-DD')
this.printData.printDate = moment(new Date()).format('YYYY-MM-DD')
this.printData.workTable = response.data.mesPrepareDetailList
this.refreshNewWorkerTable = true // refreshProTabletrue
this.newWorkerLoading = false // false
})
},
//
// handlePrepareDetail(){
// this.$refs.detail.showFlag = true;
// },
//
indexMethod(index){
return index+1 ;

@ -351,34 +351,53 @@
<el-table-column label="id" align="center" prop="id" v-if="false" />
<el-table-column label="工单编码" width="130" align="left" prop="workorderCode"
:show-overflow-tooltip="true" />
<el-table-column label="订单编码" width="110" align="left" prop="workorderCodeSap"
<el-table-column label="订单编码" width="105" align="left" prop="workorderCodeSap"
:show-overflow-tooltip="true" :formatter="orderCodeFormate" />
<el-table-column label="报工单号" width="110" align="left" prop="reportCode"
<el-table-column label="报工单号" width="115" align="left" prop="reportCode"
:show-overflow-tooltip="true" />
<el-table-column label="批次" width="250" align="left" prop="batch"
:show-overflow-tooltip="true" />
<el-table-column label="单位" align="center" prop="unit" />
<el-table-column label="报工数量" width="100" align="left" prop="quantityFeedback"
<el-table-column label="报工数量" width="120" align="left" prop="quantityFeedback"
:show-overflow-tooltip="true">
<template slot-scope="scope">
<el-input type="number" size="small" v-model="scope.row.quantityFeedback"
@change="handleEdit(scope.$index, scope.row)"></el-input>
@change="handleEdit(scope.$index, scope.row)"
:disabled="scope.row.attr1=='1'"
></el-input>
</template>
</el-table-column>
<el-table-column label="工时数" align="center" prop="workTime">
<el-table-column label="工时数" align="center" prop="workTime" width="120">
<template slot-scope="scope">
<el-input type="number" size="small" v-model="scope.row.workTime"
@change="handleEdit(scope.$index, scope.row)"></el-input>
@change="handleEdit(scope.$index, scope.row)"
:disabled="scope.row.attr1=='1'"
></el-input>
</template>
</el-table-column>
<el-table-column label="用人数" align="center" prop="useMan">
<template slot-scope="scope">
<el-input type="number" size="small" v-model="scope.row.useMan"
@change="handleEdit(scope.$index, scope.row)"></el-input>
@change="handleEdit(scope.$index, scope.row)"
:disabled="scope.row.attr1=='1'"
></el-input>
</template>
</el-table-column>
<el-table-column label="报工单编号" align="center" prop="reportCode" width="120" />
<el-table-column label="创建时间" align="center" prop="createTime" width="150" />
<!---->
<el-table-column fixed="right" label="操作" width="160">
<template slot-scope="scope">
<el-button @click.native.prevent="deleteReportRow(scope.$index, item.libList)" size="small" type="danger" plain
v-if="item.libId == 'order1'&&scope.row.uploadStatus!='1'&&scope.row.attr1!= '1'">
删除</el-button>
<el-button @click.native.prevent="preReportRow(scope.$index, item.libList)" size="small" type="success" plain
v-if="item.libId == 'order1'&&scope.row.attr1!='1'&&scope.row.uploadStatus!='1'" >
预报工</el-button>
</template>
</el-table-column>
</el-table>
<div class="demo-input-suffix">
@ -391,7 +410,7 @@
</el-tabs>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="cancel" v-if="optType == 'view'"></el-button>
<el-button type="primary" @click="submitReport" v-else> </el-button>
<el-button type="primary" :disabled="loading" @click="submitReport" v-else> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
@ -624,7 +643,7 @@
import {
listReportWork,
getReportWork,
delReportWork,
delReportWork,deleteReportNow,
addReportWork,
getWorkcenterList,
getWarehouseList,
@ -638,7 +657,7 @@ import {
submitReportPS,
submitReportPSSAP,
getCKList,
getPutInOrderList,
getPutInOrderList,preReportRow
} from "@/api/mes/reportWork";
import {
getConsumeList,
@ -900,6 +919,7 @@ export default {
this.queryParams.feedbackTimeEnd = null;
}
this.loading = true;
listReportWork(this.queryParams).then((response) => {
this.reportWorkList = response.rows;
this.total = response.total;
@ -1021,6 +1041,7 @@ export default {
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.queryParams.machineCode = "";
this.getList();
},
/** 重置按钮操作 */
@ -1203,6 +1224,7 @@ export default {
//
getAllLevelReportList(this.queryParams).then((response) => {
this.queryParams.workorderCode = "";
this.queryParams.machineCode = "";
this.openReport = true;
this.titleReport = "工单报工详情";
this.libTabs = response;
@ -1217,7 +1239,7 @@ export default {
this.pReportRows = allRows.reduce((acc, cur) => {
const hasDuplicate = acc.some(
(item) =>
item.batch === cur.batch && item.workorderCode === cur.workorderCode
item.batch === cur.batch && item.workorderCode === cur.workorderCode && item.reportCode === cur.reportCode
);
if (!hasDuplicate) {
acc.push(cur);
@ -1247,7 +1269,7 @@ export default {
this.pReportRows = allRows.reduce((acc, cur) => {
const hasDuplicate = acc.some(
(item) =>
item.batch === cur.batch && item.workorderCode === cur.workorderCode
item.batch === cur.batch && item.workorderCode === cur.workorderCode && item.reportCode === cur.reportCode
);
if (!hasDuplicate) {
acc.push(cur);
@ -1511,12 +1533,61 @@ export default {
this.newWorkerLoading = false; // false
});
},
//--
deleteReportRow(index, rows) {
this.$modal.confirm('是否确认删除?确认后,不需要点击下方确定,立即生效!').then(function() {
return deleteReportNow(rows[index].reportCode);
}).then(() => {
var sr = rows[index];
this.queryParams.workorderCode = sr.workorderCode;
this.queryParams.machineCode = sr.machineCode;
//
getAllLevelReportList(this.queryParams).then((response) => {
this.queryParams.workorderCode = "";
this.queryParams.machineCode = "";
this.openReport = true;
this.titleReport = "工单报工详情";
this.libTabs = response;
});
rows.splice(index, 1);
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
//--
preReportRow(index, rows) {
let _this = this;
this.$modal.confirm('是否确认预报工?').then(function() {
_this.loading = true;
return preReportRow(rows[index].reportCode);
}).then(() => {
this.$modal.msgSuccess("预报工成功");
debugger
var sr = rows[index];
this.queryParams.workorderCode = sr.workorderCode;
this.queryParams.machineCode = sr.machineCode;
//
getAllLevelReportList(this.queryParams).then((response) => {
this.queryParams.workorderCode = "";
this.queryParams.machineCode = "";
this.openReport = true;
this.titleReport = "工单报工详情";
this.libTabs = response;
});
_this.loading = false;
}).catch(() => {});
},
//--
deleteBomRow(index, rows) {
this.$modal
.confirm("是否确认删除?确认后,不需要点击下方确定,立马删除!")
.then(function () {
if (rows[index].recordId != null) {
this.loading = true;
return deleteBomRowNow(rows[index].recordId);
}
})
@ -1533,6 +1604,7 @@ export default {
this.pConsumeRows = newPConsumeRows;
rows.splice(index, 1);
this.$modal.msgSuccess("删除成功");
this.loading = false;
})
.catch(() => {});
},

@ -257,7 +257,7 @@
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body v-loading="upload.loading">
<el-upload
ref="upload"
:limit="1"
@ -273,9 +273,9 @@
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
<!-- <div class="el-upload__tip" slot="tip">-->
<!-- <el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的数据-->
<!-- </div>-->
<div class="el-upload__tip" slot="tip">
<el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的单价信息
</div>
<span>仅允许导入xlsxlsx格式文件</span>
<el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate"></el-link>
</div>
@ -347,6 +347,7 @@ export default {
}],
value: '',
upload: {
loading: false,
//
open: false,
//
@ -574,10 +575,14 @@ export default {
},
//
handleFileUploadProgress(event, file, fileList) {
console.log(1)
this.upload.isUploading = true;
console.log(this.upload.isUploading)
},
//
handleFileSuccess(response, file, fileList) {
console.log(2)
this.upload.loading=false;
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
@ -586,6 +591,8 @@ export default {
},
//
submitFileForm() {
console.log(3)
this.upload.loading=true;
this.$refs.upload.submit();
},
handleSearch() {

@ -76,11 +76,11 @@
<el-table-column label="产线名称" align="center" width="250" prop="equipmentName" />
<el-table-column label="操作者" width="110" align="center" prop="nickName" />
<el-table-column label="子工序名称" width="110" align="center" prop="childprocessName" />
<el-table-column label="工序单价" align="center" prop="attr1" />
<el-table-column label="件数" align="center" prop="totalQuantity" />
<el-table-column label="工序单价" width="110" align="center" prop="attr1" />
<el-table-column label="件数PC" width="100" align="center" prop="totalQuantity" />
<el-table-column label="薪酬(元)" width="110" align="center" prop="result" />
<el-table-column label="人数" align="center" prop="headCount" />
<el-table-column label="平均工资(元)" width="110" align="center" prop="avgResult" />
<!-- <el-table-column label="平均工资(元)" width="110" align="center" prop="avgResult" />-->
<el-table-column label="实际工资(元)" width="110" align="center" prop="realWages" />
<el-table-column label="备注" align="center" prop="remark">
<template slot-scope="scope">
@ -98,7 +98,7 @@
<el-button
size="mini"
type="text"
icon="el-icon-edit"
icon="el-icon-edit"p
@click="handleUpdate(scope.row)"
v-hasPermi="['unitPriceReport:report:edit']"
>工资修改</el-button>
@ -128,8 +128,8 @@
<el-form ref="form" :model="form" label-width="100px">
<el-row>
<el-col :span="12">
<el-form-item label="实际工资" prop="attr1" >
<el-input v-model="form.attr1" />
<el-form-item label="实际工资" prop="attr2" >
<el-input v-model="form.attr2" />
</el-form-item>
</el-col>
</el-row>
@ -166,7 +166,7 @@
<!-- <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"></el-input>-->
<el-select
v-model="form.remark"
placeholder="工单状态"
placeholder="备注"
clearable
style="width: 240px"
>
@ -328,10 +328,10 @@ export default {
getReport(picId).then(response => {
this.form = response.data.MesUnitpriceReport;
this.open = true;
if (response.data.attr1 === null || response.data.attr1 === undefined) {
this.form.attr1 = row.avgResult;
if (response.data.attr2 === null || response.data.attr2 === undefined) {
this.form.attr2 = row.result;
} else {
this.form.attr1 = response.data.attr1;
this.form.attr2 = response.data.attr2;
}
this.MesUnitPriceInfo=response.data.MesUnitPriceInfo;
});

@ -173,6 +173,18 @@
>切线调拨
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="editBatch"
v-hasPermi="['mes:pro:workorder:edit']"
>批次编辑
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
@ -622,6 +634,84 @@
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 批次编辑 -->
<el-dialog :title="batchTitle" :visible.sync="batchOpen" width="1000px" append-to-body>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-add"
size="mini"
@click="handleAddBatch"
v-hasPermi="['mes:pro:workorder:edit']"
>新增
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-edit"
size="mini"
:disabled="batchSingle"
@click="handleUpdateBatch"
v-hasPermi="['mes:pro:workorder:edit']"
>修改
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-remove"
size="mini"
:disabled="batchSingle"
@click="handleRemoveBatch"
v-hasPermi="['mes:pro:workorder:edit']"
>删除
</el-button>
</el-col>
</el-row>
<el-table border v-loading="batchLoading" :data="batchData" @selection-change="batchSelectionChange"
ref="batchTable" row-key="orderCode"
>
<el-table-column type="selection" align="center" />
<el-table-column label="工单编号" align="center" prop="workorderCode" width="150"/>
<el-table-column label="当前批次号" align="center" prop="batchCode"/>
<el-table-column label="当前批次数量" align="center" prop="batchQuantity"/>
<el-table-column label="新批次号" align="center" prop="newBatchCode"/>
<el-table-column label="新批次数量" align="center" prop="newBatchQuantity"/>
</el-table>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="hangleCloseEditBatch"> </el-button>
</div>
</el-dialog>
<!-- 批次编辑新增/修改页面 -->
<el-dialog :title="bEditTitle" :visible.sync="bEditOpen" width="600px" append-to-body>
<el-form :model="batchForm" ref="batchForm" :rules="batchRules" label-width="120px">
<el-form-item label="工单编号" prop="workorderCode">
<el-input v-model="batchForm.workorderCode" placeholder="" disabled></el-input>
</el-form-item>
<el-form-item v-if="editBatchFlag" label="当前批次号" prop="batchCode">
<el-input v-model="batchForm.batchCode" placeholder="请输入当前批次号" disabled></el-input>
</el-form-item>
<el-form-item v-if="editBatchFlag" label="当前批次数量" prop="batchQuantity">
<el-input type="number" v-model.number="batchForm.batchQuantity" placeholder="请输入当前批次数量" disabled></el-input>
</el-form-item>
<el-form-item label="新批次号" prop="newBatchCode">
<el-input v-model="batchForm.newBatchCode" placeholder="请输入新批次号"></el-input>
</el-form-item>
<el-form-item label="新批次数量" prop="newBatchQuantity">
<el-input type="number" v-model.number="batchForm.newBatchQuantity" placeholder="请输入新批次数量"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="batchSubmitForm"> </el-button>
<el-button @click="batchCancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
@ -634,7 +724,12 @@ import {
getOrderAndWork,getProSortNo,
getWorkBatchList,
subChangeWorkOrderPro,subChangeWorkOrderM,
checkWorkOrder
checkWorkOrder,
getWorkOrderBatch,
getWorkOrderBatchInfo,
insertWorkOrderBatch,
updateWorkOrderBatch,
removeWorkOrderBatch
} from '@/api/plan/workorder'
import moment from 'moment';
import { getProEquipment, getProRoutes, getProShifts,selectMaterielList} from '@/api/plan/order'
@ -714,13 +809,18 @@ export default {
},
//
loading: true,
batchLoading: true,
//
ids: [],
cods: [],
//
batchData: [],
//
single: true,
batchSingle: true,
//
multiple: true,
batchMultiple: true,
//
statuses: [],
//
@ -732,9 +832,15 @@ export default {
//
title: "",
titleM:"",
batchTitle: "",
bEditTitle: "",
//
open: false,
openM:false,
batchOpen: false,
bEditOpen: false,
//
editBatchFlag: false,
//
queryParams: {
productDateArray: [new Date(), new Date()],
@ -768,6 +874,7 @@ export default {
},
//
form: {},
batchForm: {},
//
rules: {
workorderCode: [
@ -789,6 +896,17 @@ export default {
{required: true, message: "单位不能为空", trigger: "blur"}
],
},
batchRules: {
workorderCode: [
{required: true, message: "工单编码不能为空", trigger: "blur"}
],
batchCode: [
{required: true, message: "当前批次编码不能为空", trigger: "blur"}
],
batchQuantity: [
{required: true, message: "当前批次数量不能为空", trigger: "blur"}
]
},
/**********************************/
eRouteProps: {multiple: true},
eRouteOptions: [],
@ -875,7 +993,7 @@ export default {
var statusesArray = this.statuses;
for (var i = 0; i < statusesArray.length; i++) {
if (statusesArray[i] != 'w0') {//
this.$modal.msgError("已经下达的订单不允许操作");
this.$modal.msgError("工单只有未派发和已派发才可变更!");
return
}
}
@ -1197,7 +1315,7 @@ export default {
if (sum >= this.productData[0].atrr1) {
this.$message({
message: '请填写完批次信息',
message: '数量已经拆分完',
type: 'warning'
})
return
@ -1331,7 +1449,7 @@ export default {
var statusesArray = this.statuses;
for (var i = 0; i < statusesArray.length; i++) {
if (statusesArray[i] == 'w1') {//
this.$modal.msgError("已经下达的订单不允许操作");
this.$modal.msgError("工单只有未派发和已派发才可变更!");
return
}
}
@ -1626,6 +1744,17 @@ export default {
};
this.resetForm("form");
},
resetBatchForm() {
this.batchForm = {
workorderCode: null,
batchCode: null,
batchQuantity: null,
newBatchCode: null,
newBatchQuantity: null,
attr1: null,
}
this.resetForm("batchForm");
},
// -
handleQuery() {
this.queryParams.pageNum = 1;
@ -1647,6 +1776,13 @@ export default {
this.multiple = !selection.length
this.statuses = selection.map(item => item.status)
},
batchSelectionChange(selection) {
this.batchids = selection.map(item => item.workorderId)
this.bWorkCodes = selection.map(item => item.workorderCode)
this.batchCodes = selection.map(item => item.batchCode)
this.batchSingle = selection.length !== 1
this.batchMultiple = !selection.length
},
// -
handleAdd() {
alert("待建设")
@ -1664,6 +1800,91 @@ export default {
})
return value;
},
editBatch() {
this.batchLoading = true;
const workOrdercode = this.codes[0];
getWorkOrderBatch(workOrdercode).then(response => {
if(response.code == 200) {
this.batchData = response.rows;
this.batchOpen = true;
this.batchLoading = false;
this.batchTitle = "批次编辑";
}
})
},
hangleCloseEditBatch() {
this.batchOpen = false;
this.getList();
},
//
handleAddBatch() {
this.resetBatchForm();
this.batchForm.workorderCode = this.codes[0];
this.bEditOpen = true;
this.bEditTitle = "批次新增";
this.editBatchFlag = false;
},
//
handleUpdateBatch() {
this.editBatchFlag = true;
this.resetBatchForm();
const params = {
workorderCode: this.bWorkCodes[0],
batchCode: this.batchCodes[0]
}
getWorkOrderBatchInfo(params).then(response => {
this.batchForm = response.data;
this.bEditOpen = true;
this.bEditTitle = "批次修改";
});
},
//
batchCancel() {
this.bEditOpen = false;
this.editBatch();
},
//
batchSubmitForm() {
this.$refs["batchForm"].validate(valid => {
if (valid) {
if (this.batchForm.batchCode != null) {
updateWorkOrderBatch(this.batchForm).then(response => {
if(response.code === 200) {
this.$modal.msgSuccess("修改成功");
}else{
this.$modal.msgError(response.msg);
}
this.bEditOpen = false;
this.editBatch();
});
} else {
insertWorkOrderBatch(this.batchForm).then(response => {
if(response.code === 200) {
this.$modal.msgSuccess("新增成功");
}else{
this.$modal.msgError(response.msg);
}
this.bEditOpen = false;
this.editBatch();
});
}
}
});
},
//
handleRemoveBatch() {
const workorderCode = this.bWorkCodes[0];
const batchCode = this.batchCodes[0];
this.$modal.confirm('是否确认删除批次编号为"' + batchCode + '"的数据项?').then(function() {
return removeWorkOrderBatch(batchCode,workorderCode);
}).then(() => {
this.editBatch();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
//-
selectBPMateriel() {
//

@ -0,0 +1,265 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="检测水平" prop="checkLevel">
<el-input
v-model="queryParams.checkLevel"
placeholder="请输入检测水平"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="样品量字码" prop="sampleCode" label-width="100">
<el-input
v-model="queryParams.sampleCode"
placeholder="请输入样品量字码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<!--
<el-form-item label="大节点" prop="typeCode">
<el-input v-model="queryParams.typeCode" placeholder="请输入大节点" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="小节点" prop="checkType">
<el-input v-model="queryParams.checkType" placeholder="请输入小节点" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>-->
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></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="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"></el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"></el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"></el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"></el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="codeList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="id" align="center" prop="id" v-if="false"/>
<el-table-column label="检测水平" align="center" prop="checkLevel"/>
<el-table-column label="开始值" align="center" prop="startValue"/>
<el-table-column label="结束值" align="center" prop="endValue"/>
<el-table-column label="样品量字码" align="center" prop="sampleCode"/>
<el-table-column label="创建时间" align="center" prop="createTime"/>
<!--<el-table-column label="小节点" align="center" prop="checkType"/>
<el-table-column label="大节点" align="center" prop="typeCode"/>-->
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改样本量字码-样品量字码对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<!--<el-form-item label="大节点" prop="typeCode">
<el-input v-model="form.typeCode" placeholder="请输入大节点"/>
</el-form-item>
<el-form-item label="大节点" prop="typeCode">
<el-input v-model="form.typeCode" placeholder="请输入大节点"/>
</el-form-item>-->
<el-form-item label="检测水平" prop="checkLevel">
<el-select v-model="form.checkLevel" placeholder="请选择维护类型" clearable>
<el-option
v-for="dict in dict.type.sample_level"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
<span>字典值</span>
</el-form-item>
<el-form-item label="开始值" prop="startValue">
<el-input v-model="form.startValue" placeholder="请输入开始值" type="number" style="width:58%"/>
</el-form-item>
<el-form-item label="结束值" prop="endValue">
<el-input v-model="form.endValue" placeholder="请输入结束值" type="number" style="width:58%"/>
</el-form-item>
<el-form-item label="字码" prop="sampleCode">
<el-select v-model="form.sampleCode" placeholder="请选择样本量字码" clearable>
<el-option
v-for="dict in dict.type.sample_code"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
<span>字典值</span>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {listCode, getCode,delCode,addCode,updateCode } from "@/api/quality/code";
export default {
name: "codeContent",
dicts: ["sample_level","sample_code"],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
// -
codeList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
startValue: null,
endValue: null,
attr1: null,
factoryCode: null,
sampleCode: null,
checkType: null,
typeCode: null,
checkLevel: null
},
//
form: {
}
,
//
rules: {
startValue: [{required: true, message: "开始值不能为空", trigger: "blur" }],
endValue: [{required: true, message: "结束值不能为空", trigger: "blur" }],
}
};
},
created() {
this.getList();
},
methods: {
/** 查询样本量字码-样品量字码列表 */
getList() {
this.loading = true;
listCode(this.queryParams).then(response => {
this.codeList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
startValue: null,
endValue: null,
attr1: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
factoryCode: null,
delFlag: null,
sampleCode: null,
checkType: null,
typeCode: null,
checkLevel: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加样本量字码-样品量字码";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id =
row.id || this.ids
getCode(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改样本量字码-样品量字码";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
updateCode(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addCode(this.form).then((response) => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
},
/** 导出按钮操作 */
handleExport() {
}
}
}
</script>

@ -0,0 +1,440 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
label-width="68px">
<el-form-item label="样品量字码" prop="sampleCode" label-width="100">
<el-input
v-model="queryParams.sampleCode"
placeholder="请输入样品量字码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<!--
<el-form-item label="大节点" prop="typeCode">
<el-input
v-model="queryParams.typeCode"
placeholder="请输入大节点"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="小节点" prop="checkType">
<el-input
v-model="queryParams.checkType"
placeholder="请输入大节点"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
-->
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></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="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['quality:aql:add']"
>新增
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['quality:aql:edit']"
>修改
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['quality:aql:remove']"
>删除
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['quality:aql:export']"
>导出
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
@click="handleUpdateCode"
v-hasPermi="['quality:aql:edit']"
>维护样本量
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="aqlList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="id" align="center" prop="id" v-if="false"/>
<el-table-column label="样品量字码" align="center" prop="sampleCode" width="100"/>
<el-table-column label="样品量" align="center" prop="sampleCode"/>
<el-table-column label="大节点" align="center" prop="typeCode"/>
<el-table-column label="小节点" align="center" prop="checkType"/>
<el-table-column label="接收质量限AQL" align="left">
<el-table-column label="0.010" align="center" prop="aql1"/>
<el-table-column label="0.015" align="center" prop="aql2"/>
<el-table-column label="0.025" align="center" prop="aql3"/>
<el-table-column label="0.040" align="center" prop="aql4"/>
<el-table-column label="0.065" align="center" prop="aql5"/>
<el-table-column label="0.10" align="center" prop="aql6"/>
<el-table-column label="0.15" align="center" prop="aql7"/>
<el-table-column label="0.25" align="center" prop="aql8"/>
<el-table-column label="0.40" align="center" prop="aql9"/>
<el-table-column label="0.65" align="center" prop="aql10"/>
<el-table-column label="1.0" align="center" prop="aql11"/>
<el-table-column label="1.5" align="center" prop="aql12"/>
<el-table-column label="2.5" align="center" prop="aql13"/>
<el-table-column label="4.0" align="center" prop="aql14"/>
<el-table-column label="6.5" align="center" prop="aql15"/>
<el-table-column label="10" align="center" prop="aql16"/>
<el-table-column label="15" align="center" prop="aql17"/>
<el-table-column label="25" align="center" prop="aql18"/>
<el-table-column label="40" align="center" prop="aql19"/>
<el-table-column label="65" align="center" prop="aql20"/>
<el-table-column label="100" align="center" prop="aql21"/>
<el-table-column label="150" align="center" prop="aql22"/>
<el-table-column label="250" align="center" prop="aql23"/>
<el-table-column label="400" align="center" prop="aql24"/>
<el-table-column label="650" align="center" prop="aql25"/>
<el-table-column label="1000" align="center" prop="aql26"/>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改抽样规则-接收质量限对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="样品量字码开始" prop="sampleCode">
<el-input v-model="form.sampleCode" placeholder="请输入样品量字码开始"/>
</el-form-item>
<!--
<el-form-item label="最大坏量" prop="maxBadQuality">
<el-input v-model="form.maxBadQuality" placeholder="请输入最大坏量"/>
</el-form-item>
<el-form-item label="大节点" prop="typeCode">
<el-input v-model="form.typeCode" placeholder="请输入大节点"/>
</el-form-item>-->
<el-form-item label="0.010" prop="aql1">
<el-input v-model="form.aql1" placeholder="请输入0.010"/>
</el-form-item>
<el-form-item label="0.015" prop="aql2">
<el-input v-model="form.aql2" placeholder="请输入0.015"/>
</el-form-item>
<el-form-item label="0.025" prop="aql3">
<el-input v-model="form.aql3" placeholder="请输入0.025"/>
</el-form-item>
<el-form-item label="0.040" prop="aql4">
<el-input v-model="form.aql4" placeholder="请输入0.040"/>
</el-form-item>
<el-form-item label="0.065" prop="aql5">
<el-input v-model="form.aql5" placeholder="请输入0.065"/>
</el-form-item>
<el-form-item label="0.10" prop="aql6">
<el-input v-model="form.aql6" placeholder="请输入0.10"/>
</el-form-item>
<el-form-item label="0.15" prop="aql7">
<el-input v-model="form.aql7" placeholder="请输入0.15"/>
</el-form-item>
<el-form-item label="0.25" prop="aql8">
<el-input v-model="form.aql8" placeholder="请输入0.25"/>
</el-form-item>
<el-form-item label="0.40" prop="aql9">
<el-input v-model="form.aql9" placeholder="请输入0.40"/>
</el-form-item>
<el-form-item label="0.65" prop="aql10">
<el-input v-model="form.aql10" placeholder="请输入0.65"/>
</el-form-item>
<el-form-item label="1.0" prop="aql11">
<el-input v-model="form.aql11" placeholder="请输入1.0"/>
</el-form-item>
<el-form-item label="1.5" prop="aql12">
<el-input v-model="form.aql12" placeholder="请输入1.5"/>
</el-form-item>
<el-form-item label="2.5" prop="aql13">
<el-input v-model="form.aql13" placeholder="请输入2.5"/>
</el-form-item>
<el-form-item label="4.0" prop="aql14">
<el-input v-model="form.aql14" placeholder="请输入4.0"/>
</el-form-item>
<el-form-item label="6.5" prop="aql15">
<el-input v-model="form.aql15" placeholder="请输入6.5"/>
</el-form-item>
<el-form-item label="10" prop="aql16">
<el-input v-model="form.aql16" placeholder="请输入10"/>
</el-form-item>
<el-form-item label="15" prop="aql17">
<el-input v-model="form.aql17" placeholder="请输入15"/>
</el-form-item>
<el-form-item label="25" prop="aql18">
<el-input v-model="form.aql18" placeholder="请输入25"/>
</el-form-item>
<el-form-item label="40" prop="aql19">
<el-input v-model="form.aql19" placeholder="请输入40"/>
</el-form-item>
<el-form-item label="65" prop="aql20">
<el-input v-model="form.aql20" placeholder="请输入65"/>
</el-form-item>
<el-form-item label="100" prop="aql21">
<el-input v-model="form.aql21" placeholder="请输入100"/>
</el-form-item>
<el-form-item label="150" prop="aql22">
<el-input v-model="form.aql22" placeholder="请输入150"/>
</el-form-item>
<el-form-item label="250" prop="aql23">
<el-input v-model="form.aql23" placeholder="请输入250"/>
</el-form-item>
<el-form-item label="400" prop="aql24">
<el-input v-model="form.aql24" placeholder="请输入400"/>
</el-form-item>
<el-form-item label="650" prop="aql25">
<el-input v-model="form.aql25" placeholder="请输入650"/>
</el-form-item>
<el-form-item label="1000" prop="aql26">
<el-input v-model="form.aql26" placeholder="请输入1000"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 样品量字码对话框 -->
<el-dialog title="样品量字码维护" :visible.sync="openCode" width="1160px" append-to-body>
<CodeContent></CodeContent>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {listAql,getAql,delAql, addAql,updateAql } from "@/api/quality/aql";
import CodeContent from "./codeContent.vue";
export default {
name: "Aql",
dicts: [],
components: { CodeContent },
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
// -
aqlList: [],
//
title: "",
//
open: false,
openCode: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
sampleCode: null,
sampleAql: null,
attr1: null,
factoryCode: null,
maxBadQuality: null,
checkType: null,
typeCode: null,
aql1: null,
aql2: null,
aql3: null,
aql4: null,
aql5: null,
aql6: null,
aql7: null,
aql8: null,
aql9: null,
aql10: null,
aql11: null,
aql12: null,
aql13: null,
aql14: null,
aql15: null,
aql16: null,
aql17: null,
aql18: null,
aql19: null,
aql20: null,
aql21: null,
aql22: null,
aql23: null,
aql24: null,
aql25: null,
aql26: null
},
//
form: { },
//
rules: {}
};
},
created() {
this.getList();
},
methods: {
/** 查询抽样规则-接收质量限列表 */
getList() {
this.loading = true;
listAql(this.queryParams).then(response => {
this.aqlList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.openCode = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
sampleCode: null,
sampleAql: null,
attr1: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
factoryCode: null,
delFlag: null,
maxBadQuality: null,
checkType: null,
typeCode: null,
aql1: null,
aql2: null,
aql3: null,
aql4: null,
aql5: null,
aql6: null,
aql7: null,
aql8: null,
aql9: null,
aql10: null,
aql11: null,
aql12: null,
aql13: null,
aql14: null,
aql15: null,
aql16: null,
aql17: null,
aql18: null,
aql19: null,
aql20: null,
aql21: null,
aql22: null,
aql23: null,
aql24: null,
aql25: null,
aql26: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加抽样规则-接收质量限";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids
getAql(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改抽样规则-接收质量限";
});
},
/** 维护样本量按钮操作 */
handleUpdateCode() {
this.openCode = true;
},
/** 提交按钮 */
submitForm() {
},
/** 删除按钮操作 */
handleDelete(row) {
},
/** 导出按钮操作 */
handleExport() {
}
}
}
</script>

@ -17,13 +17,15 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item v-show="false" label="检测项目名称" prop="projectType">
<el-input
v-model="queryParams.projectType"
placeholder="检测方案代码"
clearable
style="width: 240px"
/>
<el-form-item label="检测方案名称" prop="projectType">
<el-select v-model="queryParams.projectType" filterable clearable placeholder="请选择检测方案">
<el-option
v-for="(item,index) in projectTypeOptions"
:key="index"
:label="item.projectTypeName"
:value="item.projectTypeCode">
</el-option>
</el-select>
</el-form-item>
<el-form-item>
@ -32,17 +34,7 @@
</el-form-item>
</el-form>
<el-row :gutter="20">
<el-col :span="5" :xs="24">
<el-tabs v-model="editTabsValue" @tab-click="handleClick" :tab-position="'right'" style="height: 600px;">
<el-tab-pane
v-for="(item) in projectTypeOptions"
:key="item.projectTypeCode"
:label="item.projectTypeName"
:name="item.projectTypeCode"
>{{ item.projectTypeName }}</el-tab-pane>
</el-tabs>
</el-col>
<el-col :span="19" :xs="24">
<el-col :span="24" :xs="24">
<el-table v-loading="loading" :data="itemList" @selection-change="handleBomSelectionChange" ref="myTable" >
<el-table-column width="50" align="center" type="selection">
</el-table-column>

@ -518,7 +518,12 @@
</el-table-column>
</el-table-column>
</el-table>
<el-descriptions title="" border :column="1" :labelStyle="{width: '123px'}" :contentStyle="{width:'85%'}">
<el-descriptions-item label="批量或致命性质量异常"></el-descriptions-item>
</el-descriptions>
<el-descriptions title="" border :column="1" :labelStyle="{width:'100%'}" :contentStyle="{width:'0%'}">
<el-descriptions-item label="备注:无异常的打√,有异常的描述异常及数量比例,有数据的需要填写数据"></el-descriptions-item>
</el-descriptions>
<br/>
<!-- 底部 -->
<el-row class="my-print-foot">
@ -572,7 +577,7 @@
</el-row>
<el-row>
<el-col :span="16">
<el-form-item label="产品名称" prop="materialName">
<el-form-item label="产品名称/生产组" prop="materialName">
<el-input v-model="form.materialName" disabled />
</el-form-item>
</el-col>
@ -584,7 +589,7 @@
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="首检日期" prop="checkTime">
<el-form-item label="首检时间" prop="checkTime">
<el-input v-model="form.checkTime" disabled>
{{ parseTime(form.checkTime, '{y}-{m}-{d} {h}:{i}:{s}') }}
</el-input>
@ -601,24 +606,24 @@
<el-row>
<el-col :span="24">
<!-- 检验项目明细 -->
<el-table v-loading="loading" :data="checkProjectList" >
<el-table-column type="selection" width="55" align="center" />
<el-table v-loading="loading" :data="checkProjectList" :span-method="objectSpanMethod" ><!---->
<el-table-column label="序号" align="center" type="index" width="50"/>
<el-table-column label="检验项目" align="left" prop="ruleName" width="150"/>
<el-table-column label="实际检验结果" align="center" prop="propertyCode" width="100">
<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="center" prop="propertyCode" width="100">
<template slot-scope="scope">
<dict-tag
:options="dict.type.qc_rule_prop"
:value="scope.row.propertyCode"
/>
</template>
</el-table-column>
<el-table-column label="测量值" align="center" prop="actualValue" width="100"/>
</el-table-column>-->
<el-table-column label="实际检测结果" align="center" prop="actualValue" width="250"/>
<el-table-column label="判定" align="center" prop="status" width="50"
:formatter="checkStatusFormate"
/>
<el-table-column label="检验描述" align="center" prop="remark" width="200">
</el-table-column>
<!--<el-table-column label="检验描述" align="center" prop="remark" width="200">-->
<el-table-column label="附件" align="center" prop="files" width="200">
<template slot-scope="scope">
<el-image v-for="(item,index) in scope.row.files" :key="index"
@ -770,7 +775,15 @@ export default {
/* incomeBatchNo: [
{ required: true, message: "来料批次号不能为空", trigger: "blur" }
], */
}
},
labelStyle: {
'min-width': '100px',
'word-break': 'keep-all'
},
rowList: [],
spanArr: [],
position: 0,
listData: [],
};
},
created() {
@ -993,6 +1006,7 @@ export default {
this.total = response.total;
this.loading = false;
this.standardNo = this.checkProjectList[0].standardNo;
this.rowspan()
});
},
// -
@ -1025,6 +1039,52 @@ export default {
}
},
/**
* 1. 若是objectSpanMethod不返回任何东西表格不会变化
* 2. 最外层的判断一般是先从第几列开始合并
* 3. 这次从第0行合并2个下次就要从第3行开始合并0行加俩就到3行了
* 4. 这种方式是有多少条数据合并多少条数据比如本案例中有7条数据从第0条合并到第7条
* 5. return { rowspan: 0, colspan: 0 } //
* */
rowspan() {
this.checkProjectList.forEach((item, index) => {
if (index === 0) {
this.spanArr.push(1);
this.position = 0;
} else {
if (
this.checkProjectList[index].projectRuleName ===
this.checkProjectList[index - 1].projectRuleName
) {
this.spanArr[this.position] += 1;
this.spanArr.push(0);
} else {
this.spanArr.push(1);
this.position = index;
}
}
});
},
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
/**
if (columnIndex === 0) {
const _row = this.spanArr[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col,
};
}
**/
if (columnIndex === 1) {
const _row = this.spanArr[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col,
};
}
},
}
};
</script>

@ -27,7 +27,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item v-if="form.startOA == '1'" label="来料类别" prop="materialType">
<el-form-item v-if="form.startOA == '1'&& form.checkType == 'checkTypeLL'" label="来料类别" prop="materialType">
<el-select v-model="form.materialType" placeholder="请选择检验规则属性" clearable>
<el-option
v-for="dict in dict.type.material_type_oa"
@ -41,7 +41,7 @@
</el-row>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item v-if="form.startOA == '1'" label="物料来源" prop="materialType">
<el-form-item v-if="form.startOA == '1'&& form.checkType == 'checkTypeLL'" label="物料来源" prop="materialType">
<el-select v-model="form.materialFrom" placeholder="请选择检验规则属性" clearable>
<el-option
v-for="dict in dict.type.material_from_oa"

@ -113,18 +113,17 @@
v-hasPermi="['quality:qcIncome:edit']"
>修改</el-button>
</el-col>
<!--
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
:disabled="single"
@click="handleDelete"
v-hasPermi="['quality:qcIncome:remove']"
>删除</el-button>
</el-col>-->
</el-col>
<el-col :span="1.5">
<el-button
type="warning"

@ -103,18 +103,17 @@
v-hasPermi="['quality:qcInventory:edit']"
>修改</el-button>
</el-col>
<!--
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
:disabled="single"
@click="handleDelete"
v-hasPermi="['quality:qcIncome:remove']"
>删除</el-button>
</el-col>-->
</el-col>
<el-col :span="1.5">
<el-button
type="warning"

@ -141,18 +141,18 @@
v-hasPermi="['quality:qcProduce:edit']"
>修改</el-button>
</el-col>
<!--
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
:disabled="single"
@click="handleDelete"
v-hasPermi="['quality:qcProduce:remove']"
>删除</el-button>
</el-col>-->
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
@ -758,6 +758,7 @@ export default {
this.form.quality = obj.quality;
this.form.unit = obj.unit;
this.form.incomeTime = obj.incomeTime;
this.form.checkLoc = obj.checkLocName;
getBatchList(obj.workorderCode).then(response => {
this.batchList = response;
});

@ -32,6 +32,7 @@
<el-table-column label="产品名称" align="left" prop="materialName" width="200"/>
<el-table-column label="排产数量" align="left" prop="quality" width="100" />
<el-table-column label="单位" align="left" prop="unit" width="80"/>
<el-table-column label="检验地点" align="left" prop="checkLocName" width="80"/>
<el-table-column label="生产日期" align="left" prop="incomeTime" width="100" >
<template slot-scope="scope">
<span>{{ parseTime(scope.row.incomeTime, '{y}-{m}-{d}') }}</span>

File diff suppressed because it is too large Load Diff

@ -1,6 +1,18 @@
<template>
<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="checkType">
<el-select v-model="queryParams.checkType" clearable placeholder="请选择检验节点">
<el-option
v-for="dict in checkTypes"
:key="dict.id"
:label="dict.checkName"
:value="dict.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="任务编号" prop="checkNo">
<el-input
v-model="queryParams.checkNo"
@ -43,7 +55,7 @@
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>-->
</el-form-item>
<el-form-item label="仓库名称" prop="supplierName">
<el-input
v-model="queryParams.supplierName"
@ -51,7 +63,7 @@
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-form-item>-->
<el-form-item label="入库时间" prop="incomeTimeArray">
<el-date-picker
v-model="queryParams.incomeTimeArray"
@ -131,7 +143,7 @@
v-hasPermi="['quality:qcWarehousing:edit']"
>修改</el-button>
</el-col>
<!-- <el-col :span="1.5">
<el-col :span="1.5">
<el-button
type="danger"
plain
@ -141,7 +153,7 @@
@click="handleDelete"
v-hasPermi="['quality:qcWarehousing:remove']"
>删除</el-button>
</el-col>-->
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
@ -166,15 +178,16 @@
}}</el-button>
</template>
</el-table-column>
<!--<el-table-column label="批次号" align="center" prop="incomeBatchNo" width="200" :show-overflow-tooltip="true"/>-->
<el-table-column label="订单号" align="center" prop="orderNo" width="130"/>
<el-table-column label="批次号" align="center" prop="incomeBatchNo" width="200" :show-overflow-tooltip="true"/>
<el-table-column label="检验节点" align="center" prop="checkName" />
<el-table-column label="物料号" align="center" prop="materialCode" width="170" />
<el-table-column label="物料名称" align="center" prop="materialName" width="250" :show-overflow-tooltip="true"/>
<el-table-column label="数量" align="center" prop="quality" />
<el-table-column label="单位" align="center" prop="unit" />
<el-table-column label="仓库编码" align="center" prop="supplierCode" width="120"/>
<el-table-column label="仓库名称" align="center" prop="supplierName" width="120"/>
<el-table-column label="入库时间" align="center" prop="incomeTime" width="180">
<el-table-column label="车间编码" align="center" prop="supplierCode" width="120"/>
<el-table-column label="车间名称" align="center" prop="supplierName" width="120"/>
<el-table-column label="任务时间" align="center" prop="incomeTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.incomeTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
@ -205,14 +218,6 @@
@click="handleCheckProject(scope.row)"
v-hasPermi="['quality:qcWarehousing:edit']"
>检验</el-button>
<!--
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['quality:qcWarehousing:remove']"
>删除</el-button>-->
</template>
</el-table-column>
</el-table>
@ -321,6 +326,7 @@
</el-select>
</el-form-item>
</el-col>
<!--
<el-col :span="8">
<el-form-item label="仓库名称" prop="supplierName">
<el-input v-model="form.supplierName" placeholder="请选择仓库名称">
@ -332,8 +338,19 @@
<el-form-item label="仓库编码" prop="supplierCode">
<el-input v-model="form.supplierCode" placeholder="请输入仓库编码" disabled/>
</el-form-item>
</el-col>-->
<el-col :span="8">
<el-form-item label="车间名称" prop="supplierName">
<el-input v-model="form.supplierName" placeholder="请输入所属车间名称" >
<el-button slot="append" @click="handleSelectWorkCenter" icon="el-icon-search"></el-button>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="车间编码" prop="supplierCode">
<el-input v-model="form.supplierCode" placeholder="请输入所属车间编码" disabled/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
@ -370,11 +387,16 @@
ref="itemSelectMaterial"
@onSelected="onSelectMaterial"
></ItemSelectMaterial>
<!--仓库选择弹窗-->
<!--仓库选择弹窗
<ItemSelectLoc
ref="itemSelectLoc"
@onSelected="onSelectLoc"
></ItemSelectLoc>
></ItemSelectLoc>-->
<!--工作中心(车间)选择弹窗-->
<ItemSelectWorkCenter
ref="itemSelectWorkCenter"
@onSelected="onSelectWorkCenter"
></ItemSelectWorkCenter>
<!--人员选择弹窗-->
<ItemSelectUser
ref="itemSelectUser"
@ -392,16 +414,18 @@
import { listWarehousing, getWarehousing, delWarehousing, addWarehousing, updateWarehousing } from "@/api/quality/warehousing";
import { getBatchList} from "@/api/quality/qcProduce";
import { getCheckTypes } from "@/api/quality/qcProduce";
import ItemSelectWorkOrder from "./selectProductWorkOrder.vue";
//import ItemSelectWorkOrder from "./selectProductWorkOrder.vue";
import ItemSelectWorkOrder from "../qcProduce/selectWorkOrder.vue";
import ItemSelectWorkCenter from "../qcProduce/selectWorkCenter";
import ItemSelectMaterial from "../qcIncome/selectMaterial.vue";
import ItemSelectLoc from "./selectLoc.vue";
//import ItemSelectLoc from "./selectLoc.vue";
import ItemSelectUser from "../qcIncome/selectUser.vue";
import ItemSelectProject from "../qcIncome/checkProjectType.vue";
import moment from 'moment';
import { getDefectTypeListByDefectType } from "@/api/quality/defectType.js";
export default {
name: "Warehousing",
components: { ItemSelectMaterial,ItemSelectLoc,ItemSelectUser,ItemSelectProject,ItemSelectWorkOrder},
components: { ItemSelectMaterial,ItemSelectWorkCenter,ItemSelectUser,ItemSelectProject,ItemSelectWorkOrder},
dicts: ["unit","check_status","check_result"],
data() {
return {
@ -476,9 +500,9 @@ export default {
incomeTime: [
{ required: true, message: "入库时间不能为空", trigger: "blur" }
],
checkManName: [
{ required: true, message: "检测人不能为空", trigger: "blur" }
],
//checkManName: [
// { required: true, message: "", trigger: "blur" }
//],
checkLoc: [
{ required: true, message: "检测地点不能为空", trigger: "blur" }
]
@ -677,6 +701,7 @@ export default {
this.form.quality = obj.quality;
this.form.unit = obj.unit;
this.form.incomeTime = obj.incomeTime;
this.form.checkLoc = obj.checkLocName;
getBatchList(obj.workorderCode).then(response => {
this.batchList = response;
});
@ -691,6 +716,16 @@ export default {
this.form.materialName = obj.name;
},
/**工作中心选择弹出框**/
handleSelectWorkCenter() {
this.$refs.itemSelectWorkCenter.showFlag = true;
},
//
onSelectWorkCenter(obj) {
this.form.supplierCode = obj.code;
this.form.supplierName = obj.name;
},
/**仓库选择弹出框**/
handleSelectLoc() {
this.$refs.itemSelectLoc.showFlag = true;

@ -33,7 +33,29 @@
</div>
</el-dialog>
<el-dialog :title="teamTitle" :visible.sync="teamOpen" width="800px" append-to-body>
<el-dialog :title="teamTitle" :visible.sync="teamOpen" width="1000px" append-to-body>
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="班组编码" prop="teamCode">
<el-input
v-model="queryParams.teamCode"
placeholder="请输入班组编码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="班组名称" prop="teamDesc">
<el-input
v-model="queryParams.teamDesc"
placeholder="请输入班组名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-table :data="teamList" v-loading="teamLoading" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column type="index" label="序号" align="center" width="50"/>
@ -49,6 +71,13 @@
<el-table-column label="创建人" align="center" prop="createBy" />
<el-table-column label="创建时间" align="center" prop="createDate" />
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getTeamList"
/>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleBindTeam"> </el-button>
<el-button @click="cancel"> </el-button>
@ -93,6 +122,8 @@ export default {
open: false,
//
queryParams: {
teamCode:null,
teamDesc:null,
pageNum: 1,
pageSize: 10,
noticeId: null,
@ -116,8 +147,11 @@ export default {
},
//
getTeamList(){
listTeam().then(response => {
this.teamLoading = true;
listTeam(this.queryParams).then(response => {
this.teamList = response.rows;
this.total = response.total;
this.teamLoading = false;
});
},
cancel() {
@ -143,14 +177,29 @@ export default {
//
handleAdd() {
this.teamLoading = true;
listTeam().then(response => {
listTeam(this.queryParams).then(response => {
this.teamList = response.rows;
this.total = response.total;
this.teamOpen = true;
this.teamTitle = "添加班组";
this.teamLoading = false;
});
},
handleQuery() {
this.queryParams.pageNum = 1;
this.teamLoading = true;
listTeam(this.queryParams).then(response => {
this.teamList = response.rows;
this.total = response.total;
this.teamLoading = false;
});
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleBindTeam() {
const groupCodes = this.ids

@ -315,7 +315,7 @@
width="100"
/>
<el-table-column
label="标准产能(时)"
label="标准工时(时)"
align="center"
prop="unitWorkingHours"
width="100"
@ -566,7 +566,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="标准产能(时)" prop="unitWorkingHours">
<el-form-item label="标准工时" prop="unitWorkingHours">
<el-input-number
:min="0"
:step="1"
@ -939,7 +939,7 @@
<el-descriptions-item label="工段">{{
form.workshopSection
}}</el-descriptions-item>
<el-descriptions-item label="标准产能(时)">{{
<el-descriptions-item label="标准工时">{{
form.unitWorkingHours
}}</el-descriptions-item>
<el-descriptions-item label="工时单价">{{

@ -71,7 +71,7 @@
:disabled="single"
@click="handleUpdateAttached"
v-hasPermi="['wms:attached:edit']"
>新增/修改附属属性</el-button
>附属属性</el-button
>
</el-col>
<el-col :span="1.5">

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save