pengyuthon
This commit is contained in:
@@ -127,7 +127,6 @@ class RoomBooking(models.Model):
|
||||
else:
|
||||
par.partner_ids = [(5, 0, 0)]
|
||||
|
||||
|
||||
def meet_notice(self):
|
||||
if self.is_notice:
|
||||
for internal in self.room_users_ids:
|
||||
|
||||
@@ -3,3 +3,4 @@
|
||||
|
||||
from . import models
|
||||
from . import controllers
|
||||
from . import wizard
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
'views/resource_calendar_leaves_views.xml',
|
||||
'views/attendance_iot_datas.xml',
|
||||
'views/attendance_iot_manager_views.xml',
|
||||
'views/attendance_iot_views.xml',
|
||||
'views/overtime_approval.xml',
|
||||
'views/go_approval.xml',
|
||||
'views/duty_approval.xml',
|
||||
@@ -34,8 +35,8 @@
|
||||
'views/holiday_manage.xml',
|
||||
'views/holiday_manage_balance.xml',
|
||||
'views/attendance_iot_datas.xml',
|
||||
'views/yuthon_mqtt_service.xml',
|
||||
'views/all_attendance_menu.xml',
|
||||
'wizard/attendance_iot_manager_wizard_views.xml',
|
||||
],
|
||||
'installable': True,
|
||||
'application': True,
|
||||
|
||||
@@ -4,12 +4,9 @@ from odoo import models, fields, api, http, SUPERUSER_ID, _
|
||||
|
||||
|
||||
class BusController(Controller):
|
||||
|
||||
def get_equipment_company(self, sn):
|
||||
sn_address = {
|
||||
'RLM-00111018': '地址1',
|
||||
'RLM-00111019': '地址2',
|
||||
'RLM-00111010': '地址3',
|
||||
}
|
||||
return sn_address[sn]
|
||||
|
||||
@@ -29,7 +26,6 @@ class BusController(Controller):
|
||||
print("---------------------------------------------测试成功---------------------------------------")
|
||||
return {"Result": 0, "Msg": "添加成功"}
|
||||
|
||||
#
|
||||
# @route('/api/v1/user/inf_photo', methods=['POST'], type='json', auth='public')
|
||||
# def get_model_definitions(self):
|
||||
# name = request.jsonrequest.get('sn') # 姓名
|
||||
@@ -70,6 +66,7 @@ class BusController(Controller):
|
||||
'image_1920': data.get('photo'),
|
||||
})
|
||||
attendance_iot.create({
|
||||
'data_selection': "api",
|
||||
'attendance_number': data.get('sn'),
|
||||
'attendance_address': self.get_equipment_company(data.get('sn')),
|
||||
'employee_id': employee_id.id,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import hr_attendance
|
||||
from . import attendance_iot
|
||||
from . import resource_calendar_leaves
|
||||
from . import hr_employee
|
||||
from . import overtime_approval
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
from odoo import api, fields, models, tools
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
|
||||
class AttendanceIot(models.Model):
|
||||
_name = 'attendance.iot'
|
||||
_description = '考勤机设备'
|
||||
_rec_name = 'name'
|
||||
|
||||
name = fields.Char(string="设备号")
|
||||
attendance_address = fields.Char(string="设备地址")
|
||||
broker = fields.Char(string='服务器地址/ip')
|
||||
port = fields.Char(string='端口号')
|
||||
@@ -6,7 +6,6 @@ class AttendanceIotDatas(models.Model):
|
||||
_name = 'attendance.iot.datas'
|
||||
_description = '上传识别记录'
|
||||
|
||||
|
||||
employee_id = fields.Many2one('hr.employee', string='人员')
|
||||
attendance_date = fields.Datetime(string='打卡时间')
|
||||
attendance_number = fields.Char(string="设备号")
|
||||
attendance_iot_id = fields.Many2one('attendance.iot', string="设备号")
|
||||
|
||||
@@ -12,14 +12,30 @@ class AttendanceIotManager(models.Model):
|
||||
_name = 'attendance.iot.manager'
|
||||
_description = "考勤机管理"
|
||||
|
||||
attendance_number = fields.Char(string="设备号")
|
||||
attendance_iot_id = fields.Many2one('attendance.iot', string="设备号")
|
||||
attendance_address = fields.Char(string="设备地址")
|
||||
employee_id = fields.Many2one('hr.employee', string="员工")
|
||||
broker = fields.Char(string='服务器地址/ip')
|
||||
port = fields.Char(string='端口号')
|
||||
id_valid = fields.Date(string="数据有效期")
|
||||
data_selection = fields.Selection([('mqtt', 'mqtt'), ('api', 'api')], default="mqtt", string="数据类型")
|
||||
|
||||
def action_attendance_iot_manager(self):
|
||||
return {
|
||||
"type": "ir.actions.act_window",
|
||||
"name": "批量导入考勤机",
|
||||
"res_model": "attendance.iot.manager.wizard",
|
||||
"view_mode": "form",
|
||||
"target": "new",
|
||||
}
|
||||
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
for vals in vals_list:
|
||||
if vals['data_selection'] == 'mqtt':
|
||||
self.mqtt_request(self, vals['attendance_number'], 'addUser')
|
||||
return super().create(vals_list)
|
||||
|
||||
def mqtt_request(self, attendance_number, data):
|
||||
reuqired_params = self.get_required_params(data.get('cmd'))
|
||||
reuqired_params = self.get_required_params(data)
|
||||
if any(reuqired_param not in data.keys() for reuqired_param in reuqired_params):
|
||||
raise UserError(f'缺少必填参数,请确认: {",".join(reuqired_params)}')
|
||||
mqtt_config = self.get_mqtt_config()
|
||||
|
||||
@@ -16,7 +16,7 @@ class HolidayManage(models.Model):
|
||||
department_ids = fields.Many2many('hr.department', string='部门范围')
|
||||
employee_ids = fields.Many2many('hr.employee', string='人员范围')
|
||||
users_role_ids = fields.Many2many('soong.user.role', string='角色范围')
|
||||
holiday_users_ids = fields.Many2many('res.users', string="申请假期人员", compute="compute_room_users_ids", store=True)
|
||||
holiday_users_ids = fields.Many2many('res.users', string="申请假期人员", compute="compute_holiday_users_ids", store=True)
|
||||
|
||||
is_limit = fields.Boolean(string="新员工请假是否限制", help='入职即可请假')
|
||||
leave_time = fields.Selection(selection=[(str(i), str(i)) for i in range(1, 13)], string="入职月份", help='入职时长小于此月份时,不可申请此假期')
|
||||
|
||||
@@ -9,8 +9,11 @@ access_holidays_approval,holidays.approval,model_holidays_approval,base.group_us
|
||||
access_remove_holiday_approval,remove.holiday.approval,model_remove_holiday_approval,base.group_user,1,1,1,1
|
||||
access_card_approval,card.approval,model_card_approval,base.group_user,1,1,1,1
|
||||
access_holiday_manage,holiday_manage,model_holiday_manage,base.group_user,1,1,1,1
|
||||
access_attendance_iot,attendance_iot,model_attendance_iot,base.group_user,1,1,1,1
|
||||
access_attendance_iot_manager,attendance_iot_manager,model_attendance_iot_manager,base.group_user,1,1,1,1
|
||||
access_attendance_iot_manager_wizard,attendance_iot_manager_wizard,model_attendance_iot_manager_wizard,base.group_user,1,1,1,1
|
||||
access_holiday_manage_balance,holiday_manage_balance,model_holiday_manage_balance,base.group_user,1,1,1,1
|
||||
access_attendance_iot_datas,attendance_iot_datas,model_attendance_iot_datas,base.group_user,1,1,1,1
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -26,12 +26,12 @@
|
||||
parent="holiday_manage_menu_root" action="holiday_manage_type_action" sequence="1"/>
|
||||
<menuitem id="holiday_manage_balance_board" name="假期余额"
|
||||
parent="holiday_manage_menu_root" action="holiday_balance_action" sequence="4"/>
|
||||
<menuitem id="attendance_iot_manager_views" name="考勤机设备管理" parent="hr_attendance.menu_hr_attendance_root"
|
||||
<menuitem id="attendance_iot_manager_views" name="考勤机人员信息管理" parent="hr_attendance.menu_hr_attendance_root"
|
||||
sequence="15" action="attendance_iot_manager_action"/>
|
||||
<menuitem id="attendance_iot_views" name="考勤机设备管理" parent="hr_attendance.menu_hr_attendance_root"
|
||||
sequence="17" action="attendance_iot_action"/>
|
||||
<menuitem id="menu_hr_attendance_work" name="考勤时间表配置" parent="hr_attendance.menu_hr_attendance_root"
|
||||
sequence="18" action="resource.action_resource_calendar_form"/>
|
||||
<menuitem id="menu_hr_attendance_lot_datas" name="上传识别记录" parent="hr_attendance.menu_hr_attendance_root"
|
||||
sequence="21" action="attendance_iot_datas_action"/>
|
||||
<menuitem id="menu_yuthon_mqtt_service_config" name="mqtt服务配置" parent="hr_attendance.menu_hr_attendance_root"
|
||||
sequence="22" action="act_yuthon_mqtt_service_config"/>
|
||||
</odoo>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<tree string="上传记录">
|
||||
<field name="attendance_date"/>
|
||||
<field name="attendance_number"/>
|
||||
<field name="attendance_iot_id"/>
|
||||
<field name="employee_id"/>
|
||||
</tree>
|
||||
</field>
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
<field name="model">attendance.iot.manager</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="考勤机设备管理" editable="bottom">
|
||||
<field name="attendance_number"/>
|
||||
<field name="attendance_iot_id"/>
|
||||
<field name="attendance_address"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="broker" required="True"/>
|
||||
<field name="port" required="True"/>
|
||||
<field name="employee_id" required="1"/>
|
||||
<field name="id_valid" required="1"/>
|
||||
<field name="data_selection" required="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
@@ -20,7 +20,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<search string="考勤机设备管理">
|
||||
<group expand="0">
|
||||
<filter name="attendance_number" string="考勤机" context="{'group_by': 'attendance_number'}"/>
|
||||
<filter name="attendance_iot_id" string="考勤机" context="{'group_by': 'attendance_iot_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
@@ -32,7 +32,15 @@
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="search_view_id" ref="attendance_iot_manager_filter"/>
|
||||
<field name="context">
|
||||
{ "search_default_attendance_number":1, }
|
||||
{ "search_default_attendance_iot_id":1, }
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="attendance_iot_manager_wizard_action" model="ir.actions.server">
|
||||
<field name="name">批量录入考勤机</field>
|
||||
<field name="model_id" ref="model_attendance_iot_manager"/>
|
||||
<field name="binding_model_id" ref="model_attendance_iot_manager"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">action = model.action_attendance_iot_manager()</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="attendance_iot_tree" model="ir.ui.view">
|
||||
<field name="name">考勤机设备管理</field>
|
||||
<field name="model">attendance.iot</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree editable="bottom">
|
||||
<field name="name"/>
|
||||
<field name="attendance_address"/>
|
||||
<field name="broker"/>
|
||||
<field name="port"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="attendance_iot_action" model="ir.actions.act_window">
|
||||
<field name="name">考勤机设备管理</field>
|
||||
<field name="res_model">attendance.iot</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -25,7 +25,7 @@
|
||||
<group>
|
||||
<field name="name" required="1"/>
|
||||
<field name="department_ids" widget="many2many_tags"/>
|
||||
<field name="employee_ids" widget="many2many_tags"/>/>
|
||||
<field name="employee_ids" widget="many2many_tags"/>
|
||||
<field name="users_role_ids" widget="many2many_tags"/>
|
||||
<field name="holiday_users_ids" widget="many2many_tags"/>
|
||||
</group>
|
||||
|
||||
@@ -9,8 +9,10 @@
|
||||
<page string="考勤机信息">
|
||||
<field name="attendance_iot_ids">
|
||||
<tree>
|
||||
<field name="attendance_number"/>
|
||||
<field name="attendance_iot_id"/>
|
||||
<field name="attendance_address"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="id_valid"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
from . import attendance_iot_manager_wizard
|
||||
@@ -0,0 +1,32 @@
|
||||
from odoo import api, fields, models, tools
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
|
||||
class AttendanceIotManagerWizard(models.TransientModel):
|
||||
_name = 'attendance.iot.manager.wizard'
|
||||
_description = '批量导入考勤用户数据弹窗'
|
||||
|
||||
attendance_iot_id = fields.Many2one('attendance.iot', string="设备号")
|
||||
department_ids = fields.Many2many('hr.department', string='部门范围')
|
||||
employee_ids = fields.Many2many('hr.employee', string='人员范围')
|
||||
users_role_ids = fields.Many2many('soong.user.role', string='角色范围')
|
||||
iot_users_ids = fields.Many2many('res.users', string="人员", compute="compute_iot_users_ids", store=True)
|
||||
|
||||
@api.depends('department_ids', 'employee_ids', 'users_role_ids')
|
||||
def compute_iot_users_ids(self):
|
||||
users_role_list = department_users_list = []
|
||||
# 部门人员
|
||||
for depart in self.department_ids:
|
||||
department_users_data = self.env['hr.employee'].search([('department_id', '=', depart.id)])
|
||||
department_users_list = [de.user_id.id for de in department_users_data]
|
||||
# 人员
|
||||
employee_users_list = self.employee_ids.user_id.ids
|
||||
# 角色人员
|
||||
for user_id in self.users_role_ids:
|
||||
department_users_data = self.env['hr.employee'].search([('user_role_id', '=', user_id.id)])
|
||||
users_role_list = [ro.user_id.id for ro in department_users_data]
|
||||
publish_user_list = department_users_list + employee_users_list + users_role_list
|
||||
self.iot_users_ids = [(6, 0, publish_user_list)]
|
||||
|
||||
def confirm(self):
|
||||
pass
|
||||
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="attendance_iot_manager_wizard_form" model="ir.ui.view">
|
||||
<field name="name">批量导入考勤用户数据弹窗</field>
|
||||
<field name="model">attendance.iot.manager.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="attendance_iot_id"/>
|
||||
<field name="department_ids" widget="many2many_tags"/>
|
||||
<field name="employee_ids" widget="many2many_tags"/>
|
||||
<field name="users_role_ids" widget="many2many_tags"/>
|
||||
<field name="iot_users_ids" widget="many2many_tags"/>
|
||||
</group>
|
||||
<group>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
<footer>
|
||||
<button name="confirm" string="确认" type="object" class="oe_highlight"/>
|
||||
<button string="返回" class="btn-secondary" special="cancel"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -5,7 +5,7 @@
|
||||
<record id="hr_recruitment.menu_hr_recruitment_root" model="ir.ui.menu">
|
||||
<field name="active">False</field>
|
||||
</record>
|
||||
<!-- 人事 -->
|
||||
<!-- 人事 -->
|
||||
<record id="hr.menu_hr_root" model="ir.ui.menu">
|
||||
<field name="active">False</field>
|
||||
</record>
|
||||
@@ -13,11 +13,11 @@
|
||||
<record id="hr_attendance.menu_hr_attendance_root" model="ir.ui.menu">
|
||||
<field name="active">False</field>
|
||||
</record>
|
||||
<!-- 绩效 -->
|
||||
<!-- 绩效 -->
|
||||
<record id="yuthon_performance.yuthon_performance_menu_config_root" model="ir.ui.menu">
|
||||
<field name="active">False</field>
|
||||
</record>
|
||||
<!-- 假期 -->
|
||||
<!-- 假期 -->
|
||||
<record id="hr_holidays.menu_hr_holidays_root" model="ir.ui.menu">
|
||||
<field name="active">False</field>
|
||||
</record>
|
||||
@@ -48,10 +48,10 @@
|
||||
parent="hr_recruitment_setting_menu_board"
|
||||
action="hr_recruitment.action_hr_recruitment_configuration"
|
||||
sequence="1"/>
|
||||
<!-- <menuitem id="hr_process_work_job_menu_board"-->
|
||||
<!-- name="流程"-->
|
||||
<!-- parent="hr_recruitment_menu_root_board"-->
|
||||
<!-- sequence="5"/>-->
|
||||
<!-- <menuitem id="hr_process_work_job_menu_board"-->
|
||||
<!-- name="流程"-->
|
||||
<!-- parent="hr_recruitment_menu_root_board"-->
|
||||
<!-- sequence="5"/>-->
|
||||
<menuitem id="hr_menu_recruitment_approval"
|
||||
name="招聘需求申请表"
|
||||
parent="hr_recruitment_menu_root_board"
|
||||
@@ -77,10 +77,10 @@
|
||||
parent="hr_recruitment_menu_root_board"
|
||||
action="yuthon_hr_employee_approval.yuthon_message_login_action"
|
||||
sequence="9"/>
|
||||
<!-- <menuitem id="hr_recruitment_app2_menu_board"-->
|
||||
<!-- name="应用"-->
|
||||
<!-- parent="hr_recruitment_setting_menu_board"-->
|
||||
<!-- sequence="5"/>-->
|
||||
<!-- <menuitem id="hr_recruitment_app2_menu_board"-->
|
||||
<!-- name="应用"-->
|
||||
<!-- parent="hr_recruitment_setting_menu_board"-->
|
||||
<!-- sequence="5"/>-->
|
||||
<menuitem id="hr_recruit_setting_menu_root_board"
|
||||
name="岗位类型配置"
|
||||
parent="hr_recruitment_setting_menu_board"
|
||||
@@ -196,65 +196,65 @@
|
||||
parent="hr_set_process_menu_root_board"
|
||||
action="hr_org_chart.action_hr_employee_org_chart"
|
||||
sequence="15"/>
|
||||
<!-- <menuitem id="hr_menu_account_approval_root_board"-->
|
||||
<!-- name="薪资核算申请表"-->
|
||||
<!-- parent="hr_set_process_menu_root_board"-->
|
||||
<!-- action="yuthon_none_action"-->
|
||||
<!-- sequence="1"/>-->
|
||||
<!-- <menuitem id="hr_menu_prepare_approval_root_board"-->
|
||||
<!-- name="编制调整申请表"-->
|
||||
<!-- parent="hr_set_process_menu_root_board"-->
|
||||
<!-- action="yuthon_hr_employee_approval.yuthon_prepare_approval_action"-->
|
||||
<!-- sequence="3"/>-->
|
||||
<!-- <menuitem id="hr_menu_rank_approval_root_board"-->
|
||||
<!-- name="职级调整申请表"-->
|
||||
<!-- parent="hr_set_process_menu_root_board"-->
|
||||
<!-- action="yuthon_none_action"-->
|
||||
<!-- sequence="5"/>-->
|
||||
<!-- <menuitem id="hr_menu_reward_approval_root_board"-->
|
||||
<!-- name="员工奖罚"-->
|
||||
<!-- parent="hr_set_process_menu_root_board"-->
|
||||
<!-- action="yuthon_hr_employee_approval.yuthon_reward_approval_action"-->
|
||||
<!-- sequence="7"/>-->
|
||||
<!-- <menuitem id="hr_menu_salary_approval_root_board"-->
|
||||
<!-- name="薪酬项目调整表"-->
|
||||
<!-- parent="hr_set_process_menu_root_board"-->
|
||||
<!-- action="yuthon_none_action"-->
|
||||
<!-- sequence="9"/>-->
|
||||
<!-- <menuitem id="hr_menu_system_approval_root_board"-->
|
||||
<!-- name="制度调整申请表"-->
|
||||
<!-- parent="hr_set_process_menu_root_board"-->
|
||||
<!-- action="yuthon_none_action"-->
|
||||
<!-- sequence="15"/>-->
|
||||
<!-- <menuitem id="hr_menu_title_approval_root_board"-->
|
||||
<!-- name="职称聘任申请表"-->
|
||||
<!-- parent="hr_set_process_menu_root_board"-->
|
||||
<!-- action="yuthon_hr_employee_approval.yuthon_appointment_approval_action"-->
|
||||
<!-- sequence="17"/>-->
|
||||
<!-- <menuitem id="hr_menu_enrollment_approval_root_board"-->
|
||||
<!-- name="参保方案申请表"-->
|
||||
<!-- parent="hr_set_process_menu_root_board"-->
|
||||
<!-- action="yuthon_none_action"-->
|
||||
<!-- sequence="19"/>-->
|
||||
<!-- <menuitem id="hr_menu_transfer_approval_root_board"-->
|
||||
<!-- name="工作移交"-->
|
||||
<!-- parent="hr_set_process_menu_root_board"-->
|
||||
<!-- action="yuthon_hr_employee_approval.yuthon_transfer_approval_action"-->
|
||||
<!-- sequence="21"/>-->
|
||||
<!-- <menuitem id="hr_department_menu_root_board"-->
|
||||
<!-- name="部门"-->
|
||||
<!-- parent="hr_menu_root_board"-->
|
||||
<!-- action="hr.hr_department_kanban_action"-->
|
||||
<!-- sequence="3"/>-->
|
||||
<!-- <menuitem id="hr_report_menu_root_board"-->
|
||||
<!-- name="报告"-->
|
||||
<!-- parent="hr_menu_root_board"-->
|
||||
<!-- sequence="5"/>-->
|
||||
<!-- <menuitem id="hr_report_skills_menu_root_board"-->
|
||||
<!-- name="技能"-->
|
||||
<!-- parent="hr_report_menu_root_board"-->
|
||||
<!-- action="hr_skills.hr_employee_skill_report_action"-->
|
||||
<!-- sequence="1"/>-->
|
||||
<!-- <menuitem id="hr_menu_account_approval_root_board"-->
|
||||
<!-- name="薪资核算申请表"-->
|
||||
<!-- parent="hr_set_process_menu_root_board"-->
|
||||
<!-- action="yuthon_none_action"-->
|
||||
<!-- sequence="1"/>-->
|
||||
<!-- <menuitem id="hr_menu_prepare_approval_root_board"-->
|
||||
<!-- name="编制调整申请表"-->
|
||||
<!-- parent="hr_set_process_menu_root_board"-->
|
||||
<!-- action="yuthon_hr_employee_approval.yuthon_prepare_approval_action"-->
|
||||
<!-- sequence="3"/>-->
|
||||
<!-- <menuitem id="hr_menu_rank_approval_root_board"-->
|
||||
<!-- name="职级调整申请表"-->
|
||||
<!-- parent="hr_set_process_menu_root_board"-->
|
||||
<!-- action="yuthon_none_action"-->
|
||||
<!-- sequence="5"/>-->
|
||||
<!-- <menuitem id="hr_menu_reward_approval_root_board"-->
|
||||
<!-- name="员工奖罚"-->
|
||||
<!-- parent="hr_set_process_menu_root_board"-->
|
||||
<!-- action="yuthon_hr_employee_approval.yuthon_reward_approval_action"-->
|
||||
<!-- sequence="7"/>-->
|
||||
<!-- <menuitem id="hr_menu_salary_approval_root_board"-->
|
||||
<!-- name="薪酬项目调整表"-->
|
||||
<!-- parent="hr_set_process_menu_root_board"-->
|
||||
<!-- action="yuthon_none_action"-->
|
||||
<!-- sequence="9"/>-->
|
||||
<!-- <menuitem id="hr_menu_system_approval_root_board"-->
|
||||
<!-- name="制度调整申请表"-->
|
||||
<!-- parent="hr_set_process_menu_root_board"-->
|
||||
<!-- action="yuthon_none_action"-->
|
||||
<!-- sequence="15"/>-->
|
||||
<!-- <menuitem id="hr_menu_title_approval_root_board"-->
|
||||
<!-- name="职称聘任申请表"-->
|
||||
<!-- parent="hr_set_process_menu_root_board"-->
|
||||
<!-- action="yuthon_hr_employee_approval.yuthon_appointment_approval_action"-->
|
||||
<!-- sequence="17"/>-->
|
||||
<!-- <menuitem id="hr_menu_enrollment_approval_root_board"-->
|
||||
<!-- name="参保方案申请表"-->
|
||||
<!-- parent="hr_set_process_menu_root_board"-->
|
||||
<!-- action="yuthon_none_action"-->
|
||||
<!-- sequence="19"/>-->
|
||||
<!-- <menuitem id="hr_menu_transfer_approval_root_board"-->
|
||||
<!-- name="工作移交"-->
|
||||
<!-- parent="hr_set_process_menu_root_board"-->
|
||||
<!-- action="yuthon_hr_employee_approval.yuthon_transfer_approval_action"-->
|
||||
<!-- sequence="21"/>-->
|
||||
<!-- <menuitem id="hr_department_menu_root_board"-->
|
||||
<!-- name="部门"-->
|
||||
<!-- parent="hr_menu_root_board"-->
|
||||
<!-- action="hr.hr_department_kanban_action"-->
|
||||
<!-- sequence="3"/>-->
|
||||
<!-- <menuitem id="hr_report_menu_root_board"-->
|
||||
<!-- name="报告"-->
|
||||
<!-- parent="hr_menu_root_board"-->
|
||||
<!-- sequence="5"/>-->
|
||||
<!-- <menuitem id="hr_report_skills_menu_root_board"-->
|
||||
<!-- name="技能"-->
|
||||
<!-- parent="hr_report_menu_root_board"-->
|
||||
<!-- action="hr_skills.hr_employee_skill_report_action"-->
|
||||
<!-- sequence="1"/>-->
|
||||
<menuitem id="hr_setting_menu_root_board"
|
||||
name="配置"
|
||||
parent="hr_menu_root_board"
|
||||
@@ -439,15 +439,24 @@
|
||||
parent="hr_attendance_root_board"
|
||||
sequence="9"/>
|
||||
<menuitem id="attendance_iot_manager_views_board"
|
||||
name="考勤机设备配置"
|
||||
name="考勤机人员信息配置"
|
||||
parent="attendance_resources_setting_root_board"
|
||||
sequence="1"
|
||||
action="yuthon_hr_attendance.attendance_iot_manager_action"/>
|
||||
<menuitem id="attendance_iot_views_board"
|
||||
name="考勤机设备管理"
|
||||
parent="attendance_resources_setting_root_board"
|
||||
sequence="2" action="yuthon_hr_attendance.attendance_iot_action"/>
|
||||
<menuitem id="menu_hr_attendance_work_board"
|
||||
name="考勤时间表配置"
|
||||
parent="attendance_resources_setting_root_board"
|
||||
sequence="3"
|
||||
action="resource.action_resource_calendar_form"/>
|
||||
<menuitem id="menu_hr_attendance_lot_datas_board"
|
||||
name="上传识别记录"
|
||||
parent="attendance_resources_setting_root_board"
|
||||
sequence="5"
|
||||
action="yuthon_hr_attendance.attendance_iot_datas_action"/>
|
||||
<!--假期管理-->
|
||||
<menuitem id="holiday_manage_menu_root_board"
|
||||
name="假期管理"
|
||||
@@ -791,25 +800,25 @@
|
||||
parent="curriculum_manage_root_board"
|
||||
action="yuthon_none_action"
|
||||
sequence="3"/>
|
||||
<!-- <menuitem id="yuthon_performance_approval_management_menu_board"-->
|
||||
<!-- parent="yuthon_performance_menu_config_root_board"-->
|
||||
<!-- name="指标变更管理"-->
|
||||
<!-- sequence="7"/>-->
|
||||
<!-- <menuitem id="yuthon_index_approval_management_board"-->
|
||||
<!-- parent="yuthon_performance_approval_management_menu_board"-->
|
||||
<!-- name="指标库变更"-->
|
||||
<!-- sequence="1"-->
|
||||
<!-- action="yuthon_performance.yuthon_index_approval_action"/>-->
|
||||
<!-- <menuitem id="yuthon_duty_approval_management_board"-->
|
||||
<!-- parent="yuthon_performance_approval_management_menu_board"-->
|
||||
<!-- name="部门责任书变更"-->
|
||||
<!-- sequence="3"-->
|
||||
<!-- action="yuthon_performance.yuthon_duty_approval_action"/>-->
|
||||
<!-- <menuitem id="yuthon_plan_approval_management_board"-->
|
||||
<!-- parent="yuthon_performance_approval_management_menu_board"-->
|
||||
<!-- name="个人计划变更"-->
|
||||
<!-- sequence="5"-->
|
||||
<!-- action="yuthon_performance.yuthon_plan_approval_action"/>-->
|
||||
<!-- <menuitem id="yuthon_performance_approval_management_menu_board"-->
|
||||
<!-- parent="yuthon_performance_menu_config_root_board"-->
|
||||
<!-- name="指标变更管理"-->
|
||||
<!-- sequence="7"/>-->
|
||||
<!-- <menuitem id="yuthon_index_approval_management_board"-->
|
||||
<!-- parent="yuthon_performance_approval_management_menu_board"-->
|
||||
<!-- name="指标库变更"-->
|
||||
<!-- sequence="1"-->
|
||||
<!-- action="yuthon_performance.yuthon_index_approval_action"/>-->
|
||||
<!-- <menuitem id="yuthon_duty_approval_management_board"-->
|
||||
<!-- parent="yuthon_performance_approval_management_menu_board"-->
|
||||
<!-- name="部门责任书变更"-->
|
||||
<!-- sequence="3"-->
|
||||
<!-- action="yuthon_performance.yuthon_duty_approval_action"/>-->
|
||||
<!-- <menuitem id="yuthon_plan_approval_management_board"-->
|
||||
<!-- parent="yuthon_performance_approval_management_menu_board"-->
|
||||
<!-- name="个人计划变更"-->
|
||||
<!-- sequence="5"-->
|
||||
<!-- action="yuthon_performance.yuthon_plan_approval_action"/>-->
|
||||
<!-- 配置 -->
|
||||
<menuitem id="human_resources_setting_root_board"
|
||||
name="配置"
|
||||
|
||||
Reference in New Issue
Block a user