Commit 9aad480f by yubin

离职时间添加

parent 30a96ce8
...@@ -60,3 +60,12 @@ export const getUserMultiSelectorList = (param) => { ...@@ -60,3 +60,12 @@ export const getUserMultiSelectorList = (param) => {
data: param data: param
}) })
} }
// 根据ID获取单个用户信息
export const getDmUserById = (param) => {
return axios.request({
url: '/api/ac/jilinsscgsdp/keyDmUser/getById',
method: 'post',
data: param
})
}
\ No newline at end of file
...@@ -1035,7 +1035,7 @@ export default { ...@@ -1035,7 +1035,7 @@ export default {
user_ids: userIds user_ids: userIds
}).then(ret => { }).then(ret => {
if (ret.data && ret.data.errcode === 0) { if (ret.data && ret.data.errcode === 0) {
this.fetchList("org") this.fetchList('org')
this.$Message.success('保存成功') this.$Message.success('保存成功')
this.userAssignModal.visible = false this.userAssignModal.visible = false
} else { } else {
......
...@@ -61,11 +61,14 @@ ...@@ -61,11 +61,14 @@
<Input v-model="editModal.form.leader_name" readonly placeholder="点击选择直属领导" @click.native="selectLeader" style="cursor: pointer" /> <Input v-model="editModal.form.leader_name" readonly placeholder="点击选择直属领导" @click.native="selectLeader" style="cursor: pointer" />
</FormItem> </FormItem>
<FormItem label="是否离职"> <FormItem label="是否离职">
<Select v-model="editModal.form.is_leave" style="width: 160px"> <Select v-model="editModal.form.is_leave" style="width: 160px" @on-change="onIsLeaveChange">
<Option :value="0">未离职</Option> <Option :value="0">未离职</Option>
<Option :value="1">离职</Option> <Option :value="1">离职</Option>
</Select> </Select>
</FormItem> </FormItem>
<FormItem v-if="editModal.form.is_leave === 1" label="离职时间">
<Input v-model="editModal.form.leave_time" type="datetime" placeholder="请选择离职时间" format="yyyy-MM-dd HH:mm:ss" disabled />
</FormItem>
</Form> </Form>
<div slot="footer"> <div slot="footer">
<Button @click="editModal.visible = false">取消</Button> <Button @click="editModal.visible = false">取消</Button>
...@@ -127,6 +130,52 @@ export default { ...@@ -127,6 +130,52 @@ export default {
renderIsExt (h, { row }) { renderIsExt (h, { row }) {
return row.is_ext === 1 ? '系统同步' : '手工录入' return row.is_ext === 1 ? '系统同步' : '手工录入'
}, },
formatLeaveTime (leaveTime) {
if (!leaveTime || leaveTime === null || leaveTime === '') return '-'
// 如果是数字时间戳
if (typeof leaveTime === 'number') {
return this.formatDateTime(new Date(leaveTime))
}
// 如果是字符串
if (typeof leaveTime === 'string') {
// 处理纯数字字符串(可能是时间戳)
if (/^\d+$/.test(leaveTime)) {
try {
return this.formatDateTime(new Date(Number(leaveTime)))
} catch (e) {
return leaveTime
}
}
// 处理带T的ISO字符串或其他可解析字符串
if (leaveTime.includes('T')) {
return this.formatDateTime(leaveTime)
}
// 尝试直接解析
const parsed = new Date(leaveTime)
if (!isNaN(parsed.getTime())) {
return this.formatDateTime(parsed)
}
}
// 尝试解析为Date对象
const parsed = new Date(leaveTime)
if (!isNaN(parsed.getTime())) {
return this.formatDateTime(parsed)
}
return leaveTime
},
formatDateTime (date) {
if (!date) return '-'
const d = date instanceof Date ? date : new Date(date)
if (isNaN(d.getTime())) return '-'
const pad = (n) => (n < 10 ? '0' + n : String(n))
return d.getFullYear() + '-' +
pad(d.getMonth() + 1) + '-' +
pad(d.getDate()) + ' ' +
pad(d.getHours()) + ':' +
pad(d.getMinutes()) + ':' +
pad(d.getSeconds())
},
fetchList () { fetchList () {
this.loading = true this.loading = true
const payload = Object.assign({}, { pageNo: this.pager.pageNo, pageSize: this.pager.pageSize }, this.filters) const payload = Object.assign({}, { pageNo: this.pager.pageNo, pageSize: this.pager.pageSize }, this.filters)
...@@ -195,12 +244,25 @@ export default { ...@@ -195,12 +244,25 @@ export default {
// 直接拷贝记录用于编辑,并保证小写 id 可用 // 直接拷贝记录用于编辑,并保证小写 id 可用
const copy = Object.assign({}, row) const copy = Object.assign({}, row)
if (copy.Id != null && copy.id == null) copy.id = copy.Id if (copy.Id != null && copy.id == null) copy.id = copy.Id
// 保存原始离职时间用于提交(保持后端原始格式),并将 leave_time 转为供前端显示的格式化字符串(disabled Input)
copy._raw_leave_time = copy.leave_time
copy.leave_time = this.formatLeaveTime(copy.leave_time)
this.editModal.form = copy this.editModal.form = copy
this.editModal.visible = true this.editModal.visible = true
}, },
selectLeader () { selectLeader () {
this.userSelectorVisible = true this.userSelectorVisible = true
}, },
onIsLeaveChange (value) {
// 当切换为未离职,清理离职时间的显示与临时原始值,避免在提交时带上旧值
if (value !== 1) {
if (this.editModal && this.editModal.form) {
// 保证字段存在再删除
if (this.editModal.form.leave_time !== undefined) delete this.editModal.form.leave_time
if (this.editModal.form._raw_leave_time !== undefined) delete this.editModal.form._raw_leave_time
}
}
},
handleLeaderSelected (user) { handleLeaderSelected (user) {
this.editModal.form.leader = user.id this.editModal.form.leader = user.id
this.editModal.form.leader_name = user.name this.editModal.form.leader_name = user.name
...@@ -210,8 +272,34 @@ export default { ...@@ -210,8 +272,34 @@ export default {
saveEdit () { saveEdit () {
this.$refs.editForm.validate(valid => { this.$refs.editForm.validate(valid => {
// no strict validation here, just save // no strict validation here, just save
const formData = Object.assign({}, this.editModal.form)
// 如果当前为未离职状态,不提交离职时间字段
if (formData.is_leave !== 1) {
if (formData.leave_time !== undefined) delete formData.leave_time
if (formData._raw_leave_time !== undefined) delete formData._raw_leave_time
} else {
// is_leave === 1 时按原逻辑处理离职时间
if (formData._raw_leave_time !== undefined) {
formData.leave_time = formData._raw_leave_time
} else if (formData.leave_time && typeof formData.leave_time === 'string') {
// 纯数字字符串(时间戳)
if (/^\d+$/.test(formData.leave_time)) {
formData.leave_time = Number(formData.leave_time)
} else {
// 尝试将常见格式 yyyy-MM-dd HH:mm:ss 转为 ISO 再解析
const parsed = new Date(formData.leave_time.replace(' ', 'T'))
if (!isNaN(parsed.getTime())) {
formData.leave_time = parsed.getTime()
}
}
} else if (formData.leave_time instanceof Date) {
formData.leave_time = formData.leave_time.getTime()
}
// 清理临时字段
if (formData._raw_leave_time !== undefined) delete formData._raw_leave_time
}
this.editModal.saving = true this.editModal.saving = true
saveDmUser(this.editModal.form).then(ret => { saveDmUser(formData).then(ret => {
if (ret.data && ret.data.errcode === 0) { if (ret.data && ret.data.errcode === 0) {
this.$Message.success('保存成功') this.$Message.success('保存成功')
this.editModal.visible = false this.editModal.visible = false
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论