Commit 0594c68d authored by 陈浩玮's avatar 陈浩玮

Merge branch 'feature/shuiluo' into 'master'

Feature/shuiluo

See merge request product/kim3-web-vue/starter-web-vue!57
parents 178867f5 202bbe11
Pipeline #284 failed with stages
in 0 seconds
......@@ -8,6 +8,8 @@
import { mapState } from 'vuex';
import { changeThemeColor } from '@/utils/themeUtil';
import langUtils from '@/utils/langUtils';
import en_USLang from 'ant-design-vue/es/locale-provider/en_US';
import zh_CNLang from 'ant-design-vue/es/locale-provider/zh_CN';
export default {
name: 'App',
......@@ -47,14 +49,13 @@ export default {
this.$i18n.locale = lang;
switch (lang) {
case 'zh_CN':
this.locale = require('ant-design-vue/es/locale-provider/zh_CN').default;
this.locale = zh_CNLang;
break;
case 'en_US':
this.locale = require('ant-design-vue/es/locale-provider/en_US').default;
this.locale = en_USLang;
break;
default:
this.locale = require('ant-design-vue/es/locale-provider/en_US').default;
break;
this.locale = zh_CNLang;
}
},
setHtmlTitle() {
......
<template>
<div class="components-input-demo-presuffix">
<a-input :placeholder="placeholder" :value="cron" @input="handleinput" :disabled="disabled">
<a-icon slot="prefix" type="schedule" title="corn控件" @click="openModal" />
<a-icon v-if="cron" slot="suffix" type="close-circle" @click="handleEmpty" title="清空" />
<a-icon slot="prefix" type="schedule" :title="$t('corn.title')" @click="openModal" />
<a-icon
v-if="cron"
slot="suffix"
type="close-circle"
@click="handleEmpty"
:title="$t('input.clear')"
/>
</a-input>
<AntCron ref="innerVueCron" :data="afterCron" @ok="handleOK"></AntCron>
<AntCron ref="innerVueCron" :data="afterCron" @ok="handleOK" />
</div>
</template>
<script>
......@@ -41,7 +47,6 @@ export default {
cron(val) {
console.log(replaceWeekName(val));
this.afterCron = replaceWeekName(val);
console.log(val);
this.$emit('input', val);
},
},
......@@ -73,6 +78,7 @@ export default {
},
};
</script>
<style scoped>
.components-input-demo-presuffix .anticon-close-circle {
cursor: pointer;
......
This diff is collapsed.
......@@ -31,11 +31,11 @@ export default {
this.form = { ...data };
this.type = type;
if (type === 0) {
this.title = '新增';
this.title = this.$t('table.add');
} else if (type === 1) {
this.title = '编辑';
this.title = this.$t('table.edit');
} else if (type === 2) {
this.title = '查看';
this.title = this.$t('table.view');
} else {
this.title = '';
}
......
......@@ -3,7 +3,7 @@
:value="value"
style="width: 100%"
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
placeholder="Please select"
:placeholder="$t('select.placeholder')"
allow-clear
:options="data"
@change="onChange"
......
......@@ -3,7 +3,7 @@
show-search
style="width: 100%"
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
placeholder="请选择"
:placeholder="$t('select.placeholder')"
allow-clear
tree-default-expand-all
:treeData="treeData"
......
......@@ -8,7 +8,10 @@
list-type="picture"
>
<slot>
<a-button v-if="fileList.length < number"> <a-icon type="upload" /> 上传 </a-button>
<a-button v-if="fileList.length < number">
<a-icon type="upload" />
{{ $t('user.upload') }}
</a-button>
</slot>
</a-upload>
</template>
......
export default {
'corn.title': ['Cron 控件', 'Cron Component'],
'corn.expression': ['corn表达式', 'Corn Expression'],
'corn.close': ['关闭', 'Close'],
'corn.second': ['', 'Second'],
'corn.everySecond': ['每一秒钟', 'Every Second'],
'corn.everyOther': ['每隔', 'Every Other'],
'corn.specificSeconds': ['具体秒数(可多选)', 'Specific seconds (multiple choices)'],
'corn.everyMinute': ['每一分钟', 'Every Minute'],
'corn.minute': ['', 'Minute'],
'corn.specificMinutes': ['具体分钟数(可多选)', 'Specific minutes (multiple choices)'],
'corn.specificYear': ['具体年份(可多选)', 'Specific year (multiple choices)'],
'corn.everyYear': ['每一年', 'Every Year'],
'corn.year': ['', 'Year'],
'corn.specificMonths': ['具体月数(可多选)', 'Specific months (multiple choices)'],
'corn.everyMonth': ['每一月', 'Every Month'],
'corn.month': ['', 'Month'],
'corn.lastmonth': ['在这个月的最后一天', 'On the last day of the month'],
'corn.lastWorkingDay': ['在这个月的最后一个工作日', 'On the last working day of the month'],
'corn.specificDays': ['具体天数(可多选)', 'Specific days (multiple choices)'],
'corn.specificDayOfWeek': ['具体星期几(可多选)', 'Specific day of the week (multiple choices)'],
'corn.day': ['', 'Day'],
'corn.everyDay': ['每一天', 'Every single day'],
'corn.specificHours': ['具体小时数(可多选)', 'Specific hours (multiple choices)'],
};
export default {
'basic.layout': ['编排', 'Layout'],
'basic.dispatch': ['调度', 'Dispatch'],
'basic.personalDistribution': ['按人分配', 'Personal Distribution'],
'basic.distributionBySpecialty': ['按专业分配', 'Distribution By Specialty'],
'basic.expirationMethod': ['过期方式', 'Expiration Method'],
'basic.expirationMethodError': ['请选择过期方式', 'Please Select Expiration Method'],
'basic.nextTaskBegins': ['下次任务开始过期', 'The Next Task Begins To Expire'],
'basic.oneDay': ['一天后过期', 'Expires In One Day'],
'basic.sevenDay': ['七天后过期', 'Expires In Seven Days'],
'basic.moreDay': ['十五天后过期', 'Expires In 15 Days'],
'basic.notExpired': ['不过期', 'Not Expired'],
'basic.day': ['白班', 'DAY'],
'basic.middle': ['中班', 'MIDDLE'],
'basic.night': ['晚班', 'NIGHT'],
'basic.generateNext': ['生成第二天线路', 'Generate Next Day Line'],
'basic.generateNextError': ['请选择', 'Please Select'],
'basic.executeOnce': ['执行一次', 'Execute Once'],
'basic.staffName': ['姓名', 'StaffName'],
'basic.newLocation': ['新增地点', 'New Location'],
'basic.name': ['名称', 'Name'],
'basic.place': ['地点', 'Place'],
'basic.unit': ['单元', 'Unit'],
'basic.item': ['项目', 'Item'],
'basic.addUnit': ['新增单元', 'Add Unit'],
'basic.addItem': ['新增项目', 'Add Item'],
'basic.topping': ['置顶', 'Topping'],
'basic.setSort': ['设置排序', 'Set Sort'],
'basic.unitNameSeach': ['单元名称/设备编号', 'Unit Name/Equipment Number'],
};
......@@ -4,6 +4,10 @@ import userLang from './user';
import systemLang from './system';
import InputLang from './input';
import OtherLang from './other';
import acronLang from './acron';
import basicLang from './basic';
import taskCenterLang from './task_center';
import oceanusLang from './oceanus';
const zh_CN = {};
const en_US = {};
......@@ -11,6 +15,9 @@ const en_US = {};
function formatLang(langObject) {
for (const key in langObject) {
const element = langObject[key];
if (zh_CN[key]) {
console.warn('当前key值: ', key, '已经被注册了');
}
zh_CN[key] = element[0];
en_US[key] = element[1];
}
......@@ -22,5 +29,9 @@ formatLang(userLang);
formatLang(systemLang);
formatLang(InputLang);
formatLang(OtherLang);
formatLang(acronLang);
formatLang(basicLang);
formatLang(taskCenterLang);
formatLang(oceanusLang);
export { en_US, zh_CN };
......@@ -7,4 +7,5 @@ export default {
],
'input.search': ['搜索', 'search'],
'input.error': ['输入的内容有误!', 'Incorrect Input!'],
'input.clear': ['清空', 'Clear'],
};
export default {
'oc.attributeName': ['属性名称', 'Attribute Name'],
'oc.attributeNameErrorInfo': ['请输入属性名称', 'Please enter attribute Name'],
'oc.toBottom': ['置底', 'ToBottom'],
'oc.cancelConfirm': ['确认是否取消', 'Confirm Whether To Cancel'],
'oc.code': ['编码', 'Code'],
'oc.newOrganization': ['新增组织', 'New Organization'],
'oc.newEquipment': ['新增设备', 'New Equipment'],
'oc.rootNode': ['根节点', 'RootNode'],
'oc.equipmentCode': ['设备编码', 'Equipment Code'],
'oc.equipmentName': ['设备名称', 'Equipment Name'],
'oc.category': ['类别', 'Category'],
'oc.equipmentGrade': ['等级', 'EquipmentGrade'],
'oc.installTime': ['安装日期', 'InstallTime'],
'oc.runTime': ['运行日期', 'RunTime'],
'oc.supplier': ['供应商', 'Supplier'],
'oc.manufacturer': ['制造商', 'Manufacturer'],
'oc.occurTime': ['发生日期', 'OccurTime'],
'oc.attribute': ['属性', 'Attribute'],
'oc.event': ['事件', 'Event'],
'oc.equipment': ['设备', 'Equipment'],
'oc.timeType': ['时间类型', 'TimeType'],
'oc.recordsNumber': ['记录数', 'Number Of Records'],
'oc.eventFiltering': ['事件过滤', 'Event Filtering'],
'oc.filter': ['过滤', 'Filter'],
'oc.all': ['全部', 'All'],
'oc.system': ['全部', 'System'],
'oc.custom': ['自定义', 'custom'],
'oc.attributeValue': ['属性名称', 'Attribute Value'],
'oc.attributeType': ['属性类型', 'Attribute Type'],
'oc.confirm': ['确认', 'Confirm'],
};
......@@ -4,14 +4,17 @@ export default {
'select.startTime': ['开始时间', 'Start Time'],
'select.endTime': ['结束时间', 'End Time'],
'select.region': ['地区', 'Region'],
'select.regionError': ['请选择地区', 'Please Select Region'],
'select.speciality': ['专业', 'Speciality'],
'select.shiftTypeName': ['班组', 'ShiftTypeName'],
'select.shiftTypeNameError': ['请输入班组名称', 'Pleas Enter ShiftTypeName'],
export: ['导出', 'Export'],
'select.routes': ['线路', 'Routes'],
'select.examine': ['巡检状态', 'Examine Status'],
'select.taskType': ['任务类型', 'Task Type'],
'select.examiner': ['巡检人', 'Examiner'],
'select.routeName': ['线路名称', 'Route Name'],
'select.routeNameError': ['请输入@:select.routeName', 'Please Enter @:select.routeName'],
'select.option.place': ['地点免检', 'Place Exemption'],
'select.option.unit': ['单元免检', 'Unit Exemption'],
};
......@@ -3,4 +3,90 @@ export default {
'system.jobName.add': ['请输入@:system.jobName', 'Please Input @:system.jobName'],
'system.department': ['所属部门', 'Department'],
'system.userTitleName': ['用户职称', 'User Title Name'],
'menu.name': ['名称', 'Menu Name'],
'menu.type': ['类型', 'Menu Type'],
'menu.order': ['排序', 'Order'],
'menu.icon': ['图标', 'Icon'],
'menu.addComponent': ['添加组件', 'Add Component'],
'menu.menuComponent': ['菜单组件', 'Menu Component'],
'menu.componentName': ['组件名称', 'Component Name'],
'menu.componentCode': ['组件编码', 'Component Code'],
'menu.parent': ['父级', 'Parent'],
'menu.noSelected': ['没选择代表根目录', 'No Representative Root Is Selected'],
'menu.catalogue': ['目录', 'Catalogue'],
'menu.menu': ['菜单', 'Menu'],
'menu.chineseName': ['中文名称', 'Chinese Name'],
'menu.englishName': ['英文名称', 'English Name'],
'menu.menuUrlRequired': ['请输入Url', 'URL Is Required'],
'menu.menuTypeNameZhRequired': ['请输入中文名称', '@:menu.chineseName Is Required'],
'menu.menuTypeNameEnRequired': ['请输入英文名称', '@:menu.englishName Is Required'],
'role.roleName': ['角色名称', 'Role Name'],
'role.roleCode': ['角色编码', 'Role Code'],
'role.roleRemark': ['角色说明', 'Remark'],
'role.roleNameInput': ['请输入 @:role.roleName', 'Please Input @:role.roleName'],
'role.roleCodeInput': ['请输入 @:role.roleCode', 'Please Input @:role.roleCode'],
'role.menuPermissions': ['菜单权限', 'Menu Permissions'],
'task.schedulingRules': ['调度规则', 'Scheduling Rules'],
'task.implementClass': ['实现类', 'Implement Class'],
'task.invalid': ['失效', 'Invalid'],
'task.invalidTip': ['确认是否失效', 'Confirm Whether To Disable It'],
'task.taskNameError': ['请输入 @:system.jobName', 'Please Input @:system.jobName'],
'task.taskRuleError': ['请输入 @:task.schedulingRules', 'Please Input @:task.schedulingRules'],
'log.loginIp': ['登录IP', 'LoginIp'],
'log.loginUser': ['登录用户', 'LoginUser'],
'log.eventType': ['事件类型', 'EventType'],
'log.login': ['登录系统', 'Login'],
'log.logout': ['退出系统', 'Logout'],
'log.eventStatus': ['事件状态', 'EventStatus'],
fail: ['失败', 'Fail'],
success: ['成功', 'success'],
'log.userId': ['用户Id', 'UserId'],
'log.loginTime': ['登录时间', 'LoginTime'],
'log.businessModule': ['业务模块', 'Business Module'],
'log.operationService': ['操作服务', 'Operation Service'],
'log.operateTime': ['操作时间', 'Operate Time'],
'paramter.paramValue': ['参数值', 'Parameter Value'],
'paramter.paramValueError': ['请输入 @:paramter.paramValue', 'Please Input @:paramter.paramValue'],
'paramter.parameterCoding': ['参数编码', 'Parameter Coding'],
'paramter.parameterCodingError': [
'请输入 @:paramter.parameterCoding',
'Please Input @:paramter.parameterCoding',
],
'paramter.moduleParameters': ['参数模块', 'Module Parameters'],
'paramter.moduleParametersError': [
'请输入 @:paramter.moduleParameters',
'Please Input @:paramter.moduleParameters',
],
language: ['语言', 'Language'],
languageInputError: ['请输入@:language', 'Please Input @:language'],
'business.parameterName': ['参数名称', 'Parameter Name'],
'business.parameterNameError': [
'请输入@:business.parameterName',
'Please Input @:business.parameterName',
],
order: ['顺序', 'Order'],
orderInputError: ['请输入@:order', 'Please Input @:order'],
'system.organization': ['组织', 'Organization'],
'system.parentName': ['上级组织名称', 'Parent Organization Name'],
'system.jobs': ['岗位', 'Jobs'],
'system.organizationRoot': ['组织根目录', 'Organization Root'],
'system.userConfig': ['用户配置', 'User Configuration'],
'system.previousStep': ['上一步', 'Previous Step'],
'system.nextStep': ['下一步', 'Next Step'],
'system.info': ['基本信息', 'Essential Information'],
'system.cerSet': ['证件设置', 'Certificate Setting'],
'system.postSet': ['岗位设置', 'Post Setting'],
'system.mustSetPost': ['必须设置岗位', 'Posts Must Be Set'],
'system.account': ['账号', 'Account'],
'system.role': ['角色', 'Role'],
'system.addCertificate': ['添加证件', 'Add Certificate'],
'system.certificateEditor': ['证件编辑', 'Certificate Editor'],
'system.certificateType': ['证件类型', 'Certificate Type'],
'system.certificateName': ['证件名称', 'Certificate Name'],
'system.certificateNumber': ['证件号码', 'Certificate Number'],
'system.issuingAuthority': ['发证机构', 'Issuing Authority'],
'system.term': ['有效期', 'Term Of Validity'],
'system.copyCertificate': ['证件副本', 'Copy Of Certificate'],
'system.addPosition': ['添加岗位', 'Add Position'],
'system.PartAndFulltime': ['兼职/全职', 'Part Time / Full Time'],
};
......@@ -4,7 +4,6 @@ export default {
'table.reset': ['重置', 'Reset'],
'table.add': ['新增', 'Add'],
'table.search': ['查询', 'Search'],
'input.placeholder': ['请输入', 'Please Input'],
'table.jobTime': ['任务时间', 'Job Time'],
'table.inspectionStartTime': ['巡检开始时间', 'InspectionStartTime'],
'table.inspectionEndTime': ['巡检结束时间', 'InspectionEndTime'],
......@@ -36,7 +35,7 @@ export default {
'table.view': ['查看', 'View'],
'table.export': ['导出', 'export'],
'table.placeName': ['地点名称', 'Place Name'],
'table.place': ['地点', 'place'],
'table.place': ['地点', 'Place'],
'table.QrCode': ['二维码', 'Qr Code'],
'table.ElectronicTags': ['电子标签', 'Electronic tags'],
'table.exemption': ['免检', 'Exemption'],
......@@ -50,6 +49,7 @@ export default {
'table.dataType': ['数据类型', 'Data Type'],
'table.majorName': ['专业名称', 'Major Name'],
'table.major': ['专业', 'Major'],
'table.majorError': ['请选择@:table.major', 'Please Select @:table.major'],
'table.personnel': ['人员', 'Personnel'],
'table.department': ['部门', 'Department'],
'table.exemptionType': ['免检类型', 'Exemption Type'],
......@@ -60,4 +60,22 @@ export default {
'table.time.end': ['结束时间', 'Start End'],
'table.reason': ['原因', 'Reason'],
'table.state': ['状态', 'State'],
'table.import': ['导入', 'Import'],
'table.takeEffect': ['生效', 'Take Effect'],
'table.operationSucceeded': ['操作成功', 'Operation Succeeded'],
'table.operationFailed': ['操作失败', 'Operation Failed'],
'table.uploadFile': ['上传文件', 'Upload File'],
'table.downloadTemplate': ['下载模板', 'Download Template'],
'table.distributionMode': ['分配方式', 'Distribution Mode'],
'table.distributionModeError': ['请选择分配方式', 'Please Select Distribution Mode'],
'table.yes': ['', 'YES'],
'table.no': ['', 'NO'],
'table.patrolResults': ['巡查结果', 'Patrol Results'],
'table.patrolTime': ['巡查时间', 'Patrol Time'],
'table.collectData': ['采集数据', 'Collect Data'],
'table.referenceValue': ['参考值', 'Reference Value'],
'table.inspectionItems': ['巡检项目', 'Patrol Inspection Items'],
'table.errors': ['异常', 'Errors'],
'table.completionRate': ['完成率', 'Completion Rate'],
'table.submit': ['提交', 'Submit'],
};
export default {
'task.remarksAndAttachments': ['备注 & 附件', 'Remarks & Attachments'],
'task.images': ['图片', 'Images'],
'task.videos': ['视频', 'Videos'],
};
......@@ -100,12 +100,8 @@ export default {
}
}
.admin-header-wide {
padding-left: 24px;
&.head.fixed {
max-width: 1400px;
margin: auto;
padding-left: 0;
}
padding: 0 24px;
&.side {
padding-right: 12px;
}
......
......@@ -50,7 +50,7 @@ import LayoutTopHeader from '../components/header/LayoutTopHeader.vue';
import Drawer from '@/components/tool/Drawer.vue';
import SideMenu from '@/components/menu/SideMenu.vue';
import Setting from '../components/setting/Setting.vue';
import { mapState, mapMutations, mapGetters } from 'vuex';
import { mapState, mapMutations } from 'vuex';
import { convertListToTree, getUserInfo } from '@/utils';
// const minHeight = window.innerHeight - 64 - 122
......
......@@ -20,9 +20,9 @@
<a-col :span="24" class="tw-text-right">
<a-button-group>
<a-button type="primary" ghost @click="add">新增</a-button>
<a-button type="primary" ghost @click="edit">编辑</a-button>
<a-button type="primary" ghost @click="del">删除</a-button>
<a-button type="primary" ghost @click="add">{{ $t('table.add') }}</a-button>
<a-button type="primary" ghost @click="edit">{{ $t('table.edit') }}</a-button>
<a-button type="primary" ghost @click="del">{{ $t('table.delete') }}</a-button>
</a-button-group>
</a-col>
</a-row>
......@@ -136,14 +136,12 @@ export default {
if (!categoryId) return;
try {
await Api.delOceanusTree({ categoryId });
this.$message.success('删除成功!');
this.$message.success(this.$t('table.operationSucceeded'));
this.init();
} catch (e) {
this.$message.warning('删除失败!');
this.$message.warning(this.$t('table.operationFailed'));
}
},
},
};
</script>
<style scoped>
</style>
......@@ -12,13 +12,13 @@
<template #search>
<a-row>
<a-col :span="12">
<a-button type="link" @click="onAddTableRow">新增</a-button>
<a-button type="link" @click="onAddTableRow">{{ $t('table.add') }}</a-button>
</a-col>
<a-col :span="12" class="tw-text-right">
<a-input-search
v-model="attributeName"
:style="{ width: '80%' }"
placeholder="请输入搜索内容"
:placeholder="$t('input.placeholder')"
enter-button
allowClear
@search="onSearch"
......@@ -27,15 +27,19 @@
</a-row>
</template>
<a-table-column title="属性名称">
<a-table-column :title="$t('oc.attributeName')">
<template #default="row">
<a-input v-if="row.editable" v-model="row.attributeName" />
<a-input
v-if="row.editable"
v-model="row.attributeName"
:placeholder="$t('input.placeholder')"
/>
<span v-else>
{{ row.attributeName }}
</span>
</template>
</a-table-column>
<a-table-column title="操作" :width="180">
<a-table-column :title="$t('table.operation')" :width="180">
<template #default="row">
<ActionButton v-if="row.editable" :buttons="editButtons" :row="row" />
<ActionButton v-else :buttons="buttons" :row="row" />
......@@ -69,7 +73,7 @@ export default {
return {
buttons: [
{
label: '编辑',
label: this.$t('table.edit'),
click: this.onEditTableRow,
},
{
......@@ -78,41 +82,41 @@ export default {
after: () => this.refreshTable(),
},
{
label: '置顶',
label: this.$t('basic.topping'),
click: async (row) => {
const { attributeId, categoryId } = row;
try {
await Api.movementAttributes({ attributeId, categoryId, moveType: 'TOP' });
this.refreshTable();
this.$message.success('置顶成功!');
this.$message.success(this.$t('table.operationSucceeded'));
} catch (e) {
this.$message.warning('置顶失败!');
this.$message.warning(this.$t('table.operationFailed'));
}
},
},
{
label: '置底',
label: this.$t('oc.toBottom'),
click: async (row) => {
const { attributeId, categoryId } = row;
try {
await Api.movementAttributes({ attributeId, categoryId, moveType: 'BOTTOM' });
this.refreshTable();
this.$message.success('置顶成功!');
this.$message.success(this.$t('table.operationSucceeded'));
} catch (e) {
this.$message.warning('置顶失败!');
this.$message.warning(this.$t('table.operationFailed'));
}
},
},
],
editButtons: [
{
label: '确定',
label: this.$t('table.submit'),
click: this.onSubmitTableRow,
},
{
type: 'confirm',
label: '取消',
title: '确认是否取消?',
label: this.$t('table.cancel'),
title: this.$t('oc.cancelConfirm'),
onOk: this.onCancelTableRow,
},
],
......@@ -162,7 +166,7 @@ export default {
},
async onSubmitTableRow(row) {
if (row.attributeName === '') {
return this.$message.warning('请输入属性名称!');
return this.$message.warning(this.$t('oc.attributeNameErrorInfo'));
} else {
try {
if (row.action === 'add') {
......@@ -172,9 +176,9 @@ export default {
await Api.updateAttributes(row);
}
this.refreshTable();
this.$message.success('提交成功!');
this.$message.success(this.$t('table.operationSucceeded'));
} catch (e) {
this.$message.warning('保存失败!');
this.$message.warning(this.$t('table.operationFailed'));
}
}
},
......@@ -196,5 +200,3 @@ export default {
},
};
</script>
<style scoped>
</style>
<template>
<Drawer ref="drawerRef" v-model="visible" :title="title" :onOk="submit" :colesAfter="refresh">
<a-form-model layout="vertical" :model="form" :rules="rules" ref="DrawerForm">
<a-form-model-item label="编码" prop="categoryCode">
<a-input v-model="form.categoryCode" :disabled="isView" />
<a-form-model-item :label="$t('oc.code')" prop="categoryCode">
<a-input
v-model="form.categoryCode"
:disabled="isView"
:placeholder="$t('input.placeholder')"
/>
</a-form-model-item>
<a-form-model-item label="名称" prop="categoryName">
<a-input v-model="form.categoryName" :disabled="isView" />
<a-form-model-item :label="$t('basic.name')" prop="categoryName">
<a-input
v-model="form.categoryName"
:disabled="isView"
:placeholder="$t('input.placeholder')"
/>
</a-form-model-item>
<a-form-model-item label="说明" prop="remark">
<a-textarea v-model="form.remark" :disabled="isView" :rows="4" />
<a-form-model-item :label="$t('table.remark')" prop="remark">
<a-textarea
v-model="form.remark"
:disabled="isView"
:rows="4"
:placeholder="$t('input.placeholder')"
/>
</a-form-model-item>
</a-form-model>
</Drawer>
......@@ -30,14 +43,13 @@ export default {
visible: false,
form: {},
rules: {
categoryCode: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
categoryName: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
remark: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
categoryCode: [{ required: true, message: this.$t('input.error'), trigger: 'change' }],
categoryName: [{ required: true, message: this.$t('input.error'), trigger: 'change' }],
remark: [{ required: true, message: this.$t('input.error'), trigger: 'change' }],
},
Api,
};
},
async mounted() {},
methods: {
open() {
this.form = {};
......
......@@ -20,11 +20,5 @@ export default {
treeVale: {},
};
},
watch: {
treeVale(val) {
console.log(val);
},
},
methods: {},
};
</script>
......@@ -25,11 +25,15 @@
key="1"
@click="addOrg"
:disabled="!(treeNode && treeNode.dataRef.catalogType !== 'EQUIPMENT')"
>新增组织
>
{{ $t('oc.newOrganization') }}
</a-menu-item>
<a-menu-item key="2" @click="addEqu">新增设备 </a-menu-item>
<a-menu-item key="2" @click="addEqu">{{ $t('oc.newEquipment') }}</a-menu-item>
</a-menu>
<a-button type="primary" ghost>新增 <a-icon type="down" /></a-button>
<a-button type="primary" ghost>
{{ $t('table.add') }}
<a-icon type="down" />
</a-button>
</a-dropdown>
<!-- <a-button
type="primary"
......@@ -52,15 +56,17 @@
ghost
@click="edit"
:disabled="!(treeNode && treeNode.dataRef.catalogType === 'EQUIPMENT')"
>编辑</a-button
>
{{ $t('table.edit') }}
</a-button>
<a-button
type="primary"
ghost
@click="del"
:disabled="!(treeNode && treeNode.dataRef.catalogType !== 'ROOTNODE')"
>删除</a-button
>
{{ $t('table.delete') }}
</a-button>
</a-button-group>
</a-col>
</a-row>
......@@ -117,7 +123,7 @@ export default {
this.treeData = [];
const parentNode = {
catalogId: -1,
catalogName: '根节点',
catalogName: this.$t('oc.rootNode'),
catalogType: 'ROOTNODE',
isLeaf: false,
};
......@@ -206,12 +212,12 @@ export default {
if (isObjEmpty(data)) return;
try {
await Api.delEquipmentsTree(data);
this.$message.success('删除成功!');
this.$message.success(this.$t('table.operationSucceeded'));
this.onLoadData(this.treeNode.$parent);
this.treeNode = undefined;
this.selectedKeys = [];
} catch (e) {
this.$message.warning('删除失败!');
this.$message.warning(this.$t('table.operationFailed'));
}
},
treeDrawerRefresh(type, data) {
......
......@@ -4,7 +4,7 @@
show-search
style="width: 100%"
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
placeholder="Please select"
:placeholder="$t('select.placeholder')"
:tree-data="treeData"
allow-clear
tree-default-expand-all
......
<template>
<Drawer ref="drawerRef" v-model="visible" :title="title" :onOk="submit" :colesAfter="colesAfter">
<a-form-model layout="vertical" :model="form" :rules="rules" ref="DrawerForm">
<a-form-model-item label="设备编码" prop="equipmentCode">
<a-input v-model="form.equipmentCode" :disabled="isView" />
<a-form-model-item :label="$t('oc.equipmentCode')" prop="equipmentCode">
<a-input
v-model="form.equipmentCode"
:disabled="isView"
:placeholder="$t('input.placeholder')"
/>
</a-form-model-item>
<a-form-model-item label="设备名称" prop="equipmentName">
<a-input v-model="form.equipmentName" :disabled="isView" />
<a-form-model-item :label="$t('oc.equipmentName')" prop="equipmentName">
<a-input
v-model="form.equipmentName"
:disabled="isView"
:placeholder="$t('input.placeholder')"
/>
</a-form-model-item>
<a-form-model-item label="类别" prop="categoryId">
<a-tree-select :treeData="oceanusTreeList" v-model="form.categoryId" :disabled="type === 1" />
<a-form-model-item :label="$t('oc.category')" prop="categoryId">
<a-tree-select
:treeData="oceanusTreeList"
v-model="form.categoryId"
:disabled="type === 1"
:placeholder="$t('select.placeholder')"
/>
</a-form-model-item>
<a-form-model-item label="等级" prop="equipmentGrade">
<Select v-model="form.equipmentGrade" :options="equipmentGradeList" :disabled="isView" />
<a-form-model-item :label="$t('oc.equipmentGrade')" prop="equipmentGrade">
<Select
v-model="form.equipmentGrade"
:options="equipmentGradeList"
:disabled="isView"
:placeholder="$t('select.placeholder')"
/>
</a-form-model-item>
<a-form-model-item label="安装日期" prop="installTime">
<a-form-model-item :label="$t('oc.installTime')" prop="installTime">
<a-date-picker class="tw-w-full" v-model="form.installTime" :disabled="isView" />
</a-form-model-item>
<a-form-model-item label="运行日期" prop="runTime">
<a-form-model-item :label="$t('oc.runTime')" prop="runTime">
<a-date-picker class="tw-w-full" v-model="form.runTime" :disabled="isView" />
</a-form-model-item>
<a-form-model-item label="供应商" prop="supplier">
<a-input v-model="form.supplier" :disabled="isView" />
<a-form-model-item :label="$t('oc.supplier')" prop="supplier">
<a-input v-model="form.supplier" :disabled="isView" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
<a-form-model-item label="制造商" prop="manufacturer">
<a-input v-model="form.manufacturer" :disabled="isView" />
<a-form-model-item :label="$t('oc.manufacturer')" prop="manufacturer">
<a-input
v-model="form.manufacturer"
:disabled="isView"
:placeholder="$t('input.placeholder')"
/>
</a-form-model-item>
<a-form-model-item label="专业" prop="specialtyCode">
<a-form-model-item :label="$t('select.speciality')" prop="specialtyCode">
<Select v-model="form.specialtyCode" :options="specialtyCodeList" :disabled="isView" />
</a-form-model-item>
</a-form-model>
......@@ -51,13 +73,9 @@ export default {
visible: false,
form: {},
rules: {
equipmentCode: [
{ required: true, message: 'Please select Activity zone', trigger: 'change' },
],
equipmentName: [
{ required: true, message: 'Please select Activity zone', trigger: 'change' },
],
categoryId: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
equipmentCode: [{ required: true, message: this.$t('input.error'), trigger: 'change' }],
equipmentName: [{ required: true, message: this.$t('input.error'), trigger: 'change' }],
categoryId: [{ required: true, message: this.$t('select.placeholder'), trigger: 'change' }],
},
equipmentGradeList: [],
specialtyCodeList: [],
......
<template>
<a-modal ref="drawerRef" :visible="visible" title="新增组织" @ok="submit" @cancel="close">
<a-modal
ref="drawerRef"
:visible="visible"
:title="$t('oc.newOrganization')"
@ok="submit"
@cancel="close"
>
<a-form-model layout="vertical" :model="form" :rules="rules" ref="DrawerForm">
<a-form-model-item label="组织" prop="catalogValue">
<a-form-model-item :label="$t('system.organization')" prop="catalogValue">
<OrganizationTree v-model="form.catalogValue" :disabled="isView" />
</a-form-model-item>
</a-form-model>
......@@ -31,12 +37,11 @@ export default {
parentId: undefined,
form: {},
rules: {
catalogValue: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
catalogValue: [{ required: true, message: this.$t('select.placeholder'), trigger: 'change' }],
},
Api,
};
},
async mounted() {},
methods: {
open() {
this.form = {};
......
<template>
<Drawer ref="drawerRef" v-model="visible" :title="title" :onOk="submit" :colesAfter="colesAfter">
<a-form-model layout="vertical" :model="form" :rules="rules" ref="DrawerForm">
<a-form-model-item label="设备编码" prop="equipmentId">
<a-select v-model="form.equipmentId" :disabled="true" :options="options" />
<a-form-model-item :label="$t('oc.equipmentCode')" prop="equipmentId">
<a-select
v-model="form.equipmentId"
:disabled="true"
:options="options"
:placeholder="$t('select.placeholder')"
/>
</a-form-model-item>
<a-form-model-item label="事件类型" prop="eventType">
<a-form-model-item :label="$t('log.eventType')" prop="eventType">
<MySelect
v-model="form.eventType"
:request="getStaticDataApi"
......@@ -12,7 +17,7 @@
:disabled="isView"
/>
</a-form-model-item>
<a-form-model-item label="发生日期" prop="occurTime">
<a-form-model-item :label="$t('oc.occurTime')" prop="occurTime">
<a-date-picker
v-model="form.occurTime"
style="width: 100%"
......@@ -20,12 +25,12 @@
:disabled="isView"
/>
</a-form-model-item>
<a-form-model-item label="设备编码" prop="eventDescription">
<a-form-model-item :label="$t('oc.equipmentCode')" prop="eventDescription">
<a-textarea
:rows="4"
v-model="form.eventDescription"
style="width: 100%"
placeholder="Select date"
:placeholder="$t('input.placeholder')"
:disabled="isView"
/>
</a-form-model-item>
......@@ -53,9 +58,7 @@ export default {
watch: {
dataInfo: {
handler(val) {
console.log(val);
const { catalogName, equipmentId } = val;
this.options = [{ value: equipmentId, label: catalogName, key: equipmentId }];
},
deep: true,
......@@ -67,12 +70,10 @@ export default {
visible: false,
form: {},
rules: {
equipmentId: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
eventType: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
occurTime: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
eventDescription: [
{ required: true, message: 'Please select Activity zone', trigger: 'change' },
],
equipmentId: [{ required: true, message: this.$t('select.placeholder'), trigger: 'change' }],
eventType: [{ required: true, message: this.$t('select.placeholder'), trigger: 'change' }],
occurTime: [{ required: true, message: this.$t('select.placeholder'), trigger: 'change' }],
eventDescription: [{ required: true, message: this.$t('input.error'), trigger: 'change' }],
},
options: [],
getStaticDataApi,
......
<template>
<my-card>
<a-tabs v-model="key">
<a-tab-pane key="1" tab="基本信息" :forceRender="true">
<a-tab-pane key="1" :tab="$t('system.info')" :forceRender="true">
<TabOne v-if="key === '1'" :dataInfo="dataInfo" />
</a-tab-pane>
<a-tab-pane key="2" tab="属性" :forceRender="true">
<a-tab-pane key="2" :tab="$t('oc.attribute')" :forceRender="true">
<TabTwo v-if="key === '2'" :dataInfo="dataInfo" />
</a-tab-pane>
<a-tab-pane key="3" tab="事件" :forceRender="true">
<a-tab-pane key="3" :tab="$t('oc.event')" :forceRender="true">
<TabThree v-if="key === '3'" :dataInfo="dataInfo" />
</a-tab-pane>
</a-tabs>
......
......@@ -3,28 +3,32 @@
<template slot="content">
<div :style="{ width: '400px' }">
<a-form-model :model="form" :labelCol="{ span: 6 }" :wrapperCol="{ span: 18 }">
<a-form-model-item :style="{ marginBottom: 0 }" label="开始时间">
<a-form-model-item :style="{ marginBottom: 0 }" :label="$t('select.startTime')">
<a-date-picker
v-model="form.startTime"
style="width: 100%"
placeholder="Select date"
:placeholder="$t('select.placeholder')"
/>
</a-form-model-item>
<a-form-model-item :style="{ marginBottom: 0 }" label="结束时间">
<a-date-picker v-model="form.endTime" style="width: 100%" placeholder="Select date" />
<a-form-model-item :style="{ marginBottom: 0 }" :label="$t('select.endTime')">
<a-date-picker
v-model="form.endTime"
style="width: 100%"
:placeholder="$t('select.placeholder')"
/>
</a-form-model-item>
<a-form-model-item :style="{ marginBottom: 0 }" label="设备">
<a-form-model-item :style="{ marginBottom: 0 }" :label="$t('oc.equipment')">
<a-tree-select
v-model="form.equipmentId"
style="width: 100%"
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
:tree-data="treeData"
placeholder="Please select"
:placeholder="$t('select.placeholder')"
treeDataSimpleMode
:load-data="onLoadData"
/>
</a-form-model-item>
<a-form-model-item :style="{ marginBottom: 0 }" label="时间类型">
<a-form-model-item :style="{ marginBottom: 0 }" :label="$t('oc.timeType')">
<MySelect
v-model="form.eventType"
:request="getStaticDataApi"
......@@ -35,9 +39,9 @@
<a-row>
<a-col :span="24" class="tw-text-right tw-mt-4">
<a-space>
<a-button type="default" @click="hide">取消</a-button>
<a-button type="default" @click="rest">重置</a-button>
<a-button type="primary" @click="submit">确定</a-button>
<a-button type="default" @click="hide">{{ $t('table.cancel') }}</a-button>
<a-button type="default" @click="rest">{{ $t('table.reset') }}</a-button>
<a-button type="primary" @click="submit">{{ $t('table.submit') }}</a-button>
</a-space>
</a-col>
</a-row>
......@@ -45,7 +49,7 @@
</template>
<slot name="btn">
<a-button type="link">搜索</a-button>
<a-button type="link">{{ $t('table.search') }}</a-button>
</slot>
</a-popover>
</template>
......
<template>
<a-descriptions :column="2">
<a-descriptions-item label="设备编码">{{ dataInfo.equipmentCode }}</a-descriptions-item>
<a-descriptions-item label="设备名称"> {{ dataInfo.equipmentName }} </a-descriptions-item>
<a-descriptions-item label="类别"> {{ dataInfo.categoryName }} </a-descriptions-item>
<a-descriptions-item label="等级"> {{ dataInfo.equipmentGradeName }} </a-descriptions-item>
<a-descriptions-item label="安装日期">
<a-descriptions-item :label="$t('oc.equipmentCode')">
{{ dataInfo.equipmentCode }}
</a-descriptions-item>
<a-descriptions-item :label="$t('oc.equipmentName')">
{{ dataInfo.equipmentName }}
</a-descriptions-item>
<a-descriptions-item :label="$t('oc.category')">{{ dataInfo.categoryName }}</a-descriptions-item>
<a-descriptions-item :label="$t('oc.equipmentGrade')">
{{ dataInfo.equipmentGradeName }}
</a-descriptions-item>
<a-descriptions-item :label="$t('oc.installTime')">
{{ dataInfo.installTime ? dataInfo.installTime.substring(0, 10) : '' }}
</a-descriptions-item>
<a-descriptions-item label="运行日期">
<a-descriptions-item :label="$t('oc.runTime')">
{{ dataInfo.runTime ? dataInfo.runTime.substring(0, 10) : '' }}
</a-descriptions-item>
<a-descriptions-item label="供应商">{{ dataInfo.supplier }}</a-descriptions-item>
<a-descriptions-item label="制造商">{{ dataInfo.manufacturer }} </a-descriptions-item>
<a-descriptions-item label="专业">{{ dataInfo.specialtyCodeName }} </a-descriptions-item>
<a-descriptions-item :label="$t('oc.supplier')">{{ dataInfo.supplier }}</a-descriptions-item>
<a-descriptions-item :label="$t('oc.manufacturer')">{{ dataInfo.manufacturer }} </a-descriptions-item>
<a-descriptions-item :label="$t('select.speciality')">
{{ dataInfo.specialtyCodeName }}
</a-descriptions-item>
</a-descriptions>
</template>
<script>
......
<template>
<a-row :gutter="[16, 24]">
<a-col :span="12">
<a-button type="link" @click="onAdd">新增</a-button>
<a-button type="link" @click="onAdd">{{ $t('table.add') }}</a-button>
<a-divider type="vertical" />
<a-dropdown>
<a-button type="link"> 记录数 <a-icon type="down" /> </a-button>
<a-button type="link"> {{ $t('oc.recordsNumber') }} <a-icon type="down" /> </a-button>
<a-menu slot="overlay">
<a-menu-item>
<a @click="() => setPage(10)">10</a>
......@@ -25,7 +25,7 @@
</a-dropdown>
</a-col>
<a-col :span="12" class="tw-text-right">
<SearchPopover :dataInfo="dataInfo" title="事件过滤" @submit="onScreen" />
<SearchPopover :dataInfo="dataInfo" :title="$t('oc.eventFiltering')" @submit="onScreen" />
</a-col>
<a-col :span="24">
<a-timeline mode="alternate">
......@@ -45,7 +45,7 @@
</a-space>
<div class="tw-mb-2 tw-mt-2">{{ item.eventDescription }}</div>
<a-space>
<a @click="() => onEdit(item)">编辑</a>
<a @click="() => onEdit(item)">{{ $t('table.edit') }}</a>
<PopconfirmDelete
:url="`/oceanus/api/v1/equipments/events/${item.eventId}`"
:cb="refresh"
......
......@@ -8,19 +8,19 @@
<template #search>
<a-row>
<a-col :span="12">
<a-button type="link" @click="onAddRow">新增</a-button>
<a-button type="link" @click="onAddRow">{{ $t('table.add') }}</a-button>
<a-divider type="vertical" />
<a-dropdown>
<a-button type="link"> 过滤 <a-icon type="down" /> </a-button>
<a-button type="link"> {{ $t('oc.filter') }} <a-icon type="down" /> </a-button>
<a-menu slot="overlay">
<a-menu-item>
<a @click="() => onChangeAttributeType('ALL')">全部</a>
<a @click="() => onChangeAttributeType('ALL')">{{ $t('oc.all') }}</a>
</a-menu-item>
<a-menu-item>
<a @click="() => onChangeAttributeType('SYSTEM')">系统</a>
<a @click="() => onChangeAttributeType('SYSTEM')">{{ $t('oc.system') }}}</a>
</a-menu-item>
<a-menu-item>
<a @click="() => onChangeAttributeType('CUSTOM')">自定义</a>
<a @click="() => onChangeAttributeType('CUSTOM')">{{ $t('oc.custom') }}</a>
</a-menu-item>
</a-menu>
</a-dropdown>
......@@ -29,7 +29,7 @@
<a-input-search
v-model="attributeName"
:style="{ width: '80%' }"
placeholder="请输入搜索内容"
:placeholder="$t('input.placeholder')"
enter-button
allowClear
@search="onSearch"
......@@ -37,7 +37,7 @@
</a-col>
</a-row>
</template>
<a-table-column title="属性名称">
<a-table-column :title="$t('oc.attributeName')">
<template #default="row">
<a-input v-if="row.editable" v-model="row.attributeName" />
<span v-else>
......@@ -45,7 +45,7 @@
</span>
</template>
</a-table-column>
<a-table-column title="属性值">
<a-table-column :title="$t('oc.attributeValue')">
<template #default="row">
<a-input v-if="row.editable" v-model="row.instanceValue" />
<span v-else>
......@@ -53,8 +53,8 @@
</span>
</template>
</a-table-column>
<a-table-column title="属性类型" data-index="attributeTypeName" />
<a-table-column title="操作" :width="180">
<a-table-column :title="$t('oc.attributeType')" data-index="attributeTypeName" />
<a-table-column :title="$t('table.operation')" :width="180">
<template #default="row">
<ActionButton v-if="row.editable" :buttons="editButtons" :row="row" />
<ActionButton v-else :buttons="buttons" :row="row" />
......@@ -97,7 +97,7 @@ export default {
otherParams: {},
buttons: [
{
label: '编辑',
label: this.$t('table.edit'),
click: this.onEditRow,
},
{
......@@ -115,41 +115,41 @@ export default {
},
},
{
label: '置顶',
label: this.$t('basic.topping'),
click: async (row) => {
const { instanceId } = row;
try {
await Api.topEquipmentsAttributes({ instanceId });
this.refreshTable();
this.$message.success('置顶成功!');
this.$message.success(this.$t('table.operationSucceeded'));
} catch (e) {
this.$message.warning('置顶失败!');
this.$message.warning(this.$t('table.operationFailed'));
}
},
},
{
label: '置底',
label: this.$t('oc.toBottom'),
click: async (row) => {
const { instanceId } = row;
try {
await Api.bottomEquipmentsAttributes({ instanceId });
this.refreshTable();
this.$message.success('置顶成功!');
this.$message.success(this.$t('table.operationSucceeded'));
} catch (e) {
this.$message.warning('置顶失败!');
this.$message.warning(this.$t('table.operationFailed'));
}
},
},
],
editButtons: [
{
label: '确定',
label: this.$t('oc.confirm'),
click: this.onSubmitRow,
},
{
type: 'confirm',
label: '取消',
title: '确认是否取消?',
label: this.$t('table.cancel'),
title: this.$t('oc.cancelConfirm'),
onOk: this.onCancelRow,
},
],
......
......@@ -22,6 +22,5 @@ export default {
isObjEmpty,
};
},
watch: {},
};
</script>
<template>
<Wraper :hidden="hidden" :refresh="refresh" :onOk="submit">
<Table
......@@ -10,18 +9,18 @@
:width="552"
>
<template #search="{ query }">
<MoreItem label="项目名称">
<a-input v-model="query.inputValue" placeholder="请输入" />
<MoreItem :label="$t('table.itemName')">
<a-input v-model="query.inputValue" :placeholder="$t('input.placeholder')" />
</MoreItem>
</template>
<a-table-column title="项目名称" data-index="itemName" />
<a-table-column title="数据类型">
<a-table-column :title="$t('table.itemName')" data-index="itemName" />
<a-table-column :title="$t('table.dataType')">
<template #default="row">
<span> {{ dataType[row.dataType] }}</span>
</template>
</a-table-column>
<a-table-column title="项目描述" data-index="equipmentCode" />
<a-table-column :title="$t('table.remark')" data-index="equipmentCode" />
</Table>
</Wraper>
</template>
......@@ -66,9 +65,9 @@ export default {
otherQuery: {},
submitData: {},
dataType: {
TEXT: '文本类型',
OPTION: '选项类型',
NUMERIC: '数值类型',
TEXT: this.$t('other.TEXT'),
OPTION: this.$t('other.OPTION'),
NUMERIC: this.$t('other.NUMERIC'),
},
};
},
......@@ -80,8 +79,8 @@ export default {
assembleObjectIdList: this.selected.keys,
});
}
this.$message.warning('请选择');
throw new Error('请选择');
this.$message.warning(this.$t('select.placeholder'));
throw new Error(this.$t('select.placeholder'));
},
},
};
......
......@@ -8,14 +8,14 @@
:width="552"
>
<template #search="{ query }">
<MoreItem label="地点名称">
<a-input v-model="query.inputValue" placeholder="请输入" />
<MoreItem :label="$t('table.placeName')">
<a-input v-model="query.inputValue" :placeholder="$t('input.placeholder')" />
</MoreItem>
</template>
<a-table-column title="地点名称" data-index="placeName" />
<a-table-column title="二维码" data-index="qrCode" />
<a-table-column title="电子标签" data-index="electronicTag" />
<a-table-column :title="$t('table.placeName')" data-index="placeName" />
<a-table-column :title="$t('table.QrCode')" data-index="qrCode" />
<a-table-column :title="$t('table.ElectronicTags')" data-index="electronicTag" />
<!-- <a-table-column v-if="rowKey === 'unitId'" title="单元名称" data-index="unitName" />
<a-table-column v-if="rowKey === 'unitId'" title="设备编号" data-index="equipmentCode" />
......@@ -76,8 +76,8 @@ export default {
assembleObjectIdList: this.selected.keys,
});
}
this.$message.warning('请选择');
throw new Error('请选择');
this.$message.warning(this.$t('select.placeholder'));
throw new Error(this.$t('select.placeholder'));
},
},
};
......
......@@ -8,13 +8,13 @@
:width="552"
>
<template #search="{ query }">
<MoreItem label="搜索">
<a-input v-model="query.inputValue" placeholder="请输入单元名称/设备编号" />
<MoreItem :label="$t('basic.unitNameSeach')">
<a-input v-model="query.inputValue" :placeholder="$t('input.placeholder')" />
</MoreItem>
</template>
<a-table-column title="单元名称" data-index="unitName" />
<a-table-column title="设备编号" data-index="equipmentCode" />
<a-table-column :title="$t('table.unitName')" data-index="unitName" />
<a-table-column :title="$t('table.equipmentCode')" data-index="equipmentCode" />
</Table>
</Wraper>
</template>
......@@ -67,8 +67,8 @@ export default {
assembleObjectIdList: this.selected.keys,
});
}
this.$message.warning('请选择');
throw new Error('请选择');
this.$message.warning(this.$t('select.placeholder'));
throw new Error(this.$t('select.placeholder'));
},
},
};
......
......@@ -13,40 +13,48 @@
:width="400"
>
<template #operation>
<a-button type="primary" @click="addPlace">新增地点</a-button>
<a-button type="primary" @click="addPlace">{{ $t('basic.newLocation') }}</a-button>
</template>
<template #drawer="drawer">
<AddPlace v-if="addType === 'PLACE'" v-bind="drawer" :refresh="refresh" />
<AddUnit v-if="addType === 'UNIT'" v-bind="drawer" :refresh="refresh" />
<AddItem v-if="addType === 'ITEM'" v-bind="drawer" :refresh="refresh" />
</template>
<a-table-column title="名称" :width="150" data-index="assembleObjectName" />
<a-table-column title="顺序" :width="60">
<a-table-column :title="$t('basic.name')" :width="150" data-index="assembleObjectName" />
<a-table-column :title="$t('order')" :width="60">
<template #default="row">
<span v-if="row.assembleObjectType === 'PLACE'">{{ row.assembleOrder }}</span>
<span v-else>-</span>
</template>
</a-table-column>
<a-table-column title="类型" :width="60">
<a-table-column :title="$t('menu.type')" :width="60">
<template #default="row">
<span v-if="row.assembleObjectType === 'PLACE'">地点</span>
<span v-if="row.assembleObjectType === 'UNIT'">单元</span>
<span v-if="row.assembleObjectType === 'ITEM'">项目</span>
<span v-if="row.assembleObjectType === 'PLACE'">{{ $t('basic.place') }}</span>
<span v-if="row.assembleObjectType === 'UNIT'">{{ $t('basic.unit') }}</span>
<span v-if="row.assembleObjectType === 'ITEM'">{{ $t('basic.item') }}</span>
</template>
</a-table-column>
<a-table-column title="免检" :width="60">
<a-table-column :title="$t('table.exemptionType')" :width="60">
<template #default="row">
<span :style="{ color: '#2db7f5' }" v-if="row.exemptionState === 'YES'">是</span>
<span :style="{ color: '#f5222d' }" v-if="row.exemptionState === 'NO'">否</span>
<span :style="{ color: '#2db7f5' }" v-if="row.exemptionState === 'YES'">
{{ $t('table.yes') }}
</span>
<span :style="{ color: '#f5222d' }" v-if="row.exemptionState === 'NO'">
{{ $t('table.no') }}
</span>
</template>
</a-table-column>
<a-table-column title="状态" :width="60">
<a-table-column :title="$t('table.state')" :width="60">
<template #default="row">
<span :style="{ color: '#2db7f5' }" v-if="row.assembleState === 'VALID'">有效</span>
<span :style="{ color: '#f5222d' }" v-if="row.assembleState === 'INVALID'">无效</span>
<span :style="{ color: '#2db7f5' }" v-if="row.assembleState === 'VALID'">
{{ $t('other.tag.valid') }}
</span>
<span :style="{ color: '#f5222d' }" v-if="row.assembleState === 'INVALID'">
{{ $t('other.tag.invalid') }}
</span>
</template>
</a-table-column>
<a-table-column title="描述" data-index="assembleDesc" :width="200" />
<a-table-column :title="$t('table.remark')" data-index="assembleDesc" :width="200" />
<template #other>
<SetOrder ref="setOrder" :afterSubmit="setRouteAssemblesOrder" />
</template>
......@@ -70,39 +78,38 @@ export default {
return {
scroll: { x: 1300, y: 600 },
buttons: {
options: { width: 220, fixed: 'right' },
title: '操作',
options: { width: 250, fixed: 'right' },
data: [
{
label: '新增单元',
label: this.$t('basic.addUnit'),
click: this.addUnit,
isHidden: (row) => {
return row.assembleObjectType !== 'PLACE';
},
},
{
label: '新增项目',
label: this.$t('basic.addItem'),
click: this.addItem,
isHidden: (row) => {
return row.assembleObjectType !== 'UNIT';
},
},
{
label: '置顶',
label: this.$t('basic.topping'),
click: this.toTop,
isHidden: (row) => {
return row.assembleObjectType !== 'PLACE';
},
},
{
label: '排序',
label: this.$t('order'),
click: this.setOrder,
isHidden: (row) => {
return row.assembleObjectType !== 'PLACE';
},
},
{
label: '失效',
label: this.$t('task.invalid'),
click: (row) => this.assembleUpdate(row, 'INVALID'),
isHidden: (row) => {
if (row.assembleObjectType === 'ITEM') {
......@@ -113,7 +120,7 @@ export default {
},
},
{
label: '生效',
label: this.$t('table.takeEffect'),
click: (row) => this.assembleUpdate(row, 'VALID'),
isHidden: (row) => {
if (row.assembleObjectType === 'ITEM') {
......@@ -150,16 +157,16 @@ export default {
addPlace() {
const row = this.getDefaultQuery();
this.addType = 'PLACE';
this.$refs.assembleTable.show({ row, title: '新增地点', type: 'add' });
this.$refs.assembleTable.show({ row, title: this.$t('basic.newLocation'), type: 'add' });
},
addUnit(row) {
this.addType = 'UNIT';
this.$refs.assembleTable.show({ row, title: '新增单元', type: 'add' });
this.$refs.assembleTable.show({ row, title: this.$t('basic.addUnit'), type: 'add' });
},
addItem(row) {
this.addType = 'ITEM';
const newRow = { ...row, regionId: this.row.regionId };
this.$refs.assembleTable.show({ row: newRow, title: '新增项目', type: 'add' });
this.$refs.assembleTable.show({ row: newRow, title: this.$t('basic.addItem'), type: 'add' });
},
async assembleUpdate(row, assembleState) {
......@@ -182,10 +189,10 @@ export default {
};
const resp = await updateRouteAssemblesApi(param);
if (resp) {
this.$message.success('操作成功');
this.$message.success(this.$t('table.operationSucceeded'));
this.refresh();
} else {
this.$message.warning('操作失败');
this.$message.warning(this.$t('table.operationFailed'));
}
},
......@@ -207,12 +214,12 @@ export default {
async setRouteAssemblesOrder(param) {
const resp = setRouteAssemblesOrderApi(param);
if (resp) {
this.$message.success('操作成功');
this.$message.success(this.$t('table.operationSucceeded'));
setTimeout(() => {
this.refresh();
}, 500);
} else {
this.$message.warning('操作失败');
this.$message.warning(this.$t('table.operationFailed'));
}
},
formatData(list) {
......
<template>
<a-modal
v-model="visible"
:title="`设置排序:${row.assembleObjectName}`"
:title="`${$t('basic.setSort')}:${row.assembleObjectName}`"
@ok="handleOk"
destroyOnClose
:zIndex="1010"
>
<a-form-model layout="vertical" :model="form" :rules="rules" ref="form">
<a-form-model-item label="排序" prop="order">
<a-form-model-item :label="$t('menu.order')" prop="order">
<a-input-number :style="{ width: '100%' }" v-model="form.order" :min="1" :max="9999" />
</a-form-model-item>
</a-form-model>
......@@ -20,7 +20,10 @@ export default {
visible: false,
form: {},
rules: {
order: [{ required: true }, { pattern: /^(0|[1-9][0-9]*)$/, message: '请输入正确的排序' }],
order: [
{ required: true },
{ pattern: /^(0|[1-9][0-9]*)$/, message: this.$t('input.error') },
],
},
row: {
assembleObjectName: '',
......
......@@ -6,8 +6,8 @@
:defaultQuery="defaultQuery"
:width="552"
>
<a-table-column title="部门" data-index="orgName" />
<a-table-column title="用户姓名" data-index="staffName" />
<a-table-column :title="$t('table.department')" data-index="orgName" />
<a-table-column :title="$t('basic.staffName')" data-index="staffName" />
</Table>
</template>
......@@ -19,7 +19,6 @@ export default {
watch: {
row: {
handler(val) {
console.log(val);
this.defaultQuery = { specialityId: val.specialityId };
},
deep: true,
......@@ -31,7 +30,5 @@ export default {
defaultQuery: {},
};
},
mounted() {},
methods: {},
};
</script>
<template>
<Drawer ref="drawerRef" v-model="visible" title="新增" :onOk="submit" :colesAfter="refresh">
<Drawer ref="drawerRef" v-model="visible" :title="$t('table.add')" :onOk="submit" :colesAfter="refresh">
<a-form-model layout="vertical" :model="form" :rules="rules" ref="DrawerForm">
<a-form-model-item label="班组" prop="shiftType">
<a-select v-model="form.shiftType" :disabled="isView">
<a-select-option key="DAY" value="DAY">白班</a-select-option>
<a-select-option key="MIDDLE" value="MIDDLE">中班</a-select-option>
<a-select-option key="NIGHT" value="NIGHT">晚班</a-select-option>
<a-form-model-item :label="$t('select.shiftTypeName')" prop="shiftType">
<a-select v-model="form.shiftType" :disabled="isView" :placeholder="$t('select.placeholder')">
<a-select-option key="DAY" value="DAY">{{ $t('basic.day') }}</a-select-option>
<a-select-option key="MIDDLE" value="MIDDLE">{{ $t('basic.middle') }}</a-select-option>
<a-select-option key="NIGHT" value="NIGHT">{{ $t('basic.night') }}</a-select-option>
</a-select>
</a-form-model-item>
<a-form-model-item label="生成第二天线路" prop="isNextDay">
<a-select v-model="form.isNextDay" :disabled="isView">
<a-select-option key="YES" value="YES"></a-select-option>
<a-select-option key="NO" value="NO"></a-select-option>
<a-form-model-item :label="$t('basic.generateNext')" prop="isNextDay">
<a-select v-model="form.isNextDay" :disabled="isView" :placeholder="$t('select.placeholder')">
<a-select-option key="YES" value="YES">{{ $t('table.yes') }}</a-select-option>
<a-select-option key="NO" value="NO">{{ $t('table.no') }}</a-select-option>
</a-select>
</a-form-model-item>
<a-form-model-item label="生成第二天线路" prop="scheduleRule">
<Acron v-model="form.scheduleRule" :disabled="isView" @input="onChang" />
<a-form-model-item :label="$t('basic.generateNext')" prop="scheduleRule">
<Acron
v-model="form.scheduleRule"
:disabled="isView"
@input="onChang"
:placeholder="$t('select.placeholder')"
/>
</a-form-model-item>
<a-form-model-item prop="scheduleDescription">
<a-input v-model="form.scheduleDescription" :disabled="true" />
<a-input
v-model="form.scheduleDescription"
:disabled="true"
:placeholder="$t('input.placeholder')"
/>
</a-form-model-item>
</a-form-model>
</Drawer>
......@@ -48,9 +57,9 @@ export default {
visible: false,
form: {},
rules: {
shiftType: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
isNextDay: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
scheduleRule: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
shiftType: [{ required: true, message: this.$t('select.shiftTypeNameError') }],
isNextDay: [{ required: true, message: this.$t('basic.generateNextError') }],
scheduleRule: [{ required: true, message: this.$t('input.error') }],
},
};
},
......@@ -66,7 +75,7 @@ export default {
},
onChang(val) {
const str = cronstrue.toString(val, { locale: langType[Lang.get().substr(0, 2)] });
this.form = { ...this.form, scheduleDescription: `${str} 执行一次` };
this.form = { ...this.form, scheduleDescription: `${str} ${this.$t('basic.executeOnce')}` };
},
},
};
......
<template>
<Wraper :hidden="hidden" noFooter>
<a-button class="tw-mb-4" type="primary" @click="onAdd">新增</a-button>
<a-button class="tw-mb-4" type="primary" @click="onAdd">{{ $t('table.add') }}</a-button>
<addDrawer ref="addDrawer" :row="row" :refresh="getList" />
<a-list :data-source="data" :grid="{ gutter: 16, xs: 1, sm: 1, md: 1, lg: 1, xl: 1, xxl: 1 }">
<a-list-item slot="renderItem" slot-scope="item">
......@@ -8,11 +8,13 @@
<template #title>
<a-row>
<a-col :span="12">
<a-tag v-if="item.shiftState === 'VALID'" color="#87d068"> 有效 </a-tag>
<a-tag v-else color="#f50"> 无效 </a-tag>
<span v-if="item.shiftType === 'DAY'">白班</span>
<span v-if="item.shiftType === 'MIDDLE'">中班</span>
<span v-if="item.shiftType === 'NIGHT'">晚班</span>
<a-tag v-if="item.shiftState === 'VALID'" color="#87d068">
{{ $t('other.tag.valid') }}
</a-tag>
<a-tag v-else color="#f50">{{ $t('other.tag.invalid') }}</a-tag>
<span v-if="item.shiftType === 'DAY'">{{ $t('basic.day') }}</span>
<span v-if="item.shiftType === 'MIDDLE'">{{ $t('basic.middle') }}</span>
<span v-if="item.shiftType === 'NIGHT'">{{ $t('basic.night') }}</span>
</a-col>
<a-col :span="12" class="tw-text-right">
<a-space>
......@@ -23,20 +25,22 @@
<a
v-if="item.shiftState === 'INVALID'"
@click="() => scheduleUpdateState(item.shiftId, 'VALID')"
>生效</a
>
{{ $t('table.takeEffect') }}
</a>
<a
v-if="item.shiftState === 'VALID'"
@click="() => scheduleUpdateState(item.shiftId, 'INVALID')"
>失效</a
>
{{ $t('task.invalid') }}
</a>
</a-space>
</a-col>
</a-row>
</template>
<div>{{ item.scheduleRule }}</div>
<div>{{ item.scheduleDescription }}</div>
<div>{{ item.isNextDay === 'YES' && '生成第二天线路' }}</div>
<div>{{ item.isNextDay === 'YES' && $t('basic.generateNext') }}</div>
</a-card>
</a-list-item>
</a-list>
......
<template>
<Wraper :hidden="hidden" :onOk="submit" :refresh="refresh" :noFooter="isView">
<a-form-model layout="vertical" :model="form" :rules="rules" ref="form">
<a-form-model-item label="线路名称" prop="routeName">
<a-input v-model="form.routeName" :disabled="isView" />
<a-form-model-item :label="$t('select.routeName')" prop="routeName">
<a-input v-model="form.routeName" :disabled="isView" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
<a-form-model-item label="所属地区" prop="regionId">
<a-form-model-item :label="$t('select.region')" prop="regionId">
<UrlSelect
v-model="form.regionId"
url="/ranger/inspection/api/v1/region/list"
......@@ -13,7 +13,7 @@
:disabled="isView"
/>
</a-form-model-item>
<a-form-model-item label="专业" prop="specialityId">
<a-form-model-item :label="$t('table.major')" prop="specialityId">
<UrlSelect
v-model="form.specialityId"
:url="
......@@ -26,23 +26,48 @@
:disabled="isView"
/>
</a-form-model-item>
<a-form-model-item label="分配方式" prop="dispatchType">
<a-select v-model="form.dispatchType" style="width: 100%" :disabled="isView">
<a-select-option key="PERSON" value="PERSON">按人分配</a-select-option>
<a-select-option key="SPECIALITY" value="SPECIALITY">按专业分配</a-select-option>
<a-form-model-item :label="$t('table.distributionMode')" prop="dispatchType">
<a-select
v-model="form.dispatchType"
style="width: 100%"
:disabled="isView"
:placeholder="$t('select.placeholder')"
>
<a-select-option key="PERSON" value="PERSON">
{{ $t('basic.personalDistribution') }}
</a-select-option>
<a-select-option key="SPECIALITY" value="SPECIALITY">
{{ $t('basic.distributionBySpecialty') }}
</a-select-option>
</a-select>
</a-form-model-item>
<a-form-model-item label="过期方式" prop="expirationType">
<a-select v-model="form.expirationType" style="width: 100%" :disabled="isView">
<a-select-option key="NEXT" value="NEXT">下次任务开始过期</a-select-option>
<a-select-option key="ONE_DAY" value="ONE_DAY">一天后过期</a-select-option>
<a-select-option key="SEVEN_DAY" value="SEVEN_DAY">七天后过期</a-select-option>
<a-select-option key="FIFTEEN_DAY" value="FIFTEEN_DAY">十五天后过期</a-select-option>
<a-select-option key="NEVER" value="NEVER">不过期</a-select-option>
<a-form-model-item :label="$t('basic.expirationMethod')" prop="expirationType">
<a-select
v-model="form.expirationType"
style="width: 100%"
:disabled="isView"
:placeholder="$t('select.placeholder')"
>
<a-select-option key="NEXT" value="NEXT">
{{ $t('basic.nextTaskBegins') }}
</a-select-option>
<a-select-option key="ONE_DAY" value="ONE_DAY">{{ $t('basic.oneDay') }}</a-select-option>
<a-select-option key="SEVEN_DAY" value="SEVEN_DAY">
{{ $t('basic.sevenDay') }}
</a-select-option>
<a-select-option key="FIFTEEN_DAY" value="FIFTEEN_DAY">
{{ $t('basic.moreDay') }}
</a-select-option>
<a-select-option key="NEVER" value="NEVER">{{ $t('basic.notExpired') }}</a-select-option>
</a-select>
</a-form-model-item>
<a-form-model-item label="备注" prop="remark">
<a-textarea placeholder="Basic usage" :rows="4" v-model="form.remark" :disabled="isView" />
<a-form-model-item :label="$t('table.remark')" prop="remark">
<a-textarea
:placeholder="$t('input.placeholder')"
:rows="4"
v-model="form.remark"
:disabled="isView"
/>
</a-form-model-item>
</a-form-model>
</Wraper>
......@@ -56,14 +81,14 @@ import { addRouteInfoApi, updateRouteInfoApi, getRouteInfoApi } from '@/api';
export default {
components: { Wraper, UrlSelect },
props: { hidden: Function, row: Object, type: String, refresh: Function },
data: () => ({
data: (vm) => ({
form: {},
rules: {
routeName: [{ required: true }],
regionId: [{ required: true }],
specialityId: [{ required: true }],
dispatchType: [{ required: true }],
expirationType: [{ required: true }],
routeName: [{ required: true, message: vm.$t('select.routeNameError') }],
regionId: [{ required: true, message: vm.$t('select.regionError') }],
specialityId: [{ required: true, message: vm.$t('table.majorError') }],
dispatchType: [{ required: true, message: vm.$t('table.distributionModeError') }],
expirationType: [{ required: true, message: vm.$t('basic.expirationMethodError') }],
},
}),
......
<template>
<a-modal v-model="visible" title="导入" @ok="handleOk" destroyOnClose>
<a-modal v-model="visible" :title="$t('table.import')" @ok="handleOk" destroyOnClose>
<a-form-model layout="vertical" :model="form" :rules="rules" ref="form">
<a-form-model-item label="组织" prop="orgId">
<a-form-model-item :label="$t('table.organization')" prop="orgId">
<UrlSelect
v-model="form.orgId"
url="/api/v1/users/organizations"
......@@ -9,10 +9,10 @@
valueFiled="orgId"
/>
</a-form-model-item>
<a-form-model-item label="上传文件" prop="file">
<a-form-model-item :label="$t('table.uploadFile')" prop="file">
<Upload v-model="form.file" showUploadList :number="1" />
<template #extra>
<a-button type="link" @click="getTemplate"> 下载模板 </a-button>
<a-button type="link" @click="getTemplate">{{ $t('table.downloadTemplate') }}</a-button>
</template>
</a-form-model-item>
</a-form-model>
......@@ -49,7 +49,7 @@ export default {
const { file, ...rest } = this.form;
await uploadFileRouteApi({ ...rest }, file[0].oFile);
this.afterSubmit && this.afterSubmit();
this.$message.info('操作成功!');
this.$message.info(this.$t('table.operationSucceeded!'));
this.closeModal();
},
closeModal() {
......
......@@ -9,22 +9,23 @@
:scroll="scroll"
>
<template #search="{ query }">
<MoreItem label="状态">
<MoreItem :label="$t('table.state')">
<a-select v-model="query.routeState" style="width: 100%">
<a-select-option key="VALID" value="VALID">有效</a-select-option>
<a-select-option key="INVALID" value="INVALID">无效</a-select-option>
<a-select-option key="VALID" value="VALID">{{ $t('other.tag.valid') }}</a-select-option>
<a-select-option key="INVALID" value="INVALID">
{{ $t('other.tag.invalid') }}
</a-select-option>
</a-select>
</MoreItem>
<MoreItem label="地区">
<MoreItem :label="$t('select.region')">
<UrlSelect
v-model="query.regionId"
url="/ranger/inspection/api/v1/region/list"
labelFiled="regionName"
valueFiled="regionId"
placeholder="选择地区"
/>
</MoreItem>
<MoreItem label="专业">
<MoreItem :label="$t('select.speciality')">
<UrlSelect
v-model="query.specialityId"
:url="
......@@ -34,30 +35,29 @@
"
labelFiled="specialityName"
valueFiled="specialityId"
placeholder="选择专业"
/>
</MoreItem>
<MoreItem label="线路名称">
<a-input v-model="query.inputValue" placeholder="请输入" />
<MoreItem :label="$t('select.routeName')">
<a-input v-model="query.inputValue" :placeholder="$t('input.placeholder')" />
</MoreItem>
</template>
<template #operation>
<a-button type="primary" @click="onImportFlie">导入</a-button>
<a-button type="primary" @click="onImportFlie">{{ $t('table.import') }}</a-button>
<a-button @click="download" :disabled="!(selected.keys && selected.keys.length !== 0)">
导出
{{ $t('export') }}
</a-button>
<a-button
@click="() => onChangeState('VALID')"
:disabled="!(selected.keys && selected.keys.length !== 0)"
>
生效
{{ $t('table.takeEffect') }}
</a-button>
<a-button
@click="() => onChangeState('INVALID')"
:disabled="!(selected.keys && selected.keys.length !== 0)"
>
失效
{{ $t('task.invalid') }}
</a-button>
</template>
......@@ -69,17 +69,17 @@
<!-- <Exempt v-else v-bind="drawer" /> -->
</template>
<a-table-column title="线路名称" data-index="routeName" />
<a-table-column title="专业" data-index="specialityName" />
<a-table-column title="地区" data-index="regionName" />
<a-table-column title="状态">
<a-table-column :title="$t('select.routeName')" data-index="routeName" />
<a-table-column :title="$t('select.speciality')" data-index="specialityName" />
<a-table-column :title="$t('select.region')" data-index="regionName" />
<a-table-column :title="$t('table.state')">
<template #default="row">
<span v-if="row.routeState === 'VALID'">有效</span>
<span v-if="row.routeState === 'INVALID'">无效</span>
<span v-if="row.routeState === 'VALID'">{{ $t('other.tag.valid') }}</span>
<span v-if="row.routeState === 'INVALID'">{{ $t('other.tag.invalid') }}</span>
</template>
</a-table-column>
<a-table-column title="修改人" data-index="editorName" width="200" />
<a-table-column title="修改时间" data-index="editTime" />
<a-table-column :title="$t('table.reviser')" data-index="editorName" width="200" />
<a-table-column :title="$t('table.revisionTime')" data-index="editTime" />
<template #other>
<ImportFlie ref="importFlie" :afterSubmit="rest" />
</template>
......@@ -103,14 +103,13 @@ export default {
data() {
return {
buttons: {
title: '操作',
options: { width: 200, fixed: 'right' },
data: [
{ label: '编辑', click: this.edit },
{ label: '详情', click: this.view },
{ label: '编排', click: this.assemble },
{ label: '调度', click: this.schedule },
{ label: '人员', click: this.personnel },
{ label: this.$t('table.edit'), click: this.edit },
{ label: this.$t('table.view'), click: this.view },
{ label: this.$t('basic.layout'), click: this.assemble },
{ label: this.$t('basic.dispatch'), click: this.schedule },
{ label: this.$t('table.personnel'), click: this.personnel },
{
type: 'confirm',
url: (row) => `/ranger/inspection/api/v1/routes/${row.routeId}`,
......@@ -127,22 +126,22 @@ export default {
this.$refs.table.getData();
},
edit(row) {
this.$refs.table.show({ row, title: '编辑', type: 'edit' });
this.$refs.table.show({ row, title: this.$t('table.edit'), type: 'edit' });
},
view(row) {
this.$refs.table.show({ row, title: '查看', type: 'view' });
this.$refs.table.show({ row, title: this.$t('table.view'), type: 'view' });
},
schedule(row) {
this.$refs.table.show({ row, title: '调度', type: 'schedule' });
this.$refs.table.show({ row, title: this.$t('basic.dispatch'), type: 'schedule' });
},
personnel(row) {
this.$refs.table.show({ row, title: '调度', type: 'personnel' });
this.$refs.table.show({ row, title: this.$t('table.personnel'), type: 'personnel' });
},
assemble(row) {
this.$refs.table.show({ row, title: '编排', type: 'assemble', dWidth: 1200 });
this.$refs.table.show({ row, title: this.$t('basic.layout'), type: 'assemble', dWidth: 1200 });
},
async download() {
if (!this.selected?.keys?.length) return this.$message.error('请选择需要导出的数据');
if (!this.selected?.keys?.length) return this.$message.error(this.$t('table.export.tip'));
const resp = await exportRouteData({ routeIdList: this.selected.keys.join(',') });
downloadFile(resp, 'xlsx');
},
......@@ -152,7 +151,7 @@ export default {
routeState: state,
};
await updateRouteStateApi(data);
this.$message.info('操作成功!');
this.$message.info(this.$t('table.operationSucceeded!'));
this.rest();
},
......
......@@ -8,7 +8,10 @@
list-type="picture"
>
<slot>
<a-button v-if="fileList.length < number"> <a-icon type="upload" /> 上传 </a-button>
<a-button v-if="fileList.length < number">
<a-icon type="upload" />
{{ $t('user.upload') }}
</a-button>
</slot>
</a-upload>
</template>
......
......@@ -10,42 +10,28 @@
ref="table"
>
<template #search="{ query }">
<MoreItem label="开始时间">
<MoreItem :label="$t('select.startTime')">
<a-date-picker
class="tw-w-full"
show-time
v-model="query.startTime"
valueFormat="YYYY-MM-DD HH:mm:ss"
:placeholder="$t('select.placeholder')"
/>
</MoreItem>
<MoreItem label="结束时间">
<MoreItem :label="$t('select.endTime')">
<a-date-picker
class="tw-w-full"
show-time
v-model="query.endTime"
valueFormat="YYYY-MM-DD HH:mm:ss"
:placeholder="$t('select.placeholder')"
/>
</MoreItem>
</template>
<template #moreSearch="{ query }">
<MoreItem label="开始时间">
<a-date-picker
class="tw-w-full"
show-time
v-model="query.startTime"
valueFormat="YYYY-MM-DD HH:mm:ss"
/>
</MoreItem>
<MoreItem label="结束时间">
<a-date-picker
class="tw-w-full"
show-time
v-model="query.endTime"
valueFormat="YYYY-MM-DD HH:mm:ss"
/>
</MoreItem>
<MoreItem label="地点">
<MoreItem :label="$t('table.place')">
<UrlSelect
v-model="query.placeId"
:url="`/ranger/inspection/api/v1/place/regions/${row.regionId}/list`"
......@@ -54,7 +40,7 @@
/>
</MoreItem>
<MoreItem label="单元">
<MoreItem :label="$t('table.unit')">
<UrlSelect
v-model="query.unitId"
:url="
......@@ -67,7 +53,7 @@
/>
</MoreItem>
<MoreItem label="项目">
<MoreItem :label="$t('table.item')">
<UrlSelect
v-model="query.itemId"
:url="
......@@ -78,7 +64,7 @@
/>
</MoreItem>
<MoreItem label="巡检状态">
<MoreItem :label="$t('select.examine')">
<UrlSelect
v-model="query.inspectionState"
:url="zhuangTaiUrl"
......@@ -87,7 +73,7 @@
/>
</MoreItem>
<MoreItem label="巡查结果">
<MoreItem :label="$t('table.patrolResults')">
<UrlSelect
:url="xunChaJieGuoUrl"
v-model="query.inspectionResultName"
......@@ -96,7 +82,7 @@
/>
</MoreItem>
<MoreItem label="巡检人">
<MoreItem :label="$t('select.examiner')">
<SearchSelect
url="/api/v1/users/searching"
searchField="userName"
......@@ -111,13 +97,17 @@
<ViewDetailCom v-bind="drawer" />
</template>
<a-table-column title="巡检项目" data-index="taskName" />
<a-table-column title="参考值" data-index="referenceValue" width="150px" />
<a-table-column title="采集数据" data-index="value" width="150px" />
<a-table-column title="巡查结果" data-index="inspectionResultName" width="100px" />
<a-table-column title="巡查时间" data-index="inspectionTime" width="200px" />
<a-table-column title="巡检人" data-index="inspectionStaffName" width="100px" />
<a-table-column title="状态" data-index="inspectionStateName" width="100px" />
<a-table-column :title="$t('table.inspectionItems')" data-index="taskName" />
<a-table-column :title="$t('table.referenceValue')" data-index="referenceValue" width="150px" />
<a-table-column :title="$t('table.collectData')" data-index="value" width="150px" />
<a-table-column
:title="$t('table.patrolResults')"
data-index="inspectionResultName"
width="100px"
/>
<a-table-column :title="$t('table.patrolTime')" data-index="inspectionTime" width="200px" />
<a-table-column :title="$t('select.examiner')" data-index="inspectionStaffName" width="100px" />
<a-table-column :title="$t('table.state')" data-index="inspectionStateName" width="100px" />
</Table>
</Wraper>
</template>
......@@ -137,16 +127,16 @@ export default {
data() {
return {
scroll: { x: 1200 },
scroll: { x: 1200, y: 500 },
buttons: {
title: '备注 & 附件',
title: this.$t('task.remarksAndAttachments'),
options: {
fixed: 'right',
width: 100,
},
data: [
{
label: '查看',
label: this.$t('table.view'),
click: this.viewDetail,
},
],
......@@ -166,7 +156,7 @@ export default {
},
methods: {
viewDetail(row) {
this.$refs.table.show({ row, title: '备注 & 附件' });
this.$refs.table.show({ row, title: this.$t('task.remarksAndAttachments') });
},
},
};
......
<template>
<Wraper :hidden="hidden" :onOk="submit" :refresh="refresh">
<a-form-model layout="vertical" :model="form" :rules="rules" ref="form">
<a-form-model-item label="地区" prop="regionId">
<a-form-model-item :label="$t('select.region')" prop="regionId">
<UrlSelect
url="/ranger/inspection/api/v1/region/list"
v-model="form.regionId"
......@@ -10,7 +10,7 @@
/>
</a-form-model-item>
<a-form-model-item label="线路" prop="routeId">
<a-form-model-item :label="$t('select.routes')" prop="routeId">
<UrlSelect
:url="xianLuUrl"
labelFiled="routeName"
......@@ -19,7 +19,7 @@
/>
</a-form-model-item>
<a-form-model-item label="班组" prop="shiftType">
<a-form-model-item :label="$t('select.shiftTypeName')" prop="shiftType">
<RequestSelect
:request="getBanZuListApi"
v-model="form.shiftType"
......@@ -28,7 +28,7 @@
/>
</a-form-model-item>
<a-form-model-item label="任务时间" prop="jobTime">
<a-form-model-item :label="$t('table.jobTime')" prop="jobTime">
<a-date-picker
showTime
class="tw-w-full"
......@@ -37,7 +37,7 @@
/>
</a-form-model-item>
<a-form-model-item label="巡检人" prop="inspectionIdList">
<a-form-model-item :label="$t('select.examiner')" prop="inspectionIdList">
<SearchSelect
url="/api/v1/users/searching"
searchField="userName"
......@@ -69,11 +69,11 @@ export default {
getBanZuListApi: getStaticDataByTwoParamsApi('rpis_route_schedule', 'shift_type'),
form: {},
rules: {
inspectionIdList: [{ required: true }],
jobTime: [{ required: true }],
shiftType: [{ required: true }],
routeId: [{ required: true }],
regionId: [{ required: true }],
inspectionIdList: [{ required: true, message: this.$t('select.placeholder') }],
jobTime: [{ required: true, message: this.$t('select.placeholder') }],
shiftType: [{ required: true, message: this.$t('select.placeholder') }],
routeId: [{ required: true, message: this.$t('select.placeholder') }],
regionId: [{ required: true, message: this.$t('select.regionError') }],
},
};
},
......
......@@ -156,7 +156,7 @@ export default {
options: { fixed: 'right', width: 200 },
data: [
{
label: this.$t('table.detail'),
label: this.$t('table.view'),
click: this.viewDetail,
},
{ label: this.$t('table.progress'), click: this.viewProgress },
......
......@@ -2,37 +2,33 @@
<Wraper noFooter :hidden="hidden">
<a-space class="tw-mb-6" size="large">
<span>
地点
{{ $t('table.place') }}
<span class="tw-text-blue-500 tw-mx-1">{{ row.placeNum }}</span>
</span>
<span>
单元
{{ $t('table.unit') }}
<span class="tw-text-blue-500 tw-mx-1">{{ row.unitNum }}</span>
</span>
<span>
项目
{{ $t('table.item') }}
<span class="tw-text-blue-500 tw-mx-1">{{ row.itemNum }}</span>
</span>
<span>
异常
{{ $t('table.errors') }}
<span class="tw-text-red-500 tw-mx-1">{{ row.abnormalNum }}</span>
</span>
<span>
完成率
{{ $t('table.completionRate') }}
<span class="tw-text-blue-500 tw-mx-1">
{{ row.unitNum ? (row.finishedNum / row.unitNum).toFixed(2) : 0 }}
</span>
</span>
</a-space>
<Table :url="tableUrl" rowKey="progressId" noPadding>
<a-table-column title="地点名称" data-index="placeName" />
<a-table-column title="开始时间" data-index="inspectionStartTime" />
<a-table-column title="结束时间" data-index="inspectionEndTime" />
<a-table-column title="状态" data-index="inspectionStateName" />
<a-table-column :title="$t('table.placeName')" data-index="placeName" />
<a-table-column :title="$t('select.startTime')" data-index="inspectionStartTime" />
<a-table-column :title="$t('select.endTime')" data-index="inspectionEndTime" />
<a-table-column :title="$t('table.state')" data-index="inspectionStateName" />
</Table>
</Wraper>
</template>
......@@ -44,9 +40,6 @@ import Table from '@/components/table/table.vue';
export default {
props: { hidden: Function, row: Object },
components: { Wraper, Table },
mounted() {
console.log(this.row);
},
computed: {
tableUrl() {
return `/ranger/inspection/api/v1/jobs/progress?jobId=${this.row.jobId}`;
......
<template>
<Wraper noFooter :hidden="hidden">
<span>备注</span>
<span>{{ $t('table.remark') }}</span>
<div style="min-height: 100px" class="tw-font-medium tw-mt-2">{{ detailData.inspectionRemark }}</div>
<a-tabs>
<!-- Todo -->
<a-tab-pane key="1" tab="图片"></a-tab-pane>
<a-tab-pane key="2" tab="视频"></a-tab-pane>
<a-tab-pane key="1" :tab="$t('task.images')"></a-tab-pane>
<a-tab-pane key="2" :tab="$t('task.videos')"></a-tab-pane>
</a-tabs>
</Wraper>
</template>
......
<template>
<my-table url="/api/v1/logger/login" rowKey="logId" ref="table">
<template #search="{query}">
<my-form-item label="开始时间">
<Table url="/api/v1/logger/login" rowKey="logId">
<template #search="{ query }">
<MoreItem :label="$t('select.startTime')">
<a-date-picker
class="tw-w-full"
show-time
v-model="query.startTime"
valueFormat="YYYY-MM-DD HH:mm:ss"
/>
</my-form-item>
<my-form-item label="结束时间">
</MoreItem>
<MoreItem :label="$t('select.endTime')">
<a-date-picker
class="tw-w-full"
show-time
v-model="query.endTime"
valueFormat="YYYY-MM-DD HH:mm:ss"
/>
</my-form-item>
<my-form-item label="登录用户">
</MoreItem>
<MoreItem :label="$t('log.loginUser')">
<a-input v-model="query.userId" />
</my-form-item>
<my-form-item label="登录IP">
</MoreItem>
<MoreItem :label="$t('log.loginIp')">
<a-input v-model="query.loginIp" />
</my-form-item>
<my-form-item label="事件类型">
</MoreItem>
</template>
<template #moreSearch="{ query }">
<MoreItem :label="$t('log.eventType')">
<a-select v-model="query.loginType" allowClear>
<a-select-option value="LOGIN">登录系统</a-select-option>
<a-select-option value="LOGOUT">退出系统</a-select-option>
<a-select-option value="LOGIN">{{ $t('log.login') }}</a-select-option>
<a-select-option value="LOGOUT">{{ $t('log.logout') }}</a-select-option>
</a-select>
</my-form-item>
<my-form-item label="事件状态">
</MoreItem>
<MoreItem :label="$t('log.eventStatus')">
<a-select v-model="query.isSuccess" allowClear>
<a-select-option value="0">失败</a-select-option>
<a-select-option value="1">成功</a-select-option>
<a-select-option value="0">{{ $t('fail') }}</a-select-option>
<a-select-option value="1">{{ $t('success') }}</a-select-option>
</a-select>
</my-form-item>
</MoreItem>
</template>
<a-table-column title="用户Id" data-index="userId" />
<a-table-column title="登录用户" data-index="userName" />
<a-table-column title="登录IP" data-index="loginIp" />
<a-table-column title="事件类型" data-index="loginTypeName" />
<a-table-column title="事件状态" data-index="isSuccessName" />
<a-table-column title="登录时间" data-index="loginTime" />
<a-table-column title="说明" data-index="logResultContent" />
</my-table>
<a-table-column :title="$t('log.userId')" data-index="userId" />
<a-table-column :title="$t('log.loginUser')" data-index="userName" />
<a-table-column :title="$t('log.loginIp')" data-index="loginIp" />
<a-table-column :title="$t('log.eventType')" data-index="loginTypeName" />
<a-table-column :title="$t('log.eventStatus')" data-index="isSuccessName" />
<a-table-column :title="$t('log.loginTime')" data-index="loginTime" />
<a-table-column :title="$t('table.remark')" data-index="logResultContent" />
</Table>
</template>
<script>
import { Table, MoreItem } from '@/components/table';
export default {
data() {
return {};
},
methods: {
refreshTable() {
this.$refs.table.getData();
},
showDrawer(type, noFooter) {
this.$refs['table'].show({ type, noFooter });
},
},
components: { Table, MoreItem },
};
</script>
<template>
<pre>{{ data.operateContent }}</pre>
<Wraper :hidden="hidden" noFooter>
<pre>{{ row ? row.operateContent : '' }}</pre>
</Wraper>
</template>
<script>
import { WraperMixins } from '@/components/table';
export default {
props: ['data'],
mixins: [WraperMixins],
};
</script>
<template>
<my-table url="/api/v1/logger/operation" rowKey="logId" ref="table">
<template #drawer>
<Form :data="currentClickRow" />
<Table url="/api/v1/logger/operation" rowKey="logId" :buttons="buttons" ref="table">
<template #drawer="drawer">
<Form v-bind="drawer" />
</template>
<template #search="{query}">
<my-form-item label="开始时间">
<template #search="{ query }">
<MoreItem :label="$t('select.startTime')">
<a-date-picker
class="tw-w-full"
show-time
v-model="query.startTime"
valueFormat="YYYY-MM-DD HH:mm:ss"
/>
</my-form-item>
<my-form-item label="结束时间">
</MoreItem>
<MoreItem :label="$t('select.endTime')">
<a-date-picker
class="tw-w-full"
show-time
v-model="query.endTime"
valueFormat="YYYY-MM-DD HH:mm:ss"
/>
</my-form-item>
<my-form-item label="操作用户Id">
<a-input v-model="query.operatorId" />
</my-form-item>
<my-form-item label="业务模块">
<a-select v-model="query.loginType" allowClear>
<a-select-option value="LOGIN">登录系统</a-select-option>
<a-select-option value="LOGOUT">退出系统</a-select-option>
</MoreItem>
<MoreItem :label="$t('log.userId')">
<a-input v-model="query.operatorId" :placeholder="$t('input.placeholder')" />
</MoreItem>
<MoreItem :label="$t('log.businessModule')">
<a-select v-model="query.loginType" allowClear :placeholder="$t('select.placeholder')">
<a-select-option value="LOGIN">{{ $t('log.login') }}</a-select-option>
<a-select-option value="LOGOUT">{{ $t('log.logout') }}</a-select-option>
</a-select>
</my-form-item>
<my-form-item label="操作服务">
<a-select v-model="query.isSuccess" allowClear>
<a-select-option value="0">失败</a-select-option>
<a-select-option value="1">成功</a-select-option>
</MoreItem>
</template>
<template #moreSearch="{ query }">
<MoreItem :label="$t('log.operationService')">
<a-select v-model="query.isSuccess" allowClear :placeholder="$t('select.placeholder')">
<a-select-option value="0">{{ $t('fail') }}</a-select-option>
<a-select-option value="1">{{ $t('success') }}</a-select-option>
</a-select>
</my-form-item>
</MoreItem>
</template>
<a-table-column title="用户Id" data-index="operatorId" />
<a-table-column title="用户名称" data-index="operatorName" />
<a-table-column title="业务模块" data-index="moduleCode" />
<a-table-column title="操作服务" data-index="serviceCode" />
<a-table-column title="操作时间" data-index="operateTime" />
<a-table-column title="操作">
<template #default="row">
<a @click="() => view(row)">详情</a>
</template>
</a-table-column>
</my-table>
<a-table-column :title="$t('log.userId')" data-index="operatorId" />
<a-table-column :title="$t('user.name')" data-index="operatorName" />
<a-table-column :title="$t('log.businessModule')" data-index="moduleCode" />
<a-table-column :title="$t('log.operationService')" data-index="serviceCode" />
<a-table-column :title="$t('log.operateTime')" data-index="operateTime" />
</Table>
</template>
<script>
import Form from './form.vue';
import { Table, MoreItem } from '@/components/table';
export default {
components: { Form },
components: { Form, Table, MoreItem },
data() {
return {
currentClickRow: {},
buttons: [
{
label: this.$t('table.view'),
click: this.view,
},
],
};
},
methods: {
showDrawer(type, noFooter) {
this.$refs['table'].show({ type, noFooter });
},
view(row) {
this.currentClickRow = row;
this.showDrawer(2, true);
this.$refs['table'].show({ row, title: this.$t('table.view') });
},
},
};
......
......@@ -12,12 +12,17 @@
<Form ref="addForm" v-else />
</template>
<a-table-column title="名称" data-index="menuName" />
<a-table-column title="类型" data-index="menuTypeName" />
<a-table-column title="显示排序" data-index="viewIndex" :sorter="sorter" sortOrder="ascend" />
<a-table-column title="显示图标" data-index="menuIcon" />
<a-table-column title="模块URL" data-index="menuUrl" />
<a-table-column title="操作">
<a-table-column :title="$t('menu.name')" data-index="menuName" />
<a-table-column :title="$t('menu.type')" data-index="menuTypeName" />
<a-table-column
:title="$t('menu.order')"
data-index="viewIndex"
:sorter="sorter"
sortOrder="ascend"
/>
<a-table-column :title="$t('menu.icon')" data-index="menuIcon" />
<a-table-column title="URL" data-index="menuUrl" />
<a-table-column :title="$t('table.operation')">
<template #default="row">
<my-ac-btn :row="row" :buttons="buttons" />
</template>
......@@ -31,11 +36,11 @@ import Form from './form.vue';
import AddCom from './add_com.vue';
export default {
data: vm => ({
data: (vm) => ({
addCom: false,
currentClickRow: null,
addBtn: {
text: '新建',
text: vm.$t('table.add'),
onOk() {
return vm.addCom ? vm.$refs['addCom']?.submit() : vm.$refs['addForm']?.submit();
},
......@@ -47,7 +52,7 @@ export default {
sortOrder: 'ascend',
buttons: [
{
label: '新增组件',
label: vm.$t('menu.addComponent'),
option: {
style: 'color: #ff4d4f',
},
......@@ -56,10 +61,10 @@ export default {
vm.addCom = true;
vm.currentClickRow = row;
},
isHidden: row => row.menuType !== 'MENU',
isHidden: (row) => row.menuType !== 'MENU',
},
{ label: '编辑', click: vm.edit },
{ type: 'confirm', url: row => `/api/v1/menus/${row.menuId}`, after: vm.refreshTable },
{ label: vm.$t('table.edit'), click: vm.edit },
{ type: 'confirm', url: (row) => `/api/v1/menus/${row.menuId}`, after: vm.refreshTable },
],
}),
......@@ -80,7 +85,7 @@ export default {
});
},
show() {
this.$refs['table'].show({ title: '菜单组件' });
this.$refs['table'].show({ title: this.$t('menu.menuComponent') });
},
},
};
......
<template>
<div>
<a-button type="primary" class="tw-mb-2" @click="add">新增</a-button>
<a-button type="primary" class="tw-mb-2" @click="add">{{ $t('table.add') }}</a-button>
<a-table :dataSource="components" :rowKey="getRowKey" :pagination="false">
<a-table-column title="组件编码">
<a-table-column :title="$t('menu.componentCode')">
<template #default="row">
<span v-if="row.componentId">{{ row.componentCode }}</span>
<a-input v-else v-model="row.componentCode" />
</template>
</a-table-column>
<a-table-column title="组件名称">
<a-table-column :title="$t('menu.componentName')">
<template #default="row">
<span v-if="row.componentId">{{ row.componentName }}</span>
<a-input v-else v-model="row.componentName" />
</template>
</a-table-column>
<a-table-column title="操作">
<a-table-column :title="$t('table.operation')">
<template #default="row">
<a @click="() => del(row)">删除</a>
<a @click="() => del(row)">{{ $t('table.delete') }}</a>
</template>
</a-table-column>
</a-table>
......@@ -50,7 +50,7 @@ export default {
});
},
del(row) {
this.components = this.components.filter(r => r !== row);
this.components = this.components.filter((r) => r !== row);
},
getRowKey(row) {
return row.__key__ ? row.__key__ : row.componentId;
......@@ -60,7 +60,7 @@ export default {
return addMenuComponentApi(
menuId,
this.components.map(i => {
this.components.map((i) => {
delete i.__key__;
return i;
}),
......
<template>
<a-form-model layout="vertical" :model="form" :rules="rules" ref="form">
<a-form-model-item label="父级" extra="没选择代表根目录" v-if="isAdd">
<a-form-model-item :label="$t('menu.parent')" :extra="$t('menu.noSelected')" v-if="isAdd">
<MenuTree v-model="form.parentMenuId" />
</a-form-model-item>
<a-form-model-item label="类型">
<a-form-model-item :label="$t('menu.type')">
<a-radio-group v-model="form.menuType" :disabled="isEdit">
<a-radio value="CATALOG">目录</a-radio>
<a-radio value="MENU">菜单</a-radio>
<a-radio value="CATALOG">{{ $t('menu.catalogue') }}</a-radio>
<a-radio value="MENU">{{ $t('menu.menu') }}</a-radio>
</a-radio-group>
</a-form-model-item>
<a-form-model-item label="中文名称">
<a-input v-model="menuTypeNameZh" />
<a-form-model-item :label="$t('menu.chineseName')" prop="menuTypeNameZh">
<a-input v-model="form.menuTypeNameZh" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
<a-form-model-item label="英文名称">
<a-input v-model="menuTypeNameEn" />
<a-form-model-item :label="$t('menu.englishName')" prop="menuTypeNameEn">
<a-input v-model="form.menuTypeNameEn" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
<a-form-model-item label="模块URL" prop="menuUrl">
<a-input v-model="form.menuUrl" />
<a-form-model-item label="URL" prop="menuUrl">
<a-input v-model="form.menuUrl" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
<a-form-model-item label="显示排序" prop="viewIndex">
<a-form-model-item :label="$t('menu.order')" prop="viewIndex">
<a-input-number v-model="form.viewIndex" />
</a-form-model-item>
<a-form-model-item label="显示图标" prop="menuIcon">
<a-input v-model="form.menuIcon" />
<a-form-model-item :label="$t('menu.icon')" prop="menuIcon">
<a-input v-model="form.menuIcon" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
<a-form-model-item label="说明" prop="menuRemark">
<a-textarea v-model="form.menuRemark" />
<a-form-model-item :label="$t('table.remark')" prop="menuRemark">
<a-textarea v-model="form.menuRemark" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
</a-form-model>
</template>
......@@ -36,7 +36,7 @@ import MenuTree from '@/components/menu_tree/select.vue';
export default {
components: { MenuTree },
data: () => ({
data: (vm) => ({
type: 0,
form: {
menuType: 'CATALOG',
......@@ -47,12 +47,14 @@ export default {
{ i18nLocale: 'en_US', i18nMessage: '' },
],
menuRemark: '',
menuTypeNameZh: '',
menuTypeNameEn: '',
},
menuTypeNameZh: '',
menuTypeNameEn: '',
rules: {
menuUrl: [{ required: true }],
menuUrl: [{ required: true, message: vm.$t('menu.menuUrlRequired') }],
menuTypeNameZh: [{ required: true, message: vm.$t('menu.menuTypeNameZhRequired') }],
menuTypeNameEn: [{ required: true, message: vm.$t('menu.menuTypeNameEnRequired') }],
},
}),
computed: {
......@@ -66,18 +68,18 @@ export default {
methods: {
async submit() {
await this.$refs['form'].validate();
console.log('this.form.enuNameI18nList', this.form.enuNameI18nList);
const reqData = {
...this.form,
parentMenuId: this.form.parentMenuId ?? 0,
menuNameI18nList: this.form.menuNameI18nList.map(i18 => {
if (i18.i18nLocale === 'en_US') i18.i18nMessage = this.menuTypeNameEn;
if (i18.i18nLocale === 'zh_CN') i18.i18nMessage = this.menuTypeNameZh;
menuNameI18nList: this.form.menuNameI18nList.map((i18) => {
if (i18.i18nLocale === 'en_US') i18.i18nMessage = this.form.menuTypeNameEn;
if (i18.i18nLocale === 'zh_CN') i18.i18nMessage = this.form.menuTypeNameZh;
return i18;
}),
menuName: this.menuTypeNameZh,
menuTypeNameEn: undefined,
menuTypeNameZh: undefined,
};
console.log('this.form.enuNameI18nList', this.form.enuNameI18nList);
return this.isEdit ? updateMenuApi(reqData) : addMenuApi(reqData);
},
......@@ -85,9 +87,12 @@ export default {
this.type = 1;
this.form = await getMenuDetailApi(data.menuId);
this.form.menuNameI18nList?.forEach(i18 => {
if (i18.i18nLocale === 'en_US') this.menuTypeNameEn = i18.i18nMessage;
if (i18.i18nLocale === 'zh_CN') this.menuTypeNameZh = i18.i18nMessage;
this.$set(this.form, 'menuTypeNameEn', '');
this.$set(this.form, 'menuTypeNameZh', '');
this.form.menuNameI18nList?.forEach((i18) => {
if (i18.i18nLocale === 'en_US') this.form.menuTypeNameEn = i18.i18nMessage;
if (i18.i18nLocale === 'zh_CN') this.form.menuTypeNameZh = i18.i18nMessage;
});
},
},
......
......@@ -4,7 +4,7 @@
show-search
style="width: 100%"
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
placeholder="Please select"
:placeholder="$t('select.placeholder')"
:tree-data="treeData"
allow-clear
tree-default-expand-all
......@@ -12,7 +12,7 @@
@change="onChange"
/>
</template>
<!-- v-on="$listeners" -->
<script>
import api from '@/api/organization';
import { arrayToTree } from '@/utils';
......
......@@ -11,15 +11,15 @@
<template #drawer>
<Form ref="form" :tableRef="$refs['table']" />
</template>
<a-table-column title="名称" data-index="orgName" />
<a-table-column title="组织分类" #default="row">
<a-table-column :title="$t('basic.name')" data-index="orgName" />
<a-table-column :title="$t('table.type')" #default="row">
<a-tag color="#87d068" v-if="row.orgType === 'ORGANIZATION'"> {{ row.orgTypeName }}</a-tag>
<a-tag color="#108ee9" v-if="row.orgType === 'DEPARTMENT'"> {{ row.orgTypeName }}</a-tag>
</a-table-column>
<a-table-column title="说明" data-index="remark" />
<a-table-column title="操作">
<a-table-column :title="$t('table.remark')" data-index="remark" />
<a-table-column :title="$t('table.operation')">
<template #default="row">
<a @click="() => view(row, 1)">编辑</a>
<a @click="() => view(row, 1)">{{ $t('table.edit') }}</a>
<a-divider type="vertical" />
<PopconfirmDelete :url="`/api/v1/organizations/${row.orgId}`" :cb="refreshTable" />
</template>
......@@ -75,4 +75,4 @@ export default {
},
},
};
</script>
\ No newline at end of file
</script>
<template>
<a-form-model layout="vertical" :model="form" :rules="rules" ref="DrawerForm">
<a-form-model-item label="组织分类" prop="orgType">
<a-select v-model="form.orgType" :disabled="isView">
<a-select-option value="ORGANIZATION"> 组织 </a-select-option>
<a-select-option value="DEPARTMENT"> 部门 </a-select-option>
<a-form-model-item :label="$t('table.type')" prop="orgType">
<a-select v-model="form.orgType" :disabled="isView" :placeholder="$t('select.placeholder')">
<a-select-option value="ORGANIZATION">{{ $t('system.organization') }}</a-select-option>
<a-select-option value="DEPARTMENT">{{ $t('table.department') }}</a-select-option>
</a-select>
</a-form-model-item>
<a-form-model-item label="名称" prop="orgName">
<a-input v-model="form.orgName" :disabled="isView" />
<a-form-model-item :label="$t('basic.name')" prop="orgName">
<a-input v-model="form.orgName" :disabled="isView" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
<a-form-model-item label="上级组织名称" prop="parentOrgId">
<a-select v-model="form.parentOrgId" disabled :options="options" />
<a-form-model-item :label="$t('system.parentName')" prop="parentOrgId">
<a-select
v-model="form.parentOrgId"
disabled
:options="options"
:placeholder="$t('select.placeholder')"
/>
</a-form-model-item>
<a-form-model-item v-if="form.orgType === 'DEPARTMENT'" label="岗位" prop="orgJobs">
<a-form-model-item v-if="form.orgType === 'DEPARTMENT'" :label="$t('system.jobs')" prop="orgJobs">
<RequestSelect
:formatData="formatData"
:request="Api.getJobs"
......@@ -21,11 +26,16 @@
:disabled="isView"
/>
</a-form-model-item>
<a-form-model-item label="显示顺序" prop="viewIndex">
<a-input v-model="form.viewIndex" :disabled="isView" />
<a-form-model-item :label="$t('order')" prop="viewIndex">
<a-input v-model="form.viewIndex" :disabled="isView" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
<a-form-model-item label="描述" prop="remark">
<a-textarea v-model="form.remark" :disabled="isView" :rows="4" />
<a-form-model-item :label="$t('table.remark')" prop="remark">
<a-textarea
v-model="form.remark"
:disabled="isView"
:rows="4"
:placeholder="$t('input.placeholder')"
/>
</a-form-model-item>
</a-form-model>
</template>
......@@ -51,14 +61,14 @@ export default {
},
data() {
return {
options: [{ value: 0, label: '组织更目录', key: 0 }],
options: [{ value: 0, label: this.$t('system.organizationRoot'), key: 0 }],
form: {
parentOrgId: 0,
},
rules: {
orgName: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
orgType: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
viewIndex: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
orgName: [{ required: true, message: this.$t('input.error'), trigger: 'change' }],
orgType: [{ required: true, message: this.$t('input.error'), trigger: 'change' }],
viewIndex: [{ required: true, message: this.$t('input.error'), trigger: 'change' }],
},
Api,
formatData: { value: 'jobId', label: 'jobName', key: 'jobId' },
......
......@@ -4,7 +4,7 @@
<a-col>
<a-button type="primary" block @click="onAdd">
<a-icon type="plus-circle" />
添加证件
{{ $t('system.addCertificate') }}
</a-button>
</a-col>
<CertificateItem
......
<template>
<Drawer v-model="visible" title="证件编辑" destroyOnClose :width="500" :onOk="onOk">
<Drawer
v-model="visible"
:title="$t('system.certificateEditor')"
destroyOnClose
:width="500"
:onOk="onOk"
>
<a-form-model layout="vertical" :model="form" :rules="rules" ref="CertificateFromRef">
<a-form-model-item label="证件类型" prop="certificateType">
<MySelect v-model="form.certificateType" :options="certificateTypeOption" />
<a-form-model-item :label="$t('system.certificateType')" prop="certificateType">
<MySelect
v-model="form.certificateType"
:options="certificateTypeOption"
:placeholder="$t('select.placeholder')"
/>
</a-form-model-item>
<a-form-model-item label="证件名称" prop="certificateName">
<a-input v-model="form.certificateName" />
<a-form-model-item :label="$t('system.certificateName')" prop="certificateName">
<a-input v-model="form.certificateName" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
<a-form-model-item label="证件号码" prop="certificateCode">
<a-input v-model="form.certificateCode" />
<a-form-model-item :label="$t('system.certificateNumber')" prop="certificateCode">
<a-input v-model="form.certificateCode" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
<a-form-model-item label="发证机构" prop="authorityDepartment">
<MySelect v-model="form.authorityDepartment" :options="authorityDepartmentOption" />
<a-form-model-item :label="$t('system.issuingAuthority')" prop="authorityDepartment">
<MySelect
v-model="form.authorityDepartment"
:options="authorityDepartmentOption"
:placeholder="$t('select.placeholder')"
/>
</a-form-model-item>
<a-form-model-item label="有效期" prop="expirationDate">
<a-date-picker class="tw-w-full" v-model="form.expirationDate" />
<a-form-model-item :label="$t('system.term')" prop="expirationDate">
<a-date-picker
class="tw-w-full"
v-model="form.expirationDate"
:placeholder="$t('input.placeholder')"
/>
</a-form-model-item>
<a-form-model-item label="证件副本" prop="pictureUrl">
<a-form-model-item :label="$t('system.copyCertificate')" prop="pictureUrl">
<Upload v-model="form.pictureUrl" showUploadList :number="1" />
</a-form-model-item>
</a-form-model>
......@@ -40,14 +58,10 @@ export default {
form: {},
rules: {
certificateType: [
{ required: true, message: 'Please select Activity zone', trigger: 'change' },
],
certificateName: [
{ required: true, message: 'Please select Activity zone', trigger: 'change' },
],
certificateCode: [
{ required: true, message: 'Please select Activity zone', trigger: 'change' },
{ required: true, message: this.$t('select.placeholder'), trigger: 'change' },
],
certificateName: [{ required: true, message: this.$t('input.error'), trigger: 'change' }],
certificateCode: [{ required: true, message: this.$t('input.error'), trigger: 'change' }],
// authorityDepartment: [
// { required: true, message: 'Please select Activity zone', trigger: 'change' },
// ],
......
......@@ -8,15 +8,15 @@
:src="value.pictureUrl && value.pictureUrl[0].thumbUrl"
/>
<template slot="actions" class="ant-card-actions">
<div class="tw-h-full" @click="onEdit">编辑</div>
<div class="tw-h-full" @click="onEdit">{{ $t('table.edit') }}</div>
<div class="tw-h-full">
<Del class="tw-h-full" :onOk="onDel" />
</div>
</template>
<a-card-meta :title="value.certificateName">
<template #description>
<div>证件号码{{ value.certificateCode }}</div>
<div>有效期{{ value.expirationDate }}</div>
<div>{{ $t('system.certificateNumber') }}{{ value.certificateCode }}</div>
<div>{{ $t('system.term') }}{{ value.expirationDate }}</div>
<div class="tw-mt-2">
<a-tag color="#f50" v-if="value.authorityDepartmentName">
{{ value.authorityDepartmentName }}
......@@ -40,14 +40,6 @@ export default {
props: {
value: Object,
},
watch: {
value: {
handler(val) {
console.log(val);
},
deep: true,
},
},
data() {
return {};
},
......
<template>
<a-input-group compact>
<a-input style="width: 30%" v-model="code" v-bind="$attrs" />
<a-input style="width: 70%" v-model="phone" v-bind="$attrs" />
<a-input style="width: 30%" v-model="code" v-bind="$attrs" :placeholder="$t('input.placeholder')" />
<a-input style="width: 70%" v-model="phone" v-bind="$attrs" :placeholder="$t('input.placeholder')" />
</a-input-group>
</template>
......
......@@ -4,7 +4,7 @@
<a-col>
<a-button type="primary" block @click="onAdd">
<a-icon type="plus-circle" />
添加岗位
{{ $t('system.addPosition') }}
</a-button>
</a-col>
<JobsItem
......
<template>
<Drawer v-model="visible" title="证件编辑" destroyOnClose :width="500" :onOk="onOk">
<Drawer v-model="visible" :title="$t('ystem.certificateEditor')" destroyOnClose :width="500" :onOk="onOk">
<a-form-model layout="vertical" :model="form" :rules="rules" ref="JobsFormRef">
<a-form-model-item label="归属部门" prop="orgId">
<a-form-model-item :label="$t('table.organization')" prop="orgId">
<OrganizationTree v-model="form.orgId" :getName="getOrgName" />
</a-form-model-item>
<a-form-model-item label="岗位" prop="jobId">
<a-form-model-item :label="$t('system.jobs')" prop="jobId">
<RequestSelect
v-model="form.jobId"
:request="Api.getJobs"
......@@ -12,17 +12,17 @@
:getName="getJobName"
/>
</a-form-model-item>
<a-form-model-item label="兼职/全职" prop="isFull">
<a-form-model-item :label="$t('system.PartAndFulltime')" prop="isFull">
<ParameterSelect
staticKey="tfm_sys_user|isFull"
v-model="form.isFull"
:getName="getFullName"
/>
</a-form-model-item>
<a-form-model-item label="开始时间" prop="startDate">
<a-form-model-item :label="$t('select.startTime')" prop="startDate">
<a-date-picker class="tw-w-full" v-model="form.startDate" />
</a-form-model-item>
<a-form-model-item label="结束时间" prop="endDate">
<a-form-model-item :label="$t('select.endTime')" prop="endDate">
<a-date-picker class="tw-w-full" v-model="form.endDate" />
</a-form-model-item>
</a-form-model>
......@@ -47,11 +47,11 @@ export default {
visible: false,
form: {},
rules: {
orgId: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
jobId: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
isFull: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
startDate: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
endDate: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
orgId: [{ required: true, message: this.$t('select.placeholder'), trigger: 'change' }],
jobId: [{ required: true, message: this.$t('select.placeholder'), trigger: 'change' }],
isFull: [{ required: true, message: this.$t('select.placeholder'), trigger: 'change' }],
startDate: [{ required: true, message: this.$t('select.placeholder'), trigger: 'change' }],
endDate: [{ required: true, message: this.$t('select.placeholder'), trigger: 'change' }],
},
formatData: { value: 'jobId', label: 'jobName', key: 'jobId' },
orgName: '',
......
......@@ -2,16 +2,16 @@
<a-col :span="12">
<a-card hoverable style="width: 100%">
<template slot="actions" class="ant-card-actions">
<div class="tw-h-full" @click="onEdit">编辑</div>
<div class="tw-h-full" @click="onEdit">{{ $t('table.edit') }}</div>
<div class="tw-h-full">
<Del class="tw-h-full" :onOk="onDel" />
</div>
</template>
<a-card-meta :title="`${value.orgName}[${value.jobName}]`">
<template #description>
<div>兼职/全职{{ value.isFullName }}</div>
<div>开始时间{{ value.startDate }}</div>
<div>结束时间{{ value.endDate }}</div>
<div>{{ $t('system.PartAndFulltime') }}{{ value.isFullName }}</div>
<div>{{ $t('select.startTime') }}{{ value.startDate }}</div>
<div>{{ $t('select.endTime') }}{{ value.endDate }}</div>
</template>
</a-card-meta>
</a-card>
......
<template>
<a-row :gutter="16">
<a-col :span="span">
<a-form-model-item label="账号" prop="loginId">
<a-input v-model="form.loginId" :disabled="isView" />
<a-form-model-item :label="$t('system.account')" prop="loginId">
<a-input v-model="form.loginId" :disabled="isView" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
</a-col>
<a-col :span="span">
<a-form-model-item label="名称" prop="userName">
<a-input v-model="form.userName" :disabled="isView" />
<a-form-model-item :label="$t('basic.name')" prop="userName">
<a-input v-model="form.userName" :disabled="isView" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="角色" prop="userRoleRelationList">
<a-form-model-item :label="$t('system.role')" prop="userRoleRelationList">
<RequestSelect
mode="multiple"
:formatData="formatRoleData"
......@@ -22,7 +22,7 @@
</a-form-model-item>
</a-col>
<a-col :span="span">
<a-form-model-item label="职称" prop="userTitle">
<a-form-model-item :label="$t('system.userTitleName')" prop="userTitle">
<ParameterSelect
staticKey="tfm_sys_user|userTitle"
v-model="form.userTitle"
......@@ -31,17 +31,17 @@
</a-form-model-item>
</a-col>
<a-col :span="span">
<a-form-model-item label="电子邮箱" prop="userEmail">
<a-input v-model="form.userEmail" :disabled="isView" />
<a-form-model-item :label="$t('user.email')" prop="userEmail">
<a-input v-model="form.userEmail" :disabled="isView" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
</a-col>
<a-col :span="span">
<a-form-model-item label="移动电话" prop="mobilePhone">
<a-input v-model="form.mobilePhone" :disabled="isView" />
<a-form-model-item :label="$t('user.mobilePhone')" prop="mobilePhone">
<a-input v-model="form.mobilePhone" :disabled="isView" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
</a-col>
<a-col :span="span">
<a-form-model-item label="固定电话" prop="fixedPhone">
<a-form-model-item :label="$t('user.fixedPhone')" prop="fixedPhone">
<FixedPhone v-model="form.fixedPhone" :disabled="isView" />
</a-form-model-item>
</a-col>
......
......@@ -17,6 +17,5 @@ export default {
Api,
};
},
methods: {},
};
</script>
<template>
<Drawer ref="drawerRef" v-model="visible" title="用户配置">
<Drawer ref="drawerRef" v-model="visible" :title="$t('system.userConfig')">
<a-steps :current="current">
<a-step v-for="item in steps" :key="item.title" :title="item.title" />
</a-steps>
......@@ -10,9 +10,13 @@
<StepsThree v-if="current === 2" :form="form" />
</a-form-model>
<template #footer>
<a-button type="primary" @click="prev" v-if="current > 0"> 上一步 </a-button>
<a-button type="primary" @click="next" v-if="current < 2"> 下一步 </a-button>
<a-button type="primary" @click="onSubmit" v-if="current === 2"> 提交 </a-button>
<a-button type="primary" @click="prev" v-if="current > 0">
{{ $t('system.previousStep') }}
</a-button>
<a-button type="primary" @click="next" v-if="current < 2">{{ $t('system.nextStep') }}</a-button>
<a-button type="primary" @click="onSubmit" v-if="current === 2">
{{ $t('table.submit') }}
</a-button>
</template>
</Drawer>
</template>
......@@ -36,23 +40,23 @@ export default {
visible: false,
form: {},
rules: {
loginId: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
userName: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
loginId: [{ required: true, message: this.$t('input.error'), trigger: 'change' }],
userName: [{ required: true, message: this.$t('input.error'), trigger: 'change' }],
userRoleRelationList: [
{ required: true, message: 'Please select Activity zone', trigger: 'change' },
{ required: true, message: this.$t('select.placeholder'), trigger: 'change' },
],
userTitle: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
userTitle: [{ required: true, message: this.$t('select.placeholder'), trigger: 'change' }],
},
current: 0,
steps: [
{
title: '基本信息',
title: this.$t('system.info'),
},
{
title: '证件设置',
title: this.$t('system.cerSet'),
},
{
title: '岗位设置',
title: this.$t('system.postSet'),
},
],
Api,
......@@ -74,9 +78,8 @@ export default {
this.current--;
},
async onSubmit() {
console.log(this.form);
if (this.form.userJobRelationList.length === 0) {
this.$message.error('必须设置岗位!');
this.$message.error(this.$t('system.mustSetPost'));
return;
}
const userCertificateList = this.form.userCertificateList.map((i) => {
......@@ -94,7 +97,7 @@ export default {
await Api.addUser(data);
}
this.visible = false;
this.$message.success('操作成功');
this.$message.success(this.$t('table.operationSucceeded'));
this.refresh && this.refresh();
},
},
......
<template>
<a-select
:value="value"
v-bind="$attrs"
v-on="$listeners"
:options="langList"
:placeholder="$t('select.placeholder')"
/>
</template>
<script>
import langUtils from '@/utils/langUtils';
import { formatObj } from '@/utils';
export default {
props: ['value'],
model: {
prop: 'value',
event: 'change',
},
computed: {
langList() {
return formatObj(langUtils.langList, { value: 'key', label: 'name', key: 'key' });
},
},
};
</script>
<template>
<a-form-model layout="vertical" :model="form" :rules="rules" ref="DrawerForm">
<a-form-model-item label="语言" prop="paramLocale">
<a-select
v-model="form.paramLocale"
:options="langList"
placeholder="请选择"
:disabled="isView"
/>
</a-form-model-item>
<a-form-model-item label="参数模块" prop="paramModule">
<a-input v-model="form.paramModule" placeholder="请输入" :disabled="isView" />
</a-form-model-item>
<a-form-model-item label="参数编码" prop="paramCode">
<a-input v-model="form.paramCode" placeholder="请输入" :disabled="isView" />
</a-form-model-item>
<a-form-model-item label="参数值" prop="paramValue">
<a-input v-model="form.paramValue" placeholder="请输入" :disabled="isView" />
</a-form-model-item>
<a-form-model-item label="参数名称" prop="paramName">
<a-input v-model="form.paramName" placeholder="请输入" :disabled="isView" />
</a-form-model-item>
<a-form-model-item label="显示顺序" prop="paramIndex">
<a-input v-model="form.paramIndex" placeholder="请输入" :disabled="isView" />
</a-form-model-item>
<a-form-model-item label="说明" prop="remark">
<a-textarea v-model="form.remark" :disabled="isView" :rows="4" />
</a-form-model-item>
</a-form-model>
<Wraper :hidden="hidden" :refresh="refresh" :onOk="submit">
<a-form-model layout="vertical" :model="form" :rules="rules" ref="form">
<a-form-model-item :label="$t('language')" prop="paramLocale">
<Language v-model="form.paramLocale" />
</a-form-model-item>
<a-form-model-item :label="$t('paramter.moduleParameters')" prop="paramModule">
<a-input v-model="form.paramModule" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
<a-form-model-item :label="$t('paramter.parameterCoding')" prop="paramCode">
<a-input v-model="form.paramCode" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
<a-form-model-item :label="$t('paramter.paramValue')" prop="paramValue">
<a-input v-model="form.paramValue" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
<a-form-model-item :label="$t('business.parameterName')" prop="paramName">
<a-input v-model="form.paramName" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
<a-form-model-item :label="$t('order')" prop="paramIndex">
<a-input v-model="form.paramIndex" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
<a-form-model-item :label="$t('table.remark')" prop="remark">
<a-textarea v-model="form.remark" :rows="4" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
</a-form-model>
</Wraper>
</template>
<script>
import Api from '@/api/organization';
import FormMixin from '@/components/FormMixin';
import { globalConfig } from '@/config';
import { formatObj } from '@/utils';
import { WraperMixins } from '@/components/table';
import Language from './components/language.vue';
export default {
mixins: [FormMixin],
mixins: [WraperMixins],
components: { Language },
data() {
return {
form: {},
rules: {
paramLocale: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
paramModule: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
paramCode: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
paramValue: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
paramName: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
paramIndex: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
paramLocale: [{ required: true, message: this.$t('languageInputError') }],
paramModule: [{ required: true, message: this.$t('paramter.moduleParametersError') }],
paramCode: [{ required: true, message: this.$t('paramter.parameterCodingError') }],
paramValue: [{ required: true, message: this.$t('paramter.paramValueError') }],
paramName: [{ required: true, message: this.$t('business.parameterNameError') }],
paramIndex: [{ required: true, message: this.$t('orderInputError') }],
},
langList: [],
};
},
async mounted() {
this.langList = await formatObj(globalConfig.langs, { value: 'key', label: 'name', key: 'key' });
computed: {
isEdit() {
return this.type === 'eidt';
},
},
mounted() {
if (this.type) {
this.form = { ...this.row };
}
},
methods: {
add() {
return Api.addBusiness({ ...this.form });
},
edit() {
return Api.updateBusiness({ ...this.form });
async submit() {
await this.$refs.form.validate();
return this.isEdit ? Api.updateBusiness({ ...this.form }) : Api.addBusiness({ ...this.form });
},
},
};
......
<template>
<my-table
url="/api/v1/parameters/business"
rowKey="paramId"
:addBtn="addBtn"
ref="table"
:scroll="{ x: true }"
>
<template #drawer>
<Form ref="form" />
<Table url="/api/v1/parameters/business" rowKey="paramId" addBtn ref="table" :buttons="buttons">
<template #drawer="drawer">
<Form ref="form" v-bind="drawer" />
</template>
<template #search="{ query }">
<MyFormModelItem label="语言">
<a-select v-model="query.paramLocale" :options="langList" placeholder="请选择" />
<MyFormModelItem :label="$t('language')">
<Language v-model="query.paramLocale" />
</MyFormModelItem>
<MyFormModelItem label="参数模块">
<a-input v-model="query.paramModule" placeholder="请输入" />
<MyFormModelItem :label="$t('paramter.moduleParameters')">
<a-input v-model="query.paramModule" :placeholder="$t('input.placeholder')" />
</MyFormModelItem>
<MyFormModelItem label="参数编码">
<a-input v-model="query.paramCode" placeholder="请输入" />
<MyFormModelItem :label="$t('paramter.parameterCoding')">
<a-input v-model="query.paramCode" :placeholder="$t('input.placeholder')" />
</MyFormModelItem>
<MyFormModelItem label="参数名称">
<a-input v-model="query.paramName" placeholder="请输入" />
<MyFormModelItem :label="$t('business.parameterName')">
<a-input v-model="query.paramName" :placeholder="$t('input.placeholder')" />
</MyFormModelItem>
</template>
<a-table-column title="语言" data-index="paramLocale" />
<a-table-column title="参数模块" data-index="paramModule" />
<a-table-column title="参数编码" data-index="paramCode" />
<a-table-column title="参数值" data-index="paramValue" />
<a-table-column title="参数名称" data-index="paramName" />
<a-table-column title="说明" data-index="remark" />
<a-table-column title="显示顺序" data-index="paramIndex" />
<a-table-column title="操作" fixed="right">
<template #default="row">
<a @click="() => view(row, 1)">编辑</a>
<a-divider type="vertical" />
<PopconfirmDelete :url="`/api/v1/parameters/business/${row.paramId}`" :cb="refreshTable" />
</template>
</a-table-column>
</my-table>
<a-table-column :title="$t('language')" data-index="paramLocale" />
<a-table-column :title="$t('paramter.moduleParameters')" data-index="paramModule" />
<a-table-column :title="$t('paramter.parameterCoding')" data-index="paramCode" />
<a-table-column :title="$t('paramter.paramValue')" data-index="paramValue" />
<a-table-column :title="$t('business.parameterName')" data-index="paramName" />
<a-table-column :title="$t('table.remark')" data-index="remark" />
<a-table-column :title="$t('order')" data-index="paramIndex" />
</Table>
</template>
<script>
import PopconfirmDelete from '@/components/popconfirm_delete/index.vue';
import MyFormModelItem from '@/components/table/my_item.vue';
import { globalConfig } from '@/config';
import { formatObj } from '@/utils';
import Form from './form.vue';
import { Table, MoreItem } from '@/components/table';
import Language from './components/language.vue';
export default {
components: { Form, PopconfirmDelete, MyFormModelItem },
data() {
return {
addBtn: { width: 600, onOk: () => this.$refs['form']?.submit() },
langList: [],
};
},
async mounted() {
this.langList = await formatObj(globalConfig.langs, { value: 'key', label: 'name', key: 'key' });
components: { Form, MyFormModelItem: MoreItem, Table, Language },
computed: {
buttons() {
return [
{ label: this.$t('table.edit'), click: this.edit },
{
type: 'confirm',
url: (row) => `/api/v1/parameters/business/${row.paramId}`,
after: this.refreshTable,
},
];
},
},
methods: {
refreshTable() {
this.$refs['table']?.getData();
},
view(data, type) {
this.$refs['table']?.show({ type });
this.$nextTick(() => {
this.$refs['form'].setData({ ...data }, type);
});
edit(row) {
this.$refs['table']?.show({ row, type: 'edit', title: this.$t('table.edit') });
},
},
};
</script>
\ No newline at end of file
</script>
<template>
<a-form-model layout="vertical" :model="form" :rules="rules" ref="DrawerForm">
<a-form-model-item label="参数模块" prop="paramModule">
<a-input v-model="form.paramModule" placeholder="请输入" :disabled="isView" />
</a-form-model-item>
<a-form-model-item label="参数编码" prop="paramCode">
<a-input v-model="form.paramCode" placeholder="请输入" :disabled="isView" />
</a-form-model-item>
<a-form-model-item label="参数值" prop="paramValue">
<a-input v-model="form.paramValue" placeholder="请输入" :disabled="isView" />
</a-form-model-item>
<a-form-model-item label="说明" prop="remark">
<a-textarea v-model="form.remark" :disabled="isView" :rows="4" />
</a-form-model-item>
</a-form-model>
<Wraper :hidden="hidden" :refresh="refresh" :onOk="submit">
<a-form-model layout="vertical" :model="form" :rules="rules" ref="form">
<a-form-model-item :label="$t('paramter.moduleParameters')" prop="paramModule">
<a-input v-model="form.paramModule" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
<a-form-model-item :label="$t('paramter.parameterCoding')" prop="paramCode">
<a-input v-model="form.paramCode" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
<a-form-model-item :label="$t('paramter.paramValue')" prop="paramValue">
<a-input v-model="form.paramValue" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
<a-form-model-item :label="$t('table.remark')" prop="remark">
<a-textarea v-model="form.remark" :rows="4" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
</a-form-model>
</Wraper>
</template>
<script>
import Api from '@/api/organization';
import FormMixin from '@/components/FormMixin';
import { WraperMixins } from '@/components/table';
export default {
mixins: [FormMixin],
mixins: [WraperMixins],
data() {
return {
form: {},
rules: {
paramModule: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
paramCode: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
paramValue: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
paramIndex: [{ required: true, message: 'Please select Activity zone', trigger: 'change' }],
paramModule: [{ required: true, message: this.$t('paramter.moduleParametersError') }],
paramCode: [{ required: true, message: this.$t('paramter.parameterCodingError') }],
paramValue: [{ required: true, message: this.$t('paramter.paramValueError') }],
},
};
},
methods: {
add() {
return Api.addOperation({ ...this.form });
computed: {
isEdit() {
return this.type === 'edit';
},
edit() {
return Api.updateOperation({ ...this.form });
},
mounted() {
if (this.type) {
this.form = { ...this.row };
}
},
methods: {
async submit() {
await this.$refs.form.validate();
return this.isEdit ? Api.updateOperation({ ...this.form }) : Api.addOperation({ ...this.form });
},
},
};
......
<template>
<my-table
url="/api/v1/parameters/operation"
rowKey="paramId"
:addBtn="addBtn"
ref="table"
:scroll="{ x: true }"
>
<template #drawer>
<Form ref="form" />
<Table url="/api/v1/parameters/operation" rowKey="paramId" addBtn ref="table" :buttons="buttons">
<template #drawer="drawer">
<Form v-bind="drawer" />
</template>
<template #search="{ query }">
<MyFormModelItem label="参数模块">
<a-input v-model="query.paramModule" placeholder="请输入" />
</MyFormModelItem>
<MyFormModelItem label="参数编码">
<a-input v-model="query.paramCode" placeholder="请输入" />
</MyFormModelItem>
<MyFormModelItem label="参数值">
<a-input v-model="query.paramValue" placeholder="请输入" />
</MyFormModelItem>
<MoreItem :label="$t('paramter.moduleParameters')">
<a-input v-model="query.paramModule" :placeholder="$t('input.placeholder')" />
</MoreItem>
<MoreItem :label="$t('paramter.parameterCoding')">
<a-input v-model="query.paramCode" :placeholder="$t('input.placeholder')" />
</MoreItem>
<MoreItem :label="$t('paramter.paramValue')">
<a-input v-model="query.paramValue" :placeholder="$t('input.placeholder')" />
</MoreItem>
</template>
<a-table-column title="参数模块" data-index="paramModule" />
<a-table-column title="参数编码" data-index="paramCode" />
<a-table-column title="参数值" data-index="paramValue" />
<a-table-column title="说明" data-index="remark" />
<a-table-column title="操作" fixed="right">
<template #default="row">
<a @click="() => view(row, 1)">编辑</a>
<a-divider type="vertical" />
<PopconfirmDelete :url="`/api/v1/parameters/operation/${row.paramId}`" :cb="refreshTable" />
</template>
</a-table-column>
</my-table>
<a-table-column :title="$t('paramter.moduleParameters')" data-index="paramModule" />
<a-table-column :title="$t('paramter.parameterCoding')" data-index="paramCode" />
<a-table-column :title="$t('paramter.paramValue')" data-index="paramValue" />
<a-table-column :title="$t('table.remark')" data-index="remark" />
</Table>
</template>
<script>
import PopconfirmDelete from '@/components/popconfirm_delete/index.vue';
import MyFormModelItem from '@/components/table/my_item.vue';
import { globalConfig } from '@/config';
import { formatObj } from '@/utils';
import Form from './form.vue';
import { Table, MoreItem } from '@/components/table';
export default {
components: { Form, PopconfirmDelete, MyFormModelItem },
data() {
return {
addBtn: { width: 600, onOk: () => this.$refs['form']?.submit() },
};
components: { Form, Table, MoreItem },
computed: {
buttons() {
return [
{ label: this.$t('table.edit'), click: this.edit },
{
type: 'confirm',
url: (row) => `/api/v1/parameters/operation/${row.paramId}`,
after: this.refreshTable,
},
];
},
},
methods: {
refreshTable() {
this.$refs['table']?.getData();
},
view(data, type) {
this.$refs['table']?.show({ type });
this.$nextTick(() => {
this.$refs['form'].setData({ ...data }, type);
});
edit(row) {
this.$refs['table']?.show({ row, title: this.$t('table.edit'), type: 'edit' });
},
},
};
</script>
\ No newline at end of file
</script>
<template>
<my-table url="/api/v1/roles" rowKey="roleId" :addBtn="addBtn" ref="table" noPage>
<template #drawer>
<Form ref="form" />
<Table url="/api/v1/roles" rowKey="roleId" addBtn ref="table" noPage :buttons="buttons">
<template #drawer="drawer">
<Form v-bind="drawer" />
</template>
<a-table-column title="角色名称" data-index="roleName" />
<a-table-column title="角色编码" data-index="roleCode" />
<a-table-column title="角色说明" data-index="remark" />
<a-table-column title="操作">
<template #default="row">
<a @click="() => view(row, 2)">查看</a>
<a-divider type="vertical" />
<a @click="() => view(row, 1)">编辑</a>
<a-divider type="vertical" />
<PopconfirmDelete :url="`/api/v1/roles/${row.roleId}`" :cb="refreshTable" />
</template>
</a-table-column>
</my-table>
<a-table-column :title="$t('role.roleName')" data-index="roleName" />
<a-table-column :title="$t('role.roleCode')" data-index="roleCode" />
<a-table-column :title="$t('role.roleRemark')" data-index="remark" />
</Table>
</template>
<script>
import Form from './form.vue';
import PopconfirmDelete from '@/components/popconfirm_delete/index.vue';
import { Table } from '@/components/table';
export default {
components: { Form, PopconfirmDelete },
components: { Form, Table },
data() {
return {
addBtn: { onOk: () => this.$refs['form']?.submit() },
buttons: [
{
label: this.$t('table.edit'),
click: this.edit,
},
{ type: 'confirm', url: (row) => `/api/v1/roles/${row.roleId}`, after: this.refreshTable },
],
};
},
methods: {
refreshTable() {
this.$refs['table']?.getData();
},
view(data, type) {
this.$refs['table']?.show({ type, noFooter: type === 2 });
this.$nextTick(() => {
this.$refs['form'].setData({ ...data }, type);
});
edit(row) {
this.$refs.table.show({ row, title: this.$t('table.edit'), type: 'edit' });
},
},
};
......
<template>
<a-form-model layout="vertical" :model="form" :rules="rules" ref="DrawerForm">
<a-form-model-item label="角色名称">
<a-input v-model="form.roleName" :disabled="isView" />
</a-form-model-item>
<a-form-model-item label="角色编码">
<a-input v-model="form.roleCode" :disabled="isView" />
</a-form-model-item>
<a-form-model-item label="角色说明" prop="remark">
<a-input v-model="form.remark" :disabled="isView" />
</a-form-model-item>
<Wraper :hidden="hidden" :refresh="refresh" :onOk="submit">
<a-form-model layout="vertical" :model="form" :rules="rules" ref="form">
<a-form-model-item :label="$t('role.roleName')" prop="roleName">
<a-input v-model="form.roleName" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
<a-form-model-item :label="$t('role.roleCode')" prop="roleCode">
<a-input v-model="form.roleCode" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
<a-form-model-item :label="$t('role.roleRemark')" prop="remark">
<a-input v-model="form.remark" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
<a-form-model-item label="菜单权限">
<MenuTree
v-model="checkedKeys"
:defaultCheckedKeys="defaultCheckedKeys"
showMenu
ref="menuTree"
:disabled="isView"
/>
</a-form-model-item>
</a-form-model>
<a-form-model-item :label="$t('role.menuPermissions')">
<MenuTree
v-model="checkedKeys"
:defaultCheckedKeys="defaultCheckedKeys"
showMenu
ref="menuTree"
/>
</a-form-model-item>
</a-form-model>
</Wraper>
</template>
<script>
import MenuTree from '@/components/menu_tree/index.vue';
import { addRoleApi, getRoleApi, updateRoleApi } from '@/api';
import FormMixin from '@/components/FormMixin';
import { WraperMixins } from '@/components/table';
export default {
mixins: [FormMixin],
mixins: [WraperMixins],
components: { MenuTree },
data() {
return {
form: {},
rules: {},
rules: {
roleName: [{ required: true, message: this.$t('role.roleNameInput') }],
roleCode: [{ required: true, message: this.$t('role.roleCodeInput') }],
},
checkedKeys: [],
defaultCheckedKeys: [],
};
},
computed: {
isEdit() {
return this.type === 'edit';
},
},
mounted() {
if (this.type) {
this.getData(this.row.roleId);
}
},
methods: {
submit() {
async submit() {
await this.$refs.form.validate();
const query = {
...this.form,
authorityList: this.$refs['menuTree'].get().map(i => ({
authorityList: this.$refs['menuTree'].get().map((i) => ({
...i,
nodeId: i.menuId,
parentNodeId: i.parentMenuId,
......@@ -51,14 +67,11 @@ export default {
};
return this.isEdit ? updateRoleApi(query) : addRoleApi(query);
},
setData(data, type) {
this.getData(data.roleId);
this.type = type;
},
async getData(id) {
const res = await getRoleApi(id);
this.form = res;
this.defaultCheckedKeys = res.menuComponentKeys.map(i => parseInt(i.split('-')[0]));
this.defaultCheckedKeys = res.menuComponentKeys.map((i) => parseInt(i.split('-')[0]));
},
},
};
......
<template>
<a-form-model layout="vertical" :model="form" :rules="rules" ref="DrawerForm">
<a-form-model-item label="任务名称" prop="taskName">
<a-input v-model="form.taskName" :disabled="isView" />
</a-form-model-item>
<a-form-model-item label="调度规则" prop="taskRule">
<ACron v-model="form.taskRule" :disabled="isView" />
</a-form-model-item>
<a-form-model-item label="实现类" prop="implementClass">
<a-input v-model="form.implementClass" :disabled="isView" />
</a-form-model-item>
<a-form-model-item label="说明" prop="remark">
<a-textarea v-model="form.remark" :disabled="isView" :rows="4" />
</a-form-model-item>
</a-form-model>
<Wraper :hidden="hidden" :refresh="refresh" :onOk="submit" :noFooter="isView">
<a-form-model layout="vertical" :model="form" :rules="rules" ref="form">
<a-form-model-item :label="$t('system.jobName')" prop="taskName">
<a-input v-model="form.taskName" :disabled="isView" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
<a-form-model-item :label="$t('task.schedulingRules')" prop="taskRule">
<ACron v-model="form.taskRule" :disabled="isView" :placeholder="$t('input.placeholder')" />
</a-form-model-item>
<a-form-model-item :label="$t('task.implementClass')" prop="implementClass">
<a-input
v-model="form.implementClass"
:disabled="isView"
:placeholder="$t('input.placeholder')"
/>
</a-form-model-item>
<a-form-model-item :label="$t('table.remark')" prop="remark">
<a-textarea
v-model="form.remark"
:disabled="isView"
:rows="4"
:placeholder="$t('input.placeholder')"
/>
</a-form-model-item>
</a-form-model>
</Wraper>
</template>
<script>
import { addTaskApi, updateTaskApi } from '@/api';
import FormMixin from '@/components/FormMixin';
import ACron from '@/components/Acron/ACron.vue';
import { WraperMixins } from '@/components/table';
export default {
components: { ACron },
props: ['row'],
mixins: [FormMixin],
mixins: [WraperMixins],
data() {
return {
form: {},
rules: {
taskName: [{ required: true }],
taskRule: [{ required: true }],
taskName: [{ required: true, message: this.$t('task.taskNameError') }],
taskRule: [{ required: true, message: this.$t('task.taskRuleError') }],
},
};
},
computed: {
isView() {
return this.type === 'view';
},
isEdit() {
return this.type === 'edit';
},
},
mounted() {
if (this.type) {
this.form = { ...this.row };
}
},
methods: {
add() {
async submit() {
await this.$refs.form.validate();
if (this.type) return updateTaskApi({ ...this.form });
return addTaskApi({ ...this.form });
},
edit() {
return updateTaskApi({ ...this.form });
},
},
};
</script>
<template>
<my-table url="/api/v1/schedules" rowKey="taskId" :addBtn="addBtn" ref="table">
<template #drawer>
<Form ref="form" :row="currentClickRow" />
<Table url="/api/v1/schedules" rowKey="taskId" addBtn ref="table" :buttons="buttons">
<template #drawer="drawer">
<Form ref="form" v-bind="drawer" />
</template>
<a-table-column title="任务名称" data-index="taskName" />
<a-table-column title="调度规则" data-index="taskRule" />
<a-table-column title="实现类" data-index="implementClass" />
<a-table-column title="说明" data-index="remark" />
<a-table-column title="操作">
<template #default="row">
<ActionButton :buttons="buttons" :row="row" />
</template>
</a-table-column>
</my-table>
<a-table-column :title="$t('system.jobName')" data-index="taskName" />
<a-table-column :title="$t('task.schedulingRules')" data-index="taskRule" />
<a-table-column :title="$t('task.implementClass')" data-index="implementClass" />
<a-table-column :title="$t('table.remark')" data-index="remark" />
</Table>
</template>
<script>
import ActionButton from '@/components/action_button/index.vue';
import Form from './form.vue';
import { Table } from '@/components/table';
export default {
components: { ActionButton, Form },
components: { Form, Table },
data() {
return {
addBtn: {
onOk: () => {
return this.$refs.form.submit();
},
},
currentClickRow: null,
buttons: [
{
label: '查看',
click: row => {
this.showDrawer(2, true);
this.$nextTick(() => {
this.$refs['form'].setData(row, 2);
});
label: this.$t('table.view'),
click: (row) => {
this.$refs.table.show({ type: 'view', row, title: this.$t('table.view') });
},
},
{
label: '编辑',
click: row => {
this.showDrawer(1);
this.$nextTick(() => {
this.$refs['form'].setData(row, 1);
});
label: this.$t('table.edit'),
click: (row) => {
this.$refs.table.show({ type: 'edit', row, title: this.$t('table.edit') });
},
},
{
type: 'confirm',
label: '失效',
title: '确认是否失效?',
url: row => ({ url: `/api/v1/schedules/${row.taskId}/pause`, method: 'del' }),
label: this.$t('task.invalid'),
title: this.$t('task.invalidTip'),
url: (row) => ({ url: `/api/v1/schedules/${row.taskId}/pause`, method: 'del' }),
after: () => this.refreshTable(),
isHidden: row => row.isPaused === 1,
isHidden: (row) => row.isPaused === 1,
},
{
type: 'confirm',
url: row => `/api/v1/schedules/${row.taskId}`,
after: () => this.refreshTable(),
url: (row) => `/api/v1/schedules/${row.taskId}`,
after: this.refreshTable,
},
],
};
......@@ -68,9 +51,6 @@ export default {
refreshTable() {
this.$refs.table.getData();
},
showDrawer(type, noFooter) {
this.$refs['table'].show({ type, noFooter });
},
},
};
</script>
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment