This commit is contained in:
Air 2025-02-15 16:16:08 +08:00
parent 4bc0f47b97
commit 6ee2cda0f1

View File

@ -25,7 +25,8 @@
</template>
</lay-table>
</lay-card>
<lay-layer v-model="addShow" :title="addIsEdit==1?'新增考评时间':'编辑考评时间'" :type="4" :shade="true" :area="['950px','100%']" :btn="addButton">
<lay-layer v-model="addShow" :title="addIsEdit==1?'新增考评时间':'编辑考评时间'" :type="4" :shade="true"
:area="['950px','100%']" :btn="addButton">
<lay-container fluid="true" style="padding: 20px">
<lay-form :model="addData">
<lay-form-item required label-width="150px" label="考评类型" prop="score_type">
@ -44,10 +45,28 @@
<lay-input-number v-model="addData.time"></lay-input-number>
</lay-form-item>
<lay-form-item required label-width="150px" label="考评开始时间" prop="single_score_min">
<lay-date-picker type="datetime" v-model="addData.start_time" placeholder="考评开始时间" allow-clear></lay-date-picker>
<lay-date-picker type="datetime" v-model="addData.start_time" placeholder="考评开始时间"
allow-clear></lay-date-picker>
</lay-form-item>
<lay-form-item required label-width="150px" label="考评结束时间" prop="single_score_min">
<lay-date-picker type="datetime" v-model="addData.end_time" placeholder="考评结束时间" allow-clear></lay-date-picker>
<lay-date-picker type="datetime" v-model="addData.end_time" placeholder="考评结束时间"
allow-clear></lay-date-picker>
</lay-form-item>
<lay-form-item required label-width="150px" label="考评范围" prop="score_type">
<lay-cascader :checkStrictly="false" size="lg" :options="groupList" search
:replaceFields="replaceFields"
v-model="addData.group_id"
placeholder="选择考评范围" allow-clear></lay-cascader>
</lay-form-item>
<lay-form-item required label-width="150px" label="考评内容" prop="score_type">
<lay-tree
:tail-node-icon="false"
:data="contentList"
:showCheckbox="true"
v-model:checkedKeys="addData.rules"
:replaceFields="contentFields"
@check-change="getTree">
</lay-tree>
</lay-form-item>
<lay-form-item required label-width="150px" label="规则描述" prop="scoring_criteria">
<lay-textarea placeholder="请输入" v-model="addData.rule_description"></lay-textarea>
@ -59,30 +78,138 @@
</template>
<script setup lang="ts">
import {
homeGetHierarchicalData,
menuData,
scheduleCreate, scheduleDelete,
scheduleList, scheduleUpdate,
scheduleList, scheduleUpdate, userGroupData
} from '../../api/module/home'
import {ref, watch, onMounted, reactive} from 'vue'
import {layer} from '@layui/layer-vue'
import {verificationImg} from "@/api/module/commone";
const selectedIds = ref([]);
//
const getTree = (node) => {
console.log(node)
if (node.isChecked) {
// ID
const relatedIds = collectRelatedIds(node);
selectedIds.value = [...new Set([...selectedIds.value, ...relatedIds])];
} else {
// --------------------------
// ID
const childIds = collectChildIds(node);
selectedIds.value = selectedIds.value.filter(id => !childIds.includes(id));
//
let parent = node.parentNode;
while (parent) {
//
const hasOtherCheckedChild = parent.children.some(
child => child.id !== node.id && selectedIds.value.includes(child.id)
);
if (!hasOtherCheckedChild) {
// ID
selectedIds.value = selectedIds.value.filter(id => id !== parent.id);
} else {
//
break;
}
parent = parent.parentNode; //
}
}
};
const collectRelatedIds = (node) => {
const ids = new Set();
//
let current = node;
while (current) {
ids.add(current.id);
current = current.parentNode;
}
//
const stack = [node];
while (stack.length > 0) {
const currentNode = stack.pop();
ids.add(currentNode.id);
if (currentNode.children) {
stack.push(...currentNode.children);
}
}
return Array.from(ids);
};
// ID
const collectChildIds = (node) => {
const ids = new Set();
const stack = [node];
while (stack.length > 0) {
const currentNode = stack.pop();
ids.add(currentNode.id);
if (currentNode.children) {
stack.push(...currentNode.children);
}
}
return Array.from(ids);
};
//
const dataSource6 = ref([]);
const addShow = ref(false)
//1 add 2 edit
const addIsEdit = ref(1)
const addData = reactive({
evaluation_type:null,
evaluation_start_type:null,
start_time:null,
end_time:null,
time:0,
rule_description:'',
evaluation_type: null,
evaluation_start_type: null,
start_time: null,
end_time: null,
time: 0,
rule_description: '',
group_id: [],
rules: []
})
const categoryList= ref();
onMounted(() => {
getHierarchicalData()
//getHierarchicalTwoList();
getGroupList();
getContentList();
})
const contentFields = {
title: 'project_name',
id: 'id',
children: 'children'
}
const contentList = ref([]);
const getContentList = () => {
homeGetHierarchicalData({}).then((res) => {
console.log(res)
if (res.code == 1) {
contentList.value = res.data;
} else {
layer.msg(res.msg, {icon: 2})
}
})
}
const replaceFields = {
label: 'name',
value: 'id',
children: 'children'
}
const groupList = ref([]);
const getGroupList = () => {
userGroupData({}).then((res) => {
console.log(res)
if (res.code == 1) {
res.data.unshift({name: '全部人员', id: 0, children: []});
groupList.value = res.data;
} else {
layer.msg(res.msg, {icon: 2})
}
})
}
const getHierarchicalData = () => {
scheduleList({}).then((res) => {
console.log(res)
@ -95,26 +222,26 @@ const getHierarchicalData = () => {
}
const addShowMsd = () => {
addShow.value = true;
addIsEdit.value=1;
addData.id=0;
addData.evaluation_type=null;
addData.time=0;
addData.evaluation_start_type=null;
addData.start_time=null;
addData.end_time=null;
addData.rule_description='';
addIsEdit.value = 1;
addData.id = 0;
addData.evaluation_type = null;
addData.time = 0;
addData.evaluation_start_type = null;
addData.start_time = null;
addData.end_time = null;
addData.rule_description = '';
}
const editShowMsd = (data) => {
console.log(data);
addShow.value = true;
addData.id=data.id;
addData.evaluation_type=parseInt(data.evaluation_type);
addData.time=data.time;
addData.evaluation_start_type=parseInt(data.evaluation_start_type);
addData.start_time=data.start_time;
addData.end_time=data.end_time;
addData.rule_description=data.rule_description;
addIsEdit.value=2;
addData.id = data.id;
addData.evaluation_type = parseInt(data.evaluation_type);
addData.time = data.time;
addData.evaluation_start_type = parseInt(data.evaluation_start_type);
addData.start_time = data.start_time;
addData.end_time = data.end_time;
addData.rule_description = data.rule_description;
addIsEdit.value = 2;
}
const delShowMsd = async (data) => {
var res = await scheduleDelete({id: data.id});
@ -148,7 +275,7 @@ const columns6 = [
title: "规则描述",
width: "100px",
key: "rule_description",
ellipsisTooltip:true,
ellipsisTooltip: true,
},
{
title: "考评开始时间",
@ -175,27 +302,29 @@ const addButton = ref([
text: "确认",
callback: async () => {
console.log(addData);
console.log(selectedIds.value)
return;
if (addData.evaluation_type == null || addData.evaluation_type == '') {
layer.msg('请选择考评类型!', {icon: 2, time: 1000})
}
if (addData.time <=0) {
if (addData.time <= 0) {
layer.msg('请填写时间(天)!', {icon: 2, time: 1000})
}
if (addData.evaluation_start_type ==null) {
if (addData.evaluation_start_type == null) {
layer.msg('请选择考评开始类型!', {icon: 2, time: 1000})
}
if (addData.start_time ==null) {
if (addData.start_time == null) {
layer.msg('请选择考评开始时间!', {icon: 2, time: 1000})
}
if (addData.end_time ==null) {
if (addData.end_time == null) {
layer.msg('请选择考评结束时间!', {icon: 2, time: 1000})
}
if (addData.rule_description =='') {
if (addData.rule_description == '') {
layer.msg('请填写规则描述!', {icon: 2, time: 1000})
}
if(addIsEdit.value==1){
if (addIsEdit.value == 1) {
var res = await scheduleCreate(addData);
}else{
} else {
var res = await scheduleUpdate(addData);
}
console.log(res)