diff --git a/sf_wxwork_approval/models/wxwork_approval_template_controls.py b/sf_wxwork_approval/models/wxwork_approval_template_controls.py index d903ab3f..da43ab52 100644 --- a/sf_wxwork_approval/models/wxwork_approval_template_controls.py +++ b/sf_wxwork_approval/models/wxwork_approval_template_controls.py @@ -54,29 +54,38 @@ class PropertyModel(models.Model): # 控件配置模型 class ConfigModel(models.Model): _name = 'config.model' - _rec_name = "title" control_id = fields.Many2one('wxwork.approval.template.controls', string='控件') - # 在此添加其他字段以存储不同控件类型的附加类型和属性 - date_type = fields.Selection([('day', '日期'), ('hour', '日期+时间')], string='日期类型') - - selector_type = fields.Selection([('single', '单选'), ('multi', '多选')], string='选择器类型') - options = fields.One2many('config.option', 'config_id', string='选项') - - contact_type = fields.Selection( - [('single', '单选'), ('multi', '多选')], - string='联系人类型') - contact_mode = fields.Selection( - [('user', '成员'), ('department', '部门')], - string='联系人模式') - - # table_children = fields.One2many('config.child', 'config_id', string='明细子控件') - table_children = fields.One2many('property.model', 'child_control_id', string='明细子控件') - - attendance_type = fields.Selection([('1', '请假'), ('3', '出差'), ('4', '外出'), ('5', '加班')], string='假勤组件类型') - attendance_date_range_type = fields.Selection([('hour', '分钟'), ('halfday', '上午/下午')], string='假勤时间刻度') - - vacation_list = fields.One2many('config.option', 'config_id', string='假期类型列表') + # # 在此添加其他字段以存储不同控件类型的附加类型和属性 + # date_type = fields.Selection([('day', '日期'), ('hour', '日期+时间')], string='日期类型') + # + # selector_type = fields.Selection([('single', '单选'), ('multi', '多选')], string='选择器类型') + # options = fields.One2many('config.option', 'config_id', string='选项') + # + # contact_type = fields.Selection( + # [('single', '单选'), ('multi', '多选')], + # string='联系人类型') + # contact_mode = fields.Selection( + # [('user', '成员'), ('department', '部门')], + # string='联系人模式') + # + # # table_children = fields.One2many('config.child', 'config_id', string='明细子控件') + # table_children = fields.One2many('property.model', 'child_control_id', string='明细子控件') + # + # attendance_type = fields.Selection([('1', '请假'), ('3', '出差'), ('4', '外出'), ('5', '加班')], string='假勤组件类型') + # attendance_date_range_type = fields.Selection([('hour', '分钟'), ('halfday', '上午/下午')], string='假勤时间刻度') + # + # vacation_list = fields.One2many('config.option', 'config_id', string='假期类型列表') + # 增加一个wxwork.approval.date.config的关联字段 + date_type = fields.One2many('wxwork.approval.date.config', 'config_id', string='日期控件配置') + # 增加一个与wxwork.approval.selector.config的关联字段 + selector_type = fields.One2many('wxwork.approval.selector.config', 'config_id', string='选择器控件配置') + # 增加一个与wxwork.approval.contact.config的关联字段 + contact_type = fields.One2many('wxwork.approval.contact.config', 'config_id', string='联系人控件配置') + # 增加一个与wxwork.approval.table.config的关联字段 + table_type = fields.One2many('wxwork.approval.table.config', 'config_id', string='明细控件配置') + # 增加一个与wxwork.approval.attendance.config的关联字段 + attendance_type = fields.One2many('wxwork.approval.attendance.config', 'config_id', string='假勤控件配置') class ConfigOption(models.Model): @@ -96,10 +105,74 @@ class ConfigChild(models.Model): # 其他属性... -class VacationType(models.Model): - _name = 'vacation.type' +# Date控件config +class DateConfig(models.Model): + _name = 'wxwork.approval.date.config' - config_id = fields.Many2one('config.model', string='配置') + # 增加一个与config.model的关联字段 + config_id = fields.Many2one('config.model', string='控件') + date_type = fields.Selection([('day', '日期'), ('hour', '日期+时间')], string='日期类型') + + +# Selector控件(单选/多选控件)config +class SelectorConfig(models.Model): + _name = 'wxwork.approval.selector.config' + + # 增加一个与config.model的关联字段 + config_id = fields.Many2one('config.model', string='控件') + selector_type = fields.Selection([('single', '单选'), ('multi', '多选')], string='选择器类型') + options = fields.One2many('selector.option', 'config_id', string='选项') + + +# Selector控件(单选/多选控件)选项 +class SelectorOption(models.Model): + _name = 'selector.option' + + key = fields.Char(string='选项Key') + text = fields.Char(string='选项Text') + lang = fields.Char(string='语言') + config_id = fields.Many2one('wxwork.approval.selector.config', string='配置') + + +# Contact控件(成员/部门控件)config +class ContactConfig(models.Model): + _name = 'wxwork.approval.contact.config' + + # 增加一个与config.model的关联字段 + config_id = fields.Many2one('config.model', string='控件') + contact_type = fields.Selection([('single', '单选'), ('multi', '多选')], string='选择器类型') + contact_mode = fields.Selection([('user', '成员'), ('department', '部门')], string='联系人类型') + + +# Table控件(明细控件)config +class TableConfig(models.Model): + _name = 'wxwork.approval.table.config' + + # 增加一个与config.model的关联字段 + config_id = fields.Many2one('config.model', string='控件') + # table_children = fields.One2many('config.child', 'config_id', string='明细子控件') + table_children = fields.One2many('property.model', 'child_control_id', string='明细子控件') + # stat_field = fields.Many2one('config.model', string='统计字段') + + +# Attendance控件(假勤控件)config +class AttendanceConfig(models.Model): + _name = 'wxwork.approval.attendance.config' + + # 增加一个与config.model的关联字段 + config_id = fields.Many2one('config.model', string='控件') + attendance_type = fields.Selection([('1', '请假'), ('3', '出差'), ('4', '外出'), ('5', '加班')], string='假勤组件类型') + attendance_date_range_type = fields.Selection([('hour', '分钟'), ('halfday', '上午/下午')], string='假勤时间刻度') + + +# Vacation控件(假勤控件)config +class VacationConfig(models.Model): + _name = 'wxwork.approval.vacation.config' + + # 增加一个与wxwork.approval.template的关联字段 + template_id = fields.Many2one('wxwork.approval.template', string='模板') + # control_id = fields.Many2one('wxwork.approval.template.controls', string='控件') + # vacation_list = fields.One2many('config.option', 'config_id', string='假期类型列表') vacation_id = fields.Integer(string='假期ID') name = fields.Char(string='假期名称') lang = fields.Char(string='语言') diff --git a/sf_wxwork_approval/models/wxwork_settings.py b/sf_wxwork_approval/models/wxwork_settings.py index 8b62e334..842b5915 100644 --- a/sf_wxwork_approval/models/wxwork_settings.py +++ b/sf_wxwork_approval/models/wxwork_settings.py @@ -38,7 +38,7 @@ class WxSettings(models.Model): # print(json.dumps(temp_dict)) # aa = json.dumps(temp_dict) template_detail = wx.get_template_detail(temp_dict) - # print('template_detail%s' % template_detail) + print('template_detail%s' % template_detail) # # # 准备用于创建记录的字段值 # values = { @@ -54,11 +54,78 @@ class WxSettings(models.Model): # print('jjjjjjjj', template_detail['template_content']) # print('jjjjjjjjjj', template_detail['template_content']['controls']) for control_data in template_detail['template_content']['controls']: - print('control_data', control_data) + # print('control_data', control_data) property_data = control_data['property'] config_values = {} - # print(property_data) + # # print(property_data) + # # 准备用于创建记录的字段值 + # property_values = { + # 'control_type': property_data.get('control', ''), + # 'unique_control_id': property_data.get('id', ''), + # 'title': property_data['title'][0]['text'] if 'title' in property_data else '', + # 'placeholder': property_data['placeholder'][0]['text'] if 'placeholder' in property_data else '', + # 'require': property_data.get('require', None), + # 'un_print': property_data.get('un_print', None), + # 'un_replace': property_data.get('un_replace', None), + # 'display': property_data.get('display', None), + # # 'un_replace': template_detail['template_names'][0]['text'], + # # 如果需要设置content_ids,请按照正确格式添加关联数据 + # } + # # print('property_values', property_values) + # # config_data = None + # + # if 'config' in control_data: + # + # config_data = control_data['config'] + # # print('config_data===', config_data) + # if '"date":' in config_data: + # # config_values = { + # # 'date_type': config_data.get('type', ''), + # # } + # config_values['date_type'] = config_data.get('type', '') + # if '"selector":' in config_data: + # # config_values = { + # # 'selector_type': config_data.get('type', ''), + # # # 'options': config_data['title'][0]['text'] if 'title' in property_data else '', + # # } + # config_values['selector_type'] = config_data.get('type', '') + # if '"contact":' in config_data: + # # config_values = { + # # 'contact_type': config_data.get('type', ''), + # # 'contact_mode': config_data.get('mode', ''), + # # + # # } + # config_values['contact_type'] = config_data.get('type', '') + # config_values['contact_mode'] = config_data.get('mode', '') + # if '"table":' in config_data: + # pass + # # config_values = { + # # 'table_children': config_data.get('un_print', None), + # # } + # if '"attendance":' in config_data: + # pass + # # config_values = { + # # 'attendance_type': config_data.get('un_replace', None), + # # 'attendance_date_range_type': config_data.get('display', None), + # # # 如果需要设置content_ids,请按照正确格式添加关联数据 + # # } + # if '"vacation_list":' in config_data: + # pass + # # config_values = { + # # 'vacation_list': config_data['template_names'][0]['text'], + # # # 如果需要设置content_ids,请按照正确格式添加关联数据 + # # } + # + # content_data_list.append((0, 0, { + # 'property_id': [(0, 0, property_values)], + # 'config_id': [(0, 0, config_values)], + # })) + # else: + # content_data_list.append((0, 0, { + # 'property_id': [(0, 0, property_values)], + # # 'config_id': [(0, 0, config_values)], + # })) # 准备用于创建记录的字段值 property_values = { 'control_type': property_data.get('control', ''), @@ -69,63 +136,67 @@ class WxSettings(models.Model): 'un_print': property_data.get('un_print', None), 'un_replace': property_data.get('un_replace', None), 'display': property_data.get('display', None), - # 'un_replace': template_detail['template_names'][0]['text'], - # 如果需要设置content_ids,请按照正确格式添加关联数据 } - # print('property_values', property_values) - # config_data = None if 'config' in control_data: - config_data = control_data['config'] - # print('config_data===', config_data) - if '"date":' in config_data: - # config_values = { - # 'date_type': config_data.get('type', ''), - # } - config_values['date_type'] = config_data.get('type', '') - if '"selector":' in config_data: - # config_values = { - # 'selector_type': config_data.get('type', ''), - # # 'options': config_data['title'][0]['text'] if 'title' in property_data else '', - # } - config_values['selector_type'] = config_data.get('type', '') - if '"contact":' in config_data: - # config_values = { - # 'contact_type': config_data.get('type', ''), - # 'contact_mode': config_data.get('mode', ''), - # - # } - config_values['contact_type'] = config_data.get('type', '') - config_values['contact_mode'] = config_data.get('mode', '') - if '"table":' in config_data: - pass - # config_values = { - # 'table_children': config_data.get('un_print', None), - # } - if '"attendance":' in config_data: - pass - # config_values = { - # 'attendance_type': config_data.get('un_replace', None), - # 'attendance_date_range_type': config_data.get('display', None), - # # 如果需要设置content_ids,请按照正确格式添加关联数据 - # } - if '"vacation_list":' in config_data: - pass - # config_values = { - # 'vacation_list': config_data['template_names'][0]['text'], - # # 如果需要设置content_ids,请按照正确格式添加关联数据 - # } - content_data_list.append((0, 0, { - 'property_id': [(0, 0, property_values)], - 'config_id': [(0, 0, config_values)], - })) - else: - content_data_list.append((0, 0, { - 'property_id': [(0, 0, property_values)], - # 'config_id': [(0, 0, config_values)], - })) + # 根据config_data为config.model的One2many字段(如options和table_children)构建命令列表 + option_vals = [ + (0, 0, {'key': 'option_key_1', 'text': 'option_text_1', 'lang': 'zh_CN'}), + (0, 0, {'key': 'option_key_2', 'text': 'option_text_2', 'lang': 'zh_CN'}) + ] + vacation_vals = [{'key': 'vacation_key_1', 'text': 'vacation_text_1', 'lang': 'zh_CN'}, + {'key': 'vacation_key_2', 'text': 'vacation_text_2', 'lang': 'zh_CN'}] + table_children_vals = [ + (0, 0, { + 'control_type': 'Text', + 'unique_control_id': 'control_id_1', + 'title': '控件名称1', + 'placeholder': '控件说明1', + 'require': True + }), + (0, 0, { + 'control_type': 'Number', + 'unique_control_id': 'control_id_2', + 'title': '控件名称2', + 'placeholder': '控件说明2', + 'require': False + }) + ] + + # property_vals = [ + # (0, 0, { + # 'control_type': 'Text', + # 'unique_control_id': 'control_id_1', + # 'title': '控件名称1', + # 'placeholder': '控件说明1', + # 'require': True + # }), + # (0, 0, { + # 'control_type': 'Number', + # 'unique_control_id': 'control_id_2', + # 'title': '控件名称2', + # 'placeholder': '控件说明2', + # 'require': False + # }) + # ] + + config_values = { + 'date_type': config_data.get('type', '') if '"date":' in config_data else '', + 'selector_type': config_data.get('type', '') if '"selector":' in config_data else '', + 'contact_type': config_data.get('type', '') if '"contact":' in config_data else '', + 'contact_mode': config_data.get('mode', '') if '"contact":' in config_data else '', + 'options': option_vals if '"selector":' in config_data else [(6, 0, [])], # 使用示例中的option_vals + 'table_children': table_children_vals if '"table":' in config_data else [(6, 0, [])], + # 使用示例中的property_vals + 'vacation_list': vacation_vals if '"vacation_list":' in config_data else [] # 添加vacation_vals + } + + content_data_list.append((0, 0, { + 'property_id': [(0, 0, property_values)], + 'config_id': [(0, 0, config_values)] if 'config' in control_data else [(6, 0, [])], + })) # 准备用于创建记录的字段值,包括content_ids数据 values = { diff --git a/sf_wxwork_approval/security/ir.model.access.csv b/sf_wxwork_approval/security/ir.model.access.csv index 6374ff3a..338eee72 100644 --- a/sf_wxwork_approval/security/ir.model.access.csv +++ b/sf_wxwork_approval/security/ir.model.access.csv @@ -10,7 +10,7 @@ access_wxwork_template_settings,wxwork.template.settings,model_wxwork_template_s access_property_model,property.model,model_property_model,base.group_user,1,1,1,1 access_config_model,config.model,model_config_model,base.group_user,1,1,1,1 access_config_option,config.option,model_config_option,base.group_user,1,1,1,1 -access_vacation_type,vacation.type,model_vacation_type,base.group_user,1,1,1,1 +access_wxwork_approval_vacation_config,wxwork.approval.vacation.config,model_wxwork_approval_vacation_config,base.group_user,1,1,1,1 diff --git a/sf_wxwork_approval/views/wxwork_approval_template_view.xml b/sf_wxwork_approval/views/wxwork_approval_template_view.xml index ce1304bb..af4c74d7 100644 --- a/sf_wxwork_approval/views/wxwork_approval_template_view.xml +++ b/sf_wxwork_approval/views/wxwork_approval_template_view.xml @@ -26,6 +26,7 @@ + @@ -57,7 +58,7 @@ - + @@ -137,13 +138,17 @@ - - - + - - + + + + + + + + @@ -156,13 +161,18 @@ - - - + - - + + + + + + + + +