no message

This commit is contained in:
kuaifan 2024-12-07 19:58:43 +08:00
parent 8ea1234596
commit d25ee3c234
10 changed files with 286 additions and 910 deletions

View File

@ -1847,6 +1847,7 @@ WiFi签到延迟时长为±1分钟。
请输入任务内容
使用示例模板
设为默认
取消默认
编辑模板
确认删除
确定要删除该模板吗?

View File

@ -18,7 +18,9 @@
<div v-else class="template-list">
<div v-for="item in tags" :key="item.id" class="tag-item">
<div class="tag-contents">
<div class="tag-title">{{ item.name }}</div>
<div class="tag-title">
<Tags :tags="item"/>
</div>
<div v-if="item.desc" class="tag-desc">{{ item.desc }}</div>
</div>
<div class="tag-actions">
@ -50,6 +52,9 @@
<FormItem prop="desc" :label="$L('标签描述')">
<Input v-model="editingTag.desc" :disabled="systemTagIsMultiple" :placeholder="$L('请输入标签描述')"/>
</FormItem>
<FormItem prop="color" :label="$L('标签颜色')">
<ColorPicker v-model="editingTag.color" :disabled="systemTagIsMultiple" recommend transfer/>
</FormItem>
<FormItem v-if="!editingTag.id">
<div class="project-task-template-system">
<div v-if="!systemTagShow" @click="onSystemTag" class="tip-title">{{$L('使用示例标签')}}</div>
@ -63,8 +68,10 @@
<li
v-for="(item, index) in systemTagData"
:key="index"
:class="{selected:systemTagIsMultiple && systemTagMultipleData.indexOf(item)!==-1}"
@click="useSystemTag(item)">{{item.name}}</li>
:class="{tag: true, selected:systemTagIsMultiple && systemTagMultipleData.indexOf(item)!==-1}"
@click="useSystemTag(item)">
<Tags :tags="item"></Tags>
</li>
</ul>
</div>
</FormItem>
@ -82,11 +89,15 @@
<script>
import {mapState} from 'vuex'
import AllTaskTags from "./tags";
import {systemTags} from "./utils";
import Tags from "./tags.vue";
import {getLanguage} from "../../../../language";
export default {
name: 'ProjectTaskTag',
components: {
Tags
},
props: {
projectId: {
type: [Number, String],
@ -233,7 +244,7 @@ export default {
onSystemTag() {
const lang = getLanguage()
this.systemTagData = typeof AllTaskTags[lang] === "undefined" ? AllTaskTags['en'] : AllTaskTags[lang]
this.systemTagData = typeof systemTags[lang] === "undefined" ? systemTags['en'] : systemTags[lang]
this.systemTagShow = true
},

View File

@ -0,0 +1,95 @@
<template>
<ul class="tags-box">
<li
v-for="(item, index) in items"
:key="index"
:style="item.style">{{item.name}}</li>
</ul>
</template>
<script>
import {colorUtils} from "./utils";
export default {
name: "TaskTag",
props: {
tags: {
default: ''
},
defaultColor: {
type: String,
default: '#84C56A'
}
},
computed: {
items({tags, defaultColor}) {
if (!tags) return [];
const items = $A.isArray(tags) ? tags : [tags];
if (!items.length) return [];
//
const defaultColors = colorUtils.generateColorScheme(null, defaultColor);
return items.map((item, index) => {
if (!item) return null;
let backgroundColor;
let name;
if (typeof item === 'string') {
name = item;
backgroundColor = defaultColors[index % defaultColors.length];
} else {
name = item.name;
if (!name) return null;
const colors = item.color ?
colorUtils.generateColorScheme(item.color, defaultColor) :
defaultColors;
backgroundColor = colors[index % colors.length];
}
return {
name,
style: {
backgroundColor,
color: colorUtils.isColorDark(backgroundColor) ? '#ffffff' : '#000000'
}
}
}).filter(Boolean);
}
}
}
</script>
<style lang="scss" scoped>
.tags-box {
display: flex;
flex-wrap: wrap;
gap: 8px;
padding: 0;
margin: 0;
list-style: none;
li {
display: inline-flex;
align-items: center;
height: 24px;
padding: 0 10px;
border-radius: 12px;
font-size: 13px;
line-height: 1;
user-select: none;
//
max-width: 200px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
//
cursor: default;
}
}
</style>

View File

@ -1,4 +1,4 @@
export default {
const systemTags = {
"zh": [
{"name": "需求", "desc": "新功能或业务需求", "color": "#007bff"},
{"name": "优化", "desc": "现有功能或体验的改进", "color": "#28a745"},
@ -260,3 +260,121 @@ export default {
{"name": "Поддержка разработки", "desc": "Задача по поддержке других команд", "color": "#20c997"}
]
}
const colorUtils = {
cache: new Map(),
// 清理缓存
clearCache() {
if (this.cache.size > 1000) {
this.cache.clear();
}
},
// 判断颜色是否为深色
isColorDark(color) {
if (!color) return true;
const cacheKey = `dark_${color}`;
if (this.cache.has(cacheKey)) {
return this.cache.get(cacheKey);
}
const hex = color.replace('#', '');
const r = parseInt(hex.substr(0, 2), 16) | 0;
const g = parseInt(hex.substr(2, 2), 16) | 0;
const b = parseInt(hex.substr(4, 2), 16) | 0;
const brightness = (r * 299 + g * 587 + b * 114) >> 10;
const isDark = brightness < 128;
this.cache.set(cacheKey, isDark);
return isDark;
},
// 将 hex 转换为 HSL
hexToHSL(hex) {
if (!hex || typeof hex !== 'string') return { h: 0, s: 0, l: 0 };
const cacheKey = `hsl_${hex}`;
if (this.cache.has(cacheKey)) {
return this.cache.get(cacheKey);
}
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
if (!result) return { h: 0, s: 0, l: 0 };
const r = (parseInt(result[1], 16) | 0) / 255;
const g = (parseInt(result[2], 16) | 0) / 255;
const b = (parseInt(result[3], 16) | 0) / 255;
const max = Math.max(r, g, b);
const min = Math.min(r, g, b);
let h, s, l = (max + min) / 2;
if (max === min) {
h = s = 0;
} else {
const d = max - min;
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
const hueCalc = {
[r]: () => (g - b) / d + (g < b ? 6 : 0),
[g]: () => (b - r) / d + 2,
[b]: () => (r - g) / d + 4
};
h = hueCalc[max]() / 6;
}
const hsl = {
h: (h * 360) | 0,
s: (s * 100) | 0,
l: (l * 100) | 0
};
this.cache.set(cacheKey, hsl);
return hsl;
},
// HSL 转 hex
HSLToHex(h, s, l) {
s /= 100;
l /= 100;
const k = n => (n + h / 30) % 12;
const a = s * Math.min(l, 1 - l);
const f = n => l - a * Math.max(-1, Math.min(k(n) - 3, Math.min(9 - k(n), 1)));
const toHex = x => {
const hex = Math.round(x * 255).toString(16);
return hex.length === 1 ? '0' + hex : hex;
};
return `#${toHex(f(0))}${toHex(f(8))}${toHex(f(4))}`;
},
// 生成配色方案
generateColorScheme(baseColor, defaultColor = '#3498db') {
if (!baseColor) baseColor = defaultColor;
const cacheKey = `scheme_${baseColor}`;
if (this.cache.has(cacheKey)) {
return this.cache.get(cacheKey);
}
const hsl = this.hexToHSL(baseColor);
const h = hsl.h;
const s = hsl.s;
const l = hsl.l;
const colors = [
baseColor,
this.HSLToHex(h, s, Math.min(l + 20, 100)),
this.HSLToHex(h, s, Math.max(l - 20, 0)),
this.HSLToHex((h + 30) % 360, s, l),
this.HSLToHex((h - 30 + 360) % 360, s, l)
];
this.cache.set(cacheKey, colors);
return colors;
}
}
export {systemTags, colorUtils}

View File

@ -29,7 +29,7 @@
</div>
<div class="template-actions">
<Button @click="handleSetDefault(item)" type="primary" :icon="item.is_default ? 'md-checkmark' : ''">
{{$L('设为默认')}}
{{$L(item.is_default ? '取消默认' : '设为默认')}}
</Button>
<Button @click="handleEdit(item)" type="primary">
{{$L('编辑')}}

View File

@ -1,883 +0,0 @@
export default {
"zh": [
{
"name": "通用任务",
"title": "xxxx 任务",
"content": "描述xxxx\n清单xxxx"
},
{
"name": "产品需求",
"title": "xxxx 功能需求/产品任务",
"content": "背景xxxx\n目标xxxx\n清单xxxx"
},
{
"name": "技术任务",
"title": "xxxx 开发任务/技术优化任务",
"content": "背景xxxx\n技术目标xxxx\n任务清单xxxx"
},
{
"name": "运营任务",
"title": "xxxx 活动策划/运营任务",
"content": "背景xxxx\n活动方案xxxx\n数据指标xxxx\n任务清单xxxx"
},
{
"name": "市场推广",
"title": "xxxx 推广任务/品牌活动",
"content": "背景xxxx\n推广方案xxxx\n数据指标xxxx\n任务清单xxxx"
},
{
"name": "设计任务",
"title": "xxxx 设计任务",
"content": "背景xxxx\n设计要求xxxx\n任务清单xxxx\n相关资源xxxx"
},
{
"name": "人力资源",
"title": "xxxx 招聘任务/培训任务",
"content": "目标xxxx\n内容xxxx\n任务清单xxxx"
},
{
"name": "财务任务",
"title": "xxxx 预算审批/报销任务",
"content": "背景xxxx\n审批流程xxxx\n报销清单xxxx"
},
{
"name": "销售任务",
"title": "xxxx 销售跟进任务",
"content": "客户信息xxxx\n销售目标xxxx\n任务清单xxxx"
},
{
"name": "客户支持",
"title": "xxxx 客户问题处理任务",
"content": "客户问题xxxx\n优先级xxxx\n解决方案xxxx\n任务清单xxxx"
},
{
"name": "内容创作",
"title": "xxxx 内容创作任务",
"content": "主题xxxx\n目标xxxx\n任务清单xxxx"
},
{
"name": "法律事务",
"title": "xxxx 合同审核/法律任务",
"content": "合同背景xxxx\n审核重点xxxx\n任务清单xxxx"
},
{
"name": "学习计划",
"title": "xxxx 学习计划任务",
"content": "学习目标xxxx\n学习资源xxxx\n任务清单xxxx"
},
{
"name": "项目管理",
"title": "xxxx 项目管理任务",
"content": "项目背景xxxx\n任务清单xxxx\n状态xxxx"
},
{
"name": "测试任务",
"title": "xxxx 测试任务",
"content": "测试目标xxxx\n测试范围xxxx\n测试用例xxxx\n问题记录xxxx"
},
{
"name": "数据分析",
"title": "xxxx 数据分析任务",
"content": "分析目标xxxx\n数据来源xxxx\n分析方法xxxx\n结论与建议xxxx"
},
{
"name": "供应链管理",
"title": "xxxx 供应链任务",
"content": "任务目标xxxx\n供应商信息xxxx\n任务清单xxxx"
},
{
"name": "安全检查",
"title": "xxxx 安全检查任务",
"content": "检查范围xxxx\n检查标准xxxx\n问题记录xxxx\n整改计划xxxx"
},
{
"name": "行政事务",
"title": "xxxx 行政任务",
"content": "任务描述xxxx\n负责人xxxx\n任务清单xxxx"
}
],
"zh-CHT": [
{
"name": "通用任務",
"title": "xxxx 任務",
"content": "描述xxxx\n清單xxxx"
},
{
"name": "產品需求",
"title": "xxxx 任務",
"content": "背景xxxx\n目標xxxx\n清單xxxx"
},
{
"name": "技術任務",
"title": "xxxx 任務",
"content": "背景xxxx\n技術目標xxxx\n任務清單xxxx"
},
{
"name": "運營任務",
"title": "xxxx 任務",
"content": "背景xxxx\n活動方案xxxx\n數據指標xxxx\n任務清單xxxx"
},
{
"name": "市場推廣",
"title": "xxxx 任務",
"content": "背景xxxx\n推廣方案xxxx\n數據指標xxxx\n任務清單xxxx"
},
{
"name": "設計任務",
"title": "xxxx 任務",
"content": "背景xxxx\n設計要求xxxx\n任務清單xxxx\n相關資源xxxx"
},
{
"name": "人力資源",
"title": "xxxx 任務",
"content": "目標xxxx\n內容xxxx\n任務清單xxxx"
},
{
"name": "財務任務",
"title": "xxxx 任務",
"content": "背景xxxx\n審批流程xxxx\n報銷清單xxxx"
},
{
"name": "銷售任務",
"title": "xxxx 任務",
"content": "客戶信息xxxx\n銷售目標xxxx\n任務清單xxxx"
},
{
"name": "客戶支持",
"title": "xxxx 任務",
"content": "客戶問題xxxx\n優先級xxxx\n解決方案xxxx\n任務清單xxxx"
},
{
"name": "內容創作",
"title": "xxxx 任務",
"content": "主題xxxx\n目標xxxx\n任務清單xxxx"
},
{
"name": "法律事務",
"title": "xxxx 任務",
"content": "合同背景xxxx\n審核重點xxxx\n任務清單xxxx"
},
{
"name": "學習計劃",
"title": "xxxx 任務",
"content": "學習目標xxxx\n學習資源xxxx\n任務清單xxxx"
},
{
"name": "項目管理",
"title": "xxxx 任務",
"content": "項目背景xxxx\n任務清單xxxx\n狀態xxxx"
},
{
"name": "測試任務",
"title": "xxxx 任務",
"content": "測試目標xxxx\n測試範圍xxxx\n測試用例xxxx\n問題記錄xxxx"
},
{
"name": "數據分析",
"title": "xxxx 任務",
"content": "分析目標xxxx\n數據來源xxxx\n分析方法xxxx\n結論與建議xxxx"
},
{
"name": "供應鏈管理",
"title": "xxxx 任務",
"content": "任務目標xxxx\n供應商信息xxxx\n任務清單xxxx"
},
{
"name": "安全檢查",
"title": "xxxx 任務",
"content": "檢查範圍xxxx\n檢查標準xxxx\n問題記錄xxxx\n整改計劃xxxx"
},
{
"name": "行政事務",
"title": "xxxx 任務",
"content": "任務描述xxxx\n負責人xxxx\n任務清單xxxx"
}
],
"en": [
{
"name": "General Task",
"title": "xxxx Task",
"content": "Description: xxxx\nChecklist: xxxx"
},
{
"name": "Product Requirement",
"title": "xxxx Task",
"content": "Background: xxxx\nGoal: xxxx\nChecklist: xxxx"
},
{
"name": "Technical Task",
"title": "xxxx Task",
"content": "Background: xxxx\nTechnical Goal: xxxx\nTask Checklist: xxxx"
},
{
"name": "Operations Task",
"title": "xxxx Task",
"content": "Background: xxxx\nActivity Plan: xxxx\nData Metrics: xxxx\nTask Checklist: xxxx"
},
{
"name": "Marketing",
"title": "xxxx Task",
"content": "Background: xxxx\nPromotion Plan: xxxx\nData Metrics: xxxx\nTask Checklist: xxxx"
},
{
"name": "Design Task",
"title": "xxxx Task",
"content": "Background: xxxx\nDesign Requirements: xxxx\nTask Checklist: xxxx\nRelated Resources: xxxx"
},
{
"name": "Human Resources",
"title": "xxxx Task",
"content": "Goal: xxxx\nContent: xxxx\nTask Checklist: xxxx"
},
{
"name": "Finance Task",
"title": "xxxx Task",
"content": "Background: xxxx\nApproval Process: xxxx\nReimbursement Checklist: xxxx"
},
{
"name": "Sales Task",
"title": "xxxx Task",
"content": "Customer Information: xxxx\nSales Target: xxxx\nTask Checklist: xxxx"
},
{
"name": "Customer Support",
"title": "xxxx Task",
"content": "Customer Issues: xxxx\nPriority: xxxx\nSolution: xxxx\nTask Checklist: xxxx"
},
{
"name": "Content Creation",
"title": "xxxx Task",
"content": "Topic: xxxx\nGoal: xxxx\nTask Checklist: xxxx"
},
{
"name": "Legal Affairs",
"title": "xxxx Task",
"content": "Contract Background: xxxx\nReview Focus: xxxx\nTask Checklist: xxxx"
},
{
"name": "Learning Plan",
"title": "xxxx Task",
"content": "Learning Goal: xxxx\nLearning Resources: xxxx\nTask Checklist: xxxx"
},
{
"name": "Project Management",
"title": "xxxx Task",
"content": "Project Background: xxxx\nTask Checklist: xxxx\nStatus: xxxx"
},
{
"name": "Testing Task",
"title": "xxxx Task",
"content": "Testing Goal: xxxx\nTesting Scope: xxxx\nTest Cases: xxxx\nIssue Records: xxxx"
},
{
"name": "Data Analysis",
"title": "xxxx Task",
"content": "Analysis Goal: xxxx\nData Source: xxxx\nAnalysis Methods: xxxx\nConclusions and Suggestions: xxxx"
},
{
"name": "Supply Chain Management",
"title": "xxxx Task",
"content": "Task Goal: xxxx\nSupplier Information: xxxx\nTask Checklist: xxxx"
},
{
"name": "Safety Inspection",
"title": "xxxx Task",
"content": "Inspection Scope: xxxx\nInspection Standards: xxxx\nIssue Records: xxxx\nCorrection Plan: xxxx"
},
{
"name": "Administrative Affairs",
"title": "xxxx Task",
"content": "Task Description: xxxx\nPerson in Charge: xxxx\nTask Checklist: xxxx"
}
],
"ko": [
{
"name": "일반 작업",
"title": "xxxx 작업",
"content": "설명: xxxx\n체크리스트: xxxx"
},
{
"name": "제품 요구사항",
"title": "xxxx 작업",
"content": "배경: xxxx\n목표: xxxx\n체크리스트: xxxx"
},
{
"name": "기술 작업",
"title": "xxxx 작업",
"content": "배경: xxxx\n기술 목표: xxxx\n작업 체크리스트: xxxx"
},
{
"name": "운영 작업",
"title": "xxxx 작업",
"content": "배경: xxxx\n활동 계획: xxxx\n데이터 지표: xxxx\n작업 체크리스트: xxxx"
},
{
"name": "마케팅",
"title": "xxxx 작업",
"content": "배경: xxxx\n홍보 계획: xxxx\n데이터 지표: xxxx\n작업 체크리스트: xxxx"
},
{
"name": "디자인 작업",
"title": "xxxx 작업",
"content": "배경: xxxx\n디자인 요구사항: xxxx\n작업 체크리스트: xxxx\n관련 자료: xxxx"
},
{
"name": "인사 관리",
"title": "xxxx 작업",
"content": "목표: xxxx\n내용: xxxx\n작업 체크리스트: xxxx"
},
{
"name": "재무 작업",
"title": "xxxx 작업",
"content": "배경: xxxx\n승인 절차: xxxx\n비용 청구서: xxxx"
},
{
"name": "영업 작업",
"title": "xxxx 작업",
"content": "고객 정보: xxxx\n영업 목표: xxxx\n작업 체크리스트: xxxx"
},
{
"name": "고객 지원",
"title": "xxxx 작업",
"content": "고객 문제: xxxx\n우선 순위: xxxx\n해결책: xxxx\n작업 체크리스트: xxxx"
},
{
"name": "콘텐츠 제작",
"title": "xxxx 작업",
"content": "주제: xxxx\n목표: xxxx\n작업 체크리스트: xxxx"
},
{
"name": "법률 업무",
"title": "xxxx 작업",
"content": "계약 배경: xxxx\n검토 초점: xxxx\n작업 체크리스트: xxxx"
},
{
"name": "학습 계획",
"title": "xxxx 작업",
"content": "학습 목표: xxxx\n학습 자료: xxxx\n작업 체크리스트: xxxx"
},
{
"name": "프로젝트 관리",
"title": "xxxx 작업",
"content": "프로젝트 배경: xxxx\n작업 체크리스트: xxxx\n상태: xxxx"
},
{
"name": "테스트 작업",
"title": "xxxx 작업",
"content": "테스트 목표: xxxx\n테스트 범위: xxxx\n테스트 케이스: xxxx\n문제 기록: xxxx"
},
{
"name": "데이터 분석",
"title": "xxxx 작업",
"content": "분석 목표: xxxx\n데이터 출처: xxxx\n분석 방법: xxxx\n결론 및 제안: xxxx"
},
{
"name": "공급망 관리",
"title": "xxxx 작업",
"content": "작업 목표: xxxx\n공급업체 정보: xxxx\n작업 체크리스트: xxxx"
},
{
"name": "안전 점검",
"title": "xxxx 작업",
"content": "점검 범위: xxxx\n점검 기준: xxxx\n문제 기록: xxxx\n수정 계획: xxxx"
},
{
"name": "행정 업무",
"title": "xxxx 작업",
"content": "작업 설명: xxxx\n담당자: xxxx\n작업 체크리스트: xxxx"
}
],
"ja": [
{
"name": "一般タスク",
"title": "xxxx タスク",
"content": "説明xxxx\nチェックリストxxxx"
},
{
"name": "製品要件",
"title": "xxxx タスク",
"content": "背景xxxx\n目標xxxx\nチェックリストxxxx"
},
{
"name": "技術タスク",
"title": "xxxx タスク",
"content": "背景xxxx\n技術目標xxxx\nタスクリストxxxx"
},
{
"name": "運営タスク",
"title": "xxxx タスク",
"content": "背景xxxx\n活動計画xxxx\nデータ指標xxxx\nタスクリストxxxx"
},
{
"name": "マーケティング",
"title": "xxxx タスク",
"content": "背景xxxx\nプロモーション計画xxxx\nデータ指標xxxx\nタスクリストxxxx"
},
{
"name": "デザインタスク",
"title": "xxxx タスク",
"content": "背景xxxx\nデザイン要件xxxx\nタスクリストxxxx\n関連リソースxxxx"
},
{
"name": "人事タスク",
"title": "xxxx タスク",
"content": "目標xxxx\n内容xxxx\nタスクリストxxxx"
},
{
"name": "財務タスク",
"title": "xxxx タスク",
"content": "背景xxxx\n承認プロセスxxxx\n精算リストxxxx"
},
{
"name": "営業タスク",
"title": "xxxx タスク",
"content": "顧客情報xxxx\n営業目標xxxx\nタスクリストxxxx"
},
{
"name": "カスタマーサポート",
"title": "xxxx タスク",
"content": "顧客問題xxxx\n優先順位xxxx\n解決策xxxx\nタスクリストxxxx"
},
{
"name": "コンテンツ制作",
"title": "xxxx タスク",
"content": "テーマxxxx\n目標xxxx\nタスクリストxxxx"
},
{
"name": "法務業務",
"title": "xxxx タスク",
"content": "契約背景xxxx\nレビューのポイントxxxx\nタスクリストxxxx"
},
{
"name": "学習計画",
"title": "xxxx タスク",
"content": "学習目標xxxx\n学習リソースxxxx\nタスクリストxxxx"
},
{
"name": "プロジェクト管理",
"title": "xxxx タスク",
"content": "プロジェクト背景xxxx\nタスクリストxxxx\nステータスxxxx"
},
{
"name": "テストタスク",
"title": "xxxx タスク",
"content": "テスト目標xxxx\nテスト範囲xxxx\nテストケースxxxx\n問題記録xxxx"
},
{
"name": "データ分析",
"title": "xxxx タスク",
"content": "分析目標xxxx\nデータソースxxxx\n分析方法xxxx\n結論と提案xxxx"
},
{
"name": "サプライチェーン管理",
"title": "xxxx タスク",
"content": "タスク目標xxxx\nサプライヤー情報xxxx\nタスクリストxxxx"
},
{
"name": "安全点検",
"title": "xxxx タスク",
"content": "点検範囲xxxx\n点検基準xxxx\n問題記録xxxx\n是正計画xxxx"
},
{
"name": "管理業務",
"title": "xxxx タスク",
"content": "タスク説明xxxx\n担当者xxxx\nタスクリストxxxx"
}
],
"de": [
{
"name": "Allgemeine Aufgabe",
"title": "xxxx Aufgabe",
"content": "Beschreibung: xxxx\nCheckliste: xxxx"
},
{
"name": "Produktanforderung",
"title": "xxxx Aufgabe",
"content": "Hintergrund: xxxx\nZiel: xxxx\nCheckliste: xxxx"
},
{
"name": "Technische Aufgabe",
"title": "xxxx Aufgabe",
"content": "Hintergrund: xxxx\nTechnisches Ziel: xxxx\nAufgabenliste: xxxx"
},
{
"name": "Betriebsaufgabe",
"title": "xxxx Aufgabe",
"content": "Hintergrund: xxxx\nAktivitätsplan: xxxx\nDatenkennzahlen: xxxx\nAufgabenliste: xxxx"
},
{
"name": "Marketing",
"title": "xxxx Aufgabe",
"content": "Hintergrund: xxxx\nWerbeplan: xxxx\nDatenkennzahlen: xxxx\nAufgabenliste: xxxx"
},
{
"name": "Design-Aufgabe",
"title": "xxxx Aufgabe",
"content": "Hintergrund: xxxx\nDesignanforderungen: xxxx\nAufgabenliste: xxxx\nRelevante Ressourcen: xxxx"
},
{
"name": "Personalwesen",
"title": "xxxx Aufgabe",
"content": "Ziel: xxxx\nInhalt: xxxx\nAufgabenliste: xxxx"
},
{
"name": "Finanzaufgabe",
"title": "xxxx Aufgabe",
"content": "Hintergrund: xxxx\nGenehmigungsprozess: xxxx\nErstattungsliste: xxxx"
},
{
"name": "Verkaufsaufgabe",
"title": "xxxx Aufgabe",
"content": "Kundeninformationen: xxxx\nVerkaufsziel: xxxx\nAufgabenliste: xxxx"
},
{
"name": "Kundensupport",
"title": "xxxx Aufgabe",
"content": "Kundenprobleme: xxxx\nPrioritäten: xxxx\nLösung: xxxx\nAufgabenliste: xxxx"
},
{
"name": "Inhaltserstellung",
"title": "xxxx Aufgabe",
"content": "Thema: xxxx\nZiel: xxxx\nAufgabenliste: xxxx"
},
{
"name": "Rechtsangelegenheiten",
"title": "xxxx Aufgabe",
"content": "Vertragsgrundlage: xxxx\nPrüfungsschwerpunkte: xxxx\nAufgabenliste: xxxx"
},
{
"name": "Lernplan",
"title": "xxxx Aufgabe",
"content": "Lernziel: xxxx\nLernressourcen: xxxx\nAufgabenliste: xxxx"
},
{
"name": "Projektmanagement",
"title": "xxxx Aufgabe",
"content": "Projektgrundlage: xxxx\nAufgabenliste: xxxx\nStatus: xxxx"
},
{
"name": "Testaufgabe",
"title": "xxxx Aufgabe",
"content": "Testziel: xxxx\nTestumfang: xxxx\nTestfälle: xxxx\nProblemliste: xxxx"
},
{
"name": "Datenanalyse",
"title": "xxxx Aufgabe",
"content": "Analyseziel: xxxx\nDatenquelle: xxxx\nAnalysemethoden: xxxx\nSchlussfolgerungen und Empfehlungen: xxxx"
},
{
"name": "Lieferkettenmanagement",
"title": "xxxx Aufgabe",
"content": "Aufgabenziel: xxxx\nLieferanteninformationen: xxxx\nAufgabenliste: xxxx"
},
{
"name": "Sicherheitsprüfung",
"title": "xxxx Aufgabe",
"content": "Prüfungsumfang: xxxx\nPrüfungsstandards: xxxx\nProblemliste: xxxx\nKorrekturplan: xxxx"
},
{
"name": "Verwaltungsaufgaben",
"title": "xxxx Aufgabe",
"content": "Aufgabenbeschreibung: xxxx\nVerantwortliche Person: xxxx\nAufgabenliste: xxxx"
}
],
"fr": [
{
"name": "Tâche Générale",
"title": "xxxx Tâche",
"content": "Description : xxxx\nListe de contrôle : xxxx"
},
{
"name": "Exigence Produit",
"title": "xxxx Tâche",
"content": "Contexte : xxxx\nObjectif : xxxx\nListe de contrôle : xxxx"
},
{
"name": "Tâche Technique",
"title": "xxxx Tâche",
"content": "Contexte : xxxx\nObjectif Technique : xxxx\nListe des tâches : xxxx"
},
{
"name": "Tâche Opérationnelle",
"title": "xxxx Tâche",
"content": "Contexte : xxxx\nPlan d'activité : xxxx\nIndicateurs de données : xxxx\nListe des tâches : xxxx"
},
{
"name": "Marketing",
"title": "xxxx Tâche",
"content": "Contexte : xxxx\nPlan de promotion : xxxx\nIndicateurs de données : xxxx\nListe des tâches : xxxx"
},
{
"name": "Tâche de Design",
"title": "xxxx Tâche",
"content": "Contexte : xxxx\nExigences de design : xxxx\nListe des tâches : xxxx\nRessources associées : xxxx"
},
{
"name": "Ressources Humaines",
"title": "xxxx Tâche",
"content": "Objectif : xxxx\nContenu : xxxx\nListe des tâches : xxxx"
},
{
"name": "Tâche Financière",
"title": "xxxx Tâche",
"content": "Contexte : xxxx\nProcessus d'approbation : xxxx\nListe des remboursements : xxxx"
},
{
"name": "Tâche Commerciale",
"title": "xxxx Tâche",
"content": "Informations client : xxxx\nObjectif de vente : xxxx\nListe des tâches : xxxx"
},
{
"name": "Support Client",
"title": "xxxx Tâche",
"content": "Problèmes client : xxxx\nPriorité : xxxx\nSolution : xxxx\nListe des tâches : xxxx"
},
{
"name": "Création de Contenu",
"title": "xxxx Tâche",
"content": "Thème : xxxx\nObjectif : xxxx\nListe des tâches : xxxx"
},
{
"name": "Affaires Juridiques",
"title": "xxxx Tâche",
"content": "Contexte du contrat : xxxx\nPoints clés de révision : xxxx\nListe des tâches : xxxx"
},
{
"name": "Plan d'Apprentissage",
"title": "xxxx Tâche",
"content": "Objectif d'apprentissage : xxxx\nRessources d'apprentissage : xxxx\nListe des tâches : xxxx"
},
{
"name": "Gestion de Projet",
"title": "xxxx Tâche",
"content": "Contexte du projet : xxxx\nListe des tâches : xxxx\nStatut : xxxx"
},
{
"name": "Tâche de Test",
"title": "xxxx Tâche",
"content": "Objectif du test : xxxx\nPérimètre du test : xxxx\nCas de test : xxxx\nEnregistrements des problèmes : xxxx"
},
{
"name": "Analyse de Données",
"title": "xxxx Tâche",
"content": "Objectif d'analyse : xxxx\nSource de données : xxxx\nMéthodes d'analyse : xxxx\nConclusions et recommandations : xxxx"
},
{
"name": "Gestion de la Chaîne d'Approvisionnement",
"title": "xxxx Tâche",
"content": "Objectif de la tâche : xxxx\nInformations sur le fournisseur : xxxx\nListe des tâches : xxxx"
},
{
"name": "Inspection de Sécurité",
"title": "xxxx Tâche",
"content": "Périmètre de l'inspection : xxxx\nNormes d'inspection : xxxx\nEnregistrements des problèmes : xxxx\nPlan de correction : xxxx"
},
{
"name": "Affaires Administratives",
"title": "xxxx Tâche",
"content": "Description de la tâche : xxxx\nResponsable : xxxx\nListe des tâches : xxxx"
}
],
"id": [
{
"name": "Tugas Umum",
"title": "xxxx Tugas",
"content": "Deskripsi: xxxx\nDaftar Periksa: xxxx"
},
{
"name": "Kebutuhan Produk",
"title": "xxxx Tugas",
"content": "Latar Belakang: xxxx\nTujuan: xxxx\nDaftar Periksa: xxxx"
},
{
"name": "Tugas Teknis",
"title": "xxxx Tugas",
"content": "Latar Belakang: xxxx\nTujuan Teknis: xxxx\nDaftar Tugas: xxxx"
},
{
"name": "Tugas Operasional",
"title": "xxxx Tugas",
"content": "Latar Belakang: xxxx\nRencana Aktivitas: xxxx\nIndikator Data: xxxx\nDaftar Tugas: xxxx"
},
{
"name": "Pemasaran",
"title": "xxxx Tugas",
"content": "Latar Belakang: xxxx\nRencana Promosi: xxxx\nIndikator Data: xxxx\nDaftar Tugas: xxxx"
},
{
"name": "Tugas Desain",
"title": "xxxx Tugas",
"content": "Latar Belakang: xxxx\nPersyaratan Desain: xxxx\nDaftar Tugas: xxxx\nSumber Daya Terkait: xxxx"
},
{
"name": "Sumber Daya Manusia",
"title": "xxxx Tugas",
"content": "Tujuan: xxxx\nIsi: xxxx\nDaftar Tugas: xxxx"
},
{
"name": "Tugas Keuangan",
"title": "xxxx Tugas",
"content": "Latar Belakang: xxxx\nProses Persetujuan: xxxx\nDaftar Penggantian: xxxx"
},
{
"name": "Tugas Penjualan",
"title": "xxxx Tugas",
"content": "Informasi Pelanggan: xxxx\nTarget Penjualan: xxxx\nDaftar Tugas: xxxx"
},
{
"name": "Dukungan Pelanggan",
"title": "xxxx Tugas",
"content": "Masalah Pelanggan: xxxx\nPrioritas: xxxx\nSolusi: xxxx\nDaftar Tugas: xxxx"
},
{
"name": "Pembuatan Konten",
"title": "xxxx Tugas",
"content": "Topik: xxxx\nTujuan: xxxx\nDaftar Tugas: xxxx"
},
{
"name": "Urusan Hukum",
"title": "xxxx Tugas",
"content": "Latar Belakang Kontrak: xxxx\nFokus Peninjauan: xxxx\nDaftar Tugas: xxxx"
},
{
"name": "Rencana Pembelajaran",
"title": "xxxx Tugas",
"content": "Tujuan Pembelajaran: xxxx\nSumber Belajar: xxxx\nDaftar Tugas: xxxx"
},
{
"name": "Manajemen Proyek",
"title": "xxxx Tugas",
"content": "Latar Belakang Proyek: xxxx\nDaftar Tugas: xxxx\nStatus: xxxx"
},
{
"name": "Tugas Pengujian",
"title": "xxxx Tugas",
"content": "Tujuan Pengujian: xxxx\nLingkup Pengujian: xxxx\nKasus Pengujian: xxxx\nCatatan Masalah: xxxx"
},
{
"name": "Analisis Data",
"title": "xxxx Tugas",
"content": "Tujuan Analisis: xxxx\nSumber Data: xxxx\nMetode Analisis: xxxx\nKesimpulan dan Rekomendasi: xxxx"
},
{
"name": "Manajemen Rantai Pasokan",
"title": "xxxx Tugas",
"content": "Tujuan Tugas: xxxx\nInformasi Pemasok: xxxx\nDaftar Tugas: xxxx"
},
{
"name": "Inspeksi Keamanan",
"title": "xxxx Tugas",
"content": "Lingkup Inspeksi: xxxx\nStandar Inspeksi: xxxx\nCatatan Masalah: xxxx\nRencana Koreksi: xxxx"
},
{
"name": "Tugas Administrasi",
"title": "xxxx Tugas",
"content": "Deskripsi Tugas: xxxx\nPenanggung Jawab: xxxx\nDaftar Tugas: xxxx"
}
],
"ru": [
{
"name": "Общая задача",
"title": "xxxx Задача",
"content": "Описание: xxxx\nЧек-лист: xxxx"
},
{
"name": "Требования к продукту",
"title": "xxxx Задача",
"content": "Контекст: xxxx\nЦель: xxxx\nЧек-лист: xxxx"
},
{
"name": "Техническая задача",
"title": "xxxx Задача",
"content": "Контекст: xxxx\nТехническая цель: xxxx\nСписок задач: xxxx"
},
{
"name": "Операционная задача",
"title": "xxxx Задача",
"content": "Контекст: xxxx\nПлан действий: xxxx\nПоказатели данных: xxxx\nСписок задач: xxxx"
},
{
"name": "Маркетинг",
"title": "xxxx Задача",
"content": "Контекст: xxxx\nПлан продвижения: xxxx\nПоказатели данных: xxxx\nСписок задач: xxxx"
},
{
"name": "Дизайнерская задача",
"title": "xxxx Задача",
"content": "Контекст: xxxx\nТребования к дизайну: xxxx\nСписок задач: xxxx\nСвязанные ресурсы: xxxx"
},
{
"name": "Кадровая задача",
"title": "xxxx Задача",
"content": "Цель: xxxx\nСодержание: xxxx\nСписок задач: xxxx"
},
{
"name": "Финансовая задача",
"title": "xxxx Задача",
"content": "Контекст: xxxx\nПроцесс утверждения: xxxx\nЧек-лист возмещения: xxxx"
},
{
"name": "Задача по продажам",
"title": "xxxx Задача",
"content": "Информация о клиентах: xxxx\nЦель продаж: xxxx\nСписок задач: xxxx"
},
{
"name": "Клиентская поддержка",
"title": "xxxx Задача",
"content": "Проблемы клиентов: xxxx\nПриоритет: xxxx\nРешение: xxxx\nСписок задач: xxxx"
},
{
"name": "Создание контента",
"title": "xxxx Задача",
"content": "Тема: xxxx\nЦель: xxxx\nСписок задач: xxxx"
},
{
"name": "Юридические вопросы",
"title": "xxxx Задача",
"content": "Контекст контракта: xxxx\nКлючевые моменты проверки: xxxx\nСписок задач: xxxx"
},
{
"name": "План обучения",
"title": "xxxx Задача",
"content": "Цель обучения: xxxx\nУчебные ресурсы: xxxx\nСписок задач: xxxx"
},
{
"name": "Управление проектом",
"title": "xxxx Задача",
"content": "Контекст проекта: xxxx\nСписок задач: xxxx\nСтатус: xxxx"
},
{
"name": "Тестирование",
"title": "xxxx Задача",
"content": "Цель тестирования: xxxx\nОбласть тестирования: xxxx\nТестовые кейсы: xxxx\nЖурнал проблем: xxxx"
},
{
"name": "Анализ данных",
"title": "xxxx Задача",
"content": "Цель анализа: xxxx\nИсточник данных: xxxx\nМетоды анализа: xxxx\nВыводы и рекомендации: xxxx"
},
{
"name": "Управление цепочками поставок",
"title": "xxxx Задача",
"content": "Цель задачи: xxxx\nИнформация о поставщиках: xxxx\nСписок задач: xxxx"
},
{
"name": "Проверка безопасности",
"title": "xxxx Задача",
"content": "Область проверки: xxxx\nКритерии проверки: xxxx\nЖурнал проблем: xxxx\nПлан корректировки: xxxx"
},
{
"name": "Административные задачи",
"title": "xxxx Задача",
"content": "Описание задачи: xxxx\nОтветственное лицо: xxxx\nСписок задач: xxxx"
}
]
}

View File

@ -147,6 +147,16 @@
@on-history="onHistory"
@on-blur="updateBlur('content', $event)"/>
<Form class="items" label-position="left" label-width="auto" @submit.native.prevent>
<FormItem v-if="taskDetail.p_name">
<div class="item-label" slot="label">
<i class="taskfont">&#xe61e;</i>{{$L('标签')}}
</div>
<ul class="item-content">
<li>
</li>
</ul>
</FormItem>
<FormItem v-if="taskDetail.p_name">
<div class="item-label" slot="label">
<i class="taskfont">&#xe6ec;</i>{{$L('优先级')}}

View File

@ -2389,10 +2389,8 @@ export default {
url: 'system/priority',
}).then(result => {
state.taskPriority = result.data;
resolve(result)
}).catch(e => {
console.warn(e);
reject(e);
});
}, typeof timeout === "number" ? timeout : 1000)
},

View File

@ -46,14 +46,8 @@
.template-list {
.template-item {
margin-bottom: 16px;
padding: 16px;
border: 1px solid #F4F4F5;
border-radius: 4px;
&:hover {
border-color: #84C56A;
}
padding: 16px 0;
border-top: 1px solid #F4F4F5;
.template-title {
font-weight: 500;
@ -91,8 +85,7 @@
text-align: right;
> button {
margin-top: 8px;
margin-right: 8px;
margin: 8px 0 0 8px;
height: 28px;
padding: 0 12px;
font-size: 13px;
@ -107,11 +100,13 @@
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 16px;
padding: 16px;
border: 1px solid #F4F4F5;
border-radius: 4px;
padding: 16px 0;
border-top: 1px solid #F4F4F5;
.tag-contents {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin-right: 8px;
.tag-title {
height: 22px;
display: flex;
@ -119,12 +114,12 @@
color: $primary-title-color;
}
.tag-desc {
margin-top: 4px;
color: $primary-text-color;
font-size: 13px;
}
}
.tag-actions {
flex-shrink: 0;
> button {
margin: 8px 0 8px 8px;
height: 28px;
@ -153,7 +148,7 @@
> li {
list-style: none;
padding: 0px 12px;
padding: 0 12px;
background-color: #f5f5f5;
border-radius: 18px;
transition: all 0.3s ease;
@ -161,6 +156,35 @@
line-height: 34px;
height: 34px;
&.tag {
padding: 0;
.tags-box {
height: 100%;
> li {
height: 100%;
padding: 0 18px;
border-radius: 18px;
}
}
&.selected {
.tags-box {
> li {
position: relative;
padding-left: 34px;
&:before {
font-family: "taskfont", "serif" !important;
content: '\e627';
position: absolute;
top: 50%;
left: 12px;
font-size: 16px;
transform: translateY(-50%);
}
}
}
}
}
&:hover {
background-color: #e0e0e0;
}

View File

@ -97,14 +97,16 @@
}
}
.workflow-save {
margin: 0 8px;
flex-shrink: 0;
display: flex;
align-items: center;
margin: 0 8px;
> button {
height: 26px;
line-height: 24px;
padding: 0 13px;
font-size: 13px;
margin-right: 4px;
margin-left: 8px;
}
}
}