Compare commits

..

5 Commits

Author SHA1 Message Date
kuaifan
1a65c4a579 修复客户端 2022-01-16 01:11:19 +08:00
kuaifan
7a28a8950c 修复前端编译 2022-01-16 00:43:05 +08:00
kuaifan
89e8b0d8b9 perf: 新增工作流初始化数据 2022-01-16 00:05:49 +08:00
kuaifan
74803df5bd no message 2022-01-15 23:37:29 +08:00
kuaifan
2a8e030fb4 perf: 优化客户端自动更新 2022-01-15 23:36:21 +08:00
17 changed files with 784 additions and 95 deletions

View File

@@ -18,6 +18,8 @@ class DatabaseSeeder extends Seeder
$this->call(FilesTableSeeder::class);
$this->call(FileUsersTableSeeder::class);
$this->call(ProjectColumnsTableSeeder::class);
$this->call(ProjectFlowItemsTableSeeder::class);
$this->call(ProjectFlowsTableSeeder::class);
$this->call(ProjectLogsTableSeeder::class);
$this->call(ProjectTaskContentsTableSeeder::class);
$this->call(ProjectTaskUsersTableSeeder::class);

View File

@@ -0,0 +1,388 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
class ProjectFlowItemsTableSeeder extends Seeder
{
/**
* Auto generated seed file
*
* @return void
*/
public function run()
{
if (\DB::table('project_flow_items')->count() > 0) {
return;
}
\DB::table('project_flow_items')->insert(array (
0 =>
array (
'id' => 1,
'project_id' => 2,
'flow_id' => 1,
'name' => '待处理',
'status' => 'start',
'turns' => '[1,2,3,4]',
'userids' => '[]',
'usertype' => 'add',
'userlimit' => 0,
'sort' => 0,
'created_at' => '2022-01-15 23:43:15',
'updated_at' => '2022-01-15 23:43:15',
),
1 =>
array (
'id' => 2,
'project_id' => 2,
'flow_id' => 1,
'name' => '进行中',
'status' => 'progress',
'turns' => '[1,2,3,4]',
'userids' => '[]',
'usertype' => 'add',
'userlimit' => 0,
'sort' => 1,
'created_at' => '2022-01-15 23:43:15',
'updated_at' => '2022-01-15 23:43:15',
),
2 =>
array (
'id' => 3,
'project_id' => 2,
'flow_id' => 1,
'name' => '已完成',
'status' => 'end',
'turns' => '[1,2,3,4]',
'userids' => '[]',
'usertype' => 'add',
'userlimit' => 0,
'sort' => 2,
'created_at' => '2022-01-15 23:43:15',
'updated_at' => '2022-01-15 23:43:15',
),
3 =>
array (
'id' => 4,
'project_id' => 2,
'flow_id' => 1,
'name' => '已取消',
'status' => 'end',
'turns' => '[1,2,3,4]',
'userids' => '[]',
'usertype' => 'add',
'userlimit' => 0,
'sort' => 3,
'created_at' => '2022-01-15 23:43:15',
'updated_at' => '2022-01-15 23:43:15',
),
4 =>
array (
'id' => 5,
'project_id' => 3,
'flow_id' => 2,
'name' => '待处理',
'status' => 'start',
'turns' => '[5,6,7,8]',
'userids' => '[]',
'usertype' => 'add',
'userlimit' => 0,
'sort' => 0,
'created_at' => '2022-01-15 23:43:23',
'updated_at' => '2022-01-15 23:43:23',
),
5 =>
array (
'id' => 6,
'project_id' => 3,
'flow_id' => 2,
'name' => '进行中',
'status' => 'progress',
'turns' => '[5,6,7,8]',
'userids' => '[]',
'usertype' => 'add',
'userlimit' => 0,
'sort' => 1,
'created_at' => '2022-01-15 23:43:23',
'updated_at' => '2022-01-15 23:43:23',
),
6 =>
array (
'id' => 7,
'project_id' => 3,
'flow_id' => 2,
'name' => '已完成',
'status' => 'end',
'turns' => '[5,6,7,8]',
'userids' => '[]',
'usertype' => 'add',
'userlimit' => 0,
'sort' => 2,
'created_at' => '2022-01-15 23:43:23',
'updated_at' => '2022-01-15 23:43:23',
),
7 =>
array (
'id' => 8,
'project_id' => 3,
'flow_id' => 2,
'name' => '已取消',
'status' => 'end',
'turns' => '[5,6,7,8]',
'userids' => '[]',
'usertype' => 'add',
'userlimit' => 0,
'sort' => 3,
'created_at' => '2022-01-15 23:43:23',
'updated_at' => '2022-01-15 23:43:23',
),
8 =>
array (
'id' => 9,
'project_id' => 4,
'flow_id' => 3,
'name' => '待处理',
'status' => 'start',
'turns' => '[9,10,11,12]',
'userids' => '[]',
'usertype' => 'add',
'userlimit' => 0,
'sort' => 0,
'created_at' => '2022-01-15 23:43:28',
'updated_at' => '2022-01-15 23:43:28',
),
9 =>
array (
'id' => 10,
'project_id' => 4,
'flow_id' => 3,
'name' => '进行中',
'status' => 'progress',
'turns' => '[9,10,11,12]',
'userids' => '[]',
'usertype' => 'add',
'userlimit' => 0,
'sort' => 1,
'created_at' => '2022-01-15 23:43:28',
'updated_at' => '2022-01-15 23:43:28',
),
10 =>
array (
'id' => 11,
'project_id' => 4,
'flow_id' => 3,
'name' => '已完成',
'status' => 'end',
'turns' => '[9,10,11,12]',
'userids' => '[]',
'usertype' => 'add',
'userlimit' => 0,
'sort' => 2,
'created_at' => '2022-01-15 23:43:28',
'updated_at' => '2022-01-15 23:43:28',
),
11 =>
array (
'id' => 12,
'project_id' => 4,
'flow_id' => 3,
'name' => '已取消',
'status' => 'end',
'turns' => '[9,10,11,12]',
'userids' => '[]',
'usertype' => 'add',
'userlimit' => 0,
'sort' => 3,
'created_at' => '2022-01-15 23:43:28',
'updated_at' => '2022-01-15 23:43:28',
),
12 =>
array (
'id' => 13,
'project_id' => 5,
'flow_id' => 4,
'name' => '待处理',
'status' => 'start',
'turns' => '[13,14,15,16]',
'userids' => '[]',
'usertype' => 'add',
'userlimit' => 0,
'sort' => 0,
'created_at' => '2022-01-15 23:43:34',
'updated_at' => '2022-01-15 23:43:34',
),
13 =>
array (
'id' => 14,
'project_id' => 5,
'flow_id' => 4,
'name' => '进行中',
'status' => 'progress',
'turns' => '[13,14,15,16]',
'userids' => '[]',
'usertype' => 'add',
'userlimit' => 0,
'sort' => 1,
'created_at' => '2022-01-15 23:43:34',
'updated_at' => '2022-01-15 23:43:34',
),
14 =>
array (
'id' => 15,
'project_id' => 5,
'flow_id' => 4,
'name' => '已完成',
'status' => 'end',
'turns' => '[13,14,15,16]',
'userids' => '[]',
'usertype' => 'add',
'userlimit' => 0,
'sort' => 2,
'created_at' => '2022-01-15 23:43:34',
'updated_at' => '2022-01-15 23:43:34',
),
15 =>
array (
'id' => 16,
'project_id' => 5,
'flow_id' => 4,
'name' => '已取消',
'status' => 'end',
'turns' => '[13,14,15,16]',
'userids' => '[]',
'usertype' => 'add',
'userlimit' => 0,
'sort' => 3,
'created_at' => '2022-01-15 23:43:34',
'updated_at' => '2022-01-15 23:43:34',
),
16 =>
array (
'id' => 17,
'project_id' => 6,
'flow_id' => 5,
'name' => '待处理',
'status' => 'start',
'turns' => '[17,18,19,20]',
'userids' => '[]',
'usertype' => 'add',
'userlimit' => 0,
'sort' => 0,
'created_at' => '2022-01-15 23:43:40',
'updated_at' => '2022-01-15 23:43:40',
),
17 =>
array (
'id' => 18,
'project_id' => 6,
'flow_id' => 5,
'name' => '进行中',
'status' => 'progress',
'turns' => '[17,18,19,20]',
'userids' => '[]',
'usertype' => 'add',
'userlimit' => 0,
'sort' => 1,
'created_at' => '2022-01-15 23:43:40',
'updated_at' => '2022-01-15 23:43:40',
),
18 =>
array (
'id' => 19,
'project_id' => 6,
'flow_id' => 5,
'name' => '已完成',
'status' => 'end',
'turns' => '[17,18,19,20]',
'userids' => '[]',
'usertype' => 'add',
'userlimit' => 0,
'sort' => 2,
'created_at' => '2022-01-15 23:43:40',
'updated_at' => '2022-01-15 23:43:40',
),
19 =>
array (
'id' => 20,
'project_id' => 6,
'flow_id' => 5,
'name' => '已取消',
'status' => 'end',
'turns' => '[17,18,19,20]',
'userids' => '[]',
'usertype' => 'add',
'userlimit' => 0,
'sort' => 3,
'created_at' => '2022-01-15 23:43:40',
'updated_at' => '2022-01-15 23:43:40',
),
20 =>
array (
'id' => 21,
'project_id' => 7,
'flow_id' => 6,
'name' => '待处理',
'status' => 'start',
'turns' => '[21,22,23,24]',
'userids' => '[]',
'usertype' => 'add',
'userlimit' => 0,
'sort' => 0,
'created_at' => '2022-01-15 23:43:45',
'updated_at' => '2022-01-15 23:43:45',
),
21 =>
array (
'id' => 22,
'project_id' => 7,
'flow_id' => 6,
'name' => '进行中',
'status' => 'progress',
'turns' => '[21,22,23,24]',
'userids' => '[]',
'usertype' => 'add',
'userlimit' => 0,
'sort' => 1,
'created_at' => '2022-01-15 23:43:45',
'updated_at' => '2022-01-15 23:43:45',
),
22 =>
array (
'id' => 23,
'project_id' => 7,
'flow_id' => 6,
'name' => '已完成',
'status' => 'end',
'turns' => '[21,22,23,24]',
'userids' => '[]',
'usertype' => 'add',
'userlimit' => 0,
'sort' => 2,
'created_at' => '2022-01-15 23:43:45',
'updated_at' => '2022-01-15 23:43:45',
),
23 =>
array (
'id' => 24,
'project_id' => 7,
'flow_id' => 6,
'name' => '已取消',
'status' => 'end',
'turns' => '[21,22,23,24]',
'userids' => '[]',
'usertype' => 'add',
'userlimit' => 0,
'sort' => 3,
'created_at' => '2022-01-15 23:43:45',
'updated_at' => '2022-01-15 23:43:45',
),
));
}
}

View File

@@ -0,0 +1,76 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
class ProjectFlowsTableSeeder extends Seeder
{
/**
* Auto generated seed file
*
* @return void
*/
public function run()
{
if (\DB::table('project_flows')->count() > 0) {
return;
}
\DB::table('project_flows')->insert(array (
0 =>
array (
'id' => 1,
'project_id' => 2,
'name' => 'Default',
'created_at' => '2022-01-15 23:43:15',
'updated_at' => '2022-01-15 23:43:15',
),
1 =>
array (
'id' => 2,
'project_id' => 3,
'name' => 'Default',
'created_at' => '2022-01-15 23:43:23',
'updated_at' => '2022-01-15 23:43:23',
),
2 =>
array (
'id' => 3,
'project_id' => 4,
'name' => 'Default',
'created_at' => '2022-01-15 23:43:28',
'updated_at' => '2022-01-15 23:43:28',
),
3 =>
array (
'id' => 4,
'project_id' => 5,
'name' => 'Default',
'created_at' => '2022-01-15 23:43:34',
'updated_at' => '2022-01-15 23:43:34',
),
4 =>
array (
'id' => 5,
'project_id' => 6,
'name' => 'Default',
'created_at' => '2022-01-15 23:43:40',
'updated_at' => '2022-01-15 23:43:40',
),
5 =>
array (
'id' => 6,
'project_id' => 7,
'name' => 'Default',
'created_at' => '2022-01-15 23:43:45',
'updated_at' => '2022-01-15 23:43:45',
),
));
}
}

View File

@@ -28,6 +28,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 2,
'column_id' => 2,
'dialog_id' => 0,
'flow_item_id' => 1,
'flow_item_name' => '待处理',
'name' => '说明:将进度分成多级
每张卡片为一个项目任务,标签表示任务状况
通过将卡片拖至不同的进度列表下,来表示各项目进度',
@@ -54,6 +56,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 2,
'column_id' => 2,
'dialog_id' => 0,
'flow_item_id' => 1,
'flow_item_name' => '待处理',
'name' => '官网项目',
'color' => '',
'desc' => '',
@@ -78,6 +82,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 2,
'column_id' => 2,
'dialog_id' => 0,
'flow_item_id' => 1,
'flow_item_name' => '待处理',
'name' => '新增职位需求',
'color' => '',
'desc' => '',
@@ -102,6 +108,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 2,
'column_id' => 2,
'dialog_id' => 0,
'flow_item_id' => 1,
'flow_item_name' => '待处理',
'name' => '更新公司简介',
'color' => '',
'desc' => '',
@@ -126,6 +134,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 2,
'column_id' => 3,
'dialog_id' => 0,
'flow_item_id' => 1,
'flow_item_name' => '待处理',
'name' => '官网项目四期',
'color' => '',
'desc' => '',
@@ -150,6 +160,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 2,
'column_id' => 4,
'dialog_id' => 16,
'flow_item_id' => 1,
'flow_item_name' => '待处理',
'name' => '官网项目三期',
'color' => '',
'desc' => '',
@@ -174,6 +186,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 2,
'column_id' => 5,
'dialog_id' => 0,
'flow_item_id' => 1,
'flow_item_name' => '待处理',
'name' => '官网项目二期',
'color' => '',
'desc' => '',
@@ -198,6 +212,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 2,
'column_id' => 6,
'dialog_id' => 0,
'flow_item_id' => 3,
'flow_item_name' => '已完成',
'name' => '官网项目一期',
'color' => '',
'desc' => '',
@@ -222,6 +238,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 7,
'dialog_id' => 18,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => '免费高品质的Sketch资源',
'color' => '',
'desc' => 'https://sketchrepo.com/',
@@ -246,6 +264,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 7,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => '免费高品质的PSD资源',
'color' => '',
'desc' => 'https://psdrepo.com/',
@@ -270,6 +290,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 7,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => '免费高清灵感图片网(偏文艺)',
'color' => '',
'desc' => 'https://magdeleine.co/',
@@ -294,6 +316,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 7,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => '每天发现充满灵感且美丽的图片',
'color' => '',
'desc' => 'https://weheartit.com/',
@@ -318,6 +342,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 8,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => '花瓣网:设计师寻找灵感的天堂',
'color' => '',
'desc' => 'https://huaban.com/',
@@ -342,6 +368,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 8,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => 'WallHaven高清壁纸图片搜索引擎',
'color' => '',
'desc' => 'https://wallhaven.typepad.com/',
@@ -366,6 +394,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 8,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => 'Pexels免费高品质图片 可商用',
'color' => '',
'desc' => 'https://www.pexels.com/',
@@ -390,6 +420,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 9,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => 'RetinizeiOS切图神器',
'color' => '',
'desc' => 'http://retinize.it/',
@@ -414,6 +446,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 9,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => 'GuideGuide一款PS参考线插件',
'color' => '',
'desc' => 'https://guideguide.me/photoshop/',
@@ -438,6 +472,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 9,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => 'Assistor PS一个功能强大的PS辅助工具',
'color' => '',
'desc' => 'http://wit-web.azurewebsites.net/assistor/download',
@@ -462,6 +498,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 10,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => 'Fontello图标字体生成器',
'color' => '',
'desc' => 'http://fontello.com/',
@@ -486,6 +524,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 10,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => 'inconfont: 免费提供高度可辨识符号图标',
'color' => '',
'desc' => 'https://www.iconfont.cn/',
@@ -510,6 +550,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 10,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => 'The Noun Project免费提供高度可辨识符号图标',
'color' => '',
'desc' => 'https://thenounproject.com/',
@@ -534,6 +576,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 10,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => 'EasyIcon免费图标搜索和下载平台',
'color' => '',
'desc' => 'https://www.easyicon.net/',
@@ -558,6 +602,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 10,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => 'Icon Deposit一个奇妙的图标下载站',
'color' => '',
'desc' => 'https://www.icondeposit.com/',
@@ -582,6 +628,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 10,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => 'iConifyMac平台的苹果应用图标自动化生成工具',
'color' => '',
'desc' => 'https://iconify.net/',
@@ -606,6 +654,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 11,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => 'Logaster教你在线几分钟内搞定专业的LOGO',
'color' => '',
'desc' => '设计https://www.logaster.cn/',
@@ -630,6 +680,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 11,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => 'LogoLounge国际知名的LOGO设计权威网站',
'color' => '',
'desc' => 'https://www.logolounge.com/',
@@ -654,6 +706,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 11,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => 'LogoMoose一个优秀的logo素材站点',
'color' => '',
'desc' => 'https://www.logomoose.com/',
@@ -678,6 +732,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 11,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => 'LOGOED一个展示Logo设计的博客',
'color' => '',
'desc' => 'http://www.logoed.co.uk/page/2/',
@@ -702,6 +758,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 11,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => 'Logo of the Day汇集世界各地优秀LOGO作品的站点',
'color' => '',
'desc' => 'https://logooftheday.com/',
@@ -726,6 +784,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 2,
'column_id' => 5,
'dialog_id' => 0,
'flow_item_id' => 1,
'flow_item_name' => '待处理',
'name' => 'asdasdad1111',
'color' => '',
'desc' => '7777777',
@@ -750,6 +810,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 2,
'column_id' => 5,
'dialog_id' => 0,
'flow_item_id' => 1,
'flow_item_name' => '待处理',
'name' => 'hjhjhjjh',
'color' => '',
'desc' => '',
@@ -774,6 +836,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 11,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => 'Logo of the Day汇集世界各地优秀LOGO作品的站点',
'color' => '',
'desc' => '',
@@ -798,6 +862,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 11,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => 'LogoDesignLoveLogo设计技巧分享网',
'color' => '',
'desc' => 'LogoDesignLoveLogo设计技巧分享网',
@@ -822,6 +888,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 11,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => 'LogoDesignLoveLogo设计技巧分享网',
'color' => '',
'desc' => '',
@@ -846,6 +914,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 12,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => 'Coolors自动生成配色色板的小工具',
'color' => '',
'desc' => 'https://coolors.co/',
@@ -870,6 +940,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 12,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => 'Material PaletteMaterial Design专用在线配色工具',
'color' => '',
'desc' => 'https://www.materialpalette.com/',
@@ -894,6 +966,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 12,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => 'Web安全色WEB设计、开发中常用的安全颜色',
'color' => '',
'desc' => 'https://www.bootcss.com/p/websafecolors/',
@@ -918,6 +992,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 12,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => 'ColorZilla火狐浏览器网页取色器插件',
'color' => '',
'desc' => 'https://www.colorzilla.com/',
@@ -942,6 +1018,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 12,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => 'Color Palette Generator图片配色工具',
'color' => '',
'desc' => '',
@@ -966,6 +1044,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 12,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => 'inconfont: 免费提供高度可辨识符号图标',
'color' => '',
'desc' => 'https://www.iconfont.cn/',
@@ -990,6 +1070,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 12,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => 'inconfont: 免费提供高度可辨识符号图标https://www.iconfont.cn/',
'color' => '',
'desc' => 'https://www.iconfont.cn/',
@@ -1014,6 +1096,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 3,
'column_id' => 12,
'dialog_id' => 0,
'flow_item_id' => 5,
'flow_item_name' => '待处理',
'name' => 'https://www.iconfont.cn/',
'color' => '',
'desc' => '',
@@ -1038,6 +1122,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 4,
'column_id' => 13,
'dialog_id' => 0,
'flow_item_id' => 9,
'flow_item_name' => '待处理',
'name' => '将收集箱的事务进行判断。要立即执行进入Q2列表。非立即执行判断——1.不做删掉、2.稍晚再做进入「稍后做」、3.可做可不做的任务或可能有用的资源进入「Mark」列表',
'color' => '',
'desc' => '',
@@ -1062,6 +1148,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 4,
'column_id' => 13,
'dialog_id' => 0,
'flow_item_id' => 9,
'flow_item_name' => '待处理',
'name' => '2分钟内能做完贴上2分钟标签进入「2分钟速战」列表。2分钟以上做完的事务进入Q3',
'color' => '',
'desc' => '',
@@ -1086,6 +1174,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 4,
'column_id' => 13,
'dialog_id' => 0,
'flow_item_id' => 9,
'flow_item_name' => '待处理',
'name' => '判断能否一步做完能进入Q4不能打上多步标签进入「项目清单」或将多步骤任务分解成多个一步做完任务进入Q4。',
'color' => '',
'desc' => '',
@@ -1110,6 +1200,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 4,
'column_id' => 13,
'dialog_id' => 0,
'flow_item_id' => 9,
'flow_item_name' => '待处理',
'name' => '如果自己做,打上自己做标签(进入「执行清单」);如果别人做,打上别人做标签(进入「等待清单」)。',
'color' => '',
'desc' => '',
@@ -1134,6 +1226,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 2,
'column_id' => 2,
'dialog_id' => 0,
'flow_item_id' => 1,
'flow_item_name' => '待处理',
'name' => '❓❗ 说明:将进度分成多级
每张卡片为一个项目任务,标签表示任务状况
@@ -1162,6 +1256,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 4,
'column_id' => 13,
'dialog_id' => 0,
'flow_item_id' => 9,
'flow_item_name' => '待处理',
'name' => '每天晚上复查整套流程',
'color' => '',
'desc' => '',
@@ -1186,6 +1282,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 4,
'column_id' => 13,
'dialog_id' => 0,
'flow_item_id' => 9,
'flow_item_name' => '待处理',
'name' => '1.检查「收集箱」是否清空。',
'color' => '',
'desc' => '',
@@ -1210,6 +1308,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 4,
'column_id' => 13,
'dialog_id' => 0,
'flow_item_id' => 9,
'flow_item_name' => '待处理',
'name' => '2.检查「Mark」是否有条目需要执行转化成行动或项目。',
'color' => '',
'desc' => '',
@@ -1234,6 +1334,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 4,
'column_id' => 13,
'dialog_id' => 0,
'flow_item_id' => 9,
'flow_item_name' => '待处理',
'name' => '3.检查「项目清单」了解项目进度。',
'color' => '',
'desc' => '',
@@ -1258,6 +1360,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 4,
'column_id' => 13,
'dialog_id' => 0,
'flow_item_id' => 9,
'flow_item_name' => '待处理',
'name' => '4.检查「等待清单」是否有条目需要转化成行动,也就是催促。',
'color' => '',
'desc' => '',
@@ -1282,6 +1386,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 4,
'column_id' => 13,
'dialog_id' => 0,
'flow_item_id' => 9,
'flow_item_name' => '待处理',
'name' => '5.检查各清单是否有已完成,完成的、已作废的卡片,立刻删除。',
'color' => '',
'desc' => '',
@@ -1306,6 +1412,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 4,
'column_id' => 14,
'dialog_id' => 0,
'flow_item_id' => 9,
'flow_item_name' => '待处理',
'name' => '任何事务或信息,先以最简单的方式记录到“收集箱”。然后判断,贴上标签后,拖动到相应列表里',
'color' => '',
'desc' => '',
@@ -1330,6 +1438,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 4,
'column_id' => 15,
'dialog_id' => 0,
'flow_item_id' => 9,
'flow_item_name' => '待处理',
'name' => '优先级1立即去做的事',
'color' => '',
'desc' => '',
@@ -1354,6 +1464,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 4,
'column_id' => 14,
'dialog_id' => 0,
'flow_item_id' => 9,
'flow_item_name' => '待处理',
'name' => '任何事务或信息,先以最简单的方式记录到“收集箱”。然后判断,贴上标签后,拖动到相应列表里',
'color' => '',
'desc' => '',
@@ -1378,6 +1490,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 4,
'column_id' => 16,
'dialog_id' => 0,
'flow_item_id' => 9,
'flow_item_name' => '待处理',
'name' => '优先级2主要的执行清单',
'color' => '',
'desc' => '',
@@ -1402,6 +1516,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 4,
'column_id' => 17,
'dialog_id' => 0,
'flow_item_id' => 9,
'flow_item_name' => '待处理',
'name' => '优先级3存放需要多步骤做的事持续追踪',
'color' => '',
'desc' => '',
@@ -1426,6 +1542,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 4,
'column_id' => 17,
'dialog_id' => 0,
'flow_item_id' => 9,
'flow_item_name' => '待处理',
'name' => '可以为这个多步骤项目单独建一个项目,并把项目的链接放到卡片的详情页里,点击就能跳转进去。',
'color' => '',
'desc' => '',
@@ -1450,6 +1568,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 4,
'column_id' => 17,
'dialog_id' => 0,
'flow_item_id' => 9,
'flow_item_name' => '待处理',
'name' => '活动策划',
'color' => '',
'desc' => '',
@@ -1474,6 +1594,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 4,
'column_id' => 16,
'dialog_id' => 0,
'flow_item_id' => 9,
'flow_item_name' => '待处理',
'name' => '填问卷',
'color' => '',
'desc' => '',
@@ -1498,6 +1620,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 4,
'column_id' => 18,
'dialog_id' => 0,
'flow_item_id' => 9,
'flow_item_name' => '待处理',
'name' => '存放等待协同的事',
'color' => '',
'desc' => '',
@@ -1522,6 +1646,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 4,
'column_id' => 18,
'dialog_id' => 0,
'flow_item_id' => 9,
'flow_item_name' => '待处理',
'name' => '设计稿反馈',
'color' => '',
'desc' => '',
@@ -1546,6 +1672,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 4,
'column_id' => 18,
'dialog_id' => 0,
'flow_item_id' => 9,
'flow_item_name' => '待处理',
'name' => '存放等待协同的事',
'color' => '',
'desc' => '',
@@ -1570,6 +1698,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 4,
'column_id' => 19,
'dialog_id' => 0,
'flow_item_id' => 9,
'flow_item_name' => '待处理',
'name' => '存放稍后做的任务',
'color' => '',
'desc' => '',
@@ -1594,6 +1724,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 4,
'column_id' => 19,
'dialog_id' => 0,
'flow_item_id' => 9,
'flow_item_name' => '待处理',
'name' => '阅实习生简历',
'color' => '',
'desc' => '',
@@ -1618,6 +1750,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 4,
'column_id' => 20,
'dialog_id' => 0,
'flow_item_id' => 9,
'flow_item_name' => '待处理',
'name' => '存放可做可不做的任务,以及各种可能用到的资源',
'color' => '',
'desc' => '',
@@ -1642,6 +1776,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 4,
'column_id' => 20,
'dialog_id' => 0,
'flow_item_id' => 9,
'flow_item_name' => '待处理',
'name' => '团建KTV',
'color' => '',
'desc' => '',
@@ -1666,6 +1802,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 5,
'column_id' => 21,
'dialog_id' => 0,
'flow_item_id' => 13,
'flow_item_name' => '待处理',
'name' => '产品新需求',
'color' => '',
'desc' => '',
@@ -1690,6 +1828,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 5,
'column_id' => 22,
'dialog_id' => 0,
'flow_item_id' => 13,
'flow_item_name' => '待处理',
'name' => '需要调研的需求',
'color' => '',
'desc' => '',
@@ -1714,6 +1854,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 5,
'column_id' => 23,
'dialog_id' => 17,
'flow_item_id' => 13,
'flow_item_name' => '待处理',
'name' => '进入交互设计的需求',
'color' => '',
'desc' => '',
@@ -1738,6 +1880,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 5,
'column_id' => 25,
'dialog_id' => 0,
'flow_item_id' => 13,
'flow_item_name' => '待处理',
'name' => '设计稿(放入设计稿)',
'color' => '',
'desc' => '',
@@ -1762,6 +1906,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 5,
'column_id' => 25,
'dialog_id' => 0,
'flow_item_id' => 13,
'flow_item_name' => '待处理',
'name' => '提测(放入提测时间规划表)',
'color' => '',
'desc' => '',
@@ -1786,6 +1932,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 5,
'column_id' => 25,
'dialog_id' => 0,
'flow_item_id' => 13,
'flow_item_name' => '待处理',
'name' => '发布流程(放入发布流程,应用文案等)',
'color' => '',
'desc' => '',
@@ -1810,6 +1958,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 5,
'column_id' => 25,
'dialog_id' => 0,
'flow_item_id' => 13,
'flow_item_name' => '待处理',
'name' => '-----上线需求-----(将左边列表中的需求拖动至下方,表示本版本上线需求)',
'color' => '',
'desc' => '',
@@ -1834,6 +1984,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 6,
'column_id' => 26,
'dialog_id' => 0,
'flow_item_id' => 17,
'flow_item_name' => '待处理',
'name' => '将小组一年工作目标拆解,设置出里程碑时间节点。并指派相关责任人。用标签来展示进行状况',
'color' => '',
'desc' => '',
@@ -1858,6 +2010,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 6,
'column_id' => 27,
'dialog_id' => 0,
'flow_item_id' => 19,
'flow_item_name' => '已完成',
'name' => '🚴 里程碑 1 需求评审完成,资源准备到位',
'color' => '',
'desc' => '',
@@ -1882,6 +2036,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 6,
'column_id' => 27,
'dialog_id' => 0,
'flow_item_id' => 17,
'flow_item_name' => '待处理',
'name' => '🚴 里程碑 2 设计完成,进行评审',
'color' => '',
'desc' => '',
@@ -1906,6 +2062,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 6,
'column_id' => 28,
'dialog_id' => 0,
'flow_item_id' => 17,
'flow_item_name' => '待处理',
'name' => '🚴 里程碑 3 产品开发完成,开始提测',
'color' => '',
'desc' => '',
@@ -1930,6 +2088,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 6,
'column_id' => 28,
'dialog_id' => 0,
'flow_item_id' => 17,
'flow_item_name' => '待处理',
'name' => '🚴 里程碑 4 测试完成准备线上发布',
'color' => '',
'desc' => '',
@@ -1954,6 +2114,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 6,
'column_id' => 28,
'dialog_id' => 0,
'flow_item_id' => 17,
'flow_item_name' => '待处理',
'name' => '测试1',
'color' => '',
'desc' => '',
@@ -1978,6 +2140,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 6,
'column_id' => 28,
'dialog_id' => 0,
'flow_item_id' => 17,
'flow_item_name' => '待处理',
'name' => '测试2',
'color' => '',
'desc' => '',
@@ -2002,6 +2166,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 6,
'column_id' => 28,
'dialog_id' => 0,
'flow_item_id' => 17,
'flow_item_name' => '待处理',
'name' => '测试3',
'color' => '',
'desc' => '',
@@ -2026,6 +2192,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 6,
'column_id' => 29,
'dialog_id' => 0,
'flow_item_id' => 17,
'flow_item_name' => '待处理',
'name' => '🚴 里程碑 5 市场发布',
'color' => '',
'desc' => '',
@@ -2050,6 +2218,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 7,
'column_id' => 32,
'dialog_id' => 0,
'flow_item_id' => 21,
'flow_item_name' => '待处理',
'name' => '产品官网设计',
'color' => '',
'desc' => '',
@@ -2074,6 +2244,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 7,
'column_id' => 32,
'dialog_id' => 0,
'flow_item_id' => 23,
'flow_item_name' => '已完成',
'name' => '首页',
'color' => '',
'desc' => '',
@@ -2098,6 +2270,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 7,
'column_id' => 32,
'dialog_id' => 0,
'flow_item_id' => 23,
'flow_item_name' => '已完成',
'name' => '公司介绍',
'color' => '',
'desc' => '',
@@ -2122,6 +2296,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 7,
'column_id' => 32,
'dialog_id' => 0,
'flow_item_id' => 23,
'flow_item_name' => '已完成',
'name' => '新闻动态',
'color' => '',
'desc' => '',
@@ -2146,6 +2322,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 7,
'column_id' => 32,
'dialog_id' => 0,
'flow_item_id' => 23,
'flow_item_name' => '已完成',
'name' => '产品介绍',
'color' => '',
'desc' => '',
@@ -2170,6 +2348,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 7,
'column_id' => 32,
'dialog_id' => 0,
'flow_item_id' => 23,
'flow_item_name' => '已完成',
'name' => '案例展示',
'color' => '',
'desc' => '',
@@ -2194,6 +2374,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 7,
'column_id' => 32,
'dialog_id' => 0,
'flow_item_id' => 21,
'flow_item_name' => '待处理',
'name' => '联系我们',
'color' => '',
'desc' => '',
@@ -2218,6 +2400,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 7,
'column_id' => 32,
'dialog_id' => 0,
'flow_item_id' => 21,
'flow_item_name' => '待处理',
'name' => '官网新增一级栏目,“招聘信息”',
'color' => '',
'desc' => '',
@@ -2242,6 +2426,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 7,
'column_id' => 33,
'dialog_id' => 0,
'flow_item_id' => 21,
'flow_item_name' => '待处理',
'name' => '产品官网',
'color' => '',
'desc' => '',
@@ -2266,6 +2452,8 @@ class ProjectTasksTableSeeder extends Seeder
'project_id' => 5,
'column_id' => 24,
'dialog_id' => 0,
'flow_item_id' => 13,
'flow_item_name' => '待处理',
'name' => '版本的确定',
'color' => '',
'desc' => '',

121
electron/main.js vendored
View File

@@ -1,4 +1,5 @@
const fs = require('fs')
const fse = require('fs-extra')
const os = require("os");
const path = require('path')
const XLSX = require('xlsx');
@@ -14,13 +15,49 @@ let mainWindow = null,
devloadUrl = "",
devloadCachePath = path.resolve(__dirname, ".devload"),
downloadList = [],
downloadCacheFile = path.join(app.getPath('cache'), config.name + '.downloadCache');
downloadCacheFile = path.join(app.getPath('cache'), config.name, '.downloadCache');
if (fs.existsSync(devloadCachePath)) {
devloadUrl = fs.readFileSync(devloadCachePath, 'utf8')
}
if (fs.existsSync(downloadCacheFile)) {
downloadList = utils.jsonParse(fs.readFileSync(downloadCacheFile, 'utf8'), [])
} else {
fse.ensureDirSync(path.join(app.getPath('cache'), config.name))
}
function downloadUpdate(item) {
const chain = item.getURLChain()
if (chain.length == 0) {
return
}
let currentState = item.getState()
if (currentState == "progressing" && item.isPaused()) {
currentState = "paused"
}
//
const downloadItem = downloadList.find(item => item.url == chain[0])
if (downloadItem && downloadItem.state != currentState) {
downloadItem.state = currentState;
downloadItem.result = {
url: item.getURL(),
name: item.getFilename(),
savePath: item.getSavePath(),
mimeType: item.getMimeType(),
totalBytes: item.getTotalBytes(),
chain,
};
fs.writeFileSync(downloadCacheFile, utils.jsonStringify(downloadList), 'utf8');
//
if (currentState == 'completed') {
mainWindow.webContents.send("downloadDone", downloadItem)
log.info("下载完成", downloadItem)
} else {
mainWindow.webContents.send("downloadUpdate", downloadItem)
log.info("下载更新", downloadItem)
}
}
}
function createMainWindow() {
@@ -69,37 +106,12 @@ function createMainWindow() {
})
mainWindow.webContents.session.on('will-download', (event, item) => {
item.setSavePath(path.join(app.getPath('cache'), item.getFilename()));
item.on('done', (event, state) => {
try {
const info = {
state,
name: item.getFilename(),
url: item.getURL(),
chain: item.getURLChain(),
savePath: item.getSavePath(),
mimeType: item.getMimeType(),
totalBytes: item.getTotalBytes(),
};
mainWindow.webContents.send("downloadDone", info)
//
if (info.state == "completed") {
// 下载完成
info.chain.some(url => {
let download = downloadList.find(item => item.url == url)
if (download) {
download.status = "completed"
download.info = info
}
})
fs.writeFileSync(downloadCacheFile, utils.jsonStringify(downloadList), 'utf8');
} else {
// 下载失败
info.chain.some(url => {
downloadList = downloadList.filter(item => item.url != url)
})
}
} catch (e) { }
item.setSavePath(path.join(app.getPath('cache'), config.name, item.getFilename()));
item.on('updated', () => {
downloadUpdate(item)
})
item.on('done', () => {
downloadUpdate(item)
})
})
}
@@ -201,26 +213,33 @@ ipcMain.on('inheritClose', (event) => {
* @param args {url}
*/
ipcMain.on('downloadFile', (event, args) => {
const download = downloadList.find(({url}) => url == args.url);
if (download) {
if (download.status == "completed") {
if (fs.existsSync(download.info.savePath)) {
log.warn("已下载完成", args)
mainWindow.webContents.send("downloadDone", download.info)
} else {
log.info("开始重新下载", args)
download.status = "progressing"
mainWindow.webContents.downloadURL(args.url);
}
} else {
log.warn("已在下载列表中", args)
}
} else {
log.info("开始下载", args)
downloadList.push(Object.assign(args, { status: "progressing" }))
mainWindow.webContents.downloadURL(args.url);
}
event.returnValue = "ok"
//
let appendJson = {state: "progressing", startTime: utils.Time()}
let downloadItem = downloadList.find(({url}) => url == args.url)
if (downloadItem) {
switch (downloadItem.state) {
case "completed":
if (fs.existsSync(downloadItem.result.savePath)) { // 下载完成,文件存在
log.info("下载已完成", downloadItem)
mainWindow.webContents.send("downloadDone", downloadItem)
return
}
break;
case "progressing":
if (downloadItem.startTime + 480 > utils.Time()) { // 下载中未超时超时时间8分钟
log.info("下载已存在", downloadItem)
return;
}
break;
}
downloadItem = Object.assign(downloadItem, appendJson)
} else {
downloadList.push(downloadItem = Object.assign(args, appendJson))
}
fs.writeFileSync(downloadCacheFile, utils.jsonStringify(downloadList), 'utf8');
mainWindow.webContents.downloadURL(downloadItem.url);
log.info("下载开始", downloadItem)
})
/**

View File

@@ -1,6 +1,6 @@
{
"name": "DooTask",
"version": "0.6.26",
"version": "0.6.31",
"description": "DooTask is task management system.",
"main": "main.js",
"license": "MIT",

17
electron/utils.js vendored
View File

@@ -252,4 +252,21 @@ module.exports = {
let domain = (weburl + "").match(urlReg);
return ((domain != null && domain.length > 0) ? domain[2] : "");
},
/**
* 返回10位数时间戳
* @param v
* @returns {number}
* @constructor
*/
Time(v = undefined) {
let time
if (typeof v === "string" && this.strExists(v, "-")) {
v = v.replace(/-/g, '/');
time = new Date(v).getTime();
} else {
time = new Date().getTime();
}
return Math.round(time / 1000)
},
}

View File

@@ -1,6 +1,6 @@
{
"name": "DooTask",
"version": "0.6.26",
"version": "0.6.31",
"description": "DooTask is task management system.",
"scripts": {
"start": "./cmd dev",

2
public/css/app.css vendored

File diff suppressed because one or more lines are too long

2
public/js/app.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
/*!
* html2canvas 1.4.0 <https://html2canvas.hertzen.com>
* Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
* html2canvas 1.3.3 <https://html2canvas.hertzen.com>
* Copyright (c) 2021 Niklas von Hertzen <https://hertzen.com>
* Released under MIT License
*/

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,5 @@
{
"/js/app.js": "/js/app.js",
"/css/app.css": "/css/app.css",
"/.DS_Store": "/.DS_Store",
"/favicon.ico": "/favicon.ico"
}

View File

@@ -3,7 +3,7 @@
<div v-if="$Electron" class="common-app-down-link" @click="releasesNotification">
<Icon type="md-download"/> {{$L(repoTitle)}}
</div>
<a v-else class="common-app-down-link" :href="releases.html_url" target="_blank">
<a v-else class="common-app-down-link" :href="repoReleases.html_url" target="_blank">
<Icon type="md-download"/> {{$L(repoTitle)}}
</a>
</div>
@@ -15,7 +15,6 @@ import MarkdownPreview from "./MDEditor/components/preview";
import axios from "axios";
Vue.component('MarkdownPreview', MarkdownPreview)
import {Store} from "le5le-store";
import {mapState} from "vuex";
export default {
@@ -26,19 +25,19 @@ export default {
repoName: 'kuaifan/dootask',
repoData: {},
repoStatus: 0, // 0 没有1有客户端2客户端有新版本
repoReleases: {},
status: 0, // 0 没有1有客户端2客户端有新版本
releases: {},
downInfo: {},
downloadResult: {},
}
},
mounted() {
this.getReleases();
//
if (this.$Electron) {
this.$Electron.ipcRenderer.on('downloadDone', (event, args) => {
if (args.name == this.repoData.name) {
this.downInfo = args;
this.$Electron.ipcRenderer.on('downloadDone', (event, {result}) => {
if (result.name == this.repoData.name) {
this.downloadResult = result;
this.releasesNotification()
}
})
@@ -49,10 +48,10 @@ export default {
'wsOpenNum',
]),
repoTitle() {
return this.status == 2 ? '更新客户端' : '客户端下载';
return this.repoStatus == 2 ? '更新客户端' : '客户端下载';
},
showButton() {
return this.status && !this.$store.state.windowMax768 && ['login', 'manage-dashboard'].includes(this.$route.name)
return this.repoStatus && !this.$store.state.windowMax768 && ['login', 'manage-dashboard'].includes(this.$route.name)
}
},
watch: {
@@ -108,7 +107,7 @@ export default {
},
getReleases() {
if (this.status > 0) {
if (this.repoStatus > 0) {
return;
}
if (this.loadIng > 0) {
@@ -116,10 +115,11 @@ export default {
}
//
let cache = $A.getStorageJson("cacheAppdown");
let timeout = 1800;
let timeout = 600;
if (cache.time && cache.time + timeout > Math.round(new Date().getTime() / 1000)) {
this.releases = cache.data;
this.repoReleases = cache.data;
this.chackReleases()
setTimeout(this.getReleases, timeout * 1000)
return;
}
//
@@ -127,22 +127,24 @@ export default {
axios.get("https://api.github.com/repos/" + this.repoName + "/releases/latest").then(({status, data}) => {
this.loadIng--;
if (status === 200) {
$A.setStorage("cacheAppdown", {
cache = {
time: Math.round(new Date().getTime() / 1000),
data: data
});
this.releases = data;
this.chackReleases();
setTimeout(this.getReleases, timeout)
}
$A.setStorage("cacheAppdown", cache);
this.repoReleases = cache.data;
this.chackReleases()
}
setTimeout(this.getReleases, timeout * 1000)
}).catch(() => {
this.loadIng--;
setTimeout(this.getReleases, timeout * 1000)
});
},
chackReleases() {
let hostName = $A.getDomain(window.systemInfo.apiUrl);
if (hostName == "" || hostName == '127.0.0.1') {
if (hostName == "" || $A.leftExists(hostName, '127.0.0.1')) {
hostName = "public"
}
if (this.$Electron) {
@@ -153,18 +155,18 @@ export default {
}
let artifactName = null;
if (match[2] === 'darwin') {
artifactName = `${hostName}-${this.releases.tag_name}-mac-${match[3]}.pkg`;
artifactName = `${hostName}-${this.repoReleases.tag_name}-mac-${match[3]}.pkg`;
} else if (match[2] === 'win32') {
artifactName = `${hostName}-${this.releases.tag_name}-win-${match[3]}.exe`;
artifactName = `${hostName}-${this.repoReleases.tag_name}-win-${match[3]}.exe`;
} else {
return;
}
this.repoData = (this.releases.assets || []).find(({name}) => name == artifactName);
this.repoData = (this.repoReleases.assets || []).find(({name}) => name == artifactName);
if (!this.repoData) {
return;
}
let currentVersion = window.systemInfo.version;
let latestVersion = $A.leftDelete(this.releases.tag_name.toLowerCase(), "v")
let latestVersion = $A.leftDelete(this.repoReleases.tag_name.toLowerCase(), "v")
if (this.compareVersion(latestVersion, currentVersion) === 1) {
// 有新版本
console.log("New version: " + latestVersion);
@@ -174,26 +176,23 @@ export default {
}
} else {
// 网页版(提示有客户端下载)
this.repoData = (this.releases.assets || []).find(({name}) => $A.strExists(name, hostName));
this.repoData = (this.repoReleases.assets || []).find(({name}) => $A.strExists(name, hostName));
if (this.repoData) {
let latestVersion = $A.leftDelete(this.releases.tag_name.toLowerCase(), "v")
let latestVersion = $A.leftDelete(this.repoReleases.tag_name.toLowerCase(), "v")
console.log("Exist client: " + latestVersion);
this.status = 1;
this.repoStatus = 1;
}
}
},
releasesNotification() {
if (this.downInfo.state != "completed") {
return;
}
$A.modalConfirm({
okText: this.$L('立即更新'),
onOk: () => {
this.installApplication();
},
onCancel: () => {
this.status = 2;
this.repoStatus = 2;
},
render: (h) => {
return h('div', {
@@ -209,12 +208,12 @@ export default {
props: {
color: 'volcano'
}
}, this.releases.tag_name)
}, this.repoReleases.tag_name)
]),
h('MarkdownPreview', {
class: 'notification-body',
props: {
initialValue: this.releases.body
initialValue: this.repoReleases.body
}
}),
])
@@ -227,7 +226,7 @@ export default {
return;
}
this.$Electron.ipcRenderer.send('openFile', {
path: this.downInfo.savePath
path: this.downloadResult.savePath
});
this.$Electron.ipcRenderer.send('windowQuit');
}

View File

@@ -28,7 +28,8 @@
}
.notification-body {
max-height: 210px;
overflow: auto;
overflow-x: hidden;
overflow-y: auto;
margin: 18px 0;
.markdown-preview {
margin: -20px -12px;

2
version.js vendored
View File

@@ -16,7 +16,7 @@ function runExec(command, cb) {
});
}
runExec("git rev-list --branches master --count", function (err, response) {
runExec("git rev-list --count HEAD $(git branch | sed -n -e 's/^\* \(.*\)/\1/p')", function (err, response) {
if (err) {
console.error(err);
return;