|
|
|
@ -0,0 +1,320 @@
|
|
|
|
|
<template>
|
|
|
|
|
<el-card class="hl-card">
|
|
|
|
|
<template #header>
|
|
|
|
|
<span><span v-html="dialogTitle"></span>页</span>
|
|
|
|
|
</template>
|
|
|
|
|
<el-form
|
|
|
|
|
ref="formRef"
|
|
|
|
|
:rules="formRules"
|
|
|
|
|
label-width="120px"
|
|
|
|
|
:model="formData"
|
|
|
|
|
v-loading="formLoading"
|
|
|
|
|
>
|
|
|
|
|
<!-- 基础信息 横向布局 -->
|
|
|
|
|
<el-card class="hl-card-info">
|
|
|
|
|
<template #header>
|
|
|
|
|
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">基础信息</span>
|
|
|
|
|
</template>
|
|
|
|
|
<el-row>
|
|
|
|
|
<el-col :span="6">
|
|
|
|
|
<el-form-item label="员工工号" prop="userId">
|
|
|
|
|
<el-input
|
|
|
|
|
class="!w-265px"
|
|
|
|
|
placeholder="项目负责人"
|
|
|
|
|
v-model="formData.userCode"
|
|
|
|
|
readonly
|
|
|
|
|
:disabled="detailDisabled || updateDisabled"
|
|
|
|
|
@click.prevent="handleClick()"
|
|
|
|
|
>
|
|
|
|
|
<template #append><el-button :icon="Search" @click="openuserDialog()" /></template>
|
|
|
|
|
</el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="6">
|
|
|
|
|
<el-form-item label="员工姓名">
|
|
|
|
|
<el-input
|
|
|
|
|
class="!w-260px"
|
|
|
|
|
v-model="formData.userName"
|
|
|
|
|
:disabled="detailDisabled || updateDisabled"
|
|
|
|
|
placeholder="请输入工价"
|
|
|
|
|
/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="6">
|
|
|
|
|
<el-form-item label="所属部门">
|
|
|
|
|
<el-input
|
|
|
|
|
class="!w-260px"
|
|
|
|
|
v-model="formData.deptName"
|
|
|
|
|
:disabled="detailDisabled || updateDisabled"
|
|
|
|
|
placeholder="请输入所属部门"
|
|
|
|
|
/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="6">
|
|
|
|
|
<el-form-item label="适用工序范围">
|
|
|
|
|
<el-select
|
|
|
|
|
v-model="formData.procedure"
|
|
|
|
|
placeholder="请选择工资类型"
|
|
|
|
|
class="!w-250px"
|
|
|
|
|
:disabled="detailDisabled || updateDisabled"
|
|
|
|
|
>
|
|
|
|
|
<el-option
|
|
|
|
|
v-for="dict in getStrDictOptions(DICT_TYPE.BIZ_PROCEDURE_RANGE)"
|
|
|
|
|
:key="dict.value"
|
|
|
|
|
@change="onchangetype(val)"
|
|
|
|
|
:label="dict.label"
|
|
|
|
|
:value="dict.value"
|
|
|
|
|
/>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
|
|
|
|
|
<el-row>
|
|
|
|
|
<el-col :span="6">
|
|
|
|
|
<el-form-item label="工资类型" prop="salaryType">
|
|
|
|
|
<el-select
|
|
|
|
|
v-model="formData.salaryType"
|
|
|
|
|
placeholder="请选择工资类型"
|
|
|
|
|
class="!w-250px"
|
|
|
|
|
:disabled="detailDisabled || updateDisabled"
|
|
|
|
|
>
|
|
|
|
|
<el-option
|
|
|
|
|
v-for="dict in getStrDictOptions(DICT_TYPE.BIZ_SALARY_TYPE)"
|
|
|
|
|
:key="dict.value"
|
|
|
|
|
@change="onchangetype(val)"
|
|
|
|
|
:label="dict.label"
|
|
|
|
|
:value="dict.value"
|
|
|
|
|
/>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="6">
|
|
|
|
|
<el-form-item label="工价" prop="standardLabourPrice">
|
|
|
|
|
<el-input
|
|
|
|
|
class="!w-260px"
|
|
|
|
|
v-model="formData.standardLabourPrice"
|
|
|
|
|
placeholder="请输入工价"
|
|
|
|
|
:disabled="detailDisabled || updateDisabled"
|
|
|
|
|
/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="6">
|
|
|
|
|
<el-form-item label="启用状态" prop="status">
|
|
|
|
|
<el-switch
|
|
|
|
|
:disabled="detailDisabled || updateDisabled"
|
|
|
|
|
v-model="mockDataSwitch"
|
|
|
|
|
@change="mockDataSwitchChange"
|
|
|
|
|
size="large"
|
|
|
|
|
/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
</el-card>
|
|
|
|
|
<el-card class="hl-card-info" v-if="active != 'create'">
|
|
|
|
|
<template #header>
|
|
|
|
|
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">系统信息</span>
|
|
|
|
|
</template>
|
|
|
|
|
<el-row>
|
|
|
|
|
<el-col :span="4" />
|
|
|
|
|
<el-col :span="8">
|
|
|
|
|
<el-form-item label="创建人" prop="creatorName">
|
|
|
|
|
<el-input class="!w-260px" v-model="formData.creatorName" placeholder="" disabled />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="8">
|
|
|
|
|
<el-form-item label="创建时间" prop="createTime">
|
|
|
|
|
<el-date-picker
|
|
|
|
|
class="!w-260px"
|
|
|
|
|
v-model="formData.createTime"
|
|
|
|
|
type="datetime"
|
|
|
|
|
value-format="x"
|
|
|
|
|
placeholder=""
|
|
|
|
|
disabled
|
|
|
|
|
/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
<el-row>
|
|
|
|
|
<el-col :span="4" />
|
|
|
|
|
|
|
|
|
|
<el-col :span="8">
|
|
|
|
|
<el-form-item label="修改人" prop="updaterName">
|
|
|
|
|
<el-input class="!w-260px" v-model="formData.updaterName" placeholder="" disabled />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="8">
|
|
|
|
|
<el-form-item label="修改时间" prop="updateTime">
|
|
|
|
|
<el-date-picker
|
|
|
|
|
class="!w-260px"
|
|
|
|
|
v-model="formData.updateTime"
|
|
|
|
|
type="datetime"
|
|
|
|
|
value-format="x"
|
|
|
|
|
placeholder=""
|
|
|
|
|
disabled
|
|
|
|
|
/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
</el-card>
|
|
|
|
|
<div class="text-center hl-footer">
|
|
|
|
|
<el-button @click="goback" size="large">取 消</el-button>
|
|
|
|
|
<el-button
|
|
|
|
|
v-if="active != 'detail'"
|
|
|
|
|
@click="submitForm()"
|
|
|
|
|
type="primary"
|
|
|
|
|
:disabled="formLoading"
|
|
|
|
|
size="large"
|
|
|
|
|
>保 存</el-button
|
|
|
|
|
>
|
|
|
|
|
</div>
|
|
|
|
|
</el-form>
|
|
|
|
|
</el-card>
|
|
|
|
|
<UserDialog ref="userDialogref" :dialog-type="dialogType" @success="handleuserClick" />
|
|
|
|
|
</template>
|
|
|
|
|
<script setup lang="ts">
|
|
|
|
|
import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
|
|
|
|
|
import * as SalarySettingApi from '@/api/biz/salarysetting'
|
|
|
|
|
import { useUserStore } from '@/store/modules/user'
|
|
|
|
|
import * as EquipMaintenanceRecordApi from '@/api/biz/equipmaintenancerecord'
|
|
|
|
|
import { useCommonStore } from '@/store/modules/common'
|
|
|
|
|
import UserDialog from './userDialog.vue'
|
|
|
|
|
import { Search, Plus } from '@element-plus/icons-vue'
|
|
|
|
|
import { log } from 'console'
|
|
|
|
|
|
|
|
|
|
const { t } = useI18n() // 国际化
|
|
|
|
|
const message = useMessage() // 消息弹窗
|
|
|
|
|
// const { query } = useRoute()
|
|
|
|
|
// const active = toRef(query, 'active')
|
|
|
|
|
// const activeId = toRef(query, 'id')
|
|
|
|
|
const router = useRouter()
|
|
|
|
|
const reload: any = inject('reload')
|
|
|
|
|
const commonStore = useCommonStore()
|
|
|
|
|
|
|
|
|
|
const active = toRef(commonStore.getStore('active'))
|
|
|
|
|
const activeId = toRef(commonStore.getStore('id'))
|
|
|
|
|
|
|
|
|
|
const dialogVisible = ref(false) // 弹窗的是否展示
|
|
|
|
|
const dialogTitle = ref('') // 弹窗的标题
|
|
|
|
|
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
|
|
|
|
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
|
|
|
|
const formData = ref({
|
|
|
|
|
id: undefined,
|
|
|
|
|
userId: undefined,
|
|
|
|
|
userCode: undefined,
|
|
|
|
|
userName: undefined,
|
|
|
|
|
deptName: undefined,
|
|
|
|
|
salaryType: undefined,
|
|
|
|
|
procedure: 'all',
|
|
|
|
|
status: 1
|
|
|
|
|
})
|
|
|
|
|
const formRules = reactive({
|
|
|
|
|
salaryType: [{ required: true, message: '工资类型不能为空', trigger: 'blur' }],
|
|
|
|
|
userId: [{ required: true, message: '员工工号不能为空', trigger: 'change' }],
|
|
|
|
|
status: [{ required: true, message: '状态,1表示正常,2表示禁用不能为空', trigger: 'blur' }]
|
|
|
|
|
})
|
|
|
|
|
const formRef = ref() // 表单 Ref
|
|
|
|
|
onMounted(() => {
|
|
|
|
|
// console.log('active', active.value, activeId.value)
|
|
|
|
|
|
|
|
|
|
initData()
|
|
|
|
|
// 绑定默认业务员
|
|
|
|
|
// if (!formData.value.owner) {
|
|
|
|
|
// formData.value.owner = useUserStore().getUser.id // 当前登录的编码
|
|
|
|
|
// }
|
|
|
|
|
})
|
|
|
|
|
const detailDisabled = ref(false)
|
|
|
|
|
const updateDisabled = ref(false)
|
|
|
|
|
const initData = async () => {
|
|
|
|
|
resetForm()
|
|
|
|
|
if ('detail' == active.value) {
|
|
|
|
|
detailDisabled.value = true
|
|
|
|
|
}
|
|
|
|
|
if ('update' == active.value) {
|
|
|
|
|
updateDisabled.value = true
|
|
|
|
|
}
|
|
|
|
|
await queryData(active.value, activeId.value)
|
|
|
|
|
}
|
|
|
|
|
const queryData = async (type: string, id?: number) => {
|
|
|
|
|
dialogTitle.value = t('action.' + type)
|
|
|
|
|
if (type == 'create') {
|
|
|
|
|
formData.value.submitTime = new Date().getTime()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (type == 'update' || type == 'detail') {
|
|
|
|
|
const res = await SalarySettingApi.getSalarySetting(id)
|
|
|
|
|
formData.value = res
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** 提交表单 */
|
|
|
|
|
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
|
|
|
|
const submitForm = async () => {
|
|
|
|
|
// 校验表单
|
|
|
|
|
await formRef.value.validate()
|
|
|
|
|
// 提交请求
|
|
|
|
|
formLoading.value = true
|
|
|
|
|
try {
|
|
|
|
|
const data = formData.value as unknown as SalarySettingApi.SalarySettingVO
|
|
|
|
|
if (active.value === 'create') {
|
|
|
|
|
const dataid = await SalarySettingApi.createSalarySetting(data)
|
|
|
|
|
message.success(t('common.createSuccess'))
|
|
|
|
|
commonStore.setStore('active', 'update')
|
|
|
|
|
commonStore.setStore('id', dataid)
|
|
|
|
|
reload()
|
|
|
|
|
} else {
|
|
|
|
|
await SalarySettingApi.updateSalarySetting(data)
|
|
|
|
|
message.success(t('保存成功'))
|
|
|
|
|
}
|
|
|
|
|
dialogVisible.value = false
|
|
|
|
|
// 发送操作成功的事件
|
|
|
|
|
emit('success')
|
|
|
|
|
// goback()
|
|
|
|
|
} finally {
|
|
|
|
|
formLoading.value = false
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
const goback = () => {
|
|
|
|
|
router.back()
|
|
|
|
|
}
|
|
|
|
|
/** 重置表单 */
|
|
|
|
|
const resetForm = () => {
|
|
|
|
|
formData.value = {
|
|
|
|
|
id: undefined,
|
|
|
|
|
userId: undefined,
|
|
|
|
|
userCode: undefined,
|
|
|
|
|
userName: undefined,
|
|
|
|
|
deptName: undefined,
|
|
|
|
|
salaryType: undefined,
|
|
|
|
|
procedure: 'all',
|
|
|
|
|
status: 1
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const userDialogref = ref()
|
|
|
|
|
const handleClick = () => {
|
|
|
|
|
openuserDialog()
|
|
|
|
|
}
|
|
|
|
|
const openuserDialog = () => {
|
|
|
|
|
// 使用传递过来的 dialogType,不需要重新赋值
|
|
|
|
|
userDialogref.value.open()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const handleuserClick = (val) => {
|
|
|
|
|
console.log(val)
|
|
|
|
|
formData.value.userId = val?.id
|
|
|
|
|
formData.value.userCode = val?.username
|
|
|
|
|
formData.value.userName = val?.nickname
|
|
|
|
|
formData.value.deptName = val?.deptName
|
|
|
|
|
}
|
|
|
|
|
const mockDataSwitch = ref(true)
|
|
|
|
|
const mockDataSwitchChange = () => {
|
|
|
|
|
console.log(mockDataSwitch.value)
|
|
|
|
|
if (mockDataSwitch.value) {
|
|
|
|
|
formData.value.status = 1
|
|
|
|
|
} else {
|
|
|
|
|
formData.value.status = 2
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
<style scoped lang="scss"></style>
|