fix: 閲嶆柊鍒涘缓 classroomhygienedaily form.vue 纭繚 UTF-8 缂栫爜
This commit is contained in:
@@ -1,266 +0,0 @@
|
||||
<template>
|
||||
<el-dialog
|
||||
:title="form.id ? '缂傛牞绶? : '閺傛澘顤?"
|
||||
v-model="visible"
|
||||
:close-on-click-modal="false"
|
||||
draggable
|
||||
width="800px">
|
||||
<el-form
|
||||
ref="dataFormRef"
|
||||
:model="form"
|
||||
:rules="dataRules"
|
||||
label-width="100px"
|
||||
:validate-on-rule-change="false"
|
||||
v-loading="loading">
|
||||
<el-row :gutter="24">
|
||||
<!-- 缂傛牞绶弮鑸垫▔缁€鍝勵劅闂?-->
|
||||
|
||||
<el-col :span="12" class="mb20">
|
||||
<el-form-item label="閻濐厼褰? prop="classCode">
|
||||
<el-select
|
||||
v-model="form.classCode"
|
||||
placeholder="鐠囩兘鈧瀚ㄩ悵顓炲娇"
|
||||
clearable
|
||||
filterable
|
||||
style="width: 100%" >
|
||||
<el-option
|
||||
v-for="item in (form.id && form.id !== '' && form.deptCode) ? filteredClassList : classList"
|
||||
:key="item.classCode"
|
||||
:label="item.classNo"
|
||||
:value="item.classCode">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12" class="mb20">
|
||||
<el-form-item label="濡偓閺屻儲妫╅張? prop="recordDate">
|
||||
<el-date-picker
|
||||
v-model="form.recordDate"
|
||||
type="date"
|
||||
placeholder="闁瀚ㄥΛ鈧弻銉︽)閺?
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
style="width: 100%" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12" class="mb20">
|
||||
<el-form-item label="閹碉絽鍨? prop="score">
|
||||
<el-input-number
|
||||
v-model="form.score"
|
||||
:precision="0"
|
||||
:step="1"
|
||||
:min="0"
|
||||
placeholder="鐠囩柉绶崗銉﹀⒏閸?
|
||||
style="width: 100%" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24" class="mb20">
|
||||
<el-form-item label="濡偓閺屻儴顔囪ぐ? prop="note">
|
||||
<el-input
|
||||
v-model="form.note"
|
||||
type="textarea"
|
||||
:rows="4"
|
||||
placeholder="鐠囩柉绶崗銉︻梾閺屻儴顔囪ぐ?
|
||||
maxlength="500"
|
||||
show-word-limit />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="visible = false">閸?濞?/el-button>
|
||||
<el-button type="primary" @click="onSubmit" :disabled="loading">绾?鐠?/el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts" name="classroomhygienedailyDialog">
|
||||
import { ref, reactive, nextTick, computed, onMounted } from 'vue'
|
||||
import { useMessage } from "/@/hooks/message";
|
||||
import { getObj, addObj, putObj } from '/@/api/stuwork/classroomhygienedaily'
|
||||
import { getDeptList } from '/@/api/basic/basicclass'
|
||||
import { getClassListByRole, queryClassByDeptCode } from '/@/api/basic/basicclass'
|
||||
|
||||
const emit = defineEmits(['refresh']);
|
||||
|
||||
// 鐎规矮绠熼崣姗€鍣洪崘鍛啇
|
||||
const dataFormRef = ref();
|
||||
const visible = ref(false)
|
||||
const loading = ref(false)
|
||||
const deptList = ref<any[]>([])
|
||||
const classList = ref<any[]>([])
|
||||
|
||||
// 閹绘劒姘︾悰銊ュ礋閺佺増宓?
|
||||
const form = reactive({
|
||||
id: '',
|
||||
deptCode: '',
|
||||
classCode: '',
|
||||
recordDate: '',
|
||||
score: 0,
|
||||
note: ''
|
||||
});
|
||||
|
||||
// 閺嶈宓佺€涳箓娅岀粵娑⑩偓澶屽疆缁狙冨灙鐞?
|
||||
const filteredClassList = computed(() => {
|
||||
if (!form.deptCode) {
|
||||
return []
|
||||
}
|
||||
return classList.value.filter((item: any) => item.deptCode === form.deptCode)
|
||||
})
|
||||
|
||||
// 鐎规矮绠熼弽锟犵崣鐟欏嫬鍨?
|
||||
const dataRules = computed(() => ({
|
||||
deptCode: form.id ? [
|
||||
{ required: true, message: '鐎涳箓娅屾稉宥堝厴娑撹櫣鈹?, trigger: 'change' }
|
||||
] : [],
|
||||
classCode: [
|
||||
{ required: true, message: '閻濐厼褰挎稉宥堝厴娑撹櫣鈹?, trigger: 'change' }
|
||||
],
|
||||
recordDate: [
|
||||
{ required: true, message: '濡偓閺屻儲妫╅張鐔剁瑝閼虫垝璐熺粚?, trigger: 'blur' }
|
||||
],
|
||||
score: [
|
||||
{ required: true, message: '閹碉絽鍨庢稉宥堝厴娑撹櫣鈹?, trigger: 'blur' }
|
||||
],
|
||||
note: [
|
||||
{ required: true, message: '濡偓閺屻儴顔囪ぐ鏇氱瑝閼虫垝璐熺粚?, trigger: 'blur' }
|
||||
]
|
||||
}))
|
||||
|
||||
// 鐎涳箓娅岄柅澶嬪閸欐ê瀵?
|
||||
const handleDeptChange = () => {
|
||||
// 濞撳懐鈹栭悵顓炲娇闁瀚?
|
||||
form.classCode = ''
|
||||
}
|
||||
|
||||
// 閹垫挸绱戝鍦崶
|
||||
const openDialog = (id?: string) => {
|
||||
visible.value = true
|
||||
|
||||
// 闁插秶鐤嗙悰銊ュ礋閺佺増宓?
|
||||
Object.assign(form, {
|
||||
id: '',
|
||||
deptCode: '',
|
||||
classCode: '',
|
||||
recordDate: '',
|
||||
score: 0,
|
||||
note: ''
|
||||
})
|
||||
|
||||
// 濞撳懘娅庣悰銊ュ礋妤犲矁鐦夐悩鑸碘偓渚婄礉娑撳秷袝閸欐垿鐛欑拠?
|
||||
nextTick(() => {
|
||||
dataFormRef.value?.clearValidate();
|
||||
dataFormRef.value?.resetFields();
|
||||
});
|
||||
|
||||
// 閼惧嘲褰囩拠锔藉剰
|
||||
if (id) {
|
||||
form.id = id
|
||||
getclassroomhygienedailyData(id)
|
||||
}
|
||||
// 閺傛澘顤冮弮璁圭礉绾喕绻氭宀冪槈閻樿埖鈧礁鍑″〒鍛存珟
|
||||
nextTick(() => {
|
||||
dataFormRef.value?.clearValidate();
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
// 閹绘劒姘?
|
||||
const onSubmit = async () => {
|
||||
const valid = await dataFormRef.value.validate().catch(() => {});
|
||||
if (!valid) return false;
|
||||
|
||||
try {
|
||||
loading.value = true;
|
||||
form.id ? await putObj(form) : await addObj(form);
|
||||
useMessage().success(form.id ? '娣囶喗鏁奸幋鎰' : '濞h濮為幋鎰');
|
||||
visible.value = false;
|
||||
emit('refresh');
|
||||
} catch (err: any) {
|
||||
useMessage().error(err.msg || '閹垮秳缍旀径杈Е');
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
};
|
||||
|
||||
// 閸掓繂顫愰崠鏍€冮崡鏇熸殶閹?
|
||||
const getclassroomhygienedailyData = (id: string) => {
|
||||
loading.value = true
|
||||
getObj({ id: id }).then((res: any) => {
|
||||
if (res.data) {
|
||||
// 婢跺嫮鎮婃潻鏂挎礀閺佺増宓侀敍灞藉讲閼宠姤妲哥€电钖勯幋鏍ㄦ殶缂?
|
||||
const data = Array.isArray(res.data) ? res.data[0] : res.data
|
||||
if (data) {
|
||||
Object.assign(form, {
|
||||
id: data.id || '',
|
||||
deptCode: data.deptCode || '',
|
||||
classCode: data.classCode || '',
|
||||
recordDate: data.recordDate || '',
|
||||
score: data.score || 0,
|
||||
note: data.note || ''
|
||||
})
|
||||
|
||||
// 婵″倹鐏夌紓鏍帆閺?deptCode 娑撹櫣鈹栭敍灞肩稻 classCode 閺堝鈧》绱濈亸婵婄槸娴?classList 娑擃厽澹橀崚鏉款嚠鎼存梻娈?deptCode
|
||||
if (!form.deptCode && form.classCode && classList.value.length > 0) {
|
||||
const classItem = classList.value.find((item: any) => item.classCode === form.classCode)
|
||||
if (classItem && classItem.deptCode) {
|
||||
form.deptCode = classItem.deptCode
|
||||
}
|
||||
}
|
||||
|
||||
// 閺佺増宓侀崝鐘烘祰鐎瑰本鍨氶崥搴礉濞撳懘娅庢宀冪槈閻樿埖鈧緤绱濋柆鍨帳鐟欙箑褰傛宀冪槈
|
||||
nextTick(() => {
|
||||
dataFormRef.value?.clearValidate();
|
||||
});
|
||||
}
|
||||
}
|
||||
}).catch((err: any) => {
|
||||
console.error('閼惧嘲褰囩拠锔藉剰婢惰精瑙?, err)
|
||||
useMessage().error('閼惧嘲褰囩拠锔藉剰婢惰精瑙?)
|
||||
}).finally(() => {
|
||||
loading.value = false
|
||||
})
|
||||
}
|
||||
|
||||
// 閼惧嘲褰囩€涳箓娅岄崚妤勩€?
|
||||
const getDeptListData = async () => {
|
||||
try {
|
||||
const res = await getDeptList()
|
||||
if (res.data) {
|
||||
deptList.value = Array.isArray(res.data) ? res.data : []
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('閼惧嘲褰囩€涳箓娅岄崚妤勩€冩径杈Е', err)
|
||||
deptList.value = []
|
||||
}
|
||||
}
|
||||
|
||||
// 閼惧嘲褰囬悵顓炲娇閸掓銆?
|
||||
const getClassListData = async () => {
|
||||
try {
|
||||
const res = await getClassListByRole()
|
||||
if (res.data) {
|
||||
classList.value = Array.isArray(res.data) ? res.data : []
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('閼惧嘲褰囬悵顓炲娇閸掓銆冩径杈Е', err)
|
||||
classList.value = []
|
||||
}
|
||||
}
|
||||
|
||||
// 閸掓繂顫愰崠?
|
||||
onMounted(() => {
|
||||
getDeptListData()
|
||||
getClassListData()
|
||||
})
|
||||
|
||||
// 閺嗘挳婀堕崣姗€鍣?
|
||||
defineExpose({
|
||||
openDialog
|
||||
});
|
||||
</script>
|
||||
Reference in New Issue
Block a user