Merge branch 'master' into dev_zhou
# Conflicts: # soong_workflow/templates/soong_workflow_templates.xml
This commit is contained in:
@@ -19,7 +19,8 @@
|
||||
<page string="审批详情" invisible="not work_end">
|
||||
<field name="log_ids" style="width:100%; margin-top: 10px;" domain="[('node_btn_name', '!=', '1')]">
|
||||
<tree editable="bottom">
|
||||
<field name="sequence" string="" widget="handle" groups="soong_workflow.group_soong_workflow_manager"/>
|
||||
<field name="sequence" string="" widget="handle"
|
||||
groups="soong_workflow.group_soong_workflow_manager"/>
|
||||
<field name="name" string="" readonly="0"/>
|
||||
<field name="comment" string=""/>
|
||||
<field name="done_by" string=""/>
|
||||
@@ -43,7 +44,8 @@
|
||||
<page string="关联流程" invisible="not soong_record_ids">
|
||||
<field name="soong_record_ids" style="width:100%; margin-top: 10px;">
|
||||
<tree edit="true" delete="False" editable="bottom" type="object">
|
||||
<field name="workflow_record_id" domain="[('users_ids', 'in', uid)]" options="{'no_open': True}"/>
|
||||
<field name="workflow_record_id" domain="[('users_ids', 'in', uid)]"
|
||||
options="{'no_open': True}"/>
|
||||
<field name="code"/>
|
||||
<field name="approvals_group_id" column_invisible="1"/>
|
||||
<field name="create_uid"/>
|
||||
@@ -93,7 +95,8 @@
|
||||
<page string="关联流程" invisible="not soong_record_ids">
|
||||
<field name="soong_record_ids" style="width:100%%; margin-top: 10px;">
|
||||
<tree editable="bottom" delete="False">
|
||||
<field name="workflow_record_id" domain="[('users_ids', 'in', uid)]" options="{'no_open': True}"/>
|
||||
<field name="workflow_record_id" domain="[('users_ids', 'in', uid)]"
|
||||
options="{'no_open': True}"/>
|
||||
<field name="approvals_group_id" column_invisible="1"/>
|
||||
<field name="create_uid"/>
|
||||
<field name="write_date2"/>
|
||||
|
||||
@@ -84,4 +84,69 @@
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="context">{'search_default_code': 1}</field>
|
||||
</record>
|
||||
|
||||
<!-- 定义 kanban-->
|
||||
<record id="soong_workflow_log_kanban" model="ir.ui.view">
|
||||
<field name="name">soong.workflow.log.kanban</field>
|
||||
<field name="model">soong.workflow.log</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban class="o_kanban_mobile" >
|
||||
<field name="id"/>
|
||||
<field name="sequence"/>
|
||||
<field name="name"/>
|
||||
<field name="comment"/>
|
||||
<field name="done_by"/>
|
||||
<field name="lase_click_date"/>
|
||||
<field name="approval_state"/>
|
||||
<field name="node_btn_name"/>
|
||||
<field name="document_ids"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div class="oe_kanban_global_click o_kanban_card oe_kanban_global_area">
|
||||
<div class="o_kanban_card_header">
|
||||
<div class="o_kanban_card_title">
|
||||
<h4><field name="name"/></h4>
|
||||
</div>
|
||||
</div>
|
||||
<div class="o_kanban_card_content">
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<strong>审批人:</strong>
|
||||
<field name="done_by"/>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<strong>状态:</strong>
|
||||
<field name="approval_state"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt-2">
|
||||
<div class="col-12">
|
||||
<strong>意见:</strong>
|
||||
<field name="comment"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt-2">
|
||||
<div class="col-6">
|
||||
<strong>操作时间:</strong>
|
||||
<field name="lase_click_date"/>
|
||||
</div>
|
||||
<div class="col-6" >
|
||||
<strong>按钮:</strong>
|
||||
<field name="node_btn_name"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="o_kanban_card_footer">
|
||||
<div class="o_kanban_record_bottom">
|
||||
<div class="oe_kanban_bottom_right">
|
||||
<field name="document_ids" widget="preview_many2many"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
import{_ as e}from"./index-PqCAfNk6.js";const r={};function c(n,t){return null}const o=e(r,[["render",c]]);export{o as default};
|
||||
import{_ as e}from"./index-D74aaX2u.js";const r={};function c(n,t){return null}const o=e(r,[["render",c]]);export{o as default};
|
||||
+1
-1
@@ -1 +1 @@
|
||||
import{B as _,E as i,C as d,D as v}from"./requests-BndsySCf.js";import{_ as p,r as h,o as m,u as y,h as f,i as l,g as a,t,k,l as g}from"./index-PqCAfNk6.js";const w=r=>_("/yuthon/yuthon/will/task",{id:r}),x={class:"container"},B={class:"meeting-header"},C={class:"title"},q={class:"time"},D={class:"location"},E={__name:"Journey",setup(r){const u=y(),e=h({});return m(async()=>{try{const s=parseInt(u.query.id),n=await w(s);e.value=n.data}catch(s){i("获取任务详情失败"),console.error(s)}}),(s,n)=>{const o=v,c=d;return g(),f("div",x,[l("div",B,[l("div",C,t(e.value.name),1),l("div",q,t(e.value.start_date)+" "+t(e.value.start_date_week)+" "+t(e.value.request_hour_from)+" - "+t(e.value.request_hour_to),1),l("div",D,"地址: "+t(e.value.address),1)]),a(c,null,{default:k(()=>[a(o,{title:"组织人",value:e.value.user_id},null,8,["value"]),a(o,{title:"参与人",value:"共"+(e.value.employee_ids?.length||0)+"人"},null,8,["value"]),a(o,{title:"描述",value:e.value.remarks},null,8,["value"]),a(o,{title:"任务编号",value:e.value.code},null,8,["value"])]),_:1})])}}},N=p(E,[["__scopeId","data-v-0aa7162a"]]);export{N as default};
|
||||
import{B as _,E as i,C as d,D as v}from"./requests-5uhdwPNX.js";import{_ as p,r as h,o as m,u as y,h as f,i as l,g as a,t,k,l as g}from"./index-D74aaX2u.js";const w=r=>_("/yuthon/yuthon/will/task",{id:r}),x={class:"container"},B={class:"meeting-header"},C={class:"title"},q={class:"time"},D={class:"location"},E={__name:"Journey",setup(r){const u=y(),e=h({});return m(async()=>{try{const s=parseInt(u.query.id),n=await w(s);e.value=n.data}catch(s){i("获取任务详情失败"),console.error(s)}}),(s,n)=>{const o=v,c=d;return g(),f("div",x,[l("div",B,[l("div",C,t(e.value.name),1),l("div",q,t(e.value.start_date)+" "+t(e.value.start_date_week)+" "+t(e.value.request_hour_from)+" - "+t(e.value.request_hour_to),1),l("div",D,"地址: "+t(e.value.address),1)]),a(c,null,{default:k(()=>[a(o,{title:"组织人",value:e.value.user_id},null,8,["value"]),a(o,{title:"参与人",value:"共"+(e.value.employee_ids?.length||0)+"人"},null,8,["value"]),a(o,{title:"描述",value:e.value.remarks},null,8,["value"]),a(o,{title:"任务编号",value:e.value.code},null,8,["value"])]),_:1})])}}},N=p(E,[["__scopeId","data-v-0aa7162a"]]);export{N as default};
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
import{v as T,t as V,c as w,H,I as O,j as x,n as y,F as b,B as I,E as k,C as j,D as G}from"./requests-BndsySCf.js";import{B as K}from"./index-CApHSDPQ.js";import{d as D,g as n,T as M,F,s as L,_ as R,r as J,o as Q,u as U,h as B,i as v,t as p,k as C,l as S,p as W,q as X}from"./index-PqCAfNk6.js";import{I as Y}from"./index-DNCXPfTd.js";const[Z,P]=w("tag"),ee={size:String,mark:Boolean,show:V,type:T("default"),color:String,plain:Boolean,round:Boolean,textColor:String,closeable:Boolean};var te=D({name:Z,props:ee,emits:["close"],setup(t,{slots:e,emit:d}){const s=o=>{o.stopPropagation(),d("close",o)},i=()=>t.plain?{color:t.textColor||t.color,borderColor:t.color}:{color:t.textColor,background:t.color},r=()=>{var o;const{type:m,mark:_,plain:c,round:l,size:u,closeable:f}=t,g={mark:_,plain:c,round:l};u&&(g[u]=u);const h=f&&n(O,{name:"cross",class:[P("close"),H],onClick:s},null);return n("span",{style:i(),class:P([g,m])},[(o=e.default)==null?void 0:o.call(e),h])};return()=>n(M,{name:t.closeable?"van-fade":void 0},{default:()=>[t.show?r():null]})}});const ne=x(te),[ae,a]=w("card"),re={tag:String,num:y,desc:String,thumb:String,title:String,price:y,centered:Boolean,lazyLoad:Boolean,currency:T("¥"),thumbLink:String,originPrice:y};var ce=D({name:ae,props:re,emits:["clickThumb"],setup(t,{slots:e,emit:d}){const s=()=>{if(e.title)return e.title();if(t.title)return n("div",{class:[a("title"),"van-multi-ellipsis--l2"]},[t.title])},i=()=>{if(e.tag||t.tag)return n("div",{class:a("tag")},[e.tag?e.tag():n(ne,{mark:!0,type:"primary"},{default:()=>[t.tag]})])},r=()=>e.thumb?e.thumb():n(Y,{src:t.thumb,fit:"cover",width:"100%",height:"100%",lazyLoad:t.lazyLoad},null),o=()=>{if(e.thumb||t.thumb)return n("a",{href:t.thumbLink,class:a("thumb"),onClick:c=>d("clickThumb",c)},[r(),i()])},m=()=>{if(e.desc)return e.desc();if(t.desc)return n("div",{class:[a("desc"),"van-ellipsis"]},[t.desc])},_=()=>{const c=t.price.toString().split(".");return n("div",null,[n("span",{class:a("price-currency")},[t.currency]),n("span",{class:a("price-integer")},[c[0]]),c.length>1&&n(F,null,[L("."),n("span",{class:a("price-decimal")},[c[1]])])])};return()=>{var c,l,u;const f=e.num||b(t.num),g=e.price||b(t.price),h=e["origin-price"]||b(t.originPrice),N=f||g||h||e.bottom,$=g&&n("div",{class:a("price")},[e.price?e.price():_()]),z=h&&n("div",{class:a("origin-price")},[e["origin-price"]?e["origin-price"]():`${t.currency} ${t.originPrice}`]),A=f&&n("div",{class:a("num")},[e.num?e.num():`x${t.num}`]),E=e.footer&&n("div",{class:a("footer")},[e.footer()]),q=N&&n("div",{class:a("bottom")},[(c=e["price-top"])==null?void 0:c.call(e),$,z,A,(l=e.bottom)==null?void 0:l.call(e)]);return n("div",{class:a()},[n("div",{class:a("header")},[o(),n("div",{class:a("content",{centered:t.centered})},[n("div",null,[s(),m(),(u=e.tags)==null?void 0:u.call(e)]),q])]),E])}}});const oe=x(ce),ie=t=>I("/yuthon/yuthon/salary",{id:t}),le=t=>I("/yuthon/yuthon/salary/confirm",{id:t}),se={class:"container"},ue={class:"header"},de={class:"salary-amount"},me={class:"detail-section"},_e={class:"footer"},ge={__name:"Salary",setup(t){const e=J({}),d=async()=>{k("已确认工资条");const i=parseInt(s.query.id);await le(i),k("提交成功")},s=U();return Q(async()=>{const i=parseInt(s.query.id);try{const r=await ie(i);console.log(r),e.value=r.data}catch(r){k("获取工资条失败"),console.error(r)}}),(i,r)=>{const o=oe,m=G,_=j,c=K;return S(),B("div",se,[v("div",ue,p(e.value.date_from)+" - "+p(e.value.date_to)+" 工资条 ",1),n(o,{class:"salary-card",title:"实发工资",bordered:""},{desc:C(()=>[v("div",de,p(e.value.amount_total),1)]),_:1}),v("div",me,[r[0]||(r[0]=v("div",{class:"section-title"},"明细",-1)),n(_,null,{default:C(()=>[(S(!0),B(F,null,W(e.value.lines_ids,l=>(S(),X(m,{key:l.name,title:l.name,value:l.total},null,8,["title","value"]))),128))]),_:1})]),v("div",_e,[n(c,{type:"primary",block:"",onClick:d},{default:C(()=>r[1]||(r[1]=[L("确认",-1)])),_:1,__:[1]})])])}}},be=R(ge,[["__scopeId","data-v-f0e2f621"]]);export{be as default};
|
||||
import{v as T,t as V,c as w,H,I as O,j as x,n as y,F as b,B as I,E as k,C as j,D as G}from"./requests-5uhdwPNX.js";import{B as K}from"./index-CCaYPYnz.js";import{d as D,g as n,T as M,F,s as L,_ as R,r as J,o as Q,u as U,h as B,i as v,t as p,k as C,l as S,p as W,q as X}from"./index-D74aaX2u.js";import{I as Y}from"./index-DlbF_Keh.js";const[Z,P]=w("tag"),ee={size:String,mark:Boolean,show:V,type:T("default"),color:String,plain:Boolean,round:Boolean,textColor:String,closeable:Boolean};var te=D({name:Z,props:ee,emits:["close"],setup(t,{slots:e,emit:d}){const s=o=>{o.stopPropagation(),d("close",o)},i=()=>t.plain?{color:t.textColor||t.color,borderColor:t.color}:{color:t.textColor,background:t.color},r=()=>{var o;const{type:m,mark:_,plain:c,round:l,size:u,closeable:f}=t,g={mark:_,plain:c,round:l};u&&(g[u]=u);const h=f&&n(O,{name:"cross",class:[P("close"),H],onClick:s},null);return n("span",{style:i(),class:P([g,m])},[(o=e.default)==null?void 0:o.call(e),h])};return()=>n(M,{name:t.closeable?"van-fade":void 0},{default:()=>[t.show?r():null]})}});const ne=x(te),[ae,a]=w("card"),re={tag:String,num:y,desc:String,thumb:String,title:String,price:y,centered:Boolean,lazyLoad:Boolean,currency:T("¥"),thumbLink:String,originPrice:y};var ce=D({name:ae,props:re,emits:["clickThumb"],setup(t,{slots:e,emit:d}){const s=()=>{if(e.title)return e.title();if(t.title)return n("div",{class:[a("title"),"van-multi-ellipsis--l2"]},[t.title])},i=()=>{if(e.tag||t.tag)return n("div",{class:a("tag")},[e.tag?e.tag():n(ne,{mark:!0,type:"primary"},{default:()=>[t.tag]})])},r=()=>e.thumb?e.thumb():n(Y,{src:t.thumb,fit:"cover",width:"100%",height:"100%",lazyLoad:t.lazyLoad},null),o=()=>{if(e.thumb||t.thumb)return n("a",{href:t.thumbLink,class:a("thumb"),onClick:c=>d("clickThumb",c)},[r(),i()])},m=()=>{if(e.desc)return e.desc();if(t.desc)return n("div",{class:[a("desc"),"van-ellipsis"]},[t.desc])},_=()=>{const c=t.price.toString().split(".");return n("div",null,[n("span",{class:a("price-currency")},[t.currency]),n("span",{class:a("price-integer")},[c[0]]),c.length>1&&n(F,null,[L("."),n("span",{class:a("price-decimal")},[c[1]])])])};return()=>{var c,l,u;const f=e.num||b(t.num),g=e.price||b(t.price),h=e["origin-price"]||b(t.originPrice),N=f||g||h||e.bottom,$=g&&n("div",{class:a("price")},[e.price?e.price():_()]),z=h&&n("div",{class:a("origin-price")},[e["origin-price"]?e["origin-price"]():`${t.currency} ${t.originPrice}`]),A=f&&n("div",{class:a("num")},[e.num?e.num():`x${t.num}`]),E=e.footer&&n("div",{class:a("footer")},[e.footer()]),q=N&&n("div",{class:a("bottom")},[(c=e["price-top"])==null?void 0:c.call(e),$,z,A,(l=e.bottom)==null?void 0:l.call(e)]);return n("div",{class:a()},[n("div",{class:a("header")},[o(),n("div",{class:a("content",{centered:t.centered})},[n("div",null,[s(),m(),(u=e.tags)==null?void 0:u.call(e)]),q])]),E])}}});const oe=x(ce),ie=t=>I("/yuthon/yuthon/salary",{id:t}),le=t=>I("/yuthon/yuthon/salary/confirm",{id:t}),se={class:"container"},ue={class:"header"},de={class:"salary-amount"},me={class:"detail-section"},_e={class:"footer"},ge={__name:"Salary",setup(t){const e=J({}),d=async()=>{k("已确认工资条");const i=parseInt(s.query.id);await le(i),k("提交成功")},s=U();return Q(async()=>{const i=parseInt(s.query.id);try{const r=await ie(i);console.log(r),e.value=r.data}catch(r){k("获取工资条失败"),console.error(r)}}),(i,r)=>{const o=oe,m=G,_=j,c=K;return S(),B("div",se,[v("div",ue,p(e.value.date_from)+" - "+p(e.value.date_to)+" 工资条 ",1),n(o,{class:"salary-card",title:"实发工资",bordered:""},{desc:C(()=>[v("div",de,p(e.value.amount_total),1)]),_:1}),v("div",me,[r[0]||(r[0]=v("div",{class:"section-title"},"明细",-1)),n(_,null,{default:C(()=>[(S(!0),B(F,null,W(e.value.lines_ids,l=>(S(),X(m,{key:l.name,title:l.name,value:l.total},null,8,["title","value"]))),128))]),_:1})]),v("div",_e,[n(c,{type:"primary",block:"",onClick:d},{default:C(()=>r[1]||(r[1]=[L("确认",-1)])),_:1,__:[1]})])])}}},be=R(ge,[["__scopeId","data-v-f0e2f621"]]);export{be as default};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
import{K as z,c as I,U as R,aa as C,W as D,v as l,n as L,I as N,p as U,L as p,j as q}from"./requests-BndsySCf.js";import{d as w,g as o}from"./index-PqCAfNk6.js";const[O,a]=I("button"),_=z({},D,{tag:l("button"),text:String,icon:String,type:l("default"),size:l("normal"),color:String,block:Boolean,plain:Boolean,round:Boolean,square:Boolean,loading:Boolean,hairline:Boolean,disabled:Boolean,iconPrefix:String,nativeType:l("button"),loadingSize:L,loadingText:String,loadingType:String,iconPosition:l("left")});var j=w({name:O,props:_,emits:["click"],setup(e,{emit:g,slots:t}){const f=R(),b=()=>t.loading?t.loading():o(p,{size:e.loadingSize,type:e.loadingType,class:a("loading")},null),c=()=>{if(e.loading)return b();if(t.icon)return o("div",{class:a("icon")},[t.icon()]);if(e.icon)return o(N,{name:e.icon,class:a("icon"),classPrefix:e.iconPrefix},null)},m=()=>{let n;if(e.loading?n=e.loadingText:n=t.default?t.default():e.text,n)return o("span",{class:a("text")},[n])},x=()=>{const{color:n,plain:r}=e;if(n){const i={color:r?n:"white"};return r||(i.background=n),n.includes("gradient")?i.border=0:i.borderColor=n,i}},y=n=>{e.loading?U(n):e.disabled||(g("click",n),f())};return()=>{const{tag:n,type:r,size:i,block:S,round:B,plain:P,square:k,loading:T,disabled:s,hairline:d,nativeType:v,iconPosition:u}=e,h=[a([r,i,{plain:P,block:S,round:B,square:k,loading:T,disabled:s,hairline:d}]),{[C]:d}];return o(n,{type:v,class:h,style:x(),disabled:s,onClick:y},{default:()=>[o("div",{class:a("content")},[u==="left"&&c(),m(),u==="right"&&c()])]})}}});const V=q(j);export{V as B};
|
||||
import{K as z,c as I,U as R,ab as C,W as D,v as l,n as L,I as N,p as U,L as p,j as q}from"./requests-5uhdwPNX.js";import{d as w,g as o}from"./index-D74aaX2u.js";const[O,a]=I("button"),_=z({},D,{tag:l("button"),text:String,icon:String,type:l("default"),size:l("normal"),color:String,block:Boolean,plain:Boolean,round:Boolean,square:Boolean,loading:Boolean,hairline:Boolean,disabled:Boolean,iconPrefix:String,nativeType:l("button"),loadingSize:L,loadingText:String,loadingType:String,iconPosition:l("left")});var j=w({name:O,props:_,emits:["click"],setup(e,{emit:g,slots:t}){const f=R(),b=()=>t.loading?t.loading():o(p,{size:e.loadingSize,type:e.loadingType,class:a("loading")},null),c=()=>{if(e.loading)return b();if(t.icon)return o("div",{class:a("icon")},[t.icon()]);if(e.icon)return o(N,{name:e.icon,class:a("icon"),classPrefix:e.iconPrefix},null)},m=()=>{let n;if(e.loading?n=e.loadingText:n=t.default?t.default():e.text,n)return o("span",{class:a("text")},[n])},x=()=>{const{color:n,plain:r}=e;if(n){const i={color:r?n:"white"};return r||(i.background=n),n.includes("gradient")?i.border=0:i.borderColor=n,i}},y=n=>{e.loading?U(n):e.disabled||(g("click",n),f())};return()=>{const{tag:n,type:r,size:i,block:S,round:B,plain:P,square:k,loading:T,disabled:s,hairline:d,nativeType:v,iconPosition:u}=e,h=[a([r,i,{plain:P,block:S,round:B,square:k,loading:T,disabled:s,hairline:d}]),{[C]:d}];return o(n,{type:v,class:h,style:x(),disabled:s,onClick:y},{default:()=>[o("div",{class:a("content")},[u==="left"&&c(),m(),u==="right"&&c()])]})}}});const V=q(j);export{V as B};
|
||||
+2
-2
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
import{v as P,t as S,n as d,c as B,G as u,F as $,J as j,I as D,j as _}from"./requests-BndsySCf.js";import{d as C,r as f,v as F,c as N,w as R,f as U,o as G,n as z,g as n,x as J,y as M,m as b}from"./index-PqCAfNk6.js";const[O,i]=B("image"),T={src:String,alt:String,fit:String,position:String,round:Boolean,block:Boolean,width:d,height:d,radius:d,lazyLoad:Boolean,iconSize:d,showError:S,errorIcon:P("photo-fail"),iconPrefix:String,showLoading:S,loadingIcon:P("photo"),crossorigin:String,referrerpolicy:String,decoding:String};var V=C({name:O,props:T,emits:["load","error"],setup(r,{emit:g,slots:c}){const t=f(!1),a=f(!0),o=f(),{$Lazyload:l}=F().proxy,x=N(()=>{const e={width:u(r.width),height:u(r.height)};return $(r.radius)&&(e.overflow="hidden",e.borderRadius=u(r.radius)),e});R(()=>r.src,()=>{t.value=!1,a.value=!0});const v=e=>{a.value&&(a.value=!1,g("load",e))},m=()=>{const e=new Event("load");Object.defineProperty(e,"target",{value:o.value,enumerable:!0}),v(e)},h=e=>{t.value=!0,a.value=!1,g("error",e)},y=(e,s,I)=>I?I():n(D,{name:e,size:r.iconSize,class:s,classPrefix:r.iconPrefix},null),E=()=>{if(a.value&&r.showLoading)return n("div",{class:i("loading")},[y(r.loadingIcon,i("loading-icon"),c.loading)]);if(t.value&&r.showError)return n("div",{class:i("error")},[y(r.errorIcon,i("error-icon"),c.error)])},k=()=>{if(t.value||!r.src)return;const e={alt:r.alt,class:i("img"),decoding:r.decoding,style:{objectFit:r.fit,objectPosition:r.position},crossorigin:r.crossorigin,referrerpolicy:r.referrerpolicy};return r.lazyLoad?J(n("img",b({ref:o},e),null),[[M("lazy"),r.src]]):n("img",b({ref:o,src:r.src,onLoad:v,onError:h},e),null)},w=({el:e})=>{const s=()=>{e===o.value&&a.value&&m()};o.value?s():z(s)},L=({el:e})=>{e===o.value&&!t.value&&h()};return l&&j&&(l.$on("loaded",w),l.$on("error",L),U(()=>{l.$off("loaded",w),l.$off("error",L)})),G(()=>{z(()=>{var e;(e=o.value)!=null&&e.complete&&!r.lazyLoad&&m()})}),()=>{var e;return n("div",{class:i({round:r.round,block:r.block}),style:x.value},[k(),E(),(e=c.default)==null?void 0:e.call(c)])}}});const H=_(V);export{H as I};
|
||||
import{v as P,t as S,n as d,c as B,G as u,F as $,J as j,I as D,j as _}from"./requests-5uhdwPNX.js";import{d as C,r as f,v as F,c as N,w as R,f as U,o as G,n as z,g as n,x as J,y as M,m as b}from"./index-D74aaX2u.js";const[O,i]=B("image"),T={src:String,alt:String,fit:String,position:String,round:Boolean,block:Boolean,width:d,height:d,radius:d,lazyLoad:Boolean,iconSize:d,showError:S,errorIcon:P("photo-fail"),iconPrefix:String,showLoading:S,loadingIcon:P("photo"),crossorigin:String,referrerpolicy:String,decoding:String};var V=C({name:O,props:T,emits:["load","error"],setup(r,{emit:g,slots:c}){const t=f(!1),a=f(!0),o=f(),{$Lazyload:l}=F().proxy,x=N(()=>{const e={width:u(r.width),height:u(r.height)};return $(r.radius)&&(e.overflow="hidden",e.borderRadius=u(r.radius)),e});R(()=>r.src,()=>{t.value=!1,a.value=!0});const v=e=>{a.value&&(a.value=!1,g("load",e))},m=()=>{const e=new Event("load");Object.defineProperty(e,"target",{value:o.value,enumerable:!0}),v(e)},h=e=>{t.value=!0,a.value=!1,g("error",e)},y=(e,s,I)=>I?I():n(D,{name:e,size:r.iconSize,class:s,classPrefix:r.iconPrefix},null),E=()=>{if(a.value&&r.showLoading)return n("div",{class:i("loading")},[y(r.loadingIcon,i("loading-icon"),c.loading)]);if(t.value&&r.showError)return n("div",{class:i("error")},[y(r.errorIcon,i("error-icon"),c.error)])},k=()=>{if(t.value||!r.src)return;const e={alt:r.alt,class:i("img"),decoding:r.decoding,style:{objectFit:r.fit,objectPosition:r.position},crossorigin:r.crossorigin,referrerpolicy:r.referrerpolicy};return r.lazyLoad?J(n("img",b({ref:o},e),null),[[M("lazy"),r.src]]):n("img",b({ref:o,src:r.src,onLoad:v,onError:h},e),null)},w=({el:e})=>{const s=()=>{e===o.value&&a.value&&m()};o.value?s():z(s)},L=({el:e})=>{e===o.value&&!t.value&&h()};return l&&j&&(l.$on("loaded",w),l.$on("error",L),U(()=>{l.$off("loaded",w),l.$off("error",L)})),G(()=>{z(()=>{var e;(e=o.value)!=null&&e.complete&&!r.lazyLoad&&m()})}),()=>{var e;return n("div",{class:i({round:r.round,block:r.block}),style:x.value},[k(),E(),(e=c.default)==null?void 0:e.call(c)])}}});const H=_(V);export{H as I};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -5,7 +5,8 @@
|
||||
<link rel="icon" href="/yuthon_base/static/webh5/favicon.ico">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>天投云</title>
|
||||
<script type="module" crossorigin src="/yuthon_base/static/webh5/assets/index-PqCAfNk6.js"></script>
|
||||
<script type="module" crossorigin src="/yuthon_base/static/webh5/assets/index-D74aaX2u.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/yuthon_base/static/webh5/assets/index-D93jrBSo.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
|
||||
@@ -14,26 +14,28 @@
|
||||
</h1>
|
||||
</div>
|
||||
<div class="o_employee_avatar m-0 p-0">
|
||||
<field name="image_1920" widget="image" class="oe_avatar m-0" options="{"zoom": true, "preview_image":"avatar_128"}"/>
|
||||
<field name="image_1920" widget="image" class="oe_avatar m-0"
|
||||
options="{"zoom": true, "preview_image":"avatar_128"}"/>
|
||||
</div>
|
||||
</div>
|
||||
<group col="2" readonly="1">
|
||||
<group>
|
||||
<field name="mobile_phone" />
|
||||
<field name="mobile_phone"/>
|
||||
<field name="work_phone"/>
|
||||
<field name="work_email"/>
|
||||
<field name="user_state" readonly="1" options="{'no_open': True}"/>
|
||||
<field name="user_role_id" readonly="1" invisible="1"/>
|
||||
<field name="user_role_ids" widget="many2many_tags" invisible="1"/>
|
||||
<field name="company_id" readonly="1" options="{'no_open': True}"/>
|
||||
<field name="user_state" readonly="1" options="{'no_open': True}"/>
|
||||
<field name="user_role_id" readonly="1" invisible="1"/>
|
||||
<field name="user_role_ids" widget="many2many_tags" invisible="1"/>
|
||||
<field name="company_id" readonly="1" options="{'no_open': True}"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="department_id" readonly="1" options="{'no_open': True}"/>
|
||||
<field name="department_ids" widget="many2many_tags" readonly="1" options="{'no_open': True}"/>
|
||||
<field name="department_ids" widget="many2many_tags" readonly="1"
|
||||
options="{'no_open': True}"/>
|
||||
<field name="job_id" options="{'no_open': True}"/>
|
||||
<field name="number" readonly="1"/>
|
||||
<field name="user_number" readonly="1"/>
|
||||
<field name="contract_type_id" options="{'no_open': True}"/>
|
||||
<field name="contract_type_id" options="{'no_open': True}"/>
|
||||
<field name="parent_id" readonly="1" options="{'no_open': True}" string="上级领导"/>
|
||||
</group>
|
||||
</group>
|
||||
@@ -95,7 +97,7 @@
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
</record>
|
||||
<record id="view_employee_inherit_del_form" model="ir.ui.view">
|
||||
<field name="name">hr.employee.inherit.del.form.inherit</field>
|
||||
<field name="model">hr.employee</field>
|
||||
@@ -126,18 +128,20 @@
|
||||
<attribute name="invisible">1</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='company_id']" position="attributes">
|
||||
<attribute name="options">"{'no_open': True}"</attribute>
|
||||
<attribute name="options">"{'no_open': True}"</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='work_email']" position="attributes">
|
||||
<attribute name="options">"{'no_open': True}"</attribute>
|
||||
<attribute name="options">"{'no_open': True}"</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='department_id']" position="attributes">
|
||||
<attribute name="options">"{'no_open': True}"</attribute>
|
||||
<attribute name="options">"{'no_open': True}"</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='work_email']" position="after">
|
||||
<field name="user_state"/>
|
||||
<field name="user_role_id" domain="[('company_id', '=', company_id), ('is_main', '=', True)]" options="{'no_open': True}"/>
|
||||
<field name="user_role_ids" widget="many2many_tags" domain="[('company_id', '=', company_id), ('is_main', '!=', True)]" options="{'no_open': True}"/>
|
||||
<field name="user_role_id" domain="[('company_id', '=', company_id), ('is_main', '=', True)]"
|
||||
options="{'no_open': True}"/>
|
||||
<field name="user_role_ids" widget="many2many_tags"
|
||||
domain="[('company_id', '=', company_id), ('is_main', '!=', True)]" options="{'no_open': True}"/>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='department_id']" position="attributes">
|
||||
<attribute name="widget">ztree_select</attribute>
|
||||
@@ -197,7 +201,8 @@
|
||||
</group>
|
||||
<group string="家庭状态">
|
||||
<field name="marital"/>
|
||||
<field name="marriage_documents_id" invisible="marital != 'married'" options="{'no_create': True}"
|
||||
<field name="marriage_documents_id" invisible="marital != 'married'"
|
||||
options="{'no_create': True}"
|
||||
widget="preview_many2one"/>
|
||||
<field name="spouse_complete_name" invisible="marital not in ['married', 'cohabitant']"/>
|
||||
<field name="spouse_birthdate" invisible="marital not in ['married', 'cohabitant']"/>
|
||||
@@ -209,10 +214,10 @@
|
||||
<attribute name="invisible">1</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='job_id']" position="attributes">
|
||||
<attribute name="options">"{'no_open': True}"</attribute>
|
||||
<attribute name="options">"{'no_open': True}"</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='parent_id']" position="attributes">
|
||||
<attribute name="options">"{'no_create': True, 'no_open': True}"</attribute>
|
||||
<attribute name="options">"{'no_create': True, 'no_open': True}"</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='job_id']" position="after">
|
||||
<field name="number"/>
|
||||
@@ -220,10 +225,10 @@
|
||||
<field name="contract_type_id" options="{'no_open': True}"/>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='department_id']" position="attributes">
|
||||
<attribute name="readonly">1</attribute>
|
||||
<attribute name="readonly">1</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='job_id']" position="attributes">
|
||||
<attribute name="readonly">1</attribute>
|
||||
<attribute name="readonly">1</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='identification_id']" position="after">
|
||||
<field name="is_identification" invisible="1"/>
|
||||
@@ -234,7 +239,7 @@
|
||||
<attribute name="invisible">1</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='category_ids']" position="attributes">
|
||||
<attribute name="invisible">1</attribute>
|
||||
<attribute name="invisible">1</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='wecom_userid']" position="after">
|
||||
<field name="user_type"/>
|
||||
@@ -243,7 +248,7 @@
|
||||
<div>
|
||||
<field name="retire_years" style="width: 5%"/>
|
||||
</div>
|
||||
<field name="user_salary"/>
|
||||
<field name="user_salary"/>
|
||||
</xpath>
|
||||
<xpath expr="//group[@name='active_group']" position="after">
|
||||
<group string="工作信息">
|
||||
@@ -449,15 +454,15 @@
|
||||
</field>
|
||||
</group>
|
||||
<group col="3" string="大病医疗">
|
||||
<group>
|
||||
<field name="hospital_name"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="hospital_related"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="original_amount"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="hospital_name"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="hospital_related"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="original_amount"/>
|
||||
</group>
|
||||
</group>
|
||||
<group col="3" string="维续教育">
|
||||
<group>
|
||||
@@ -470,28 +475,28 @@
|
||||
<field name="education_deduction"/>
|
||||
</group>
|
||||
</group>
|
||||
<group col="3" string="住房贷款">
|
||||
<group>
|
||||
<field name="loan_name"/>
|
||||
<group col="3" string="住房贷款">
|
||||
<group>
|
||||
<field name="loan_name"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="loan_end_date"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="loan_deduction"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<field name="loan_end_date"/>
|
||||
<group col="3" string="住房租金">
|
||||
<group>
|
||||
<field name="rent_name"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="rent_end_date"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="rent_deduction"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<field name="loan_deduction"/>
|
||||
</group>
|
||||
</group>
|
||||
<group col="3" string="住房租金">
|
||||
<group>
|
||||
<field name="rent_name"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="rent_end_date"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="rent_deduction"/>
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
</xpath>
|
||||
</field>
|
||||
@@ -504,42 +509,42 @@
|
||||
<xpath expr="//tree" position="replace">
|
||||
<tree string="员工列表" banner_route="/employee/banner/route" limit="15"
|
||||
decoration-info="end_comparison == 'blue'"
|
||||
decoration-danger="end_comparison == 'red'"
|
||||
decoration-warning="end_comparison == 'yellow'"
|
||||
decoration-danger="end_comparison == 'red'"
|
||||
decoration-warning="end_comparison == 'yellow'"
|
||||
>
|
||||
<header>
|
||||
</header>
|
||||
<field name="end_comparison" column_invisible="1"/>
|
||||
<field name="name"/>
|
||||
<field name="department_id"/>
|
||||
<field name="job_id"/>
|
||||
<field name="work_phone"/>
|
||||
<field name="mobile_phone"/>
|
||||
<field name="work_email"/>
|
||||
<field name="political_aspects"/>
|
||||
<field name="dang_data"/>
|
||||
<field name="contract_type_id"/>
|
||||
<field name="date_end"/>
|
||||
<!-- <field name="version"/>-->
|
||||
<field name="identification_id"/>
|
||||
<field name="user_sex"/>
|
||||
<field name="nation"/>
|
||||
<field name="birthday_month"/>
|
||||
<field name="old"/>
|
||||
<field name="entry_date"/>
|
||||
<field name="confirmation_date"/>
|
||||
<field name="interrupt_work_month"/>
|
||||
<field name="cumulative_work_month"/>
|
||||
<field name="cumulative_work_years"/>
|
||||
<field name="graduate_school"/>
|
||||
<field name="profession"/>
|
||||
<field name="high_degree"/>
|
||||
<field name="high_degree2"/>
|
||||
<field name="graduate_date"/>
|
||||
<field name="user_type"/>
|
||||
<field name="user_number"/>
|
||||
<field name="company_id"/>
|
||||
<field name="work_location_id" column_invisible="1"/>
|
||||
<field name="end_comparison" column_invisible="1"/>
|
||||
<field name="name"/>
|
||||
<field name="department_id"/>
|
||||
<field name="job_id"/>
|
||||
<field name="work_phone"/>
|
||||
<field name="mobile_phone"/>
|
||||
<field name="work_email"/>
|
||||
<field name="political_aspects"/>
|
||||
<field name="dang_data"/>
|
||||
<field name="contract_type_id"/>
|
||||
<field name="date_end"/>
|
||||
<!-- <field name="version"/>-->
|
||||
<field name="identification_id"/>
|
||||
<field name="user_sex"/>
|
||||
<field name="nation"/>
|
||||
<field name="birthday_month"/>
|
||||
<field name="old"/>
|
||||
<field name="entry_date"/>
|
||||
<field name="confirmation_date"/>
|
||||
<field name="interrupt_work_month"/>
|
||||
<field name="cumulative_work_month"/>
|
||||
<field name="cumulative_work_years"/>
|
||||
<field name="graduate_school"/>
|
||||
<field name="profession"/>
|
||||
<field name="high_degree"/>
|
||||
<field name="high_degree2"/>
|
||||
<field name="graduate_date"/>
|
||||
<field name="user_type"/>
|
||||
<field name="user_number"/>
|
||||
<field name="company_id"/>
|
||||
<field name="work_location_id" column_invisible="1"/>
|
||||
</tree>
|
||||
</xpath>
|
||||
</field>
|
||||
@@ -584,13 +589,17 @@
|
||||
<field name="pinyin_min"/>
|
||||
</xpath>
|
||||
<xpath expr="//filter[@name='group_manager']" position="after">
|
||||
<filter name="'group_is_membership" string="工会会员" context="{'group_by': 'is_membership'}"/>
|
||||
<filter name="group_is_membership" string="工会会员" context="{'group_by': 'is_membership'}"/>
|
||||
</xpath>
|
||||
|
||||
<xpath expr="//search" position="inside">
|
||||
<header_search>
|
||||
<quick_filter string="状态">
|
||||
<filter string="在职" name="user_state" domain="[('user_state', '=', 'in')]" />
|
||||
<filter string="离职" name="to_do" domain="[('user_state', '=', 'leave')]" />
|
||||
<filter string="退休" name="done" domain="[('user_state', '=', 'withdraw')]"/>
|
||||
<filter string="即将到期" name="end" domain="[('end_comparison', 'in', ['red', 'yellow', 'blue'])]" shownumber="1"/>
|
||||
<filter string="在职" name="user_state" domain="[('user_state', '=', 'in')]"/>
|
||||
<filter string="离职" name="to_do" domain="[('user_state', '=', 'leave')]"/>
|
||||
<filter string="退休" name="done" domain="[('user_state', '=', 'withdraw')]"/>
|
||||
<filter string="即将到期" name="end"
|
||||
domain="[('end_comparison', 'in', ['red', 'yellow', 'blue'])]" shownumber="1"/>
|
||||
</quick_filter>
|
||||
</header_search>
|
||||
</xpath>
|
||||
@@ -602,15 +611,15 @@
|
||||
<field name="binding_model_id" ref="hr.model_hr_employee"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">action = model.action_hr_employee()</field>
|
||||
<field name="groups_id" eval="[(4, ref('base.group_system'))]"/>
|
||||
<field name="groups_id" eval="[(4, ref('base.group_system'))]"/>
|
||||
</record>
|
||||
<record id="all_write_social_base" model="ir.actions.server">
|
||||
<record id="all_write_social_base" model="ir.actions.server">
|
||||
<field name="name">更新公积金</field>
|
||||
<field name="model_id" ref="hr.model_hr_employee"/>
|
||||
<field name="binding_model_id" ref="hr.model_hr_employee"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">action = model.update_social_base()</field>
|
||||
<field name="groups_id" eval="[(4, ref('base.group_system'))]"/>
|
||||
<field name="groups_id" eval="[(4, ref('base.group_system'))]"/>
|
||||
</record>
|
||||
<record id="hr.open_view_employee_list_my" model="ir.actions.act_window">
|
||||
<field name="view_mode">tree,kanban,form,activity,graph,pivot,hierarchy</field>
|
||||
@@ -621,7 +630,7 @@
|
||||
<record id="all_employee_contacts_action" model="ir.actions.act_window">
|
||||
<field name="name">通讯录</field>
|
||||
<field name="res_model">hr.employee</field>
|
||||
<field name="domain">[('is_company','=',True)]</field>
|
||||
<field name="domain">[('is_company', '=', True)]</field>
|
||||
<field name="view_mode">tree,kanban,form,search</field>
|
||||
<field name="view_ids" eval="[(5, 0, 0),
|
||||
(0, 0, {'view_mode': 'tree', 'view_id': ref('yuthon_hr_employee.view_employee_contacts_tree')}),
|
||||
@@ -649,7 +658,7 @@
|
||||
<record id="all_employee_member_action" model="ir.actions.act_window">
|
||||
<field name="name">会员列表</field>
|
||||
<field name="res_model">hr.employee</field>
|
||||
<field name="domain">[('is_membership','=',True), ('is_company','=',True)]</field>
|
||||
<field name="domain">[('is_membership', '=', True), ('is_company', '=', True)]</field>
|
||||
<field name="context">{'header_search_default_user_state': 1}</field>
|
||||
<field name="view_mode">tree,kanban,form,search</field>
|
||||
<field name="view_ids" eval="[(5, 0, 0),
|
||||
@@ -660,30 +669,30 @@
|
||||
<field name="view_mode">tree,kanban,form,activity,graph,pivot,hierarchy</field>
|
||||
</record>
|
||||
|
||||
<!-- <record id="all_data_write_time_form" model="ir.actions.server">-->
|
||||
<!-- <field name="name">批量更新时间表</field>-->
|
||||
<!-- <field name="model_id" ref="hr.model_hr_employee"/>-->
|
||||
<!-- <field name="binding_model_id" ref="hr.model_hr_employee"/>-->
|
||||
<!-- <field name="state">code</field>-->
|
||||
<!-- <field name="code">action = model.action_hr_time_form()</field>-->
|
||||
<!-- </record>-->
|
||||
<record id="all_data_write_employee_state" model="ir.actions.server">
|
||||
<field name="name">更新员工主角色</field>
|
||||
<field name="model_id" ref="hr.model_hr_employee"/>
|
||||
<field name="binding_model_id" ref="hr.model_hr_employee"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">action = model.action_hr_state()</field>
|
||||
</record>
|
||||
<!-- <record id="all_data_write_time_form" model="ir.actions.server">-->
|
||||
<!-- <field name="name">批量更新时间表</field>-->
|
||||
<!-- <field name="model_id" ref="hr.model_hr_employee"/>-->
|
||||
<!-- <field name="binding_model_id" ref="hr.model_hr_employee"/>-->
|
||||
<!-- <field name="state">code</field>-->
|
||||
<!-- <field name="code">action = model.action_hr_time_form()</field>-->
|
||||
<!-- </record>-->
|
||||
<record id="all_data_write_employee_state" model="ir.actions.server">
|
||||
<field name="name">更新员工主角色</field>
|
||||
<field name="model_id" ref="hr.model_hr_employee"/>
|
||||
<field name="binding_model_id" ref="hr.model_hr_employee"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">action = model.action_hr_state()</field>
|
||||
</record>
|
||||
|
||||
<!-- <record id="view_employee_form_inherit_hr_attendance" model="ir.ui.view">-->
|
||||
<!-- <field name="name">hr.employee.attendance.form</field>-->
|
||||
<!-- <field name="model">hr.employee</field>-->
|
||||
<!-- <field name="inherit_id" ref="hr_attendance.view_employee_form_inherit_hr_attendance"/>-->
|
||||
<!-- <field name="arch" type="xml">-->
|
||||
<!-- <!– 源码的信息暂时隐藏 –>-->
|
||||
<!-- <xpath expr="//group[@name='managers']" position="attributes">-->
|
||||
<!-- <attribute name="invisible">1</attribute>-->
|
||||
<!-- </xpath>-->
|
||||
<!-- </field>-->
|
||||
<!-- </record>-->
|
||||
<!-- <record id="view_employee_form_inherit_hr_attendance" model="ir.ui.view">-->
|
||||
<!-- <field name="name">hr.employee.attendance.form</field>-->
|
||||
<!-- <field name="model">hr.employee</field>-->
|
||||
<!-- <field name="inherit_id" ref="hr_attendance.view_employee_form_inherit_hr_attendance"/>-->
|
||||
<!-- <field name="arch" type="xml">-->
|
||||
<!-- <!– 源码的信息暂时隐藏 –>-->
|
||||
<!-- <xpath expr="//group[@name='managers']" position="attributes">-->
|
||||
<!-- <attribute name="invisible">1</attribute>-->
|
||||
<!-- </xpath>-->
|
||||
<!-- </field>-->
|
||||
<!-- </record>-->
|
||||
</odoo>
|
||||
@@ -195,11 +195,11 @@
|
||||
action="attendance_iot.attendance_iot_action"
|
||||
sequence="21"/>
|
||||
|
||||
<menuitem id="menu_iot_message"
|
||||
name="考勤机Mqtt信息"
|
||||
parent="hr_attendance_root_board_menu"
|
||||
action="attendance_iot.iot_message_act_window"
|
||||
sequence="22"/>
|
||||
<!-- <menuitem id="menu_iot_message"-->
|
||||
<!-- name="考勤机Mqtt信息"-->
|
||||
<!-- parent="hr_attendance_root_board_menu"-->
|
||||
<!-- action="attendance_iot.iot_message_act_window"-->
|
||||
<!-- sequence="22"/>-->
|
||||
|
||||
<menuitem id="attendance_resources_setting_root_board"
|
||||
name="配置"
|
||||
|
||||
Reference in New Issue
Block a user