Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/新增采购权限组
This commit is contained in:
@@ -135,7 +135,7 @@ td.o_required_modifier {
|
|||||||
.text-truncate {
|
.text-truncate {
|
||||||
overflow: unset !important;
|
overflow: unset !important;
|
||||||
text-overflow: unset !important;
|
text-overflow: unset !important;
|
||||||
white-space: unset !important;
|
white-space: nowrap!important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.o_list_renderer .o_list_table tbody > tr > td:not(.o_list_record_selector):not(.o_handle_cell):not(.o_list_button):not(.o_list_record_remove) {
|
.o_list_renderer .o_list_table tbody > tr > td:not(.o_list_record_selector):not(.o_handle_cell):not(.o_list_button):not(.o_list_record_remove) {
|
||||||
@@ -370,9 +370,16 @@ div:has(.o_required_modifier) > label::before {
|
|||||||
top: 40px;
|
top: 40px;
|
||||||
left: 168px;
|
left: 168px;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
box-sizing: border-box;
|
||||||
.row {
|
.row {
|
||||||
|
width: 50%;
|
||||||
|
margin: 0;
|
||||||
>div {
|
>div {
|
||||||
|
padding: 0;
|
||||||
width: unset;
|
width: unset;
|
||||||
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -23,7 +23,7 @@ html .o_web_client > .o_action_manager > .o_action {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.o_form_view {
|
.o_form_view {
|
||||||
background-color: unset !important;
|
//background-color: unset !important;
|
||||||
min-height: unset !important;
|
min-height: unset !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import os
|
|||||||
from odoo import models, fields, api, _
|
from odoo import models, fields, api, _
|
||||||
from odoo.exceptions import ValidationError
|
from odoo.exceptions import ValidationError
|
||||||
from odoo.modules import get_resource_path
|
from odoo.modules import get_resource_path
|
||||||
from OCC.Extend.DataExchange import read_step_file
|
# from OCC.Extend.DataExchange import read_step_file
|
||||||
from OCC.Extend.DataExchange import write_stl_file
|
# from OCC.Extend.DataExchange import write_stl_file
|
||||||
|
|
||||||
|
|
||||||
class ResProductMo(models.Model):
|
class ResProductMo(models.Model):
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
# 此处依赖sf_manufacturing是因为我要重写其中的一个字段operation_id的string,故需要sf_manufacturing先安装
|
# 此处依赖sf_manufacturing是因为我要重写其中的一个字段operation_id的string,故需要sf_manufacturing先安装
|
||||||
'depends': ['quality_control', 'sf_manufacturing'],
|
'depends': ['quality_control', 'sf_manufacturing'],
|
||||||
'data': [
|
'data': [
|
||||||
|
'security/ir.model.access.csv',
|
||||||
'views/view.xml'
|
'views/view.xml'
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|||||||
@@ -10,5 +10,14 @@ class SfQualityPoint(models.Model):
|
|||||||
domain="[('type', 'in', "
|
domain="[('type', 'in', "
|
||||||
"('product', 'consu')), '|', ('company_id', '=', False), ('company_id', '=', company_id)]", help=
|
"('product', 'consu')), '|', ('company_id', '=', False), ('company_id', '=', company_id)]", help=
|
||||||
"Quality Point will apply to every selected Products.")
|
"Quality Point will apply to every selected Products.")
|
||||||
|
|
||||||
|
check_state = fields.Selection([
|
||||||
|
('enable', '启用'),
|
||||||
|
('close', '关闭')
|
||||||
|
], string='审核状态', default='close')
|
||||||
|
|
||||||
|
# 审核
|
||||||
|
def action_check(self):
|
||||||
|
self.check_state = 'enable'
|
||||||
# picking_type_ids = fields.Many2many(
|
# picking_type_ids = fields.Many2many(
|
||||||
# 'stock.picking.type', string='执行节点', required=True, check_company=True)
|
# 'stock.picking.type', string='执行节点', required=True, check_company=True)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||||
access_quality_point_group_quality,quality_point_group_quality,quality.model_quality_point,sf_base.group_quality,1,0,0,0
|
access_quality_point_group_quality,quality_point_group_quality,quality.model_quality_point,sf_base.group_quality,1,1,1,0
|
||||||
access_quality_point_group_quality_director,quality_point_group_quality_director,quality.model_quality_point,sf_base.group_quality_director,1,1,1,0
|
access_quality_point_group_quality_director,quality_point_group_quality_director,quality.model_quality_point,sf_base.group_quality_director,1,1,0,0
|
||||||
access_quality_point_group_plan_dispatch,quality_point_group_plan_dispatch,quality.model_quality_point,sf_base.group_plan_dispatch,1,0,0,0
|
access_quality_point_group_plan_dispatch,quality_point_group_plan_dispatch,quality.model_quality_point,sf_base.group_plan_dispatch,1,0,0,0
|
||||||
access_quality_point_group_plan_director,quality_point_group_plan_director,quality.model_quality_point,sf_base.group_plan_director,1,0,0,0
|
access_quality_point_group_plan_director,quality_point_group_plan_director,quality.model_quality_point,sf_base.group_plan_director,1,0,0,0
|
||||||
access_quality_point_group_sf_equipment_user,quality_point_group_sf_equipment_user,quality.model_quality_point,sf_base.group_sf_equipment_user,1,0,0,0
|
access_quality_point_group_sf_equipment_user,quality_point_group_sf_equipment_user,quality.model_quality_point,sf_base.group_sf_equipment_user,1,0,0,0
|
||||||
@@ -8,7 +8,7 @@ access_quality_point_group_sf_tool_user,quality_point_group_sf_tool_user,quality
|
|||||||
access_quality_point_group_sf_order_user,quality_point_group_sf_order_user,quality.model_quality_point,sf_base.group_sf_order_user,1,0,0,0
|
access_quality_point_group_sf_order_user,quality_point_group_sf_order_user,quality.model_quality_point,sf_base.group_sf_order_user,1,0,0,0
|
||||||
access_quality_point_group_sf_mrp_manager,quality_point_group_sf_mrp_manager,quality.model_quality_point,sf_base.group_sf_mrp_manager,1,0,0,0
|
access_quality_point_group_sf_mrp_manager,quality_point_group_sf_mrp_manager,quality.model_quality_point,sf_base.group_sf_mrp_manager,1,0,0,0
|
||||||
|
|
||||||
access_quality_check_group_quality,quality_check_group_quality,quality.model_quality_check,sf_base.group_quality,1,0,0,0
|
access_quality_check_group_quality,quality_check_group_quality,quality.model_quality_check,sf_base.group_quality,1,1,1,0
|
||||||
access_quality_check_group_quality_director,quality_check_group_quality_director,quality.model_quality_check,sf_base.group_quality_director,1,1,1,0
|
access_quality_check_group_quality_director,quality_check_group_quality_director,quality.model_quality_check,sf_base.group_quality_director,1,1,1,0
|
||||||
access_quality_check_group_plan_dispatch,quality_check_group_plan_dispatch,quality.model_quality_check,sf_base.group_plan_dispatch,1,0,0,0
|
access_quality_check_group_plan_dispatch,quality_check_group_plan_dispatch,quality.model_quality_check,sf_base.group_plan_dispatch,1,0,0,0
|
||||||
access_quality_check_group_plan_director,quality_check_group_plan_director,quality.model_quality_check,sf_base.group_plan_director,1,0,0,0
|
access_quality_check_group_plan_director,quality_check_group_plan_director,quality.model_quality_check,sf_base.group_plan_director,1,0,0,0
|
||||||
@@ -19,7 +19,7 @@ access_quality_check_group_sf_mrp_manager,quality_check_group_sf_mrp_manager,qua
|
|||||||
access_quality_check_group_equipment_user,quality_check_group_equipment_user,quality.model_quality_check,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
access_quality_check_group_equipment_user,quality_check_group_equipment_user,quality.model_quality_check,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
access_quality_check_group_equipment_manager,quality_check_group_equipment_manager,quality.model_quality_check,sf_maintenance.sf_group_equipment_manager,1,0,0,0
|
access_quality_check_group_equipment_manager,quality_check_group_equipment_manager,quality.model_quality_check,sf_maintenance.sf_group_equipment_manager,1,0,0,0
|
||||||
|
|
||||||
access_quality_alert_group_quality,quality_alert_group_quality,quality.model_quality_alert,sf_base.group_quality,1,0,0,0
|
access_quality_alert_group_quality,quality_alert_group_quality,quality.model_quality_alert,sf_base.group_quality,1,1,1,0
|
||||||
access_quality_alert_group_quality_director,quality_alert_group_quality_director,quality.model_quality_alert,sf_base.group_quality_director,1,1,1,0
|
access_quality_alert_group_quality_director,quality_alert_group_quality_director,quality.model_quality_alert,sf_base.group_quality_director,1,1,1,0
|
||||||
access_quality_alert_group_plan_dispatch,quality_alert_group_plan_dispatch,quality.model_quality_alert,sf_base.group_plan_dispatch,1,0,0,0
|
access_quality_alert_group_plan_dispatch,quality_alert_group_plan_dispatch,quality.model_quality_alert,sf_base.group_plan_dispatch,1,0,0,0
|
||||||
access_quality_alert_group_plan_director,quality_alert_group_plan_director,quality.model_quality_alert,sf_base.group_plan_director,1,0,0,0
|
access_quality_alert_group_plan_director,quality_alert_group_plan_director,quality.model_quality_alert,sf_base.group_plan_director,1,0,0,0
|
||||||
@@ -30,8 +30,8 @@ access_quality_alert_group_sf_mrp_manager,quality_alert_group_sf_mrp_manager,qua
|
|||||||
access_quality_alert_group_equipment_user,quality_alert_group_equipment_user,quality.model_quality_alert,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
access_quality_alert_group_equipment_user,quality_alert_group_equipment_user,quality.model_quality_alert,sf_maintenance.sf_group_equipment_user,1,0,0,0
|
||||||
access_quality_alert_group_equipment_manager,quality_alert_group_equipment_manager,quality.model_quality_alert,sf_maintenance.sf_group_equipment_manager,1,0,0,0
|
access_quality_alert_group_equipment_manager,quality_alert_group_equipment_manager,quality.model_quality_alert,sf_maintenance.sf_group_equipment_manager,1,0,0,0
|
||||||
|
|
||||||
access_quality_alert_team_group_quality,quality_alert_team_group_quality,quality.model_quality_alert_team,sf_base.group_quality,1,0,0,0
|
access_quality_alert_team_group_quality,quality_alert_team_group_quality,quality.model_quality_alert_team,sf_base.group_quality,1,1,1,0
|
||||||
access_quality_alert_team_group_quality_director,quality_alert_team_group_quality_director,quality.model_quality_alert_team,sf_base.group_quality_director,1,1,1,0
|
access_quality_alert_team_group_quality_director,quality_alert_team_group_quality_director,quality.model_quality_alert_team,sf_base.group_quality_director,1,1,0,0
|
||||||
access_quality_alert_team_group_plan_dispatch,quality_alert_team_group_plan_dispatch,quality.model_quality_alert_team,sf_base.group_plan_dispatch,1,0,0,0
|
access_quality_alert_team_group_plan_dispatch,quality_alert_team_group_plan_dispatch,quality.model_quality_alert_team,sf_base.group_plan_dispatch,1,0,0,0
|
||||||
access_quality_alert_team_group_plan_director,quality_alert_team_group_plan_director,quality.model_quality_alert_team,sf_base.group_plan_director,1,0,0,0
|
access_quality_alert_team_group_plan_director,quality_alert_team_group_plan_director,quality.model_quality_alert_team,sf_base.group_plan_director,1,0,0,0
|
||||||
access_quality_alert_team_group_sf_equipment_user,quality_alert_team_group_sf_equipment_user,quality.model_quality_alert_team,sf_base.group_sf_equipment_user,1,0,0,0
|
access_quality_alert_team_group_sf_equipment_user,quality_alert_team_group_sf_equipment_user,quality.model_quality_alert_team,sf_base.group_sf_equipment_user,1,0,0,0
|
||||||
|
|||||||
|
@@ -31,4 +31,20 @@
|
|||||||
</p>
|
</p>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
<record model="ir.ui.view" id="quality_point_view_form_inherit_sf">
|
||||||
|
<field name="name">quality.point.form.inherit.sf</field>
|
||||||
|
<field name="model">quality.point</field>
|
||||||
|
<field name="inherit_id" ref="quality_control.quality_point_view_form_inherit_quality_control"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<xpath expr="//form" position="inside">
|
||||||
|
<header>
|
||||||
|
<field name="check_state" invisible="1"/>
|
||||||
|
<button name="action_check" string="审核" type="object"
|
||||||
|
attrs="{'invisible': [('check_state','=', 'enable')]}"
|
||||||
|
class="oe_highlight"/>
|
||||||
|
</header>
|
||||||
|
</xpath>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
</odoo>
|
</odoo>
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
from . import sale_order
|
from . import sale_order
|
||||||
from . import quick_easy_order
|
from . import quick_easy_order
|
||||||
#from . import auto_quatotion_common
|
from . import auto_quatotion_common
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
import logging
|
import logging
|
||||||
from odoo.modules import get_resource_path
|
from odoo.modules import get_resource_path
|
||||||
from odoo import fields, models, api
|
from odoo import fields, models, api
|
||||||
from quatotion import readSql, feature_recognize, auto_quatotion
|
# from quatotion import readSql, feature_recognize, auto_quatotion
|
||||||
|
|
||||||
__author__ = 'jinling.yang'
|
__author__ = 'jinling.yang'
|
||||||
_logger = logging.getLogger(__name__)
|
_logger = logging.getLogger(__name__)
|
||||||
@@ -24,14 +24,14 @@ class AutoQuatotion(models.Model):
|
|||||||
def get_process_time_db_path(self):
|
def get_process_time_db_path(self):
|
||||||
return get_resource_path('sf_sale', 'models', 'process_time.db')
|
return get_resource_path('sf_sale', 'models', 'process_time.db')
|
||||||
|
|
||||||
def get_auto_quatotion(self, stp_url, feature_full_path, process_time_db_path, model_code):
|
# def get_auto_quatotion(self, stp_url, feature_full_path, process_time_db_path, model_code):
|
||||||
'''
|
# '''
|
||||||
通过打包好的.so库,
|
# 通过打包好的.so库,
|
||||||
以调用autoQuatotion库中Quatotion类,
|
# 以调用autoQuatotion库中Quatotion类,
|
||||||
初始化后调用类的analyseShape方法对模型文件进行价格预测
|
# 初始化后调用类的analyseShape方法对模型文件进行价格预测
|
||||||
'''
|
# '''
|
||||||
# 初始化自动报价类(输入特征数据库和加工时间数据库)
|
# # 初始化自动报价类(输入特征数据库和加工时间数据库)
|
||||||
reader = auto_quatotion.Quatotion(feature_full_path, process_time_db_path)
|
# reader = auto_quatotion.Quatotion(feature_full_path, process_time_db_path)
|
||||||
# 获取价格、加工时间、尺寸、XYZ、翻面次数
|
# # 获取价格、加工时间、尺寸、XYZ、翻面次数
|
||||||
feature_info = reader.analyseShape(stp_url, InfoJson={})
|
# feature_info = reader.analyseShape(stp_url, InfoJson={})
|
||||||
return feature_info
|
# return feature_info
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ import os
|
|||||||
import json
|
import json
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
import requests
|
import requests
|
||||||
from OCC.Extend.DataExchange import read_step_file
|
# from OCC.Extend.DataExchange import read_step_file
|
||||||
from OCC.Extend.DataExchange import write_stl_file
|
# from OCC.Extend.DataExchange import write_stl_file
|
||||||
from odoo import models, fields, api
|
from odoo import models, fields, api
|
||||||
from odoo.modules import get_resource_path
|
from odoo.modules import get_resource_path
|
||||||
from odoo.exceptions import ValidationError, UserError
|
from odoo.exceptions import ValidationError, UserError
|
||||||
|
|||||||
@@ -221,7 +221,15 @@ export default AbstractModel.extend({
|
|||||||
this.ganttData.groupedBy = this.defaultGroupBy;
|
this.ganttData.groupedBy = this.defaultGroupBy;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const time = sessionStorage.getItem('time')
|
||||||
|
const scale = sessionStorage.getItem('scale')
|
||||||
|
if(time) {
|
||||||
|
this._setRange(moment(time), scale);
|
||||||
|
console.log('进入自定义时间')
|
||||||
|
}
|
||||||
return this._fetchData().then(() => {
|
return this._fetchData().then(() => {
|
||||||
|
sessionStorage.removeItem('time')
|
||||||
|
sessionStorage.removeItem('scale')
|
||||||
// The 'reload' function returns a promise which resolves with the
|
// The 'reload' function returns a promise which resolves with the
|
||||||
// handle to pass to the 'get' function to access the data. In this
|
// handle to pass to the 'get' function to access the data. In this
|
||||||
// case, we don't want to pass any argument to 'get' (see its API).
|
// case, we don't want to pass any argument to 'get' (see its API).
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ var Widget = require('web.Widget');
|
|||||||
const pyUtils = require('web.py_utils');
|
const pyUtils = require('web.py_utils');
|
||||||
let pyUtilsContext = null;
|
let pyUtilsContext = null;
|
||||||
const fieldUtils = require('web.field_utils');
|
const fieldUtils = require('web.field_utils');
|
||||||
|
|
||||||
var QWeb = core.qweb;
|
var QWeb = core.qweb;
|
||||||
var _t = core._t;
|
var _t = core._t;
|
||||||
|
|
||||||
@@ -22,6 +21,9 @@ var GanttRow = Widget.extend({
|
|||||||
'click': '_onRowSidebarClicked',
|
'click': '_onRowSidebarClicked',
|
||||||
'click .o_gantt_cell_buttons > div > .o_gantt_cell_add': '_onButtonAddClicked',
|
'click .o_gantt_cell_buttons > div > .o_gantt_cell_add': '_onButtonAddClicked',
|
||||||
'click .o_gantt_cell_buttons > div > .o_gantt_cell_plan': '_onButtonPlanClicked',
|
'click .o_gantt_cell_buttons > div > .o_gantt_cell_plan': '_onButtonPlanClicked',
|
||||||
|
'mousewheel .o_gantt_hoverable': '_onColMouseWheel',
|
||||||
|
'click .o_gantt_hoverable': '_onColClicked',
|
||||||
|
|
||||||
},
|
},
|
||||||
NB_GANTT_RECORD_COLORS: 12,
|
NB_GANTT_RECORD_COLORS: 12,
|
||||||
LEVEL_LEFT_OFFSET: 16, // 16 px per level
|
LEVEL_LEFT_OFFSET: 16, // 16 px per level
|
||||||
@@ -144,7 +146,7 @@ var GanttRow = Widget.extend({
|
|||||||
}
|
}
|
||||||
this._super();
|
this._super();
|
||||||
},
|
},
|
||||||
|
|
||||||
//--------------------------------------------------------------------------
|
//--------------------------------------------------------------------------
|
||||||
// Public
|
// Public
|
||||||
//--------------------------------------------------------------------------
|
//--------------------------------------------------------------------------
|
||||||
@@ -261,18 +263,18 @@ var GanttRow = Widget.extend({
|
|||||||
_adaptPills: function () {
|
_adaptPills: function () {
|
||||||
var self = this;
|
var self = this;
|
||||||
var dateStartField = this.state.dateStartField;
|
var dateStartField = this.state.dateStartField;
|
||||||
console.log("dateStartField",dateStartField)
|
// console.log("dateStartField",dateStartField)
|
||||||
var dateStopField = this.state.dateStopField;
|
var dateStopField = this.state.dateStopField;
|
||||||
console.log("dateStopField",dateStopField)
|
// console.log("dateStopField",dateStopField)
|
||||||
var ganttStartDate = this.state.startDate;
|
var ganttStartDate = this.state.startDate;
|
||||||
console.log("ganttStartDate",ganttStartDate)
|
// console.log("ganttStartDate",ganttStartDate)
|
||||||
var ganttStopDate = this.state.stopDate;
|
var ganttStopDate = this.state.stopDate;
|
||||||
console.log("ganttStopDate",ganttStopDate)
|
// console.log("ganttStopDate",ganttStopDate)
|
||||||
this.pills.forEach(function (pill) {
|
this.pills.forEach(function (pill) {
|
||||||
var pillStartDate = self._convertToUserTime(pill[dateStartField]);
|
var pillStartDate = self._convertToUserTime(pill[dateStartField]);
|
||||||
console.log("pillStartDate",pillStartDate)
|
// console.log("pillStartDate",pillStartDate)
|
||||||
var pillStopDate = self._convertToUserTime(pill[dateStopField]);
|
var pillStopDate = self._convertToUserTime(pill[dateStopField]);
|
||||||
console.log("pillStopDate",pillStopDate)
|
// console.log("pillStopDate",pillStopDate)
|
||||||
if (pillStartDate < ganttStartDate) {
|
if (pillStartDate < ganttStartDate) {
|
||||||
pill.startDate = ganttStartDate;
|
pill.startDate = ganttStartDate;
|
||||||
pill.disableStartResize = true;
|
pill.disableStartResize = true;
|
||||||
@@ -469,19 +471,19 @@ var GanttRow = Widget.extend({
|
|||||||
// left = pill.startDate.diff(pill.startDate.clone().startOf('hour'), 'minutes');
|
// left = pill.startDate.diff(pill.startDate.clone().startOf('hour'), 'minutes');
|
||||||
left = pill.startDate.diff(pill.startDate.clone().startOf('day'), 'minutes') % (shift_time * 60);
|
left = pill.startDate.diff(pill.startDate.clone().startOf('day'), 'minutes') % (shift_time * 60);
|
||||||
|
|
||||||
console.log('left', left)
|
// console.log('left', left)
|
||||||
pill.leftMargin = (left / (shift_time * 60)) * 100;
|
pill.leftMargin = (left / (shift_time * 60)) * 100;
|
||||||
console.log('pill.leftMargin', pill.leftMargin)
|
// console.log('pill.leftMargin', pill.leftMargin)
|
||||||
diff = pill.stopDate.diff(pill.startDate, 'minutes');
|
diff = pill.stopDate.diff(pill.startDate, 'minutes');
|
||||||
console.log('diff', diff)
|
// console.log('diff', diff)
|
||||||
var gapSize = pill.stopDate.diff(pill.startDate, 'hours') - shift_time; // Eventually compensate border(s) width
|
var gapSize = pill.stopDate.diff(pill.startDate, 'hours') - shift_time; // Eventually compensate border(s) width
|
||||||
console.log('gapSize', gapSize)
|
// console.log('gapSize', gapSize)
|
||||||
widthPill = (diff / (shift_time * 60)) * 100;
|
widthPill = (diff / (shift_time * 60)) * 100;
|
||||||
console.log('widthPill', widthPill)
|
// console.log('widthPill', widthPill)
|
||||||
margin = pill.aggregatedPills ? 0 : 4;
|
margin = pill.aggregatedPills ? 0 : 4;
|
||||||
console.log('margin', margin)
|
// console.log('margin', margin)
|
||||||
pill.width = gapSize > 0 ? `calc(${widthPill}% + ${gapSize}px - ${margin}px)` : `calc(${widthPill}% - ${margin}px)`;
|
pill.width = gapSize > 0 ? `calc(${widthPill}% + ${gapSize}px - ${margin}px)` : `calc(${widthPill}% - ${margin}px)`;
|
||||||
console.log('pill.width', pill.width)
|
// console.log('pill.width', pill.width)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// left = pill.startDate.diff(pill.startDate.clone().startOf('hour'), 'minutes');
|
// left = pill.startDate.diff(pill.startDate.clone().startOf('hour'), 'minutes');
|
||||||
@@ -711,16 +713,16 @@ var GanttRow = Widget.extend({
|
|||||||
this.pills.forEach(function (currentPill) {
|
this.pills.forEach(function (currentPill) {
|
||||||
var skippedSlots = [];
|
var skippedSlots = [];
|
||||||
slotsToFill.some(function (currentSlot) {
|
slotsToFill.some(function (currentSlot) {
|
||||||
console.log('currentPill.startDate1111111111', currentPill)
|
// console.log('currentPill.startDate1111111111', currentPill)
|
||||||
// console.log('currentSlot.stop2222222222222', currentSlot.stop)
|
// console.log('currentSlot.stop2222222222222', currentSlot.stop)
|
||||||
var fitsInThisSlot = currentPill.startDate < currentSlot.stop;
|
var fitsInThisSlot = currentPill.startDate < currentSlot.stop;
|
||||||
console.log('fitsInThisSlot', fitsInThisSlot)
|
// console.log('fitsInThisSlot', fitsInThisSlot)
|
||||||
if (fitsInThisSlot) {
|
if (fitsInThisSlot) {
|
||||||
currentSlot.pills.push(currentPill);
|
currentSlot.pills.push(currentPill);
|
||||||
console.log('currentSlot.pills', currentSlot.pills)
|
// console.log('currentSlot.pills', currentSlot.pills)
|
||||||
} else {
|
} else {
|
||||||
skippedSlots.push(currentSlot);
|
skippedSlots.push(currentSlot);
|
||||||
console.log('skippedSlots', skippedSlots)
|
// console.log('skippedSlots', skippedSlots)
|
||||||
}
|
}
|
||||||
return fitsInThisSlot;
|
return fitsInThisSlot;
|
||||||
});
|
});
|
||||||
@@ -813,7 +815,7 @@ var GanttRow = Widget.extend({
|
|||||||
stop: slotStop,
|
stop: slotStop,
|
||||||
pills: [],
|
pills: [],
|
||||||
});
|
});
|
||||||
console.log('啊啊啊啊this啊啊啊啊.啊啊啊啊slots啊啊啊啊', this.slots)
|
// console.log('啊啊啊啊this啊啊啊啊.啊啊啊啊slots啊啊啊啊', this.slots)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
@@ -1161,6 +1163,8 @@ var GanttRow = Widget.extend({
|
|||||||
* @param {MouseEvent} ev
|
* @param {MouseEvent} ev
|
||||||
*/
|
*/
|
||||||
_onButtonAddClicked: function (ev) {
|
_onButtonAddClicked: function (ev) {
|
||||||
|
ev.stopPropagation()
|
||||||
|
ev.cancelBubble
|
||||||
var date = moment($(ev.currentTarget).closest('.o_gantt_cell').data('date'));
|
var date = moment($(ev.currentTarget).closest('.o_gantt_cell').data('date'));
|
||||||
this.trigger_up('add_button_clicked', {
|
this.trigger_up('add_button_clicked', {
|
||||||
date: date,
|
date: date,
|
||||||
@@ -1174,6 +1178,8 @@ var GanttRow = Widget.extend({
|
|||||||
* @param {MouseEvent} ev
|
* @param {MouseEvent} ev
|
||||||
*/
|
*/
|
||||||
_onButtonPlanClicked: function (ev) {
|
_onButtonPlanClicked: function (ev) {
|
||||||
|
ev.stopPropagation()
|
||||||
|
ev.cancelBubble
|
||||||
var date = moment($(ev.currentTarget).closest('.o_gantt_cell').data('date'));
|
var date = moment($(ev.currentTarget).closest('.o_gantt_cell').data('date'));
|
||||||
this.trigger_up('plan_button_clicked', {
|
this.trigger_up('plan_button_clicked', {
|
||||||
date: date,
|
date: date,
|
||||||
@@ -1246,6 +1252,8 @@ var GanttRow = Widget.extend({
|
|||||||
* @param {MouseEvent} ev
|
* @param {MouseEvent} ev
|
||||||
*/
|
*/
|
||||||
_onPillClicked: function (ev) {
|
_onPillClicked: function (ev) {
|
||||||
|
ev.stopPropagation()
|
||||||
|
ev.cancelBubble
|
||||||
if (!this.isGroup) {
|
if (!this.isGroup) {
|
||||||
this.trigger_up('pill_clicked', {
|
this.trigger_up('pill_clicked', {
|
||||||
target: $(ev.currentTarget),
|
target: $(ev.currentTarget),
|
||||||
@@ -1288,6 +1296,80 @@ var GanttRow = Widget.extend({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
// _getTimeSlot(scale = 'day', date = new Date()) {
|
||||||
|
// if(scale == 'day') {
|
||||||
|
// return [date, date]
|
||||||
|
// } else if(scale == 'week') {
|
||||||
|
//
|
||||||
|
// const week = new Date(date).getDay()
|
||||||
|
// const before = week - 1
|
||||||
|
// const after = 7 - week
|
||||||
|
// return [+new Date(date) - (before * 86400000), +new Date(date) + (after * 86400000)]
|
||||||
|
// } else if(scale == 'month') {
|
||||||
|
//
|
||||||
|
// const year = new Date(date).getFullYear()
|
||||||
|
// const month = new Date(date).getMonth() + 1
|
||||||
|
// const monthDay = new Date(year, month, 0).getDate()
|
||||||
|
// const before = new Date(year + '/' + (month < 10 ? '0' + month : month) + '/01')
|
||||||
|
// const after = new Date(year + '/' + (month < 10 ? '0' + month : month) + '/' +monthDay)
|
||||||
|
// return [before, after]
|
||||||
|
// } else {
|
||||||
|
//
|
||||||
|
// const year = new Date(date).getFullYear()
|
||||||
|
// return [year + '/01/01', year + '/12/31']
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
_onColClicked(e) {
|
||||||
|
if(sessionStorage.getItem('scale')) return
|
||||||
|
const scale = ['day', 'week', 'month', 'year']
|
||||||
|
const index = scale.indexOf(this.viewInfo.state.scale)
|
||||||
|
const dom = $('.o_gantt_button_scale.btn.btn-secondary.active').prev()
|
||||||
|
const nextScale = scale[index - 1]
|
||||||
|
if(!nextScale) return;
|
||||||
|
sessionStorage.setItem('scale', nextScale)
|
||||||
|
sessionStorage.setItem('time', e.target.dataset.date )
|
||||||
|
if(dom) {
|
||||||
|
dom.click()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 鼠标滚动
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
_onColMouseWheel: function (e) {
|
||||||
|
if(sessionStorage.getItem('scale')) return
|
||||||
|
const scale = ['day', 'week', 'month', 'year']
|
||||||
|
|
||||||
|
let direction
|
||||||
|
if(e.originalEvent.wheelDelta) { //判断浏览器IE,谷歌滑轮事件
|
||||||
|
direction = e.originalEvent.wheelDelta > 0
|
||||||
|
} else { //Firefox滑轮事件
|
||||||
|
direction = e.originalEvent.detail > 0
|
||||||
|
}
|
||||||
|
const index = scale.indexOf(this.viewInfo.state.scale)
|
||||||
|
if(direction) { // 滚轮向上滑动
|
||||||
|
const dom = $('.o_gantt_button_scale.btn.btn-secondary.active').prev()
|
||||||
|
const nextScale = scale[index - 1]
|
||||||
|
if(!nextScale) return;
|
||||||
|
sessionStorage.setItem('scale', nextScale)
|
||||||
|
// sessionStorage.setItem('time', JSON.stringify(this._getTimeSlot(nextScale, e.target.dataset.date)))
|
||||||
|
sessionStorage.setItem('time', e.target.dataset.date || e.currentTarget.dataset.date)
|
||||||
|
if(dom) {
|
||||||
|
dom.click()
|
||||||
|
}
|
||||||
|
} else { // 滚轮向下滑动
|
||||||
|
const dom = $('.o_gantt_button_scale.btn.btn-secondary.active').next()
|
||||||
|
const nextScale = scale[index + 1]
|
||||||
|
if(!nextScale) return;
|
||||||
|
sessionStorage.setItem('scale', nextScale)
|
||||||
|
sessionStorage.setItem('time', e.target.dataset.date || e.currentTarget.dataset.date)
|
||||||
|
// sessionStorage.setItem('time', JSON.stringify(this._getTimeSlot(nextScale, e.target.dataset.date)))
|
||||||
|
if(dom) {
|
||||||
|
dom.click()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return GanttRow;
|
return GanttRow;
|
||||||
|
|||||||
@@ -77,13 +77,13 @@
|
|||||||
<t t-if="widget.state.scale in formats" t-esc="slot.format(formats[widget.state.scale])"/>
|
<t t-if="widget.state.scale in formats" t-esc="slot.format(formats[widget.state.scale])"/>
|
||||||
<small t-else="">
|
<small t-else="">
|
||||||
<t t-if="slot.format('k') == 24">
|
<t t-if="slot.format('k') == 24">
|
||||||
<div>夜班(00:00-08:00)</div>
|
<div>早班(00:00-08:00)</div>
|
||||||
</t>
|
</t>
|
||||||
<t t-if="slot.format('k') == 8">
|
<t t-if="slot.format('k') == 8">
|
||||||
<div>早班(08:00-16:00)</div>
|
<div>白班(08:00-16:00)</div>
|
||||||
</t>
|
</t>
|
||||||
<t t-if="slot.format('k') == 16">
|
<t t-if="slot.format('k') == 16">
|
||||||
<div>晚班(16:00-00:00)</div>
|
<div>晚班(16:00-24:00)</div>
|
||||||
</t>
|
</t>
|
||||||
<!-- <b t-esc="slot.format('k')"/> -->
|
<!-- <b t-esc="slot.format('k')"/> -->
|
||||||
<!-- <span class="d-block d-xl-inline-block" t-esc="slot.format('a')"/> -->
|
<!-- <span class="d-block d-xl-inline-block" t-esc="slot.format('a')"/> -->
|
||||||
|
|||||||
Reference in New Issue
Block a user