Commit bab6820f authored by dll's avatar dll

'考勤汇总图表描绘'

parents 26115a9e 805611b3
...@@ -284,6 +284,7 @@ export default { ...@@ -284,6 +284,7 @@ export default {
return val return val
} }
}, },
// geshu
// 格式化是否在政务中心 // 格式化是否在政务中心
formatterSource(row, column, val){ formatterSource(row, column, val){
const content = formatter(this.tableData, column, val); const content = formatter(this.tableData, column, val);
...@@ -302,6 +303,7 @@ export default { ...@@ -302,6 +303,7 @@ export default {
formattereErrorStatus(row,column,val){ formattereErrorStatus(row,column,val){
const content = formatter(this.tableData, column, val) const content = formatter(this.tableData, column, val)
if (content) { if (content) {
return <el-tag size="mini" type="danger">{this.util_formatter('errorStatus', val)}</el-tag> return <el-tag size="mini" type="danger">{this.util_formatter('errorStatus', val)}</el-tag>
} else { } else {
return val return val
......
...@@ -28,7 +28,7 @@ instance.interceptors.request.use(config => { ...@@ -28,7 +28,7 @@ instance.interceptors.request.use(config => {
// const hostname = location.hostname; // const hostname = location.hostname;
const baseURL =config.baseURL; const baseURL =config.baseURL;
//const port = location.port; //const port = location.port;
// const port =process.env.VUE_APP_PORTAL_PORT=='undefined'?'11072':process.env.VUE_APP_PORTAL_PORT; // const port =process.env.VUE_APP_PORTAL_PORT=='undefined'?'11078':process.env.VUE_APP_PORTAL_PORT;
// 测试用 // 测试用
//http://192.168.0.98:11039 //http://192.168.0.98:11039
...@@ -38,11 +38,14 @@ instance.interceptors.request.use(config => { ...@@ -38,11 +38,14 @@ instance.interceptors.request.use(config => {
// 代 // 代
// http://192.168.0.108/17500 // http://192.168.0.108/17500
// const hostname = '192.168.0.108' //const hostname = '192.168.0.116'
// const port = '17500' //const port = '17500'
const hostname = '192.168.0.108' const hostname = '192.168.0.116'
const port = '11039' const port = '17500'
// const hostname = '192.168.0.98'
// const port = '11039'
// 动态修改请求地址 // 动态修改请求地址
if (config.url.startsWith('/')) { if (config.url.startsWith('/')) {
......
export const timestampToTime = (timestamp) => { export const timestampToTime = (timestamp,transLength) => {
// 时间戳为10位需*1000,时间戳为13位不需乘1000 // 时间戳为10位需*1000,时间戳为13位不需乘1000
var date = null let date = null
if(timestamp.length<13){ if(timestamp.length<13){
date= new Date(timestamp * 1000); date= new Date(timestamp * 1000);
}else{ }else{
date= new Date(timestamp); date= new Date(timestamp);
} }
var Y = date.getFullYear() + "-"; let Y = date.getFullYear() + "-";
var M = let M =
(date.getMonth() + 1 < 10 (date.getMonth() + 1 < 10
? "0" + (date.getMonth() + 1) ? "0" + (date.getMonth() + 1)
: date.getMonth() + 1) + "-"; : date.getMonth() + 1) + "-";
var D = (date.getDate() < 10 ? "0" + date.getDate() : date.getDate()) + " "; let D = (date.getDate() < 10 ? "0" + date.getDate() : date.getDate());
var h = date.getHours() + ":"; let h = " "+date.getHours() + ":";
var m = date.getMinutes() + ":"; let m = date.getMinutes() + ":";
var s = date.getSeconds(); let s = date.getSeconds();
return Y + M + D; switch(transLength){
case 3:
return Y + M + D;
case 6:
return Y + M + D + h + m + s;
}
} }
// 小时:分钟 ==》 转分钟 // 小时:分钟 ==》 转分钟
...@@ -40,4 +47,62 @@ export const transFormTime = (num) => { ...@@ -40,4 +47,62 @@ export const transFormTime = (num) => {
return "0:00"; return "0:00";
} }
} }
// 时间戳 转 yyyy-MM-dd
\ No newline at end of file //当前月第一天
export const getFirstDay = () => {
let y = new Date().getFullYear(); //获取年份
let m = new Date().getMonth() + 1; //获取月份
let d = '01';
m = m < 10 ? '0' + m : m; //月份补 0
return [y,m,d].join("-")
}
//当前月最后一天
export const getLastDay = () =>{
let y = new Date().getFullYear(); //获取年份
let m = new Date().getMonth() + 1; //获取月份
let d = new Date(y, m, 0).getDate(); //获取当月最后一日
m = m < 10 ? '0' + m : m; //月份补 0
d = d < 10 ? '0' + d : d; //日数补 0
return [y,m,d].join("-")
}
//获取两日期之间日期列表函数
export const getdiffdate = (stime,etime) =>{
//初始化日期列表,数组
let diffdate = new Array();
let i=0;
//开始日期小于等于结束日期,并循环
while(stime<=etime){
diffdate[i] = stime;
//获取开始日期时间戳
let stime_ts = new Date(stime).getTime();
//增加一天时间戳后的日期
let next_date = stime_ts + (24*60*60*1000);
//拼接年月日,这里的月份会返回(0-11),所以要+1
let next_dates_y = new Date(next_date).getFullYear()+'-';
let next_dates_m = (new Date(next_date).getMonth()+1 < 10)?'0'+(new Date(next_date).getMonth()+1)+'-':(new Date(next_date).getMonth()+1)+'-';
let next_dates_d = (new Date(next_date).getDate() < 10)?'0'+new Date(next_date).getDate():new Date(next_date).getDate();
stime = next_dates_y+next_dates_m+next_dates_d;
//增加数组key
i++;
}
return diffdate;
}
export const getMyDay = (date) => {
let week;
if (date.getDay() == 0) week = "周日"
if (date.getDay() == 1) week = "周一"
if (date.getDay() == 2) week = "周二"
if (date.getDay() == 3) week = "周三"
if (date.getDay() == 4) week = "周四"
if (date.getDay() == 5) week = "周五"
if (date.getDay() == 6) week = "周六"
return week;
}
\ No newline at end of file
...@@ -284,6 +284,17 @@ export default { ...@@ -284,6 +284,17 @@ export default {
return false return false
} }
} }
if(this.form.startTime && this.form.endTime){
let startValue = Date.parse(this.form.startTime)
let endValue = Date.parse(this.form.endTime)
if(startValue>endValue){
this.$message.error('查询-结束的日期需大于开始日期')
this.form.endTime = ''
return false
}
}
let params = JSON.parse(JSON.stringify(this.form)) //不更改原始数据 let params = JSON.parse(JSON.stringify(this.form)) //不更改原始数据
// console.log(this.form,'form参数') // console.log(this.form,'form参数')
let data = this.decode(params); let data = this.decode(params);
......
...@@ -5,31 +5,38 @@ ...@@ -5,31 +5,38 @@
:visible.sync="open" :visible.sync="open"
:direction="direction" :direction="direction"
size="50%"> size="50%">
<div> <div style="padding:20px;font-size:15px">
已选择6个:
</div>
<div class="staffList">
<div v-for="item in 5" :key="item" class="mt10">
<span>刘德华</span>
<span>的下班时间18:00打卡异常状态</span>
<span class="ml10">缺卡</span>
<span class="ml10">修改为</span>
</div>
<div>
<!-- 处理异常状态 -->
<el-select>
<el-option></el-option>
</el-select>
<!-- 早退/迟到 -->
<el-input style="width:220px" placeholder="请输入数字">
<template slot="append">分钟</template>
</el-input>
</div>
<div> <div>
<span>备注:</span> 已选择{{selection.length}}个:
<el-input placeholder="请输入备注" v-model="dealParams.remark"></el-input>
</div> </div>
<div class="staffList mt20">
<div v-for="item in selection" :key="item" class="mt10">
<span> {{item.staffName}} </span>
<span>{{item.goOrOff}} 时间 {{item.goOffDateTime}} 打卡异常状态</span>
<span class="ml10" style="color:#f56c6c">
<!-- {{dict['errorStatus'][item.errorStatus]}} -->
</span>
<span class="ml10">修改为</span>
</div>
<div class="mt10">
<!-- 处理异常状态 -->
<el-select>
<el-option></el-option>
</el-select>
<!-- 早退/迟到 -->
<el-input style="width:220px" placeholder="请输入数字" :maxlength="4"
class="ml20" type="number">
<template slot="append">分钟</template>
</el-input>
</div>
<div class="mt10">
<span>备注:</span>
<el-input placeholder="请输入备注" type="textarea" show-word-limit class="mt10"
:maxlength="50" v-model="dealParams.remark"></el-input>
</div>
</div>
</div> </div>
</el-drawer> </el-drawer>
</template> </template>
...@@ -46,10 +53,6 @@ ...@@ -46,10 +53,6 @@
}, },
data() { data() {
return { return {
// 子表选中数据
checkedAttendanceRecordDetail: [],
// 考勤打卡记录详细信息表格数据
attendanceRecordDetailList: [],
// 遮罩层 // 遮罩层
loading: true, loading: true,
// 弹出层标题 // 弹出层标题
...@@ -57,11 +60,6 @@ ...@@ -57,11 +60,6 @@
// 是否显示弹出层 // 是否显示弹出层
open: false, open: false,
direction:"rtl", direction:"rtl",
toString:[
],
toDate:[
"attendanceDate",
],
// 表单校验 // 表单校验
rules: { rules: {
staffName: [ staffName: [
...@@ -75,58 +73,25 @@ ...@@ -75,58 +73,25 @@
dealParams:{ dealParams:{
remark:'', remark:'',
errorStatus:'' errorStatus:''
} },
selection:[]
} }
}, },
methods: { methods: {
/** 考勤打卡记录详细信息序号 */
rowAttendanceRecordDetailIndex({ row, rowIndex }) {
row.index = rowIndex + 1;
},
/** 考勤打卡记录详细信息添加按钮操作 */
handleAddAttendanceRecordDetail() {
let obj = {};
obj.shiftsId = "";
obj.shiftsName = "";
obj.goWorkDate = "";
obj.goWorkResult = "";
obj.offWorkDate = "";
obj.offWorkResult = "";
obj.remark = "";
obj.createUserId = "";
obj.createTime = "";
obj.updateUserId = "";
obj.updateTime = "";
this.attendanceRecordDetailList.push(obj);
},
/** 考勤打卡记录详细信息删除按钮操作 */
handleDeleteAttendanceRecordDetail() {
if (this.checkedAttendanceRecordDetail.length == 0) {
this.$alert("请先选择要删除的考勤打卡记录详细信息数据", "提示", { confirmButtonText: "确定", });
} else {
this.attendanceRecordDetailList.splice(this.checkedAttendanceRecordDetail[0].index - 1, 1);
}
},
/** 单选框选中数据 */
handleAttendanceRecordDetailSelectionChange(selection) {
if (selection.length > 1) {
this.$refs.attendanceRecordDetail.clearSelection();
this.$refs.attendanceRecordDetail.toggleRowSelection(selection.pop());
} else {
this.checkedAttendanceRecordDetail = selection;
}
},
// 渲染前置处理 // 渲染前置处理
beforeRender(data) { beforeRender(data) {
if(data.entity.attendanceRecordDetailList) {
this.attendanceRecordDetailList = data.entity.attendanceRecordDetailList;
}
return data return data
}, },
/** 编辑 */ /** 编辑 */
edit(row) { edit(row,selection) {
this.reset() console.log(row,selection)
if(this.selection.length<1){
this.selection = [row]
}else{
this.selection = selection
}
this.open = true
this.query = { id: row.id }; this.query = { id: row.id };
this.urls.currUrl ="attendance/record/error/edit"; this.urls.currUrl ="attendance/record/error/edit";
this.getData(); this.getData();
...@@ -139,38 +104,14 @@ ...@@ -139,38 +104,14 @@
}, },
/**获取数据后弹框 */ /**获取数据后弹框 */
afterRender(data) { afterRender(data) {
console.log(data)
this.open = true; this.open = true;
}, },
afterSubmit(data) { afterSubmit(data) {
this.open = false; this.open = false;
this.$emit("ok"); this.$emit("ok");
}, }
}
// 表单重置 }
reset() {
this.form = {
staffId : null,
staffName : "",
workNum : "",
deptId : null,
deptName : "",
positionId : null,
positionName : "",
attendanceGroupId : null,
attendanceGroupName : "",
shiftsId : null,
shiftsName : "",
attendanceDate : null,
remark : "",
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
</script> </script>
...@@ -47,17 +47,22 @@ ...@@ -47,17 +47,22 @@
// this.$refs.dialogform.view(row); // this.$refs.dialogform.view(row);
// }, // },
morehandle(row){ morehandle(){
if(this.selection.length < 1){ if(this.selection.length < 1){
this.$message.error('请至少选择一条处理') this.$message.error('请至少选择一条处理')
return return
} }
this.$refs.drawerShow.edit(row); let arr = this.tableData.data.filter(item => {
if(this.selection.includes(item.id)){
return item
}
})
this.$refs.drawerShow.edit('',arr);
}, },
// 处理 // 处理
handle(err){ handle(err){
console.log(err) console.log(err)
this.$refs.drawerShow.edit(err); this.$refs.drawerShow.edit(err,[]);
}, },
// 撤销 // 撤销
reCancle(err){ reCancle(err){
...@@ -143,27 +148,36 @@ ...@@ -143,27 +148,36 @@
{label: "班次", prop: "shiftsName"}, {label: "班次", prop: "shiftsName"},
{label: "异常状态", prop: "errorStatus",formatter: this.formattereErrorStatus}, {label: "异常状态", prop: "errorStatus",formatter: this.formattereErrorStatus},
{label: "异常时间", prop: "errorDateTime", formatter: this.formatterDate}, {label: "异常时间", prop: "errorDateTime", formatter: this.formatterDate},
{label: "处理结果", prop: "processResult", formatter: this.formatterDate}, {label: "处理结果", prop: "processResult", formatter: this.formatters},
{label: "上下班时间", prop: "goOffDateTime", formatter: this.formatterDate}, {label: "上下班时间", prop: "goOffDateTime",formatter:(row) => {
return row.goOrOff+" "+row.goOffDateTime
}},
{label: "实际打卡时间", prop: "actualAttendanceDateTime", formatter: this.formatterDate}, {label: "实际打卡时间", prop: "actualAttendanceDateTime", formatter: this.formatterDate},
{label: "处理时间", prop: "operDateTime", formatter: this.formatterDate}, {label: "处理时间", prop: "operDateTime", formatter: this.formatters},
{label: "处理状态", prop: "processStatus",formatter: this.formattereDealStatus}, {label: "处理状态", prop: "processStatus",formatter: this.formattereDealStatus},
{label: "处理人", prop: "opertor"}, {label: "处理人", prop: "opertor",formatter:this.formatters},
{label: "备注", prop: "remark"}, {label: "备注", prop: "remark",formatter:this.formatters},
{ {
label: "操作", label: "操作",
width: 240, width: 240,
formatter: (row) => { formatter: (row) => {
return ( if(row.processStatus == 0 || !row.processStatus){
<span> return(
<el-button type="text" size='mini' onClick={() => { <el-button type="text" size='mini' onClick={() => {
this.handle(row) this.handle(row)
}} v-if={row.processStatus == 0}>处理</el-button> }}>处理</el-button>
<el-button type="text" size='mini' onClick={() => { )
this.reCancle(row) }else{
}} v-else>撤销</el-button> return (
</span> <span>
)
<el-button type="text" size='mini' onClick={() => {
this.reCancle(row)
}}>撤销</el-button>
</span>
)
}
} }
} }
] ]
......
...@@ -152,7 +152,7 @@ ...@@ -152,7 +152,7 @@
if(res.code == 1){ if(res.code == 1){
let arr = res.data.data let arr = res.data.data
this.exportList = arr.map(item => { this.exportList = arr.map(item => {
item.createTime = timestampToTime(item.createTime) item.createTime = timestampToTime(item.createTime,6)
item.islook = false item.islook = false
return item return item
}) })
......
...@@ -179,7 +179,7 @@ ...@@ -179,7 +179,7 @@
if(res.code == 1){ if(res.code == 1){
let arr = res.data.data let arr = res.data.data
this.exportList = arr.map(item => { this.exportList = arr.map(item => {
item.createTime = timestampToTime(item.createTime) item.createTime = timestampToTime(item.createTime,6)
item.islook = false item.islook = false
return item return item
}) })
......
...@@ -63,15 +63,58 @@ ...@@ -63,15 +63,58 @@
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
import dialogShow from "./dialogshow"; import dialogShow from "./dialogshow";
import table from "@/assets/mixins/table"; import table from "@/assets/mixins/table";
import {getFirstDay,getLastDay,getdiffdate,timestampToTime,getMyDay} from '@/assets/utils/dateFormat.js'
export default { export default {
name: "AttendanceStatList", name: "AttendanceStatList",
components: { components: {
dialogShow dialogShow
}, },
mixins: [table], mixins: [table],
created() { created() {
this.query.startTime = getFirstDay()
this.query.endTime = getLastDay()
this.initalArr = this.config.columns
}, },
methods: { methods: {
// 处理
handleArr(arr,currentTime){
let timeArr = arr.map(item1 => item1.createTime)
let index = timeArr.findIndex(item => item === currentTime)
if(index > -1){
return arr[index].attendanceSummary
}else{
return '-'
}
},
afterRender(data) {
this.addColumn = getdiffdate(this.query.startTime,this.query.endTime)
// 动态处理
let addobjArr = []
this.addColumn.map((item,index) => {
let obj = {
label:item +'('+ getMyDay(new Date(item))+')',
prop:'attendanceStaffStatEntities',
formatter: (row) => {
if(row.attendanceStaffStatEntities.length>0){
return this.handleArr(row.attendanceStaffStatEntities,item)
}else{
return '-'
}
}
}
addobjArr.push(obj)
})
this.config.columns = [...this.initalArr,...addobjArr]
this.$forceUpdate()
},
beforeRender(row) {
row.data.forEach(element => {
element.attendanceStaffStatEntities.forEach(item1 => {
item1.createTime = timestampToTime(item1.createTime,3)
})
})
return row
},
/** 重写新增方法 */ /** 重写新增方法 */
toAdd(row) { toAdd(row) {
this.$refs.dialogform.add(row); this.$refs.dialogform.add(row);
...@@ -135,13 +178,13 @@ ...@@ -135,13 +178,13 @@
fuzzy: false fuzzy: false
}, },
{ {
name:'attendanceDateStart', name:'startTime',
type: "date", type: "date",
label: "考勤开始时间", label: "考勤开始时间",
fuzzy: false fuzzy: false
}, },
{ {
name:'attendanceDateEnd', name:'endTime',
type: "date", type: "date",
label: "考勤结束时间", label: "考勤结束时间",
fuzzy: false fuzzy: false
...@@ -166,7 +209,6 @@ ...@@ -166,7 +209,6 @@
{label: "窗口类别", prop: "windowCategory",fixed:'left',width:100}, {label: "窗口类别", prop: "windowCategory",fixed:'left',width:100},
{label: "员工姓名", prop: "staffName",fixed:'left',width:100}, {label: "员工姓名", prop: "staffName",fixed:'left',width:100},
{label:"部门",prop:"deptName"}, {label:"部门",prop:"deptName"},
{label: "回单位(天)", prop: "backToUnit"}, {label: "回单位(天)", prop: "backToUnit"},
...@@ -220,19 +262,7 @@ ...@@ -220,19 +262,7 @@
{label: "无故缺席会议(次)", prop: "unexcusedMeetingAbsence"}, {label: "无故缺席会议(次)", prop: "unexcusedMeetingAbsence"},
{label: "会议早退", prop: "earlyLeaveMeeting"}, {label: "会议早退", prop: "earlyLeaveMeeting"}
// {label: "创建用户", prop: "createUserId", formatter: this.formatter},
// {
// label: "操作",
// width: 240,
// formatter: row => {
// return (
// <table-buttons noAdd noEdit noView noDel row={row} onEdit={this.toEdit}
// onView={this.toView} onDel={this.toDel} />
// );
// }
// }
] ]
}, },
setcolum:[], setcolum:[],
...@@ -240,12 +270,11 @@ ...@@ -240,12 +270,11 @@
checkList:[], checkList:[],
drawerhistory:false, drawerhistory:false,
// 动态新增列表 // 动态新增列表
addColumn:[ addColumn:[],
initalArr:[]
] }
};
} }
}; }
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
.hisList{ .hisList{
......
...@@ -147,7 +147,7 @@ export default { ...@@ -147,7 +147,7 @@ export default {
this.open = true this.open = true
let arr = res.data.data let arr = res.data.data
this.recordList = arr.map(item => { this.recordList = arr.map(item => {
item.createTime = timestampToTime(item.createTime) item.createTime = timestampToTime(item.createTime,6)
return item return item
}) })
......
...@@ -108,6 +108,7 @@ ...@@ -108,6 +108,7 @@
import table from "@/assets/mixins/table"; import table from "@/assets/mixins/table";
import TabPane from "@/components/tabPane.vue" import TabPane from "@/components/tabPane.vue"
import drawerStaff from './drawershowStaff.vue' import drawerStaff from './drawershowStaff.vue'
import {timestampToTime} from '@/assets/utils/dateFormat.js'
export default { export default {
name: "JobList", name: "JobList",
components: { components: {
...@@ -142,6 +143,9 @@ ...@@ -142,6 +143,9 @@
this.$post('/job/info?id='+this.currentId).then(res => { this.$post('/job/info?id='+this.currentId).then(res => {
if(res.code == 1){ if(res.code == 1){
this.staffList = res.data.staffEntities this.staffList = res.data.staffEntities
this.staffList.forEach(item => {
item.createTime = timestampToTime(item.createTime,6)
})
} }
}) })
}, },
...@@ -178,7 +182,7 @@ ...@@ -178,7 +182,7 @@
if(this.multipleSelection.length>0){ if(this.multipleSelection.length>0){
params['idList'] = this.multipleSelection params['idList'] = this.multipleSelection
} }
this.$download("/job/exportExcel", { this.$download("/staff/exportExcel", {
...params ...params
}, { type: "excel" }).then(() => this.isExport = false).catch(error => { }, { type: "excel" }).then(() => this.isExport = false).catch(error => {
this.isExport = false; this.isExport = false;
......
...@@ -252,7 +252,7 @@ ...@@ -252,7 +252,7 @@
this.$refs.upload.submit(); this.$refs.upload.submit();
}, },
afterRender(data){ afterRender(data){
this.tableData.staff.refreshDate = timestampToTime(this.tableData.staff.refreshDate) this.tableData.staff.refreshDate = timestampToTime(this.tableData.staff.refreshDate,6)
} }
}, },
data() { data() {
......
...@@ -115,8 +115,8 @@ ...@@ -115,8 +115,8 @@
this.info = res.data.holidayLists[0] this.info = res.data.holidayLists[0]
this.dict = res.dict this.dict = res.dict
this.allinfo = res.data//总 this.allinfo = res.data//总
this.info.workBeginDay = this.info.workBeginDay?timestampToTime(Number(this.info.workBeginDay)):'-' this.info.workBeginDay = this.info.workBeginDay?timestampToTime(Number(this.info.workBeginDay),3):'-'
this.info.workFormalDay = this.info.workFormalDay?timestampToTime(Number(this.info.workFormalDay)):'-' this.info.workFormalDay = this.info.workFormalDay?timestampToTime(Number(this.info.workFormalDay),3):'-'
} }
}) })
.catch(err => { .catch(err => {
......
...@@ -37,12 +37,14 @@ ...@@ -37,12 +37,14 @@
label="用户名称" label="用户名称"
prop="realName" prop="realName"
v-model="form.realName" v-model="form.realName"
:maxLength="15"
/> />
<Field <Field
:span="20" :span="20"
label="手机号码" label="手机号码"
prop="mobile" prop="mobile"
v-model="form.mobile" v-model="form.mobile"
:maxLength="11"
/> />
<!-- <Field label="用户类型" prop="userType" v-model="form.userType" :enumData='dict.userType' type='select' /> <!-- <Field label="用户类型" prop="userType" v-model="form.userType" :enumData='dict.userType' type='select' />
<Field label="用户状态" prop="status" v-model="form.status" :enumData='dict.status' type='select' /> --> <Field label="用户状态" prop="status" v-model="form.status" :enumData='dict.status' type='select' /> -->
......
<template> <template>
<!-- 弹出框表单 --> <!-- 弹出框表单 -->
<el-dialog :title="title" :visible.sync="open" width="90%" append-to-body> <el-dialog :title="title" :visible.sync="open" width="60%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px"> <el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row> <el-row>
<Field label="姓名" prop="name" v-model="form.name" placeholder="请输入姓名"/> <Field label="姓名" prop="name" v-model="form.name" placeholder="请输入姓名" :maxLength="20"/>
<Field label="电话号码" prop="phone" v-model="form.phone" placeholder="请输入电话号码"/> <Field label="电话号码" prop="phone" v-model="form.phone" placeholder="请输入电话号码" :maxLength="11"/>
<Field label="工号" prop="number" v-model="form.number" placeholder="请输入工号"/> <Field label="工号" prop="number" v-model="form.number" placeholder="请输入工号" :maxLength="15"/>
</el-row> </el-row>
<el-form-item label="所属部门" prop="deptId"> <el-form-item label="所属部门" prop="deptId">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment