2023-06-24 18:02:21 +08:00
|
|
|
import QtQuick 2.15
|
|
|
|
import FluentUI
|
|
|
|
import QtQuick.Layouts
|
2023-07-06 21:50:19 +08:00
|
|
|
import "qrc:///AicsKnowledgeBase/qml/global"
|
2023-06-24 18:02:21 +08:00
|
|
|
|
2023-07-01 08:56:14 +08:00
|
|
|
FluArea {
|
2023-06-24 18:02:21 +08:00
|
|
|
id: fileItem
|
2023-06-30 19:45:04 +08:00
|
|
|
property string uuid
|
2023-07-06 21:50:19 +08:00
|
|
|
property var fuuid: null
|
2023-06-24 18:02:21 +08:00
|
|
|
property string title
|
|
|
|
property string brief
|
|
|
|
property string date
|
|
|
|
property string type
|
|
|
|
property string suffix
|
|
|
|
property bool isDir: false
|
|
|
|
property int size
|
|
|
|
property int pageView
|
|
|
|
property var tags: []
|
|
|
|
property var notes: []
|
|
|
|
property int stars
|
2023-06-28 14:47:52 +08:00
|
|
|
property var colorList: ["blue", "green", "orange", "red", "yellow", "purple", "pink", "brown", "teal", "cyan", "gray", "darkgray"]
|
|
|
|
signal tagClicked(string tag)
|
2023-07-06 16:09:26 +08:00
|
|
|
signal refresh
|
|
|
|
FluMenu {
|
|
|
|
id: menu
|
|
|
|
FluMenuItem {
|
|
|
|
text: "重命名"
|
|
|
|
onClicked: {
|
|
|
|
dialog.open()
|
|
|
|
}
|
|
|
|
InputDialog {
|
|
|
|
id: dialog
|
|
|
|
title: "重命名"
|
|
|
|
buttonFlags: FluContentDialog.PositiveButton | FluContentDialog.NegativeButton
|
|
|
|
negativeText: "取消"
|
|
|
|
positiveText: "确定"
|
|
|
|
message: fileItem.title
|
|
|
|
onPositiveClicked: text => {
|
|
|
|
var param = {
|
|
|
|
"name": text,
|
|
|
|
"parentId": fuuid
|
|
|
|
}
|
|
|
|
Request.post("/knowledge",
|
|
|
|
JSON.stringify(param))
|
|
|
|
refresh()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FluMenuItem {
|
|
|
|
text: "移动至"
|
|
|
|
onClicked: {
|
2023-07-06 21:50:19 +08:00
|
|
|
moveDialog.load()
|
|
|
|
moveDialog.open()
|
|
|
|
}
|
|
|
|
TreeViewDialog {
|
|
|
|
id: moveDialog
|
|
|
|
title: "选择目标文件夹"
|
|
|
|
buttonFlags: FluContentDialog.PositiveButton | FluContentDialog.NegativeButton
|
|
|
|
negativeText: "取消"
|
|
|
|
positiveText: "确定"
|
|
|
|
onPositiveClicked: uuid => {
|
|
|
|
var param = {
|
|
|
|
"parentId": uuid,
|
|
|
|
"name": fileItem.title
|
|
|
|
}
|
|
|
|
Request.put(
|
|
|
|
"/knowledge/" + fileItem.uuid,
|
|
|
|
JSON.stringify(param), () => {
|
|
|
|
refresh()
|
|
|
|
})
|
|
|
|
}
|
2023-07-06 16:09:26 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
FluMenuItem {
|
|
|
|
text: "删除"
|
|
|
|
onClicked: {
|
|
|
|
Request.delete("/knowledge/" + uuid)
|
|
|
|
refresh()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2023-07-01 08:56:14 +08:00
|
|
|
|
2023-06-24 18:02:21 +08:00
|
|
|
ColumnLayout {
|
|
|
|
id: row
|
|
|
|
anchors.fill: parent
|
|
|
|
anchors.margins: 10
|
|
|
|
spacing: 10
|
|
|
|
|
2023-06-28 14:47:52 +08:00
|
|
|
ColumnLayout {
|
|
|
|
id: clickable
|
|
|
|
anchors.fill: parent
|
|
|
|
MouseArea {
|
|
|
|
anchors.fill: parent
|
2023-07-06 16:09:26 +08:00
|
|
|
acceptedButtons: Qt.LeftButton | Qt.RightButton
|
2023-06-28 14:47:52 +08:00
|
|
|
onDoubleClicked: {
|
|
|
|
fileItem.parent.doubleClicked()
|
|
|
|
}
|
2023-07-06 16:09:26 +08:00
|
|
|
onClicked: {
|
|
|
|
if (mouse.button === Qt.RightButton) {
|
|
|
|
menu.popup()
|
|
|
|
}
|
|
|
|
}
|
2023-06-24 18:02:21 +08:00
|
|
|
}
|
2023-06-28 14:47:52 +08:00
|
|
|
RowLayout {
|
|
|
|
id: titleRow
|
|
|
|
Image {
|
|
|
|
id: icon
|
2023-07-01 08:56:14 +08:00
|
|
|
source: type ? "qrc:/AicsKnowledgeBase/res/" + type + ".png" : ""
|
2023-07-06 14:14:24 +08:00
|
|
|
Layout.preferredHeight: 24
|
|
|
|
Layout.preferredWidth: 24
|
2023-06-28 14:47:52 +08:00
|
|
|
}
|
|
|
|
FluText {
|
|
|
|
id: title
|
2023-07-05 22:31:14 +08:00
|
|
|
font.bold: true
|
2023-07-06 14:14:24 +08:00
|
|
|
font.pointSize: 12
|
2023-06-28 14:47:52 +08:00
|
|
|
text: fileItem.title
|
|
|
|
}
|
2023-06-24 18:02:21 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
FluText {
|
2023-06-28 14:47:52 +08:00
|
|
|
id: brief
|
|
|
|
visible: !fileItem.isDir
|
|
|
|
text: fileItem.brief
|
2023-07-05 22:31:14 +08:00
|
|
|
Layout.fillWidth: true
|
|
|
|
wrapMode: Text.WrapAnywhere
|
|
|
|
elide: Text.ElideRight
|
|
|
|
maximumLineCount: 2
|
2023-06-24 18:02:21 +08:00
|
|
|
}
|
2023-06-28 14:47:52 +08:00
|
|
|
RowLayout {
|
|
|
|
id: infoRow
|
|
|
|
visible: !fileItem.isDir
|
|
|
|
FluText {
|
|
|
|
id: date
|
2023-07-05 22:31:14 +08:00
|
|
|
color: "#5F5F5F"
|
2023-06-28 14:47:52 +08:00
|
|
|
text: fileItem.date
|
|
|
|
}
|
|
|
|
FluText {
|
|
|
|
id: size
|
|
|
|
// cast Byte size to right text size
|
2023-07-05 22:31:14 +08:00
|
|
|
color: "#5F5F5F"
|
2023-06-28 14:47:52 +08:00
|
|
|
text: fileItem.size > 1024
|
|
|
|
* 1024 ? (fileItem.size / 1024 / 1024).toFixed(
|
|
|
|
2) + "MB" : (fileItem.size / 1024).toFixed(
|
|
|
|
2) + "KB"
|
|
|
|
}
|
|
|
|
FluText {
|
|
|
|
id: pageView
|
2023-07-05 22:31:14 +08:00
|
|
|
color: "#5F5F5F"
|
2023-06-30 19:45:04 +08:00
|
|
|
text: fileItem.pageView + "浏览"
|
2023-06-28 14:47:52 +08:00
|
|
|
}
|
|
|
|
FluText {
|
|
|
|
id: stars
|
2023-07-05 22:31:14 +08:00
|
|
|
color: "#5F5F5F"
|
2023-06-28 14:47:52 +08:00
|
|
|
text: fileItem.stars + "收藏"
|
|
|
|
}
|
2023-06-24 18:02:21 +08:00
|
|
|
}
|
2023-06-28 14:47:52 +08:00
|
|
|
}
|
|
|
|
RowLayout {
|
|
|
|
visible: !fileItem.isDir
|
|
|
|
Repeater {
|
|
|
|
model: fileItem.tags
|
|
|
|
delegate: FluTextButton {
|
|
|
|
text: "#" + fileItem.tags[index]
|
|
|
|
normalColor: colorList[index % colorList.length]
|
|
|
|
font.pixelSize: 12
|
|
|
|
Layout.preferredWidth: 50
|
|
|
|
onClicked: {
|
|
|
|
emit: tagClicked(text)
|
|
|
|
}
|
|
|
|
}
|
2023-06-24 18:02:21 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|