diff --git a/app/Http/Controllers/Api/FileController.php b/app/Http/Controllers/Api/FileController.php
index 257ac5632..899bc0f9c 100755
--- a/app/Http/Controllers/Api/FileController.php
+++ b/app/Http/Controllers/Api/FileController.php
@@ -1098,11 +1098,8 @@ class FileController extends AbstractController
$refresh = Request::input('refresh', 'no');
//
$file = File::permissionFind($id);
- if ($file->type == 'folder') {
- return Base::retError('文件夹暂不支持此功能');
- }
+ $fileLink = $file->getShareLink($user->userid, $refresh == 'yes');
//
- $data = FileLink::generateLink($file->id, $user->userid, $refresh == 'yes');
- return Base::retSuccess('success', $data);
+ return Base::retSuccess('success', $fileLink);
}
}
diff --git a/app/Models/File.php b/app/Models/File.php
index d9515d699..a28a8e8e8 100644
--- a/app/Models/File.php
+++ b/app/Models/File.php
@@ -290,6 +290,29 @@ class File extends AbstractModel
return true;
}
+ /**
+ * 获取文件分享链接
+ * @param $userid
+ * @param $refresh
+ * @return array
+ */
+ public function getShareLink($userid, $refresh = false)
+ {
+ if ($this->type == 'folder') {
+ throw new ApiException('文件夹不支持分享');
+ }
+ return FileLink::generateLink($this->id, $userid, $refresh);
+ }
+
+ /**
+ * 获取文件名称加后缀
+ * @return string|null
+ */
+ public function getNameAndExt()
+ {
+ return $this->ext ? "{$this->name}.{$this->ext}" : $this->name;
+ }
+
/**
* 推送消息
* @param $action
diff --git a/app/Models/WebSocketDialogMsg.php b/app/Models/WebSocketDialogMsg.php
index e5a799f71..02991e6a6 100644
--- a/app/Models/WebSocketDialogMsg.php
+++ b/app/Models/WebSocketDialogMsg.php
@@ -660,7 +660,7 @@ class WebSocketDialogMsg extends AbstractModel
if ($file->type == 'folder') {
throw new ApiException('文件夹不支持分享');
}
- $fileLink = FileLink::generateLink($file->id, User::userid());
+ $fileLink = $file->getShareLink(User::userid());
$keyId = $fileLink['code'];
} else {
preg_match("/\/single\/file\/(.*?)$/i", $keyId, $match);
diff --git a/resources/assets/js/pages/manage/components/DialogSelect.vue b/resources/assets/js/pages/manage/components/DialogSelect.vue
new file mode 100644
index 000000000..6cc7cc784
--- /dev/null
+++ b/resources/assets/js/pages/manage/components/DialogSelect.vue
@@ -0,0 +1,78 @@
+
+
+
+
+
diff --git a/resources/assets/js/pages/manage/components/DialogWrapper.vue b/resources/assets/js/pages/manage/components/DialogWrapper.vue
index ccb681caf..2658b2da7 100644
--- a/resources/assets/js/pages/manage/components/DialogWrapper.vue
+++ b/resources/assets/js/pages/manage/components/DialogWrapper.vue
@@ -293,43 +293,7 @@
v-model="forwardShow"
:title="$L('转发')"
:mask-closable="false">
-
+
@@ -446,10 +410,12 @@ import ChatInput from "./ChatInput";
import VirtualList from 'vue-virtual-scroll-list-hi'
import {Store} from "le5le-store";
+import DialogSelect from "./DialogSelect";
export default {
name: "DialogWrapper",
components: {
+ DialogSelect,
DialogRespond,
DialogItem,
VirtualList,
diff --git a/resources/assets/sass/pages/components/_.scss b/resources/assets/sass/pages/components/_.scss
index 746c75775..decc8036a 100755
--- a/resources/assets/sass/pages/components/_.scss
+++ b/resources/assets/sass/pages/components/_.scss
@@ -1,6 +1,7 @@
@import "chat-input";
@import "dialog-group-info";
@import "dialog-respond";
+@import "dialog-select";
@import "dialog-wrapper";
@import "file-content";
@import "meeting-manager";
diff --git a/resources/assets/sass/pages/components/dialog-select.scss b/resources/assets/sass/pages/components/dialog-select.scss
new file mode 100644
index 000000000..b22d4476b
--- /dev/null
+++ b/resources/assets/sass/pages/components/dialog-select.scss
@@ -0,0 +1,64 @@
+.dialog-wrapper-dialogids {
+ .ivu-select-arrow {
+ display: none !important;
+ }
+}
+
+.dialog-wrapper-forward {
+ .forward-option {
+ max-width: 100%;
+ display: flex;
+ align-items: center;
+ .forward-avatar {
+ display: flex;
+ align-items: center;
+ .icon-avatar {
+ width: 26px;
+ height: 26px;
+ flex-grow: 0;
+ flex-shrink: 0;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border-radius: 50%;
+ font-size: 18px;
+ background-color: #61B2F9;
+ color: #ffffff;
+ &.department {
+ background-color: #5BC7B0;
+ }
+ &.project {
+ background-color: #6E99EB;
+ }
+ &.task {
+ background-color: #9B96DF;
+ font-size: 16px;
+ }
+ }
+ }
+ .forward-name {
+ margin-left: 10px;
+ flex: 1;
+ width: 0;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ }
+ }
+ .ivu-select-item {
+ &.ivu-select-item-selected {
+ &:after {
+ top: 8px;
+ }
+ }
+ }
+ .forward-drop-prepend {
+ text-align: center;
+ color: #c5c8ce;
+ line-height: 20px;
+ padding-bottom: 5px;
+ font-size: 12px;
+ border-bottom: 1px solid #f1f1f1;
+ margin-bottom: 5px;
+ }
+}
diff --git a/resources/assets/sass/pages/components/dialog-wrapper.scss b/resources/assets/sass/pages/components/dialog-wrapper.scss
index 4e349f1a0..9e465008e 100644
--- a/resources/assets/sass/pages/components/dialog-wrapper.scss
+++ b/resources/assets/sass/pages/components/dialog-wrapper.scss
@@ -1416,71 +1416,6 @@
overflow: hidden !important;
}
-.dialog-wrapper-dialogids {
- .ivu-select-arrow {
- display: none !important;
- }
-}
-
-.dialog-wrapper-forward {
- .forward-option {
- max-width: 100%;
- display: flex;
- align-items: center;
- .forward-avatar {
- display: flex;
- align-items: center;
- .icon-avatar {
- width: 26px;
- height: 26px;
- flex-grow: 0;
- flex-shrink: 0;
- display: flex;
- align-items: center;
- justify-content: center;
- border-radius: 50%;
- font-size: 18px;
- background-color: #61B2F9;
- color: #ffffff;
- &.department {
- background-color: #5BC7B0;
- }
- &.project {
- background-color: #6E99EB;
- }
- &.task {
- background-color: #9B96DF;
- font-size: 16px;
- }
- }
- }
- .forward-name {
- margin-left: 10px;
- flex: 1;
- width: 0;
- white-space: nowrap;
- text-overflow: ellipsis;
- overflow: hidden;
- }
- }
- .ivu-select-item {
- &.ivu-select-item-selected {
- &:after {
- top: 8px;
- }
- }
- }
- .forward-drop-prepend {
- text-align: center;
- color: #c5c8ce;
- line-height: 20px;
- padding-bottom: 5px;
- font-size: 12px;
- border-bottom: 1px solid #f1f1f1;
- margin-bottom: 5px;
- }
-}
-
@media (max-width: 768px) {
.dialog-wrapper {
background-color: #f8f8f8;