中国广东网站建设/地推怎么做最有效

中国广东网站建设,地推怎么做最有效,校园网网络规划与设计方案,免费发布招工的平台Tlias前端 员工管理 条件分页查询&#xff1a; 页面布局 搜索栏&#xff1a; <!-- 搜索栏 --><div class"container"><el-form :inline"true" :model"searchEmp" class"demo-form-inline"><el-form-item label…

Tlias前端

员工管理

条件分页查询:

页面布局

搜索栏:

  
<!-- 搜索栏 --><div class="container"><el-form :inline="true" :model="searchEmp" class="demo-form-inline"><el-form-item label="姓名"><el-input  v-model="searchEmp.name" placeholder="请输入员工姓名" /></el-form-item><el-form-item label="性别"><el-select v-model="searchEmp.gender" placeholder="请选择"><el-option label="男" value="1" /><el-option label="女" value="2" /></el-select></el-form-item><el-form-item label="入职时间"><el-date-picker v-model="searchEmp.date" type="daterange" range-separator="到" start-placeholder="开始日期"end-placeholder="结束日期" :size="size" value-format="YYYY-MM-DD"/></el-form-item><el-form-item><el-button type="primary" @click="search">查询</el-button><el-button type="info" @click="clear">清空</el-button></el-form-item></el-form></div>

Watch:

作用:侦听一个或多个响应式数据源,并在数据源变化时调用传入的回调函数。

用法:1.导入Watch函数2.执行watch函数,传入要侦听的响应式数据源(ref对象)和回调函数

单个响应式变量:

侦听对象的全部属性:

第三个可选参数,常见两个选项:

deep(boolean)是否深度侦听,默认浅层侦听。

immediate(boolean)是否在侦听时创建立即触发的回调函数。

侦听对象的单个属性;

import { ref ,watch} from 'vue'
const searchEmp = ref({name: '',gender: '',date: [],begin: '',end: ''})
//侦听searchEmp的date
watch(() => searchEmp.value.date,(newval,oldval) => {if(searchEmp.value.date.length == 2 ){searchEmp.value.begin = newval[0]searchEmp.value.end = newval[1] }else{searchEmp.value.begin = ''searchEmp.value.end = ''}
})

按钮:

<!-- 按钮 --><div class="container"><el-button type="primary" @click="">+新增员工</el-button><el-button type="danger" @click="">-批量删除</el-button></div>

数据展示表格:

<div class="container"><el-table :data="empList" style="width: 100%"><el-table-column type="selection" width="55" /><el-table-column prop="name" label="姓名" width="120" align="center" /><el-table-column label="性别" width="120" align="center"><template #default="scope">{{ scope.row.gender == 1 ? '男' : '女' }}</template></el-table-column><el-table-column label="头像" align="center" width="180"><template #default="scope"><el-image :src="scope.row.image" style="width:40px" /></template></el-table-column><el-table-column prop="deptName" label="所属部门" width="120" align="center" /><el-table-column prop="job" label="职位" width="120" align="center"><template #default="scope"><span v-if="scope.row.job == 1">班主任</span><span v-else-if="scope.row.job == 2">讲师</span><span v-else-if="scope.row.job == 3">学工主管</span><span v-else-if="scope.row.job == 4">教研主管</span><span v-else-if="scope.row.job == 5">咨询师</span><span v-else>其他</span></template></el-table-column><el-table-column prop="entryDate" label="入职日期" width="180" align="center" /><el-table-column prop="updateTime" label="最后操作时间" width="180" align="center" /><!-- 操作 --><el-table-column label="操作" width="180" align="center"><template #default="scope"><el-button type="primary" size="small" @click=""><el-icon><EditPen /></el-icon>编辑</el-button><el-button type="danger" size="small" @click=""><el-icon><Delete /></el-icon>删除</el-button></template></el-table-column></el-table></div>

分页条:

//定义员工列表
const empList = ref([])
//分页
const currentPage = ref(1)//当前页
const pageSize = ref(10)//每页显示多少条
const background = ref(true)
const total = ref(0)
// 查询
const search = async () => {const res = await queryPageApi(searchEmp.value.name, searchEmp.value.gender,searchEmp.value.begin, searchEmp.value.end, currentPage.value, pageSize.value)if(res.code){empList.value = res.data.rowstotal.value = res.data.total }
​
}
//每页展示记录数变化时
const handleSizeChange = (val) => {search()
}
//当前页变化时
const handleCurrentChange = (val) => {search()
}
<!-- 分页条 --><div class="container"><el-paginationv-model:current-page="currentPage"v-model:page-size="pageSize":page-sizes="[5, 10, 15, 20, 25, 30, 35, 40]":background="background"layout="total, sizes, prev, pager, next, jumper":total="total"@size-change="handleSizeChange"@current-change="handleCurrentChange"/></div>

页面交互:

1.页面加载完毕后,查询员工信息列表

2.点击查询按钮,查询员工信息列表

3.当页码、每页展示记录数发生变化时,查询员工信息列表

新增员工:

新增员工信息的表单包含两个部分:

员工的基本信息

员工的工作经历信息

新增/修改员工的对话框:

1.表单项数据动态展示:

性别(男/女) 职位(班主任/讲师/学工主管/教研主管/) 所属部门(动态查询)

2.工作经历:

添加工作经历:下方就会增加一个工作经历信息

删除工作经历:删除当前这一个工作经历信息

(Vue是基于数据驱动视图展示的)

  
  <!-- 新增/修改员工的对话框 -->
​<el-dialog v-model="dialogVisible" :title="dialogTitle">{{ employee }}<el-form ref="employeeFormRef" :model="employee" label-width="80px"><!-- 基本信息 --><!-- 第一行 --><el-row :gutter="20"><el-col :span="12"><el-form-item label="用户名"><el-input v-model="employee.username" placeholder="请输入员工用户名,2-20个字"></el-input></el-form-item></el-col>
​<el-col :span="12"><el-form-item label="姓名"><el-input v-model="employee.name" placeholder="请输入员工姓名,2-10个字"></el-input></el-form-item></el-col></el-row><!-- 第二行 --><el-row :gutter="20"><el-col :span="12"><el-form-item label="性别"><el-select v-model="employee.gender" placeholder="请选择性别" style="width: 100%;"><el-option v-for="g in genders" :label="g.name" :value="g.value"></el-option></el-select></el-form-item></el-col>
​<el-col :span="12"><el-form-item label="手机号"><el-input v-model="employee.phone" placeholder="请输入员工手机号"></el-input></el-form-item></el-col></el-row><!-- 第三行 --><el-row :gutter="20"><el-col :span="12"><el-form-item label="职位"><el-select v-model="employee.job" placeholder="请选择职位" style="width: 100%;"><el-option v-for="j in jobs" :label="j.name" :value="j.value"></el-option></el-select></el-form-item></el-col><el-col :span="12"><el-form-item label="薪资"><el-input v-model="employee.salary" placeholder="请输入员工薪资"></el-input></el-form-item></el-col></el-row><!-- 第四行 --><el-row :gutter="20"><el-col :span="12"><el-form-item label="所属部门"><el-select v-model="employee.deptId" placeholder="请选择部门" style="width: 100%;"><el-option v-for="d in deptList" :label="d.name" :key="d.id" :value="d.id"></el-option></el-select></el-form-item></el-col><el-col :span="12"><el-form-item label="入职日期"><el-date-picker v-model="employee.entryDate" type="date" style="width: 100%;" placeholder="选择日期"format="YYYY-MM-DD" value-format="YYYY-MM-DD"></el-date-picker></el-form-item></el-col></el-row><!-- 第五行 --><el-row :gutter="20"><el-col :span="24"><el-form-item label="头像"><el-upload class="avatar-uploader" action="/api/upload" :show-file-list="false":on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload"><img v-if="employee.image" :src="employee.image" class="avatar" /><el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon></el-upload></el-form-item></el-col></el-row><!-- 工作经历 --><!-- 第六行 --><el-row :gutter="10"><el-col :span="24"><el-form-item label="工作经历"><el-button type="success" size="small" @click="addExpr">+ 添加工作经历</el-button></el-form-item></el-col></el-row><!-- 第七行 ...  工作经历 --><el-row :gutter="3" v-for="(expr, index) in employee.exprList"><el-col :span="10"><el-form-item size="small" v-model="expr.value.exprDate" label="时间" label-width="80px"><el-date-picker type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"format="YYYY-MM-DD" value-format="YYYY-MM-DD"></el-date-picker></el-form-item></el-col>
​<el-col :span="6"><el-form-item size="small" v-model="expr.company" label="公司" label-width="60px"><el-input placeholder="请输入公司名称"></el-input></el-form-item></el-col>
​<el-col :span="6"><el-form-item size="small" v-model="expr.job" label="职位" label-width="60px"><el-input placeholder="请输入职位"></el-input></el-form-item></el-col>
​<el-col :span="2"><el-form-item size="small" label-width="0px"><el-button type="danger" @click="deleteExpr(index)">- 删除</el-button></el-form-item></el-col></el-row></el-form><!-- 底部按钮 --><template #footer><span class="dialog-footer"><el-button @click="dialogVisible = false">取消</el-button><el-button type="primary" @click="">保存</el-button></span></template>
​</el-dialog>

保存:

1.点击保存之后,发送异步请求到服务器,提交数据。

2.保存完毕后,如果成功,关闭对话框,重新加载列表数据。

3.保存完毕后,如果失败,提示错误信息。

修改员工:

查询回显:

为编辑按钮绑定事件,发送异步请求,根据ID查询员工详细信息,页面回显

 

​
//编辑员工信息
const editEmp = async (id) => {const result = await queryEmpByIdApi(id)if (result.code) {dialogVisible.value = truedialogTitle.value = '修改员工'employee.value = result.data} else {ElMessage.error(result.msg)}//对工作经历数据进行处理let exprList = employee.value.exprList//判断exprList是否有值和长度大于0if (exprList && exprList.length > 0) {exprList.forEach((expr) => {expr.exprDate = [expr.begin, expr.end]})}
}​

保存数据:

点击保存按钮,执行修改数据操作,备注:添加员工和修改员工使用的是同一个表单,需要根据id判断到底是执行新增还是修改。

//保存员工信息
const save = async () => {if (!employeeFormRef.value) {return}employeeFormRef.value.validate(async valid => {if (valid) { // 校验通过let result;if (employee.value.id) {result = await editEmpApi(employee.value)} else {result = await addEmpApi(employee.value)}if (result.code) {ElMessage.success('保存成功')dialogVisible.value = falsesearch()
​} else {ElMessage.error(result.msg)}} else {ElMessage.error('表单校验失败')}})
}

删除员工:

在删除员工信息时,有两个操作路口:

1.点击每条记录之后的“删除”按钮,删除当前这条记录

为“删除”按钮添加绑定事件,触发事件,调用函数,发送异步请求到服务端,根据id删除员工信息

//删除员工信息
const deleteById = async (id) => {ElMessageBox.confirm('你确定要删除该员工吗?', '提示',{ confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning', }).then(async () => {const result = await deleteEmpApi(id)
​if (result.code) {ElMessage.success('删除成功');search();} else {ElMessage.error(result.msg);}
​}).catch(() => {ElMessage.info('已取消删除')})
}

2.选择前面的复选框,选中要删除的员工,点击“批量删除”之后,会批量删除员工信息

为表格的复选框绑定事件,点击复选框之后,获取到目前选中的条件的id(多个id可以封装到数组中),为“批量删除”按钮绑定事件,发送异步请求到服务端,根据id批量删除员工信息。

//批量删除勾选的员工信息
const selectedIds = ref([])
//多选框选中时触发
const handleSelectionChange = (selection) => {selectedIds.value = selection.map(item => item.id)
}
//批量删除员工信息
const deleteBatch = () => {ElMessageBox.confirm('你确定要批量删除这些员工吗?', '提示',{ confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning', }).then(async () => {if (selectedIds.value && selectedIds.value.length > 0) {const result = await deleteEmpApi(selectedIds.value)
​if (result.code) {ElMessage.success('删除成功');search();} else {ElMessage.error(result.msg);}
​} else {ElMessage.error('您没有选择要删除的员工')}
​
​}).catch(() => {ElMessage.info('已取消删除')})
​
}

完整Vue代码:

<script setup>
import { Delete } from '@element-plus/icons-vue'
import { ref, watch, onMounted } from 'vue'
import { queryPageApi, addEmpApi, editEmpApi, queryEmpByIdApi, deleteEmpApi } from '@/api/emp'
import { ElMessage, ElMessageBox } from 'element-plus'
import { queryAllApi as queryAllDeptApi } from '@/api/dept'
​
//职位列表数据
const jobs = ref([{ name: '班主任', value: 1 }, { name: '讲师', value: 2 }, { name: '学工主管', value: 3 }, { name: '教研主管', value: 4 }, { name: '咨询师', value: 5 }, { name: '其他', value: 6 }])
//性别列表数据
const genders = ref([{ name: '男', value: 1 }, { name: '女', value: 2 }])
//部门列表数据
const deptList = ref([])
​
//定义钩子
onMounted(() => {search()//查询员工列表queryAllDept()//查询部门列表
})
//查询部门列表
const queryAllDept = async () => {const res = await queryAllDeptApi()if (res.code) {deptList.value = res.data}
}
//定义搜索条件
const searchEmp = ref({ name: '', gender: '', date: [], begin: '', end: '' })
​
​
​
//侦听searchEmp的date
watch(() => searchEmp.value.date, (newval, oldval) => {if (searchEmp.value.date.length == 2) {searchEmp.value.begin = newval[0]searchEmp.value.end = newval[1]} else {searchEmp.value.begin = ''searchEmp.value.end = ''}
})
// 清空
const clear = () => {searchEmp.value = { name: '', gender: '', date: [] }search()
​
​
}
​
//定义员工列表
const empList = ref([])
//分页
const currentPage = ref(1)//当前页
const pageSize = ref(10)//每页显示多少条
const background = ref(true)
const total = ref(0)
// 查询
const search = async () => {const res = await queryPageApi(searchEmp.value.name, searchEmp.value.gender,searchEmp.value.begin, searchEmp.value.end, currentPage.value, pageSize.value)if (res.code) {empList.value = res.data.rowstotal.value = res.data.total}
​
}
//每页展示记录数变化时
const handleSizeChange = (val) => {search()
}
//当前页变化时
const handleCurrentChange = (val) => {search()
}
//新增员工
const addEmp = () => {dialogVisible.value = truedialogTitle.value = '新增员工'employee.value = {username: '',name: '',gender: '',phone: '',job: '',salary: '',deptId: '',entryDate: '',image: '',exprList: []}//清空表单校验if (employeeFormRef.value) {employeeFormRef.value.resetFields()}
}
​
​
//新增/修改表单
const employeeFormRef = ref(null)
const employee = ref({username: '',name: '',gender: '',phone: '',job: '',salary: '',deptId: '',entryDate: '',image: '',exprList: []
})
​
// 控制弹窗
const dialogVisible = ref(false)
const dialogTitle = ref('新增员工')
​
//文件上传
// 图片上传成功后触发
const handleAvatarSuccess = (response, uploadFile) => {employee.value.image = response.data
}
// 文件上传之前触发
const beforeAvatarUpload = (rawFile) => {if (rawFile.type !== 'image/jpeg' && rawFile.type !== 'image/png') {ElMessage.error('只支持上传图片')return false} else if (rawFile.size / 1024 / 1024 > 10) {ElMessage.error('只能上传10M以内图片')return false}return true
}
//添加工作经历
const addExpr = () => {employee.value.exprList.push({company: '',job: '',begin: '',end: '',exprDate: []})
}
//删除工作经历
const deleteExpr = (index) => {employee.value.exprList.splice(index, 1)
}
//侦听exprList
watch(() => employee.value.exprList, (newValue, oldValue) => {if (employee.value.exprList && employee.value.exprList.length > 0) {employee.value.exprList.forEach(expr => {expr.begin = expr.exprDate[0]expr.end = expr.exprDate[1]})}
}, { deep: true });
​
//保存
//保存员工信息
const save = async () => {if (!employeeFormRef.value) {return}employeeFormRef.value.validate(async valid => {if (valid) { // 校验通过let result;if (employee.value.id) {result = await editEmpApi(employee.value)} else {result = await addEmpApi(employee.value)}if (result.code) {ElMessage.success('保存成功')dialogVisible.value = falsesearch()
​} else {ElMessage.error(result.msg)}} else {ElMessage.error('表单校验失败')}})
}
// 验证规则
const rules = ref({username: [{ required: true, message: '请输入用户名', trigger: 'blur' },{ min: 2, max: 20, message: '用户名长度应在2到20个字符之间', trigger: 'blur' }],name: [{ required: true, message: '请输入姓名', trigger: 'blur' },{ min: 2, max: 10, message: '姓名长度应在2到10个字符之间', trigger: 'blur' }],gender: [{ required: true, message: '请选择性别', trigger: 'change' }],phone: [{ required: true, message: '请输入手机号', trigger: 'blur' },{ pattern: /^1\d{10}$/g, message: '请输入有效的手机号', trigger: 'blur' }]
});
​
//编辑员工信息
const editEmp = async (id) => {const result = await queryEmpByIdApi(id)if (result.code) {dialogVisible.value = truedialogTitle.value = '修改员工'employee.value = result.data} else {ElMessage.error(result.msg)}//对工作经历数据进行处理let exprList = employee.value.exprList//判断exprList是否有值和长度大于0if (exprList && exprList.length > 0) {exprList.forEach((expr) => {expr.exprDate = [expr.begin, expr.end]})}
}
//删除员工信息
const deleteById = async (id) => {ElMessageBox.confirm('你确定要删除该员工吗?', '提示',{ confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning', }).then(async () => {const result = await deleteEmpApi(id)
​if (result.code) {ElMessage.success('删除成功');search();} else {ElMessage.error(result.msg);}
​}).catch(() => {ElMessage.info('已取消删除')})
}
//批量删除勾选的员工信息
const selectedIds = ref([])
//多选框选中时触发
const handleSelectionChange = (selection) => {selectedIds.value = selection.map(item => item.id)
}
//批量删除员工信息
const deleteBatch = () => {ElMessageBox.confirm('你确定要批量删除这些员工吗?', '提示',{ confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning', }).then(async () => {if (selectedIds.value && selectedIds.value.length > 0) {const result = await deleteEmpApi(selectedIds.value)
​if (result.code) {ElMessage.success('删除成功');search();} else {ElMessage.error(result.msg);}
​} else {ElMessage.error('您没有选择要删除的员工')}
​
​}).catch(() => {ElMessage.info('已取消删除')})
​
}
​
​
​
</script>
​
<template><h1>员工管理</h1><!-- 搜索栏 --><div class="container"><el-form :inline="true" :model="searchEmp" class="demo-form-inline"><el-form-item label="姓名"><el-input v-model="searchEmp.name" placeholder="请输入员工姓名" /></el-form-item><el-form-item label="性别"><el-select v-model="searchEmp.gender" placeholder="请选择"><el-option label="男" value="1" /><el-option label="女" value="2" /></el-select></el-form-item><el-form-item label="入职时间"><el-date-picker v-model="searchEmp.date" type="daterange" range-separator="到" start-placeholder="开始日期"end-placeholder="结束日期" :size="size" value-format="YYYY-MM-DD" /></el-form-item><el-form-item><el-button type="primary" @click="search">查询</el-button><el-button type="info" @click="clear">清空</el-button></el-form-item></el-form></div>
​<!-- 按钮 --><div class="container"><el-button type="primary" @click="addEmp">+新增员工</el-button><el-button type="danger" @click="deleteBatch">-批量删除</el-button></div><!-- 表格 --><div class="container"><el-table :data="empList" style="width: 100%" @selection-change="handleSelectionChange"><el-table-column type="selection" width="55" /><el-table-column prop="name" label="姓名" width="120" align="center" /><el-table-column label="性别" width="120" align="center"><template #default="scope">{{ scope.row.gender == 1 ? '男' : '女' }}</template></el-table-column><el-table-column label="头像" align="center" width="180"><template #default="scope"><el-image :src="scope.row.image" style="width:40px" /></template></el-table-column><el-table-column prop="deptName" label="所属部门" width="120" align="center" /><el-table-column prop="job" label="职位" width="120" align="center"><template #default="scope"><span v-if="scope.row.job == 1">班主任</span><span v-else-if="scope.row.job == 2">讲师</span><span v-else-if="scope.row.job == 3">学工主管</span><span v-else-if="scope.row.job == 4">教研主管</span><span v-else-if="scope.row.job == 5">咨询师</span><span v-else>其他</span></template></el-table-column><el-table-column prop="entryDate" label="入职日期" width="180" align="center" /><el-table-column prop="updateTime" label="最后操作时间" width="180" align="center" /><!-- 操作 --><el-table-column label="操作" width="180" align="center"><template #default="scope"><el-button type="primary" size="small" @click="editEmp(scope.row.id)"><el-icon><EditPen /></el-icon>编辑</el-button><el-button type="danger" size="small" @click="deleteById(scope.row.id)"><el-icon><Delete /></el-icon>删除</el-button></template></el-table-column></el-table></div><!-- 分页条 --><div class="container"><el-pagination v-model:current-page="currentPage" v-model:page-size="pageSize":page-sizes="[5, 10, 15, 20, 25, 30, 35, 40]" :background="background"layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handleSizeChange"@current-change="handleCurrentChange" /></div><!-- 新增/修改员工的对话框 -->
​<el-dialog v-model="dialogVisible" :title="dialogTitle"><el-form ref="employeeFormRef" :model="employee" label-width="80px" :rules="rules"><!-- 基本信息 --><!-- 第一行 --><el-row :gutter="20"><el-col :span="12"><el-form-item label="用户名" prop="username"><el-input v-model="employee.username" placeholder="请输入员工用户名,2-20个字"></el-input></el-form-item></el-col>
​<el-col :span="12"><el-form-item label="姓名" prop="name"><el-input v-model="employee.name" placeholder="请输入员工姓名,2-10个字"></el-input></el-form-item></el-col></el-row><!-- 第二行 --><el-row :gutter="20"><el-col :span="12"><el-form-item label="性别" prop="gender"><el-select v-model="employee.gender" placeholder="请选择性别" style="width: 100%;"><el-option v-for="g in genders" :label="g.name" :value="g.value"></el-option></el-select></el-form-item></el-col>
​<el-col :span="12"><el-form-item label="手机号" prop="phone"><el-input v-model="employee.phone" placeholder="请输入员工手机号"></el-input></el-form-item></el-col></el-row><!-- 第三行 --><el-row :gutter="20"><el-col :span="12"><el-form-item label="职位"><el-select v-model="employee.job" placeholder="请选择职位" style="width: 100%;"><el-option v-for="j in jobs" :label="j.name" :value="j.value"></el-option></el-select></el-form-item></el-col><el-col :span="12"><el-form-item label="薪资"><el-input v-model="employee.salary" placeholder="请输入员工薪资"></el-input></el-form-item></el-col></el-row><!-- 第四行 --><el-row :gutter="20"><el-col :span="12"><el-form-item label="所属部门"><el-select v-model="employee.deptId" placeholder="请选择部门" style="width: 100%;"><el-option v-for="d in deptList" :label="d.name" :key="d.id" :value="d.id"></el-option></el-select></el-form-item></el-col><el-col :span="12"><el-form-item label="入职日期"><el-date-picker v-model="employee.entryDate" type="date" style="width: 100%;" placeholder="选择日期"format="YYYY-MM-DD" value-format="YYYY-MM-DD"></el-date-picker></el-form-item></el-col></el-row><!-- 第五行 --><el-row :gutter="20"><el-col :span="24"><el-form-item label="头像"><el-upload class="avatar-uploader" action="/api/upload" :show-file-list="false":on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload"><img v-if="employee.image" :src="employee.image" class="avatar" /><el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon></el-upload></el-form-item></el-col></el-row><!-- 工作经历 --><!-- 第六行 --><el-row :gutter="10"><el-col :span="24"><el-form-item label="工作经历"><el-button type="success" size="small" @click="addExpr">+ 添加工作经历</el-button></el-form-item></el-col></el-row><!-- 第七行 ...  工作经历 --><el-row :gutter="3" v-for="(expr, index) in employee.exprList"><el-col :span="10"><el-form-item size="small" label="时间" label-width="80px"><el-date-picker v-model="expr.exprDate" type="daterange" range-separator="至" start-placeholder="开始日期"end-placeholder="结束日期" format="YYYY-MM-DD" value-format="YYYY-MM-DD"></el-date-picker></el-form-item></el-col>
​<el-col :span="6"><el-form-item size="small" label="公司" label-width="60px"><el-input v-model="expr.company" placeholder="请输入公司名称"></el-input></el-form-item></el-col>
​<el-col :span="6"><el-form-item size="small" label="职位" label-width="60px"><el-input v-model="expr.job" placeholder="请输入职位"></el-input></el-form-item></el-col>
​<el-col :span="2"><el-form-item size="small" label-width="0px"><el-button type="danger" @click="deleteExpr(index)">- 删除</el-button></el-form-item></el-col></el-row></el-form><!-- 底部按钮 --><template #footer><span class="dialog-footer"><el-button @click="dialogVisible = false">取消</el-button><el-button type="primary" @click="save">保存</el-button></span></template>
​</el-dialog>
​
</template>
​
<style scoped>
.container {margin: 15px 0px;width: 100%;
}
​
.avatar {height: 40px;
}
​
.avatar-uploader .avatar {width: 78px;height: 78px;display: block;
}
​
.avatar-uploader .el-upload {border: 1px dashed var(--el-border-color);border-radius: 6px;cursor: pointer;position: relative;overflow: hidden;transition: var(--el-transition-duration-fast);
}
​
.avatar-uploader .el-upload:hover {border-color: var(--el-color-primary);
}
​
.el-icon.avatar-uploader-icon {font-size: 28px;color: #8c939d;width: 78px;height: 78px;text-align: center;/* 添加灰色的虚线边框 */border: 1px dashed var(--el-border-color);
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/72989.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python进阶教程丨lambda函数

1. lambda函数是什么&#xff1f; 在 Python 里&#xff0c;lambda 函数是一种特殊类型的函数&#xff0c;也被叫做匿名函数。匿名”意味着它不需要像常规函数那样使用 def 来进行命名。lambda lambda 函数本质上是简洁的临时函数 &#xff0c;它适用于只需要简单逻辑的场景&a…

苹果HFS+56TB存储MOV文件出错的恢复方法

HFS文件系统是Apple电脑中默认的最常见的文件系统。HFS来源于UNIX&#xff0c;优势就是稳定性&#xff0c;另外HFS是支持日志功能的&#xff0c;所以很多存储设备也采用了HFS文件系统。再稳定的文件系统也有“马失前蹄”的时候&#xff0c;下面就来聊下HFS出现文件出错、丢失时…

电源电路篇

电源电路篇 一、LDO-Low Dropout Regulator(低压差线性稳压器)1.1 AMS1117-3.3V芯片 二、DCDC-Direct Current to Direct Current(开关稳压器)2.1 降压(Buck)电路2.1.1 TPS5450-5V芯片 一、LDO-Low Dropout Regulator(低压差线性稳压器) LDO是一种线性稳压器&#xff0c;用于提…

java项目之在线购物系统(源码+文档)

项目简介 在线购物系统实现了以下功能&#xff1a; 使用在线购物系统的用户分管理员和用户两个角色的权限子模块。 管理员所能使用的功能主要有&#xff1a;主页、个人中心、用户管理、商品分类管理、商品信息管理、系统管理、订单管理等。 用户可以实现主页、个人中心、我的…

go语言中空结构体

空结构体(struct{}) 普通理解 在结构体中&#xff0c;可以包裹一系列与对象相关的属性&#xff0c;但若该对象没有属性呢&#xff1f;那它就是一个空结构体。 空结构体&#xff0c;和正常的结构体一样&#xff0c;可以接收方法函数。 type Lamp struct{}func (l Lamp) On()…

Unity实现连连看连线效果

1.一个比较简单的向量计算&#xff0c;用的LineRenderer实现&#xff1b; 已知起始A点和终点C点&#xff0c;求B点&#xff1b; 先计算A点到C点的向量取归一化当做方向&#xff0c;再给定一个“模长”&#xff08;B点到A点的模长&#xff09;乘以该方向&#xff0c;最后加上L…

【MySQL】触发器与存储引擎

目录 触发器基本概念触发器操作创建触发器NEW 与 OLD查看触发器删除触发器 注意事项 存储引擎基本概念基本操作查询当前数据库支持的存储引擎查看当前的默认存储引擎查看某个表用的存储引擎创建表时指定存储引擎修改表的存储引擎 触发器 基本概念 概述&#xff1a; 触发器&a…

能“嘎嘎提升”提升用户居住体验的智能家居物联网框架推荐!

智能家居在日常生活中给我们的带来了更多的便利&#xff0c;更让有些用户切实地体会到了科技的魅力&#xff0c;对于想要打造属于自己的智能家居氛围感的用户们&#xff0c;以下是一些能够帮助提升居住体验的智能家居物联网框架及应用&#xff1a; 1. 涂鸦智能&#xff08;Tuy…

DevEco Studio的使用

目录 1.创建ArkTS工程 2.ArkTS工程目录结构&#xff08;Stage模型&#xff09; 构建第一个页面 构建第二个页面 实现页面间的跳转 1.创建ArkTS工程 若首次打开DevEco Studio&#xff0c;请点击Create Project创建工程。如果已经打开了一个工程&#xff0c;请在菜单栏选择…

性能监控——vmstat

性能监控——vmstat ​ 性能监控是对 IT 系统运行效率和有效性的系统观察和测量。它涉及收集、分析和报告各种组件&#xff08;包括应用程序、网络、服务器和数据库&#xff09;的关键性能指标 (KPI)。此过程使用专门的工具来跟踪响应时间、吞吐量、资源利用率和错误率等指标。…

图像分割的mask有空洞怎么修补

分享一个对实例分割mask修补的方法&#xff0c;希望对大家有所帮助。 1. 这是我准备分割的图片 2 分割结果 可以看到衣服部分有一些没分割出来&#xff0c;二值化图片能清晰看到衣服部分有些黑色未分出的地方。 3 补全mask区域 import cv2 import numpy as npdef fill_mask_h…

Qt 控件概述 QLabel

目录 QLabel显示类控件 label如何做到与窗口同步变化 边框 Frame QLabel显示类控件 ​​ ​​ textFormat &#xff1a;设置文件格式 ​ Pixmap &#xff1a;标签图片 label如何做到与窗口同步变化 Qt中对应用户的操作 &#xff1a; 事件和信号 拖拽窗口大小就会触发…

git 命令回退版本

1、查看提交记录 git log --oneline # 简化的提交历史&#xff08;推荐&#xff09; # 或 git log # 完整提交历史2、版本回退 git reset --hard <commit-hash>3、如果已推送过代码到远程仓库&#xff0c;需强制推送更新 git push -f

浅分析 PE3R 感知高效的三维重建

"近期&#xff0c;二维到三维感知技术的进步显著提升了对二维图像中三维场景的理解能力。然而&#xff0c;现有方法面临诸多关键挑战&#xff0c;包括跨场景泛化能力有限、感知精度欠佳以及重建速度缓慢。为克服这些局限&#xff0c;我们提出了感知高效三维重建框架&#…

汇编与反汇编:DEBUG 命令使用指南

前言 汇编语言是计算机底层编程语言&#xff0c;直接与 CPU 指令集对应。掌握汇编语言和调试工具&#xff08;如DEBUG&#xff09;是深入理解计算机工作原理的关键。本文将介绍汇编与反汇编的基本概念&#xff0c;并详细讲解如何使用 DEBUG 命令进行调试和内存操作。 目录 一、…

栈/堆/static/虚表

在 C 里&#xff0c;栈空间主要用来存放局部变量、函数调用信息等。下面为你介绍栈空间在 C 里的运用方式。 1. 局部变量的使用 在函数内部定义的变量会被存于栈空间&#xff0c;当函数执行结束&#xff0c;这些变量会自动被销毁。 #include <iostream>void exampleFu…

搭建个人博客教程(Hexo)

如何快速搭建一套本地的博客系统呢&#xff1f;这里有一套gitNode.jsHexo的部署方案来进行解决。 安装git Git 是一款免费开源的分布式版本控制系统&#xff0c;由 Linus Torvalds 于 2005 年为 Linux 内核开发设计。它通过本地仓库和远程仓库实现代码管理&#xff0c;支持分支…

鸿蒙NEXT开发问题大全(不断更新中.....)

目录 问题1&#xff1a;鸿蒙NEXT获取华为手机的udid ​问题2&#xff1a;[Fail]ExecuteCommand need connect-key? 问题3&#xff1a;测试时如何安装app包 问题1&#xff1a;鸿蒙NEXT开发获取华为手机的udid hdc -t "设备的序列号" shell bm get --udid 问题2&…

LiteratureReading:[2016] Enriching Word Vectors with Subword Information

文章目录 一、文献简明&#xff08;zero&#xff09;二、快速预览&#xff08;first&#xff09;1、标题分析2、作者介绍3、引用数4、摘要分析&#xff08;1&#xff09;翻译&#xff08;2&#xff09;分析 5、总结分析&#xff08;1&#xff09;翻译&#xff08;2&#xff09;…

ZMC600E,多核异构如何成就机器人精准控制?

ZMC600E主站控制器凭借其多核异构处理器的强大性能&#xff0c;实现了高算力与高实时性的完美平衡&#xff0c;让机器人动作流畅、精准无误。接下来&#xff0c;让我们深入了解其内核结构的奥秘。 在ZMC600E主站控制器控制机器人的时候&#xff0c;可以精准的控制机器人执行各种…