This commit is contained in:
TianyangZhang 2025-12-22 13:57:06 +08:00
commit 836d3009b8
15 changed files with 785 additions and 59 deletions

View File

@ -3,9 +3,41 @@ import http from "@/utils/request"
export default {
// 固定资产
assetcate: {
list: {
req: async function(data){
return await http.get(
`${config.API_URL}/asm/assetcate/`,
data
);
}
},
item: {
req: async function(id){
return await http.get(
`${config.API_URL}/asm/assetcate/${id}/`,
);
}
},
create: {
name: "新增",
req: async function(data){
return await http.post(
`${config.API_URL}/asm/assetcate/`,
data);
}
},
delete: {
name: "删除",
req: async function(id){
return await http.delete(
`${config.API_URL}/asm/assetcate/${id}/`
);
}
},
},
asset: {
list: {
name: "供应商审核",
req: async function(data){
return await http.get(
`${config.API_URL}/asm/asset/`,
@ -16,7 +48,24 @@ export default {
item: {
req: async function(id){
return await http.get(
`${config.API_URL}asm/asset/${id}/`,
`${config.API_URL}/asm/asset/${id}/`,
);
}
},
},
assetlog: {
list: {
req: async function(data){
return await http.get(
`${config.API_URL}/asm/assetlog/`,
data
);
}
},
item: {
req: async function(id){
return await http.get(
`${config.API_URL}/asm/assetlog/${id}/`,
);
}
},
@ -24,7 +73,7 @@ export default {
name: "新增",
req: async function(data){
return await http.post(
`${config.API_URL}/asm/asset/`,
`${config.API_URL}/asm/assetlog/`,
data);
}
},
@ -32,9 +81,9 @@ export default {
name: "删除",
req: async function(id){
return await http.delete(
`${config.API_URL}/asm/asset/${id}/`
`${config.API_URL}/asm/assetlog/${id}/`
);
}
},
},
}
};

View File

@ -89,7 +89,7 @@ const props = defineProps({
options: { type: Array, default: null },
});
const emit = defineEmits(["update:modelValue", "update:obj", "update:label", "change"]);
const emit = defineEmits(["update:modelValue", "update:obj", "change"]);
const selectable = (row) => row.count_canhandover?row.count_canhandover>0:true;
// popover
const showPopover = ref(false);
@ -189,8 +189,8 @@ const rowClick = (row) => {
selectLabel.value = row[props.labelField];
selectValue.value = row[props.valueField];
showPopover.value = false;
emit("change", row);
}
emit("change");
};
const handleClear = () => {
@ -202,8 +202,7 @@ const handleClear = () => {
selectLabel.value = "";
selectValue.value = null;
}
emit("update:label", "");
emit("change");
emit("change", props.multiple ? [] : null);
};
const tdChange = (res, tableData) => {
@ -219,8 +218,7 @@ const selectionChange = (val) => {
selectLabel.value = val
.map((item) => item[props.labelField])
.join(props.splitField);
}
emit("update:label", val);
emit("change");
emit("change", val);
}
};
</script>

62
src/views/asm/asset.vue Normal file
View File

@ -0,0 +1,62 @@
<template>
<el-container>
<el-header>
<div class="left-panel">
<!-- <el-button type="primary" @click="handleAdd">新增</el-button> -->
</div>
<div class="right-panel">
<el-input
v-model="query.search"
placeholder="关键词"
clearable
@keyup.enter="$refs.table.refresh()"
></el-input>
<el-button
type="primary"
icon="el-icon-search"
@click="handleQuery"
></el-button>
</div>
</el-header>
<el-main class="nopadding">
<scTable
ref="table"
:apiObj="API.asm.asset.list"
row-key="id"
stripe
:query="query"
@row-click="(row)=>{t_id=row.id;mode='show';drawerVisible=true;}"
>
<el-table-column label="卡片编号" prop="card_number" width="200" show-overflow-tooltip></el-table-column>
<el-table-column label="固定资产名称" prop="name" width="200" show-overflow-tooltip></el-table-column>
<el-table-column label="规格型号" prop="specification" width="200" show-overflow-tooltip></el-table-column>
<el-table-column label="资产类别" prop="cate_name" width="100" show-overflow-tooltip></el-table-column>
<el-table-column label="使用状态" prop="state" width="100" show-overflow-tooltip></el-table-column>
<el-table-column label="数量" prop="quantity" width="100" show-overflow-tooltip></el-table-column>
<el-table-column label="计量单位" prop="unit" width="100" show-overflow-tooltip></el-table-column>
<el-table-column label="启用日期" prop="start_date" width="100" show-overflow-tooltip></el-table-column>
<el-table-column label="保管部门" prop="keep_dept_name" width="120" show-overflow-tooltip></el-table-column>
<el-table-column label="保管人" prop="keeper_name" width="100" show-overflow-tooltip></el-table-column>
<el-table-column label="存放地点" prop="location" show-overflow-tooltip></el-table-column>
</scTable>
</el-main>
</el-container>
<!-- <el-drawer title="固定资产分类" v-model="drawerVisible" :size="'80%'" destroy-on-close>
<assetcate-form :mode="mode" :t_id="t_id" @success="drawerVisible=false;$refs.table.refresh()"></assetcate-form>
</el-drawer> -->
</template>
<script setup>
import { ref } from 'vue'
import API from '@/api'
// import assetcateForm from './assetcate_form.vue'
import { actStateEnum, interveneTypeEnum } from "@/utils/enum.js";
const query = ref({});
const drawerVisible = ref(false);
const mode = ref('add');
const t_id = ref(null);
const handleAdd = () => {
mode.value = 'add';
drawerVisible.value = true;
}
</script>

View File

@ -0,0 +1,55 @@
<template>
<el-container>
<el-header>
<div class="left-panel">
<el-button type="primary" @click="handleAdd">新增</el-button>
</div>
<div class="right-panel">
<el-input
v-model="query.search"
placeholder="关键词"
clearable
@keyup.enter="$refs.table.refresh()"
></el-input>
<el-button
type="primary"
icon="el-icon-search"
@click="handleQuery"
></el-button>
</div>
</el-header>
<el-main class="nopadding">
<scTable
ref="table"
:apiObj="API.asm.assetcate.list"
row-key="id"
stripe
:query="query"
@row-click="(row)=>{t_id=row.id;mode='show';drawerVisible=true;}"
>
<el-table-column label="类别名称" prop="name" show-overflow-tooltip></el-table-column>`
<el-table-column label="类别编码" prop="code" width="200" show-overflow-tooltip></el-table-column>
<el-table-column label="默认单位" prop="default_unit" width="200" show-overflow-tooltip></el-table-column>
<el-table-column label="创建时间" prop="create_time" width="220" show-overflow-tooltip></el-table-column>
</scTable>
</el-main>
</el-container>
<el-drawer title="固定资产分类" v-model="drawerVisible" :size="'80%'" destroy-on-close>
<assetcate-form :mode="mode" :t_id="t_id" @success="drawerVisible=false;$refs.table.refresh()"></assetcate-form>
</el-drawer>
</template>
<script setup>
import { ref } from 'vue'
import API from '@/api'
import assetcateForm from './assetcate_form.vue'
import { actStateEnum, interveneTypeEnum } from "@/utils/enum.js";
const query = ref({});
const drawerVisible = ref(false);
const mode = ref('add');
const t_id = ref(null);
const handleAdd = () => {
mode.value = 'add';
drawerVisible.value = true;
}
</script>

View File

@ -0,0 +1,113 @@
<template>
<el-container>
<el-main class="nopadding">
<el-form label-width="80px" :model="formData" style="padding: 20px;">
<el-form-item label="类别名称" required>
<el-input
v-model="formData.name"
:readonly="localMode === 'show'"
></el-input>
</el-form-item>
<el-form-item label="类别编码" required>
<el-input
v-model="formData.code"
:readonly="localMode === 'show'"
></el-input>
</el-form-item>
<el-form-item label="默认单位" required>
<el-input
v-model="formData.default_unit"
:readonly="localMode === 'show'"
></el-input>
</el-form-item>
</el-form>
<el-footer>
<el-button type="danger"
v-if="localMode=='edit'"
style="margin-right: 4px;"
@click="handleDel"
:loading="saveLoading"
>删除</el-button>
<el-button
v-else
type="primary"
style="margin-right: 4px;"
@click="handleSave"
:loading="saveLoading"
>保存</el-button>
</el-footer>
</el-main>
</el-container>
</template>
<script>
export default {
name: 'AssetcateForm',
components: {
},
props: {
mode: {
type: String,
default: 'show'
},
t_id: {
type: String,
default: ""
}
},
data() {
return {
formData: {
},
localMode: this.mode,
saveLoading: false
}
},
mounted() {
if (this.t_id) {
this.getTid();
} else {
this.initFormData();
}
},
methods: {
async initFormData() {
},
async getTid() {
try {
let res = await this.$API.asm.assetcate.item.req(this.t_id);
this.formData = res;
} catch (error) {
console.error('获取数据失败:', error);
}
},
handleDel() {
this.$confirm(`确定删除吗?`, "提示", {
type: "warning",
})
.then(()=>{
this.$API.asm.assetcate.delete.req(this.formData.id).then(res=>{
this.$message.success("删除成功");
this.$emit('success');
})
})
},
async handleSave() {
if (this.localMode == "add") {
try {
let res = await this.$API.asm.assetcate.create.req(this.formData);
this.$message.success("提交成功");
this.$emit('success', this.localMode);
} catch (error) {
console.error('提交失败:', error);
throw error;
}
} else if (this.localMode == "edit") {
this.$message.error("不支持编辑");
}
}
}
}
</script>

View File

@ -0,0 +1,59 @@
<template>
<el-container>
<el-header>
<div class="left-panel"></div>
<div class="right-panel">
<!-- <el-button type="primary" @click="handleAdd">新增</el-button> -->
<el-input
v-model="query.search"
placeholder="设备信息等"
clearable
@keyup.enter="$refs.table.refresh()"
></el-input>
<el-button
type="primary"
icon="el-icon-search"
@click="handleQuery"
></el-button>
</div>
</el-header>
<el-main class="nopadding">
<scTable
ref="table"
:apiObj="API.em.repair.list"
row-key="id"
stripe
:query="query"
@row-click="(row)=>{t_id=row.id;mode='show';drawerVisible=true;}"
>
<el-table-column label="设备" prop="equipment_fullname" width="300" show-overflow-tooltip></el-table-column>
<el-table-column label="流程状态" width="300" show-overflow-tooltip>
<template #default="scope">
<el-tag :type="actStateEnum[scope.row.ticket_?.act_state]?.type">
{{ actStateEnum[scope.row.ticket_?.act_state]?.text }}
</el-tag>
<el-tag type="info" effect="plain">{{ scope.row.ticket_?.state_.name }}</el-tag>
</template>
</el-table-column>`
<el-table-column label="故障类别" prop="fault_cate" width="100" show-overflow-tooltip></el-table-column>`
<el-table-column label="故障描述" prop="fault_description" show-overflow-tooltip></el-table-column>
<el-table-column label="维修人" prop="repair_user_name" width="100" show-overflow-tooltip></el-table-column>
<el-table-column label="维修开始时间" prop="repair_start_time" width="200" show-overflow-tooltip></el-table-column>
</scTable>
</el-main>
</el-container>
</template>
<script setup>
import { ref } from 'vue'
import API from '@/api'
import { actStateEnum, interveneTypeEnum } from "@/utils/enum.js";
const query = ref({});
const drawerVisible = ref(false);
const mode = ref('add');
const t_id = ref(null);
const handleAdd = () => {
mode.value = 'add';
drawerVisible.value = true;
}
</script>

View File

@ -0,0 +1,189 @@
<template>
<el-container>
<el-main class="nopadding">
<el-form label-width="110px" :model="formData" style="padding: 20px;">
<el-form-item label="创建时间" v-if="localMode !== 'add'">
{{ formData.create_time }}
</el-form-item>
<el-form-item label="保管部门" required>
<xtSelect
v-model="formData.keep_dept"
style="width: 100%;"
:apiObj = "$API.system.dept.list"
v-model:label="formData.keep_dept_name"
:edit="localMode === 'add'"
>
<el-table-column prop="name" label="部门名称"></el-table-column>
</xtSelect>
</el-form-item>
<el-form-item label="启用日期" required>
<el-date-picker
v-model="formData.start_date"
type="date"
placeholder="请选择启用日期"
value-format="YYYY-MM-DD"
:disabled="localMode !== 'add'"
></el-date-picker>
</el-form-item>
<el-form-item label="入库明细" required>
<sc-form-table
v-model="formData.items"
:addTemplate="addTemplate"
placeholder="暂无数据"
>
<el-table-column prop="name" label="资产类别" width="180">
<template #default="scope">
<xtSelect :apiObj="$API.asm.assetcate.list" v-model="scope.row.cate">
<el-table-column prop="name"></el-table-column>
</xtSelect>
</template>
</el-table-column>
<el-table-column prop="name" label="资产名称" width="180">
<template #default="scope">
<el-input v-model="scope.row.name"></el-input>
</template>
</el-table-column>
<el-table-column prop="specification" label="规格型号" width="180">
<template #default="scope">
<el-input v-model="scope.row.specification"></el-input>
</template>
</el-table-column>
<el-table-column prop="quantity" label="数量" width="180">
<template #default="scope">
<el-input-number v-model="scope.row.quantity" :min="1" :precision="0" controls-position="right"></el-input-number>
</template>
</el-table-column>
<el-table-column prop="canuse_year" label="可用年限" width="180">
<template #default="scope">
<el-input-number v-model="scope.row.canuse_year" :min="1" :precision="0" controls-position="right"></el-input-number>
</template>
</el-table-column>
<el-table-column prop="original_value" label="资产原值" width="180">
<template #default="scope">
<el-input-number v-model="scope.row.original_value" :min="1" :precision="2" controls-position="right"></el-input-number>
</template>
</el-table-column>
<el-table-column prop="supplier" label="供应商" width="180">
<template #default="scope">
<el-input v-model="scope.row.supplier"></el-input>
</template>
</el-table-column>
<el-table-column prop="location" label="存放地点">
<template #default="scope">
<el-input v-model="scope.row.location"></el-input>
</template>
</el-table-column>
</sc-form-table>
</el-form-item>
</el-form>
<el-footer>
<el-button type="danger"
v-if="localMode=='edit'"
style="margin-right: 4px;"
@click="handleDel"
:loading="saveLoading"
>删除</el-button>
<ticketd_b
v-if = "formData.ticket_"
:t_id="formData.id"
:ticket_="formData.ticket_"
:ticket_data="ticket_data"
@success="$emit('success', localMode)"
ref="ticketd_b"
></ticketd_b>
<el-button
v-else
type="primary"
style="margin-right: 4px;"
@click="handleSave"
:loading="saveLoading"
>提交审批</el-button>
</el-footer>
</el-main>
<el-aside width="20%" v-if="formData.ticket_">
<ticketd :ticket_="formData.ticket_" @success="$emit('success')"></ticketd>
</el-aside>
</el-container>
</template>
<script>
import ticketd_b from "@/views/wf/ticketd_b.vue";
import ticketd from '@/views/wf/ticketd.vue'
export default {
name: 'repair_form',
components: {
ticketd_b,
ticketd
},
props: {
mode: {
type: String,
default: 'show'
},
t_id: {
type: String,
default: ""
}
},
data() {
return {
formData: {
type: "入库",
items: [],
},
ticket_data: {},
localMode: this.mode,
saveLoading: false,
addTemplate: {
name: null,
}
}
},
mounted() {
if (this.t_id) {
this.getTid();
} else {
this.localMode = "add";
}
},
methods: {
async getTid() {
try {
let res = await this.$API.em.repair.item.req(this.t_id);
this.formData = res;
if (res.ticket_ && res.ticket_.state_.type == 1 && res.create_by == this.$TOOL.data.get("USER_INFO").id) {
this.localMode = "edit";
}
} catch (error) {
console.error('获取数据失败:', error);
}
},
handleDel() {
this.$confirm(`确定删除吗?`, "提示", {
type: "warning",
})
.then(()=>{
this.$API.em.repair.delete.req(this.formData.id).then(res=>{
this.$message.success("删除成功");
this.$emit('success');
})
})
},
async handleSave() {
if (this.localMode == "add") {
try {
let res = await this.$API.em.repair.create.req(this.formData);
this.$message.success("提交成功");
this.$emit('success', this.localMode);
} catch (error) {
console.error('提交失败:', error);
throw error;
}
} else if (this.localMode == "edit") {
this.$message.error("不支持编辑");
}
}
}
}
</script>

View File

@ -3,7 +3,17 @@
<el-main class="nopadding">
<el-form label-width="80px" :model="formData" style="padding: 20px;">
<el-form-item label="员工信息" required>
{{ formData.employee_name }}{{ formData.belong_dept_name }} - {{ formData.post_name }}
<xtSelect
v-model="formData.employee"
style="width: 100%;"
:apiObj = "$API.hrm.employee.list"
v-model:label="formData.employee_name"
:edit="localMode === 'add'"
@change="handleChange">
<el-table-column prop="name" label="姓名"></el-table-column>
<el-table-column prop="belong_dept_name" label="部门"></el-table-column>
<el-table-column prop="post_name" label="岗位"></el-table-column>
</xtSelect>
</el-form-item>
<el-form-item label="离职日期" required>
<el-date-picker
@ -87,22 +97,10 @@ export default {
if (this.t_id) {
this.getTid();
} else {
this.initFormData();
this.localMode = "add";
}
},
methods: {
async initFormData() {
try {
let res = await this.$API.hrm.employee.read.req();
this.formData.employee_name = res.name;
this.formData.belong_dept_name = res.belong_dept_name;
this.formData.post_name = res.post_name;
this.formData.employee = res.id;
this.localMode = "add";
} catch (error) {
console.error('初始化表单数据失败:', error);
}
},
async getTid() {
try {
let res = await this.$API.hrm.resignation.item.req(this.t_id);
@ -114,6 +112,11 @@ export default {
console.error('获取离职数据失败:', error);
}
},
handleChange(obj) {
this.formData.employee_name = obj.name;
this.formData.belong_dept_name = obj.belong_dept_name;
this.formData.post_name = obj.post_name;
},
handleDel() {
this.$confirm(`确定删除吗?`, "提示", {
type: "warning",

View File

@ -18,8 +18,9 @@
<el-col :span="12" class="login-reg">
<!-- <el-link @click="visitors">{{$t('login.fangke')}}</el-link> -->
</el-col>
<el-col :span="12" class="login-forgot">
<router-link to="/reset_password">{{ $t("login.forgetPassword") }}</router-link>
<el-col :span="12" class="login-forgot" >
<span v-if="project_code=='bxerp'||project_code=='tcerp'"></span>
<router-link to="/reset_password" v-else>{{ $t("login.forgetPassword") }}</router-link>
</el-col>
</el-form-item>
<el-form-item>
@ -64,6 +65,7 @@ export default {
return {
redirect: undefined,
userType: "admin",
project_code:"",
visitorsdialog: false,
visitorform: {},
form: {
@ -105,7 +107,10 @@ export default {
immediate: true,
},
},
mounted() { },
mounted() {
this.project_code = this.$TOOL.data.get("BASE_INFO").base.base_code;
console.log('this.project_code',this.project_code);
},
methods: {
async login() {
let that = this;

View File

@ -0,0 +1,131 @@
<template>
<el-container>
<el-header>
<div class="left-panel"></div>
<div class="right-panel">
<el-input v-model="params.number"
placeholder="批次号"
clearable
style="width: 200px;"
></el-input>
<el-button
type="primary"
icon="el-icon-search"
@click="handleQuery"
></el-button>
</div>
</el-header>
<el-main class="nopadding">
<scTable v-if="data_show" :data="tableData" row-key="id" border hidePagination hideDo>
<el-table-column label="物料编号" prop="number" min-width="170px" fixed="left">
</el-table-column>
<el-table-column prop="note" :label="item.testitem_name" v-for="item in qct_testitems" :key="item.id">
<template #default="scope">
{{ scope.row[item.testitem_name] }}
</template>
</el-table-column>
<el-table-column prop="note" :label="item.defect_name" v-for="item in qct_defects" :key="item.id">
<template #default="scope">
<el-switch
:disabled="true"
v-model="scope.row[item.defect_name]"
style="--el-switch-on-color: red"
></el-switch>
</template>
</el-table-column>
<el-table-column label="备注" prop="note">
</el-table-column>
</scTable>
</el-main>
<el-footer>
<el-pagination
background
:small="true"
:total="dataTotal"
layout="total, sizes, prev, pager, next, jumper"
:page-size="params.page_size"
:page-sizes="[20, 50, 100, 200]"
:current-page="params.page"
@current-change="getData"
@update:page-size="getData"
></el-pagination>
</el-footer>
</el-container>
</template>
<script>
export default {
name: "inmTotal",
data() {
return {
data_show:false,
tableData:[],
qct_defects:[],
qct_testitems:[],
params:{
page:1,
page_size:20,
number:"",
mioitem__material__type:30,
ftest__isnull:0,
mioitem__mio__state:20,
}
};
},
created() {
let that = this;
that.$API.qm.qct.list.req({search:'光纤预制棒管',page:0}).then((res) => {
that.$API.qm.qct.item.req(res[0].id).then((res) => {
that.qct_defects = res.qct_defects;
that.qct_testitems = res.qct_testitems;
that.data_show = true;
that.getData(1);
})
})
},
methods: {
getData(page){
let that = this;
that.params.page = page;
that.tableData = [];
that.$API.inm.mioitemw.list.req(that.params).then(res=>{
that.dataTotal = res.count;
if(res.results.length>0){
res.results.forEach((item) => {
let obj = {};
obj = Object.assign({},item);
obj.isEdit = false;
if(item.ftest!=null){
if(item.ftest.ftestdefects!==undefined&&item.ftest.ftestdefects!==''&&item.ftest.ftestdefects!==null&&item.ftest.ftestdefects.length>0){
item.ftest.ftestdefects.forEach((item1) => {
obj[item1.defect_name] = item1.has?item1.has:false;
})
}
if(item.ftest.ftestitems!==undefined&&item.ftest.ftestitems!==''&&item.ftest.ftestitems!==null&&item.ftest.ftestitems.length>0){
item.ftest.ftestitems.forEach((item2) => {
obj[item2.testitem_name] = item2.test_val_json?item2.test_val_json:"";
})
}
}else{
that.qct_defects.forEach((item1) => {
obj[item1.defect_name] = false;
})
that.qct_testitems.forEach((item2) => {
obj[item2.testitem_name] = "";
})
}
that.tableData.push(obj);
})
}
})
},
handleQuery(){
this.getData(1)
},
},
};
</script>
<style scoped>
</style>

View File

@ -8,6 +8,7 @@
v-model="query.user_name"
:valueField="'name'"
:labelField="'name'"
:params="params"
v-model:label="query.user_name"
style="width:150px; margin-right: 5px;"
>
@ -86,6 +87,9 @@ export default {
user_name:'',
start_date:'',
},
params:{
ubelong_dept__name:"冷加工",
},
lists:[],
mgruops:[],
tableData:[],
@ -161,7 +165,7 @@ export default {
let all = 0;
that.coefficient.forEach(item2 => {
if(item1[item2]){
all = all+ Number(item1[item2])*Number(that.tableData[0][item2])
all = all+ Number(item1[item2])/Number(that.tableData[0][item2])
}
})
item1.time_all = all+Number(item1.time_other);
@ -174,7 +178,7 @@ export default {
console.log('index',index)
that.coefficient.forEach(item2 => {
if(that.tableData[index][item2]){
all = all+ Number(that.tableData[index][item2])*Number(that.tableData[0][item2])
all = all+ Number(that.tableData[index][item2])/Number(that.tableData[0][item2])
}
that.tableData[index].time_all = all+Number(that.tableData[index].time_other);
})

View File

@ -160,7 +160,7 @@
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" v-if="mtype!==30&&form.handoverb.length>0">
<el-col :md="12" :sm="24">
<el-form-item label="接收工段" prop="recive_mgroup">
<el-select
v-model="form.recive_mgroup"
@ -180,7 +180,7 @@
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" v-if="mtype!==30">
<el-col :md="12" :sm="24">
<el-form-item label="接收人">
<el-select
v-model="form.recive_user"
@ -392,6 +392,7 @@ export default {
that.mtype=30;
that.change_batch = true;
}
that.form.recive_mgroup = "";
let arr = that.$route.path.split("/");
that.route_code = arr[2];
let materialObj = that.$TOOL.data.get("MATERIAL_OBJECT");
@ -407,9 +408,12 @@ export default {
that.form.material_changed = that.wmItem.material;
that.form.material_changed_fname = that.wmItem.material_name;
}
if(that.type==20||that.type==50){
that.form.recive_mgroup = that.mgroupId;
}
that.$nextTick(()=>{
console.log('that.type',that.type,'that.mtype',that.mtype)
if(that.type==20||that.type==50||(that.type==10&&that.mtype==30)||(that.mtype==30&&that.new_wm!=='')){
that.form.recive_mgroup = that.mgroupId;
}
})
// type=10
// type=20
// type=30
@ -755,9 +759,6 @@ export default {
let that = this;
that.$refs.dialogForm.validate(async (valid) => {
if (valid) {
if(that.mtype==30){
that.form.recive_mgroup = that.form.send_mgroup;
}
that.form.mtype=that.mtype;
if(that.route_code=='shangpaipingmo'){
that.form.handoverb.forEach(item=>{
@ -771,7 +772,7 @@ export default {
})
}
//
if(that.mtype==20||that.mtype==30||that.type==40){
if(that.mtype==20||(that.mtype==30&&that.type==50&&that.new_wm!=='')||(that.mtype==30&&that.type==10)||that.type==40){
that.$API.wpm.handover.createsubmit.req(that.form).then((res) => {
that.isSaveing = false;
that.$emit("success");

View File

@ -30,14 +30,16 @@
</el-form-item>
</el-col>
<el-col :span="14">
<span style="margin: 0 0 0 20px;">选择物料:</span>
<span style="margin: 0 0 0 20px;" v-if="route_code=='pengma'">选择物料:</span>
<el-input ref="codeInput"
v-if="route_code=='pengma'"
placeholder="扫描交接物料"
v-model="listItem.wm_in" clearable
style="width: 120px;margin: 0 10px;"
@change="formWminChange($index,listItem.wm_in)"
></el-input>
<el-select
v-if="route_code=='pengma'"
v-model="listItem.wpr"
placeholder="选择交接物料"
@change="wm_inChange($index)"
@ -54,14 +56,24 @@
<span style="margin: 0 20px;">数量{{ listItem.count }}</span>
<el-button v-if="mode!=='show'" type="danger" icon="el-icon-delete" @click="delMaterial($index)"></el-button>
</el-col>
<el-col :span="24" style="padding-left: 80px;margin-bottom: 20px;margin-top: -5px;">
<div v-for="(item2,index2) in form.handoverb[$index].handoverbw" :key="item2.wpr" class="wprItem">
<span>{{ item2.number }}</span>
<el-icon class="circleCloseFilled" @click="deleteWpr($index,index2,item2.wpr)"><el-icon-circleClose-filled /></el-icon>
<el-col v-if="route_code=='pengma'" style="padding-left: 80px;margin-bottom: 20px;margin-top: -5px;">
<div v-for="(item2,index2) in form.handoverb[$index].handoverbw" :key="item2.wpr" style="display: inline-block;">
<div v-if="item2.wpr!==undefined&&item2.wpr!==null&&item2.wpr!==''" class="wprItem">
<span>{{ item2.number }}</span>
<el-icon class="circleCloseFilled" @click="deleteWpr($index,index2,item2.wpr)"><el-icon-circleClose-filled /></el-icon>
</div>
<div v-else class="wprItem disabledItem">
<span>{{ item2.number }}</span>
</div>
</div>
<div v-for="item3 in diff" :key="item3" class="wprItem disabledItem">
<!-- <div v-for="item3 in diff" :key="item3" class="wprItem disabledItem">
<span>{{ item3 }}</span>
</div>
</div> -->
</el-col>
<el-col v-else-if="route_code=='kaiaomian'" :span="24" style="padding-left: 80px;margin-bottom: 20px;margin-top: -5px;">
<span v-for="(item2) in wprOptions" :key="item2.wpr" style="margin-right: 10px;">
<el-checkbox v-model="item2.checked" :label="item2.number" @change="handleChange($index)"/>
</span>
</el-col>
</el-row>
<el-row>
@ -141,6 +153,7 @@ export default {
trigger: "blur",
},
},
route_code:"",
batchOrign:{},
wprOptions: [],
materialOptions: [],
@ -152,6 +165,9 @@ export default {
},
mounted() {
let that = this;
let paths = that.$route.path;
let arr = paths.split("/");
that.route_code = arr[2];
that.form.type = that.type;
that.form.handle_date = that.form.send_date = that.$TOOL.dateFormat2(new Date());
that.form.send_mgroup = that.form.recive_mgroup = that.mgroupId;
@ -162,6 +178,9 @@ export default {
getWpr(id){
let that = this;
that.$API.wpm.wpr.list.req({page:0,wm:id}).then((res) => {
res.forEach(item=>{
item.checked = false;
})
that.wprOptions = res;
});
},
@ -218,25 +237,27 @@ export default {
if(arrs.length>1){
that.form.handoverb[index].wpr = '';
arrs.forEach(arr=>{
that.wprOptions.forEach(item=>{
let obj = {};
obj.number = arr;
let options = that.wprOptions.filter(item=>{return item.number.indexOf(arr) > -1&&!item.disabled});
if(options.length>0){
obj.wpr = options[0].id;
barchArrs.push(arr);
}
that.form.handoverb[index].handoverbw.push(obj);
that.wprOptions.forEach(item=>{
if(item.number.indexOf(arr) > -1&&!item.disabled){
item.disabled = true;
let obj = {};
obj.number = item.number;
obj.wpr = item.id;
barchArrs.push(arr);
that.form.handoverb[index].handoverbw.push(obj);
that.form.handoverb[index].count = that.form.handoverb[index].handoverbw.length;
}
})
})
that.form.handoverb[index].count = barchArrs.length;
//arrswpr,
let diff = arrs.filter(item => !barchArrs.includes(item));
that.diff = diff;
console.log('diff',diff)
if(diff.length>0){
that.$message.warning("物料"+diff.join(",")+"不在该批次中");
// that.$confirm(""+diff.join(",")+"", "", {type: "warning",}).then(() => {});
}
}else{
//handoverbdisabled
@ -295,6 +316,21 @@ export default {
}
that.form.handoverb.splice(index,1);
},
handleChange(index){
let that = this;
that.form.handoverb[index].handoverbw = [];
let trueCount = this.wprOptions.filter(item => item.checked === true).length;
that.form.handoverb[index].count =trueCount;
this.wprOptions.forEach(item=>{
if(item.checked){
let obj = {};
obj.number = item.number;
obj.wpr = item.id;
item.disabled = true;
that.form.handoverb[index].handoverbw.push(obj);
}
})
},
//
submit() {
let that = this;
@ -303,6 +339,7 @@ export default {
let total = 0;
if(this.form.handoverb.length>0){
this.form.handoverb.forEach(item=>{
item.handoverbw = item.handoverbw.filter(item=>{ return item.wpr&&item.wpr!==''&&item.wpr!==null&&item.wpr!==undefined})
total += item.count;
})
}

View File

@ -93,7 +93,7 @@
min-width="150"
>
<template #default="scope">
<span v-if="route_code=='pengma'" @click="rowClick(scope.row)" style="color:#0052d9;font-weight: 600;cursor: pointer;">{{scope.row.batch}}</span>
<span v-if="route_code=='pengma'||route_code=='kaiaomian'" @click="rowClick(scope.row)" style="color:#0052d9;font-weight: 600;cursor: pointer;">{{scope.row.batch}}</span>
<span v-else>{{scope.row.batch}}</span>
</template>
</el-table-column>

View File

@ -136,8 +136,27 @@
</div>
</template>
</el-table-column>
<el-table-column label="班次"></el-table-column>
<el-table-column label="创建时间"></el-table-column>
<el-table-column label="班次">
<template #default="scope">
<el-select
v-if="scope.row.isEdit"
v-model="scope.row.shift"
placeholder="班次"
class="width-100"
>
<el-option
v-for="item in shiftOtions"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
<div v-else>
<span v-if="scope.row.shift_name!==null">{{ scope.row.shift_name}}</span>
</div>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" align="center" width="150px">
<template #default="scope">
<el-button v-if="scope.row.isEdit" type="success" @click="saveMuserSubmit(scope.row)">保存</el-button>
@ -516,6 +535,7 @@ export default {
printer_name:localStorage.getItem("printer_name"),
addTemplate:{
mlog: "",
shift:"",
process: "",
equipment: "",
handle_user: "",