diff --git a/resources/assets/js/app.js b/resources/assets/js/app.js
index 6aea7f970..f8b7c5003 100644
--- a/resources/assets/js/app.js
+++ b/resources/assets/js/app.js
@@ -45,12 +45,15 @@ import {
DropdownMenu,
DropdownItem,
} from 'element-ui';
+import ImageViewer from 'element-ui/packages/image/src/image-viewer';
+
Vue.component('EAvatar', Avatar);
Vue.component('ETooltip', Tooltip);
Vue.component('EPopover', Popover);
Vue.component('EDropdown', Dropdown);
Vue.component('EDropdownMenu', DropdownMenu);
Vue.component('EDropdownItem', DropdownItem);
+Vue.component('EImageViewer', ImageViewer);
const originalPush = VueRouter.prototype.push
VueRouter.prototype.push = function push(location) {
diff --git a/resources/assets/js/pages/manage.vue b/resources/assets/js/pages/manage.vue
index 3c5e4fe4e..c440e1f25 100644
--- a/resources/assets/js/pages/manage.vue
+++ b/resources/assets/js/pages/manage.vue
@@ -342,6 +342,13 @@
+
+
+
@@ -483,7 +490,10 @@ export default {
'wsMsg',
'clientNewVersion',
- 'cacheTaskBrowse'
+ 'cacheTaskBrowse',
+
+ 'previewImageList',
+ 'previewImageIndex',
]),
...mapGetters(['taskData', 'dashboardTask']),
@@ -970,6 +980,11 @@ export default {
});
},
+ closePreviewImage() {
+ this.$store.state.previewImageIndex = 0;
+ this.$store.state.previewImageList = [];
+ },
+
notificationInit() {
this.notificationClass = new notificationKoro(this.$L("打开通知成功"));
if (this.notificationClass.support) {
diff --git a/resources/assets/js/pages/manage/components/DialogView.vue b/resources/assets/js/pages/manage/components/DialogView.vue
index 2e75bd621..bb901cfe5 100644
--- a/resources/assets/js/pages/manage/components/DialogView.vue
+++ b/resources/assets/js/pages/manage/components/DialogView.vue
@@ -108,7 +108,7 @@ export default {
},
computed: {
- ...mapState(['userToken', 'userId']),
+ ...mapState(['userToken', 'userId', 'dialogMsgs']),
readList() {
return this.allList.filter(({read_at}) => read_at)
@@ -220,6 +220,23 @@ export default {
},
viewFile() {
+ const {id, dialog_id, msg} = this.msgData;
+ if (['jpg', 'jpeg', 'gif', 'png'].includes(msg.ext)) {
+ const list = $A.cloneJSON(this.dialogMsgs.filter(item => {
+ return item.dialog_id === dialog_id && item.type === 'file' && ['jpg', 'jpeg', 'gif', 'png'].includes(item.msg.ext);
+ })).sort((a, b) => {
+ return a.id - b.id;
+ });
+ const index = list.findIndex(item => item.id === id);
+ if (index > -1) {
+ this.$store.state.previewImageIndex = index;
+ this.$store.state.previewImageList = list.map(({msg}) => msg.path);
+ } else {
+ this.$store.state.previewImageIndex = 0;
+ this.$store.state.previewImageList = [msg.path];
+ }
+ return
+ }
if (this.$Electron) {
this.$Electron.sendMessage('windowRouter', {
name: 'file-msg-' + this.msgData.id,
diff --git a/resources/assets/js/pages/manage/components/TaskDetail.vue b/resources/assets/js/pages/manage/components/TaskDetail.vue
index a39db307c..c15954d62 100644
--- a/resources/assets/js/pages/manage/components/TaskDetail.vue
+++ b/resources/assets/js/pages/manage/components/TaskDetail.vue
@@ -1234,6 +1234,18 @@ export default {
},
viewFile(file) {
+ if (['jpg', 'jpeg', 'gif', 'png'].includes(file.ext)) {
+ const list = this.fileList.filter(item => ['jpg', 'jpeg', 'gif', 'png'].includes(item.ext))
+ const index = list.findIndex(item => item.id === file.id);
+ if (index > -1) {
+ this.$store.state.previewImageIndex = index;
+ this.$store.state.previewImageList = list.map(({path}) => path);
+ } else {
+ this.$store.state.previewImageIndex = 0;
+ this.$store.state.previewImageList = [file.path];
+ }
+ return
+ }
if (this.$Electron) {
this.$Electron.sendMessage('windowRouter', {
name: 'file-task-' + file.id,
diff --git a/resources/assets/js/store/state.js b/resources/assets/js/store/state.js
index a74ba3d48..0b1a36f56 100644
--- a/resources/assets/js/store/state.js
+++ b/resources/assets/js/store/state.js
@@ -121,7 +121,11 @@ const stateData = {
themeIsDark: false,
// 客户端新版本号
- clientNewVersion: null
+ clientNewVersion: null,
+
+ // 预览图片
+ previewImageIndex: 0,
+ previewImageList: [],
};
// 会员信息
diff --git a/resources/assets/sass/element.scss b/resources/assets/sass/element.scss
index 0df34d3c5..3e002c916 100644
--- a/resources/assets/sass/element.scss
+++ b/resources/assets/sass/element.scss
@@ -14,6 +14,7 @@ $--dropdown-menuItem-hover-color: #606266;
@import "~element-ui/packages/theme-chalk/src/dropdown-menu";
@import "~element-ui/packages/theme-chalk/src/dropdown-item";
@import "~element-ui/packages/theme-chalk/src/notification";
+@import "~element-ui/packages/theme-chalk/src/image";
.el-dropdown-menu__item {