From 1cc2bba0c5cfd27e0744f1df8c5bbd41135ae817 Mon Sep 17 00:00:00 2001
From: Your Name <123456>
Date: Wed, 28 Sep 2022 16:02:53 +0800
Subject: [PATCH] Merge branch 'master' of https://sinanoaq.cn:8888/r/gtqt
---
src/views/specialWorkSystem/foundationSet/material/index.vue | 209 +++++++++++++++++++++++-----------------------------
1 files changed, 93 insertions(+), 116 deletions(-)
diff --git a/src/views/specialWorkSystem/foundationSet/material/index.vue b/src/views/specialWorkSystem/foundationSet/material/index.vue
index 2de6ce6..93ea978 100644
--- a/src/views/specialWorkSystem/foundationSet/material/index.vue
+++ b/src/views/specialWorkSystem/foundationSet/material/index.vue
@@ -80,7 +80,7 @@
<div class="main-card">
<el-row class="cardTop">
<el-col :span="12" class="mainCardBtn">
- <el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord = true">新增</el-button>
+ <el-button type="primary" :icon="Plus" size="default" @click="addRecordBtn">新增</el-button>
<!-- <el-button type="warning" :icon="Edit" size="default" plain>修改</el-button>-->
<!-- <el-button type="danger" :icon="Delete" size="default" plain @click="deleteBatchBtn">删除</el-button>-->
</el-col>
@@ -125,7 +125,7 @@
<div>必选</div>
<div>
<div v-if="mustList.length>0" v-for="(i,index) in mustList" :key="index">
- {{i.materialName}}:默认值:{{i.defaultVal}},{{i.consumables?'耗材':'费耗材'}}
+ {{i.materialName}}:默认值:{{i.defaultVal}},{{i.consumables?'耗材':'非耗材'}}
</div>
<div v-else>
无
@@ -136,7 +136,7 @@
<div>可选</div>
<div>
<div v-if="chooseList.length>0" v-for="(i,index) in chooseList" :key="index">
- {{i.materialName}}:默认值:{{i.defaultVal}},{{i.consumables?'耗材':'费耗材'}}
+ {{i.materialName}}:默认值:{{i.defaultVal}},{{i.consumables?'耗材':'非耗材'}}
</div>
<div v-else>
无
@@ -156,6 +156,9 @@
</div>
</div>
</el-form-item>
+ <el-form-item label="描述">
+ <el-input v-model="details.info" type="textarea" autosize readonly />
+ </el-form-item>
<el-form-item label="创建人">
<el-input v-model="details.createUname" readonly />
</el-form-item>
@@ -170,7 +173,7 @@
</el-form-item>
</el-form>
</el-dialog>
- <el-dialog v-model="dialogAddRecord" title="作业物资标准编辑" @close="closeAdd" @open="openAdd">
+ <el-dialog v-model="dialogAddRecord" title="作业物资标准编辑" @close="closeAdd" @open="openAdd" center>
<el-form :model="addRecord" label-width="150px" ref="addRef" :rules="addRules">
<el-form-item label="作业物资标准名称" prop="name">
<el-input v-model="addRecord.name"> </el-input>
@@ -223,38 +226,39 @@
<el-form-item label="物资标准配置">
<el-tabs tab-position="left" class="demo-tabs" type="border-card">
<el-tab-pane v-for="(item,index) in allList" :label="item.materialTypeName" :key="index">
- <div v-for="(i,x) in item.list" :key="x">
- <el-checkbox :label="i.name" v-model="checkData[index].list[x].checked">
- <div>{{i.name}}</div>
- <div><span>默认值:</span><el-input size="small" v-model="checkData[index].list[x].defaultVal"/></div>
- <div>
- <span>配置级别:</span>
- <el-select size="small" v-model="checkData[index].list[x].configurationLevel">
+ <div class="tab-i" v-for="(i,x) in item.list" :key="x">
+ <el-checkbox :label="i.materialName" v-model="checkData[index].list[x].checked">
+ </el-checkbox>
+ <el-form v-if="checkData[index].list[x].checked" :model="checkData[index].list[x]" label-width="100px" ref="addListRef" :rules="addListRules">
+ <el-form-item label="默认值" prop="defaultVal"><el-input v-model="checkData[index].list[x].defaultVal"/></el-form-item>
+ <el-form-item label="配置级别" prop="configurationLevel">
+ <el-select v-model="checkData[index].list[x].configurationLevel">
<el-option key="0" label="必选" value="0"/>
<el-option key="1" label="可选" value="1"/>
<el-option key="2" label="高配" value="2"/>
</el-select>
- </div>
- <div>
- <span>是否耗材:</span>
- <el-radio-group v-model="checkData[index].list[x].consumables" class="ml-4">
- <el-radio label="1">是</el-radio>
- <el-radio label="2">否</el-radio>
+ </el-form-item>
+ <el-form-item label="是否耗材" prop="consumables">
+ <el-radio-group v-model="checkData[index].list[x].consumables">
+ <el-radio :label=true>是</el-radio>
+ <el-radio :label=false>否</el-radio>
</el-radio-group>
- </div>
- </el-checkbox>
+ </el-form-item>
+ </el-form>
</div>
</el-tab-pane>
</el-tabs>
</el-form-item>
- <el-form-item label="描述" prop="describe">
- <el-input v-model="addRecord.describe" type="textarea" autosize :rows="2"/>
- </el-form-item>
- <el-form-item>
- <el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button>
- <el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button>
+ <el-form-item label="描述" prop="info">
+ <el-input v-model="addRecord.info" type="textarea" autosize :rows="2"/>
</el-form-item>
</el-form>
+ <template #footer>
+ <span class="dialog-footer">
+ <el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button>
+ <el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button>
+ </span>
+ </template>
</el-dialog>
<el-dialog v-model="deleteDialog" title="提示" width="30%" center @close="indexClear">
<span>您确定要删除该条记录吗?</span>
@@ -288,6 +292,7 @@
import type { FormInstance, FormRules } from 'element-plus'
import { teamManageApi } from '/@/api/systemManage/basicDateManage/personShiftManage/teamManage';
import { materialApi } from '/@/api/specialWorkSystem/material';
+import {a} from "pinia-plugin-persistedstate/dist/types-374a3a36";
// 定义接口来定义对象的类型
interface stateType {
@@ -524,16 +529,21 @@
// };
const addRef = ref<FormInstance>();
+ const addListRef = ref<FormInstance>();
const addRules = reactive<FormRules>({
name: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
});
+ const addListRules = reactive<FormRules>({
+ defaultVal: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+ configurationLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+ consumables: [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+ });
// 页面载入时执行方法
onMounted(() => {
- getListByPage();
- getList();
+ getListByPage()
});
const toType = (row, column, cellValue, index) => {
@@ -541,14 +551,18 @@
};
const toLevel = (row, column, cellValue, index) => {
- if(row.workLevel <= 3){
- return state.fireLevel.find((item) => item.value === row.workLevel)?.label;
- }else if(row.workLevel>3 && row.workLevel<=7){
- return state.heightLevel.find((item) => item.value === row.workLevel)?.label;
- }else if(row.workLevel>8 && row.workLevel<=10){
- return state.hoistLevel.find((item) => item.value === row.workLevel)?.label;
+ if(row.workLevel == null){
+ return '无'
}else{
- return state.plateLevel.find((item) => item.value === row.workLevel)?.label;
+ if(row.workLevel <= 3){
+ return state.fireLevel.find((item) => item.value === row.workLevel)?.label;
+ }else if(row.workLevel>3 && row.workLevel<=7){
+ return state.heightLevel.find((item) => item.value === row.workLevel)?.label;
+ }else if(row.workLevel>8 && row.workLevel<=10){
+ return state.hoistLevel.find((item) => item.value === row.workLevel)?.label;
+ }else{
+ return state.plateLevel.find((item) => item.value === row.workLevel)?.label;
+ }
}
};
@@ -556,25 +570,12 @@
let res = await materialApi().getRecordList();
if (res.data.code === '200') {
state.allList = JSON.parse(JSON.stringify(res.data.data))
- // const test = [{id:1,name:'1',children:[{one:1,two:'1'},]},{id:2,name:'2',children:[{one:2,two:'2'},]}]
- // test.map(item => {
- // item.children.map(i =>{
- // debugger
- // return {
- // three:true
- // }
- // const obj = i
- // console.log(obj);
- // })
- // return item
- // })
- // console.log(test);
for(let i in state.allList){
state.allList[i].list = state.allList[i].list?.map((item:any) => {
const obj = {
checked: false,
materialName: item.name,
- consumables: false,
+ consumables: null,
defaultVal: null,
configurationLevel: null,
materialType: item.materialType,
@@ -585,37 +586,12 @@
})
}
state.checkData = JSON.parse(JSON.stringify(state.allList))
- // state.checkData = state.allList.map((item)=>{
- // if(item.list && item.list != null){
- // console.log('1111111111111')
- // item.list.map((i)=>{
- // i.checked = false
- // i.defaultVal = null
- // i.configurationLevel = null
- // i.consumables = false
- // debugger
- // const obj = {
- // checked: i.checked,
- // materialName: i.name,
- // consumables: i.consumables,
- // defaultVal: i.defaultVal,
- // configurationLevel: i.configurationLevel,
- // materialType: i.materialType,
- // materialTypeName: i.materialTypeName,
- // emergencyMaterialId: i.id
- // }
- // return {...obj}
- // })
- // }
- // return item
- // })
} else {
ElMessage({
type: 'warning',
message: res.data.msg
});
}
- console.log(state.checkData,'state.checkData')
}
// 分页获取物资标准列表
@@ -673,6 +649,11 @@
getListByPage();
};
+ const addRecordBtn = () =>{
+ getList()
+ state.dialogAddRecord = true
+ }
+
// 添加方法
const addRecord = async (data: any) => {
let res = await materialApi().addRecord(data);
@@ -692,13 +673,15 @@
// 修改方法
const editRecordBtn = async (index, row) => {
+ getList()
state.addRecord = JSON.parse(JSON.stringify(row));
+ console.log(state.addRecord,'state.addRecord')
state.dialogAddRecord = true;
state.chosenIndex = index;
};
const editRecord = async (data: any) => {
- let res = await teamManageApi().updateRecord(data);
+ let res = await materialApi().updateRecord(data);
if (res.data.code === '200') {
ElMessage({
type: 'success',
@@ -718,32 +701,41 @@
if (!formEl) return;
await formEl.validate(async (valid, fields) => {
if (valid) {
+ state.addRecord.materialDetailList = []
+ for(let i in state.checkData){
+ if(state.checkData[i].list && state.checkData[i].list.length>0){
+ for(let j=0;j<state.checkData[i].list.length;j++){
+ if(state.checkData[i].list[j].checked){
+ // delete state.checkData[i].list[j].checked
+ // state.checkData[i].list[j].checked
+ let { checked,...checkObj } = state.checkData[i].list[j]
+ state.addRecord.materialDetailList.push(checkObj)
+ }
+ }
+ }
+ }
const data = {
name: state.addRecord.name,
workType: state.addRecord.workType,
workLevel: state.addRecord.workLevel,
- describe: state.addRecord.describe,
- materialDetailList: []
+ info: state.addRecord.info,
+ materialDetailList: state.addRecord.materialDetailList
};
- // for(let i=0;i<state.checkData.length;i++){
- // if(state.checkData[i].list !=null && state.checkData[i].list.length>0){
- // for(let j=0;j<state.checkData[i].list.length;j++){
- // if(state.checkData[i].list[j].checked){
- // let {materialName,consumables,defaultVal,configurationLevel,materialType,materialTypeName,id} = state.checkData[i].list[j]
- // const newObj = {materialName,consumables,defaultVal,configurationLevel,materialType,materialTypeName,id}
- // data.materialDetailList.push({ materialName, consumables, defaultVal, configurationLevel, materialType, materialTypeName, id})
- // }
- // }
- // }
- // }
- console.log(data,'data>>>>>>>>>')
- // if (state.chosenIndex == null) {
- // await addRecord(data);
- // } else {
- // data.groupId = JSON.stringify(state.addRecord.groupId);
- // await editRecord(data);
- // }
- state.dialogAddRecord = false;
+ console.log(data.materialDetailList,'data.materialDetailList')
+ if(data.materialDetailList.length==0 || data.materialDetailList.some((e) => e.defaultVal == null) || data.materialDetailList.some((e) => e.configurationLevel == null) || data.materialDetailList.some((e) => e.consumables == null)){
+ ElMessage({
+ type: 'warning',
+ message: '请完善物资配置必填数据'
+ });
+ }else{
+ if (state.chosenIndex == null) {
+ await addRecord(data);
+ } else {
+ data.id = state.addRecord.id;
+ await editRecord(data);
+ }
+ state.dialogAddRecord = false;
+ }
} else {
console.log('error submit!', fields);
}
@@ -845,7 +837,6 @@
}
}
- console.log(state.mustList,state.chooseList,state.highList,'666666666')
state.dialogDetails = true;
};
@@ -881,12 +872,15 @@
};
return {
addRef,
+ addListRef,
addRules,
+ addListRules,
View,
Edit,
Delete,
Refresh,
Plus,
+ addRecordBtn,
toType,
toLevel,
searchRecord,
@@ -1029,28 +1023,11 @@
width: 100% !important;
}
-.el-checkbox{
- width: 100%;
+.tab-i{
margin-bottom: 20px;
- display: flex;
- align-items: flex-start;
- height: auto;
- ::v-deep(.el-checkbox__label){
+
+ .el-form-item{
margin-bottom: 20px;
- &>div{
- width: 100%;
- margin-bottom: 10px;
- &>span{
- display: inline-block;
- width: 30%;
- }
- .el-input {
- width: 100% !important;
- }
- .el-select {
- width: 100% !important;
- }
- }
}
}
</style>
--
Gitblit v1.9.2