mirror of
https://github.com/kuaifan/dootask.git
synced 2025-12-12 03:01:12 +00:00
add:首页功能开发
This commit is contained in:
commit
ffc2c7dea3
@ -114,7 +114,7 @@ class SystemController extends AbstractController
|
||||
return Base::retError('参数错误');
|
||||
}
|
||||
foreach ($list AS $item) {
|
||||
if (empty($item['name']) || empty($item['color']) || empty($item['days']) || empty($item['priority'])) {
|
||||
if (empty($item['name']) || empty($item['color']) || empty($item['priority'])) {
|
||||
continue;
|
||||
}
|
||||
$array[] = [
|
||||
@ -231,7 +231,7 @@ class SystemController extends AbstractController
|
||||
}
|
||||
|
||||
/**
|
||||
* @api {post} api/system/imgupload 11. 上传图片
|
||||
* @api {post} api/system/imgupload 09. 上传图片
|
||||
*
|
||||
* @apiDescription 需要token身份
|
||||
* @apiVersion 1.0.0
|
||||
@ -281,7 +281,7 @@ class SystemController extends AbstractController
|
||||
}
|
||||
|
||||
/**
|
||||
* @api {get} api/system/get/imgview 12. 浏览图片空间
|
||||
* @api {get} api/system/get/imgview 10. 浏览图片空间
|
||||
*
|
||||
* @apiDescription 需要token身份
|
||||
* @apiVersion 1.0.0
|
||||
@ -377,7 +377,7 @@ class SystemController extends AbstractController
|
||||
}
|
||||
|
||||
/**
|
||||
* @api {post} api/system/fileupload 13. 上传文件
|
||||
* @api {post} api/system/fileupload 11. 上传文件
|
||||
*
|
||||
* @apiDescription 需要token身份
|
||||
* @apiVersion 1.0.0
|
||||
|
||||
@ -153,7 +153,7 @@ class UsersController extends AbstractController
|
||||
}
|
||||
|
||||
/**
|
||||
* @api {get} api/users/reg/needinvite 04. 是否需要邀请码
|
||||
* @api {get} api/users/reg/needinvite 05. 是否需要邀请码
|
||||
*
|
||||
* @apiDescription 用于判断注册是否需要邀请码
|
||||
* @apiVersion 1.0.0
|
||||
@ -172,7 +172,7 @@ class UsersController extends AbstractController
|
||||
}
|
||||
|
||||
/**
|
||||
* @api {get} api/users/info 05. 获取我的信息
|
||||
* @api {get} api/users/info 06. 获取我的信息
|
||||
*
|
||||
* @apiDescription 需要token身份
|
||||
* @apiVersion 1.0.0
|
||||
@ -208,7 +208,7 @@ class UsersController extends AbstractController
|
||||
}
|
||||
|
||||
/**
|
||||
* @api {get} api/users/editdata 06. 修改自己的资料
|
||||
* @api {get} api/users/editdata 07. 修改自己的资料
|
||||
*
|
||||
* @apiDescription 需要token身份
|
||||
* @apiVersion 1.0.0
|
||||
@ -268,7 +268,7 @@ class UsersController extends AbstractController
|
||||
}
|
||||
|
||||
/**
|
||||
* @api {get} api/users/editpass 07. 修改自己的密码
|
||||
* @api {get} api/users/editpass 08. 修改自己的密码
|
||||
*
|
||||
* @apiDescription 需要token身份
|
||||
* @apiVersion 1.0.0
|
||||
@ -308,7 +308,7 @@ class UsersController extends AbstractController
|
||||
}
|
||||
|
||||
/**
|
||||
* @api {get} api/users/search 08. 搜索会员列表
|
||||
* @api {get} api/users/search 09. 搜索会员列表
|
||||
*
|
||||
* @apiDescription 搜索会员列表
|
||||
* @apiVersion 1.0.0
|
||||
@ -369,7 +369,7 @@ class UsersController extends AbstractController
|
||||
}
|
||||
|
||||
/**
|
||||
* @api {get} api/users/basic 09. 获取指定会员基础信息
|
||||
* @api {get} api/users/basic 10. 获取指定会员基础信息
|
||||
*
|
||||
* @apiDescription 需要token身份
|
||||
* @apiVersion 1.0.0
|
||||
|
||||
@ -335,7 +335,7 @@ class ProjectTask extends AbstractModel
|
||||
'p_color' => $p_color,
|
||||
]);
|
||||
if ($content) {
|
||||
$task->desc = Base::getHtml($content);
|
||||
$task->desc = Base::getHtml($content, 100);
|
||||
}
|
||||
// 标题
|
||||
if (empty($name)) {
|
||||
@ -531,7 +531,7 @@ class ProjectTask extends AbstractModel
|
||||
], [
|
||||
'content' => $data['content'],
|
||||
]);
|
||||
$this->desc = Base::getHtml($data['content']);
|
||||
$this->desc = Base::getHtml($data['content'], 100);
|
||||
$this->addLog("修改{任务}详细描述");
|
||||
$updateContent = true;
|
||||
}
|
||||
|
||||
@ -35,7 +35,7 @@ class SettingsTableSeeder extends Seeder
|
||||
'id' => 2,
|
||||
'name' => 'priority',
|
||||
'desc' => '',
|
||||
'setting' => '[{"name":"\\u91cd\\u8981\\u4e14\\u7d27\\u6025","color":"#ED4014","days":1,"priority":1},{"name":"\\u91cd\\u8981\\u4e0d\\u7d27\\u6025","color":"#F16B62","days":3,"priority":2},{"name":"\\u7d27\\u6025\\u4e0d\\u91cd\\u8981","color":"#19C919","days":5,"priority":3},{"name":"\\u4e0d\\u91cd\\u8981\\u4e0d\\u7d27\\u6025","color":"#2D8CF0","days":7,"priority":4}]',
|
||||
'setting' => '[{"name":"\\u91cd\\u8981\\u4e14\\u7d27\\u6025","color":"#ED4014","days":1,"priority":1},{"name":"\\u91cd\\u8981\\u4e0d\\u7d27\\u6025","color":"#F16B62","days":3,"priority":2},{"name":"\\u7d27\\u6025\\u4e0d\\u91cd\\u8981","color":"#19C919","days":5,"priority":3},{"name":"\\u4e0d\\u91cd\\u8981\\u4e0d\\u7d27\\u6025","color":"#2D8CF0","days":0,"priority":4}]',
|
||||
'created_at' => seeders_at('2021-07-01 08:04:30'),
|
||||
'updated_at' => seeders_at('2021-07-01 09:20:26'),
|
||||
),
|
||||
|
||||
142
electron/main.js
vendored
142
electron/main.js
vendored
@ -1,7 +1,7 @@
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
const XLSX = require('xlsx');
|
||||
const {app, BrowserWindow, ipcMain, dialog} = require('electron')
|
||||
const {app, BrowserWindow, ipcMain, dialog, screen} = require('electron')
|
||||
|
||||
let mainWindow = null,
|
||||
subWindow = [],
|
||||
@ -42,7 +42,7 @@ function randomString(len) {
|
||||
return pwd;
|
||||
}
|
||||
|
||||
function createWindow() {
|
||||
function createMainWindow() {
|
||||
mainWindow = new BrowserWindow({
|
||||
width: 1280,
|
||||
height: 800,
|
||||
@ -53,6 +53,7 @@ function createWindow() {
|
||||
contextIsolation: false
|
||||
}
|
||||
})
|
||||
mainWindow.webContents.setUserAgent(mainWindow.webContents.getUserAgent() + " MainTaksWindow/1.0");
|
||||
|
||||
if (devloadUrl) {
|
||||
mainWindow.loadURL(devloadUrl).then(r => {
|
||||
@ -76,24 +77,24 @@ function createWindow() {
|
||||
})
|
||||
}
|
||||
|
||||
function createRouter(arg) {
|
||||
if (!arg) {
|
||||
function createSubWindow(args) {
|
||||
if (!args) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (typeof arg !== "object") {
|
||||
arg = {
|
||||
path: arg,
|
||||
if (typeof args !== "object") {
|
||||
args = {
|
||||
path: args,
|
||||
config: {},
|
||||
}
|
||||
}
|
||||
|
||||
let name = arg.name || "auto_" + randomString(6);
|
||||
let name = args.name || "auto_" + randomString(6);
|
||||
let item = subWindow.find(item => item.name == name);
|
||||
let browser = item ? item.browser : null;
|
||||
if (browser) {
|
||||
browser.focus();
|
||||
if (arg.force === false) {
|
||||
if (args.force === false) {
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
@ -104,10 +105,11 @@ function createRouter(arg) {
|
||||
parent: mainWindow,
|
||||
webPreferences: {
|
||||
preload: path.join(__dirname, 'preload.js'),
|
||||
devTools: args.devTools !== false,
|
||||
nodeIntegration: true,
|
||||
contextIsolation: false
|
||||
}
|
||||
}, arg.config || {}))
|
||||
}, args.config || {}))
|
||||
browser.on('close', function () {
|
||||
let index = subWindow.findIndex(item => item.name == name);
|
||||
if (index > -1) {
|
||||
@ -116,14 +118,15 @@ function createRouter(arg) {
|
||||
})
|
||||
subWindow.push({ name, browser })
|
||||
}
|
||||
browser.webContents.setUserAgent(browser.webContents.getUserAgent() + " SubTaskWindow/1.0" + (args.userAgent ? (" " + args.userAgent) : ""));
|
||||
|
||||
if (devloadUrl) {
|
||||
browser.loadURL(devloadUrl + '#' + (arg.hash || arg.path)).then(r => {
|
||||
browser.loadURL(devloadUrl + '#' + (args.hash || args.path)).then(r => {
|
||||
|
||||
})
|
||||
} else {
|
||||
browser.loadFile('./public/index.html', {
|
||||
hash: arg.hash || arg.path
|
||||
hash: args.hash || args.path
|
||||
}).then(r => {
|
||||
|
||||
})
|
||||
@ -131,55 +134,131 @@ function createRouter(arg) {
|
||||
}
|
||||
|
||||
app.whenReady().then(() => {
|
||||
createWindow()
|
||||
createMainWindow()
|
||||
|
||||
app.on('activate', function () {
|
||||
if (BrowserWindow.getAllWindows().length === 0) createWindow()
|
||||
app.on('activate', () => {
|
||||
if (BrowserWindow.getAllWindows().length === 0) createMainWindow()
|
||||
})
|
||||
})
|
||||
|
||||
app.on('window-all-closed', function () {
|
||||
if (process.platform !== 'darwin') app.quit()
|
||||
app.on('window-all-closed', () => {
|
||||
if (process.platform !== 'darwin') {
|
||||
app.quit()
|
||||
}
|
||||
})
|
||||
|
||||
app.on('before-quit', () => {
|
||||
willQuitApp = true
|
||||
})
|
||||
|
||||
ipcMain.on('inheritClose', () => {
|
||||
ipcMain.on('inheritClose', (event) => {
|
||||
inheritClose = true
|
||||
event.returnValue = "ok"
|
||||
})
|
||||
|
||||
ipcMain.on('windowRouter', (event, arg) => {
|
||||
createRouter(arg)
|
||||
ipcMain.on('windowRouter', (event, args) => {
|
||||
createSubWindow(args)
|
||||
event.returnValue = "ok"
|
||||
})
|
||||
|
||||
ipcMain.on('windowHidden', () => {
|
||||
ipcMain.on('windowHidden', (event) => {
|
||||
app.hide();
|
||||
event.returnValue = "ok"
|
||||
})
|
||||
|
||||
ipcMain.on('windowClose', () => {
|
||||
mainWindow.close()
|
||||
ipcMain.on('windowClose', (event) => {
|
||||
const win = BrowserWindow.fromWebContents(event.sender);
|
||||
win.close()
|
||||
event.returnValue = "ok"
|
||||
})
|
||||
|
||||
ipcMain.on('windowMax', function () {
|
||||
if (mainWindow.isMaximized()) {
|
||||
mainWindow.restore();
|
||||
} else {
|
||||
mainWindow.maximize();
|
||||
ipcMain.on('windowSize', (event, args) => {
|
||||
const win = BrowserWindow.fromWebContents(event.sender);
|
||||
if (win) {
|
||||
if (args.width || args.height) {
|
||||
let [w, h] = win.getSize()
|
||||
const width = args.width || w
|
||||
const height = args.height || h
|
||||
win.setSize(width, height, args.animate === true)
|
||||
//
|
||||
if (args.autoZoom === true) {
|
||||
let move = false
|
||||
let [x, y] = win.getPosition()
|
||||
if (Math.abs(width - w) > 10) {
|
||||
move = true
|
||||
x -= (width - w) / 2
|
||||
}
|
||||
if (Math.abs(height - h) > 10) {
|
||||
move = true
|
||||
y -= (height - h) / 2
|
||||
}
|
||||
if (move) {
|
||||
win.setPosition(Math.max(0, Math.floor(x)), Math.max(0, Math.floor(y)))
|
||||
}
|
||||
}
|
||||
}
|
||||
if (args.minWidth || args.minHeight) {
|
||||
win.setMinimumSize(args.minWidth || win.getMinimumSize()[0], args.minHeight || win.getMinimumSize()[1])
|
||||
}
|
||||
if (args.maxWidth || args.maxHeight) {
|
||||
win.setMaximumSize(args.maxWidth || win.getMaximumSize()[0], args.maxHeight || win.getMaximumSize()[1])
|
||||
}
|
||||
}
|
||||
event.returnValue = "ok"
|
||||
})
|
||||
|
||||
ipcMain.on('setDockBadge', (event, arg) => {
|
||||
ipcMain.on('windowMinSize', (event, args) => {
|
||||
const win = BrowserWindow.fromWebContents(event.sender);
|
||||
if (win) {
|
||||
win.setMinimumSize(args.width || win.getMinimumSize()[0], args.height || win.getMinimumSize()[1])
|
||||
}
|
||||
event.returnValue = "ok"
|
||||
})
|
||||
|
||||
ipcMain.on('windowMaxSize', (event, args) => {
|
||||
const win = BrowserWindow.fromWebContents(event.sender);
|
||||
if (win) {
|
||||
win.setMaximumSize(args.width || win.getMaximumSize()[0], args.height || win.getMaximumSize()[1])
|
||||
}
|
||||
event.returnValue = "ok"
|
||||
})
|
||||
|
||||
ipcMain.on('windowCenter', (event, args) => {
|
||||
const win = BrowserWindow.fromWebContents(event.sender);
|
||||
if (win) {
|
||||
win.center();
|
||||
}
|
||||
event.returnValue = "ok"
|
||||
})
|
||||
|
||||
ipcMain.on('windowMax', (event) => {
|
||||
const win = BrowserWindow.fromWebContents(event.sender);
|
||||
if (win.isMaximized()) {
|
||||
win.restore();
|
||||
} else {
|
||||
win.maximize();
|
||||
}
|
||||
event.returnValue = "ok"
|
||||
})
|
||||
|
||||
ipcMain.on('sendForwardMain', (event, args) => {
|
||||
if (mainWindow) {
|
||||
mainWindow.webContents.send(args.channel, args.data)
|
||||
}
|
||||
event.returnValue = "ok"
|
||||
})
|
||||
|
||||
ipcMain.on('setDockBadge', (event, args) => {
|
||||
if(process.platform !== 'darwin'){
|
||||
// Mac only
|
||||
return;
|
||||
}
|
||||
if (runNum(arg) > 0) {
|
||||
app.dock.setBadge(String(arg))
|
||||
if (runNum(args) > 0) {
|
||||
app.dock.setBadge(String(args))
|
||||
} else {
|
||||
app.dock.setBadge("")
|
||||
}
|
||||
event.returnValue = "ok"
|
||||
})
|
||||
|
||||
ipcMain.on('saveSheet', (event, data, filename, opts) => {
|
||||
@ -194,4 +273,5 @@ ipcMain.on('saveSheet', (event, data, filename, opts) => {
|
||||
}).then(o => {
|
||||
XLSX.writeFile(data, o.filePath, opts);
|
||||
});
|
||||
event.returnValue = "ok"
|
||||
})
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "DooTask",
|
||||
"version": "0.4.78",
|
||||
"version": "0.4.86",
|
||||
"description": "DooTask is task management system.",
|
||||
"main": "main.js",
|
||||
"license": "MIT",
|
||||
@ -35,8 +35,9 @@
|
||||
"@electron-forge/maker-zip": "^6.0.0-beta.61",
|
||||
"dmg-license": "^1.0.10",
|
||||
"dotenv": "^10.0.0",
|
||||
"electron": "^16.0.4",
|
||||
"electron-builder": "^22.14.5"
|
||||
"electron": "^16.0.5",
|
||||
"electron-builder": "^22.14.5",
|
||||
"electron-log": "^4.4.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"electron-squirrel-startup": "^1.0.0",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "DooTask",
|
||||
"version": "0.4.78",
|
||||
"version": "0.4.86",
|
||||
"description": "DooTask is task management system.",
|
||||
"scripts": {
|
||||
"start": "./cmd dev",
|
||||
@ -36,6 +36,7 @@
|
||||
"cross-env": "^7.0.3",
|
||||
"css-loader": "^6.5.1",
|
||||
"echarts": "^5.2.2",
|
||||
"electron": "^16.0.5",
|
||||
"element-ui": "^2.15.6",
|
||||
"file-loader": "^6.2.0",
|
||||
"inquirer": "^8.2.0",
|
||||
|
||||
2
public/css/app.css
vendored
2
public/css/app.css
vendored
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
4
public/docs/assets/main.bundle.js
vendored
4
public/docs/assets/main.bundle.js
vendored
File diff suppressed because one or more lines are too long
2
public/js/app.js
vendored
2
public/js/app.js
vendored
File diff suppressed because one or more lines are too long
@ -52,7 +52,7 @@
|
||||
|
||||
/**!
|
||||
* @fileOverview Kickass library to create and place poppers near their reference elements.
|
||||
* @version 1.15.0
|
||||
* @version 1.16.1
|
||||
* @license
|
||||
* Copyright (c) 2016 Federico Zivolo and contributors
|
||||
*
|
||||
|
||||
2
public/js/build/153.js
vendored
2
public/js/build/153.js
vendored
File diff suppressed because one or more lines are too long
1
public/js/build/165.js
vendored
1
public/js/build/165.js
vendored
File diff suppressed because one or more lines are too long
2
public/js/build/18.js
vendored
2
public/js/build/18.js
vendored
File diff suppressed because one or more lines are too long
1
public/js/build/205.js
vendored
Normal file
1
public/js/build/205.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
"use strict";(self.webpackChunkDooTask=self.webpackChunkDooTask||[]).push([[205],{4058:(e,t,i)=>{i.d(t,{Z:()=>r});var n=i(1519),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".component-only-office[data-v-cd66b0a0]{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.component-only-office .placeholder[data-v-cd66b0a0]{flex:1;height:100%;width:100%}.component-only-office .office-loading[data-v-cd66b0a0]{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:2}",""]);const r=o},74205:(e,t,i)=>{i.r(t),i.d(t,{default:()=>f});var n=i(20629);function o(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function r(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}const l={name:"OnlyOffice",props:{id:{type:String,default:function(){return"office_"+Math.round(1e4*Math.random())}},value:{type:[Object,Array],default:function(){return{}}}},data:function(){return{loadIng:0,fileName:null,fileType:null,fileUrl:null,docEditor:null}},mounted:function(){},beforeDestroy:function(){null!==this.docEditor&&(this.docEditor.destroyEditor(),this.docEditor=null)},computed:function(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?o(Object(i),!0).forEach((function(t){r(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):o(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}({},(0,n.rn)(["userToken","userInfo"])),watch:{value:{handler:function(e){this.fileUrl="http://nginx/api/file/content/?id="+e.id+"&token="+this.userToken,this.fileType=this.getType(e.type),this.fileName=e.name},immediate:!0,deep:!0},fileUrl:{handler:function(e){var t=this;e&&(this.loadIng++,$A.loadScript(this.$store.state.method.apiUrl("../office/web-apps/apps/api/documents/api.js"),(function(e){t.loadIng--,null===e?t.loadFile():$A.modalAlert("组件加载失败!")})))},immediate:!0}},methods:{getType:function(e){switch(e){case"word":return"docx";case"excel":return"xlsx";case"ppt":return"pptx"}return""},loadFile:function(){var e=this;if(this.fileUrl){null!==this.docEditor&&(this.docEditor.destroyEditor(),this.docEditor=null);var t="zh";switch(this.getLanguage()){case"CN":case"TC":t="zh";break;default:t="en"}var i={document:{fileType:this.fileType,key:this.fileType+"-"+this.value.id,title:this.fileName+"."+this.fileType,url:this.fileUrl},editorConfig:{mode:"edit",lang:t,user:{id:this.userInfo.userid,name:this.userInfo.nickname},customization:{uiTheme:"theme-classic-light"},callbackUrl:"http://nginx/api/file/content/office?id="+this.value.id+"&token="+this.userToken}};this.$nextTick((function(){e.docEditor=new DocsAPI.DocEditor(e.id,i)}))}}}};var a=i(93379),c=i.n(a),s=i(4058),d={insert:"head",singleton:!1};c()(s.Z,d);s.Z.locals;const f=(0,i(51900).Z)(l,(function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"component-only-office"},[i("div",{staticClass:"placeholder",attrs:{id:this.id}}),e._v(" "),e.loadIng>0?i("div",{staticClass:"office-loading"},[i("Loading")],1):e._e()])}),[],!1,null,"cd66b0a0",null).exports}}]);
|
||||
2
public/js/build/210.js
vendored
Normal file
2
public/js/build/210.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -257,7 +257,7 @@
|
||||
/** @license
|
||||
*
|
||||
* jsPDF - PDF Document creation from JavaScript
|
||||
* Version 2.4.0 Built on 2021-09-14T10:30:30.230Z
|
||||
* Version 2.5.0 Built on 2021-12-21T09:44:51.866Z
|
||||
* CommitID 00000000
|
||||
*
|
||||
* Copyright (c) 2010-2021 James Hall <james@parall.ax>, https://github.com/MrRio/jsPDF
|
||||
2
public/js/build/294.js
vendored
2
public/js/build/294.js
vendored
File diff suppressed because one or more lines are too long
1
public/js/build/3.js
vendored
1
public/js/build/3.js
vendored
File diff suppressed because one or more lines are too long
1
public/js/build/320.js
vendored
Normal file
1
public/js/build/320.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
public/js/build/340.js
vendored
Normal file
2
public/js/build/340.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -1,6 +1,6 @@
|
||||
/*!
|
||||
* TOAST UI Calendar
|
||||
* @version 1.13.0-1 | Wed Jun 16 2021
|
||||
* @version 1.15.1 | Wed Dec 22 2021
|
||||
* @author NHN FE Development Lab <dl_javascript@nhn.com>
|
||||
* @license MIT
|
||||
*/
|
||||
@ -84,6 +84,8 @@
|
||||
|
||||
/*! ../common/reqAnimFrame */
|
||||
|
||||
/*! ../common/sanitizer */
|
||||
|
||||
/*! ../common/timezone */
|
||||
|
||||
/*! ../common/vlayout */
|
||||
@ -302,6 +304,10 @@
|
||||
|
||||
/*! ./weekdayInMonth */
|
||||
|
||||
/*! @license DOMPurify 2.3.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.3.1/LICENSE */
|
||||
|
||||
/*! dompurify */
|
||||
|
||||
/*! handlebars-template-loader/runtime */
|
||||
|
||||
/*! handlebars/runtime */
|
||||
@ -424,6 +430,10 @@
|
||||
!*** ./src/js/view/month/more.js ***!
|
||||
\***********************************/
|
||||
|
||||
/*!************************************!*\
|
||||
!*** ./src/js/common/sanitizer.js ***!
|
||||
\************************************/
|
||||
|
||||
/*!************************************!*\
|
||||
!*** ./src/js/factory/calendar.js ***!
|
||||
\************************************/
|
||||
@ -616,6 +626,10 @@
|
||||
!*** ./src/js/view/template/month/month.hbs ***!
|
||||
\**********************************************/
|
||||
|
||||
/*!***********************************************!*\
|
||||
!*** ./node_modules/dompurify/dist/purify.js ***!
|
||||
\***********************************************/
|
||||
|
||||
/*!***********************************************!*\
|
||||
!*** ./src/js/handler/daygrid/resizeGuide.js ***!
|
||||
\***********************************************/
|
||||
2
public/js/build/341.js
vendored
2
public/js/build/341.js
vendored
File diff suppressed because one or more lines are too long
2
public/js/build/357.js
vendored
Normal file
2
public/js/build/357.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -257,7 +257,7 @@
|
||||
/** @license
|
||||
*
|
||||
* jsPDF - PDF Document creation from JavaScript
|
||||
* Version 2.4.0 Built on 2021-09-14T10:30:30.230Z
|
||||
* Version 2.5.0 Built on 2021-12-21T09:44:51.866Z
|
||||
* CommitID 00000000
|
||||
*
|
||||
* Copyright (c) 2010-2021 James Hall <james@parall.ax>, https://github.com/MrRio/jsPDF
|
||||
1
public/js/build/371.js
vendored
Normal file
1
public/js/build/371.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
public/js/build/388.js
vendored
Normal file
2
public/js/build/388.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/js/build/418.js
vendored
Normal file
1
public/js/build/418.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
"use strict";(self.webpackChunkDooTask=self.webpackChunkDooTask||[]).push([[418],{35270:(e,t,a)=>{a.d(t,{Z:()=>i});var n=a(1519),s=a.n(n)()((function(e){return e[1]}));s.push([e.id,".page-404[data-v-1f590918]{background-color:#fff;color:#636b6f;font-weight:400;margin:0}.page-404[data-v-1f590918],.page-404 .full-height[data-v-1f590918]{height:100vh}.page-404 .flex-center[data-v-1f590918]{align-items:center;display:flex;justify-content:center}.page-404 .position-ref[data-v-1f590918]{position:relative}.page-404 .code[data-v-1f590918]{border-right:2px solid;font-size:26px;padding:0 15px;text-align:center}.page-404 .message[data-v-1f590918]{font-size:18px;padding:10px;text-align:center}",""]);const i=s},54418:(e,t,a)=>{a.r(t),a.d(t,{default:()=>o});var n=a(93379),s=a.n(n),i=a(35270),l={insert:"head",singleton:!1};s()(i.Z,l);i.Z.locals;const o=(0,a(51900).Z)({},(function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)}),[function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"page-404"},[a("div",{staticClass:"flex-center position-ref full-height"},[a("div",{staticClass:"code"},[e._v("404")]),e._v(" "),a("div",{staticClass:"message"},[e._v("Not Found")])])])}],!1,null,"1f590918",null).exports}}]);
|
||||
1
public/js/build/461.js
vendored
Normal file
1
public/js/build/461.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/js/build/481.js
vendored
Normal file
1
public/js/build/481.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
"use strict";(self.webpackChunkDooTask=self.webpackChunkDooTask||[]).push([[481],{41339:(t,e,i)=>{i.d(e,{Z:()=>n});var a=i(1519),o=i.n(a)()((function(t){return t[1]}));o.push([t.id,".page-invite[data-v-10872f44]{align-items:center;display:flex;justify-content:center}.page-invite .invite-warp .invite-desc[data-v-10872f44]{max-height:300px;max-width:460px;overflow:auto}.page-invite .invite-warp .invite-footer[data-v-10872f44]{align-items:center;display:flex;justify-content:center;margin-top:24px}.page-invite .invite-warp .invite-footer>button[data-v-10872f44]{height:36px;min-width:120px}",""]);const n=o},49481:(t,e,i)=>{i.r(e),i.d(e,{default:()=>s});const a={data:function(){return{loadIng:0,joinLoad:0,already:!1,project:{}}},watch:{$route:{handler:function(t){this.code=t.query?t.query.code:"",this.getData()},immediate:!0}},methods:{getData:function(){var t=this;this.loadIng++,this.$store.dispatch("call",{url:"project/invite/info",data:{code:this.code}}).then((function(e){var i=e.data;t.loadIng--,t.already=i.already,t.project=i.project})).catch((function(){t.loadIng--,t.project={}}))},joinProject:function(){var t=this;this.joinLoad++,this.$store.dispatch("call",{url:"project/invite/join",data:{code:this.code}}).then((function(e){var i=e.data;t.joinLoad--,t.already=i.already,t.project=i.project,t.goProject()})).catch((function(e){var i=e.msg;t.joinLoad--,$A.modalError(i)}))},goProject:function(){var t=this;this.$nextTick((function(){t.goForward({path:"/manage/project/"+t.project.id})}))}}};var o=i(93379),n=i.n(o),c=i(41339),r={insert:"head",singleton:!1};n()(c.Z,r);c.Z.locals;const s=(0,i(51900).Z)(a,(function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"page-invite"},[i("PageTitle",{attrs:{title:t.$L("加入项目")}}),t._v(" "),t.loadIng>0?i("div",{staticClass:"invite-load"},[i("Loading")],1):i("div",{staticClass:"invite-warp"},[t.project.id>0?i("Card",[i("p",{attrs:{slot:"title"},slot:"title"},[t._v(t._s(t.project.name))]),t._v(" "),t.project.desc?i("div",{staticClass:"invite-desc"},[t._v(t._s(t.project.desc))]):i("div",[t._v(t._s(t.$L("暂无介绍")))]),t._v(" "),i("div",{staticClass:"invite-footer"},[t.already?i("Button",{attrs:{type:"success",icon:"ios-checkmark-circle-outline"},on:{click:t.goProject}},[t._v(t._s(t.$L("已加入")))]):i("Button",{attrs:{type:"primary",loading:t.joinLoad>0},on:{click:t.joinProject}},[t._v(t._s(t.$L("加入项目")))])],1)]):i("Card",[i("p",[t._v(t._s(t.$L("邀请地址不存在或已被删除!")))])])],1)],1)}),[],!1,null,"10872f44",null).exports}}]);
|
||||
1
public/js/build/545.js
vendored
Normal file
1
public/js/build/545.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
public/js/build/600.js
vendored
2
public/js/build/600.js
vendored
File diff suppressed because one or more lines are too long
1
public/js/build/666.js
vendored
1
public/js/build/666.js
vendored
File diff suppressed because one or more lines are too long
1
public/js/build/694.js
vendored
1
public/js/build/694.js
vendored
@ -1 +0,0 @@
|
||||
"use strict";(self.webpackChunkDooTask=self.webpackChunkDooTask||[]).push([[694],{31185:(e,t,i)=>{i.d(t,{Z:()=>r});var n=i(23645),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".component-only-office[data-v-cd66b0a0]{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.component-only-office .placeholder[data-v-cd66b0a0]{flex:1;height:100%;width:100%}.component-only-office .office-loading[data-v-cd66b0a0]{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:2}",""]);const r=o},32694:(e,t,i)=>{i.r(t),i.d(t,{default:()=>f});var n=i(20629);function o(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function r(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}const l={name:"OnlyOffice",props:{id:{type:String,default:function(){return"office_"+Math.round(1e4*Math.random())}},value:{type:[Object,Array],default:function(){return{}}}},data:function(){return{loadIng:0,fileName:null,fileType:null,fileUrl:null,docEditor:null}},mounted:function(){},beforeDestroy:function(){null!==this.docEditor&&(this.docEditor.destroyEditor(),this.docEditor=null)},computed:function(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?o(Object(i),!0).forEach((function(t){r(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):o(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}({},(0,n.rn)(["userToken","userInfo"])),watch:{value:{handler:function(e){this.fileUrl="http://nginx/api/file/content/?id="+e.id+"&token="+this.userToken,this.fileType=this.getType(e.type),this.fileName=e.name},immediate:!0,deep:!0},fileUrl:{handler:function(e){var t=this;e&&(this.loadIng++,$A.loadScript(this.$store.state.method.apiUrl("../office/web-apps/apps/api/documents/api.js"),(function(e){t.loadIng--,null===e?t.loadFile():$A.modalAlert("组件加载失败!")})))},immediate:!0}},methods:{getType:function(e){switch(e){case"word":return"docx";case"excel":return"xlsx";case"ppt":return"pptx"}return""},loadFile:function(){var e=this;if(this.fileUrl){null!==this.docEditor&&(this.docEditor.destroyEditor(),this.docEditor=null);var t="zh";switch(this.getLanguage()){case"CN":case"TC":t="zh";break;default:t="en"}var i={document:{fileType:this.fileType,key:this.fileType+"-"+this.value.id,title:this.fileName+"."+this.fileType,url:this.fileUrl},editorConfig:{mode:"edit",lang:t,user:{id:this.userInfo.userid,name:this.userInfo.nickname},customization:{uiTheme:"theme-classic-light"},callbackUrl:"http://nginx/api/file/content/office?id="+this.value.id+"&token="+this.userToken}};this.$nextTick((function(){e.docEditor=new DocsAPI.DocEditor(e.id,i)}))}}}};var a=i(93379),c=i.n(a),s=i(31185),d={insert:"head",singleton:!1};c()(s.Z,d);s.Z.locals;const f=(0,i(51900).Z)(l,(function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"component-only-office"},[i("div",{staticClass:"placeholder",attrs:{id:this.id}}),e._v(" "),e.loadIng>0?i("div",{staticClass:"office-loading"},[i("Loading")],1):e._e()])}),[],!1,null,"cd66b0a0",null).exports}}]);
|
||||
File diff suppressed because one or more lines are too long
1
public/js/build/774.js
vendored
1
public/js/build/774.js
vendored
@ -1 +0,0 @@
|
||||
"use strict";(self.webpackChunkDooTask=self.webpackChunkDooTask||[]).push([[774],{78932:(t,e,i)=>{i.d(e,{Z:()=>n});var a=i(23645),o=i.n(a)()((function(t){return t[1]}));o.push([t.id,".page-invite[data-v-10872f44]{align-items:center;display:flex;justify-content:center}.page-invite .invite-warp .invite-desc[data-v-10872f44]{max-height:300px;max-width:460px;overflow:auto}.page-invite .invite-warp .invite-footer[data-v-10872f44]{align-items:center;display:flex;justify-content:center;margin-top:24px}.page-invite .invite-warp .invite-footer>button[data-v-10872f44]{height:36px;min-width:120px}",""]);const n=o},25774:(t,e,i)=>{i.r(e),i.d(e,{default:()=>s});const a={data:function(){return{loadIng:0,joinLoad:0,already:!1,project:{}}},watch:{$route:{handler:function(t){this.code=t.query?t.query.code:"",this.getData()},immediate:!0}},methods:{getData:function(){var t=this;this.loadIng++,this.$store.dispatch("call",{url:"project/invite/info",data:{code:this.code}}).then((function(e){var i=e.data;t.loadIng--,t.already=i.already,t.project=i.project})).catch((function(){t.loadIng--,t.project={}}))},joinProject:function(){var t=this;this.joinLoad++,this.$store.dispatch("call",{url:"project/invite/join",data:{code:this.code}}).then((function(e){var i=e.data;t.joinLoad--,t.already=i.already,t.project=i.project,t.goProject()})).catch((function(e){var i=e.msg;t.joinLoad--,$A.modalError(i)}))},goProject:function(){var t=this;this.$nextTick((function(){t.goForward({path:"/manage/project/"+t.project.id})}))}}};var o=i(93379),n=i.n(o),c=i(78932),r={insert:"head",singleton:!1};n()(c.Z,r);c.Z.locals;const s=(0,i(51900).Z)(a,(function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"page-invite"},[i("PageTitle",{attrs:{title:t.$L("加入项目")}}),t._v(" "),t.loadIng>0?i("div",{staticClass:"invite-load"},[i("Loading")],1):i("div",{staticClass:"invite-warp"},[t.project.id>0?i("Card",[i("p",{attrs:{slot:"title"},slot:"title"},[t._v(t._s(t.project.name))]),t._v(" "),t.project.desc?i("div",{staticClass:"invite-desc"},[t._v(t._s(t.project.desc))]):i("div",[t._v(t._s(t.$L("暂无介绍")))]),t._v(" "),i("div",{staticClass:"invite-footer"},[t.already?i("Button",{attrs:{type:"success",icon:"ios-checkmark-circle-outline"},on:{click:t.goProject}},[t._v(t._s(t.$L("已加入")))]):i("Button",{attrs:{type:"primary",loading:t.joinLoad>0},on:{click:t.joinProject}},[t._v(t._s(t.$L("加入项目")))])],1)]):i("Card",[i("p",[t._v(t._s(t.$L("邀请地址不存在或已被删除!")))])])],1)],1)}),[],!1,null,"10872f44",null).exports}}]);
|
||||
2
public/js/build/775.js
vendored
2
public/js/build/775.js
vendored
File diff suppressed because one or more lines are too long
1
public/js/build/844.js
vendored
1
public/js/build/844.js
vendored
@ -1 +0,0 @@
|
||||
"use strict";(self.webpackChunkDooTask=self.webpackChunkDooTask||[]).push([[844],{88064:(e,t,a)=>{a.d(t,{Z:()=>i});var n=a(23645),s=a.n(n)()((function(e){return e[1]}));s.push([e.id,".page-404[data-v-1f590918]{background-color:#fff;color:#636b6f;font-weight:400;margin:0}.page-404[data-v-1f590918],.page-404 .full-height[data-v-1f590918]{height:100vh}.page-404 .flex-center[data-v-1f590918]{align-items:center;display:flex;justify-content:center}.page-404 .position-ref[data-v-1f590918]{position:relative}.page-404 .code[data-v-1f590918]{border-right:2px solid;font-size:26px;padding:0 15px;text-align:center}.page-404 .message[data-v-1f590918]{font-size:18px;padding:10px;text-align:center}",""]);const i=s},53844:(e,t,a)=>{a.r(t),a.d(t,{default:()=>o});var n=a(93379),s=a.n(n),i=a(88064),l={insert:"head",singleton:!1};s()(i.Z,l);i.Z.locals;const o=(0,a(51900).Z)({},(function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)}),[function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"page-404"},[a("div",{staticClass:"flex-center position-ref full-height"},[a("div",{staticClass:"code"},[e._v("404")]),e._v(" "),a("div",{staticClass:"message"},[e._v("Not Found")])])])}],!1,null,"1f590918",null).exports}}]);
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -173,10 +173,10 @@ export default {
|
||||
},
|
||||
|
||||
electronEvents() {
|
||||
if (!this.isElectron) {
|
||||
if (!this.$Electron) {
|
||||
return;
|
||||
}
|
||||
const {ipcRenderer} = this.$electron;
|
||||
const {ipcRenderer} = this.$Electron;
|
||||
ipcRenderer.send('inheritClose');
|
||||
ipcRenderer.on('windowClose', () => {
|
||||
if (this.$Modal.removeLast()) {
|
||||
@ -188,6 +188,13 @@ export default {
|
||||
}
|
||||
ipcRenderer.send('windowHidden');
|
||||
})
|
||||
ipcRenderer.on('dispatch', (event, args) => {
|
||||
if (!this.$store.state.method.isJson(args)) {
|
||||
return;
|
||||
}
|
||||
let {action, data} = args;
|
||||
this.$store.dispatch(action, data);
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
22
resources/assets/js/app.js
vendored
22
resources/assets/js/app.js
vendored
@ -46,12 +46,6 @@ Vue.component('EDropdown', Dropdown);
|
||||
Vue.component('EDropdownMenu', DropdownMenu);
|
||||
Vue.component('EDropdownItem', DropdownItem);
|
||||
|
||||
Vue.prototype.isElectron = false;
|
||||
if (!!__IS_ELECTRON) {
|
||||
Vue.prototype.isElectron = true;
|
||||
Vue.prototype.$electron = require('electron')
|
||||
}
|
||||
|
||||
const originalPush = VueRouter.prototype.push
|
||||
VueRouter.prototype.push = function push(location) {
|
||||
return originalPush.call(this, location).catch(err => err)
|
||||
@ -96,6 +90,10 @@ Vue.prototype.goBack = function (number) {
|
||||
};
|
||||
|
||||
Vue.prototype.$A = $A;
|
||||
Vue.prototype.$Electron = !!__IS_ELECTRON ? require('electron') : null;
|
||||
Vue.prototype.$isMainElectron = !!__IS_ELECTRON && window.navigator && window.navigator.userAgent && /\s+MainTaskWindow\//.test(window.navigator.userAgent);
|
||||
Vue.prototype.$isSubElectron = !!__IS_ELECTRON && window.navigator && window.navigator.userAgent && /\s+SubTaskWindow\//.test(window.navigator.userAgent);
|
||||
|
||||
Vue.config.productionTip = false;
|
||||
|
||||
const app = new Vue({
|
||||
@ -115,3 +113,15 @@ $A.Notice = app.$Notice;
|
||||
$A.Modal = app.$Modal;
|
||||
$A.store = app.$store;
|
||||
$A.L = app.$L;
|
||||
|
||||
$A.Electron = app.$Electron;
|
||||
$A.isMainElectron = app.$isMainElectron;
|
||||
$A.isSubElectron = app.$isSubElectron;
|
||||
$A.execMainDispatch = (action, data) => {
|
||||
if ($A.isSubElectron) {
|
||||
$A.Electron.ipcRenderer.send('sendForwardMain', {
|
||||
channel: 'dispatch',
|
||||
data: {action, data},
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div v-if="repoStatus && !$store.state.windowMax768" class="common-app-down">
|
||||
<div v-if="isElectron" class="common-app-down-link" @click="openExternal(repoData.html_url)">
|
||||
<div v-if="$Electron" class="common-app-down-link" @click="openExternal(repoData.html_url)">
|
||||
<Icon type="md-download"/> {{$L(repoTitle)}}
|
||||
</div>
|
||||
<a v-else class="common-app-down-link" :href="repoData.html_url" target="_blank">
|
||||
@ -41,7 +41,7 @@ export default {
|
||||
this.repoStatus = 0;
|
||||
return;
|
||||
}
|
||||
if (!this.isElectron) {
|
||||
if (!this.$Electron) {
|
||||
// 网页只提示有客户端下载
|
||||
this.repoStatus = 1;
|
||||
return;
|
||||
@ -183,7 +183,7 @@ export default {
|
||||
|
||||
openExternal(url) {
|
||||
try {
|
||||
this.$electron.shell.openExternal(url);
|
||||
this.$Electron.shell.openExternal(url);
|
||||
} catch (e) {
|
||||
window.location.href = url;
|
||||
}
|
||||
|
||||
@ -272,8 +272,8 @@ export default {
|
||||
bookType: bookType || "xlsx"
|
||||
}
|
||||
const filename = bookName + "." + (bookType == 'xlml' ? 'xls' : bookType);
|
||||
if (this.isElectron) {
|
||||
this.$electron.ipcRenderer.send('saveSheet', data, filename, opts);
|
||||
if (this.$Electron) {
|
||||
this.$Electron.ipcRenderer.send('saveSheet', data, filename, opts);
|
||||
} else {
|
||||
XLSX.writeFile(data, filename, opts);
|
||||
}
|
||||
|
||||
@ -178,14 +178,12 @@ export default {
|
||||
mounted() {
|
||||
this.getDemoAccount();
|
||||
//
|
||||
console.log(this.$route);
|
||||
if (!this.isElectron && this.cacheServerUrl) {
|
||||
this.onServerUrlClear();
|
||||
}
|
||||
this.$route.query.type == "reg"
|
||||
? (this.loginType = "reg")
|
||||
: (this.loginType = "login");
|
||||
console.log(this.$route);
|
||||
},
|
||||
deactivated() {
|
||||
this.loginJump = false;
|
||||
|
||||
@ -145,7 +145,9 @@
|
||||
}"
|
||||
@on-visible-change="taskVisibleChange"
|
||||
footer-hide>
|
||||
<TaskDetail :open-task="taskData"/>
|
||||
<div class="page-manage-task-modal" :style="taskStyle">
|
||||
<TaskDetail :task-id="taskId" :open-task="taskData"/>
|
||||
</div>
|
||||
</Modal>
|
||||
|
||||
<!--查看所有团队-->
|
||||
@ -225,6 +227,7 @@ export default {
|
||||
openMenu: {},
|
||||
visibleMenu: false,
|
||||
show768Menu: false,
|
||||
innerHeight: window.innerHeight,
|
||||
|
||||
allUserShow: false,
|
||||
allProjectShow: false,
|
||||
@ -258,9 +261,10 @@ export default {
|
||||
});
|
||||
//
|
||||
document.addEventListener('keydown', this.shortcutEvent);
|
||||
window.addEventListener('resize', this.innerHeightListener);
|
||||
//
|
||||
if (this.isElectron) {
|
||||
this.$electron.ipcRenderer.send('setDockBadge', 0);
|
||||
if (this.$Electron) {
|
||||
this.$Electron.ipcRenderer.send('setDockBadge', 0);
|
||||
}
|
||||
},
|
||||
|
||||
@ -271,6 +275,7 @@ export default {
|
||||
}
|
||||
//
|
||||
document.removeEventListener('keydown', this.shortcutEvent);
|
||||
window.removeEventListener('resize', this.innerHeightListener);
|
||||
},
|
||||
|
||||
deactivated() {
|
||||
@ -341,6 +346,13 @@ export default {
|
||||
return data.filter(({name}) => name.toLowerCase().indexOf(projectKeyValue.toLowerCase()) > -1);
|
||||
}
|
||||
return data;
|
||||
},
|
||||
|
||||
taskStyle() {
|
||||
const {innerHeight} = this;
|
||||
return {
|
||||
maxHeight: (innerHeight - (innerHeight > 900 ? 200 : 70) - 20) + 'px'
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -361,14 +373,14 @@ export default {
|
||||
},
|
||||
|
||||
msgAllUnread() {
|
||||
if (this.isElectron) {
|
||||
this.$electron.ipcRenderer.send('setDockBadge', this.msgAllUnread + this.dashboardTotal);
|
||||
if (this.$Electron) {
|
||||
this.$Electron.ipcRenderer.send('setDockBadge', this.msgAllUnread + this.dashboardTotal);
|
||||
}
|
||||
},
|
||||
|
||||
dashboardTotal() {
|
||||
if (this.isElectron) {
|
||||
this.$electron.ipcRenderer.send('setDockBadge', this.msgAllUnread + this.dashboardTotal);
|
||||
if (this.$Electron) {
|
||||
this.$Electron.ipcRenderer.send('setDockBadge', this.msgAllUnread + this.dashboardTotal);
|
||||
}
|
||||
},
|
||||
|
||||
@ -450,6 +462,10 @@ export default {
|
||||
};
|
||||
},
|
||||
|
||||
innerHeightListener() {
|
||||
this.innerHeight = window.innerHeight;
|
||||
},
|
||||
|
||||
chackPass() {
|
||||
if (this.userInfo.changepass === 1) {
|
||||
this.goForward({path: '/manage/setting/password'});
|
||||
|
||||
@ -24,7 +24,7 @@
|
||||
<ScrollerY
|
||||
ref="scroller"
|
||||
class="dialog-scroller overlay-y"
|
||||
:auto-bottom="autoBottom && !inputFocus"
|
||||
:auto-bottom="autoBottom"
|
||||
@on-scroll="chatScroll"
|
||||
static>
|
||||
<div ref="manageList" class="dialog-list">
|
||||
@ -347,12 +347,10 @@ export default {
|
||||
},
|
||||
|
||||
onEventFocus(e) {
|
||||
this.inputFocus = true;
|
||||
this.$emit("on-focus", e)
|
||||
},
|
||||
|
||||
onEventblur(e) {
|
||||
this.inputFocus = false;
|
||||
this.$emit("on-blur", e)
|
||||
},
|
||||
|
||||
|
||||
@ -867,16 +867,10 @@ export default {
|
||||
}
|
||||
this.$set(this.columnLoad, column.id, true);
|
||||
//
|
||||
this.$store.dispatch("call", {
|
||||
url: 'project/column/remove',
|
||||
data: {
|
||||
column_id: column.id,
|
||||
},
|
||||
}).then(({data, msg}) => {
|
||||
this.$store.dispatch("removeColumn", column.id).then(({data, msg}) => {
|
||||
$A.messageSuccess(msg);
|
||||
this.$set(this.columnLoad, column.id, false);
|
||||
this.$Modal.remove();
|
||||
this.$store.dispatch("forgetColumn", data.id);
|
||||
}).catch(({msg}) => {
|
||||
$A.modalError(msg, 301);
|
||||
this.$set(this.columnLoad, column.id, false);
|
||||
|
||||
@ -37,7 +37,7 @@
|
||||
<Button :class="{advanced: advanced}" @click="advanced=!advanced">{{$L('高级选项')}}</Button>
|
||||
<ul class="advanced-priority">
|
||||
<li v-for="(item, key) in taskPriority" :key="key">
|
||||
<ETooltip :content="item.name + ' (' + item.days + $L('天') + ')'">
|
||||
<ETooltip :content="taskPriorityContent(item)">
|
||||
<i
|
||||
class="taskfont"
|
||||
:style="{color:item.color}"
|
||||
@ -369,10 +369,23 @@ export default {
|
||||
}
|
||||
},
|
||||
|
||||
taskPriorityContent(item) {
|
||||
let days = $A.runNum(item.days);
|
||||
if (days <= 0) {
|
||||
return item.name + ' (' + this.$L('无时间限制') + ')';
|
||||
}
|
||||
return item.name + ' (' + days + this.$L('天') + ')';
|
||||
},
|
||||
|
||||
choosePriority(item) {
|
||||
let start = new Date();
|
||||
let end = new Date(new Date().setDate(start.getDate() + $A.runNum(item.days)));
|
||||
this.$set(this.addData, 'times', $A.date2string([start, end]))
|
||||
let days = $A.runNum(item.days);
|
||||
if (days > 0) {
|
||||
let end = new Date(new Date().setDate(start.getDate() + days));
|
||||
this.$set(this.addData, 'times', $A.date2string([start, end]))
|
||||
} else {
|
||||
this.$set(this.addData, 'times', [])
|
||||
}
|
||||
this.$set(this.addData, 'p_level', item.priority)
|
||||
this.$set(this.addData, 'p_name', item.name)
|
||||
this.$set(this.addData, 'p_color', item.color)
|
||||
|
||||
@ -100,47 +100,52 @@
|
||||
<p v-if="columnName"><span>{{columnName}}</span></p>
|
||||
<p v-if="taskDetail.id"><span>{{taskDetail.id}}</span></p>
|
||||
</div>
|
||||
<Poptip
|
||||
v-if="getOwner.length === 0"
|
||||
confirm
|
||||
ref="receive"
|
||||
class="pick"
|
||||
:title="$L('你确认领取任务吗?')"
|
||||
placement="bottom"
|
||||
@on-ok="onOwner(true)"
|
||||
transfer>
|
||||
<Button type="primary">{{$L('我要领取任务')}}</Button>
|
||||
</Poptip>
|
||||
<EDropdown
|
||||
trigger="click"
|
||||
placement="bottom"
|
||||
@command="dropTask">
|
||||
<Icon class="menu" type="ios-more"/>
|
||||
<EDropdownMenu slot="dropdown">
|
||||
<EDropdownItem v-if="taskDetail.complete_at" command="uncomplete">
|
||||
<div class="item red">
|
||||
<Icon type="md-checkmark-circle-outline" />{{$L('标记未完成')}}
|
||||
</div>
|
||||
</EDropdownItem>
|
||||
<EDropdownItem v-else command="complete">
|
||||
<div class="item">
|
||||
<Icon type="md-radio-button-off" />{{$L('完成')}}
|
||||
</div>
|
||||
</EDropdownItem>
|
||||
<EDropdownItem command="archived">
|
||||
<div class="item">
|
||||
<Icon type="ios-filing" />{{$L('归档')}}
|
||||
</div>
|
||||
</EDropdownItem>
|
||||
<EDropdownItem command="remove">
|
||||
<div class="item">
|
||||
<Icon type="md-trash" />{{$L('删除')}}
|
||||
</div>
|
||||
</EDropdownItem>
|
||||
</EDropdownMenu>
|
||||
</EDropdown>
|
||||
<div class="function">
|
||||
<Poptip
|
||||
v-if="getOwner.length === 0"
|
||||
confirm
|
||||
ref="receive"
|
||||
class="pick"
|
||||
:title="$L('你确认领取任务吗?')"
|
||||
placement="bottom"
|
||||
@on-ok="onOwner(true)"
|
||||
transfer>
|
||||
<Button type="primary">{{$L('我要领取任务')}}</Button>
|
||||
</Poptip>
|
||||
<ETooltip v-if="$Electron" :content="$L('新窗口打开')">
|
||||
<i class="taskfont open" @click="openNewWin"></i>
|
||||
</ETooltip>
|
||||
<EDropdown
|
||||
trigger="click"
|
||||
placement="bottom"
|
||||
@command="dropTask">
|
||||
<Icon class="menu" type="ios-more"/>
|
||||
<EDropdownMenu slot="dropdown">
|
||||
<EDropdownItem v-if="taskDetail.complete_at" command="uncomplete">
|
||||
<div class="item red">
|
||||
<Icon type="md-checkmark-circle-outline" />{{$L('标记未完成')}}
|
||||
</div>
|
||||
</EDropdownItem>
|
||||
<EDropdownItem v-else command="complete">
|
||||
<div class="item">
|
||||
<Icon type="md-radio-button-off" />{{$L('完成')}}
|
||||
</div>
|
||||
</EDropdownItem>
|
||||
<EDropdownItem command="archived">
|
||||
<div class="item">
|
||||
<Icon type="ios-filing" />{{$L('归档')}}
|
||||
</div>
|
||||
</EDropdownItem>
|
||||
<EDropdownItem command="remove">
|
||||
<div class="item">
|
||||
<Icon type="md-trash" />{{$L('删除')}}
|
||||
</div>
|
||||
</EDropdownItem>
|
||||
</EDropdownMenu>
|
||||
</EDropdown>
|
||||
</div>
|
||||
</div>
|
||||
<div class="scroller overlay-y" :style="scrollerStyle">
|
||||
<div class="scroller overlay-y">
|
||||
<div class="title">
|
||||
<Input
|
||||
v-model="taskDetail.name"
|
||||
@ -310,7 +315,7 @@
|
||||
<i class="taskfont"></i>{{$L('子任务')}}
|
||||
</div>
|
||||
<ul class="item-content subtask">
|
||||
<TaskDetail v-for="(task, key) in subList" :key="key" :open-task="task"/>
|
||||
<TaskDetail v-for="(task, key) in subList" :key="key" :task-id="task.id" :open-task="task"/>
|
||||
</ul>
|
||||
<ul :class="['item-content', subList.length === 0 ? 'nosub' : '']">
|
||||
<li>
|
||||
@ -412,6 +417,10 @@ export default {
|
||||
name: "TaskDetail",
|
||||
components: {ProjectLog, DialogWrapper, TaskUpload, UserInput, TaskPriority, TEditor},
|
||||
props: {
|
||||
taskId: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
openTask: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
@ -509,7 +518,6 @@ export default {
|
||||
'userId',
|
||||
'projects',
|
||||
'columns',
|
||||
'taskId',
|
||||
'taskSubs',
|
||||
'taskContents',
|
||||
'taskFiles',
|
||||
@ -572,19 +580,6 @@ export default {
|
||||
return this.taskDetail.dialog_id > 0 && !this.$store.state.windowMax768;
|
||||
},
|
||||
|
||||
scrollerStyle() {
|
||||
const {innerHeight, hasOpenDialog} = this;
|
||||
if (!innerHeight) {
|
||||
return {};
|
||||
}
|
||||
if (!hasOpenDialog) {
|
||||
return {};
|
||||
}
|
||||
return {
|
||||
maxHeight: (innerHeight - (innerHeight > 900 ? 200 : 70) - 66 - 30) + 'px'
|
||||
}
|
||||
},
|
||||
|
||||
dialogStyle() {
|
||||
const {innerHeight, hasOpenDialog} = this;
|
||||
if (!innerHeight) {
|
||||
@ -1114,6 +1109,10 @@ export default {
|
||||
}).then(({data}) => {
|
||||
this.$store.dispatch("saveTask", data);
|
||||
this.$store.dispatch("getDialogOne", data.dialog_id);
|
||||
if ($A.isSubElectron) {
|
||||
this.resizeDialog();
|
||||
return;
|
||||
}
|
||||
this.$nextTick(() => {
|
||||
if (this.$store.state.windowMax768) {
|
||||
this.goForward({path: '/manage/messenger', query: {sendmsg: this.msgText}});
|
||||
@ -1144,6 +1143,10 @@ export default {
|
||||
this.sendLoad = false;
|
||||
this.$store.dispatch("saveTask", data);
|
||||
this.$store.dispatch("getDialogOne", data.dialog_id);
|
||||
if ($A.isSubElectron) {
|
||||
this.resizeDialog();
|
||||
return;
|
||||
}
|
||||
this.$nextTick(() => {
|
||||
this.goForward({path: '/manage/messenger', query: {sendmsg: this.msgText}});
|
||||
this.$store.state.method.setStorage("messenger::dialogId", data.dialog_id)
|
||||
@ -1169,6 +1172,50 @@ export default {
|
||||
$A.modalError(msg);
|
||||
this.$store.dispatch("getTaskFiles", this.taskDetail.id)
|
||||
});
|
||||
},
|
||||
|
||||
openNewWin() {
|
||||
let config = {
|
||||
parent: null,
|
||||
width: Math.min(window.screen.availWidth, this.$el.clientWidth + 72),
|
||||
height: Math.min(window.screen.availHeight, this.$el.clientHeight + 72),
|
||||
minWidth: 600,
|
||||
minHeight: 450,
|
||||
};
|
||||
if (this.hasOpenDialog) {
|
||||
config.minWidth = 800;
|
||||
config.minHeight = 600;
|
||||
}
|
||||
this.$Electron.ipcRenderer.send('windowRouter', {
|
||||
name: 'task-' + this.taskDetail.id,
|
||||
path: "/single/task/" + this.taskDetail.id,
|
||||
force: false,
|
||||
config
|
||||
});
|
||||
this.$store.dispatch('openTask', 0);
|
||||
},
|
||||
|
||||
resizeDialog() {
|
||||
this.$Electron.ipcRenderer.sendSync('windowSize', {
|
||||
width: Math.max(1100, window.innerWidth),
|
||||
height: Math.max(720, window.innerHeight),
|
||||
minWidth: 800,
|
||||
minHeight: 600,
|
||||
autoZoom: true,
|
||||
});
|
||||
if (this.msgText) {
|
||||
let num = 0;
|
||||
let interval = setInterval(() => {
|
||||
num++;
|
||||
if (this.$refs.dialog || num > 20) {
|
||||
clearInterval(interval);
|
||||
if (this.$refs.dialog) {
|
||||
this.$refs.dialog.sendMsg(this.msgText);
|
||||
this.msgText = "";
|
||||
}
|
||||
}
|
||||
}, 100);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -666,7 +666,7 @@ export default {
|
||||
this.searchKey = '';
|
||||
this.pid = item.id;
|
||||
} else {
|
||||
if (this.isElectron) {
|
||||
if (this.$Electron) {
|
||||
this.openSingle(item);
|
||||
} else {
|
||||
this.editInfo = item;
|
||||
@ -676,7 +676,7 @@ export default {
|
||||
},
|
||||
|
||||
openSingle(item) {
|
||||
this.$electron.ipcRenderer.send('windowRouter', {
|
||||
this.$Electron.ipcRenderer.send('windowRouter', {
|
||||
name: 'file-' + item.id,
|
||||
path: "/single/file/" + item.id,
|
||||
force: false, // 如果窗口已存在不重新加载
|
||||
|
||||
@ -59,7 +59,7 @@ export default {
|
||||
$A.modalError({
|
||||
content: msg,
|
||||
onOk: () => {
|
||||
if (this.isElectron) {
|
||||
if (this.$Electron) {
|
||||
window.close();
|
||||
}
|
||||
}
|
||||
|
||||
88
resources/assets/js/pages/single/task.vue
Normal file
88
resources/assets/js/pages/single/task.vue
Normal file
@ -0,0 +1,88 @@
|
||||
<template>
|
||||
<div class="electron-task">
|
||||
<PageTitle :title="taskInfo.name"/>
|
||||
<Loading v-if="loadIng > 0"/>
|
||||
<TaskDetail v-else :task-id="taskInfo.id" :open-task="taskInfo"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.electron-task {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow: auto;
|
||||
.task-detail {
|
||||
flex: 1;
|
||||
margin: 0;
|
||||
padding: 18px 22px;
|
||||
border-radius: 0;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<style lang="scss">
|
||||
.electron-task {
|
||||
.task-detail {
|
||||
.task-info {
|
||||
.head {
|
||||
.function {
|
||||
margin-right: 0;
|
||||
.open {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
import TaskDetail from "../manage/components/TaskDetail";
|
||||
export default {
|
||||
components: {TaskDetail},
|
||||
data() {
|
||||
return {
|
||||
loadIng: 0,
|
||||
|
||||
taskInfo: {},
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
//
|
||||
},
|
||||
watch: {
|
||||
'$route': {
|
||||
handler() {
|
||||
this.getInfo();
|
||||
},
|
||||
immediate: true
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
getInfo() {
|
||||
let task_id = $A.runNum(this.$route.params.id);
|
||||
if (task_id <= 0) {
|
||||
return;
|
||||
}
|
||||
this.loadIng++;
|
||||
this.$store.dispatch("getTaskOne", task_id).then(({data}) => {
|
||||
this.loadIng--;
|
||||
this.taskInfo = data;
|
||||
this.$store.dispatch("getTaskContent", task_id);
|
||||
this.$store.dispatch("getTaskFiles", task_id);
|
||||
this.$store.dispatch("getTasks", {parent_id: task_id});
|
||||
}).catch(({msg}) => {
|
||||
this.loadIng--;
|
||||
$A.modalError({
|
||||
content: msg,
|
||||
onOk: () => {
|
||||
if (this.$Electron) {
|
||||
window.close();
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
5
resources/assets/js/routes.js
vendored
5
resources/assets/js/routes.js
vendored
@ -80,6 +80,11 @@ export default [
|
||||
path: '/single/file/:id',
|
||||
component: () => import('./pages/single/file.vue'),
|
||||
},
|
||||
{
|
||||
name: 'single-task',
|
||||
path: '/single/task/:id',
|
||||
component: () => import('./pages/single/task.vue'),
|
||||
},
|
||||
{
|
||||
name: 'login',
|
||||
path: '/login',
|
||||
|
||||
38
resources/assets/js/store/actions.js
vendored
38
resources/assets/js/store/actions.js
vendored
@ -139,6 +139,8 @@ export default {
|
||||
* @param data|{key, project_id}
|
||||
*/
|
||||
toggleTablePanel({state}, data) {
|
||||
$A.execMainDispatch("toggleTablePanel", data)
|
||||
//
|
||||
let key = data;
|
||||
let project_id = state.projectId;
|
||||
if (state.method.isJson(data)) {
|
||||
@ -295,6 +297,8 @@ export default {
|
||||
* @param data
|
||||
*/
|
||||
saveUserBasic({state}, data) {
|
||||
$A.execMainDispatch("saveUserBasic", data)
|
||||
//
|
||||
let index = state.cacheUserBasic.findIndex(({userid}) => userid == data.userid);
|
||||
if (index > -1) {
|
||||
data = Object.assign(state.cacheUserBasic[index], data)
|
||||
@ -414,6 +418,8 @@ export default {
|
||||
* @param data
|
||||
*/
|
||||
saveFile({state, dispatch}, data) {
|
||||
$A.execMainDispatch("saveFile", data)
|
||||
//
|
||||
if (state.method.isArray(data)) {
|
||||
data.forEach((file) => {
|
||||
dispatch("saveFile", file);
|
||||
@ -435,6 +441,8 @@ export default {
|
||||
* @param file_id
|
||||
*/
|
||||
forgetFile({state, dispatch}, file_id) {
|
||||
$A.execMainDispatch("forgetFile", file_id)
|
||||
//
|
||||
state.files = state.files.filter((file) => file.id != file_id);
|
||||
state.files.forEach((file) => {
|
||||
if (file.pid == file_id) {
|
||||
@ -504,6 +512,8 @@ export default {
|
||||
* @param data
|
||||
*/
|
||||
saveProject({state, dispatch}, data) {
|
||||
$A.execMainDispatch("saveProject", data)
|
||||
//
|
||||
if (state.method.isArray(data)) {
|
||||
data.forEach((project) => {
|
||||
dispatch("saveProject", project)
|
||||
@ -531,6 +541,8 @@ export default {
|
||||
* @param project_id
|
||||
*/
|
||||
forgetProject({state}, project_id) {
|
||||
$A.execMainDispatch("forgetProject", project_id)
|
||||
//
|
||||
let index = state.projects.findIndex(({id}) => id == project_id);
|
||||
if (index > -1) {
|
||||
state.projects.splice(index, 1);
|
||||
@ -562,7 +574,7 @@ export default {
|
||||
reject({msg: 'Parameter error'});
|
||||
return;
|
||||
}
|
||||
if (state.cacheProjects.length > 0) {
|
||||
if (state.projects.length === 0 && state.cacheProjects.length > 0) {
|
||||
state.projects = state.cacheProjects;
|
||||
}
|
||||
dispatch("call", {
|
||||
@ -705,6 +717,8 @@ export default {
|
||||
* @param data
|
||||
*/
|
||||
saveColumn({state, dispatch}, data) {
|
||||
$A.execMainDispatch("saveColumn", data)
|
||||
//
|
||||
if (state.method.isArray(data)) {
|
||||
data.forEach((column) => {
|
||||
dispatch("saveColumn", column)
|
||||
@ -729,6 +743,8 @@ export default {
|
||||
* @param column_id
|
||||
*/
|
||||
forgetColumn({state, dispatch}, column_id) {
|
||||
$A.execMainDispatch("forgetColumn", column_id)
|
||||
//
|
||||
let index = state.columns.findIndex(({id}) => id == column_id);
|
||||
if (index > -1) {
|
||||
dispatch('getProjectOne', state.columns[index].project_id)
|
||||
@ -753,7 +769,7 @@ export default {
|
||||
reject({msg: 'Parameter error'})
|
||||
return;
|
||||
}
|
||||
if (state.cacheColumns.length > 0) {
|
||||
if (state.columns.length === 0 && state.cacheColumns.length > 0) {
|
||||
state.columns = state.cacheColumns;
|
||||
}
|
||||
state.projectLoad++;
|
||||
@ -829,6 +845,8 @@ export default {
|
||||
* @param data
|
||||
*/
|
||||
saveTask({state, dispatch}, data) {
|
||||
$A.execMainDispatch("saveTask", data)
|
||||
//
|
||||
if (state.method.isArray(data)) {
|
||||
data.forEach((task) => {
|
||||
dispatch("saveTask", task)
|
||||
@ -867,6 +885,8 @@ export default {
|
||||
* @param task_id
|
||||
*/
|
||||
forgetTask({state, dispatch}, task_id) {
|
||||
$A.execMainDispatch("forgetTask", task_id)
|
||||
//
|
||||
let index = state.tasks.findIndex(({id}) => id == task_id);
|
||||
let key = 'tasks';
|
||||
if (index === -1) {
|
||||
@ -898,6 +918,8 @@ export default {
|
||||
* @param dialog_id
|
||||
*/
|
||||
increaseTaskMsgNum({state}, dialog_id) {
|
||||
$A.execMainDispatch("increaseTaskMsgNum", dialog_id)
|
||||
//
|
||||
const task = state.tasks.find((task) => task.dialog_id === dialog_id);
|
||||
if (task) task.msg_num++;
|
||||
},
|
||||
@ -913,7 +935,7 @@ export default {
|
||||
state.tasks = [];
|
||||
return;
|
||||
}
|
||||
if (state.cacheTasks.length > 0) {
|
||||
if (state.tasks.length == 0 && state.cacheTasks.length > 0) {
|
||||
state.tasks = state.cacheTasks;
|
||||
}
|
||||
if (data.project_id) {
|
||||
@ -1324,6 +1346,8 @@ export default {
|
||||
* @param data
|
||||
*/
|
||||
saveDialog({state, dispatch}, data) {
|
||||
$A.execMainDispatch("saveDialog", data)
|
||||
//
|
||||
if (state.method.isArray(data)) {
|
||||
data.forEach((dialog) => {
|
||||
dispatch("saveDialog", dialog)
|
||||
@ -1348,6 +1372,8 @@ export default {
|
||||
* @param data
|
||||
*/
|
||||
updateDialogLastMsg({state, dispatch}, data) {
|
||||
$A.execMainDispatch("updateDialogLastMsg", data)
|
||||
//
|
||||
let dialog = state.dialogs.find(({id}) => id == data.dialog_id);
|
||||
if (dialog) {
|
||||
dispatch("saveDialog", {
|
||||
@ -1442,6 +1468,8 @@ export default {
|
||||
* @param dialog_id
|
||||
*/
|
||||
moveDialogTop({state}, dialog_id) {
|
||||
$A.execMainDispatch("moveDialogTop", dialog_id)
|
||||
//
|
||||
const index = state.dialogs.findIndex(({id}) => id == dialog_id);
|
||||
if (index > -1) {
|
||||
const tmp = state.method.cloneJSON(state.dialogs[index]);
|
||||
@ -1456,6 +1484,8 @@ export default {
|
||||
* @param dialog_id
|
||||
*/
|
||||
forgetDialog({state}, dialog_id) {
|
||||
$A.execMainDispatch("forgetDialog", dialog_id)
|
||||
//
|
||||
let index = state.dialogs.findIndex(({id}) => id == dialog_id);
|
||||
if (index > -1) {
|
||||
state.dialogs.splice(index, 1);
|
||||
@ -1479,6 +1509,8 @@ export default {
|
||||
* @param data
|
||||
*/
|
||||
saveDialogMsg({state, dispatch}, data) {
|
||||
$A.execMainDispatch("saveDialogMsg", data)
|
||||
//
|
||||
if (state.method.isArray(data)) {
|
||||
data.forEach((msg) => {
|
||||
dispatch("saveDialogMsg", msg)
|
||||
|
||||
@ -1,7 +1,9 @@
|
||||
.task-detail {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin: 0 -10px 30px;
|
||||
margin: 0 -32px 12px -10px;
|
||||
padding: 0 22px 12px 0;
|
||||
overflow: auto;
|
||||
.task-info {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
@ -10,7 +12,7 @@
|
||||
.head {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 40px;
|
||||
height: 42px;
|
||||
padding-bottom: 10px;
|
||||
color: #888888;
|
||||
position: relative;
|
||||
@ -60,14 +62,25 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
.pick {
|
||||
margin-left: 16px;
|
||||
margin-right: -16px;
|
||||
}
|
||||
.menu {
|
||||
font-size: 22px;
|
||||
.function {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin: 0 32px;
|
||||
cursor: pointer;
|
||||
.pick {
|
||||
margin-left: 12px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
.open {
|
||||
margin-top: -2px;
|
||||
margin-left: 12px;
|
||||
font-size: 22px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.menu {
|
||||
margin-left: 12px;
|
||||
font-size: 22px;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
.scroller {
|
||||
@ -365,7 +378,7 @@
|
||||
}
|
||||
}
|
||||
.task-dialog {
|
||||
flex: 1;
|
||||
flex-shrink: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin-top: 22px;
|
||||
@ -424,7 +437,7 @@
|
||||
.no-input {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin: 32px 0 0 36px;
|
||||
margin: 22px 0 0 36px;
|
||||
background-color: #F4F5F7;
|
||||
padding: 10px 12px;
|
||||
border-radius: 10px;
|
||||
@ -481,11 +494,8 @@
|
||||
.task-info {
|
||||
overflow: auto;
|
||||
.head {
|
||||
.menu {
|
||||
margin: 0 2px;
|
||||
}
|
||||
.pick {
|
||||
margin-right: 12px;
|
||||
.function {
|
||||
margin-right: 2px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
5
resources/assets/sass/pages/page-manage.scss
vendored
5
resources/assets/sass/pages/page-manage.scss
vendored
@ -271,6 +271,11 @@
|
||||
}
|
||||
}
|
||||
|
||||
.page-manage-task-modal {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.page-manage-add-task-button-group {
|
||||
margin-left: 8px !important;
|
||||
.ivu-dropdown {
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user