dootask/public/js/build/dashboard.80e25fd2.js
2026-07-20 14:21:51 +00:00

2 lines
44 KiB
JavaScript
Vendored

import{m as h,a as v}from"./vuex.cc7cb26e.js";import{n as m,h as f,e as $}from"./app.1e00fc89.js";import{D as y}from"./DepartmentOwnerView.40de0e2f.js";import"./jquery.99163cb9.js";import"./@babel.9410f858.js";import"./dayjs.0bb0f368.js";import"./localforage.6e50a401.js";import"./markdown-it.0450edb4.js";import"./mdurl.ce6c1dd8.js";import"./uc.micro.8d343c98.js";import"./entities.48a44fec.js";import"./linkify-it.c5e8196e.js";import"./punycode.js.4b3f125a.js";import"./highlight.js.cbbfb885.js";import"./markdown-it-link-attributes.e1d5d151.js";import"./@traptitech.acea8861.js";import"./vue.adba9046.js";import"./openpgp_hi.15f91b1d.js";import"./axios.37c7f908.js";import"./mitt.1ea0a2a3.js";import"./quill-hi.ca2ea0cc.js";import"./parchment.d5c5924e.js";import"./quill-delta.385a10bf.js";import"./fast-diff.f17881f3.js";import"./lodash.clonedeep.3cc09a31.js";import"./lodash.isequal.dbdc2157.js";import"./eventemitter3.78b735ad.js";import"./lodash-es.76e3a28b.js";import"./quill-mention-hi.4eeb5a2d.js";import"./view-design-hi.f1128b4d.js";import"./html-to-md.f297036e.js";import"./lodash.8fcd6fd4.js";import"./vue-router.2d566cd7.js";import"./vue-clipboard2.fd43a5bc.js";import"./clipboard.37b37361.js";import"./vuedraggable.f464b992.js";import"./sortablejs.3488b922.js";import"./vue-resize-observer.5af23a43.js";import"./element-sea.f8a64907.js";import"./deepmerge.cecf392e.js";import"./resize-observer-polyfill.5d591c5f.js";import"./throttle-debounce.7c3948b2.js";import"./babel-helper-vue-jsx-merge-props.5ed215c3.js";import"./normalize-wheel.2a034b9f.js";import"./async-validator.dca2b951.js";import"./babel-runtime.4773988a.js";import"./core-js.314b4a1d.js";var _={data(){return{nowTime:$A.dayjs().unix(),nowInter:null}},methods:{deadlineClass(t){if(!t)return"";const a=$A.dayjs(t),s=$A.daytz(this.nowTime);return a<=s?"end-overdue":a.format("YYYY-MM-DD")===s.format("YYYY-MM-DD")?"end-today":""},deadlineText(t){if(!t)return"";const a=$A.dayjs(t),s=$A.daytz(this.nowTime);if(a<=s){const e=s.startOf("day").diff(a.startOf("day"),"day");return e>0?this.$L("\u903E\u671F (*) \u5929",e):this.$L("\u903E\u671F (*) \u5C0F\u65F6",Math.max(s.diff(a,"hour"),1))}return a.format("YYYY-MM-DD")===s.format("YYYY-MM-DD")?`${this.$L("\u4ECA\u5929")} ${a.format("HH:mm")}`:a.format("YYYY-MM-DD")===s.clone().add(1,"day").format("YYYY-MM-DD")?`${this.$L("\u660E\u5929")} ${a.format("HH:mm")}`:a.year()===s.year()?a.format("MM-DD"):a.format("YYYY-MM-DD")},loadInterval(t){this.nowInter&&(clearInterval(this.nowInter),this.nowInter=null),t!==!1&&(this.nowInter=setInterval(a=>{this.nowTime=$A.dayjs().unix()},10*1e3))}}},C=function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("div",{staticClass:"dashboard-team"},[s("ul",{staticClass:"dashboard-cards"},[s("li",{on:{click:function(e){return t.onBlock("uncompleted")}}},[s("div",{staticClass:"card-label"},[t._v(t._s(t.$L("\u672A\u5B8C\u6210")))]),s("div",{staticClass:"card-data"},[s("span",{staticClass:"card-num"},[t._v(t._s(t.blocks.uncompleted||0))]),s("span",{staticClass:"card-sub"},[t._v(t._s(t.$L("[task_unit].\u9879")))])]),s("div",{staticClass:"card-link"},[t._v(t._s(t.$L("\u67E5\u770B\u4EFB\u52A1"))+" \u2192")])]),s("li",{on:{click:function(e){return t.onBlock("overdue")}}},[s("div",{staticClass:"card-label"},[t._v(t._s(t.$L("\u5DF2\u8D85\u671F")))]),s("div",{staticClass:"card-data"},[s("span",{staticClass:"card-num num-red"},[t._v(t._s(t.blocks.overdue||0))]),s("span",{staticClass:"card-sub"},[t._v(t._s(t.$L("[task_unit].\u9879"))),t.blocks.overdue_owner_count?[t._v(" \xB7 "+t._s(t.$L("\u6D89\u53CA (*) \u4EBA",t.blocks.overdue_owner_count)))]:t._e()],2)]),s("div",{staticClass:"card-link link-red"},[t._v(t._s(t.$L("\u67E5\u770B\u4EFB\u52A1"))+" \u2192")])]),s("li",{on:{click:function(e){return t.onBlock("soon")}}},[s("div",{staticClass:"card-label"},[t._v(t._s(t.$L("(*) \u5929\u5185\u5230\u671F",3)))]),s("div",{staticClass:"card-data"},[s("span",{staticClass:"card-num num-orange"},[t._v(t._s(t.blocks.due_soon||0))]),s("span",{staticClass:"card-sub"},[t._v(t._s(t.$L("[task_unit].\u9879")))])]),s("div",{staticClass:"card-link link-orange"},[t._v(t._s(t.$L("\u67E5\u770B\u4EFB\u52A1"))+" \u2192")])]),s("li",{staticClass:"card-static"},[s("div",{staticClass:"card-label"},[t._v(t._s(t.$L("\u672C\u5468\u5B8C\u6210")))]),s("div",{staticClass:"card-data"},[s("span",{staticClass:"card-num num-green"},[t._v(t._s(t.blocks.week_completed||0))]),s("span",{staticClass:"card-sub"},[t._v(t._s(t.$L("[task_unit].\u9879"))),t.weekDiffText?[t._v(" \xB7 "+t._s(t.weekDiffText))]:t._e()],2)])])]),s("div",{staticClass:"team-duo"},[s("div",{staticClass:"dashboard-card team-members"},[s("div",{staticClass:"card-head"},[s("span",{staticClass:"head-title"},[t._v(t._s(t.$L("\u6210\u5458\u4EFB\u52A1\u5206\u914D")))]),s("span",{staticClass:"head-legend"},[s("span",[s("i",{staticStyle:{background:"#bfe3cd"}}),t._v(t._s(t.$L("\u5F85\u5904\u7406")))]),s("span",[s("i",{staticStyle:{background:"#1e9e55"}}),t._v(t._s(t.$L("\u8FDB\u884C\u4E2D")))]),s("span",[s("i",{staticStyle:{background:"#6ba7d8"}}),t._v(t._s(t.$L("\u9A8C\u6536/\u6D4B\u8BD5")))])])]),t.showStatsLoading?s("div",{staticClass:"team-stats-loading"},[s("Loading")],1):[s("ul",{staticClass:"member-list"},[t._l(t.visibleMembers,function(e){return s("li",{key:e.userid,staticClass:"member-row",on:{click:function(i){return t.onMember(e)}}},[s("UserAvatar",{staticClass:"team-avatar",attrs:{userid:e.userid,size:26}}),s("span",{staticClass:"member-name"},[t._v(t._s(e.nickname))]),s("ETooltip",{attrs:{disabled:t.$isEEUIApp||t.$store.state.windowTouch||e.total===0,"open-delay":300,effect:"light",placement:"top","popper-class":"dashboard-member-progress-popper"}},[s("span",{staticClass:"member-track"},[s("span",{staticClass:"member-bar",style:{width:t.memberBarWidth(e)}},[e.segments.start>0?s("i",{style:{flex:e.segments.start,background:"#bfe3cd"}}):t._e(),e.segments.progress>0?s("i",{style:{flex:e.segments.progress,background:"#1e9e55"}}):t._e(),e.segments.test>0?s("i",{style:{flex:e.segments.test,background:"#6ba7d8"}}):t._e()])]),s("div",{staticClass:"member-progress-tooltip",attrs:{slot:"content"},slot:"content"},[s("span",{staticClass:"progress-tooltip-title"},[t._v(t._s(t.$L("\u4EFB\u52A1\u6982\u51B5")))]),s("div",{staticClass:"progress-tooltip-row"},[s("span",{staticClass:"progress-tooltip-label"},[t._v(t._s(t.$L("\u672A\u5B8C\u6210\u603B\u6570")))]),s("strong",[t._v(t._s(t.$L("(*) \u9879",e.total)))])]),s("div",{staticClass:"progress-tooltip-row row-overdue"},[s("span",{staticClass:"progress-tooltip-label"},[t._v(t._s(t.$L("\u5DF2\u8D85\u671F")))]),s("strong",[t._v(t._s(t.$L("(*) \u9879",e.overdue))+" \xB7 "+t._s(t.memberOverduePercent(e))+"%")])]),s("span",{staticClass:"progress-tooltip-title title-stage"},[t._v(t._s(t.$L("\u6D41\u7A0B\u9636\u6BB5")))]),t._l(t.memberProgressDetails(e),function(i){return s("div",{key:i.type,staticClass:"progress-tooltip-row"},[s("span",{staticClass:"progress-tooltip-label"},[s("i",{style:{background:i.color}}),t._v(t._s(i.label))]),s("strong",[t._v(t._s(t.$L("(*) \u9879",i.count))+" \xB7 "+t._s(i.percent)+"%")])])})],2)]),s("span",{staticClass:"member-num",attrs:{title:t.memberSummary(e)}},[e.overdue>0?s("em",{staticClass:"num-overdue"},[t._v(t._s(t.$L("(*) \u8D85\u671F",e.overdue))+" \xB7 ")]):t._e(),t._v(t._s(t.$L("(*) \u9879",e.total))+" ")])],1)}),t.blocks.no_owner>0?s("li",{staticClass:"member-row member-noowner",on:{click:function(e){return t.onBlock("noowner")}}},[s("span",{staticClass:"mock-avatar avatar-none"},[t._v("?")]),s("span",{staticClass:"member-name"},[t._v(t._s(t.$L("\u672A\u5206\u914D")))]),s("span",{staticClass:"member-track"},[s("span",{staticClass:"member-bar bar-hatched",style:{width:t.memberBarWidth({total:t.blocks.no_owner})}})]),s("span",{staticClass:"member-num num-noowner"},[t._v(t._s(t.$L("(*) \u9879",t.blocks.no_owner)))])]):t._e()],2),t.members.length>t.memberLimit?s("div",{staticClass:"card-more",on:{click:function(e){t.memberExpand=!t.memberExpand}}},[t._v(" "+t._s(t.memberExpand?t.$L("\u6536\u8D77"):t.$L("\u67E5\u770B\u5168\u90E8 (*) \u4EBA",t.members.length)+" \u2192")+" ")]):t._e()]],2),s("div",{staticClass:"dashboard-card team-priority"},[s("div",{staticClass:"card-head"},[s("span",{staticClass:"head-title"},[t._v(t._s(t.$L("\u4F18\u5148\u7EA7\u5206\u5E03")))]),t.showStatsLoading?t._e():s("span",{staticClass:"head-note"},[t._v(t._s(t.$L("\u672A\u5B8C\u6210 (*) \u9879",t.blocks.uncompleted||0)))])]),t.showStatsLoading?s("div",{staticClass:"team-stats-loading"},[s("Loading")],1):s("div",{staticClass:"priority-list"},[t._l(t.visiblePriorityList,function(e){return s("div",{key:e.level,staticClass:"priority-row",on:{click:function(i){return t.onPriority(e)}}},[s("div",{staticClass:"priority-head"},[s("span",{staticClass:"priority-name"},[t._v(t._s(e.name))]),s("span",{staticClass:"priority-num"},[t._v(t._s(t.$L("(*) \u9879",e.num))+" \xB7 "+t._s(e.percent)+"%")])]),s("div",{staticClass:"priority-bar"},[s("i",{style:{width:e.percent+"%",background:e.color}})])])}),t.priorityList.length>t.priorityLimit?s("div",{staticClass:"priority-tip priority-more",on:{click:function(e){t.priorityExpand=!t.priorityExpand}}},[t._v(" "+t._s(t.priorityExpand?t.$L("\u6536\u8D77"):t.$L("\u67E5\u770B\u5168\u90E8 (*) \u4E2A\u4F18\u5148\u7EA7",t.priorityList.length)+" \u2192")+" ")]):s("div",{staticClass:"priority-tip"},[t._v(t._s(t.$L("\u70B9\u51FB\u4EFB\u4E00\u6863\u4F4D\u53EF\u4E0B\u94BB\u5230\u4EFB\u52A1\u5217\u8868")))])],2)])]),s("div",{staticClass:"team-focus-section",class:{"focus-scroll-reserve":t.focusScrollReserved}},[s("div",{ref:"focusCard",staticClass:"dashboard-card team-focus"},[s("div",{staticClass:"card-head focus-head"},[s("span",{staticClass:"head-title"},[t._v(t._s(t.$L("\u91CD\u70B9\u5173\u6CE8\u4EFB\u52A1")))]),t._l(t.chips,function(e){return s("span",{key:e.type,staticClass:"focus-chip",class:[`chip-${e.type}`,{"chip-active":!t.extraFilter&&t.focus===e.type}],on:{click:function(i){return t.setFocus(e.type)}}},[t._v(t._s(e.label)+" "+t._s(e.num))])}),t.extraFilter?s("span",{staticClass:"focus-chip chip-extra chip-active",on:{click:t.clearFilter}},[t._v(" "+t._s(t.extraFilter.label)),s("i",[t._v("\xD7")])]):t._e()],2),s("div",{staticClass:"focus-table"},[s("div",{staticClass:"focus-row focus-thead"},[s("span",[t._v(t._s(t.$L("\u4EFB\u52A1")))]),s("span",{staticClass:"f-project"},[t._v(t._s(t.$L("\u9879\u76EE")))]),s("span",{staticClass:"f-owner"},[t._v(t._s(t.$L("\u8D1F\u8D23\u4EBA")))]),s("span",{staticClass:"f-priority"},[t._v(t._s(t.$L("\u4F18\u5148\u7EA7")))]),s("span",{staticClass:"f-status"},[t._v(t._s(t.$L("\u72B6\u6001")))]),s("span",{staticClass:"f-end"},[t._v(t._s(t.$L("\u622A\u6B62\u65F6\u95F4")))])]),t._l(t.currentList.list,function(e){return s("div",{key:e.id,staticClass:"focus-row",on:{click:function(i){return t.onTask(e)}}},[s("span",{staticClass:"f-name"},[t._v(t._s(e.name))]),s("span",{staticClass:"f-project"},[t._v(t._s(e.project_name))]),s("span",{staticClass:"f-owner"},[e.owner?[s("UserAvatar",{staticClass:"team-avatar",attrs:{userid:e.owner.userid,size:20}}),s("span",{staticClass:"owner-name"},[t._v(t._s(e.owner.nickname))]),e.owners.length>1?s("em",{staticClass:"owner-more"},[t._v("+"+t._s(e.owners.length-1))]):t._e()]:[s("span",{staticClass:"mock-avatar avatar-none"},[t._v("?")]),s("em",{staticClass:"owner-none"},[t._v(t._s(t.$L("\u5F85\u5206\u914D")))])]],2),s("span",{staticClass:"f-priority"},[e.p_name?[s("i",{staticClass:"priority-dot",style:{backgroundColor:e.p_color}}),s("span",[t._v(t._s(e.p_name))])]:[t._v("\u2014")]],2),s("span",{staticClass:"f-status"},[s("em",{staticClass:"status-pill",class:e.flow_item_name?e.flow_item_status:""},[t._v(t._s(e.flow_item_name||t.$L("\u672A\u5B8C\u6210")))])]),s("span",{staticClass:"f-end",class:t.deadlineClass(e.end_at)},[t._v(t._s(t.deadlineText(e.end_at)||"\u2014"))])])}),t.currentList.loading&&!t.currentList.silent?s("div",{staticClass:"focus-loading"},[s("Loading")],1):t.currentList.list.length===0?s("div",{staticClass:"focus-empty"},[s("span",{staticClass:"focus-empty-icon"},[s("Icon",{attrs:{type:"md-checkmark"}})],1),s("strong",[t._v(t._s(t.focusEmptyTitle))]),s("span",[t._v(t._s(t.$L("\u53EF\u4EE5\u5207\u6362\u4E0A\u65B9\u6761\u4EF6\u67E5\u770B\u5176\u4ED6\u4EFB\u52A1")))])]):t.currentList.hasMore?s("div",{staticClass:"card-more",on:{click:t.loadMore}},[t._v(t._s(t.$L("\u52A0\u8F7D\u66F4\u591A"))+"\uFF08"+t._s(t.$L("\u8FD8\u6709 (*) \u9879",t.currentList.total-t.currentList.list.length))+"\uFF09")]):t.currentList.total>t.pageSize?s("div",{staticClass:"card-more more-done"},[t._v(t._s(t.$L("\u5168\u90E8\u663E\u793A\u5B8C\u6BD5")))]):t._e()],2)])])])},L=[];const g={name:"DashboardTeam",mixins:[_],props:{initialFocus:{type:String,default:"overdue"}},data(){return{stats:{member_count:0,blocks:{},priority:[],members:[]},statsLoading:!1,statsLoadedAt:0,statsToken:0,focus:["overdue","soon","hi","noowner"].includes(this.initialFocus)?this.initialFocus:"overdue",extraFilter:null,lists:{},listTokens:{},pageSize:20,refreshSeconds:60,memberLimit:6,memberExpand:!1,priorityLimit:6,priorityExpand:!1,focusScrollReserved:!1}},created(){this.loadAll()},activated(){this.loadInterval(!0),this.statsLoadedAt>0&&$A.dayjs().unix()-this.statsLoadedAt>=this.refreshSeconds&&this.loadAll(!0)},deactivated(){this.loadInterval(!1),this.focusScrollReserved=!1},beforeDestroy(){this.loadInterval(!1)},computed:{...h(["cacheDepartmentOwnerIds"]),scopeKey({cacheDepartmentOwnerIds:t}){const a=(t||[]).map(s=>parseInt(s)).filter(s=>s>0).sort((s,e)=>s-e);return a.length>0?a.join(","):"all"},blocks({stats:t}){return t.blocks||{}},members({stats:t}){return t.members||[]},visibleMembers({members:t,memberExpand:a,memberLimit:s}){return a?t:t.slice(0,s)},showStatsLoading({statsLoading:t,statsLoadedAt:a}){return t&&a===0},memberMax({members:t,blocks:a}){return Math.max(...t.map(s=>s.total),a.no_owner||0,1)},priorityList({stats:t,blocks:a}){const s=Math.max(a.uncompleted||0,1);return(t.priority||[]).filter(e=>e.num>0).map(e=>({...e,name:e.name||this.$L("\u672A\u8BBE\u7F6E"),percent:Math.round(e.num/s*100)}))},visiblePriorityList({priorityList:t,priorityExpand:a,priorityLimit:s}){return a?t:t.slice(0,s)},highPriorityChip({stats:t,blocks:a}){const s=(t.priority||[]).filter(e=>e.level>0).slice(0,2);return{label:s.map(e=>e.name).join(" / ")||this.$L("\u9AD8\u4F18\u5148\u7EA7"),num:s.reduce((e,i)=>e+i.num,0)}},chips({blocks:t,highPriorityChip:a}){return[{type:"overdue",label:this.$L("\u5DF2\u8D85\u671F"),num:t.overdue||0},{type:"soon",label:this.$L("(*) \u5929\u5185\u5230\u671F",3),num:t.due_soon||0},{type:"hi",label:a.label,num:a.num},{type:"noowner",label:this.$L("\u672A\u5206\u914D\u8D1F\u8D23\u4EBA"),num:t.no_owner||0}]},weekDiffText({blocks:t}){if(!t.week_completed&&!t.last_week_completed)return"";const a=(t.week_completed||0)-(t.last_week_completed||0);return a>0?this.$L("\u8F83\u4E0A\u5468")+` +${a}`:a<0?this.$L("\u8F83\u4E0A\u5468")+` ${a}`:this.$L("\u4E0E\u4E0A\u5468\u6301\u5E73")},currentKey({scopeKey:t,focus:a,extraFilter:s}){return s?`${t}|${s.kind}:${s.value}`:`${t}|type:${a}`},currentList({lists:t,currentKey:a}){return t[a]||{list:[],page:1,total:0,hasMore:!1,loading:!0,silent:!1}},focusEmptyTitle({extraFilter:t,focus:a}){if(t)return this.$L("\u5F53\u524D\u7B5B\u9009\u6761\u4EF6\u4E0B\u6682\u65E0\u4EFB\u52A1");switch(a){case"overdue":return this.$L("\u6682\u65E0\u5DF2\u8D85\u671F\u4EFB\u52A1");case"soon":return this.$L("\u672A\u6765 (*) \u5929\u5185\u6682\u65E0\u5230\u671F\u4EFB\u52A1",3);case"hi":return this.$L("\u6682\u65E0\u9AD8\u4F18\u5148\u7EA7\u4EFB\u52A1");case"noowner":return this.$L("\u6240\u6709\u4EFB\u52A1\u5747\u5DF2\u5206\u914D\u8D1F\u8D23\u4EBA");default:return this.$L("\u6682\u65E0\u4EFB\u52A1")}}},watch:{scopeKey(){this.statsToken++,this.statsLoading=!1,this.$emit("stats-loading",!1),this.stats={member_count:0,blocks:{},priority:[],members:[]},this.statsLoadedAt=0,this.lists={},this.listTokens={},this.extraFilter=null,this.memberExpand=!1,this.priorityExpand=!1,this.$emit("stats",this.stats),this.loadAll(!0)}},methods:{deptParams(){const t=(this.cacheDepartmentOwnerIds||[]).map(a=>parseInt(a)).filter(a=>a>0);return t.length>0?{department_owner_ids:t.join(",")}:{}},loadAll(t=!1){const a=this.loadStats(t);return this.loadList(1,t),a},loadStats(t=!1){if(this.statsLoading)return Promise.resolve(!1);if(!t&&this.statsLoadedAt>0&&$A.dayjs().unix()-this.statsLoadedAt<this.refreshSeconds)return Promise.resolve(!0);const a=this.scopeKey,s=++this.statsToken;return this.statsLoading=!0,this.$emit("stats-loading",!0),this.$store.dispatch("call",{url:"dashboard/team/stats",data:Object.assign(this.deptParams(),t?{refresh:1}:{})}).then(({data:e})=>a!==this.scopeKey||s!==this.statsToken?!1:(this.stats=Object.assign({member_count:0,blocks:{},priority:[],members:[]},e),this.statsLoadedAt=$A.dayjs().unix(),this.$emit("stats",this.stats),!0)).catch(({msg:e})=>(a===this.scopeKey&&s===this.statsToken&&(this.statsLoadedAt=0,e&&$A.messageWarning(e)),!1)).finally(()=>{s===this.statsToken&&(this.statsLoading=!1,this.$emit("stats-loading",!1))})},refreshAll(){return this.loadAll(!0)},listParams(t){var s,e,i;const a=Object.assign(this.deptParams(),{page:t,pagesize:this.pageSize});return((s=this.extraFilter)==null?void 0:s.kind)==="member"?a.member_id=this.extraFilter.value:((e=this.extraFilter)==null?void 0:e.kind)==="level"?a.level=this.extraFilter.value:((i=this.extraFilter)==null?void 0:i.kind)==="type"?a.type=this.extraFilter.value:a.type=this.focus,a},loadList(t=1,a=!1){const s=this.currentKey,e=this.lists[s];if(e!=null&&e.loading||t===1&&!a&&e)return;const i=e||null,r=t>1||a&&i?(i==null?void 0:i.list)||[]:[],n=this.scopeKey,l=(this.listTokens[s]||0)+1;this.$set(this.listTokens,s,l),this.$set(this.lists,s,{list:r,page:t,total:i?i.total:0,hasMore:!1,loading:!0,silent:a&&r.length>0,loadedAt:i?i.loadedAt:0}),this.$store.dispatch("call",{url:"dashboard/team/tasks",data:this.listParams(t)}).then(({data:c})=>{if(n!==this.scopeKey||l!==this.listTokens[s])return;const d=c.data||[];this.$set(this.lists,s,{list:t>1?[...r,...d]:d,page:c.current_page||t,total:c.total||0,hasMore:(c.current_page||t)<(c.last_page||1),loading:!1,silent:!1,loadedAt:$A.dayjs().unix()})}).catch(({msg:c})=>{n===this.scopeKey&&l===this.listTokens[s]&&(this.$set(this.lists,s,{list:r,page:i?i.page:1,total:i?i.total:0,hasMore:i?i.hasMore:!1,loading:!1,silent:!1,loadedAt:i?i.loadedAt:0}),c&&r.length===0&&$A.messageWarning(c))})},loadMore(){!this.currentList.loading&&this.currentList.hasMore&&this.loadList(this.currentList.page+1)},setFocus(t){this.extraFilter=null,this.focus=t,$A.IDBSave("dashboardTeamFocus",t),this.$nextTick(()=>this.loadList())},setFilter(t,a,s){this.extraFilter={kind:t,value:a,label:s},this.$nextTick(()=>{this.loadList(),this.scrollToFocus()})},clearFilter(){this.extraFilter=null,this.$nextTick(()=>this.loadList())},onBlock(t){if(t==="uncompleted"){this.setFilter("type","uncompleted",this.$L("\u672A\u5B8C\u6210"));return}this.setFocus(t),this.scrollToFocus()},onMember(t){this.setFilter("member",t.userid,`${this.$L("\u6210\u5458")}: ${t.nickname}`)},onPriority(t){this.setFilter("level",t.level,`${this.$L("\u4F18\u5148\u7EA7")}: ${t.name}`)},onTask(t){this.$store.dispatch("openTask",t)},scrollToFocus(){this.focusScrollReserved=!0,this.$nextTick(()=>{$A.scrollToView(this.$refs.focusCard,{behavior:"smooth",block:"start"})})},memberBarWidth(t){return`${Math.max(Math.round(t.total/this.memberMax*100),4)}%`},memberProgressDetails(t){const a=Math.max(t.total||0,1);return[{type:"start",label:this.$L("\u5F85\u5904\u7406"),color:"#bfe3cd",count:t.segments.start||0},{type:"progress",label:this.$L("\u8FDB\u884C\u4E2D"),color:"#1e9e55",count:t.segments.progress||0},{type:"test",label:this.$L("\u9A8C\u6536/\u6D4B\u8BD5"),color:"#6ba7d8",count:t.segments.test||0}].filter(s=>s.count>0).map(s=>({...s,percent:Math.round(s.count/a*1e3)/10}))},memberOverduePercent(t){return t.total>0?Math.round(t.overdue/t.total*1e3)/10:0},memberSummary(t){const a=this.$L("(*) \u9879",t.total);return t.overdue>0?`${this.$L("(*) \u8D85\u671F",t.overdue)} \xB7 ${a}`:a}}},u={};var b=m(g,C,L,!1,k,null,null,null);function k(t){for(let a in u)this[a]=u[a]}var w=function(){return b.exports}(),T=function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("div",{staticClass:"page-dashboard"},[s("PageTitle",{attrs:{title:t.$L("\u4EEA\u8868\u76D8")}}),t.warningMsg?s("Alert",{staticClass:"dashboard-warning",attrs:{type:"warning","show-icon":""}},[s("span",{on:{click:function(e){return t.goForward({name:"manage-setting-license"})}}},[t._v(t._s(t.warningMsg))])]):t._e(),s("Scrollbar",{staticClass:"dashboard-scroller"},[s("div",{staticClass:"dashboard-body"},[s("div",{staticClass:"dashboard-header"},[s("div",{staticClass:"header-left"},[t.currentView==="my"?[s("h2",{staticClass:"header-hello"},[t._v(t._s(t.dashboardHello))]),s("div",{staticClass:"header-sub"},[s("span",[t._v(t._s(t.todayText)+" \xB7 "+t._s(t.mySummary))]),s("transition",{attrs:{name:"dashboard-load"}},[t.loadDashboardTasks?s("div",{staticClass:"dashboard-load"},[s("Loading")],1):t._e()])],1)]:[s("h2",{staticClass:"header-hello"},[t._v(t._s(t.$L("\u90E8\u95E8\u4EFB\u52A1\u603B\u89C8")))]),s("div",{staticClass:"header-sub"},[s("span",[t._v(" "+t._s(t.todayText)),t.teamSummary?[t._v(" \xB7 "+t._s(t.teamSummary))]:t._e(),s("EPopover",{attrs:{placement:"bottom-start","popper-class":"dashboard-cache-popper",trigger:"click"},model:{value:t.teamCachePopoverShow,callback:function(e){t.teamCachePopoverShow=e},expression:"teamCachePopoverShow"}},[s("div",{staticClass:"dashboard-cache-popover"},[s("strong",[t._v(t._s(t.$L("\u6570\u636E\u66F4\u65B0\u8BF4\u660E")))]),s("p",[t._v(t._s(t.$L("\u9875\u9762\u7EDF\u8BA1\u6570\u636E\u5728 (*) \u79D2\u5185\u590D\u7528\uFF0C\u91CD\u70B9\u5173\u6CE8\u4EFB\u52A1\u5217\u8868\u9664\u5916\u3002",60)))]),s("span",[t._v(t._s(t.$L("\u4E0A\u6B21\u66F4\u65B0\uFF1A(*)",t.teamStatsUpdatedTime)))]),s("Button",{attrs:{type:"primary",size:"small",loading:t.teamStatsLoading},on:{click:t.refreshTeamDashboard}},[t._v(t._s(t.$L("\u7ACB\u5373\u5237\u65B0")))])],1),s("Icon",{staticClass:"team-cache-help",attrs:{slot:"reference",type:"ios-information-circle-outline"},slot:"reference"})],1)],2)])],t.systemConfig.timezoneDifference?s("div",{staticClass:"header-servertime"},[s("span",[t._v(t._s(t.$L("\u670D\u52A1\u5668\u65F6\u95F4"))+":")]),s("span",[t._v(t._s(t.$A.daytz().format("YYYY-MM-DD HH:mm:ss")))])]):t._e()],2),s("div",{staticClass:"header-right"},[s("div",{staticClass:"header-search",class:{"min-search":t.windowPortrait},on:{click:t.openSearch}},[s("Icon",{attrs:{type:"ios-search"}}),s("span",[t._v(t._s(t.$L("\u641C\u7D22"))+" ("+t._s(t.mateName)+"+F)")])],1),t.currentView==="my"?s("div",{staticClass:"header-seg"},[s("span",{class:{"seg-active":t.layout==="list"},on:{click:function(e){return t.setLayout("list")}}},[t._v(t._s(t.$L("\u5217\u8868")))]),s("span",{class:{"seg-active":t.layout==="quad"},on:{click:function(e){return t.setLayout("quad")}}},[t._v(t._s(t.$L("\u56DB\u8C61\u9650")))])]):s("div",{staticClass:"header-dept",on:{click:function(e){t.deptViewShow=!0}}},[s("Icon",{attrs:{type:"md-people"}}),s("span",[t._v(t._s(t.deptLabel))]),t.teamStats.member_count?s("em",{staticClass:"dept-badge"},[t._v(t._s(t.teamStats.member_count))]):t._e()],1),t.teamEnabled?s("div",{staticClass:"header-seg"},[s("span",{class:{"seg-active":t.currentView==="my"},on:{click:function(e){return t.setView("my")}}},[t._v(t._s(t.$L("\u4E2A\u4EBA\u89C6\u89D2")))]),s("span",{class:{"seg-active":t.currentView==="team"},on:{click:function(e){return t.setView("team")}}},[t._v(t._s(t.$L("\u90E8\u95E8\u8D1F\u8D23\u4EBA")))])]):t._e()])]),t.currentView==="my"?[t.layout==="list"?[s("ul",{staticClass:"dashboard-cards personal-panel"},[s("li",{class:{"card-off":t.dashboardTask.overdue_count===0},on:{click:function(e){return t.scrollTo("overdue")}}},[s("div",{staticClass:"card-label"},[t._v(t._s(t.getTitle("overdue")))]),s("div",{staticClass:"card-data"},[s("span",{staticClass:"card-num num-red"},[t._v(t._s(t.dashboardTask.overdue_count))]),s("span",{staticClass:"card-sub"},[t._v(t._s(t.$L("[task_unit].\u9879"))),t.overdueMaxDays>0?[t._v(" \xB7 "+t._s(t.$L("\u6700\u4E45 (*) \u5929",t.overdueMaxDays)))]:t._e()],2)])]),s("li",{class:{"card-off":t.dashboardTask.today_count===0},on:{click:function(e){return t.scrollTo("today")}}},[s("div",{staticClass:"card-label"},[t._v(t._s(t.getTitle("today")))]),s("div",{staticClass:"card-data"},[s("span",{staticClass:"card-num num-orange"},[t._v(t._s(t.dashboardTask.today_count))]),s("span",{staticClass:"card-sub"},[t._v(t._s(t.$L("[task_unit].\u9879"))),t.todayNearest?[t._v(" \xB7 "+t._s(t.$L("\u6700\u8FD1"))+" "+t._s(t.todayNearest))]:t._e()],2)])]),s("li",{class:{"card-off":t.dashboardTask.todo_count===0},on:{click:function(e){return t.scrollTo("todo")}}},[s("div",{staticClass:"card-label"},[t._v(t._s(t.getTitle("todo")))]),s("div",{staticClass:"card-data"},[s("span",{staticClass:"card-num"},[t._v(t._s(t.dashboardTask.todo_count))]),s("span",{staticClass:"card-sub"},[t._v(t._s(t.$L("[task_unit].\u9879")))])]),t.upcomingTask.count>0?s("div",{staticClass:"duo-upcoming",on:{click:function(e){return e.stopPropagation(),t.scrollTo("upcoming")}}},[s("div",{staticClass:"side-num"},[t._v(t._s(t.upcomingTask.count))]),s("div",{staticClass:"side-label"},[t._v(t._s(t.$L("\u5F85\u5F00\u59CB")))])]):t._e()]),s("li",{class:{"card-off":t.assistTask.length===0},on:{click:function(e){return t.scrollTo("assist")}}},[s("div",{staticClass:"card-label"},[t._v(t._s(t.getTitle("assist")))]),s("div",{staticClass:"card-data"},[s("span",{staticClass:"card-num"},[t._v(t._s(t.assistTask.length))]),s("span",{staticClass:"card-sub"},[t._v(t._s(t.$L("[task_unit].\u9879"))),t.assistTodayCount>0?[t._v(" \xB7 "+t._s(t.$L("\u4ECA\u5929 (*) \u9879\u5230\u671F",t.assistTodayCount)))]:t._e()],2)])])]),s("div",{staticClass:"dashboard-card my-table"},[t.listColumns.length===0?s("div",{staticClass:"table-all-empty"},[t.loadDashboardTasks!==!1&&t.cacheTasks.length===0?s("div",{staticClass:"empty-state-loading"},[s("Loading")],1):s("div",{staticClass:"empty-state-content"},[s("span",{staticClass:"empty-icon",class:`empty-icon-${t.emptyState}`},[s("Icon",{attrs:{type:t.emptyState==="new"?"md-hand":"md-checkmark"}})],1),s("strong",{staticClass:"empty-state-title"},[t._v(t._s(t.emptyStateTitle))]),s("span",{staticClass:"empty-state-summary"},[t._v(t._s(t.emptyStateSummary))]),t.emptyState==="new"?s("div",{staticClass:"empty-state-actions"},[s("Button",{attrs:{type:"primary",icon:"md-add"},on:{click:t.createProject}},[t._v(t._s(t.$L("\u521B\u5EFA\u7B2C\u4E00\u4E2A\u9879\u76EE")))])],1):t.emptyState==="idle"?s("div",{staticClass:"empty-state-actions"},[s("Button",{attrs:{icon:"md-add"},on:{click:t.createTask}},[t._v(t._s(t.$L("\u65B0\u5EFA\u4EFB\u52A1")))])],1):t._e(),t.emptyState==="new"?s("span",{staticClass:"empty-state-hint"},[t._v(t._s(t.$L("\u5DF2\u6709\u56E2\u961F\uFF1F\u8BF7\u540C\u4E8B\u628A\u4F60\u52A0\u5165\u9879\u76EE\u5373\u53EF")))]):t._e(),t.emptyState==="completed"?s("div",{staticClass:"recent-completed-list"},[s("div",{staticClass:"recent-completed-head"},[s("span",[t._v(t._s(t.$L("\u8FD1\u671F\u5B8C\u6210")))]),s("em",[t._v(t._s(t.$L("\u672C\u5468 (*) \u9879",t.weeklyCompletedCount)))])]),t._l(t.recentCompleted,function(e){return s("div",{key:`recent-${e.id}`,staticClass:"recent-completed-row",on:{click:function(i){return t.openTask(e)}}},[s("Icon",{staticClass:"recent-completed-check",attrs:{type:"md-checkmark-circle"}}),s("span",{staticClass:"recent-completed-name"},[t._v(t._s(e.name))]),s("span",{staticClass:"recent-completed-project"},[t._v(t._s(t.projectName(e)))]),s("span",{staticClass:"recent-completed-time"},[t._v(t._s(t.completedText(e.complete_at)))])],1)})],2):t._e()])]):s("div",{staticClass:"table-row table-thead"},[s("span"),s("span",[t._v(t._s(t.$L("\u4EFB\u52A1")))]),s("span",{staticClass:"t-project"},[t._v(t._s(t.$L("\u9879\u76EE")))]),s("span",{staticClass:"t-status"},[t._v(t._s(t.$L("\u72B6\u6001")))]),s("span",{staticClass:"t-priority"},[t._v(t._s(t.$L("\u4F18\u5148\u7EA7")))]),s("span",{staticClass:"t-sub"},[t._v(t._s(t.$L("\u5B50\u4EFB\u52A1")))]),s("span",{staticClass:"t-end"},[t._v(t._s(t.$L("\u622A\u6B62\u65F6\u95F4")))])]),t._l(t.listColumns,function(e){return[s("div",{key:`head-${e.type}`,ref:`group_${e.type}`,refInFor:!0,staticClass:"table-group",class:[`group-${e.type}`,{"group-flash":t.flashType===e.type}],on:{click:function(i){return t.toggleGroup(e.type)}}},[s("i",{staticClass:"group-dot"}),s("span",{staticClass:"group-title"},[t._v(t._s(e.title)+" \xB7 "+t._s(e.count))]),s("i",{staticClass:"group-chevron taskfont",class:{"chevron-close":e.hidden}},[t._v("\uE702")])]),e.hidden?t._e():[e.list.length===0?s("div",{key:`empty-${e.type}`,staticClass:"table-empty-group"},[s("span",{staticClass:"empty-icon"},[s("Icon",{attrs:{type:"md-checkmark"}})],1),s("span",[t._v(t._s(t.listEmptyText(e.type)))])]):t._e(),s("div",{key:`list-${e.type}`,staticClass:"table-body"},[t._l(t.groupList(e,t.listLimit(e)),function(i){return s("div",{key:`${e.type}-${i.id}`,staticClass:"table-row",class:{complete:i.complete_at},style:t.$A.generateColorVarStyle(i.flow_item_color,[10],"flow-item-custom-color",i.color?{backgroundColor:i.color}:{}),on:{click:function(r){return t.openTask(i)}}},[s("span",{staticClass:"cell-check",on:{click:function(r){r.stopPropagation()}}},[e.type==="assist"&&t.ownerUserid(i)?s("UserAvatar",{attrs:{userid:t.ownerUserid(i),size:22}}):s("TaskMenu",{attrs:{task:i}})],1),s("span",{staticClass:"cell-name"},[s("em",{staticClass:"status-pill name-status",class:i.flow_item_name?i.flow_item_status:{end:!!i.complete_at},on:{click:function(r){return r.stopPropagation(),t.openMenu(r,i)}}},[t._v(t._s(i.flow_item_name||(i.complete_at?t.$L("\u5DF2\u5B8C\u6210"):t.$L("\u672A\u5B8C\u6210"))))]),i.sub_top===!0?s("em",{staticClass:"name-tag"},[t._v(t._s(t.$L("\u5B50\u4EFB\u52A1")))]):t._e(),i.sub_my&&i.sub_my.length>0?s("em",{staticClass:"name-tag"},[t._v("+"+t._s(i.sub_my.length))]):t._e(),t._v(" "+t._s(i.name)+" ")]),s("span",{staticClass:"t-project"},[t._v(t._s(t.projectName(i)))]),s("span",{staticClass:"t-status"},[s("em",{staticClass:"status-pill",class:i.flow_item_name?i.flow_item_status:{end:!!i.complete_at},on:{click:function(r){return r.stopPropagation(),t.openMenu(r,i)}}},[t._v(t._s(i.flow_item_name||(i.complete_at?t.$L("\u5DF2\u5B8C\u6210"):t.$L("\u672A\u5B8C\u6210"))))])]),s("span",{staticClass:"t-priority"},[i.p_name?[s("i",{staticClass:"priority-dot",style:{backgroundColor:i.p_color}}),s("span",[t._v(t._s(i.p_name))])]:[t._v("\u2014")]],2),s("span",{staticClass:"t-sub"},[i.sub_num>0?[s("i",{staticClass:"sub-bar"},[s("b",{style:{width:`${Math.min(i.sub_complete/i.sub_num*100,100)}%`}})]),s("em",[t._v(t._s(i.sub_complete)+"/"+t._s(i.sub_num))])]:[t._v("\u2014")]],2),s("span",{staticClass:"t-end",class:t.deadlineClass(i.end_at),attrs:{title:i.end_at}},[t._v(t._s(t.deadlineText(i.end_at)||"\u2014"))])])}),e.list.length>t.listLimit(e)&&!t.expandedGroups.includes(e.type)?s("div",{key:`more-${e.type}`,staticClass:"card-more",on:{click:function(i){return t.expandedGroups.push(e.type)}}},[t._v(t._s(t.$L("\u8FD8\u6709 (*) \u9879",e.list.length-t.listLimit(e)))+" \u2192")]):t._e()],2)]]})],2)]:s("div",{staticClass:"dashboard-quad"},t._l(t.columns,function(e){return s("div",{key:e.type,staticClass:"dashboard-card quad-card",class:[`group-${e.type}`]},[s("div",{staticClass:"quad-head"},[s("i",{staticClass:"group-dot"}),s("span",{staticClass:"group-title"},[t._v(t._s(e.title))]),s("span",{staticClass:"quad-num",class:{"num-zero":e.count===0}},[t._v(t._s(e.count))])]),t._l(t.groupList(e,t.quadLimit),function(i){return s("div",{key:i.id,staticClass:"quad-row",class:{complete:i.complete_at},style:t.$A.generateColorVarStyle(i.flow_item_color,[10],"flow-item-custom-color",i.color?{backgroundColor:i.color}:{}),on:{click:function(r){return t.openTask(i)}}},[s("span",{staticClass:"cell-check",on:{click:function(r){r.stopPropagation()}}},[e.type==="assist"&&t.ownerUserid(i)?s("UserAvatar",{attrs:{userid:t.ownerUserid(i),size:22}}):s("TaskMenu",{attrs:{task:i}})],1),s("span",{staticClass:"cell-name"},[t._v(t._s(i.name))]),s("em",{staticClass:"status-pill",class:i.flow_item_name?i.flow_item_status:{end:!!i.complete_at},on:{click:function(r){return r.stopPropagation(),t.openMenu(r,i)}}},[t._v(t._s(i.flow_item_name||(i.complete_at?t.$L("\u5DF2\u5B8C\u6210"):t.$L("\u672A\u5B8C\u6210"))))]),i.p_name?s("span",{staticClass:"quad-priority"},[s("i",{staticClass:"priority-dot",style:{backgroundColor:i.p_color}})]):t._e(),i.sub_num>0?s("span",{staticClass:"quad-sub"},[t._v(t._s(i.sub_complete)+"/"+t._s(i.sub_num))]):t._e(),i.end_at?s("span",{staticClass:"t-end",class:t.deadlineClass(i.end_at)},[t._v(t._s(t.deadlineText(i.end_at)))]):t._e()])}),e.list.length===0?s("div",{staticClass:"quad-empty"},[s("span",{staticClass:"empty-icon"},[s("Icon",{attrs:{type:"md-checkmark"}})],1),s("span",[t._v(t._s(t.quadEmptyText(e.type)))])]):e.list.length<=t.quadLimit?s("div",{staticClass:"quad-filler"},[t._v(" "+t._s(e.type==="today"&&e.list.length===1?t.$L("\u4ECA\u5929\u53EA\u6709\u8FD9\u4E00\u9879\uFF0C\u5904\u7406\u5B8C\u5C31\u8F7B\u677E\u4E86"):t.$L("\u5168\u90E8\u663E\u793A\u5B8C\u6BD5"))+" ")]):s("div",{staticClass:"card-more",on:{click:function(i){return t.toggleExpand(e.type)}}},[t._v(" "+t._s(t.expandedGroups.includes(e.type)?t.$L("\u6536\u8D77"):t.$L("\u6570\u91CF\u8F83\u591A\uFF0C\u4EC5\u663E\u793A\u6700\u8FD1 (*) \u9879\uFF0C\u5C55\u5F00\u5176\u4F59 (*) \u9879",t.quadLimit,e.list.length-t.quadLimit)+" \u2192")+" ")])],2)}),0)]:t._e(),s("keep-alive",[t.currentView==="team"?s("DashboardTeam",{ref:"dashboardTeam",attrs:{"initial-focus":t.teamFocusPref},on:{stats:function(e){t.teamStats=e},"stats-loading":function(e){t.teamStatsLoading=e}}}):t._e()],1)],2)]),s("DepartmentOwnerView",{attrs:{"scope-only":""},model:{value:t.deptViewShow,callback:function(e){t.deptViewShow=e},expression:"deptViewShow"}})],1)},x=[];const o={view:"my",layout:"list",overrides:{},focus:"overdue"},S={components:{TaskMenu:f,DashboardTeam:w,DepartmentOwnerView:y},mixins:[_],data(){return{licenseTimer:null,view:o.view,layout:o.layout,collapsedOverrides:o.overrides,strategySnapshot:null,teamFocusPref:o.focus,expandedGroups:[],groupLimit:10,completedLimit:5,quadLimit:5,flashType:"",flashTimer:null,deptViewShow:!1,teamStats:{member_count:0,blocks:{}},teamStatsLoading:!1,teamCachePopoverShow:!1,mateName:/macintosh|mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl",warningMsg:""}},async beforeRouteEnter(t,a,s){o.view=await $A.IDBString("dashboardView","my"),o.layout=await $A.IDBString("dashboardLayout","list"),o.focus=await $A.IDBString("dashboardTeamFocus","overdue");const e=$A.jsonParse(await $A.IDBString("dashboardCollapsed",""),{});o.overrides=e.date===$A.daytz().format("YYYY-MM-DD")&&$A.isJson(e.overrides)?e.overrides:{},s(i=>{i.view=["my","team"].includes(o.view)?o.view:"my",i.layout=["list","quad"].includes(o.layout)?o.layout:"list",i.collapsedOverrides=o.overrides,i.teamFocusPref=o.focus})},activated(){this.loadInterval(!0),this.loadLicense(!0),this.takeSnapshot()},deactivated(){this.$store.dispatch("forgetTaskCompleteTemp",!0),this.loadInterval(!1),this.loadLicense(!1)},computed:{...h(["systemConfig","userInfo","userIsAdmin","cacheProjects","cacheTasks","cacheDepartmentOwnerIds","taskCompleteTemps","loadDashboardTasks"]),...v(["dashboardTask","assistTask","transforTasks"]),teamEnabled({systemConfig:t,userInfo:a}){return t.department_owner_project_view==="open"&&(a.managed_departments||[]).length>0},currentView({view:t,teamEnabled:a}){return a&&t==="team"?"team":"my"},upcomingTask({cacheTasks:t,taskCompleteTemps:a}){const s=$A.daytz(),e=(n,l=!0)=>n.archived_at||n.complete_at&&l===!0||!n.start_at||$A.dayjs(n.start_at)<=s?!1:n.owner==1;let i=t.filter(n=>e(n));const r=i.length;if(a.length>0){const n=t.filter(l=>a.includes(l.id)&&e(l,!1));n.length>0&&(i=i.concat(n))}return{count:r,list:i}},columns({dashboardTask:t,assistTask:a}){const s=[];return["overdue","today","todo"].some(e=>{let i=this.transforTasks(t[e]);s.push({type:e,title:this.getTitle(e),hidden:this.isCollapsed(e),count:t[`${e}_count`],list:i.sort((r,n)=>$A.sortDay(r.end_at||"2099-12-31 23:59:59",n.end_at||"2099-12-31 23:59:59"))})}),s.push({type:"assist",title:this.getTitle("assist"),hidden:this.isCollapsed("assist"),count:a.length,list:a.sort((e,i)=>$A.sortDay(e.end_at||"2099-12-31 23:59:59",i.end_at||"2099-12-31 23:59:59"))}),s},listAllColumns({columns:t,upcomingTask:a}){const s=[...t];return s.splice(3,0,{type:"upcoming",title:this.getTitle("upcoming"),hidden:this.isCollapsed("upcoming"),count:a.count,list:this.transforTasks(a.list).sort((e,i)=>$A.sortDay(e.start_at,i.start_at))}),s},currentListColumns({listAllColumns:t}){return t.filter(a=>a.list.length>0)},weeklyCompleted({cacheTasks:t,taskCompleteTemps:a,nowTime:s}){const e=$A.daytz(s),i=e.clone().startOf("day").subtract((e.day()+6)%7,"day"),r=i.clone().add(7,"day");return t.filter(n=>{if(n.archived_at||!n.complete_at||n.owner!=1||a.includes(n.id))return!1;const l=$A.dayjs(n.complete_at);return l.valueOf()>=i.valueOf()&&l.valueOf()<r.valueOf()}).sort((n,l)=>$A.sortDay(l.complete_at,n.complete_at))},weeklyCompletedCount({weeklyCompleted:t}){return t.length},recentCompleted({weeklyCompleted:t,completedLimit:a}){return t.slice(0,a)},completedColumn({weeklyCompleted:t,weeklyCompletedCount:a}){return{type:"completed",title:this.getTitle("completed"),hidden:this.isCollapsed("completed"),count:a,list:t}},listColumns({currentListColumns:t,completedColumn:a}){return t.length===0?[]:a.count>0?[...t,a]:t},emptyState({weeklyCompletedCount:t,cacheProjects:a,cacheTasks:s}){if(t>0)return"completed";const e=s.some(i=>!i.archived_at);return a.length===0&&!e?"new":"idle"},emptyStateTitle({emptyState:t}){return t==="completed"?this.$L("\u592A\u68D2\u4E86\uFF0C\u4EFB\u52A1\u5168\u90E8\u6E05\u7A7A"):t==="new"?this.$L("\u6B22\u8FCE\u4F7F\u7528 DooTask"):this.$L("\u5F53\u524D\u6CA1\u6709\u5F85\u5904\u7406\u4EFB\u52A1")},emptyStateSummary({emptyState:t,weeklyCompletedCount:a}){return t==="completed"?this.$L("\u672C\u5468\u5B8C\u6210\u4E86 (*) \u9879\u4EFB\u52A1",a):t==="new"?this.$L("\u9879\u76EE\u662F\u4EFB\u52A1\u4E0E\u534F\u4F5C\u7684\u8D77\u70B9\uFF0C\u521B\u5EFA\u4E00\u4E2A\u5F00\u59CB"):this.$L("\u53EF\u4EE5\u65B0\u5EFA\u4E00\u9879\u4EFB\u52A1\uFF0C\u6216\u7B49\u5F85\u65B0\u7684\u5DE5\u4F5C\u5B89\u6392")},overdueMaxDays({dashboardTask:t,nowTime:a}){const s=$A.daytz(a).startOf("day");return(t.overdue||[]).reduce((e,i)=>i.end_at?Math.max(e,s.diff($A.dayjs(i.end_at).startOf("day"),"day")):e,0)},todayNearest({dashboardTask:t}){const a=(t.today||[]).filter(e=>e.end_at);if(a.length===0)return"";const s=a.reduce((e,i)=>e===null||i.end_at<e?i.end_at:e,null);return $A.dayjs(s).format("HH:mm")},assistTodayCount({assistTask:t,nowTime:a}){const s=$A.daytz(a).format("YYYY-MM-DD");return t.filter(e=>e.end_at&&$A.dayjs(e.end_at).format("YYYY-MM-DD")===s).length},todayText({nowTime:t}){const a=$A.daytz(t),s=[this.$L("\u5468\u65E5"),this.$L("\u5468\u4E00"),this.$L("\u5468\u4E8C"),this.$L("\u5468\u4E09"),this.$L("\u5468\u56DB"),this.$L("\u5468\u4E94"),this.$L("\u5468\u516D")];return`${this.$L("(*)\u6708(*)\u65E5",a.month()+1,a.date())} ${s[a.day()]}`},mySummary({dashboardTask:t}){return t.overdue_count>0?this.$L("\u6709 (*) \u9879\u5DF2\u8D85\u671F\uFF0C\u5EFA\u8BAE\u5148\u5904\u7406",t.overdue_count):t.today_count>0?this.$L("\u6709 (*) \u9879\u4ECA\u65E5\u5230\u671F",t.today_count):this.$L("\u4ECA\u65E5\u65E0\u5230\u671F\u4EFB\u52A1")},teamSummary({teamStats:t}){const a=t.blocks||{};return a.overdue>0?a.overdue_owner_count>0?this.$L("\u56E2\u961F\u6709 (*) \u9879\u5DF2\u8D85\u671F\uFF0C\u6D89\u53CA (*) \u4EBA",a.overdue,a.overdue_owner_count):this.$L("\u56E2\u961F\u6709 (*) \u9879\u5DF2\u8D85\u671F",a.overdue):a.week_completed>0?this.$L("\u56E2\u961F\u672C\u5468\u5DF2\u5B8C\u6210 (*) \u9879",a.week_completed):""},teamStatsUpdatedTime({teamStats:t}){return t.generated_at?$A.dayjs(t.generated_at).format("HH:mm:ss"):"--"},deptLabel({userInfo:t,cacheDepartmentOwnerIds:a}){const s=(t.managed_departments||[]).map(r=>({...r,id:parseInt(r.id)})),e=(a||[]).map(r=>parseInt(r)),i=e.length>0?s.filter(r=>e.includes(r.id)):s;return i.length===0||i.length===s.length?s.length===1?s[0].name:this.$L("\u6211\u7684\u90E8\u95E8"):i.length===1?i[0].name:`${i[0].name} +${i.length-1}`},dashboardHello({systemConfig:t,userInfo:a,nowTime:s}){if(t.system_welcome)return this.$L(t.system_welcome).replace(/\{username}/g,a.nickname);const e=$A.daytz(s).hour();return e<5?this.$L("\u591C\u6DF1\u4E86\uFF0C(*)",a.nickname):e<11?this.$L("\u65E9\u4E0A\u597D\uFF0C(*)",a.nickname):e<14?this.$L("\u4E2D\u5348\u597D\uFF0C(*)",a.nickname):e<18?this.$L("\u4E0B\u5348\u597D\uFF0C(*)",a.nickname):this.$L("\u665A\u4E0A\u597D\uFF0C(*)",a.nickname)}},watch:{windowActive(t){this.routeName==="manage-dashboard"&&(this.loadInterval(t),this.loadLicense(t))}},methods:{getTitle(t){switch(t){case"today":return this.$L("\u4ECA\u65E5\u5230\u671F");case"overdue":return this.$L("\u5DF2\u8D85\u671F");case"todo":return this.$L("\u5F85\u5B8C\u6210");case"upcoming":return this.$L("\u5F85\u5F00\u59CB");case"assist":return this.$L("\u6211\u534F\u52A9\u7684");case"completed":return this.$L("\u672C\u5468\u5B8C\u6210");default:return""}},setView(t){this.view=t,t!=="team"&&(this.teamCachePopoverShow=!1),o.view=t,$A.IDBSave("dashboardView",t)},setLayout(t){this.layout=t,o.layout=t,$A.IDBSave("dashboardLayout",t)},isCollapsed(t){const a=this.collapsedOverrides[t];return a?a==="close":(this.strategySnapshot||[]).includes(t)},takeSnapshot(){const t={overdue:this.dashboardTask.overdue_count,today:this.dashboardTask.today_count,upcoming:this.upcomingTask.count,assist:this.assistTask.length},a=[];t.upcoming>0&&(t.overdue>0||t.today>0)&&a.push("upcoming"),this.strategySnapshot=a},toggleGroup(t){this.$set(this.collapsedOverrides,t,this.isCollapsed(t)?"open":"close"),o.overrides=this.collapsedOverrides,$A.IDBSave("dashboardCollapsed",JSON.stringify({date:$A.daytz().format("YYYY-MM-DD"),overrides:this.collapsedOverrides}))},toggleExpand(t){this.expandedGroups.includes(t)?this.expandedGroups=this.expandedGroups.filter(a=>a!==t):this.expandedGroups.push(t)},groupList(t,a){return this.expandedGroups.includes(t.type)?t.list:t.list.slice(0,a)},listLimit(t){return t.type==="completed"?this.completedLimit:this.groupLimit},listEmptyText(t){switch(t){case"overdue":return this.$L("\u6682\u65E0\u5DF2\u8D85\u671F\u4EFB\u52A1");case"today":return this.$L("\u6682\u65E0\u4ECA\u65E5\u5230\u671F\u4EFB\u52A1");case"todo":return this.$L("\u6682\u65E0\u5F85\u5B8C\u6210\u4EFB\u52A1");case"upcoming":return this.$L("\u6682\u65E0\u5F85\u5F00\u59CB\u4EFB\u52A1");case"assist":return this.$L("\u6682\u65E0\u534F\u52A9\u7684\u4EFB\u52A1");default:return this.$L("\u6682\u65E0\u4EFB\u52A1")}},quadEmptyText(t){switch(t){case"overdue":return this.$L("\u6CA1\u6709\u8D85\u671F\u4EFB\u52A1\uFF0C\u4FDD\u6301\u4F4F");case"today":return this.$L("\u4ECA\u65E5\u65E0\u5230\u671F\u4EFB\u52A1");case"todo":return this.$L("\u6682\u65E0\u5F85\u5B8C\u6210\u4EFB\u52A1");case"assist":return this.$L("\u6682\u65E0\u534F\u52A9\u7684\u4EFB\u52A1");default:return this.$L("\u6682\u65E0\u4EFB\u52A1")}},scrollTo(t){const a=this.listAllColumns.find(s=>s.type===t);!a||a.count===0||(this.isCollapsed(t)&&this.toggleGroup(t),this.$nextTick(s=>{const e=this.$refs[`group_${t}`];e&&e[0]&&($A.scrollToView(e[0],{behavior:"smooth",block:"start"}),this.flashType=t,this.flashTimer&&clearTimeout(this.flashTimer),this.flashTimer=setTimeout(i=>this.flashType="",1600))}))},refreshTeamDashboard(){var t;(t=this.$refs.dashboardTeam)==null||t.refreshAll().then(a=>{a&&(this.teamCachePopoverShow=!1,$A.messageSuccess("\u5237\u65B0\u6210\u529F"))})},projectName(t){const a=this.cacheProjects.find(({id:s})=>s==t.project_id);return a?a.name:""},ownerUserid(t){const a=(t.task_user||[]).find(s=>s.owner===1);return a?a.userid:0},openSearch(){$.emit("openSearch",null)},openTask(t){this.$store.dispatch("openTask",t)},createTask(){this.$emit("on-click","addTask")},createProject(){this.$emit("on-click","addProject")},completedText(t){if(!t)return"";const a=$A.dayjs(t),s=$A.daytz(this.nowTime);return a.format("YYYY-MM-DD")===s.format("YYYY-MM-DD")?`${this.$L("\u4ECA\u5929")} ${a.format("HH:mm")}`:a.format("YYYY-MM-DD")===s.clone().subtract(1,"day").format("YYYY-MM-DD")?`${this.$L("\u6628\u5929")} ${a.format("HH:mm")}`:`${this.$L("(*)\u6708(*)\u65E5",a.month()+1,a.date())} ${a.format("HH:mm")}`},openMenu(t,a){this.$store.state.taskOperation={event:t,task:a}},loadLicense(t){this.licenseTimer&&(clearTimeout(this.licenseTimer),this.licenseTimer=null),!(t===!1||!this.userIsAdmin)&&(this.licenseTimer=setTimeout(a=>{this.$store.dispatch("call",{url:"system/license",data:{type:"error"}}).then(({data:s})=>{this.warningMsg=s.error.length>0?s.error[0]:""}).catch(s=>{this.warningMsg=""})},1500))}}},p={};var M=m(S,T,x,!1,A,null,null,null);function A(t){for(let a in p)this[a]=p[a]}var kt=function(){return M.exports}();export{kt as default};