V3.2

  1. 增加项目审批流程机制,增加任务审核机制, 免费开放
  2. 项目账单模块从应用市场下架,免费开放
  3. 任务工时模块从应用市场下架,免费开放
  4. 调整收费策略 具体如下
  • 1:0-2人免费
  • 2:2-10人为体验优惠价 36.5元/人/年
  • 3:11-∞ 为正常价168元/人/年

从3.1 更新到3.2的朋友,数据库需更新

ALTER TABLE `tw_project` ADD COLUMN `task_need_approval` int AFTER `workhour_real`, ADD COLUMN `task_approval_password1` varchar(50) AFTER `task_need_approval`, ADD COLUMN `task_approval_password2` varchar(50) AFTER `task_approval_password1`;

DROP TABLE IF EXISTS `tw_approver_category`;
CREATE TABLE `tw_approver_category` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) DEFAULT NULL,
  `group` varchar(200) DEFAULT NULL COMMENT '公司代码',
  `uniquecode` varchar(200) NOT NULL COMMENT '项目分组',
  PRIMARY KEY (`id`,`uniquecode`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS `tw_approver_template`;
CREATE TABLE `tw_approver_template` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `groupcode` varchar(200) DEFAULT NULL COMMENT '公司代码',
  `uniquecode` varchar(200) NOT NULL COMMENT '项目分组',
  `title` varchar(100) DEFAULT NULL,
  `category` varchar(100) DEFAULT '1' COMMENT '审批分类,1:假勤,2:行政,3:财务,4:人事',
  `icon` varchar(50) DEFAULT NULL,
  `statue` tinyint(2) DEFAULT '1' COMMENT '启用状态',
  `progress_steps` text,
  PRIMARY KEY (`id`,`uniquecode`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS `tw_project_approval`;
CREATE TABLE `tw_project_approval` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `groupcode` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `sender_code` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `send_time` datetime DEFAULT NULL,
  `sender_name` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL,
  `category` varchar(100) COLLATE utf8_unicode_ci DEFAULT '0' COMMENT '0:立项审批,1结项审批',
  `uniquecode` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL,
  `category_name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `current_statue` int(5) DEFAULT '0' COMMENT '0:进行中,-1:已拒绝,1已完成',
  `importance` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
  `approval_title` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL,
  `dead_line` datetime DEFAULT NULL,
  `projectcode` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `current_approval_step` int(10) DEFAULT '0',
  `current_checker_code` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `current_checker_name` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `responsercode` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `begin_time` datetime DEFAULT NULL,
  `responsername` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `buget` float(10,0) DEFAULT NULL,
  `project_detail` longtext COLLATE utf8_unicode_ci,
  `checkerlist` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=44 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

DROP TABLE IF EXISTS `tw_project_approval_progress`;
CREATE TABLE `tw_project_approval_progress` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `groupcode` varchar(100) DEFAULT NULL COMMENT '公司代码',
  `approval_uniquecode` varchar(100) NOT NULL COMMENT '项目分组',
  `checker` varchar(100) DEFAULT NULL,
  `check_date` datetime DEFAULT NULL,
  `comment` text,
  `relate_file` varchar(255) DEFAULT NULL,
  `check_statue` tinyint(5) DEFAULT '0' COMMENT '1:通过,-1:拒绝',
  `checkercode` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`,`approval_uniquecode`)
) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS `tw_project_approval_subscript_members`;
CREATE TABLE `tw_project_approval_subscript_members` (
  `id` int(20) NOT NULL AUTO_INCREMENT,
  `groupcode` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `approval_code` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `usercode` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `username` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `userimage` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

DROP TABLE IF EXISTS `tw_projectapproval_files`;
CREATE TABLE `tw_projectapproval_files` (
  `id` int(20) NOT NULL AUTO_INCREMENT,
  `uniquecode` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `groupcode` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `system_path` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `url` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL,
  `typef` varchar(50) COLLATE utf8_unicode_ci DEFAULT '1' COMMENT '1:支持文档 2:对话 3,财务',
  `update_date` datetime DEFAULT NULL,
  `size` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `creator` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `parentcode` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `searchindex` (`uniquecode`,`name`)
) ENGINE=InnoDB AUTO_INCREMENT=114 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

V3.1.2

  1. 修复复制任务无法复制子任务问题
  2. 子任务暂时只支持一层子任务
  3. 任务概览支持已完成任务显示和删选,支持时间删选
    无需更新数据库!

V3.1.1 修复已知BUG,优化项目统计和任务统计界面

无需更新数据库!

V3.1.0 工时统计,邮件提醒,统计优化

1:(需激活)增加工时统计功能,可以统计设置任务工时,项目自动统计总工时
2:增加结束项目时,邮件发送提醒,需配置文件里进行SMTP服务器配置
3:优化数据统计面板功能,项目统计和任务统计分开,统计更加清晰
3.1.0 数据库需要更新

ALTER TABLE `tw_task` ADD COLUMN `workhour_plan` int(10) AFTER `total_profit`, ADD COLUMN `workhour_real` int(10) AFTER `workhour_plan`;
ALTER TABLE `tw_project` ADD COLUMN `workhour_plan` int(10) AFTER `total_profit`, ADD COLUMN `workhour_real` int(10) AFTER `workhour_plan`;
INSERT INTO `tw_appsmarket` VALUES  ('3', '工时统计', 'xmksTEt1reAeZuXIIiY54jn1QbKXeaAbKsfHh3eddBIIc', 'worktime', '', '168', '/public/static/img/worktime.png', null);

V3.0.3 增加暗黑模式切换

image-1689476510203
image-1689476437786
3.0.3 数据库需要更新

ALTER TABLE `tw_member` ADD COLUMN `darkmode` tinyint DEFAULT 0 COMMENT '是否为黑暗模式' AFTER `space_used`;

V3.0.2 修复已知问题,优化界面样式

  1. 项目详情增加任务跳转按钮
  2. 修复无法修改公司名称bug
  3. 其他功能优化
  4. 优化一些界面样式,让界面更干净清新
    该版本无数据库升级

V3.0.1 修复已知问题,恢复windows 端支持

3.0 升到3.0.1 数据库需更新如下

ALTER TABLE `tw_project_group` CHANGE COLUMN `order` `orderindex` int(10) DEFAULT NULL;
ALTER TABLE `tw_projecttask_group` CHANGE COLUMN `order` `orderindex` int(10) DEFAULT NULL;
ALTER TABLE `tw_task_files` ADD COLUMN `billcode` varchar(100) DEFAULT NULL COMMENT '账单编号' AFTER `creator`;
ALTER TABLE `tw_bills` ADD COLUMN `billcode` varchar(100) AFTER `taskcode`;

V3.0 支持审批模版,项目账单等

image-1688304686267

设置账单类型

image-1688304748065

添加新账单

image-1688304806751

任务账单数据统计

image-1688304955203

项目账单数据统计

image-1688305052083

导出项目账单数据统计

image-1688305101845

审批模版主面板

image-1688305272942

  1. 可以删除模版
  2. 可以启用/禁用(锁图标)模版,禁用后普通成员无法查看该模版
  3. 可以新建更新模版
  4. 可以从模版中创建审批
  5. 可以创建模版分类

创建模版

image-1688305475099
image-1688305504445

  1. 根据公司业务流程自定义各式各样的审批流程
  2. 设置审批人员列表(请先在部门管理中设置每个部门的部门领导)

发起审批

image-1688305777052

审批主面板

image-1688306230616
image-1688306422337

  1. 审批类型分为 待审批,我发起的,被拒绝的,已完成的,抄送我的。五大类。
  2. 可以点击进度栏去查看当前的审批节点
  3. 审批完成后可打印
  4. 可按时间范围去搜索审批记录
  5. 可按审批重要程度去筛选审批记录

应用市场

企业微信截图_87094730-f540-4526-9299-c08829792164
image-1688307137045

2.1.1 升到3.0数据库更新

ALTER TABLE `tw_task` ADD COLUMN `total_income` decimal(10,2) DEFAULT NULL COMMENT '总收入';
ALTER TABLE `tw_task` ADD COLUMN `total_spending` decimal(10,2) DEFAULT NULL COMMENT '总支出';
ALTER TABLE `tw_task` ADD COLUMN `total_profit` decimal(10,2) DEFAULT NULL COMMENT '总盈利';

ALTER TABLE `tw_project` ADD COLUMN `total_income` decimal(10,2) DEFAULT NULL COMMENT '总收入';
ALTER TABLE `tw_project` ADD COLUMN `total_spending` decimal(10,2) DEFAULT NULL COMMENT '总支出';
ALTER TABLE `tw_project` ADD COLUMN `total_profit` decimal(10,2) DEFAULT NULL COMMENT '总盈利';

-- ----------------------------
--  Table structure for `tw_approval_category`
-- ----------------------------
DROP TABLE IF EXISTS `tw_approval_category`;
CREATE TABLE `tw_approval_category` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) DEFAULT NULL,
  `group` varchar(200) DEFAULT NULL COMMENT '公司代码',
  `uniquecode` varchar(200) NOT NULL COMMENT '项目分组',
  PRIMARY KEY (`id`,`uniquecode`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

-- ----------------------------
--  Records of `tw_approval_category`
-- ----------------------------
BEGIN;
INSERT INTO `tw_approval_category` VALUES ('2', '请假&考勤', 'xmksTEt1reAeZuXIIiY54jn1QbKXeaAbKsfHh3eddBIIc', 'xmksTEt1reAeZuXIIiY54jn1QbKXeaAbKsfHh3eddBIIc1111'), ('3', '行政', 'xmksTEt1reAeZuXIIiY54jn1QbKXeaAbKsfHh3eddBIIc', 'xmksTEt1reAeZuXIIiY54jn1QbKXeaAbKsfHh3eddBIIc223333'), ('4', '财务', 'xmksTEt1reAeZuXIIiY54jn1QbKXeaAbKsfHh3eddBIIc', '46idvd23p68ly6y33p3675p4egg94i8x0hvac5eptq4cw9v75g'), ('7', '人事', 'xmksTEt1reAeZuXIIiY54jn1QbKXeaAbKsfHh3eddBIIc', '6e86fahl867ev84g6g91p81f5yf0uea0a72lucr396ifbggphk');
COMMIT;

-- ----------------------------
--  Table structure for `tw_approval_files`
-- ----------------------------
DROP TABLE IF EXISTS `tw_approval_files`;
CREATE TABLE `tw_approval_files` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `groupcode` varchar(200) DEFAULT NULL COMMENT '公司代码',
  `approval_uniquecode` varchar(200) NOT NULL COMMENT '项目分组',
  `filename` varchar(100) DEFAULT NULL,
  `uploaddate` datetime DEFAULT NULL,
  `filepath` varchar(100) DEFAULT NULL,
  `uploader` varchar(100) DEFAULT NULL,
  `filetype` varchar(50) DEFAULT NULL,
  `fileurl` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`,`approval_uniquecode`)
) ENGINE=InnoDB AUTO_INCREMENT=47 DEFAULT CHARSET=utf8;


-- ----------------------------
--  Table structure for `tw_approval_progress`
-- ----------------------------
DROP TABLE IF EXISTS `tw_approval_progress`;
CREATE TABLE `tw_approval_progress` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `groupcode` varchar(100) DEFAULT NULL COMMENT '公司代码',
  `approval_uniquecode` varchar(100) NOT NULL COMMENT '项目分组',
  `checker` varchar(100) DEFAULT NULL,
  `check_date` datetime DEFAULT NULL,
  `comment` text,
  `relate_file` varchar(255) DEFAULT NULL,
  `check_statue` tinyint(5) DEFAULT '0' COMMENT '1:通过,-1:拒绝',
  `checkercode` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`,`approval_uniquecode`)
) ENGINE=InnoDB AUTO_INCREMENT=53 DEFAULT CHARSET=utf8;

-- ----------------------------
--  Table structure for `tw_approval_subscript_members`
-- ----------------------------
DROP TABLE IF EXISTS `tw_approval_subscript_members`;
CREATE TABLE `tw_approval_subscript_members` (
  `id` int(20) NOT NULL AUTO_INCREMENT,
  `groupcode` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `approval_code` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `usercode` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `username` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `userimage` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=62 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

-- ----------------------------
--  Table structure for `tw_approval_template`
-- ----------------------------
DROP TABLE IF EXISTS `tw_approval_template`;
CREATE TABLE `tw_approval_template` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `xmldata` longtext,
  `groupcode` varchar(200) DEFAULT NULL COMMENT '公司代码',
  `uniquecode` varchar(200) NOT NULL COMMENT '项目分组',
  `title` varchar(100) DEFAULT NULL,
  `category` varchar(100) DEFAULT '1' COMMENT '审批分类,1:假勤,2:行政,3:财务,4:人事',
  `jsondata` text,
  `filekeyvalue` text,
  `icon` varchar(50) DEFAULT NULL,
  `isneed_files` int(4) DEFAULT '1',
  `progress_steps` text,
  `statue` tinyint(2) DEFAULT '1' COMMENT '启用状态',
  PRIMARY KEY (`id`,`uniquecode`)
) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8;

-- ----------------------------
--  Records of `tw_approval_template`
-- ----------------------------
BEGIN;
INSERT INTO `tw_approval_template` VALUES ('29', '<form-template xmlns=\"http://www.w3.org/1999/xhtml\"><fields><field type=\"select\" required=\"false\" label=\"假期类型\" class-name=\"form-control\" name=\"select-1688286348302-0\" access=\"false\" multiple=\"false\"><option label=\"年假\" value=\"年假\" selected=\"selected\">年假</option><option label=\"季度假\" value=\"季度假\">季度假</option><option label=\"事假\" value=\"事假\">事假</option><option label=\"带薪事假\" value=\"带薪事假\">带薪事假</option><option label=\"病假\" value=\"病假\">病假</option><option label=\"产假\" value=\"产假\">产假</option><option label=\"婚假\" value=\"婚假\">婚假</option><option label=\"陪产假\" value=\"陪产假\">陪产假</option><option label=\"丧假\" value=\"丧假\">丧假</option><option label=\"调休假\" value=\"调休假\">调休假</option><option label=\"哺乳假\" value=\"哺乳假\">哺乳假</option></field><field type=\"date\" required=\"false\" label=\"开始时间\" class-name=\"form-control\" name=\"date-1688286517077-0\" access=\"false\"></field><field type=\"date\" required=\"false\" label=\"结束时间\" class-name=\"form-control\" name=\"date-1688286528533-0\" access=\"false\"></field><field type=\"number\" required=\"false\" label=\"请假天数\" class-name=\"form-control\" name=\"number-1688286545786-0\" access=\"false\"></field><field type=\"textarea\" required=\"false\" label=\"请假理由\" class-name=\"form-control\" name=\"textarea-1688286560713-0\" access=\"false\" subtype=\"textarea\"></field></fields></form-template>', 'xmksTEt1reAeZuXIIiY54jn1QbKXeaAbKsfHh3eddBIIc', 'ce42t7e7m5x9n6l7ne2e172k0zq1eam4swoujox9c9vy4ifc10', '请假', 'xmksTEt1reAeZuXIIiY54jn1QbKXeaAbKsfHh3eddBIIc1111', '[{\"type\":\"select\",\"required\":false,\"label\":\"假期类型\",\"className\":\"form-control\",\"name\":\"select-1688286348302-0\",\"access\":false,\"multiple\":false,\"values\":[{\"label\":\"年假\",\"value\":\"年假\",\"selected\":true},{\"label\":\"季度假\",\"value\":\"季度假\",\"selected\":false},{\"label\":\"事假\",\"value\":\"事假\",\"selected\":false},{\"label\":\"带薪事假\",\"value\":\"带薪事假\",\"selected\":false},{\"label\":\"病假\",\"value\":\"病假\",\"selected\":false},{\"label\":\"产假\",\"value\":\"产假\",\"selected\":false},{\"label\":\"婚假\",\"value\":\"婚假\",\"selected\":false},{\"label\":\"陪产假\",\"value\":\"陪产假\",\"selected\":false},{\"label\":\"丧假\",\"value\":\"丧假\",\"selected\":false},{\"label\":\"调休假\",\"value\":\"调休假\",\"selected\":false},{\"label\":\"哺乳假\",\"value\":\"哺乳假\",\"selected\":false}]},{\"type\":\"date\",\"required\":false,\"label\":\"开始时间\",\"className\":\"form-control\",\"name\":\"date-1688286517077-0\",\"access\":false},{\"type\":\"date\",\"required\":false,\"label\":\"结束时间\",\"className\":\"form-control\",\"name\":\"date-1688286528533-0\",\"access\":false},{\"type\":\"number\",\"required\":false,\"label\":\"请假天数\",\"className\":\"form-control\",\"name\":\"number-1688286545786-0\",\"access\":false},{\"type\":\"textarea\",\"required\":false,\"label\":\"请假理由\",\"className\":\"form-control\",\"name\":\"textarea-1688286560713-0\",\"access\":false,\"subtype\":\"textarea\"}]', 'select-1688286348302-0@假期类型&date-1688286517077-0@开始时间&date-1688286528533-0@结束时间&number-1688286545786-0@请假天数&textarea-1688286560713-0@请假理由', 'mdi-bag-suitcase', '1', '[{\"text\":\"1_topdepartmentresponser_直属上级部门负责人\"}]', '1'), ('30', '<form-template xmlns=\"http://www.w3.org/1999/xhtml\"><fields><field type=\"select\" required=\"false\" label=\"报销类型\" class-name=\"form-control\" name=\"select-1688287102507-0\" access=\"false\" multiple=\"false\"><option label=\"差旅费\" value=\"差旅费\" selected=\"selected\">差旅费</option><option label=\"住宿费\" value=\"住宿费\">住宿费</option><option label=\"交通费\" value=\"交通费\">交通费</option><option label=\"招待费\" value=\"招待费\">招待费</option><option label=\"团建费\" value=\"团建费\">团建费</option><option label=\"通讯费\" value=\"通讯费\">通讯费</option></field><field type=\"number\" required=\"false\" label=\"报销金额\" class-name=\"form-control\" name=\"number-1688287208206-0\" access=\"false\"></field><field type=\"textarea\" required=\"false\" label=\"报销理由\" class-name=\"form-control\" name=\"textarea-1688287220957-0\" access=\"false\" subtype=\"textarea\"></field></fields></form-template>', 'xmksTEt1reAeZuXIIiY54jn1QbKXeaAbKsfHh3eddBIIc', 'g3cf93v7uq2ymht0z505a35wh7d8fss9u6kz57aech3fv1oe7k', '费用报销', '46idvd23p68ly6y33p3675p4egg94i8x0hvac5eptq4cw9v75g', '[{\"type\":\"select\",\"required\":false,\"label\":\"报销类型\",\"className\":\"form-control\",\"name\":\"select-1688287102507-0\",\"access\":false,\"multiple\":false,\"values\":[{\"label\":\"差旅费\",\"value\":\"差旅费\",\"selected\":true},{\"label\":\"住宿费\",\"value\":\"住宿费\",\"selected\":false},{\"label\":\"交通费\",\"value\":\"交通费\",\"selected\":false},{\"label\":\"招待费\",\"value\":\"招待费\",\"selected\":false},{\"label\":\"团建费\",\"value\":\"团建费\",\"selected\":false},{\"label\":\"通讯费\",\"value\":\"通讯费\",\"selected\":false}]},{\"type\":\"number\",\"required\":false,\"label\":\"报销金额\",\"className\":\"form-control\",\"name\":\"number-1688287208206-0\",\"access\":false},{\"type\":\"textarea\",\"required\":false,\"label\":\"报销理由\",\"className\":\"form-control\",\"name\":\"textarea-1688287220957-0\",\"access\":false,\"subtype\":\"textarea\"}]', 'select-1688287102507-0@报销类型&number-1688287208206-0@报销金额&textarea-1688287220957-0@报销理由', 'mdi-currency-cny', '1', '[{\"text\":\"1_topdepartmentresponser_直属上级部门负责人\"}]', '1'), ('32', '<form-template xmlns=\"http://www.w3.org/1999/xhtml\"><fields><field type=\"text\" required=\"false\" label=\"对方公司名称\" class-name=\"form-control\" name=\"text-1688287545760-0\" access=\"false\" subtype=\"text\"></field><field type=\"text\" required=\"false\" label=\"对方公司银行名称\" class-name=\"form-control\" name=\"text-1688287607692-0\" access=\"false\" subtype=\"text\"></field><field type=\"text\" required=\"false\" label=\"对方银行账号\" class-name=\"form-control\" name=\"text-1688287636424-0\" access=\"false\" subtype=\"text\"></field><field type=\"textarea\" required=\"false\" label=\"付款理由\" class-name=\"form-control\" name=\"textarea-1688287314468-0\" access=\"false\" subtype=\"textarea\"></field><field type=\"number\" required=\"false\" label=\"付款金额\" class-name=\"form-control\" name=\"number-1688287336747-0\" access=\"false\"></field><field type=\"select\" required=\"false\" label=\"付款方式\" class-name=\"form-control\" name=\"select-1688287359983-0\" access=\"false\" multiple=\"false\"><option label=\"现金\" value=\"现金\" selected=\"selected\">现金</option><option label=\"银行卡\" value=\"银行卡\">银行卡</option><option label=\"支票\" value=\"支票\">支票</option><option label=\"电汇\" value=\"电汇\">电汇</option><option label=\"汇票\" value=\"汇票\">汇票</option><option label=\"贷记\" value=\"贷记\">贷记</option></field><field type=\"date\" required=\"false\" label=\"要求付款日期\" class-name=\"form-control\" name=\"date-1688287461799-0\" access=\"false\"></field></fields></form-template>', 'xmksTEt1reAeZuXIIiY54jn1QbKXeaAbKsfHh3eddBIIc', 'xhf8hzq0h28skfsvea3egqv212pjph9fj547lhd6cg6qcs7bkb', '对公转账', '46idvd23p68ly6y33p3675p4egg94i8x0hvac5eptq4cw9v75g', '[{\"type\":\"text\",\"required\":false,\"label\":\"对方公司名称\",\"className\":\"form-control\",\"name\":\"text-1688287545760-0\",\"access\":false,\"subtype\":\"text\"},{\"type\":\"text\",\"required\":false,\"label\":\"对方公司银行名称\",\"className\":\"form-control\",\"name\":\"text-1688287607692-0\",\"access\":false,\"subtype\":\"text\"},{\"type\":\"text\",\"required\":false,\"label\":\"对方银行账号\",\"className\":\"form-control\",\"name\":\"text-1688287636424-0\",\"access\":false,\"subtype\":\"text\"},{\"type\":\"textarea\",\"required\":false,\"label\":\"付款理由\",\"className\":\"form-control\",\"name\":\"textarea-1688287314468-0\",\"access\":false,\"subtype\":\"textarea\"},{\"type\":\"number\",\"required\":false,\"label\":\"付款金额\",\"className\":\"form-control\",\"name\":\"number-1688287336747-0\",\"access\":false},{\"type\":\"select\",\"required\":false,\"label\":\"付款方式\",\"className\":\"form-control\",\"name\":\"select-1688287359983-0\",\"access\":false,\"multiple\":false,\"values\":[{\"label\":\"现金\",\"value\":\"现金\",\"selected\":true},{\"label\":\"银行卡\",\"value\":\"银行卡\",\"selected\":false},{\"label\":\"支票\",\"value\":\"支票\",\"selected\":false},{\"label\":\"电汇\",\"value\":\"电汇\",\"selected\":false},{\"label\":\"汇票\",\"value\":\"汇票\",\"selected\":false},{\"label\":\"贷记\",\"value\":\"贷记\",\"selected\":false}]},{\"type\":\"date\",\"required\":false,\"label\":\"要求付款日期\",\"className\":\"form-control\",\"name\":\"date-1688287461799-0\",\"access\":false}]', 'text-1688287545760-0@对方公司名称&text-1688287607692-0@对方公司银行名称&text-1688287636424-0@对方银行账号&textarea-1688287314468-0@付款理由&number-1688287336747-0@付款金额&select-1688287359983-0@付款方式&date-1688287461799-0@要求付款日期', 'mdi-currency-cny', '1', '[{\"text\":\"1_topdepartmentresponser_直属上级部门负责人\"}]', '1');
COMMIT;

-- ----------------------------
--  Table structure for `tw_approval`
-- ----------------------------
DROP TABLE IF EXISTS `tw_approval`;
CREATE TABLE `tw_approval` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `groupcode` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `approval_text` text COLLATE utf8_unicode_ci,
  `sender_code` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `send_time` datetime DEFAULT NULL,
  `sender_name` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL,
  `category` varchar(100) COLLATE utf8_unicode_ci DEFAULT '0',
  `uniquecode` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL,
  `category_name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `current_statue` int(5) DEFAULT '0' COMMENT '0:进行中,-1:已拒绝,1已完成',
  `importance` tinyint(5) DEFAULT NULL,
  `approval_title` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL,
  `dead_line` datetime DEFAULT NULL,
  `projectcode` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `taskcode` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `current_approval_step` int(10) DEFAULT '0',
  `current_checker_code` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `current_checker_name` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `template_code` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

-- ----------------------------
--  Table structure for `tw_appsmarket`
-- ----------------------------
DROP TABLE IF EXISTS `tw_appsmarket`;
CREATE TABLE `tw_appsmarket` (
  `id` int(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) DEFAULT NULL,
  `group` varchar(200) DEFAULT NULL COMMENT '公司代码',
  `appkey` varchar(20) DEFAULT NULL,
  `license` varchar(200) DEFAULT NULL COMMENT '项目分组',
  `price` varchar(20) DEFAULT NULL,
  `image` varchar(100) DEFAULT NULL,
  `introdution` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

-- ----------------------------
--  Records of `tw_appsmarket`
-- ----------------------------
BEGIN;
INSERT INTO `tw_appsmarket` VALUES ('1', '流程审批', 'xmksTEt1reAeZuXIIiY54jn1QbKXeaAbKsfHh3eddBIIc', 'approval', '', '840', '/public/static/approval/approve.png', 'https://blog.whatssaas.com/archives/liu-cheng-shen-pi-jie-shao'), ('2', '项目账单', 'xmksTEt1reAeZuXIIiY54jn1QbKXeaAbKsfHh3eddBIIc', 'projectbills', '', '168', '/public/static/project/financial.png', null);
COMMIT;

-- ----------------------------
--  Table structure for `tw_bills`
-- ----------------------------
DROP TABLE IF EXISTS `tw_bills`;
CREATE TABLE `tw_bills` (
  `id` int(20) NOT NULL AUTO_INCREMENT,
  `operator` varchar(100) CHARACTER SET utf8 DEFAULT NULL,
  `group` varchar(200) CHARACTER SET utf8 DEFAULT NULL COMMENT '公司代码',
  `category` tinyint(1) DEFAULT NULL,
  `categoryname` varchar(50) CHARACTER SET utf8 DEFAULT NULL,
  `money` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
  `description` text CHARACTER SET utf8,
  `updatetime` datetime DEFAULT NULL,
  `projectcode` varchar(100) CHARACTER SET utf8 DEFAULT NULL,
  `taskcode` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


-- ----------------------------
--  Table structure for `tw_billtype`
-- ----------------------------
DROP TABLE IF EXISTS `tw_billtype`;
CREATE TABLE `tw_billtype` (
  `id` int(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) DEFAULT NULL,
  `group` varchar(200) DEFAULT NULL COMMENT '公司代码',
  `category` tinyint(1) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

V2.1.1(稳定版下载)

重磅更新

支持项目自定义任务字段,用户可根据自身业务需求,在基础字段之上新增额外的自定义字段来适配自己公司的业务需求

image-1685335328113
image-1685335440229
image-1685335605248
数据库更新,2.0.0 或2.0.1 升级到2.1.1需要更新下面sql语句

DROP TABLE IF EXISTS `tw_project_settaskfields`;
CREATE TABLE `tw_project_settaskfields` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `xmldata` longtext,
  `groupcode` varchar(200) DEFAULT NULL COMMENT '公司代码',
  `projectcode` varchar(200) DEFAULT NULL,
  `jsondata` text,
  `filekeyvalue` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8;


ALTER TABLE `tw_task` ADD COLUMN `customfieldsvalue` longtext DEFAULT NULL;
ALTER TABLE `tw_task` ADD COLUMN `formserialize` longtext DEFAULT NULL;

V2.0

新增

1.支持DWG格式文件在线预览(需从配置conf文件中打开或关闭)

2.支持中文名登录

3.项目和任务支持表格视图,甘特图视图

4.项目和任务人员支持批量选择

5.项目设置关联项目

6.项目和任务详情新增日志面板

7.项目和任务支持多文件同时上传

8.项目支持通过标签过滤

9.项目可配置 任务人员是否自动跟随项目成员

10.项目支持查看父级下所有子级项目

11.任务看板添加开始时间和结束时间

12.任务阶段标题支持排序

13.聊天记录 管理员可删除

14.任务标记为结束优化

15.网盘图片可预览小图

修复

1.添加成员时需要刷新才能选择职位

2.任务进度条是否有bug,增加任务结束时间标记,任务结束后,进度条按结束时间计算

3.修正删除任务描述提示更友好

4.网盘文件设置权限-bug

1.9升2.0 用户需要跟新数据库 请参考以下的数据库增量更新部分

DROP TABLE IF EXISTS `tw_project_relateproject`;
CREATE TABLE `tw_project_relateproject` (
  `id` int(20) NOT NULL AUTO_INCREMENT,
  `relateprojectcode` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `groupcode` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `projectcode` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `url` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL,
  `creator` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `is_preproject` tinyint(4) DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `searchindex` (`relateprojectcode`,`name`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE `tw_tags` ADD COLUMN `clicktimes` int(5);
ALTER TABLE `tw_project` ADD COLUMN `taskmembersfollow` int(2) DEFAULT 0;

V1.9(Alpha测试阶段,开放下载)

新增

1.企业网盘多级目录导航支持

2.支持多管理员配置

image

优化

1.默认启动语言为中文

2.企业网文件夹分享后支持继续查看子文件夹和文件

3.企业网盘创建文件后自动刷新显示

4.操作日志查看只开放给管理员

5.网盘文件权限新增创建文件夹权限并授权

6.项目分类支持无限子层级

7.项目增加未开始状态栏

image-1682754783666

8.项目开始日期更改为用户自定义,不再默认为创建项目日期

9.任务搜索视图修复,支持自定义将搜索条件设置为视图,方便用户快速定位任务

image-1682755068333
image-1682755088992

10.任务紧急程度可配置

image-1682755166619

11.文件预览服务插件升级,PDF预览时用户无法下载和打印,右击保存,MP3,MP4等文件也可以直接播放

12.文件分享升级,支持复制链接,支持设置分享有效期,生成随机密码

image-1682755507462
image-1682755536263

13. 数据面板 项目部分小优化,统计进行中的项目和总项目数,可直接跳转到项目界面

image-1682755435543

1.8用户升级到1.9,请增量更新下面数据库

数据库升级
ALTER TABLE tw_project_group ADD COLUMN pid int DEFAULT 0;

app.conf 配置文件不需要升级,其他文件直接覆盖

V1.8(Alpha测试阶段,已开放下载)

1.支持部门设置部门负责人
2.支持设置子部门,不限层级
3.文件系统左侧支持加入多选框支持多选操作
4.OKR支持按标题搜索
5.修复一些已知的BUG
若你为版本升级,请根据你当前版本的版本号增量去升级数据库到最新
–v1.8
ALTER TABLE tw_project ADD INDEX searchindex (uniquecode, name) comment ‘’;
ALTER TABLE tw_task ADD INDEX searchindex (uniquecode, name) comment ‘’;
ALTER TABLE tw_disk DROP INDEX name, ADD INDEX name USING BTREE (name, uniquecode) comment ‘’;
ALTER TABLE tw_project_files ADD INDEX searchindex (uniquecode, name) comment ‘’;
ALTER TABLE tw_task_files ADD INDEX searchindex (uniquecode, name) comment ‘’;
ALTER TABLE tw_department ADD COLUMN tag varchar(50) AFTER headername;

V1.7.1

修复一些bug
update tw_department set parent_id=‘0’;
ALTER TABLE tw_department ADD COLUMN headercode varchar(100) COMMENT ‘部门负责人编码’ AFTER space_used, ADD COLUMN headername varchar(100) COMMENT ‘部门负责人姓名’ AFTER headercode;

V1.7

1.支持部门设置空间限制,支持统计所有员工空间使用情况和总使用情况
2.支持文件另存为历史版本
3.支持从历史版本恢复文件
4.支持锁定文件
5.员工信息支持手机和工号
6.支持批量导入,导出员工资料

v1.6升v.1.7用户注意查看whatsaas.sql文件 更新增量sql语句 并更新语言文件,更新静态文件

V1.6

1.支持在线创建word和excel文件(需onlyoffice组件支持)
2.优化上传,支持进度条显示
3.支持文档模版,你可以将文档保存为模版,供下次直接从模版文件中创建文件

V1.5.1升V1.6用户,请查看whatsaas.sql文件 更新增量sql语句 并更新语言文件

V1.5.1

1.增强日志描述,可以清晰知道内容的变化情况

2.日志支持按日志类型,时间断等条件搜索和导出
3.修复一些已知的bugs
V1.5升V1.5.1 需升级数据库,更新语言包文件,静态文件可直接覆盖
– V1.5.1版本 更新增强日志功能,增加文件更改记录
ALTER TABLE tw_actionlogs CHANGE COLUMN action_detail action_detail text CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, ADD COLUMN action_type tinyint(3) AFTER action_man;
ALTER TABLE tw_actionlogs ADD COLUMN parent_topcode varchar(100) AFTER action_type, ADD COLUMN parent_subcode varchar(100) AFTER parent_topcode;
ALTER TABLE tw_actionlogs CHANGE COLUMN id id bigint(20) NOT NULL AUTO_INCREMENT;
ALTER TABLE tw_member CHANGE COLUMN enable_mfa enable_mfa varchar(3) DEFAULT NULL;

V1.5

1:支持多因子登陆验证,有效保证系统安全
2:支持纯离线验证,无需连接任何外网

3:若你为1.4.1升1.5用户,需要更新数据库,并更新多语言文件,更新配置文件
– 2022-11-29 部门增加子部门属性,增加MFA 认证,员工工号,手机
ALTER TABLE tw_department ADD COLUMN parent_id int(11) AFTER uniquecode;
ALTER TABLE tw_member ADD COLUMN enable_mfa int(3) AFTER department, ADD COLUMN mfa_table text AFTER enable_mfa;
ALTER TABLE tw_member ADD COLUMN employee_code varchar(100) AFTER mfa_table, ADD COLUMN mobile varchar(50) AFTER employee_code;

V1.4.1

支持离职人员一键将项目,任务,文件等归属转交给其他同事。
更新文件图标识,让文件更加容易识别
修复若干BUGS
若你为1.4升1.4.1用户,需要更新数据库,并更新多语言文件


– 2022-11-25 更改system_path 为text 字段


ALTER TABLE tw_disk CHANGE COLUMN system_path system_path text CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL;

V1.4

支持文档在线预览和编辑。备注:需自行安装onlyoffice document server,安装过程较为复杂,需要较强的服务器环境搭建能力。可以自行百度或去onlyoffice官网,官网有手把手安装教程。
若你为v1.3升1.4的用户,需要更新一下数据库字段
ALTER TABLE tw_project_files ADD COLUMN update_date datetime AFTER type;
ALTER TABLE tw_task_files ADD COLUMN update_date datetime AFTER from;