Browse Source

11.27

master
lichong 3 months ago
parent
commit
bc331573a1
  1. 1
      package.json
  2. 2
      src/main/index.js
  3. 4
      src/renderer/src/assets/js/db.js
  4. 42
      src/renderer/src/components/treecomponent.vue
  5. 221
      src/renderer/src/views/dangan.vue

1
package.json

@ -22,6 +22,7 @@
"js-sha256": "^0.11.0",
"lodash": "^4.17.21",
"node-machine-id": "^1.1.12",
"uuid": "^11.0.3",
"vue-web-screen-shot": "^1.5.3",
"vxe-table": "^4.7.87",
"xlsx": "^0.18.5"

2
src/main/index.js

@ -22,7 +22,7 @@ function createWindow() {
})
mainWindow.on('ready-to-show', () => {
mainWindow.show()
// mainWindow.webContents.openDevTools()
mainWindow.webContents.openDevTools()
})
mainWindow.webContents.setWindowOpenHandler((details) => {
shell.openExternal(details.url)

4
src/renderer/src/assets/js/db.js

@ -4,6 +4,6 @@ export const myDatabase = new Dexie('myDatabase');
// 定义数据库版本
myDatabase.version(1).stores({
fileList: '++id, label, children, firstId, secondId, thirdId, level, note, create_at, update_at',
treeList: '++id, xiangmuName, juanName, fileName, fileType, uploadTime, status, path, note, create_at, update_at'
treeList: '++id, label, currentId, preId, prepreId, level, note, create_at, update_at',
fileList: '++id, treeId, xiangmuName, juanName, fileName, fileType, uploadTime, status, path, note, create_at, update_at'
});

42
src/renderer/src/components/treecomponent.vue

@ -1,12 +1,24 @@
<template>
<div class="treeClass bgColor">
<el-auto-resizer>
<el-auto-resizer style="height: calc(100vh - 70px);">
<template #default="{ height, width }">
<el-tree-v2 :data="treeData" :props="treeProps" class="bgColor" :style="`height:${height}px`"
@node-click="nodeClick" ref="treeRef">
<el-tree-v2 :data="treeData" :props="treeProps" class="bgColor" @node-click="nodeClick" ref="treeRef"
:height="height" :expand-on-click-node="false">
<template #default="{ node }">
<span class="prefix" :class="{ 'is-leaf': node.isLeaf }">[ElementPlus]</span>
<span>{{ node.label }}</span>
<div style="width: 100%;text-align-last:left;">
<el-tooltip effect="dark" :content="node.label" placement="right" v-if="node.label.length > textLength">
<span>{{ node.label.slice(0, textLength) }}</span>
</el-tooltip>
<span v-else>{{ node.label }}</span>
<span style="position: absolute;right: 8px;" v-if="node.level === 1">
<el-button type="primary" link @click="e => editxiangmu(e, node)">
编辑
</el-button>
<el-button type="danger" link @click="e => delxiangmu(e, node)">
删除
</el-button>
</span>
</div>
</template>
</el-tree-v2>
</template>
@ -20,25 +32,29 @@ import dayjs from 'dayjs'
export default {
name: 'treecomponent',
components: {},
emits: ["nodeClick"],
emits: ["nodeClick", "editxiangmu", "delxiangmu"],
props: {
treeData: {
type: Array,
default: () => {
return [{
id: 1,
label: '一级 1',
label: '一级 1一级 1一级 1一级 1一级 1一级 1一级 1一级 1一级 1一级 1一级 1一级 1一级 1一级 1',
level: 1,
children: [{
id: 4,
label: '二级 1-1',
level: 2,
children: [{
id: 9,
label: '三级 1-1-1'
label: '三级 1-1-1三级 1-1-1三级 1-1-1三级 1-1-1三级 1-1-1三级 1-1-1三级 1-1-1三级 1-1-1三级 1-1-1三级 1-1-1',
level: 3,
}]
}]
}, {
id: 2,
label: '一级 2',
level: 1,
children: [{}]
}
]
@ -59,6 +75,7 @@ export default {
return {
_: _,
dayjs: dayjs,
textLength: 20,
}
},
methods: {
@ -67,6 +84,15 @@ export default {
},
setChecked() {
this.$refs.treeRef.setChecked(this.$refs.treeRef.setCheckedKeys()[0], false)
},
editxiangmu(e, node) {
//
e.stopPropagation()
this.$emit("editxiangmu", node)
},
delxiangmu(e, node) {
e.stopPropagation()
this.$emit("delxiangmu", node)
}
},
async mounted() { },

221
src/renderer/src/views/dangan.vue

@ -31,7 +31,8 @@
</div>
<el-row :gutter="20">
<el-col :span="6">
<treecomponent @nodeClick="nodeClick" ref="treeComponentRef">
<treecomponent @nodeClick="nodeClick" @editxiangmu="editxiangmu" @delxiangmu="delxiangmu" :treeData="treeData"
ref="treeComponentRef" v-loading="treeLoading">
</treecomponent>
</el-col>
<el-col :span="18">
@ -87,7 +88,7 @@
</el-col>
</el-row>
</div>
<div v-loading="loading">
<div v-loading="tableLoading">
<tablecomponent :tableHeader="tableHeader" :tableData="tableData" @view="viewFile" @edit="editFile"
@unregister="unregisterFile" @download="downloadFile" ref="tableComponentRef">
</tablecomponent>
@ -100,8 +101,19 @@
</formcomponent>
<template #footer>
<div>
<el-button @click="cancelDialog">取消</el-button>
<el-button type="primary" @click="submitDialog"> 确认 </el-button>
<el-button @click="canceldanganDialog">取消</el-button>
<el-button type="primary" @click="submitdanganDialog"> 确认 </el-button>
</div>
</template>
</el-dialog>
<el-dialog v-model="addFileForm.visible" :title="addFileForm.title" width="80%" :close-on-click-modal="false">
<formcomponent :formHeader="addFileForm.formHeader" :formData="addFileForm.formData"
:disabled="addFileForm.disabled">
</formcomponent>
<template #footer>
<div>
<el-button @click="cancelFileDialog">取消</el-button>
<el-button type="primary" @click="submitFileDialog"> 确认 </el-button>
</div>
</template>
</el-dialog>
@ -111,6 +123,7 @@
<script>
import _ from 'lodash'
import * as XLSX from 'xlsx';
import { v5 } from "uuid";
import tableHeaderLocal from '../assets/json/file.json'
import { myDatabase } from '../assets/js/db.js'
import dayjs from 'dayjs'
@ -196,6 +209,14 @@ export default {
value: "unregister"
},
],
level1: [],
level2: ["主卷", "副卷", "备考卷"],
level3: {
"主卷": ["文字卷", "图纸卷", "照片卷", "拓片及慕本卷", "保护规划及保护工程方案卷", "文物调查及考古发掘卷", "文物保护工程及防治监测卷", "文物展示卷", "电子文件卷"],
"副卷": ["行政管理文件", "法律文书卷", "大事记卷"],
"备考卷": ["参考资料卷", "论文卷", "图书卷"],
},
treeData: [],
tableHeader: [],
formHeader: [],
exportHeader: [],
@ -216,35 +237,120 @@ export default {
formHeader: [],
formData: {}
},
loading: false,
uuidNameSpace: "8268af6b-7ef5-5d6d-a489-2d641dfb53bb",
treeLoading: false,
tableLoading: false,
}
},
methods: {
//()
async searchTree(params = {}, isAll = false) {
async searchTree() {
this.treeLoading = true
let collection = myDatabase.treeList
let xianmguName = _.trim(this.xiangmuObj.xianmguName)
if (xianmguName) {
let reg = new RegExp(xianmguName, "i")
collection = collection.filter((equip) => reg.test(equip.label))
}
// jujinnianxian
let res = await collection.toArray();
let level1List = _.filter(res, { level: 1, prepreId: "", preId: "", })
let level2List = _.filter(res, { level: 2, prepreId: "", })
let level3List = _.filter(res, { level: 3 })
this.treeLoading = false
let treeList = []
for (let i = 0; i < level1List.length; i++) {
let level1Item = level1List[i];
let level2ListTemp = _.filter(level2List, { level: 2, preId: level1Item.currentId, prepreId: "", })
let level1Children = []
for (let j = 0; j < level2ListTemp.length; j++) {
let level2Item = level2ListTemp[j];
let level3ListTemp = _.filter(level3List, { level: 3, preId: level2Item.currentId, prepreId: level1Item.currentId, })
let level2Children = []
for (let l = 0; l < level3ListTemp.length; l++) {
let level3Item = level3ListTemp[l];
level2Children.push({
...level3Item,
id: level3Item.currentId,
})
}
level1Children.push({
...level2Item,
id: level2Item.currentId,
children: level2Children
})
}
treeList.push({
...level1Item,
id: level1Item.currentId,
children: level1Children
})
}
this.treeData = treeList
},
//()
async addxiangmu(params = {}, isAll = false) {
async addxiangmu() {
this.adddanganForm = {
visible: true,
title: "新增档案",
disabled: false,
type: "add",
formHeader: [
{
label: "项目名称",
prop: "xianmguName",
type: "text",
placeholder: "请输入项目名称",
required: true,
rules: [
{ required: true, message: "请输入项目名称", trigger: "blur" }
]
}
],
formData: {
xianmguName: ""
}
}
},
//()
async editxiangmu(params = {}, isAll = false) {
async editxiangmu(node) {
console.log(265, node);
},
//()
async delxiangmu(params = {}, isAll = false) {
async delxiangmu(node) {
console.log(269, node);
},
//
async nodeClick() { },
async nodeClick(node) {
console.log(273, node);
},
//()
async exportData(params = {}, isAll = false) {
},
//
async addFile(params = {}, isAll = false) {
async addFile() {
this.addFileForm = {
visible: true,
title: "新增文件",
disabled: false,
type: "add",
formHeader: [
{
label: "项目名称",
prop: "xianmguName",
type: "text",
placeholder: "请输入项目名称",
required: true,
rules: [
{ required: true, message: "请输入项目名称", trigger: "blur" }
]
}
],
formData: {
xianmguName: ""
}
}
},
//
async searchFile(params = {}, isAll = false) {
@ -270,19 +376,91 @@ export default {
async downloadFile(params = {}, isAll = false) {
},
//
cancelDialog() {
//
canceldanganDialog() {
this.adddanganForm = {
visible: false,
title: "新增学生",
title: "新增档案",
type: "add",
formHeader: [],
formData: {}
}
},
//
async submitDialog() {
//
async submitdanganDialog() {
let treeList = []
let xianmguName = _.trim(this.adddanganForm.formData.xianmguName)
if (xianmguName) {
let firstId = v5(xianmguName, this.uuidNameSpace)
for (let i = 0; i < this.level2.length; i++) {
let level2Item = this.level2[i];
let level2Str = `${xianmguName}${level2Item}`
let level2uuid = v5(level2Str, this.uuidNameSpace)
for (let j = 0; j < this.level3[level2Item].length; j++) {
let level3Item = this.level3[level2Item][j];
let level3Str = `${xianmguName}${level2Item}${level3Item}`
let level3uuid = v5(level3Str, this.uuidNameSpace)
// ++id, label, currentId, preId, prepreId, level, note, create_at, update_at
treeList.push({
label: level3Item,
currentId: level3uuid,
preId: level2uuid,
prepreId: firstId,
level: 3,
create_at: dayjs().format('YYYY-MM-DD HH:mm:ss'),
update_at: dayjs().format('YYYY-MM-DD HH:mm:ss'),
})
}
treeList.push({
label: level2Item,
currentId: level2uuid,
preId: firstId,
prepreId: "",
level: 2,
create_at: dayjs().format('YYYY-MM-DD HH:mm:ss'),
update_at: dayjs().format('YYYY-MM-DD HH:mm:ss'),
})
}
treeList.push({
label: xianmguName,
currentId: firstId,
preId: "",
prepreId: "",
level: 1,
create_at: dayjs().format('YYYY-MM-DD HH:mm:ss'),
update_at: dayjs().format('YYYY-MM-DD HH:mm:ss'),
})
}
try {
await myDatabase.treeList.bulkAdd(treeList)
this.canceldanganDialog()
// d
await this.searchTree()
} catch (error) {
ElMessage({
message: `${error}`,
type: 'error',
})
}
},
//
cancelFileDialog() {
this.addFileForm = {
visible: false,
title: "新增文件",
disabled: false,
type: "add",
formHeader: [],
formData: {}
}
},
//
async submitFileDialog() {
},
//
// async submitDialog() {
// for (let i = 0; i < this.formHeader.length; i++) {
@ -316,6 +494,7 @@ export default {
this.tableHeader = _.filter(tableHeaderLocal, o => o.tableShow)
this.formHeader = _.filter(tableHeaderLocal, o => o.formShow)
this.exportHeader = _.filter(tableHeaderLocal, o => o.export)
this.searchTree()
},
}
</script>

Loading…
Cancel
Save