|
@@ -0,0 +1,241 @@
|
|
|
+<template>
|
|
|
+ <div>
|
|
|
+ <el-form :model="auditionForm" ref="auditionForm" size="small">
|
|
|
+ <el-form-item
|
|
|
+ label="分部"
|
|
|
+ prop="organId"
|
|
|
+ :label-width="formLabelWidth"
|
|
|
+ :rules="[{ required: true, message: '产品名称', trigger: 'blur' }]"
|
|
|
+ >
|
|
|
+ <el-input clearable placeholder="请输入产品名称" v-model="courseType" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item
|
|
|
+ label="产品描述"
|
|
|
+ prop="courseType"
|
|
|
+ :label-width="formLabelWidth"
|
|
|
+ :rules="[
|
|
|
+ { required: true, message: '请输入产品描述', trigger: 'blur' },
|
|
|
+ ]"
|
|
|
+ >
|
|
|
+ <el-input clearable type="textarea" placeholder="请输入产品描述" v-model="courseType" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-alert
|
|
|
+ title="产品权限"
|
|
|
+ type="info"
|
|
|
+ :closable="false"
|
|
|
+ class="vipMsg"
|
|
|
+ ></el-alert>
|
|
|
+ <el-form-item label="搜索">
|
|
|
+ <el-input style="width:210px"
|
|
|
+ v-model.trim="seachRoleValue"></el-input>
|
|
|
+ <el-button style="margin-left: 10px"
|
|
|
+ type="danger"
|
|
|
+ @click="seachRoles">搜索</el-button>
|
|
|
+ <el-button type="primary"
|
|
|
+ @click="onReSetRole">重置</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="基本权限">
|
|
|
+ <el-checkbox :indeterminate="isIndeterminate"
|
|
|
+ @change="onCheckAll"
|
|
|
+ v-model.trim="checkAll">全选</el-checkbox>
|
|
|
+
|
|
|
+ <el-tree :data="data"
|
|
|
+ show-checkbox
|
|
|
+ node-key="id"
|
|
|
+ @check="onTreeCheck"
|
|
|
+ :filter-node-method="filterNode"
|
|
|
+ ref="tree"
|
|
|
+ accordion
|
|
|
+ highlight-current
|
|
|
+ :default-checked-keys="result.menuIds"
|
|
|
+ :props="defaultProps">
|
|
|
+ <div slot-scope="{ node, data }">
|
|
|
+ {{ node.label }}
|
|
|
+ <el-tag v-if="data.type == 1"
|
|
|
+ size="mini"
|
|
|
+ effect="dark">按钮</el-tag>
|
|
|
+ </div>
|
|
|
+ </el-tree>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+<script>
|
|
|
+import { resetOrganizationCourseDurationSettings,addOrganizationCourseDurationSettings } from "@/api/specialSetting";
|
|
|
+import { getSilder } from '@/api/silder'
|
|
|
+export default {
|
|
|
+ props: ["activeRow", "organList", "courseType"],
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ auditionForm: {
|
|
|
+ organId: "",
|
|
|
+ courseType: "",
|
|
|
+ timer: [],
|
|
|
+ id: "",
|
|
|
+ },
|
|
|
+ inputVisible: false,
|
|
|
+ formLabelWidth: "80px",
|
|
|
+
|
|
|
+ };
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ this.lookSilder()
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ async submitInfo(str) {
|
|
|
+ console.log(str);
|
|
|
+ this.$refs.auditionForm.validate(async (_) => {
|
|
|
+ if (_) {
|
|
|
+ if (str == "update") {
|
|
|
+ try {
|
|
|
+ const res = await resetOrganizationCourseDurationSettings({
|
|
|
+ organId: this.auditionForm.organId,
|
|
|
+ duration: this.dynamicTags.join(","),
|
|
|
+ courseType: this.auditionForm.courseType,
|
|
|
+ id: this.auditionForm.id,
|
|
|
+ });
|
|
|
+ this.$message.success("修改成功");
|
|
|
+ this.$emit('close')
|
|
|
+ } catch {}
|
|
|
+ }else if(str == "create"){
|
|
|
+ try {
|
|
|
+ const res = await addOrganizationCourseDurationSettings({
|
|
|
+ organId: this.auditionForm.organId,
|
|
|
+ duration: this.dynamicTags.join(","),
|
|
|
+ courseType: this.auditionForm.courseType,
|
|
|
+ });
|
|
|
+ this.$message.success("新建成功");
|
|
|
+ this.$emit('close')
|
|
|
+ } catch {}
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ },
|
|
|
+ async lookSilder () {
|
|
|
+ let silderList = await getSilder({ hid: 0 })
|
|
|
+ let tempData = []
|
|
|
+ if (silderList.code == 200) {
|
|
|
+ this.silderList = silderList.data
|
|
|
+ tempData = this.setTableData(silderList.data)
|
|
|
+ this.data = tempData
|
|
|
+ // console.log(this.data)
|
|
|
+ }
|
|
|
+ // console.log(this.pageType)
|
|
|
+ if (this.pageType == 'update') {
|
|
|
+ let roleInfo = await getRoleInfo({ id: this.id })
|
|
|
+ if (roleInfo.code == 200) {
|
|
|
+ let roleData = roleInfo.data
|
|
|
+ // 是否是全部选中
|
|
|
+ this.checkAll = roleData.menuIds.length >= this.slideCount
|
|
|
+ // 是否是半选
|
|
|
+ this.isIndeterminate = roleData.menuIds.length > 0 && roleData.menuIds.length < this.slideCount
|
|
|
+ let tSplice = this.getParent(roleData.menuIds, tempData)
|
|
|
+ roleData.menuIds = tSplice
|
|
|
+ this.result = roleData
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ this.onReSet()
|
|
|
+ }
|
|
|
+ },
|
|
|
+ onTreeCheck () {
|
|
|
+ let checkTree = this.$refs.tree.getCheckedKeys()
|
|
|
+ this.checkAll = checkTree.length >= this.slideCount
|
|
|
+ this.isIndeterminate = checkTree.length > 0 && checkTree.length < this.slideCount
|
|
|
+ },
|
|
|
+ onCheckAll (val) {
|
|
|
+ if (val) {
|
|
|
+ // 先去掉半选
|
|
|
+ this.isIndeterminate = false
|
|
|
+ this.$refs.tree.setCheckedNodes(this.data)
|
|
|
+ } else {
|
|
|
+ this.$refs.tree.setCheckedNodes([])
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ //递归获取到所有的为子级的ID
|
|
|
+ getParent (checkIds, data) {
|
|
|
+ let removeIds = JSON.parse(JSON.stringify(checkIds))
|
|
|
+ this.getAllChildIds(data)
|
|
|
+ let tempAllChildIds = this.allChildIds
|
|
|
+ for (let i = checkIds.length; i > 0; i--) {
|
|
|
+ if (!tempAllChildIds.includes(checkIds[i - 1])) {
|
|
|
+ removeIds.splice(i - 1, 1)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return removeIds
|
|
|
+ },
|
|
|
+ getAllChildIds (data) {
|
|
|
+ // 获取所有最子集编号
|
|
|
+ let child = this.allChildIds
|
|
|
+ let tempList = []
|
|
|
+ data.forEach((item, index) => {
|
|
|
+ let temp = []
|
|
|
+ if (item.children && item.children.length > 0) {
|
|
|
+ temp = this.getAllChildIds(item.children)
|
|
|
+ } else {
|
|
|
+ child.push(item.id)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ setTableData (result) {
|
|
|
+ let list = []
|
|
|
+ list = result.map(res => {
|
|
|
+ let tempList = {}
|
|
|
+ tempList = {
|
|
|
+ id: res.id,
|
|
|
+ name: res.name,
|
|
|
+ label: res.name,
|
|
|
+ type: res.type,
|
|
|
+ path: res.path,
|
|
|
+ permission: res.permission,
|
|
|
+ icon: res.icon,
|
|
|
+ parentId: res.parentId
|
|
|
+ }
|
|
|
+ this.slideCount++
|
|
|
+ if (res.sysMenus && res.sysMenus.length > 0) {
|
|
|
+ tempList.children = this.setTableData(res.sysMenus)
|
|
|
+ }
|
|
|
+ return tempList
|
|
|
+ })
|
|
|
+ return list
|
|
|
+ },
|
|
|
+ onReSet () {
|
|
|
+ this.$refs.tree.setCheckedNodes([])
|
|
|
+ this.result = {
|
|
|
+ roleName: null,
|
|
|
+ roleDesc: null,
|
|
|
+ }
|
|
|
+ this.checkAll = false
|
|
|
+ },
|
|
|
+ onCancel () {
|
|
|
+ this.$store.dispatch('delVisitedViews', this.$route)
|
|
|
+ this.$router.push({
|
|
|
+ path: '/parameter/adminManager',
|
|
|
+ query: {
|
|
|
+ page: this.$route.query.page
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ seachRoles () {
|
|
|
+ this.$refs.tree.filter(this.seachRoleValue);
|
|
|
+ },
|
|
|
+ filterNode(value, data) {
|
|
|
+ console.log(data)
|
|
|
+ if (!value) return true;
|
|
|
+ return data.label.indexOf(value) !== -1;
|
|
|
+ },
|
|
|
+ onReSetRole () {
|
|
|
+ this.seachRoleValue = ''
|
|
|
+ this.data = this.setTableData(this.silderList)
|
|
|
+ }
|
|
|
+ }
|
|
|
+};
|
|
|
+</script>
|
|
|
+<style lang="scss" scoped>
|
|
|
+.courseMask {
|
|
|
+ .el-tag.el-tag--info {
|
|
|
+ margin-right: 4px;
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|