parent
1d7602c927
commit
c1f5b304f0
@ -0,0 +1,28 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 查询工单列表
|
||||
export function listWorkorder(query) {
|
||||
return request({
|
||||
url: '/secure/wocheck/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 查询包活工单
|
||||
export function getBaohuos(query) {
|
||||
return request({
|
||||
url: '/pay/wocheck/getbaohuo',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 查询帮工工单
|
||||
export function getBanggong(query) {
|
||||
return request({
|
||||
url: '/pay/wocheck/getbanggong',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
@ -0,0 +1,573 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
|
||||
<div class="company" v-if="!$store.state.user.tenantId">
|
||||
<el-input
|
||||
style="width: 200px"
|
||||
placeholder="公司名称"
|
||||
size="small"
|
||||
prefix-icon="el-icon-search"
|
||||
v-model="gsInfo.tenantName"
|
||||
@keyup.enter.native="getGsInfoList">
|
||||
</el-input>
|
||||
<div class="cp-content" style="width: 200px">
|
||||
<div :class="gsInfo.active_id===item.id?'cp-item active':'cp-item'" @click="changCompany(item.id)" v-for="item in gsInfo.list">{{ item.name }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div :class="$store.state.user.tenantId?'content-all':'content'">
|
||||
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px">
|
||||
<el-form-item label="员工姓名" prop="empName">
|
||||
<el-input v-model="queryParams.empName" placeholder="请输入员工姓名"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="工单月份" prop="date">
|
||||
<el-date-picker clearable
|
||||
v-model="queryParams.date"
|
||||
type="month"
|
||||
value-format="yyyy-MM"
|
||||
placeholder="请选择工单月份">
|
||||
</el-date-picker>
|
||||
</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 class="mb8">
|
||||
<el-col :span="24">
|
||||
<span style="font-weight: bold">包活工资</span>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-table v-loading="loading" :data="bhgongziList">
|
||||
<el-table-column label="工单ID" align="center" prop="woId" />
|
||||
<el-table-column label="工资" align="center" prop="amount" />
|
||||
<el-table-column label="入库日期" align="center" prop="intime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.intime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleSerch(scope.row)"
|
||||
>工单查询</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 包活派工单详情对话框 -->
|
||||
<el-dialog class="my-dialog" :title="title" :visible.sync="open" width="1250px" append-to-body :close-on-click-modal="false">
|
||||
<el-form ref="form" :model="form" label-width="100px">
|
||||
<el-card class="panel-group-top">
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="部门" prop="deptId">
|
||||
<treeselect class="depselect" v-model="form.deptId" :options="deptOptions" :show-count="true" :disabled="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="车间" prop="workshop">
|
||||
<el-select v-model="form.workshop" :disabled="true">
|
||||
<el-option
|
||||
v-for="dict in dict.type.sgr_workshop"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="工单名称" prop="name">
|
||||
<el-input v-model="form.name" placeholder="请输入包活工单名称" :disabled="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="工作内容">
|
||||
<el-input
|
||||
type="textarea"
|
||||
:rows="2"
|
||||
placeholder="请输入工作内容"
|
||||
v-model="form.content"
|
||||
:disabled="true">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="质检人员" prop="qualityName">
|
||||
<el-input v-model="form.qualityName" placeholder="请输入质检人员" :disabled="true"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="检验说明" prop="qualityRemark">
|
||||
<el-input v-model="form.qualityRemark" type="textarea" placeholder="请输入内容" :disabled="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="入库时间" prop="instorageTime">
|
||||
<el-date-picker clearable
|
||||
v-model="form.instorageTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择入库日期"
|
||||
:disabled="true">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="入库人员" prop="instorageName">
|
||||
<el-input v-model="form.instorageName" placeholder="请输入入库人员" :disabled="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="实际入库数量" prop="instorageNum">
|
||||
<el-input-number v-model="form.instorageNum" :min="0" :max="10000" :disabled="true" ></el-input-number>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目经理" prop="managerName">
|
||||
<el-input v-model="form.managerName" placeholder="请输入项目经理" :disabled="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
<el-card class="panel-group-top" style="margin-top: 10px;">
|
||||
<el-row v-for="(emp, index) in form.empList" :key="emp.key">
|
||||
<el-col :span="1.5">
|
||||
<el-form-item label="员工姓名" :prop="'empList.' + index + '.empName'">
|
||||
<el-input v-model="emp.empName" :disabled="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-form-item label="是否帮工" :prop="'empList.' + index + '.helper'">
|
||||
<template>
|
||||
<el-radio v-model="emp.helper" :label=0 :disabled="true">否</el-radio>
|
||||
<el-radio v-model="emp.helper" :label=1 :disabled="true">是</el-radio>
|
||||
</template>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
<el-card class="panel-group-top" style="margin-top: 10px;">
|
||||
<el-row v-for="(pro, index) in form.prodList" :key="pro.key">
|
||||
<el-col :span="1.5">
|
||||
<el-form-item label="产品名称" :prop="'prodList.' + index + '.productName'">
|
||||
<el-input v-model="pro.productName" :disabled="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-form-item label="产品价格">
|
||||
<span style="color: red">
|
||||
{{pro.minPrice !== null ? pro.minPrice+'元 - '+ pro.maxPrice+ '元' : null}}
|
||||
</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-form-item label="产品规格">
|
||||
<el-input v-model="pro.productSpecification" placeholder="请输入产品规格" :disabled="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-form-item label="工序">
|
||||
<el-input v-model="pro.process" placeholder="请输入工序" :disabled="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-form-item label="加工数量" :prop="'prodList.' + index + '.productNum'">
|
||||
<el-input v-model="pro.productNum" :disabled="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-form-item label="原材料">
|
||||
<el-input v-model="pro.productMaterial" placeholder="请输入原材料" :disabled="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-form-item label="单位" :prop="'prodList.' + index + '.unit'">
|
||||
<el-input v-model="pro.unit" :disabled="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-form-item label="单价" :prop="'prodList.' + index + '.price'">
|
||||
<el-input v-model="pro.price" style="width: 145px;" :disabled="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-form-item label="总金额" :prop="'prodList.' + index + '.amount'">
|
||||
<el-input v-model="pro.amount" style="width: 145px;" :disabled="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
<el-card class="panel-group-top" style="margin-top: 10px;">
|
||||
<el-row v-for="(work, index) in form.worktimeList" :key="work.key">
|
||||
<el-col :span="1.5">
|
||||
<el-form-item
|
||||
label="干活日期"
|
||||
:prop="'worktimeList.' + index + '.date'">
|
||||
<el-date-picker
|
||||
v-model="work.date"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="选择干活日期" style="width: 145px;"
|
||||
:disabled="true">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-form-item
|
||||
label="开始时间"
|
||||
:prop="'worktimeList.' + index + '.beginTime'">
|
||||
<el-time-picker v-model="work.beginTime" placeholder="开始时间" value-format="HH:mm" format="HH:mm" style="width: 145px;" :disabled="true"></el-time-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-form-item
|
||||
label="结束时间"
|
||||
:prop="'worktimeList.' + index + '.endTime'">
|
||||
<el-time-picker v-model="work.endTime" value-format="HH:mm" format="HH:mm" placeholder="结束时间" style="width: 145px;" :disabled="true"></el-time-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-form-item
|
||||
label="有效时长"
|
||||
:prop="'worktimeList.' + index + '.validHours'">
|
||||
<el-input v-model="work.validHours" placeholder="请输入有效工作时长" :disabled="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
<el-card class="panel-group-top" style="margin-top: 10px;">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input
|
||||
type="textarea"
|
||||
:rows="2"
|
||||
placeholder="请输入备注"
|
||||
v-model="form.remark"
|
||||
:disabled="true">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="cancel">确 定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-row class="mb8">
|
||||
<el-col :span="24">
|
||||
<span style="font-weight: bold">包活时长</span>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-table v-loading="loading" :data="baohuoList">
|
||||
<el-table-column label="工单ID" align="center" prop="woId" />
|
||||
<el-table-column label="有效时长" align="center" prop="validHours" />
|
||||
<el-table-column label="入库日期" align="center" prop="intime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.intime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="工作日期" align="center" prop="date" />
|
||||
</el-table>
|
||||
|
||||
<el-row class="mb8">
|
||||
<el-col :span="24">
|
||||
<span style="font-weight: bold">包活帮工</span>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-table v-loading="loading" :data="bhhelpList">
|
||||
<el-table-column label="工单ID" align="center" prop="woId" />
|
||||
<el-table-column label="帮工工资" align="center" prop="amount" />
|
||||
<el-table-column label="入库日期" align="center" prop="intime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.intime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<el-row class="mb8">
|
||||
<el-col :span="24">
|
||||
<span style="font-weight: bold">日工帮工</span>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-table v-loading="loading" :data="rghelpList">
|
||||
<el-table-column label="帮工时长" align="center" prop="hours" />
|
||||
<el-table-column label="开始时间" align="center" prop="startTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.startTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="结束时间" align="center" prop="endTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.endTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getBaohuos, getBanggong } from "@/api/pay/wocheck";
|
||||
import { listProducts } from "@/api/pay/products";
|
||||
import { getWorkOrderBaohuo } from "@/api/pay/workOrderBaohuo";
|
||||
import { deptTreeSelect } from "@/api/system/user";
|
||||
import Treeselect from "@riophae/vue-treeselect";
|
||||
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
|
||||
import { listTenant } from "@/api/pay/tenant";
|
||||
|
||||
export default {
|
||||
name: "wocheck",
|
||||
dicts: ['sgr_workshop'],
|
||||
components: { Treeselect },
|
||||
data() {
|
||||
return {
|
||||
// 公司信息
|
||||
gsInfo:{
|
||||
tenantName:'',
|
||||
active_id:this.$store.state.user.tenantId,
|
||||
list:[]
|
||||
},
|
||||
// 遮罩层
|
||||
loading: false,
|
||||
open: false,
|
||||
title: '',
|
||||
deptOptions: [],
|
||||
queryParams: {
|
||||
empName: null,
|
||||
date: null
|
||||
},
|
||||
baohuoList: [],
|
||||
bhgongziList: [],
|
||||
prods: [],
|
||||
form: {},
|
||||
bhhelpList: [],
|
||||
rghelpList: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
if (!this.$store.state.user.tenantId) {
|
||||
this.getGsInfoList()
|
||||
}else {
|
||||
this.gsInfo.active_id = this.$store.state.user.tenantId;
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 获取左侧公司列表
|
||||
getGsInfoList(){
|
||||
listTenant({ name: this.gsInfo.tenantName }).then(response => {
|
||||
if(response.rows.length>0){
|
||||
this.gsInfo.list = response.rows;
|
||||
this.gsInfo.active_id = this.gsInfo.list[0].id
|
||||
}else{
|
||||
this.$alert(`没有查到相关公司,暂无数据!`, `提示`, {
|
||||
type: 'warning'
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
// 选择公司
|
||||
changCompany(id){
|
||||
this.gsInfo.active_id = id
|
||||
this.bhgongziList=[];
|
||||
this.baohuoList=[];
|
||||
this.bhhelpList=[];
|
||||
this.rghelpList=[];
|
||||
},
|
||||
/** 查询工单列表 */
|
||||
getList() {
|
||||
this.loading = true;
|
||||
this.queryParams.tenantId = this.gsInfo.active_id;
|
||||
getBaohuos(this.queryParams).then(response => {
|
||||
this.baohuoList = response.bhtimes;
|
||||
this.bhgongziList = response.bhEmployees;
|
||||
this.loading = false;
|
||||
})
|
||||
},
|
||||
getBgList() {
|
||||
getBanggong(this.queryParams).then(response => {
|
||||
this.bhhelpList = response.bhHelper;
|
||||
this.rghelpList = response.rigongHelper;
|
||||
})
|
||||
},
|
||||
/** 查询部门下拉树结构 */
|
||||
getTreeselect() {
|
||||
deptTreeSelect().then(response => {
|
||||
this.deptOptions = response.data;
|
||||
});
|
||||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
if (!this.isEmpty(this.queryParams.empName) && !this.isEmpty(this.queryParams.date)) {
|
||||
this.getList();
|
||||
this.getBgList();
|
||||
} else {
|
||||
this.$modal.msgSuccess("请选择员工和月份");
|
||||
}
|
||||
},
|
||||
// 判断字符是否为空的方法
|
||||
isEmpty(obj){
|
||||
if(typeof obj == "undefined" || obj == null || obj == "" || obj.length ==0){
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
},
|
||||
// 表单重置
|
||||
reset() {
|
||||
this.form = {
|
||||
id: null,
|
||||
archiveId: null,
|
||||
name: null,
|
||||
deptId: null,
|
||||
deptName: null,
|
||||
workshop: null,
|
||||
content: null,
|
||||
qualityName: null,
|
||||
qualityRemark: null,
|
||||
instorageTime: null,
|
||||
instorageName: null,
|
||||
instorageNum: null,
|
||||
managerName: null,
|
||||
deleted: null,
|
||||
createBy: null,
|
||||
createTime: null,
|
||||
updateBy: null,
|
||||
updateTime: null,
|
||||
remark: null,
|
||||
empList: [{
|
||||
empId: null,
|
||||
deptId: null,
|
||||
empName: null,
|
||||
helper: 0
|
||||
}],
|
||||
prodList: [{
|
||||
productId: null,
|
||||
productName: null,
|
||||
productNum: null,
|
||||
price: null,
|
||||
minPrice: null,
|
||||
maxPrice: null,
|
||||
amount: null,
|
||||
unit: null,
|
||||
productSpecification: null,
|
||||
process: null,
|
||||
productMaterial: null,
|
||||
unit: null,
|
||||
process: null
|
||||
}],
|
||||
worktimeList: [{
|
||||
date: null,
|
||||
beginTime: null,
|
||||
stime: null,
|
||||
endTime: null,
|
||||
etime: null,
|
||||
validHours: null
|
||||
}]
|
||||
};
|
||||
this.resetForm("form");
|
||||
},
|
||||
handleSerch(row) {
|
||||
console.log(row)
|
||||
this.reset();
|
||||
this.loadProdList();
|
||||
this.getTreeselect();
|
||||
const id = row.woId;
|
||||
getWorkOrderBaohuo(id).then(response => {
|
||||
this.form = response.data;
|
||||
this.form.worktimeList.forEach(item => {
|
||||
var sh = new Date(item.stime).getHours();
|
||||
sh = sh < 10 ? sh : sh;
|
||||
var sminute = new Date(item.stime).getMinutes();
|
||||
sminute = sminute < 10 ? '0' + sminute : sminute;
|
||||
var xh = new Date(item.etime).getHours();
|
||||
xh = xh < 10 ? xh : xh;
|
||||
var xminute = new Date(item.etime).getMinutes();
|
||||
xminute = xminute < 10 ? '0' + xminute : xminute;
|
||||
this.$set(item,"beginTime",sh+":"+sminute);
|
||||
this.$set(item,"endTime",xh+":"+xminute);
|
||||
});
|
||||
this.open = true;
|
||||
this.title = "包活派工单详情";
|
||||
});
|
||||
},
|
||||
/** 加载产品名称列表 */
|
||||
loadProdList() {
|
||||
listProducts().then(res => {
|
||||
this.prods = res.data;
|
||||
});
|
||||
},
|
||||
// 取消按钮
|
||||
cancel() {
|
||||
this.open = false;
|
||||
this.reset();
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
::v-deep .el-dialog__header {
|
||||
border-bottom: 1px solid #e5e7eb;
|
||||
}
|
||||
::v-deep .el-dialog__title {
|
||||
font-size: 15px;
|
||||
}
|
||||
::v-deep .el-dialog__body {
|
||||
border-bottom: 1px solid #e5e7eb;
|
||||
}
|
||||
|
||||
.app-container {
|
||||
display: flex;
|
||||
.company {
|
||||
border-radius: 5px;
|
||||
width: 230px;
|
||||
height: calc(100vh - 115px);
|
||||
overflow-y: auto;
|
||||
.cp-content {
|
||||
margin-top: 20px;
|
||||
.cp-item {
|
||||
cursor: pointer;
|
||||
padding: 6px 10px 6px 5px;
|
||||
color: #424242;
|
||||
font-size: 14px;
|
||||
&:hover {
|
||||
background: #f6f6f6;
|
||||
}
|
||||
}
|
||||
.active{
|
||||
background: #edf6ff;
|
||||
}
|
||||
}
|
||||
}
|
||||
.content{
|
||||
padding-left: 15px;
|
||||
width: calc(100% - 250px);
|
||||
.el-button--medium {
|
||||
padding: 2px 0px;
|
||||
}
|
||||
}
|
||||
.content-all{
|
||||
width: 100%;
|
||||
.el-button--medium {
|
||||
padding: 2px 0px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
Loading…
Reference in new issue