first commit

This commit is contained in:
2026-09-08 19:49:21 +08:00
commit ebffbab428
7320 changed files with 1477614 additions and 0 deletions
@@ -0,0 +1,289 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.v-tree-layout-left .v-tree {
width: 100%;
}
.v-tree-layout-left .custom-tree-node {
width: 90%;
position: relative;
}
.v-tree-layout-left .v-tree .v-node {
width: 100%;
display: inline-block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.v-tree-layout-left .v-tree {
width: 100%;
}
.v-tree-layout-left .custom-tree-node {
width: 90%;
position: relative;
}
.v-tree-layout-left .v-tree .v-node {
width: 100%;
display: inline-block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
</style>
<div id="app" v-cloak>
<tree-layout>
<template #tree>
<div style="padding: 20px;">
<el-input
placeholder="输入关键字进行查找"
v-model="filterText">
</el-input>
</div>
<el-tree ref="tree"
:data="treeData"
node-key="id"
:props="defaultProps"
:default-expanded-keys="defaultExpandedKeys"
:expand-on-click-node="false"
accordion
highlight-current
@node-click="nodeClick"
:filter-node-method="filterNode">
<div class="custom-tree-node" slot-scope="{ node, data }">
<div v-if="node.level==1" style="font-size: 16px;" class="v-node"><i
class="el-icon-s-home"></i>&nbsp;
{{ data.name }}
</div>
<div v-if="node.level==2"
style="font-size: 15px" :title="data.name" class="v-node">
<i class="el-icon-star-on" v-if="chooseNode.name==data.name"></i>
<i class="el-icon-star-off" v-else></i>
&nbsp; {{ data.name }}
</div>
<div v-if="node.level>=3"
style="font-size: 14px" :title="data.name" class="v-node">
<i class="fa fa-dot-circle-o" v-if="chooseNode.name==data.name"></i>
<i class="fa fa-circle-o" v-else></i>
&nbsp; {{ data.name }}
</div>
</div>
</el-tree>
</template>
<template>
<el-card class="text-right" shadow="never">
<el-button size="medium" type="primary"
@click="openAddBasicType">
新建基础类型
<i class="el-icon-plus"></i>
</el-button>
</el-card>
<el-card shadow="never" class="mt10">
<el-table :data="tableData" ref="table" :height="tableHeight">
<el-table-column label="序号" type="index" sortable></el-table-column>
<el-table-column prop="name" align="center" label="名称"></el-table-column>
<el-table-column prop="code" align="center" label="代码"></el-table-column>
<el-table-column prop="level" align="center" label="等级"
sortable
v-if="honor_type_id.includes(chooseNode.id)">
<template slot-scope="{row}">
{{row.level?honorLevelList.find(v=>v.id === row.level).name:''}}
</template>
</el-table-column>
<el-table-column align="center" label="操作" width="200px">
<template scope="{row}">
<el-button type="primary" size="mini" @click="openEditType(row)">
编辑
</el-button>
<el-button size="mini" @click="doDelete(row)" type="danger"
v-if="!HonorApi.disabledIds.includes(row.id)">
删除
</el-button>
</template>
</el-table-column>
</el-table>
</el-card>
</template>
</tree-layout>
<el-dialog :visible.sync="basicTypeDialogVisible" width="40%" title="基础类型" :close-on-click-modal="false">
<el-form :model="formData" ref="basicForm" :rules="rules" label-width="80">
<el-row gutter="30">
<el-form-item label="上级名称" prop="parentName" v-if="submitType==='add'">
<el-input maxlength="100" disabled v-model="formData.parentName"
type="text"></el-input>
</el-form-item>
<el-form-item label="名称" prop="name">
<el-input maxlength="100" placeholder="请输入基础类型名称" v-model="formData.name"
type="text"></el-input>
</el-form-item>
<el-form-item label="代码" prop="code">
<el-input maxlength="100" placeholder="请输入基础类型名称" v-model="formData.code"
type="text"></el-input>
</el-form-item>
<el-form-item label="荣誉等级" prop="level"
v-if="honor_type_id.includes(chooseNode.id)">
<el-radio-group v-model="formData.level">
<el-radio-button v-for="o in honorLevelList" :key="o.id"
:label="o.id">{{o.name}}
</el-radio-button>
</el-radio-group>
</el-form-item>
</el-row>
</el-form>
<div class="el-dialog__footer">
<el-button type="primary" @click="doSubmit">提交
</el-button>
</div>
</el-dialog>
</div>
<script>
const honor_type_id = ['6b9e26a9467f49ae88fbd3951377e0f8', '8a8b455b964a41f2bbf18a4896cbd83e']
const honor_level_id = '3c1058afc91b4e69be46c585b1a48191'
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
honor_type_id: ['6b9e26a9467f49ae88fbd3951377e0f8', '8a8b455b964a41f2bbf18a4896cbd83e'],
honor_level_id: "3c1058afc91b4e69be46c585b1a48191",
defaultExpandedKeys: ['1'],
basicTypeDialogVisible: false,
filterText: '',
treeData: [],
defaultProps: {
children: 'child',
label: 'name',
},
chooseNode: {},
formData: {},
rules: {
name: [{required: true, message: '必填', trigger: ['change', 'blur']}],
code: [{required: true, message: '必填', trigger: ['change', 'blur']}]
},
submitType: 'add',
tableData: [],
honorLevelList: [],
tableHeight: null
}
},
watch: {
filterText(val) {
this.$refs.tree.filter(val);
},
},
components: {
'tree-layout': httpVueLoader('/components/plugins/TreeLayout.vue')
},
methods: {
filterNode(value, data, node) {
if (!value) return true;
return data.name.indexOf(value) !== -1
},
openEditType(row) {
this.formData = {
id: row.id,
name: row.name,
code: row.code,
level: row.level
}
this.basicTypeDialogVisible = true
this.submitType = 'edit'
},
doDelete({id}) {
this.$confirm('确定要删除该机构吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
callback: async (a) => {
if ("confirm" === a) {
const resp = await $.post(loc() + "/doDelete", {id: id})
if(resp.code===0){
this.$notify.success({title: '成功', message: resp.msg});
this.getTree(false)
}else{
this.$notify.error({title: '失败', message: resp.msg});
}
}
}
});
},
async getTree(changeNode = false) {
const res = await $.get('/platform/honor/basic/settings/getTree')
if (res.code === 0) {
this.treeData = res.data
if (changeNode) {
this.chooseNode = res.data[0]
}
await this.getData()
} else {
this.$notify.error({message: res.msg, title: '失败'})
}
},
openAddBasicType() {
this.basicTypeDialogVisible = true
this.formData = {
parentId: this.chooseNode.id,
parentName: this.chooseNode.name,
name: '',
code: '',
level: honor_type_id.includes(this.chooseNode.id) ? this.honorLevelList[0].id : null
}
this.submitType = 'add'
},
doSubmit() {
this.$refs["basicForm"].validate(async (valid) => {
if (valid) {
const res_data = await $.post('/platform/honor/basic/settings/doSubmit', this.formData)
if (res_data.code === 0) {
this.$message.success('操作成功')
this.basicTypeDialogVisible = false
await this.getTree(false)
} else {
this.$message.warning('操作失败')
}
}
})
},
nodeClick(data) {
this.chooseNode = data
this.getData()
},
async getData() {
const res_data = await $.get('/platform/honor/basic/settings/getData', {parentId: this.chooseNode.id})
this.tableData = res_data.data
},
async getHonorLevelData() {
const res_data = await $.get('/platform/honor/basic/settings/getData', {parentId: honor_level_id})
this.honorLevelList = res_data.data
}
},
async mounted() {
await this.getTree(true)
await this.getHonorLevelData()
this.$nextTick(() => {
this.tableHeight = window.innerHeight - this.$refs.table.$el.children[2].getBoundingClientRect().top
window.onresize = () => {
this.tableHeight = window.innerHeight - this.$refs.table.$el.children[2].getBoundingClientRect().top
}
})
}
})
</script>
<!--#
}
#-->