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

View File

@ -25,7 +25,8 @@
</template> </template>
</lay-table> </lay-table>
</lay-card> </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-container fluid="true" style="padding: 20px">
<lay-form :model="addData"> <lay-form :model="addData">
<lay-form-item required label-width="150px" label="考评类型" prop="score_type"> <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-input-number v-model="addData.time"></lay-input-number>
</lay-form-item> </lay-form-item>
<lay-form-item required label-width="150px" label="考评开始时间" prop="single_score_min"> <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>
<lay-form-item required label-width="150px" label="考评结束时间" prop="single_score_min"> <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>
<lay-form-item required label-width="150px" label="规则描述" prop="scoring_criteria"> <lay-form-item required label-width="150px" label="规则描述" prop="scoring_criteria">
<lay-textarea placeholder="请输入" v-model="addData.rule_description"></lay-textarea> <lay-textarea placeholder="请输入" v-model="addData.rule_description"></lay-textarea>
@ -59,12 +78,85 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { import {
homeGetHierarchicalData,
menuData,
scheduleCreate, scheduleDelete, scheduleCreate, scheduleDelete,
scheduleList, scheduleUpdate, scheduleList, scheduleUpdate, userGroupData
} from '../../api/module/home' } from '../../api/module/home'
import {ref, watch, onMounted, reactive} from 'vue' import {ref, watch, onMounted, reactive} from 'vue'
import {layer} from '@layui/layer-vue' import {layer} from '@layui/layer-vue'
import {verificationImg} from "@/api/module/commone"; 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 dataSource6 = ref([]);
const addShow = ref(false) const addShow = ref(false)
@ -77,12 +169,47 @@ const addData = reactive({
end_time: null, end_time: null,
time: 0, time: 0,
rule_description: '', rule_description: '',
group_id: [],
rules: []
}) })
const categoryList= ref();
onMounted(() => { onMounted(() => {
getHierarchicalData() 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 = () => { const getHierarchicalData = () => {
scheduleList({}).then((res) => { scheduleList({}).then((res) => {
console.log(res) console.log(res)
@ -175,6 +302,8 @@ const addButton = ref([
text: "确认", text: "确认",
callback: async () => { callback: async () => {
console.log(addData); console.log(addData);
console.log(selectedIds.value)
return;
if (addData.evaluation_type == null || addData.evaluation_type == '') { if (addData.evaluation_type == null || addData.evaluation_type == '') {
layer.msg('请选择考评类型!', {icon: 2, time: 1000}) layer.msg('请选择考评类型!', {icon: 2, time: 1000})
} }