8 changed files with 775 additions and 35 deletions
@ -0,0 +1,474 @@
|
||||
<template> |
||||
<!-- 表格组件 --> |
||||
<div class='el-content-el' ref='TabHeight'> |
||||
<!-- 顶部开始 --> |
||||
<div class="el-Cart-button"> |
||||
<!-- 表格顶部左侧按钮 --> |
||||
<div class="el-Cart-button-left"> |
||||
<el-button type="primary" @click="AddInfo"><el-icon><Plus /></el-icon>新 增</el-button> |
||||
<el-button @click="handleDelete"><el-icon><Delete /></el-icon>删 除</el-button> |
||||
<el-button @click="handleDelete"><el-icon><Edit /></el-icon>查看维修记录</el-button> |
||||
</div> |
||||
<!-- 表格顶部右侧按钮 --> |
||||
<div class="el-Cart-button-right"> |
||||
<!-- 刷新按钮 --> |
||||
<button> |
||||
<el-icon color="#ccc"><Refresh /></el-icon> |
||||
</button> |
||||
<!-- 功能按钮 --> |
||||
<button> |
||||
<el-icon color="#ccc"><Operation /></el-icon> |
||||
</button> |
||||
<!-- 搜索按钮 --> |
||||
<button> |
||||
<el-icon color="#ccc"><Search /></el-icon> |
||||
</button> |
||||
</div> |
||||
</div> |
||||
<!-- 顶部结束 --> |
||||
<div class='el-Cart'> |
||||
<!-- 表格列开始 --> |
||||
<el-table :data="data" border :height="TabHeight+'px'" style="width: 100%;"> |
||||
<el-table-column type="selection" width="55" fixed="left"/> |
||||
<el-table-column type="index" fixed="left" width="50" height="100" label="#" align="center"/> |
||||
<el-table-column prop="name" label="产品名称" width="180" align="center " sortable/> |
||||
<el-table-column prop="model" label="型号" width="180" align="center " /> |
||||
<el-table-column prop="purchaseAmount" label="购买金额" width="180" align="center "/> |
||||
<el-table-column prop="state" label="状态" width="180" align="center "/> |
||||
<el-table-column prop="currentUsageWarehouse" label="当前使用仓" width="180" align="center "/> |
||||
<el-table-column prop="user" label="使用人" width="180" align="center " /> |
||||
<el-table-column prop="deviceSerialNumber" label="设备序列号S/N" width="180" align="center "/> |
||||
<el-table-column prop="userPosition" label="使用人岗位" width="180" align="center "/> |
||||
<el-table-column prop="isDeposit" label="是否收取押金" width="180" align="center "/> |
||||
<el-table-column prop="deposit" label="押金金额(元)" width="180" align="center "/> |
||||
<el-table-column prop="purchasingCompany" label="采购公司" width="180" align="center "/> |
||||
<el-table-column label="商品图片" width="180" align="center" > |
||||
<template #default="props"> |
||||
<img :src="props.row.photo" class='el-Img'> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column prop="buyingTime" label="购买时间" width="180" align="center "/> |
||||
<el-table-column prop="notes" label="备注" width="180" align="center "/> |
||||
<el-table-column prop="warrantyPeriodEndTime" label="保修截止时间" width="180" align="center "/> |
||||
<el-table-column fixed="right" label="操作" width="280" align="center "> |
||||
<template #default> |
||||
<el-button link type="primary" icon="el-icon-delete" @click="handleDelete">删除</el-button> |
||||
<el-button link type="primary" icon="el-icon-view" @click="handleEdit(row)">编辑</el-button> |
||||
<el-button link type="primary" icon="el-icon-view" @click="handleview(row)">查看</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
<!-- 表格翻页功能 --> |
||||
<div class="demo-pagination-block"> |
||||
<el-pagination |
||||
v-model:current-page="currentPage" |
||||
v-model:page-size="pageSize" |
||||
:page-sizes="pageList" |
||||
:small="small" |
||||
:disabled="disabled" |
||||
:background="background" |
||||
layout="total, sizes, prev, pager, next, jumper" |
||||
:total="2" |
||||
@size-change="handleSizeChange" |
||||
@current-change="handleCurrentChange" |
||||
/> |
||||
</div> |
||||
|
||||
</div> |
||||
<!-- 弹窗组件 --> |
||||
<div class='addlalog'> |
||||
<el-dialog v-model="AddLalog" title="新增产品" > |
||||
<el-form label-position="top" label-width="100px" :model="AddForm"> |
||||
<el-form-item label="产品名称"> |
||||
<el-input v-model="AddForm.name" placeholder="请输入产品名称"/> |
||||
</el-form-item> |
||||
<el-form-item label="购买金额"> |
||||
<el-input v-model="AddForm.purchaseAmount" placeholder="请输入购买金额"/> |
||||
</el-form-item> |
||||
<el-form-item label="当前使用仓"> |
||||
<el-input v-model="AddForm.currentUsageWarehouse" placeholder="请输入当前使用仓"/> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="设备序列号S/N"> |
||||
<el-input v-model="AddForm.deviceSerialNumber" placeholder="请输入设备序列号" /> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="是否收取押金"> |
||||
<el-select v-model="AddForm.isDeposit" class="m-2" placeholder="选择是否收取押金"> |
||||
<el-option |
||||
v-for="item in options" |
||||
:key="item.value" |
||||
:label="item.label" |
||||
:value="item.value" |
||||
/> |
||||
</el-select> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="采购公司"> |
||||
<el-input v-model="AddForm.purchasingCompany" placeholder="请输入采购公司"/> |
||||
</el-form-item> |
||||
<el-form-item label="保修截至时间"> |
||||
<el-date-picker |
||||
v-model="AddForm.warrantyPeriodEndTime" |
||||
type="date" |
||||
placeholder="选择保修截至日期" |
||||
size="default" |
||||
format="YYYY/MM/DD" |
||||
/> |
||||
</el-form-item> |
||||
<el-form-item label="图片"> |
||||
<!-- photo --> |
||||
<el-upload |
||||
ref="uploadRef" |
||||
class="upload-demo" |
||||
:action=doubledCount |
||||
:on-success="ImgSuccess" |
||||
:before-upload="beforeAvatarUpload" |
||||
:headers="headers" |
||||
> |
||||
|
||||
<template #trigger> |
||||
<div class='img-icon'> |
||||
<el-button type="primary">点击上传图片</el-button> |
||||
<el-icon><UploadFilled /></el-icon> |
||||
</div> |
||||
</template> |
||||
</el-upload> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="型号"> |
||||
<el-input v-model="AddForm.model" placeholder="请输入型号"/> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="状态"> |
||||
<el-select v-model="AddForm.state" class="m-2" placeholder="选择状态"> |
||||
<el-option |
||||
v-for="item in options2" |
||||
:key="item.value" |
||||
:label="item.label" |
||||
:value="item.value" |
||||
/> |
||||
</el-select> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="使用人"> |
||||
<el-input v-model="AddForm.user" placeholder="请输入使用人"/> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="使用人岗位"> |
||||
<el-input v-model="AddForm.userPosition" placeholder="请输入使用人岗位"/> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="押金金额(RMB)"> |
||||
<el-input v-model="AddForm.deposit" placeholder="请输入押金金额(元)" /> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="购买时间"> |
||||
<el-date-picker |
||||
v-model="AddForm.buyingTime" |
||||
type="date" |
||||
placeholder="选择购买日期" |
||||
size="default" |
||||
format="YYYY/MM/DD" |
||||
/> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="备注"> |
||||
<el-input v-model="AddForm.notes" placeholder="请输入备注"/> |
||||
</el-form-item> |
||||
</el-form> |
||||
<!-- 弹窗底部提交按钮 --> |
||||
<div class='el-dialog-button'> |
||||
<el-button type="danger" @click="submit"> |
||||
<el-icon><Select/></el-icon> |
||||
确认提交 |
||||
</el-button> |
||||
</div> |
||||
</el-dialog> |
||||
</div> |
||||
<!-- 弹窗结束 --> |
||||
</div> |
||||
</template> |
||||
|
||||
<script setup lang='ts'> |
||||
import { ref, reactive,onMounted,computed } from 'vue'; |
||||
import { getList, getDetail, add, update, remove,$_TableList } from '@/api/basic/basicPda'; //API |
||||
import { ElMessage, type UploadProps } from 'element-plus' |
||||
import { getToken } from '@/utils/auth'; |
||||
const currentPage = ref(1); // 默认页码 |
||||
const pageSize = ref(30); // 默认每一页几条 |
||||
const pageList = ref([5, 10, 50, 100, 200]); // 选择每页显示多少条 |
||||
const small = ref(false); |
||||
const background = ref(true); // 是否开启背景颜色 |
||||
const disabled = ref(false); // 是否禁止使用页码功能 |
||||
const data = ref([]); // 表单数据 |
||||
const TabHeight = ref();//动态获取表格高度 |
||||
const AddLalog = ref(true)//提交弹窗 |
||||
const AddForm = ref({ |
||||
name: '', |
||||
region: '', |
||||
type: '', |
||||
}) |
||||
const value1 = ref('') //日期 |
||||
const optionsvalue = ref('')//下拉框值 |
||||
const optionsvalue2=ref('')//状态值 |
||||
const uploadRef = ref()//图片上传 |
||||
const options = [//下拉选择框 |
||||
{ |
||||
value: '0', |
||||
label: '是', |
||||
}, |
||||
{ |
||||
value: '1', |
||||
label: '否', |
||||
}, |
||||
|
||||
] |
||||
const options2 = [//下拉选择框 |
||||
{ |
||||
value: '1', |
||||
label: '正常', |
||||
}, |
||||
{ |
||||
value: '2', |
||||
label: '维修', |
||||
}, |
||||
{ |
||||
value: '3', |
||||
label: '不能使用(不能开机)', |
||||
}, |
||||
] |
||||
// 图片上传接口 |
||||
const doubledCount = computed(() => { |
||||
return '/api/blade-resource/oss/endpoint/put-file' |
||||
}) |
||||
// 图片上传写代码TOKEN |
||||
const headers =computed(()=>{ |
||||
return {'Blade-Auth': 'Bearer ' + getToken(), |
||||
}; |
||||
}) |
||||
// 获取表格数据 |
||||
function onLoad(){ |
||||
// 获取表格数据API($_TableList) |
||||
$_TableList({ current:currentPage.value, size: pageSize.value }).then(res=>{ |
||||
console.log(res.data.data.records); |
||||
//表格信息 |
||||
data.value=res.data.data.records |
||||
}) |
||||
} |
||||
// 动态获取DOM高度给表单防止页面出现滚动条 |
||||
onMounted(() => { |
||||
//默认值88 |
||||
TabHeight.value = TabHeight.value.offsetHeight-91; |
||||
// 等待DOM高度被复制之后在请求数据,防止被数据撑开高度 |
||||
onLoad() |
||||
}) |
||||
// 新增数据功能 |
||||
const AddInfo=()=>{ |
||||
console.log(111); |
||||
AddLalog.value=true; |
||||
} |
||||
// 图片上传 |
||||
const imageUrl = ref('') |
||||
// 图片上传成功回调函数 |
||||
const ImgSuccess: UploadProps['onSuccess'] = (response,uploadFile) => { |
||||
console.log(response,uploadFile,'123123123123123122312123'); |
||||
console.log('================================================================'); |
||||
|
||||
} |
||||
// 上传图片规则 |
||||
const beforeAvatarUpload: UploadProps['beforeUpload'] = (rawFile) => { |
||||
if (rawFile.type !== 'image/png') { |
||||
ElMessage.error('图片格式只能为image/png!') |
||||
return false |
||||
} else if (rawFile.size / 1024 / 1024 > 2) { |
||||
ElMessage.error('图片大小不能大于2MB!') |
||||
return false |
||||
} |
||||
return true |
||||
} |
||||
</script> |
||||
|
||||
<style scoped lang='scss'> |
||||
// 最外层 IDV |
||||
.el-content-el { |
||||
padding: 0 8px; |
||||
padding-top:8px; |
||||
background-color: #fff; |
||||
height: 100%; |
||||
box-sizing: border-box; |
||||
// 表格顶部按钮 |
||||
:deep(.el-Cart-button) { |
||||
margin-bottom: 8px; |
||||
display: flex; |
||||
justify-content: space-between; |
||||
} |
||||
// 表格顶部左侧、右侧按钮样式 |
||||
.el-Cart-button-left,.el-Cart-button-right{ |
||||
display: flex; |
||||
margin: 0 0px; |
||||
justify-content: space-between; |
||||
} |
||||
.el-Cart-button-left{ |
||||
:deep( button){ |
||||
padding: 0 7px; |
||||
min-width: 70px; |
||||
display: flex; |
||||
span{ |
||||
width: 100%; |
||||
display: inline-flex; |
||||
align-items: center; |
||||
justify-content: space-between; |
||||
i{ |
||||
margin-right: 6px; |
||||
} |
||||
} |
||||
} |
||||
|
||||
} |
||||
.el-Cart-button-right { |
||||
display: flex; |
||||
margin: 0 0px; |
||||
justify-content: space-between; |
||||
align-items: center; |
||||
button { |
||||
background-color: transparent; |
||||
border-radius: 50%; |
||||
width: 30px; |
||||
height: 30px; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
border: 1px solid #ccc; |
||||
margin-right: 8px; |
||||
|
||||
&:hover { |
||||
background-color: #172e601f; |
||||
i { |
||||
color: #0e2549; |
||||
} |
||||
} |
||||
// 去掉最后一个按钮右侧边距 |
||||
&:last-child { |
||||
margin-right: 0; |
||||
} |
||||
} |
||||
} |
||||
.el-Cart { |
||||
// 表格标题颜色 |
||||
:deep(.el-table__header) { |
||||
th { |
||||
background-color: #fafafa; |
||||
color: #000; |
||||
} |
||||
} |
||||
// 组件样式开始 |
||||
// 分页样式 |
||||
.demo-pagination-block { |
||||
display: flex; |
||||
justify-content: flex-end; |
||||
margin-top: 6px; |
||||
} |
||||
|
||||
// 表格行高度 |
||||
:deep(.el-table__row) { |
||||
height: 60px; |
||||
} |
||||
// 表格图片 |
||||
.el-Img { |
||||
width: 100%; |
||||
height: 40px; |
||||
|
||||
img { |
||||
width: 100%; |
||||
height: 100%; |
||||
} |
||||
} |
||||
} |
||||
// 新增数据弹窗组件样式 |
||||
:deep(.addlalog){ |
||||
// 弹窗 |
||||
.el-dialog__header{ |
||||
border-bottom: 1px solid #172e607d ; |
||||
margin-right:0; |
||||
margin-bottom:0; |
||||
padding-bottom:20px; |
||||
position: relative; |
||||
i{ |
||||
color:#172e60; |
||||
} |
||||
} |
||||
// 弹窗标题左侧小竖线 |
||||
.el-dialog__header::after{ |
||||
content: ""; |
||||
display: block; |
||||
width: 3px; |
||||
height: 16px; |
||||
background-color: #172e60; |
||||
position: absolute; |
||||
left: 8px; |
||||
top: 24px; |
||||
} |
||||
.el-dialog__body{ |
||||
.el-form{ |
||||
width: 100%; |
||||
display:flex; |
||||
flex-wrap: wrap; |
||||
justify-content: space-between; |
||||
} |
||||
.el-form-item{ |
||||
width:276px; |
||||
|
||||
} |
||||
/* 去掉第三个、第六个、第九个div的右外边距 */ |
||||
.el-form-item:nth-child(3n) { |
||||
margin-right: 0; |
||||
} |
||||
} |
||||
|
||||
.el-form-item__content{ |
||||
height:30px; |
||||
// 日期选择框 |
||||
.el-input{ |
||||
width: 100%; |
||||
height:30px !important; |
||||
} |
||||
// 下拉选择框 |
||||
.el-select{ |
||||
width: 100%; |
||||
} |
||||
} |
||||
|
||||
} |
||||
|
||||
// 底部提交 |
||||
.el-dialog-button{ |
||||
display:flex; |
||||
justify-content: flex-end; |
||||
} |
||||
// 图片上传 |
||||
.img-icon{ |
||||
width: 100%; |
||||
position: relative; |
||||
.el-button{ |
||||
width: 100%; |
||||
background-color: #fff; |
||||
color: #a8abb9; |
||||
justify-content: flex-start; |
||||
border: 1px solid #dcdfe6; |
||||
} |
||||
i{ |
||||
position:absolute; |
||||
left: 110px; |
||||
top: 8px; |
||||
font-size:18px |
||||
} |
||||
} |
||||
:deep(.upload-demo){ |
||||
width:100%; |
||||
.el-upload{ |
||||
width:100% |
||||
} |
||||
} |
||||
} |
||||
</style> |
Loading…
Reference in new issue