@ -0,0 +1,14 @@ |
|||
# http://editorconfig.org |
|||
root = true |
|||
|
|||
# 表示所有文件适用 |
|||
[*] |
|||
charset = utf-8 # 设置文件字符集为 utf-8 |
|||
end_of_line = lf # 控制换行类型(lf | cr | crlf) |
|||
indent_style = tab # 缩进风格(tab | space) |
|||
insert_final_newline = true # 始终在文件末尾插入一个新行 |
|||
|
|||
# 表示仅 md 文件适用以下规则 |
|||
[*.md] |
|||
max_line_length = off # 关闭最大行长度限制 |
|||
trim_trailing_whitespace = false # 关闭末尾空格修剪 |
|||
@ -0,0 +1,10 @@ |
|||
## 开发环境 |
|||
|
|||
# 变量必须以 VITE_ 为前缀才能暴露给外部读取 |
|||
NODE_ENV='development' |
|||
|
|||
VITE_APP_TITLE = 'vue3-element-admin' |
|||
VITE_APP_PORT = 9999 |
|||
VITE_APP_BASE_API = '/dev-api' |
|||
VITE_APP_BASE_URL = 'http://myvuetest.net' |
|||
VITE_APP_TOKEN_KEY = 'offlineAccessSystemAppToken' |
|||
@ -0,0 +1,6 @@ |
|||
## 生产环境 |
|||
|
|||
VITE_APP_TITLE = '数通智联化工云平台' |
|||
VITE_APP_PORT = 17777 |
|||
VITE_APP_BASE_API = '' |
|||
VITE_APP_TOKEN_KEY = 'onlineAccessSystemAppToken' |
|||
@ -0,0 +1,6 @@ |
|||
## 模拟环境 |
|||
NODE_ENV='staging' |
|||
|
|||
VITE_APP_TITLE = '数通智联化工云平台' |
|||
VITE_APP_PORT = 3000 |
|||
VITE_APP_BASE_API = '/prod--api' |
|||
@ -0,0 +1,14 @@ |
|||
dist |
|||
node_modules |
|||
public |
|||
.husky |
|||
.vscode |
|||
.idea |
|||
*.sh |
|||
*.md |
|||
|
|||
src/assets |
|||
|
|||
.eslintrc.cjs |
|||
.prettierrc.cjs |
|||
.stylelintrc.cjs |
|||
@ -0,0 +1,269 @@ |
|||
{ |
|||
"globals": { |
|||
"EffectScope": true, |
|||
"ElForm": true, |
|||
"ElMessage": true, |
|||
"ElMessageBox": true, |
|||
"ElTree": true, |
|||
"asyncComputed": true, |
|||
"autoResetRef": true, |
|||
"computed": true, |
|||
"computedAsync": true, |
|||
"computedEager": true, |
|||
"computedInject": true, |
|||
"computedWithControl": true, |
|||
"controlledComputed": true, |
|||
"controlledRef": true, |
|||
"createApp": true, |
|||
"createEventHook": true, |
|||
"createGlobalState": true, |
|||
"createInjectionState": true, |
|||
"createReactiveFn": true, |
|||
"createSharedComposable": true, |
|||
"createUnrefFn": true, |
|||
"customRef": true, |
|||
"debouncedRef": true, |
|||
"debouncedWatch": true, |
|||
"defineAsyncComponent": true, |
|||
"defineComponent": true, |
|||
"eagerComputed": true, |
|||
"effectScope": true, |
|||
"extendRef": true, |
|||
"getCurrentInstance": true, |
|||
"getCurrentScope": true, |
|||
"h": true, |
|||
"ignorableWatch": true, |
|||
"inject": true, |
|||
"isDefined": true, |
|||
"isProxy": true, |
|||
"isReactive": true, |
|||
"isReadonly": true, |
|||
"isRef": true, |
|||
"makeDestructurable": true, |
|||
"markRaw": true, |
|||
"nextTick": true, |
|||
"onActivated": true, |
|||
"onBeforeMount": true, |
|||
"onBeforeUnmount": true, |
|||
"onBeforeUpdate": true, |
|||
"onClickOutside": true, |
|||
"onDeactivated": true, |
|||
"onErrorCaptured": true, |
|||
"onKeyStroke": true, |
|||
"onLongPress": true, |
|||
"onMounted": true, |
|||
"onRenderTracked": true, |
|||
"onRenderTriggered": true, |
|||
"onScopeDispose": true, |
|||
"onServerPrefetch": true, |
|||
"onStartTyping": true, |
|||
"onUnmounted": true, |
|||
"onUpdated": true, |
|||
"pausableWatch": true, |
|||
"provide": true, |
|||
"reactify": true, |
|||
"reactifyObject": true, |
|||
"reactive": true, |
|||
"reactiveComputed": true, |
|||
"reactiveOmit": true, |
|||
"reactivePick": true, |
|||
"readonly": true, |
|||
"ref": true, |
|||
"refAutoReset": true, |
|||
"refDebounced": true, |
|||
"refDefault": true, |
|||
"refThrottled": true, |
|||
"refWithControl": true, |
|||
"resolveComponent": true, |
|||
"resolveDirective": true, |
|||
"resolveRef": true, |
|||
"resolveUnref": true, |
|||
"shallowReactive": true, |
|||
"shallowReadonly": true, |
|||
"shallowRef": true, |
|||
"syncRef": true, |
|||
"syncRefs": true, |
|||
"templateRef": true, |
|||
"throttledRef": true, |
|||
"throttledWatch": true, |
|||
"toRaw": true, |
|||
"toReactive": true, |
|||
"toRef": true, |
|||
"toRefs": true, |
|||
"triggerRef": true, |
|||
"tryOnBeforeMount": true, |
|||
"tryOnBeforeUnmount": true, |
|||
"tryOnMounted": true, |
|||
"tryOnScopeDispose": true, |
|||
"tryOnUnmounted": true, |
|||
"unref": true, |
|||
"unrefElement": true, |
|||
"until": true, |
|||
"useActiveElement": true, |
|||
"useArrayEvery": true, |
|||
"useArrayFilter": true, |
|||
"useArrayFind": true, |
|||
"useArrayFindIndex": true, |
|||
"useArrayFindLast": true, |
|||
"useArrayJoin": true, |
|||
"useArrayMap": true, |
|||
"useArrayReduce": true, |
|||
"useArraySome": true, |
|||
"useArrayUnique": true, |
|||
"useAsyncQueue": true, |
|||
"useAsyncState": true, |
|||
"useAttrs": true, |
|||
"useBase64": true, |
|||
"useBattery": true, |
|||
"useBluetooth": true, |
|||
"useBreakpoints": true, |
|||
"useBroadcastChannel": true, |
|||
"useBrowserLocation": true, |
|||
"useCached": true, |
|||
"useClipboard": true, |
|||
"useCloned": true, |
|||
"useColorMode": true, |
|||
"useConfirmDialog": true, |
|||
"useCounter": true, |
|||
"useCssModule": true, |
|||
"useCssVar": true, |
|||
"useCssVars": true, |
|||
"useCurrentElement": true, |
|||
"useCycleList": true, |
|||
"useDark": true, |
|||
"useDateFormat": true, |
|||
"useDebounce": true, |
|||
"useDebounceFn": true, |
|||
"useDebouncedRefHistory": true, |
|||
"useDeviceMotion": true, |
|||
"useDeviceOrientation": true, |
|||
"useDevicePixelRatio": true, |
|||
"useDevicesList": true, |
|||
"useDisplayMedia": true, |
|||
"useDocumentVisibility": true, |
|||
"useDraggable": true, |
|||
"useDropZone": true, |
|||
"useElementBounding": true, |
|||
"useElementByPoint": true, |
|||
"useElementHover": true, |
|||
"useElementSize": true, |
|||
"useElementVisibility": true, |
|||
"useEventBus": true, |
|||
"useEventListener": true, |
|||
"useEventSource": true, |
|||
"useEyeDropper": true, |
|||
"useFavicon": true, |
|||
"useFetch": true, |
|||
"useFileDialog": true, |
|||
"useFileSystemAccess": true, |
|||
"useFocus": true, |
|||
"useFocusWithin": true, |
|||
"useFps": true, |
|||
"useFullscreen": true, |
|||
"useGamepad": true, |
|||
"useGeolocation": true, |
|||
"useIdle": true, |
|||
"useImage": true, |
|||
"useInfiniteScroll": true, |
|||
"useIntersectionObserver": true, |
|||
"useInterval": true, |
|||
"useIntervalFn": true, |
|||
"useKeyModifier": true, |
|||
"useLastChanged": true, |
|||
"useLocalStorage": true, |
|||
"useMagicKeys": true, |
|||
"useManualRefHistory": true, |
|||
"useMediaControls": true, |
|||
"useMediaQuery": true, |
|||
"useMemoize": true, |
|||
"useMemory": true, |
|||
"useMounted": true, |
|||
"useMouse": true, |
|||
"useMouseInElement": true, |
|||
"useMousePressed": true, |
|||
"useMutationObserver": true, |
|||
"useNavigatorLanguage": true, |
|||
"useNetwork": true, |
|||
"useNow": true, |
|||
"useObjectUrl": true, |
|||
"useOffsetPagination": true, |
|||
"useOnline": true, |
|||
"usePageLeave": true, |
|||
"useParallax": true, |
|||
"usePermission": true, |
|||
"usePointer": true, |
|||
"usePointerLock": true, |
|||
"usePointerSwipe": true, |
|||
"usePreferredColorScheme": true, |
|||
"usePreferredContrast": true, |
|||
"usePreferredDark": true, |
|||
"usePreferredLanguages": true, |
|||
"usePreferredReducedMotion": true, |
|||
"usePrevious": true, |
|||
"useRafFn": true, |
|||
"useRefHistory": true, |
|||
"useResizeObserver": true, |
|||
"useScreenOrientation": true, |
|||
"useScreenSafeArea": true, |
|||
"useScriptTag": true, |
|||
"useScroll": true, |
|||
"useScrollLock": true, |
|||
"useSessionStorage": true, |
|||
"useShare": true, |
|||
"useSlots": true, |
|||
"useSorted": true, |
|||
"useSpeechRecognition": true, |
|||
"useSpeechSynthesis": true, |
|||
"useStepper": true, |
|||
"useStorage": true, |
|||
"useStorageAsync": true, |
|||
"useStyleTag": true, |
|||
"useSupported": true, |
|||
"useSwipe": true, |
|||
"useTemplateRefsList": true, |
|||
"useTextDirection": true, |
|||
"useTextSelection": true, |
|||
"useTextareaAutosize": true, |
|||
"useThrottle": true, |
|||
"useThrottleFn": true, |
|||
"useThrottledRefHistory": true, |
|||
"useTimeAgo": true, |
|||
"useTimeout": true, |
|||
"useTimeoutFn": true, |
|||
"useTimeoutPoll": true, |
|||
"useTimestamp": true, |
|||
"useTitle": true, |
|||
"useToNumber": true, |
|||
"useToString": true, |
|||
"useToggle": true, |
|||
"useTransition": true, |
|||
"useUrlSearchParams": true, |
|||
"useUserMedia": true, |
|||
"useVModel": true, |
|||
"useVModels": true, |
|||
"useVibrate": true, |
|||
"useVirtualList": true, |
|||
"useWakeLock": true, |
|||
"useWebNotification": true, |
|||
"useWebSocket": true, |
|||
"useWebWorker": true, |
|||
"useWebWorkerFn": true, |
|||
"useWindowFocus": true, |
|||
"useWindowScroll": true, |
|||
"useWindowSize": true, |
|||
"watch": true, |
|||
"watchArray": true, |
|||
"watchAtMost": true, |
|||
"watchDebounced": true, |
|||
"watchEffect": true, |
|||
"watchIgnorable": true, |
|||
"watchOnce": true, |
|||
"watchPausable": true, |
|||
"watchPostEffect": true, |
|||
"watchSyncEffect": true, |
|||
"watchThrottled": true, |
|||
"watchTriggerable": true, |
|||
"watchWithFilter": true, |
|||
"whenever": true |
|||
} |
|||
} |
|||
@ -0,0 +1,32 @@ |
|||
module.exports = { |
|||
env: { |
|||
browser: true, |
|||
es2021: true, |
|||
node: true, |
|||
}, |
|||
parser: "vue-eslint-parser", |
|||
extends: [ |
|||
// 参考vuejs官方的eslint配置: https://eslint.vuejs.org/user-guide/#usage |
|||
"plugin:vue/vue3-recommended", |
|||
"./.eslintrc-auto-import.json", |
|||
"prettier", |
|||
], |
|||
parserOptions: { |
|||
ecmaVersion: "latest", |
|||
sourceType: "module", |
|||
parser: "@typescript-eslint/parser", |
|||
}, |
|||
plugins: ["vue", "@typescript-eslint"], |
|||
rules: { |
|||
"vue/multi-word-component-names": "off", // 关闭组件名必须多字: https://eslint.vuejs.org/rules/multi-word-component-names.html |
|||
"@typescript-eslint/no-empty-function": "off", // 关闭空方法检查 |
|||
"@typescript-eslint/no-explicit-any": "off", // 关闭any类型的警告 |
|||
"vue/no-v-model-argument": "off", |
|||
"@typescript-eslint/no-non-null-assertion": "off", |
|||
}, |
|||
// https://eslint.org/docs/latest/use/configure/language-options#specifying-globals |
|||
globals: { |
|||
DialogOption: "readonly", |
|||
OptionType: "readonly", |
|||
}, |
|||
}; |
|||
@ -0,0 +1,4 @@ |
|||
#!/bin/sh |
|||
. "$(dirname "$0")/_/husky.sh" |
|||
|
|||
npx --no-install commitlint --edit $1 |
|||
@ -0,0 +1,4 @@ |
|||
#!/bin/sh |
|||
. "$(dirname "$0")/_/husky.sh" |
|||
|
|||
npm run lint:lint-staged |
|||
@ -0,0 +1,10 @@ |
|||
dist |
|||
node_modules |
|||
public |
|||
.husky |
|||
.vscode |
|||
.idea |
|||
*.sh |
|||
*.md |
|||
|
|||
src/assets |
|||
@ -0,0 +1,36 @@ |
|||
module.exports = { |
|||
// (x)=>{},单个参数箭头函数是否显示小括号。(always:始终显示;avoid:省略括号。默认:always) |
|||
arrowParens: "always", |
|||
// 开始标签的右尖括号是否跟随在最后一行属性末尾,默认false |
|||
bracketSameLine: false, |
|||
// 对象字面量的括号之间打印空格 (true - Example: { foo: bar } ; false - Example: {foo:bar}) |
|||
bracketSpacing: true, |
|||
// 是否格式化一些文件中被嵌入的代码片段的风格(auto|off;默认auto) |
|||
embeddedLanguageFormatting: "auto", |
|||
// 指定 HTML 文件的空格敏感度 (css|strict|ignore;默认css) |
|||
htmlWhitespaceSensitivity: "css", |
|||
// 当文件已经被 Prettier 格式化之后,是否会在文件顶部插入一个特殊的 @format 标记,默认false |
|||
insertPragma: false, |
|||
// 在 JSX 中使用单引号替代双引号,默认false |
|||
jsxSingleQuote: false, |
|||
// 每行最多字符数量,超出换行(默认80) |
|||
printWidth: 80, |
|||
// 超出打印宽度 (always | never | preserve ) |
|||
proseWrap: "preserve", |
|||
// 对象属性是否使用引号(as-needed | consistent | preserve;默认as-needed:对象的属性需要加引号才添加;) |
|||
quoteProps: "as-needed", |
|||
// 是否只格式化在文件顶部包含特定注释(@prettier| @format)的文件,默认false |
|||
requirePragma: false, |
|||
// 结尾添加分号 |
|||
semi: true, |
|||
// 使用单引号 (true:单引号;false:双引号) |
|||
singleQuote: false, |
|||
// 缩进空格数,默认2个空格 |
|||
tabWidth: 2, |
|||
// 元素末尾是否加逗号,默认es5: ES5中的 objects, arrays 等会添加逗号,TypeScript 中的 type 后不加逗号 |
|||
trailingComma: "es5", |
|||
// 指定缩进方式,空格或tab,默认false,即使用空格 |
|||
useTabs: false, |
|||
// vue 文件中是否缩进 <style> 和 <script> 标签,默认 false |
|||
vueIndentScriptAndStyle: false, |
|||
}; |
|||
@ -0,0 +1,10 @@ |
|||
dist |
|||
node_modules |
|||
public |
|||
.husky |
|||
.vscode |
|||
.idea |
|||
*.sh |
|||
*.md |
|||
|
|||
src/assets |
|||
@ -0,0 +1,43 @@ |
|||
module.exports = { |
|||
// 继承推荐规范配置 |
|||
extends: [ |
|||
"stylelint-config-standard", |
|||
"stylelint-config-recommended-scss", |
|||
"stylelint-config-recommended-vue/scss", |
|||
"stylelint-config-html/vue", |
|||
"stylelint-config-recess-order", |
|||
], |
|||
// 指定不同文件对应的解析器 |
|||
overrides: [ |
|||
{ |
|||
files: ["**/*.{vue,html}"], |
|||
customSyntax: "postcss-html", |
|||
}, |
|||
{ |
|||
files: ["**/*.{css,scss}"], |
|||
customSyntax: "postcss-scss", |
|||
}, |
|||
], |
|||
// 自定义规则 |
|||
rules: { |
|||
"import-notation": "string", // 指定导入CSS文件的方式("string"|"url") |
|||
"selector-class-pattern": null, // 选择器类名命名规则 |
|||
"custom-property-pattern": null, // 自定义属性命名规则 |
|||
"keyframes-name-pattern": null, // 动画帧节点样式命名规则 |
|||
"no-descending-specificity": null, // 允许无降序特异性 |
|||
// 允许 global 、export 、deep伪类 |
|||
"selector-pseudo-class-no-unknown": [ |
|||
true, |
|||
{ |
|||
ignorePseudoClasses: ["global", "export", "deep"], |
|||
}, |
|||
], |
|||
// 允许未知属性 |
|||
"property-no-unknown": [ |
|||
true, |
|||
{ |
|||
ignoreProperties: ["menuBg", "menuText", "menuActiveText"], |
|||
}, |
|||
], |
|||
}, |
|||
}; |
|||
@ -0,0 +1,20 @@ |
|||
# 2.3.0 (2023/5/12) |
|||
|
|||
### 📦️ build |
|||
- vue 版本升级 3.2.45 → 3.3.1 ([CHANGELOG](https://github.com/vuejs/core/blob/main/CHANGELOG.md)) |
|||
- vite 版本升级 4.3.1 → 4.3.5 |
|||
|
|||
### ♻️ refactor |
|||
- 使用 vue 3.3 版本新特性 `defineOptions` 在 `setup` 定义组件名称,移除重复的 `script` 标签 |
|||
|
|||
# 2.2.2 (2023/5/11) |
|||
|
|||
### ✨ feat |
|||
- 用户新增提交添加 `vueUse` 的 `useDebounceFn` 函数实现按钮防抖节流 |
|||
|
|||
|
|||
# 2.2.1 (2023/4/25) |
|||
|
|||
### 🐛 fix |
|||
- 图标选择器组件使用 `onClickOutside` 未排除下拉弹出框元素导致无法输入搜索。 |
|||
|
|||
@ -0,0 +1,93 @@ |
|||
module.exports = { |
|||
// 继承的规则 |
|||
extends: ["@commitlint/config-conventional"], |
|||
// 自定义规则 |
|||
rules: { |
|||
// @see https://commitlint.js.org/#/reference-rules |
|||
|
|||
// 提交类型枚举,git提交type必须是以下类型 |
|||
"type-enum": [ |
|||
2, |
|||
"always", |
|||
[ |
|||
"feat", // 新增功能 |
|||
"fix", // 修复缺陷 |
|||
"docs", // 文档变更 |
|||
"style", // 代码格式(不影响功能,例如空格、分号等格式修正) |
|||
"refactor", // 代码重构(不包括 bug 修复、功能新增) |
|||
"perf", // 性能优化 |
|||
"test", // 添加疏漏测试或已有测试改动 |
|||
"build", // 构建流程、外部依赖变更(如升级 npm 包、修改 webpack 配置等) |
|||
"ci", // 修改 CI 配置、脚本 |
|||
"revert", // 回滚 commit |
|||
"chore", // 对构建过程或辅助工具和库的更改(不影响源文件、测试用例) |
|||
], |
|||
], |
|||
"subject-case": [0], // subject大小写不做校验 |
|||
}, |
|||
|
|||
prompt: { |
|||
messages: { |
|||
type: "选择你要提交的类型 :", |
|||
scope: "选择一个提交范围(可选):", |
|||
customScope: "请输入自定义的提交范围 :", |
|||
subject: "填写简短精炼的变更描述 :\n", |
|||
body: '填写更加详细的变更描述(可选)。使用 "|" 换行 :\n', |
|||
breaking: '列举非兼容性重大的变更(可选)。使用 "|" 换行 :\n', |
|||
footerPrefixesSelect: "选择关联issue前缀(可选):", |
|||
customFooterPrefix: "输入自定义issue前缀 :", |
|||
footer: "列举关联issue (可选) 例如: #31, #I3244 :\n", |
|||
generatingByAI: "正在通过 AI 生成你的提交简短描述...", |
|||
generatedSelectByAI: "选择一个 AI 生成的简短描述:", |
|||
confirmCommit: "是否提交或修改commit ?", |
|||
}, |
|||
// prettier-ignore |
|||
types: [ |
|||
{ value: "feat", name: "特性: ✨ 新增功能", emoji: ":sparkles:" }, |
|||
{ value: "fix", name: "修复: 🐛 修复缺陷", emoji: ":bug:" }, |
|||
{ value: "docs", name: "文档: 📝 文档变更", emoji: ":memo:" }, |
|||
{ value: "style", name: "格式: 💄 代码格式(不影响功能,例如空格、分号等格式修正)", emoji: ":lipstick:" }, |
|||
{ value: "refactor", name: "重构: ♻️ 代码重构(不包括 bug 修复、功能新增)", emoji: ":recycle:" }, |
|||
{ value: "perf", name: "性能: ⚡️ 性能优化", emoji: ":zap:" }, |
|||
{ value: "test", name: "测试: ✅ 添加疏漏测试或已有测试改动", emoji: ":white_check_mark:"}, |
|||
{ value: "build", name: "构建: 📦️ 构建流程、外部依赖变更(如升级 npm 包、修改 vite 配置等)", emoji: ":package:"}, |
|||
{ value: "ci", name: "集成: 🎡 修改 CI 配置、脚本", emoji: ":ferris_wheel:"}, |
|||
{ value: "revert", name: "回退: ⏪️ 回滚 commit",emoji: ":rewind:"}, |
|||
{ value: "chore", name: "其他: 🔨 对构建过程或辅助工具和库的更改(不影响源文件、测试用例)", emoji: ":hammer:"}, |
|||
], |
|||
useEmoji: true, |
|||
emojiAlign: "center", |
|||
useAI: false, |
|||
aiNumber: 1, |
|||
themeColorCode: "", |
|||
scopes: [], |
|||
allowCustomScopes: true, |
|||
allowEmptyScopes: true, |
|||
customScopesAlign: "bottom", |
|||
customScopesAlias: "custom", |
|||
emptyScopesAlias: "empty", |
|||
upperCaseSubject: false, |
|||
markBreakingChangeMode: false, |
|||
allowBreakingChanges: ["feat", "fix"], |
|||
breaklineNumber: 100, |
|||
breaklineChar: "|", |
|||
skipQuestions: [], |
|||
issuePrefixes: [ |
|||
{ value: "closed", name: "closed: ISSUES has been processed" }, |
|||
], |
|||
customIssuePrefixAlign: "top", |
|||
emptyIssuePrefixAlias: "skip", |
|||
customIssuePrefixAlias: "custom", |
|||
allowCustomIssuePrefix: true, |
|||
allowEmptyIssuePrefix: true, |
|||
confirmColorize: true, |
|||
maxHeaderLength: Infinity, |
|||
maxSubjectLength: Infinity, |
|||
minSubjectLength: 0, |
|||
scopeOverrides: undefined, |
|||
defaultBody: "", |
|||
defaultIssues: "", |
|||
defaultScope: "", |
|||
defaultSubject: "", |
|||
}, |
|||
}; |
|||
@ -0,0 +1,18 @@ |
|||
<!DOCTYPE html> |
|||
<html lang="en"> |
|||
|
|||
<head> |
|||
<meta charset="UTF-8" /> |
|||
<link rel="icon" href="/favicon.ico" /> |
|||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
|||
<meta name="description" content="数通智联化工云平台" /> |
|||
<meta name="keywords" content="数通智联化工云平台" /> |
|||
<title>数通智联化工云平台</title> |
|||
</head> |
|||
|
|||
<body> |
|||
<div id="app"></div> |
|||
<script type="module" src="/src/main.ts"></script> |
|||
</body> |
|||
|
|||
</html> |
|||
@ -0,0 +1,102 @@ |
|||
{ |
|||
"name": "appsys", |
|||
"private": true, |
|||
"version": "2.3.0", |
|||
"type": "module", |
|||
"scripts": { |
|||
"dev": "vite serve --mode development", |
|||
"build:prod": "vite build --mode production &&vue-tsc --noEmit", |
|||
"prepare": "husky install", |
|||
"lint:eslint": "eslint --fix --ext .ts,.js,.vue ./src ", |
|||
"lint:prettier": "prettier --write \"**/*.{js,cjs,ts,json,tsx,css,less,scss,vue,html,md}\"", |
|||
"lint:stylelint": "stylelint \"**/*.{css,scss,vue}\" --fix", |
|||
"lint:lint-staged": "lint-staged", |
|||
"commit": "git-cz" |
|||
}, |
|||
"config": { |
|||
"commitizen": { |
|||
"path": "node_modules/cz-git" |
|||
} |
|||
}, |
|||
"lint-staged": { |
|||
"*.{js,ts}": [ |
|||
"eslint --fix", |
|||
"prettier --write" |
|||
], |
|||
"*.{cjs,json}": [ |
|||
"prettier --write" |
|||
], |
|||
"*.{vue,html}": [ |
|||
"eslint --fix", |
|||
"prettier --write", |
|||
"stylelint --fix" |
|||
], |
|||
"*.{scss,css}": [ |
|||
"stylelint --fix", |
|||
"prettier --write" |
|||
], |
|||
"*.md": [ |
|||
"prettier --write" |
|||
] |
|||
}, |
|||
"dependencies": { |
|||
"@vitejs/plugin-vue": "^4.2.3", |
|||
"@vueuse/core": "^10.1.2", |
|||
"@wangeditor/editor": "^5.1.23", |
|||
"@wangeditor/editor-for-vue": "5.1.10", |
|||
"@wecom/jssdk": "^1.3.2", |
|||
"axios": "^1.4.0", |
|||
"echarts": "^5.2.2", |
|||
"element-plus": "^2.3.4", |
|||
"nprogress": "^0.2.0", |
|||
"path-browserify": "^1.0.1", |
|||
"path-to-regexp": "^6.2.0", |
|||
"pinia": "^2.0.33", |
|||
"screenfull": "^6.0.0", |
|||
"vue": "^3.3.1", |
|||
"vue-i18n": "9.2.2", |
|||
"vue-router": "^4.2.0" |
|||
}, |
|||
"devDependencies": { |
|||
"@commitlint/cli": "^17.6.3", |
|||
"@commitlint/config-conventional": "^17.6.3", |
|||
"@iconify-json/ep": "^1.1.10", |
|||
"@types/nprogress": "^0.2.0", |
|||
"@types/path-browserify": "^1.0.0", |
|||
"@typescript-eslint/eslint-plugin": "^5.59.6", |
|||
"@typescript-eslint/parser": "^5.59.6", |
|||
"autoprefixer": "^10.4.14", |
|||
"commitizen": "^4.3.0", |
|||
"cz-git": "^1.6.1", |
|||
"eslint": "^8.40.0", |
|||
"eslint-config-prettier": "^8.8.0", |
|||
"eslint-plugin-prettier": "^4.2.1", |
|||
"eslint-plugin-vue": "^9.13.0", |
|||
"fast-glob": "^3.2.11", |
|||
"husky": "^8.0.3", |
|||
"lint-staged": "^13.2.2", |
|||
"postcss": "^8.4.23", |
|||
"postcss-html": "^1.5.0", |
|||
"postcss-scss": "^4.0.6", |
|||
"prettier": "^2.8.8", |
|||
"sass": "^1.58.3", |
|||
"stylelint": "^15.5.0", |
|||
"stylelint-config-html": "^1.1.0", |
|||
"stylelint-config-recess-order": "^4.0.0", |
|||
"stylelint-config-recommended-scss": "11.0.0 ", |
|||
"stylelint-config-recommended-vue": "^1.4.0", |
|||
"stylelint-config-standard": "^33.0.0", |
|||
"stylelint-config-standard-scss": "^9.0.0", |
|||
"typescript": "^5.0.4", |
|||
"unocss": "^0.51.13", |
|||
"unplugin-auto-import": "^0.15.3", |
|||
"unplugin-icons": "^0.16.1", |
|||
"unplugin-vue-components": "^0.24.1", |
|||
"vite": "^4.3.5", |
|||
"vite-plugin-svg-icons": "^2.0.1", |
|||
"vue-tsc": "^1.6.5 " |
|||
}, |
|||
"repository": "", |
|||
"author": "", |
|||
"license": "MIT" |
|||
} |
|||
|
After Width: | Height: | Size: 259 KiB |
@ -0,0 +1,11 @@ |
|||
<script setup lang="ts"> |
|||
import { ElConfigProvider } from 'element-plus'; |
|||
import { useAppStore } from '@/store/modules/app'; |
|||
const appStore = useAppStore(); |
|||
</script> |
|||
|
|||
<template> |
|||
<el-config-provider :locale="appStore.locale" :size="appStore.size"> |
|||
<router-view /> |
|||
</el-config-provider> |
|||
</template> |
|||
@ -0,0 +1,56 @@ |
|||
import request from '@/utils/request'; |
|||
import { AxiosPromise } from 'axios'; |
|||
import { CaptchaResult, LoginData, LoginResult } from './types'; |
|||
|
|||
/** |
|||
* 登录API |
|||
* |
|||
* @param data {LoginData} |
|||
* @returns |
|||
*/ |
|||
export function loginApi(data: LoginData): AxiosPromise<LoginResult> { |
|||
return request({ |
|||
url: '/api/v1/auth/login', |
|||
method: 'post', |
|||
params: data |
|||
}); |
|||
} |
|||
export function loginApiIng(data: LoginData): AxiosPromise<LoginResult> { |
|||
return request({ |
|||
url: "/kpiapi/base/login", |
|||
method: "post", |
|||
data: data, |
|||
}); |
|||
} |
|||
/** |
|||
* 注销API |
|||
*/ |
|||
export function logoutApiOld() { |
|||
return request({ |
|||
url: '/api/v1/auth/logout', |
|||
method: 'delete' |
|||
}); |
|||
} |
|||
|
|||
export function logoutApi() { |
|||
return request({ |
|||
url: "/kpiapi/base/signout", |
|||
method: "post", |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 获取验证码 |
|||
*/ |
|||
export function getCaptchaApi(): AxiosPromise<CaptchaResult> { |
|||
return request({ |
|||
url: '/api/v1/auth/captcha', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
export function getCaptchaApiIng(): AxiosPromise<CaptchaResult> { |
|||
return request({ |
|||
url: "/kpiapi/base/captcha", |
|||
method: "post", |
|||
}); |
|||
} |
|||
@ -0,0 +1,72 @@ |
|||
/** |
|||
* 登录请求参数 |
|||
*/ |
|||
export interface LoginData { |
|||
/** |
|||
* 用户名 |
|||
*/ |
|||
username?: string; |
|||
/** |
|||
* 密码 |
|||
*/ |
|||
password?: string; |
|||
|
|||
/** |
|||
* 验证码缓存key |
|||
*/ |
|||
verifyCodeKey?: string; |
|||
|
|||
/** |
|||
* 验证码 |
|||
*/ |
|||
verifyCode?: string; |
|||
captcha?: string; |
|||
captchaId?: string; |
|||
} |
|||
|
|||
/** |
|||
* 登录响应 |
|||
*/ |
|||
export interface LoginResult { |
|||
/** |
|||
* 访问token |
|||
*/ |
|||
accessToken?: string; |
|||
/** |
|||
* 过期时间(单位:毫秒) |
|||
*/ |
|||
expires?: number; |
|||
/** |
|||
* 刷新token |
|||
*/ |
|||
refreshToken?: string; |
|||
/** |
|||
* token 类型 |
|||
*/ |
|||
tokenType?: string; |
|||
key?: string; |
|||
token?: string; |
|||
} |
|||
|
|||
/** |
|||
* 验证码响应 |
|||
*/ |
|||
export interface CaptchaResult { |
|||
/** |
|||
* 验证码缓存key |
|||
*/ |
|||
verifyCodeKey: string; |
|||
/** |
|||
* 验证码图片Base64字符串 |
|||
*/ |
|||
verifyCodeBase64: string; |
|||
/** |
|||
* 验证码缓存key |
|||
*/ |
|||
captchaid: string; |
|||
/** |
|||
* 验证码图片Base64字符串 |
|||
*/ |
|||
picPath: string; |
|||
} |
|||
|
|||
@ -0,0 +1,77 @@ |
|||
import request from '@/utils/request'; |
|||
import { AxiosPromise } from 'axios'; |
|||
import { DeptForm, DeptQuery, DeptVO } from './types'; |
|||
|
|||
/** |
|||
* 部门树形表格 |
|||
* |
|||
* @param queryParams |
|||
*/ |
|||
export function listDepts(queryParams?: DeptQuery): AxiosPromise<DeptVO[]> { |
|||
return request({ |
|||
url: '/api/v1/dept', |
|||
method: 'get', |
|||
params: queryParams |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 部门下拉列表 |
|||
*/ |
|||
export function listDeptOptions(): AxiosPromise<[]> { |
|||
return request({ |
|||
url: '/api/v1/dept/options', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 获取部门详情 |
|||
* |
|||
* @param id |
|||
*/ |
|||
export function getDeptForm(id: number): AxiosPromise<DeptForm> { |
|||
return request({ |
|||
url: '/api/v1/dept/' + id + '/form', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 新增部门 |
|||
* |
|||
* @param data |
|||
*/ |
|||
export function addDept(data: DeptForm) { |
|||
return request({ |
|||
url: '/api/v1/dept', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 修改部门 |
|||
* |
|||
* @param id |
|||
* @param data |
|||
*/ |
|||
export function updateDept(id: number, data: DeptForm) { |
|||
return request({ |
|||
url: '/api/v1/dept/' + id, |
|||
method: 'put', |
|||
data: data |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 删除部门 |
|||
* |
|||
* @param ids |
|||
*/ |
|||
export function deleteDept(ids: string) { |
|||
return request({ |
|||
url: '/api/v1/dept/' + ids, |
|||
method: 'delete' |
|||
}); |
|||
} |
|||
@ -0,0 +1,71 @@ |
|||
/** |
|||
* 部门查询参数 |
|||
*/ |
|||
export interface DeptQuery { |
|||
keywords?: string; |
|||
status?: number; |
|||
} |
|||
|
|||
/** |
|||
* 部门类型 |
|||
*/ |
|||
export interface DeptVO { |
|||
/** |
|||
* 子部门 |
|||
*/ |
|||
children?: DeptVO[]; |
|||
/** |
|||
* 创建时间 |
|||
*/ |
|||
createTime?: Date; |
|||
/** |
|||
* 部门ID |
|||
*/ |
|||
id?: number; |
|||
/** |
|||
* 部门名称 |
|||
*/ |
|||
name?: string; |
|||
/** |
|||
* 父部门ID |
|||
*/ |
|||
parentId?: number; |
|||
/** |
|||
* 排序 |
|||
*/ |
|||
sort?: number; |
|||
/** |
|||
* 状态(1:启用;0:禁用) |
|||
*/ |
|||
status?: number; |
|||
/** |
|||
* 修改时间 |
|||
*/ |
|||
updateTime?: Date; |
|||
} |
|||
|
|||
/** |
|||
* 部门表单类型 |
|||
*/ |
|||
export interface DeptForm { |
|||
/** |
|||
* 部门ID(新增不填) |
|||
*/ |
|||
id?: number; |
|||
/** |
|||
* 部门名称 |
|||
*/ |
|||
name?: string; |
|||
/** |
|||
* 父部门ID |
|||
*/ |
|||
parentId: number; |
|||
/** |
|||
* 排序 |
|||
*/ |
|||
sort?: number; |
|||
/** |
|||
* 状态(1:启用;0:禁用) |
|||
*/ |
|||
status?: number; |
|||
} |
|||
@ -0,0 +1,217 @@ |
|||
import request from '@/utils/request'; |
|||
import { AxiosPromise } from 'axios'; |
|||
import { |
|||
DictTypeQuery, |
|||
DictTypePageResult, |
|||
DictTypeForm, |
|||
DictQuery, |
|||
DictForm, |
|||
DictPageResult, |
|||
dictId |
|||
} from './types'; |
|||
|
|||
/** |
|||
* 字典类型分页列表 |
|||
* |
|||
* @param queryParams |
|||
*/ |
|||
export function getDictTypePageOld( |
|||
queryParams: DictTypeQuery |
|||
): AxiosPromise<DictTypePageResult> { |
|||
return request({ |
|||
url: '/api/v1/dict/types/page', |
|||
method: 'get', |
|||
params: queryParams |
|||
}); |
|||
} |
|||
export function getDictTypePage( |
|||
queryParams: DictTypeQuery |
|||
): AxiosPromise<DictTypePageResult> { |
|||
return request({ |
|||
url: '/systemapi/dict/dict_type_list', |
|||
method: 'post', |
|||
data: queryParams |
|||
}); |
|||
} |
|||
/** |
|||
* 字典类型表单数据 |
|||
* |
|||
* @param id |
|||
*/ |
|||
export function getDictTypeFormOld(id: number): AxiosPromise<DictTypeForm> { |
|||
return request({ |
|||
url: '/api/v1/dict/types/' + id + '/form', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
export function getDictTypeForm(id: number): AxiosPromise<DictTypeForm> { |
|||
return request({ |
|||
url: '/systemapi/dict/get_dict_type_cont?id=' + id, |
|||
method: 'get' |
|||
}); |
|||
} |
|||
/** |
|||
* 新增字典类型 |
|||
* |
|||
* @param data |
|||
*/ |
|||
export function addDictTypeOld(data: DictTypeForm) { |
|||
return request({ |
|||
url: '/api/v1/dict/types', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
|
|||
export function addDictType(data: DictTypeForm) { |
|||
return request({ |
|||
url: '/systemapi/dict/add_dict_type', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 修改字典类型 |
|||
* |
|||
* @param id |
|||
* @param data |
|||
*/ |
|||
export function updateDictTypeOld(id: number, data: DictTypeForm) { |
|||
return request({ |
|||
url: '/api/v1/dict/types/' + id, |
|||
method: 'put', |
|||
data: data |
|||
}); |
|||
} |
|||
export function updateDictType(data: DictTypeForm) { |
|||
return request({ |
|||
url: '/systemapi/dict/edit_dict_type_cont', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 删除字典类型 |
|||
*/ |
|||
export function deleteDictTypesOld(ids: string) { |
|||
return request({ |
|||
url: '/api/v1/dict/types/' + ids, |
|||
method: 'delete' |
|||
}); |
|||
} |
|||
export function deleteDictTypes(data: dictId) { |
|||
return request({ |
|||
url: '/systemapi/dict/del_dict_type_cont', |
|||
method: 'post', |
|||
data:data |
|||
}); |
|||
} |
|||
/** |
|||
* 获取字典类型的数据项 |
|||
* |
|||
* @param typeCode 字典类型编码 |
|||
*/ |
|||
export function getDictOptions(typeCode: string): AxiosPromise<OptionType[]> { |
|||
return request({ |
|||
url: '/api/v1/dict/types/' + typeCode + '/items', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 字典分页列表 |
|||
*/ |
|||
export function getDictPageOld( |
|||
queryParams: DictQuery |
|||
): AxiosPromise<DictPageResult> { |
|||
return request({ |
|||
url: '/api/v1/dict/page', |
|||
method: 'get', |
|||
params: queryParams |
|||
}); |
|||
} |
|||
|
|||
export function getDictPage( |
|||
queryParams: DictQuery |
|||
): AxiosPromise<DictPageResult> { |
|||
return request({ |
|||
url: '/systemapi/dict/get_dictionary', |
|||
method: 'post', |
|||
data: queryParams |
|||
}); |
|||
} |
|||
/** |
|||
* 获取字典表单数据 |
|||
* |
|||
* @param id |
|||
*/ |
|||
export function getDictFormDataOld(id: number): AxiosPromise<DictForm> { |
|||
return request({ |
|||
url: '/api/v1/dict/' + id + '/form', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
export function getDictFormData(id: number): AxiosPromise<DictForm> { |
|||
return request({ |
|||
url: '/systemapi/dict/get_dictionary_cont?id=' + id, |
|||
method: 'get' |
|||
}); |
|||
} |
|||
/** |
|||
* 新增字典 |
|||
* |
|||
* @param data |
|||
*/ |
|||
export function addDictOld(data: DictForm) { |
|||
return request({ |
|||
url: '/api/v1/dict', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
export function addDict(data: DictForm) { |
|||
return request({ |
|||
url: '/systemapi/dict/add_dictionary_cont', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 修改字典项 |
|||
* |
|||
* @param id |
|||
* @param data |
|||
*/ |
|||
export function updateDictOld(id: number, data: DictForm) { |
|||
return request({ |
|||
url: '/api/v1/dict/' + id, |
|||
method: 'put', |
|||
data: data |
|||
}); |
|||
} |
|||
export function updateDict(data: DictForm) { |
|||
return request({ |
|||
url: '/systemapi/dict/edit_dictionary_cont', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 删除字典 |
|||
* |
|||
* @param ids 字典项ID,多个以英文逗号(,)分割 |
|||
*/ |
|||
export function deleteDictOld(ids: string) { |
|||
return request({ |
|||
url: '/api/v1/dict/' + ids, |
|||
method: 'delete' |
|||
}); |
|||
} |
|||
export function deleteDict(data: dictId) { |
|||
return request({ |
|||
url: '/systemapi/dict/del_dictionary_cont', |
|||
method: 'post', |
|||
data:data |
|||
}); |
|||
} |
|||
@ -0,0 +1,151 @@ |
|||
/** |
|||
* 字典类型查询参数 |
|||
*/ |
|||
export interface DictTypeQuery extends PageQuery { |
|||
/** |
|||
* 关键字(字典类型名称/编码) |
|||
*/ |
|||
keywords?: string; |
|||
} |
|||
|
|||
/** |
|||
* 字典类型分页对象 |
|||
*/ |
|||
export interface DictTypePageVO { |
|||
/** |
|||
* 字典类型ID |
|||
*/ |
|||
id: number; |
|||
/** |
|||
* 类型编码 |
|||
*/ |
|||
code: string; |
|||
/** |
|||
* 类型名称 |
|||
*/ |
|||
name: string; |
|||
/** |
|||
* 状态(1:启用;0:禁用) |
|||
*/ |
|||
status?: number; |
|||
/** |
|||
* 备注 |
|||
*/ |
|||
remark?: string; |
|||
/** |
|||
* 类型编码 |
|||
*/ |
|||
codekey: string; |
|||
} |
|||
|
|||
/** |
|||
* 字典分页项类型声明 |
|||
*/ |
|||
export type DictTypePageResult = PageResult<DictTypePageVO[]>; |
|||
|
|||
/** |
|||
* 字典表单类型声明 |
|||
*/ |
|||
export interface DictTypeForm { |
|||
/** |
|||
* 字典类型ID |
|||
*/ |
|||
id?: number|string; |
|||
/** |
|||
* 类型名称 |
|||
*/ |
|||
name?: string; |
|||
/** |
|||
* 类型编码 |
|||
*/ |
|||
code?: string; |
|||
/** |
|||
* 类型状态:1:启用;0:禁用 |
|||
*/ |
|||
status: number; |
|||
/** |
|||
* 备注 |
|||
*/ |
|||
remark?: string; |
|||
} |
|||
|
|||
/** |
|||
* 字典查询参数 |
|||
*/ |
|||
export interface DictQuery extends PageQuery { |
|||
/** |
|||
* 字典项名称 |
|||
*/ |
|||
keywords?: string; |
|||
/** |
|||
* 字典类型编码 |
|||
*/ |
|||
codetype?: string; |
|||
} |
|||
|
|||
/** |
|||
* 字典分页对象 |
|||
*/ |
|||
export interface DictPageVO { |
|||
/** |
|||
* 字典ID |
|||
*/ |
|||
id?: number; |
|||
/** |
|||
* 字典名称 |
|||
*/ |
|||
name?: string; |
|||
/** |
|||
* 状态(1:启用;0:禁用) |
|||
*/ |
|||
status?: number; |
|||
/** |
|||
* 字典值 |
|||
*/ |
|||
value?: string; |
|||
} |
|||
|
|||
/** |
|||
* 字典分页 |
|||
*/ |
|||
export type DictPageResult = PageResult<DictPageVO[]>; |
|||
|
|||
/** |
|||
* 字典表单 |
|||
*/ |
|||
export interface DictForm { |
|||
/** |
|||
* 字典ID |
|||
*/ |
|||
id?: number; |
|||
/** |
|||
* 字典名称 |
|||
*/ |
|||
name?: string; |
|||
/** |
|||
* 排序 |
|||
*/ |
|||
sort?: number; |
|||
/** |
|||
* 状态(1:启用;0:禁用) |
|||
*/ |
|||
status?: number; |
|||
/** |
|||
* 类型编码 |
|||
*/ |
|||
typeCode?: string; |
|||
/** |
|||
* 值 |
|||
*/ |
|||
value?: string; |
|||
|
|||
/** |
|||
* 备注 |
|||
*/ |
|||
remark?: string; |
|||
} |
|||
|
|||
//删除字典类型
|
|||
export interface dictId { |
|||
id?:string[] |
|||
} |
|||
@ -0,0 +1,34 @@ |
|||
import request from '@/utils/request'; |
|||
import { AxiosPromise } from 'axios'; |
|||
import { FileInfo } from './types'; |
|||
|
|||
/** |
|||
* 上传文件 |
|||
* |
|||
* @param file |
|||
*/ |
|||
export function uploadFileApi(file: File): AxiosPromise<FileInfo> { |
|||
const formData = new FormData(); |
|||
formData.append('file', file); |
|||
return request({ |
|||
url: '/api/v1/files', |
|||
method: 'post', |
|||
data: formData, |
|||
headers: { |
|||
'Content-Type': 'multipart/form-data' |
|||
} |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 删除文件 |
|||
* |
|||
* @param filePath 文件完整路径 |
|||
*/ |
|||
export function deleteFileApi(filePath?: string) { |
|||
return request({ |
|||
url: '/api/v1/files', |
|||
method: 'delete', |
|||
params: { filePath: filePath } |
|||
}); |
|||
} |
|||
@ -0,0 +1,7 @@ |
|||
/** |
|||
* 文件API类型声明 |
|||
*/ |
|||
export interface FileInfo { |
|||
name: string; |
|||
url: string; |
|||
} |
|||
@ -0,0 +1,63 @@ |
|||
export const haveDateTime =(dateStr:string,num:number,type:boolean) =>{ |
|||
let monthnum = 0; |
|||
if(typeof(num) == 'string'){ |
|||
monthnum = parseInt(num); |
|||
}else{ |
|||
monthnum = num |
|||
} |
|||
|
|||
let tadycont = new Date(dateStr) |
|||
//获取原日
|
|||
let day = tadycont.getDate(); |
|||
//获取原月份
|
|||
let month=tadycont.getMonth(); |
|||
//设置增加月份
|
|||
tadycont.setMonth(tadycont.getMonth() + (monthnum*1), 1); |
|||
//获取增加的后的月份
|
|||
let Jmonth = tadycont.getMonth()+1; |
|||
//获取增加的后的年份
|
|||
let Jyear=tadycont.getFullYear(); |
|||
if(Jmonth == 4 || Jmonth == 6 || Jmonth == 9 || Jmonth == 11) { |
|||
//小月
|
|||
if (day > 30) { |
|||
day = 30; |
|||
} |
|||
}else if (Jmonth == 2) { |
|||
//2月判断是否闰年
|
|||
if(((Jyear % 4) == 0) && ((Jyear % 100) != 0) || ((Jyear % 400) == 0)){ |
|||
if (day > 29) { |
|||
day = 29; |
|||
} |
|||
}else{ |
|||
if (day > 28) { |
|||
day = 28 |
|||
} |
|||
} |
|||
}else{ |
|||
//大月
|
|||
if (day > 31) { |
|||
day = 31; |
|||
} |
|||
} |
|||
let tHours = tadycont.getHours(); |
|||
let tMinutes = tadycont.getMinutes(); |
|||
let tSeconds = tadycont.getSeconds(); |
|||
let Jmonthstr = doHandleMonth(Jmonth); |
|||
let daystr = doHandleMonth(day); |
|||
if(!type){ |
|||
return Jyear+"-"+Jmonthstr+"-"+daystr; |
|||
} |
|||
return Jyear+"-"+Jmonthstr+"-"+daystr+" "+tHours+":"+tMinutes+":"+tSeconds; |
|||
} |
|||
/** |
|||
* 日或月补0 |
|||
* @param month |
|||
* @returns {string} |
|||
*/ |
|||
function doHandleMonth(month:number):string { |
|||
let m = month.toString(); |
|||
if(month.toString().length == 1){ |
|||
m = "0" + month; |
|||
} |
|||
return m; |
|||
} |
|||
@ -0,0 +1,83 @@ |
|||
import request from '@/utils/request'; |
|||
import { AxiosPromise } from 'axios'; |
|||
import { searchDuties,dutiesClassList,editDutiesCalssStrcue,editDutiesTypeEditOrDel,searchDutiesCont,dutiesList,dutiesInfo } from './type'; |
|||
/** |
|||
* 获取职务分类列表 |
|||
*/ |
|||
export function getDutiesCalssContList(data: searchDuties): AxiosPromise<dutiesClassList>{ |
|||
return request({ |
|||
url: '/hrapi/org/utiesclasslist', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 新增职务分类 |
|||
*/ |
|||
export function addDutiesCalssContApi(data: editDutiesCalssStrcue){ |
|||
return request({ |
|||
url: '/hrapi/org/adddutiesclass', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 编辑职务分类 |
|||
*/ |
|||
export function editDutiesCalssContApi(data: editDutiesCalssStrcue){ |
|||
return request({ |
|||
url: '/hrapi/org/neweiteutiesclassinfo', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 编辑职务分类状态或删除 |
|||
*/ |
|||
export function dutiesCalssEditOrDel(data: editDutiesTypeEditOrDel){ |
|||
return request({ |
|||
url: '/hrapi/org/editdutiesclassstatus', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 获取职务列表 |
|||
*/ |
|||
export function getDuitesList(data: searchDutiesCont): AxiosPromise<dutiesList>{ |
|||
return request({ |
|||
url: '/hrapi/org/dutieslist', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 添加职务 |
|||
*/ |
|||
export function addDutiesInfo(data: dutiesInfo){ |
|||
return request({ |
|||
url: '/hrapi/org/adddutiescont', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 编辑职务 |
|||
*/ |
|||
export function editDutiesInfo(data: dutiesInfo){ |
|||
return request({ |
|||
url: '/hrapi/org/eitedutiescont', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 编辑职务 |
|||
*/ |
|||
export function editOrDelDutiesInfo(data: editDutiesTypeEditOrDel){ |
|||
return request({ |
|||
url: '/hrapi/org/editordeldutiesstatus', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
@ -0,0 +1,72 @@ |
|||
/** |
|||
* 搜索职务分类 |
|||
*/ |
|||
export interface searchDuties extends PageQuery{ |
|||
keywords?: string; |
|||
} |
|||
|
|||
export type dutiesClassList = PageResult<dutiesClassListCont[]> |
|||
|
|||
/** |
|||
* 职务列表 |
|||
*/ |
|||
export interface dutiesClassListCont{ |
|||
id: string; |
|||
name?: string; |
|||
kingdeeid?:string; |
|||
state?:number; |
|||
status?:boolean; |
|||
} |
|||
/** |
|||
* 编辑职务分类 |
|||
*/ |
|||
export interface editDutiesCalssStrcue{ |
|||
id?: number; |
|||
name?: string; |
|||
} |
|||
/** |
|||
* 删除或改变职务类别状态 |
|||
*/ |
|||
export interface editDutiesTypeEditOrDel{ |
|||
id:string[]; |
|||
status?: number; |
|||
istrue?: number; |
|||
} |
|||
/** |
|||
* 搜索职务 |
|||
*/ |
|||
export interface searchDutiesCont extends PageQuery{ |
|||
name?: string; |
|||
jobid?: string; |
|||
} |
|||
/** |
|||
* 职务信息 |
|||
*/ |
|||
export interface dutiesCont{ |
|||
id: number; |
|||
name: string; |
|||
number: string; |
|||
jobtype: number; |
|||
dutiesclassname: string; |
|||
kingdeeid: string; |
|||
kingdeenum: string; |
|||
state: number; |
|||
time: number; |
|||
weight: number; |
|||
status:boolean; |
|||
} |
|||
/** |
|||
* 职务分页列表信息 |
|||
*/ |
|||
export type dutiesList = PageResult<dutiesCont[]> |
|||
/** |
|||
* 编辑/添加职务信息 |
|||
*/ |
|||
export interface dutiesInfo{ |
|||
id?: number; |
|||
name?: string; |
|||
number?: string; |
|||
jobtype?: string|number; |
|||
weight?: number; |
|||
} |
|||
|
|||
@ -0,0 +1,103 @@ |
|||
import request from '@/utils/request'; |
|||
import { AxiosPromise } from 'axios'; |
|||
import { searchFormTitle,orgClassListCont,addOrgTypesCont,orgClassCont,editOrgTypeEditOrDel,searchOrgCont,orgInfo,addOrgInfo,editOrgDel,searchTeamList,orgTeamListCont } from './type'; |
|||
/** |
|||
* 获取组织类别 |
|||
*/ |
|||
export function getRolePage(data?: searchFormTitle): AxiosPromise<orgClassListCont> { |
|||
return request({ |
|||
url: '/hrapi/org/govclasslist', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 获取所有组织类别 |
|||
*/ |
|||
export function getOrgClassAllPage(data?: addOrgTypesCont) { |
|||
return request({ |
|||
url: '/hrapi/org/govclassalllist', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 添加组织分类 |
|||
*/ |
|||
export function addOrgClassInfo(data: addOrgTypesCont){ |
|||
return request({ |
|||
url: '/hrapi/org/addgovclass', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 编辑组织分类 |
|||
*/ |
|||
export function editOrgClassInfo(data: orgClassCont){ |
|||
return request({ |
|||
url: '/hrapi/org/eitegovclasscont', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 编辑组织类别状态 |
|||
*/ |
|||
export function editOrgClassStatus(data: editOrgTypeEditOrDel){ |
|||
return request({ |
|||
url: '/hrapi/org/base_edit_orgclass_status', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 获取行政组织树 |
|||
*/ |
|||
export function getOrgTreeList(data: searchOrgCont): AxiosPromise<orgInfo[]>{ |
|||
return request({ |
|||
url: '/hrapi/org/govnewthreeing', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 新增行政组织内容 |
|||
*/ |
|||
export function addOrgInfoApi(data: addOrgInfo){ |
|||
return request({ |
|||
url: '/hrapi/org/newaddgovcont', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 编辑行政组织内容 |
|||
*/ |
|||
export function editOrgInfoApi(data: addOrgInfo){ |
|||
return request({ |
|||
url: '/hrapi/org/neweitegovcont', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 编辑行政组织内容 |
|||
*/ |
|||
export function editOrgStatusApi(data: editOrgDel){ |
|||
return request({ |
|||
url: '/hrapi/org/neweitegovstateordel', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 获取班组列表 |
|||
*/ |
|||
export function getTeamListCont(data: searchTeamList): AxiosPromise<orgTeamListCont>{ |
|||
return request({ |
|||
url: '/hrapi/org/teamcontlist', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
@ -0,0 +1,130 @@ |
|||
/** |
|||
* 搜索名称 |
|||
*/ |
|||
export interface searchFormTitle extends PageQuery{ |
|||
name?: string; |
|||
level?: number; |
|||
} |
|||
/** |
|||
* 组织类别列表 |
|||
*/ |
|||
export type orgClassListCont = PageResult<orgClassCont[]> |
|||
/** |
|||
* 组织类别内容 |
|||
*/ |
|||
export interface orgClassCont { |
|||
id?: number; |
|||
kingdeeid?: string |
|||
level?: number; |
|||
name?: string |
|||
state?: number; |
|||
time?: number; |
|||
status?: boolean; |
|||
} |
|||
export interface orgClassInfor { |
|||
id: number; |
|||
kingdeeid?: string |
|||
level?: number; |
|||
name?: string |
|||
state?: number; |
|||
time?: number; |
|||
status?: boolean; |
|||
} |
|||
/** |
|||
* 添加组织类别 |
|||
*/ |
|||
export interface addOrgTypesCont{ |
|||
name?: string; |
|||
level?: number; |
|||
} |
|||
/** |
|||
* 编辑数据 |
|||
*/ |
|||
export interface editOrgTypeInfo{ |
|||
id: string; |
|||
name: string; |
|||
level?: number; |
|||
} |
|||
/** |
|||
* 删除或改变组织类别状态 |
|||
*/ |
|||
export interface editOrgTypeEditOrDel{ |
|||
id:string[]; |
|||
status?: number; |
|||
istrue?: number; |
|||
} |
|||
/** |
|||
* 搜索行政组织 |
|||
*/ |
|||
export interface searchOrgCont{ |
|||
orgid?:number; |
|||
keywords?: string; |
|||
class?: number; |
|||
} |
|||
/** |
|||
* 行政组织内容 |
|||
*/ |
|||
export interface orgInfo{ |
|||
id?:number; |
|||
number?: string, |
|||
name?: string, |
|||
superior?: number, |
|||
organizationtype?: number, |
|||
abbreviation?: string, |
|||
time?: number, |
|||
state?: number, |
|||
wechatorganizationid?: number, |
|||
superiorsun?: string, |
|||
schoole?: number, |
|||
kingdeeid?: string, |
|||
ispower?: number, |
|||
sort?: number, |
|||
typeName?: string, |
|||
level?: number, |
|||
status?: true, |
|||
child?:orgInfo[]; |
|||
} |
|||
/** |
|||
* 行政组织树格式 |
|||
*/ |
|||
export type sendOrgTreeList = PageResult<orgInfo[]> |
|||
/** |
|||
* 编辑行政组织参数 |
|||
*/ |
|||
export interface addOrgInfo{ |
|||
id?:number; |
|||
name?: string, //全称
|
|||
number?: string, //编号
|
|||
superior?: number|string, //上级
|
|||
govclass?: string, //分类
|
|||
abbreviation?: string, //简称
|
|||
wechatid?: string //企业微信对照吗
|
|||
kingdeeid?: string //金蝶对照码
|
|||
} |
|||
/** |
|||
* 删除行政组织 |
|||
*/ |
|||
export interface editOrgDel{ |
|||
id?:number; |
|||
status?: number; |
|||
istrue?: number; |
|||
} |
|||
/** |
|||
* 搜索班组 |
|||
*/ |
|||
export interface searchTeamList extends PageQuery{ |
|||
name?: string; |
|||
} |
|||
/** |
|||
* 班组返回列表 |
|||
*/ |
|||
export type orgTeamListCont = PageResult<teamInfo[]> |
|||
/** |
|||
* 班组内容 |
|||
*/ |
|||
export interface teamInfo{ |
|||
id:number; |
|||
name?: string; |
|||
time?:number; |
|||
state?:number; |
|||
} |
|||
@ -0,0 +1,550 @@ |
|||
/** |
|||
* 用工关系(1:临时工 , 2:编外人员 ;3:实习&实习生;4:试用员工;5:待分配;6:待岗;7:临时调入;8:正式员工;9:长期病假;10:停薪留职;11:退休;12:辞职;13:辞退;14:离职)', |
|||
`company` 入职公司', |
|||
*/ |
|||
export const emptypeOptions =[ |
|||
{ |
|||
id:1, |
|||
name:"临时工" |
|||
}, |
|||
{ |
|||
id:2, |
|||
name:"编外人员" |
|||
}, |
|||
{ |
|||
id:3, |
|||
name:"实习&实习生" |
|||
}, |
|||
{ |
|||
id:4, |
|||
name:"试用员工" |
|||
}, |
|||
{ |
|||
id:5, |
|||
name:"待分配" |
|||
}, |
|||
{ |
|||
id:6, |
|||
name:"待岗" |
|||
}, |
|||
{ |
|||
id:7, |
|||
name:"临时调入" |
|||
}, |
|||
{ |
|||
id:8, |
|||
name:"正式员工" |
|||
}, |
|||
{ |
|||
id:9, |
|||
name:"长期病假" |
|||
}, |
|||
{ |
|||
id:10, |
|||
name:"停薪留职" |
|||
} |
|||
]; |
|||
|
|||
export const emptypeOptionsFalse = [ |
|||
{ |
|||
id:11, |
|||
name:"退休" |
|||
}, |
|||
{ |
|||
id:12, |
|||
name:"辞职" |
|||
}, |
|||
{ |
|||
id:13, |
|||
name:"辞退" |
|||
}, |
|||
{ |
|||
id:14, |
|||
name:"离职" |
|||
} |
|||
]; |
|||
/** |
|||
* 性别 |
|||
*/ |
|||
export const userGender = [ |
|||
{ |
|||
id:1, |
|||
name:"男" |
|||
}, |
|||
{ |
|||
id:2, |
|||
name:"女" |
|||
}, |
|||
{ |
|||
id:3, |
|||
name:"中性" |
|||
} |
|||
]; |
|||
export const healthStates = [ |
|||
{ |
|||
id:1, |
|||
name:"良好" |
|||
}, |
|||
{ |
|||
id:2, |
|||
name:"一般" |
|||
}, |
|||
{ |
|||
id:3, |
|||
name:"较弱" |
|||
}, |
|||
{ |
|||
id:4, |
|||
name:"有生理缺陷" |
|||
}, |
|||
{ |
|||
id:5, |
|||
name:"残废" |
|||
} |
|||
]; |
|||
/** |
|||
* 婚姻状况 |
|||
*/ |
|||
export const userMaritalstatus = [ |
|||
{ |
|||
id:1, |
|||
name:"未婚" |
|||
}, |
|||
{ |
|||
id:2, |
|||
name:"已婚" |
|||
}, |
|||
{ |
|||
id:3, |
|||
name:"丧偶" |
|||
}, |
|||
{ |
|||
id:4, |
|||
name:"离异" |
|||
} |
|||
]; |
|||
/** |
|||
* 政治面貌 |
|||
*/ |
|||
export const userPoliticaloutloo =[ |
|||
{ |
|||
id:1, |
|||
name:"群众" |
|||
}, |
|||
{ |
|||
id:2, |
|||
name:"无党派" |
|||
}, |
|||
{ |
|||
id:3, |
|||
name:"台盟会员" |
|||
}, |
|||
{ |
|||
id:4, |
|||
name:"九三社员" |
|||
}, |
|||
{ |
|||
id:5, |
|||
name:"致公党员" |
|||
}, |
|||
{ |
|||
id:6, |
|||
name:"农工党员" |
|||
}, |
|||
{ |
|||
id:7, |
|||
name:"民进会员" |
|||
}, |
|||
{ |
|||
id:8, |
|||
name:"民建会员" |
|||
}, |
|||
{ |
|||
id:9, |
|||
name:"民盟盟员" |
|||
}, |
|||
{ |
|||
id:10, |
|||
name:"民革会员" |
|||
}, |
|||
{ |
|||
id:11, |
|||
name:"共青团员" |
|||
}, |
|||
{ |
|||
id:12, |
|||
name:"预备党员" |
|||
}, |
|||
{ |
|||
id:13, |
|||
name:"中共党员" |
|||
} |
|||
]; |
|||
/** |
|||
* 星座 |
|||
*/ |
|||
export const userConstellationing =[ |
|||
{ |
|||
id:1, |
|||
name:"白羊座" |
|||
}, |
|||
{ |
|||
id:2, |
|||
name:"金牛座" |
|||
}, |
|||
{ |
|||
id:3, |
|||
name:"双子座" |
|||
}, |
|||
{ |
|||
id:4, |
|||
name:"巨蟹座" |
|||
}, |
|||
{ |
|||
id:5, |
|||
name:"狮子座" |
|||
}, |
|||
{ |
|||
id:6, |
|||
name:"处女座" |
|||
}, |
|||
{ |
|||
id:7, |
|||
name:"天枰座" |
|||
}, |
|||
{ |
|||
id:8, |
|||
name:"天蝎座" |
|||
}, |
|||
{ |
|||
id:9, |
|||
name:"射手座" |
|||
}, |
|||
{ |
|||
id:10, |
|||
name:"摩羯座" |
|||
}, |
|||
{ |
|||
id:11, |
|||
name:"水瓶座" |
|||
}, |
|||
{ |
|||
id:12, |
|||
name:"双鱼座" |
|||
} |
|||
]; |
|||
/** |
|||
* 雇佣类型 |
|||
*/ |
|||
export const userHireclass = [ |
|||
{ |
|||
id:1, |
|||
name:"雇佣入职" |
|||
}, |
|||
{ |
|||
id:2, |
|||
name:"再入职" |
|||
} |
|||
]; |
|||
/** |
|||
* 用工关系(1:临时工 , 2:编外人员 ;3:实习&实习生;4:试用员工;5:待分配;6:待岗;7:临时调入;8:正式员工;9:长期病假;10:停薪留职;11:退休;12:辞职;13:辞退;14:离职)', |
|||
`company` 入职公司', |
|||
*/ |
|||
export const emptypeOptionsAll =[ |
|||
{ |
|||
id:1, |
|||
name:"临时工" |
|||
}, |
|||
{ |
|||
id:2, |
|||
name:"编外人员" |
|||
}, |
|||
{ |
|||
id:3, |
|||
name:"实习&实习生" |
|||
}, |
|||
{ |
|||
id:4, |
|||
name:"试用员工" |
|||
}, |
|||
{ |
|||
id:5, |
|||
name:"待分配" |
|||
}, |
|||
{ |
|||
id:6, |
|||
name:"待岗" |
|||
}, |
|||
{ |
|||
id:7, |
|||
name:"临时调入" |
|||
}, |
|||
{ |
|||
id:8, |
|||
name:"正式员工" |
|||
}, |
|||
{ |
|||
id:9, |
|||
name:"长期病假" |
|||
}, |
|||
{ |
|||
id:10, |
|||
name:"停薪留职" |
|||
}, |
|||
{ |
|||
id:11, |
|||
name:"退休" |
|||
}, |
|||
{ |
|||
id:12, |
|||
name:"辞职" |
|||
}, |
|||
{ |
|||
id:13, |
|||
name:"辞退" |
|||
}, |
|||
{ |
|||
id:14, |
|||
name:"离职" |
|||
} |
|||
]; |
|||
/** |
|||
* 是否 |
|||
*/ |
|||
export const yesOrno = [ |
|||
{ |
|||
id:1, |
|||
name:"是" |
|||
}, |
|||
{ |
|||
id:2, |
|||
name:"否" |
|||
} |
|||
]; |
|||
/** |
|||
* 学历 |
|||
*/ |
|||
export const education =[ |
|||
{ |
|||
id:1, |
|||
name:'初中及以下' |
|||
}, |
|||
{ |
|||
id:2, |
|||
name:'中专' |
|||
}, |
|||
{ |
|||
id:3, |
|||
name:'高中' |
|||
}, |
|||
{ |
|||
id:4, |
|||
name:'中技' |
|||
}, |
|||
{ |
|||
id:5, |
|||
name:'高技' |
|||
}, |
|||
{ |
|||
id:6, |
|||
name:'函数专科' |
|||
}, |
|||
{ |
|||
id:7, |
|||
name:'大学专科' |
|||
}, |
|||
{ |
|||
id:8, |
|||
name:'函数本科' |
|||
}, |
|||
{ |
|||
id:9, |
|||
name:'大学本科' |
|||
}, |
|||
{ |
|||
id:10, |
|||
name:'硕士研究生' |
|||
}, |
|||
{ |
|||
id:11, |
|||
name:'博士研究生' |
|||
}, |
|||
{ |
|||
id:12, |
|||
name:'专家、教授' |
|||
}, |
|||
]; |
|||
//入职等级
|
|||
export const positiongrade = [ |
|||
{ |
|||
id:10000, |
|||
name:'无' |
|||
}, |
|||
{ |
|||
id:1, |
|||
name:'一级' |
|||
}, |
|||
{ |
|||
id:2, |
|||
name:'二级' |
|||
}, |
|||
{ |
|||
id:3, |
|||
name:'三级' |
|||
} |
|||
]; |
|||
//学位
|
|||
export const academicDegree = [ |
|||
{ |
|||
id:1, |
|||
name:'无' |
|||
}, |
|||
{ |
|||
id:2, |
|||
name:'学士' |
|||
}, |
|||
{ |
|||
id:3, |
|||
name:'硕士' |
|||
}, |
|||
{ |
|||
id:4, |
|||
name:'博士' |
|||
}, |
|||
{ |
|||
id:5, |
|||
name:'教育学学位' |
|||
} |
|||
]; |
|||
//主职与兼职
|
|||
export const mainAndPartTimeJobs = [ |
|||
{ |
|||
id:1, |
|||
name:'主职' |
|||
}, |
|||
{ |
|||
id:2, |
|||
name:'兼职' |
|||
} |
|||
]; |
|||
// 职位变动类型
|
|||
export const postChangeType=[ |
|||
{ |
|||
id:1, |
|||
name:'预入职' |
|||
}, |
|||
{ |
|||
id:2, |
|||
name:'雇佣入职' |
|||
}, |
|||
{ |
|||
id:3, |
|||
name:'转正' |
|||
}, |
|||
{ |
|||
id:4, |
|||
name:'晋升' |
|||
}, |
|||
{ |
|||
id:5, |
|||
name:'降级' |
|||
}, |
|||
{ |
|||
id:6, |
|||
name:'职等调整' |
|||
}, |
|||
{ |
|||
id:7, |
|||
name:'调动调入' |
|||
}, |
|||
{ |
|||
id:8, |
|||
name:'跨公司调动调入' |
|||
}, |
|||
{ |
|||
id:9, |
|||
name:'借调' |
|||
}, |
|||
{ |
|||
id:10, |
|||
name:'平调' |
|||
}, |
|||
{ |
|||
id:11, |
|||
name:'兼职' |
|||
}, |
|||
{ |
|||
id:12, |
|||
name:'预离职' |
|||
}, |
|||
{ |
|||
id:13, |
|||
name:'离职' |
|||
}, |
|||
{ |
|||
id:14, |
|||
name:'退休' |
|||
}, |
|||
{ |
|||
id:15, |
|||
name:'返聘' |
|||
}, |
|||
{ |
|||
id:16, |
|||
name:'员工初始化' |
|||
}, |
|||
{ |
|||
id:17, |
|||
name:'擅自离职' |
|||
}, |
|||
{ |
|||
id:18, |
|||
name:'即辞即走' |
|||
}, |
|||
{ |
|||
id:19, |
|||
name:'组织调整' |
|||
}, |
|||
{ |
|||
id:20, |
|||
name:'辞退' |
|||
}, |
|||
{ |
|||
id:21, |
|||
name:'跨公司借调调出' |
|||
}, |
|||
{ |
|||
id:22, |
|||
name:'跨公司借调调入' |
|||
}, |
|||
{ |
|||
id:23, |
|||
name:'培训期间离职' |
|||
}, |
|||
{ |
|||
id:24, |
|||
name:'合同到期' |
|||
}, |
|||
{ |
|||
id:25, |
|||
name:'实习结束' |
|||
} |
|||
|
|||
]; |
|||
/** |
|||
* 学历性质 |
|||
*/ |
|||
export const xuliClass = [ |
|||
{ |
|||
id:1, |
|||
name:"普通" |
|||
}, |
|||
{ |
|||
id:2, |
|||
name:"第一学历" |
|||
}, |
|||
{ |
|||
id:3, |
|||
name:"最高学历" |
|||
} |
|||
] |
|||
@ -0,0 +1,346 @@ |
|||
import request from '@/utils/request'; |
|||
import { AxiosPromise } from 'axios'; |
|||
import { |
|||
archivesList, |
|||
searchCriteriaForPeople, |
|||
contId, |
|||
editPwdCont, |
|||
contIdes, |
|||
userManOrFucont, |
|||
emergencyContactAdd, |
|||
emergencyContactInfo, |
|||
delJjlxr, |
|||
doubleWorkCont, |
|||
familyMembersContAdd, |
|||
familyMembersContEdit, |
|||
addEducExpInfoing, |
|||
editEducExpInfoing, |
|||
editGroupExternalWorkCont, |
|||
addGroupExternalWorkCont, |
|||
groupInnerWorkCont, |
|||
editUserIcon, |
|||
editUserAboutOrg, |
|||
teamClassQueay |
|||
} from './type'; |
|||
/** |
|||
* 获取人员档案 |
|||
*/ |
|||
export function getArchivesListPage(data?: searchCriteriaForPeople): AxiosPromise<archivesList> { |
|||
return request({ |
|||
url: '/hrapi/staff/archiveslistcont', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 获取人员行政组织关系 |
|||
*/ |
|||
export function getPeopleAboutOrg(data?: contId) { |
|||
return request({ |
|||
url: '/hrapi/staff/useraboutorglist', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 获取紧急联系人 |
|||
*/ |
|||
export function getEmergencyContact(data?: contId) { |
|||
return request({ |
|||
url: '/hrapi/staff/emergencycontactlist', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 获双职工 |
|||
*/ |
|||
export function getWorkingCouple(data?: contId) { |
|||
return request({ |
|||
url: '/hrapi/staff/doubleworkerlist', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 获双家庭成员 |
|||
*/ |
|||
export function getFamilyMembers(data?: contId) { |
|||
return request({ |
|||
url: '/hrapi/staff/familymemberslist', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 获取教育经历 |
|||
*/ |
|||
export function getEducationalExperience(data?: contId) { |
|||
return request({ |
|||
url: '/hrapi/staff/personneleducationlist', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 获取集团内部工作经历 |
|||
*/ |
|||
export function getInnerWork(data?: contId) { |
|||
return request({ |
|||
url: '/hrapi/staff/getinsideworkhistorylist', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 获取集团内部工作经历 |
|||
*/ |
|||
export function getoOutsideWork(data?: contId) { |
|||
return request({ |
|||
url: '/hrapi/staff/workhistorylist', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 获取集团内部工作经历 |
|||
*/ |
|||
export function editUserPwd(data?: editPwdCont) { |
|||
return request({ |
|||
url: '/hrapi/staff/editpassword', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 获取个人相信信息 |
|||
*/ |
|||
export function getMyInfoing(data?: contIdes) { |
|||
return request({ |
|||
url: '/hrapi/staff/get_archives_cont', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 修改个人头像 |
|||
*/ |
|||
export function editMyInfoIcon(data: editUserIcon) { |
|||
return request({ |
|||
url: '/hrapi/staff/edit_people_icon', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 编辑人员行政组织关系 |
|||
*/ |
|||
export function editMyOrgUndertake(data: editUserAboutOrg) { |
|||
return request({ |
|||
url: '/hrapi/staff/edit_man_org_cont', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 编辑个人相信信息 |
|||
*/ |
|||
export function editMyInfoing(data?: userManOrFucont) { |
|||
return request({ |
|||
url: '/hrapi/staff/edit_manmain_cont', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 添加紧急联系人 |
|||
*/ |
|||
export function addEmergencyContactInfo(data?: emergencyContactAdd) { |
|||
return request({ |
|||
url: '/hrapi/staff/addemercycall', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 编辑紧急联系人 |
|||
*/ |
|||
export function editEmergencyContactInfo(data?: emergencyContactInfo) { |
|||
return request({ |
|||
url: '/hrapi/staff/editemercycall', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 编辑紧急联系人状态 |
|||
*/ |
|||
export function editEmergencyContactState(data?: delJjlxr) { |
|||
return request({ |
|||
url: '/hrapi/staff/editemercycallstate', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 添加双职工 |
|||
*/ |
|||
export function addDoubleWorkCont(data?: doubleWorkCont) { |
|||
return request({ |
|||
url: '/hrapi/staff/adddoubleworker', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 编辑双职工内容 |
|||
*/ |
|||
export function editDoubleWorkCont(data?: doubleWorkCont) { |
|||
return request({ |
|||
url: '/hrapi/staff/eidtdoubleworker', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 编辑双职工状态 |
|||
*/ |
|||
export function editDoubleWorkState(data?: delJjlxr) { |
|||
return request({ |
|||
url: '/hrapi/staff/eidtdoubleworkerstate', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 添加家庭成员 |
|||
*/ |
|||
export function addFamilyMembersCont(data?: familyMembersContAdd) { |
|||
return request({ |
|||
url: '/hrapi/staff/addfamilymembers', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 编辑家庭成员 |
|||
*/ |
|||
export function editFamilyMembersCont(data?: familyMembersContEdit) { |
|||
return request({ |
|||
url: '/hrapi/staff/editfamilymembers', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 编辑家庭成员状态 |
|||
*/ |
|||
export function editFamilyMembersContState(data?: delJjlxr) { |
|||
return request({ |
|||
url: '/hrapi/staff/editfamilymemberssatte', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 添加教育经历 |
|||
*/ |
|||
export function addEducExpCont(data?: addEducExpInfoing) { |
|||
return request({ |
|||
url: '/hrapi/staff/addeducationalexperience', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 编辑教育经历 |
|||
*/ |
|||
export function editEducExpCont(data?: editEducExpInfoing) { |
|||
return request({ |
|||
url: '/hrapi/staff/editeducationalexperience', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 编辑教育经历状态 |
|||
*/ |
|||
export function editEducExpState(data?: delJjlxr) { |
|||
return request({ |
|||
url: '/hrapi/staff/editeduexpstate', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 添加集团外部工作经历 |
|||
*/ |
|||
export function addGroupExternalWork(data?: addGroupExternalWorkCont) { |
|||
return request({ |
|||
url: '/hrapi/staff/addworkhistorycont', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 编辑集团外部工作经历 |
|||
*/ |
|||
export function editGroupExternalWork(data?: editGroupExternalWorkCont) { |
|||
return request({ |
|||
url: '/hrapi/staff/editworkhistorycont', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 编辑集团外部工作经历 |
|||
*/ |
|||
export function editGroupExternalWorkState(data?: delJjlxr) { |
|||
return request({ |
|||
url: '/hrapi/staff/editworkhistorystate', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 添加集团内部工作经历 |
|||
*/ |
|||
export function addGroupInnerWork(data?: groupInnerWorkCont) { |
|||
return request({ |
|||
url: '/hrapi/staff/addinsidehistory', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 编辑集团内部工作经历 |
|||
*/ |
|||
export function editGroupInnerWork(data?: groupInnerWorkCont) { |
|||
return request({ |
|||
url: '/hrapi/staff/eidtinsidehistoryworkcont', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 编辑集团内部工作经历 |
|||
*/ |
|||
export function editGroupInnerWorkState(data?: delJjlxr) { |
|||
return request({ |
|||
url: '/hrapi/staff/editordelinsideworkhistorystate', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 获取工作时间列表 |
|||
*/ |
|||
export function haveTeamTimeList(data: teamClassQueay) { |
|||
return request({ |
|||
url: '/hrapi/rostering/team_time_list', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
@ -0,0 +1,544 @@ |
|||
/** |
|||
* 搜索条件 |
|||
*/ |
|||
export interface searchCriteriaForPeople extends PageQuery{ |
|||
keywords?:string; //关键字
|
|||
adminorg?:number; //行政组织
|
|||
emptype?:number[]; //用工关系
|
|||
} |
|||
/** |
|||
* 人员基本信息 |
|||
*/ |
|||
export interface archivesCont{ |
|||
id?:number //2909;
|
|||
number?:string //"201218";
|
|||
name?:string //"苏振";
|
|||
icon?:string //"";
|
|||
hireclass?:number //1;
|
|||
emptype?:number //8;
|
|||
company?:number //296;
|
|||
maindeparment?:number //32;
|
|||
sunmaindeparment?:number //0;
|
|||
deparment?:string //"";
|
|||
adminorg?:number //32;
|
|||
teamid?:number//0;
|
|||
position?:number //117;
|
|||
jobclass?:number //3;
|
|||
jobid?:number //25;
|
|||
jobleve?:number //0;
|
|||
time?:number //1657002602;
|
|||
eitetime?:number //1657002602;
|
|||
wechat?:string //"";
|
|||
workwechat?:string //"";
|
|||
state?:number //1;
|
|||
key?:number //4929995352838144;
|
|||
isadmin?:number //0;
|
|||
password?:string //"8d135342fcc70ab05332f560031a6112";
|
|||
role?:string //"";
|
|||
idcardno?:string //"370481197603084270";
|
|||
passportno?:string //"";
|
|||
globalroaming?:string //"";
|
|||
mobilephone?:string //"15020711996";
|
|||
email?:string //"";
|
|||
gender?:number //1;
|
|||
birthday?:number //195062400;
|
|||
myfolk?:string //"汉族";
|
|||
nativeplace?:string //"济宁高新区恒信公馆";
|
|||
idcardstartdate?:number //1173801600;
|
|||
idcardenddate?:number //1804953600;
|
|||
idcardaddress?:string //"";
|
|||
idcardIssued?:string //"";
|
|||
health?:number //1;
|
|||
maritalstatus?:number //2;
|
|||
internaltelephone?:string //"";
|
|||
currentresidence?:string //"滕州市西岗镇柴里矿生活去10排8号";
|
|||
constellationing?:number //12;
|
|||
isdoubleworker?:number //2;
|
|||
isveterans?:number //2;
|
|||
veteransnumber?:string //"";
|
|||
jobstartdate?:number //825609600;
|
|||
entrydate?:number //0;
|
|||
probationperiod:number //0;
|
|||
planformaldate?:number //0;
|
|||
politicaloutlook?:number //1;
|
|||
nameusedbefore?:string //"";
|
|||
ruleid?:number //0;
|
|||
iconphoto?:string //"";
|
|||
responsibledepartment?:string //"";
|
|||
responsibledepartmentjson?:string //"";
|
|||
companyname?:string //"山东荣信集团有限公司";
|
|||
maindeparmentname?:string //"甲醇分厂";
|
|||
sunmaindeparmentname?:string //"";
|
|||
workpostname?:string //"";
|
|||
positionname?:string //"副厂长";
|
|||
keystr?:string //"4929995352838144";
|
|||
teamname?:string //"";
|
|||
personincharge?:number // 2
|
|||
} |
|||
/** |
|||
* 员工列表 |
|||
*/ |
|||
export type archivesList = PageResult<archivesCont[]> |
|||
/** |
|||
* id |
|||
*/ |
|||
export interface contId { |
|||
id:string |
|||
} |
|||
/** |
|||
* 人员与行政组织关系 |
|||
*/ |
|||
export interface peopleAboutOrg{ |
|||
id?:number |
|||
key?:number |
|||
group?:number |
|||
company?:number |
|||
department?:number |
|||
workshop?:number |
|||
workshopsection?:number |
|||
position?:number |
|||
gradepositions?:number |
|||
starttime?:number |
|||
endtime?:number |
|||
team?:number |
|||
changetype?:number |
|||
time?:number |
|||
state?:number |
|||
assigntype?:number |
|||
jobid?:number |
|||
orgallname?:string |
|||
postname?:string |
|||
starttimeing?:string |
|||
endtimeing?:string |
|||
} |
|||
/** |
|||
* 人员与行政组织关系列表 |
|||
*/ |
|||
export type peopleAboutOrgList = PageResult<peopleAboutOrg[]> |
|||
/** |
|||
* 紧急联系人 |
|||
*/ |
|||
export interface emergencyContact{ |
|||
id:number |
|||
number?:string |
|||
name?:string |
|||
relationship?:string |
|||
tel?:string |
|||
time?:number |
|||
state?:number |
|||
key?:number |
|||
} |
|||
/** |
|||
* 双职工 |
|||
*/ |
|||
export interface shuangzhigong{ |
|||
id:number |
|||
number?:string |
|||
name?:string |
|||
company?:string |
|||
department?:string |
|||
position?:string |
|||
tel?:string |
|||
time?:number |
|||
state?:number |
|||
key?:number |
|||
} |
|||
/** |
|||
* 家庭成员 |
|||
*/ |
|||
export interface jiatingchengyuan{ |
|||
id:number |
|||
number?:string |
|||
relationship?:string |
|||
name?:string |
|||
company?:string |
|||
deparment?:string |
|||
postnme?:string |
|||
tel?:string |
|||
politicaloutlook?:number |
|||
time?:number |
|||
key?:number |
|||
state?:number |
|||
politicaloutlookcn?:string |
|||
} |
|||
/** |
|||
* 教育经历 |
|||
*/ |
|||
export interface jiaoyujingli{ |
|||
id:number |
|||
number?:string |
|||
education?:number |
|||
graduationschool?:string |
|||
subject?:string |
|||
admissiontime?:number |
|||
graduationtime?:number |
|||
time?:number |
|||
level?:number |
|||
academicdegree?:number |
|||
key?:number |
|||
state?:number |
|||
academicdegreecn?:string |
|||
educationcn?:string |
|||
admissiontimestr?:string |
|||
graduationtimestr?:string |
|||
} |
|||
/** |
|||
* 集团内部工作 |
|||
*/ |
|||
export interface innerWorkCont{ |
|||
id:string |
|||
starttimg?:string |
|||
endtimg?:string |
|||
allorgname?:string |
|||
orgid?:number |
|||
postid?:number |
|||
postname?:string |
|||
postnlevel?:number |
|||
teamid?:number |
|||
teamname?:string |
|||
changetype?:number |
|||
changetypename?:string |
|||
assigntype?:number |
|||
superiorpostname?:string |
|||
superiormanname?:null |
|||
subordinatescount?:number |
|||
jobid?:number |
|||
jobname?:string |
|||
} |
|||
/** |
|||
* 集团外部工作经历 |
|||
*/ |
|||
export interface outsideWork{ |
|||
id:number |
|||
number:string |
|||
key:number |
|||
company:string |
|||
deparment:string |
|||
job:string |
|||
entrytime:number |
|||
leavedate:number |
|||
witness:string |
|||
witnesstel:string |
|||
remarks:string |
|||
time:number |
|||
state:number |
|||
starttimg:string |
|||
endtimg:string |
|||
} |
|||
/** |
|||
* 修改密码 |
|||
*/ |
|||
export interface editPwdCont extends contId{ |
|||
pwd:string |
|||
pwdes:string |
|||
} |
|||
|
|||
/** |
|||
* 获取个人信息详情 |
|||
*/ |
|||
export interface myinfostruct{ |
|||
id?:number //78,
|
|||
number?:string //"300450",
|
|||
name?:string //"秦东",
|
|||
icon?:string //"https://wework.qpic.cn/wwhead/duc2TvpEgSTPk74IwG7BswsATgrfz6BGVPpX5QU5uvaCiaxk3ReIlRhdUwIeiaBBazzCLiaHI8VuA4/0",
|
|||
hireclass?:number //1,
|
|||
emptype?:number //8,
|
|||
company?:number //309,
|
|||
maindeparment?:number //102,
|
|||
sunmaindeparment?:number //272,
|
|||
deparment?:string //"",
|
|||
adminorg?:number //272,
|
|||
teamid?:number //1,
|
|||
position?:number //2184,
|
|||
jobclass?:number //5,
|
|||
jobid?:number //36,
|
|||
jobleve?:number //3,
|
|||
time?:number //1656984567,
|
|||
eitetime?:number //1671160648,
|
|||
wechat?:string //"",
|
|||
workwechat?:string //"KaiXinGuo",
|
|||
state?:number //1,
|
|||
key?:number //15993815826844528,
|
|||
isadmin?:number //4,
|
|||
password?:string //"ecffe8715d2d3c2743bab6abc90e1331",
|
|||
role?:string //"1",
|
|||
idcardno?:string //"370921198810151515",
|
|||
passportno?:string //"",
|
|||
globalroaming?:string //"",
|
|||
mobilephone?:string //"15069130853",
|
|||
email?:string //"",
|
|||
gender?:number //1,
|
|||
birthday?:number //592848000,
|
|||
myfolk?:string //"汉族",
|
|||
nativeplace?:string //"山东省宁阳县华丰镇白土厂村15号",
|
|||
idcardstartdate?:number //0,
|
|||
idcardenddate?:number //0,
|
|||
idcardaddress?: string//"",
|
|||
idcardIssued?:string //"",
|
|||
health?:number //2,
|
|||
maritalstatus?:number //2,
|
|||
internaltelephone?:string //"",
|
|||
currentresidence?:string //"山东省宁阳县华丰镇矿区花园小区1号楼1单元302室",
|
|||
constellationing?:number //1,
|
|||
isdoubleworker?:number //2,
|
|||
isveterans?:number //2,
|
|||
veteransnumber?:string //"",
|
|||
jobstartdate?:number //0,
|
|||
entrydate?:number //0,
|
|||
probationperiod:number //0,
|
|||
planformaldate?:number //0,
|
|||
politicaloutlook?:number //1,
|
|||
nameusedbefore?:string //"",
|
|||
iconphoto?:string //"data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAB4AGQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiuK8afE3RfBhEM+65vCM+RERkfU9q8s1L9ojUpfMXTtLtoBkbTIS5Az+A9aAPoiivnSy/aJ1aIQrdaTbTgMfMcMVZhnjHYHHtXVJ+0LoTzqg0m9CFsFyy8DjnH50WA9horN0fX9L161W50y9huI2GfkbkfUda0qACiiigAooooAKKKKACvNfi94/n8IaRFaad5f268DDeSCYk6E4znPPB6cGvSq+N/G+pX3iXxxfzzyO7GYxxgrjYgOFAHYYoA5ue5utQuGklkeWRjyTyTWtp/g/Vb6MSCHYh6F+K6/QfDUNqql0DMeQxFd9Y28SxqCOg5riqYuztE76eDuryPJofhvrMr4xGBjPLVU1TwPrWmAu1uZYx1aPkV77FEkZGBjj0qd7VHjJOMnsalYqZTwsD578KeI77wrrkN/b8SRHlWHUHqK+uPDmvWviXQ7bVLQ/u5l5U9VYdRXhPj7wnFc6c19bRKlzB8x2jG9e4rq/gLqvm6Pf6UyyboHEoJOVw3B7cHj1NddKqqkbo46tJ03Y9gooorQyCiiigAooooARlDKVPQjBr5BuNOksfGd/ZlQGguJFYAYxhiK+v68I+IPh5NJ+Icmp7D9m1FFkzjgOMhh/I/jUVHaLNKSvNGfbXq+XFFDH5jg9DwK37N7yKbzJ7B44iP9YrBl/H0rmpNAu7jUVnspmjhOPuqCf1rq9Pt7rT7SQ3OpTz5J2q4TGMcDgfrXm8sbHqXka0d1HcQwsqEDndx6VKNQjuUEcNtI7DrjA/nVbQZPO0l4jgsSV3d6zIdH1a01PdFqckaDO5PKVt47cnkU4aikjWmiS8tpYnjIyCCrDmsr4K2Mtvq2vuMeRGwh6dWDHv8AQH8xW7bi5SLF08byAfeRSufwya3PAelHTdHupGUA3d5LOP8AdLYH6DP4104bRuxyYnZHU0UUV1nGFFFFABRRRQAV598WkB0GxkI+7dYz6ZU/4V6DXMfEGxS+8FagGdEaBPPRnIABXnGT6jI/Gk1dFRdpJnEaA6yW6bSOnftTPFp+xadCsQIeeUIZOy9//rfjWJ4Xvz5WD9a19V1xY0XzxhG+VQR1NeW0k7WPYTbsyx4VvbRdHbdMdyNhmxkA5xW+syysY5gN6n5Hx1FYGj6qsdoqi2mWIdcQnn3rZe7tryJfKcM6Y5HUZ7GrtbUmSd9S7MuWVVHLcV2kUawxJGgAVQAAK47SUa51GBOysGb8Oa7SurD7NnDinqkFFFFdByhRRRQAUVxHi74oaL4R1A6fNFcXV4FDPHCBhM9AxJ6kc8Zrz7Xvj1fywGLRNKjtXPWa4fzCPouAPzzVKDZLkke8V4n8cPHWmS6B/wAI3pt3Hc3M8qtcmF9yxopyFJHGS2OO2Oe1eXan4/8AFWs20i3mt3jRygrJGj7EI9Nq4GKwYrYSISRnNWqbuS6iOl8IeINsqRTPyDg5r0GWKDV5FBfKg5BU9DXjCWksM6ywN8wPavR/D8d9NBHcRo+GGC0RHOPVT3+lcOJw7i+Y9DC4hSXKeiafZFAsf2mQADocY/lU17tgdW+UMBjPqKyrCK8chSbgkdyuKzfG2pLpFglmj7tRvPlUA58tP4nJ+nT3rmUJTaijpnVUU5M1tE+Iul6VrFzFeRSNBsCrPGN2GzyMenTn2rvtK8a+HNaYJZavbNIeBE7bHJ/3WwT+FfNKjaKy5gY7n5eAen+Fe59VjCKSPB+tSnNtn2RRXyhpfi7X9ElX7Fql1HH2TeWX8VPBr0XQvjVdwsket2aXEXea3G1x7leh/Ss5UJLY0VaL3PaqKxdN8W6Dq1kl3a6pbeW3aSQIwPoQcGisrM05kfIs11dX80l1dzyTzync8srFmY+5PJpChwM0sC/IvsKsrGGBY/QV2qOhyOWpmonzTJjjINX7H/j3Q+oNQop+1Sj2FSQsLe2w5IKgnCjtmiKswbuiyAI8kDJNbHh3xNd6BeCSIGWFiBNAeVcf0Poa57z2kl8qNQMrnc57UtqUcEku/ue/07CiVpaCjeOqPoOPxT4e/sX+1fNxEB8y7TuVv7pA715JretSa7qz6i/yRE7YkIxtXt9TVDw/fxWupRSXFrHcWzHDQOThsMP16DPoTTL+2A1GZmVkyxGw9vQYrKlRUamhtWrOULMeD19KozkNNjsT+VKAUkZQxA9M8Uq88jrnqa7HqcaViAf6xoz+GakUlVKn8aimB87d6c1YADrkelSkU2S29w8MWwdM0VGvA60VauiXYu+FfD48QySILkQBV4YrnJOT0z6A1rzeCryGKIrPAyyIXG7K44Bx068iiivmcXmFejiXCL006eR6EKMJRuzOTwlfC5EjtAEc7PkYsQOTnp/+skVe1HwlCunyPDLIJo0LfvMFXwCSOBx90469KKKKWPrVEm2enh8DRlRnOS1V/wAFc4ooyQq+MvCSpHqP/wBVWUdTHmMDDDOR3oor30eEy1p8e61RyM7ZSD9Dx/hXUeIbXTLdNPFnNI92Yc3iuDhX9uOnX8AKKKqK99GcpPlaOXClpnPvToxgj0JxRRWxDGSICTz14ptucqVxlh70UVL3GtibyyaKKKsm5//Z",
|
|||
responsibledepartment?:string //"",
|
|||
responsibledepartmentjson?:string //"",
|
|||
birthdaytime?:string //"1988-10-15",
|
|||
idcardstarttimedata?:string //"",
|
|||
idcardendtimedata?:string //"",
|
|||
entrydatetime:string //"",
|
|||
planformaldatetime?:string //"",
|
|||
doubleworkerlist?:any //null,
|
|||
educationalexperience?:any //null,
|
|||
emergencycontact?:any //null,
|
|||
memberoffamily?:any //null,
|
|||
workhistorylist?:any //null,
|
|||
groupworkhistorylist?:any //null,
|
|||
idstr?:string //"78",
|
|||
companyname?:string //"山东恒信高科能源有限公司",
|
|||
maindeparmentname?:string //"企管部",
|
|||
adminorgname?:string //"",
|
|||
positionname?:string //"开发主管",
|
|||
jobclassname?:string //"基层管理",
|
|||
jobidname?:string //"主管",
|
|||
politicaloutlookname?:string //"群众",
|
|||
jobstartdatestr?:string //"",
|
|||
entrydatestr?:string //"",
|
|||
personincharge?:number //2,
|
|||
sunmaindeparmentname?:string //"企管",
|
|||
workpostname?:string //"",
|
|||
teamname?:string //"长白班",
|
|||
allorglist?:number[][] //[309,102,272],
|
|||
ruleid?:string //"0",
|
|||
rulename?:string //"",
|
|||
orgreslist?:any //null
|
|||
keystr?:string //
|
|||
} |
|||
/** |
|||
* 多重Id |
|||
*/ |
|||
export interface contIdes { |
|||
id:number; |
|||
idstr:string; |
|||
} |
|||
/** |
|||
* 提交修改人员主副信息 |
|||
*/ |
|||
export interface userManOrFucont{ |
|||
id?: string |
|||
name?: string |
|||
mobilephone?: string |
|||
idcardno?: string |
|||
entrydatetime?: string |
|||
probationperiod?: number |
|||
confirmationdate?: string |
|||
jobstartdatestr?: string |
|||
nameusedbefore?: string |
|||
gender?: number |
|||
myfolk?: string |
|||
politicaloutlook?: number |
|||
health?: number |
|||
birthdaytime?: string |
|||
idcardstarttimedata?: string |
|||
idcardendtimedata?: string |
|||
idcardaddress?: string |
|||
idcardIssued?: string |
|||
currentresidence?: string |
|||
nativeplace?: string |
|||
email?: string |
|||
internaltelephone?: string |
|||
hireclass?: number |
|||
emptype?: number |
|||
isveterans?: number |
|||
veteransnumber?: string |
|||
passportno?: string |
|||
globalroaming?: string |
|||
wechat?: string |
|||
workwechat?: string |
|||
constellationing?: number |
|||
maritalstatus?: number |
|||
} |
|||
/** |
|||
* 编辑紧急联系人 |
|||
*/ |
|||
export interface emergencyContactInfo extends contId{ |
|||
name?: string |
|||
relationship?: string |
|||
mobilephone?: string |
|||
} |
|||
/** |
|||
* 添加紧急联系人 |
|||
*/ |
|||
export interface emergencyContactAdd extends contId{ |
|||
list?:emergencyContactCont[] |
|||
} |
|||
export interface emergencyContactCont{ |
|||
name?: string |
|||
relationship?: string |
|||
mobilephone?: string |
|||
} |
|||
/** |
|||
* 删除紧急联系人 |
|||
*/ |
|||
export interface delJjlxr extends contId{ |
|||
state:number; |
|||
isdel:number; |
|||
} |
|||
/** |
|||
* 双职工 |
|||
*/ |
|||
export interface doubleWorkCont extends contId{ |
|||
name?:string |
|||
company?:string |
|||
department?:string |
|||
position?:string |
|||
mobilephone?:string |
|||
} |
|||
/** |
|||
* 家庭成员 |
|||
*/ |
|||
export interface familyMembersCont{ |
|||
id?:string |
|||
name?: string |
|||
relationship?: string |
|||
mobilephone?: string |
|||
company?: string |
|||
department?:string |
|||
politicaloutlook?: number |
|||
} |
|||
/** |
|||
* 添加家庭成员 |
|||
*/ |
|||
export interface familyMembersContAdd extends contId{ |
|||
list?:familyMembersCont[] |
|||
} |
|||
/** |
|||
* 编辑家庭成员 |
|||
*/ |
|||
export interface familyMembersContEdit extends familyMembersCont{ |
|||
id?: string |
|||
} |
|||
/** |
|||
* 教育经历基础参数 |
|||
*/ |
|||
export interface educExpInfo{ |
|||
graduationschool?:string //"宁阳实验高中",
|
|||
subject?:string //"理科",
|
|||
education?:number//3,
|
|||
admissiontime?:string //"2005-09-09",
|
|||
graduationtime?:string //"2008-06-06",
|
|||
academicdegree?:string //"1",
|
|||
level?:string //"1"
|
|||
} |
|||
/** |
|||
* 编辑教育经历 |
|||
*/ |
|||
export interface editEducExpInfoing extends educExpInfo{ |
|||
id:string |
|||
} |
|||
/** |
|||
* 添加教育经历 |
|||
*/ |
|||
export interface addEducExpInfoing extends contId{ |
|||
list?:educExpInfo[] |
|||
} |
|||
/** |
|||
* 集团外部工作经历 |
|||
*/ |
|||
export interface groupExternalWork{ |
|||
company?:string //"济南易搜集团",
|
|||
department?:string //"技术部",
|
|||
position?:string //"程序员",
|
|||
entrytime?:string //"2010-10-09",
|
|||
leavedate?:string //"2013-12-06",
|
|||
witness?:string //"石娟柯",
|
|||
witnesstel?:string //"15069130853",
|
|||
remarks?:string //"看看手机打开"
|
|||
} |
|||
/** |
|||
* 编辑外部工作经历 |
|||
*/ |
|||
export interface editGroupExternalWorkCont extends groupExternalWork{ |
|||
id:string |
|||
} |
|||
/** |
|||
* 添加外部工作经历 |
|||
*/ |
|||
export interface addGroupExternalWorkCont extends contId{ |
|||
list?:groupExternalWork[] |
|||
} |
|||
/** |
|||
* 添加集团内部工作履历 |
|||
*/ |
|||
export interface groupInnerWorkCont extends contId{ |
|||
orgid?:string |
|||
position?:string |
|||
gradepositions?:number |
|||
starttime?:string |
|||
endtime?:string |
|||
changetype?:number |
|||
assigntype?:number |
|||
team?:string |
|||
jobid?:string |
|||
} |
|||
|
|||
/** |
|||
* 修改头像 |
|||
*/ |
|||
export interface editUserIcon{ |
|||
id:number; |
|||
iconpath:string; |
|||
} |
|||
/** |
|||
* 编辑人员行政组织关系 |
|||
*/ |
|||
export interface editUserAboutOrg{ |
|||
id:string; |
|||
orgid?:number; |
|||
position?:number; |
|||
teamid?:number; |
|||
jobid?:number; |
|||
jobleve?:number; |
|||
ruleid?:string; |
|||
personInCharge:any; |
|||
orgreslist?:any; |
|||
resallorg?:any; |
|||
} |
|||
/** |
|||
* 排版类型 |
|||
*/ |
|||
export interface teamClassQueay{ |
|||
name?:"" |
|||
} |
|||
export interface teamRule{ |
|||
id:string; |
|||
sort:number; |
|||
teamid:string; |
|||
} |
|||
export interface teamList{ |
|||
id:string; |
|||
title:string; |
|||
startTime:string; |
|||
endTime:string; |
|||
} |
|||
/** |
|||
* 排班类型模板 |
|||
*/ |
|||
export interface teamClassCont{ |
|||
id:string; |
|||
state?:number; |
|||
states:boolean; |
|||
rulename:string; |
|||
name:string; |
|||
rule:teamRule[]; |
|||
list:teamList[]; |
|||
} |
|||
@ -0,0 +1,53 @@ |
|||
import request from '@/utils/request'; |
|||
import { AxiosPromise } from 'axios'; |
|||
import { searchPost,postContList,postContData,editPostditOrDel } from './type'; |
|||
/** |
|||
* 获取岗位 |
|||
*/ |
|||
export function getPostContPage(data?: searchPost): AxiosPromise<postContList> { |
|||
return request({ |
|||
url: '/hrapi/org/positionlist', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 获取本行政组织下的职位(岗位)列表不包含子行政组织 |
|||
*/ |
|||
export function getPostContNotSunPage(data?: searchPost): AxiosPromise<postContList> { |
|||
return request({ |
|||
url: '/hrapi/org/get_my_posit_list', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 添加岗位信息 |
|||
*/ |
|||
export function addPostCont(data?: postContData){ |
|||
return request({ |
|||
url: '/hrapi/org/addpositioncontpublic', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 编辑岗位信息 |
|||
*/ |
|||
export function editPostCont(data?: postContData){ |
|||
return request({ |
|||
url: '/hrapi/org/editpositioncontpublic', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 批量删除/编辑岗位状态 |
|||
*/ |
|||
export function baseDelPostCont(data?: editPostditOrDel){ |
|||
return request({ |
|||
url: '/hrapi/org/basedelpostcont', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
@ -0,0 +1,69 @@ |
|||
/** |
|||
* 搜索岗位 |
|||
*/ |
|||
export interface searchPost extends PageQuery{ |
|||
name?: string; |
|||
number?: string; |
|||
duties?: string; |
|||
organization?: string; |
|||
incharge?:number; |
|||
department?: string; |
|||
state?:number; |
|||
} |
|||
/** |
|||
* 岗位内容分页列表信息 |
|||
*/ |
|||
export type postContList = PageResult<postinfo[]> |
|||
/** |
|||
* 岗位内容 |
|||
*/ |
|||
export interface postinfo{ |
|||
id?: any; |
|||
number?: string; |
|||
name?: string; |
|||
duties?: number; |
|||
time?: number; |
|||
state?: number; |
|||
administrativeorganization?: number; |
|||
superior?: number; |
|||
personincharge?: number; |
|||
department?: number; |
|||
menupermit?: string; |
|||
buttonpermit?: string; |
|||
school?: number; |
|||
kingdeeid?: string; |
|||
orglist?: string; |
|||
unifyid?: number; |
|||
dutiesname?: string; |
|||
dutiesnumber?: string; |
|||
aoname?: string; |
|||
aonumber?: string; |
|||
jobname?: string; |
|||
superiorname?: string; |
|||
superiornumber?: string; |
|||
departmentname?: string; |
|||
idstr?: string; |
|||
orglistary?: number[]; |
|||
status?:boolean; |
|||
} |
|||
/** |
|||
* 编辑岗位数据 |
|||
*/ |
|||
export interface postContData{ |
|||
id?: number; |
|||
name?: string; //职位名称
|
|||
number?: string; //职位编码
|
|||
duties?: string; //职务
|
|||
organization?: string; //归属行政组织
|
|||
superior?: string|number; //上级
|
|||
incharge?: number; //是否为本部门负责人(1:是;2:否)
|
|||
department?: string; //部门
|
|||
} |
|||
/** |
|||
* 删除或改变职务类别状态 |
|||
*/ |
|||
export interface editPostditOrDel{ |
|||
id:string[]; |
|||
status?: number; |
|||
istrue?: number; |
|||
} |
|||
@ -0,0 +1,128 @@ |
|||
import request from '@/utils/request'; |
|||
import { AxiosPromise } from 'axios'; |
|||
import { MenuQuery, MenuVO, MenuForm,menuInfo } from './types'; |
|||
|
|||
/** |
|||
* 获取路由列表 |
|||
*/ |
|||
export function listRoutesOld() { |
|||
return request({ |
|||
url: '/api/v1/menus/routes', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
export function listRoutes() { |
|||
return request({ |
|||
url: '/systemapi/menus/get_routers_three', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
/** |
|||
* 获取菜单树形列表 |
|||
* |
|||
* @param queryParams |
|||
*/ |
|||
export function listMenusOld(queryParams: MenuQuery): AxiosPromise<MenuVO[]> { |
|||
return request({ |
|||
url: '/api/v1/menus', |
|||
method: 'get', |
|||
params: queryParams |
|||
}); |
|||
} |
|||
export function listMenus(queryParams: MenuQuery): AxiosPromise<MenuVO[]> { |
|||
return request({ |
|||
url: '/systemapi/menus/get_menus_three', |
|||
method: 'get', |
|||
params: queryParams |
|||
}); |
|||
} |
|||
/** |
|||
* 获取菜单下拉树形列表 |
|||
*/ |
|||
export function listMenuOptionsOld(): AxiosPromise<OptionType[]> { |
|||
return request({ |
|||
url: '/api/v1/menus/options', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
export function listMenuOptions(): AxiosPromise<OptionType[]> { |
|||
return request({ |
|||
url: '/systemapi/menus/menu_options', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
/** |
|||
* 获取菜单表单数据 |
|||
* |
|||
* @param id |
|||
*/ |
|||
export function getMenuFormOld(id: number): AxiosPromise<MenuForm> { |
|||
return request({ |
|||
url: '/api/v1/menus/' + id + '/form', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
export function getMenuForm(data: menuInfo): AxiosPromise<MenuForm> { |
|||
return request({ |
|||
url: '/systemapi/menus/get_one_menu_cont', |
|||
method: 'post', |
|||
data:data |
|||
}); |
|||
} |
|||
/** |
|||
* 添加菜单 |
|||
* |
|||
* @param data |
|||
*/ |
|||
export function addMenuOld(data: MenuForm) { |
|||
return request({ |
|||
url: '/api/v1/menus', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
export function addMenu(data: MenuForm) { |
|||
return request({ |
|||
url: '/systemapi/menus/add_new_menu', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 修改菜单 |
|||
* |
|||
* @param id |
|||
* @param data |
|||
*/ |
|||
export function updateMenuOld(id: string, data: MenuForm) { |
|||
return request({ |
|||
url: '/api/v1/menus/' + id, |
|||
method: 'put', |
|||
data: data |
|||
}); |
|||
} |
|||
export function updateMenu(data: MenuForm) { |
|||
return request({ |
|||
url: '/systemapi/menus/edit_menus_cont', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
/** |
|||
* 删除菜单 |
|||
* |
|||
* @param id 菜单ID |
|||
*/ |
|||
export function deleteMenuOld(id: number) { |
|||
return request({ |
|||
url: '/api/v1/menus/' + id, |
|||
method: 'delete' |
|||
}); |
|||
} |
|||
export function deleteMenu(data: menuInfo) { |
|||
return request({ |
|||
url: '/systemapi/menus/delt_menus_cont', |
|||
method: 'post', |
|||
data:data |
|||
}); |
|||
} |
|||
@ -0,0 +1,125 @@ |
|||
import { MenuTypeEnum } from '@/enums/MenuTypeEnum'; |
|||
|
|||
/** |
|||
* 菜单查询参数类型 |
|||
*/ |
|||
export interface MenuQuery { |
|||
keywords?: string; |
|||
} |
|||
|
|||
/** |
|||
* 菜单视图对象类型 |
|||
*/ |
|||
export interface MenuVO { |
|||
/** |
|||
* 子菜单 |
|||
*/ |
|||
children?: MenuVO[]; |
|||
/** |
|||
* 组件路径 |
|||
*/ |
|||
component?: string; |
|||
/** |
|||
* ICON |
|||
*/ |
|||
icon?: string; |
|||
/** |
|||
* 菜单ID |
|||
*/ |
|||
id?: number; |
|||
/** |
|||
* 菜单名称 |
|||
*/ |
|||
name?: string; |
|||
/** |
|||
* 父菜单ID |
|||
*/ |
|||
parentId?: number; |
|||
/** |
|||
* 按钮权限标识 |
|||
*/ |
|||
perm?: string; |
|||
/** |
|||
* 跳转路径 |
|||
*/ |
|||
redirect?: string; |
|||
/** |
|||
* 路由名称 |
|||
*/ |
|||
routeName?: string; |
|||
/** |
|||
* 路由相对路径 |
|||
*/ |
|||
routePath?: string; |
|||
/** |
|||
* 菜单排序(数字越小排名越靠前) |
|||
*/ |
|||
sort?: number; |
|||
/** |
|||
* 菜单类型 |
|||
*/ |
|||
type?: MenuTypeEnum; |
|||
/** |
|||
* 菜单是否可见(1:显示;0:隐藏) |
|||
*/ |
|||
visible?: number; |
|||
} |
|||
|
|||
/** |
|||
* 菜单表单对象类型 |
|||
*/ |
|||
export interface MenuForm { |
|||
/** |
|||
* 菜单ID |
|||
*/ |
|||
id?: string; |
|||
/** |
|||
* 父菜单ID |
|||
*/ |
|||
parentId?: number; |
|||
/** |
|||
* 菜单名称 |
|||
*/ |
|||
name?: string; |
|||
/** |
|||
* 菜单是否可见(1:是;0:否;) |
|||
*/ |
|||
visible: number; |
|||
icon?: string; |
|||
/** |
|||
* 排序 |
|||
*/ |
|||
sort: number; |
|||
/** |
|||
* 组件路径 |
|||
*/ |
|||
component?: string; |
|||
/** |
|||
* 路由路径 |
|||
*/ |
|||
path?: string; |
|||
/** |
|||
* 跳转路由路径 |
|||
*/ |
|||
redirect?: string; |
|||
|
|||
/** |
|||
* 菜单类型 |
|||
*/ |
|||
type: MenuTypeEnum; |
|||
|
|||
/** |
|||
* 权限标识 |
|||
*/ |
|||
perm?: string; |
|||
/** |
|||
* 权限标识 |
|||
*/ |
|||
outside?: number; |
|||
} |
|||
/** |
|||
* 查看菜单内容 |
|||
*/ |
|||
export interface menuInfo { |
|||
id:string; |
|||
} |
|||
@ -0,0 +1,62 @@ |
|||
export const calculateDatesMonth =(dateStr:string,num:number,type:string) => { |
|||
let monthnum = num; |
|||
if (typeof (num) == "string"){ |
|||
monthnum = parseInt(num); |
|||
} |
|||
let date= new Date(dateStr); |
|||
//获取原日
|
|||
let day = date.getDate(); |
|||
//获取原月份
|
|||
let month=date.getMonth(); |
|||
//设置增加月份
|
|||
date.setMonth(date.getMonth() + (monthnum*1), 1); |
|||
//获取增加的后的月份
|
|||
let Jmonth = date.getMonth()+1; |
|||
//获取增加的后的年份
|
|||
let Jyear=date.getFullYear(); |
|||
if(Jmonth == 4 || Jmonth == 6 || Jmonth == 9 || Jmonth == 11) { |
|||
//小月
|
|||
if (day > 30) { |
|||
day = 30; |
|||
} |
|||
}else if (Jmonth == 2) { |
|||
//2月判断是否闰年
|
|||
if(((Jyear % 4) == 0) && ((Jyear % 100) != 0) || ((Jyear % 400) == 0)){ |
|||
if (day > 29) { |
|||
day = 29; |
|||
} |
|||
}else{ |
|||
if (day > 28) { |
|||
day = 28 |
|||
} |
|||
} |
|||
|
|||
|
|||
}else{ |
|||
//大月
|
|||
if (day > 31) { |
|||
day = 31; |
|||
} |
|||
} |
|||
let tHours = date.getHours(); |
|||
let tMinutes = date.getMinutes(); |
|||
let tSeconds = date.getSeconds(); |
|||
let Jmonthstr = doHandleMonth(Jmonth); |
|||
let daystr = doHandleMonth(day); |
|||
if(type=="0"){ |
|||
return Jyear+"-"+Jmonthstr+"-"+daystr; |
|||
} |
|||
return Jyear+"-"+Jmonthstr+"-"+daystr+" "+tHours+":"+tMinutes+":"+tSeconds; |
|||
}; |
|||
/** |
|||
* 日或月补0 |
|||
* @param month |
|||
* @returns {string} |
|||
*/ |
|||
function doHandleMonth(month:number):string { |
|||
let m = month.toString(); |
|||
if(month.toString().length == 1){ |
|||
m = "0" + month; |
|||
} |
|||
return m; |
|||
} |
|||
@ -0,0 +1,112 @@ |
|||
import request from '@/utils/request'; |
|||
import { AxiosPromise } from 'axios'; |
|||
import { RoleQuery, RolePageResult, RoleForm } from './types'; |
|||
|
|||
/** |
|||
* 获取角色分页数据 |
|||
* |
|||
* @param queryParams |
|||
*/ |
|||
export function getRolePage( |
|||
queryParams?: RoleQuery |
|||
): AxiosPromise<RolePageResult> { |
|||
return request({ |
|||
url: '/api/v1/roles/page', |
|||
method: 'get', |
|||
params: queryParams |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 获取角色下拉数据 |
|||
* |
|||
* @param queryParams |
|||
*/ |
|||
export function listRoleOptions( |
|||
queryParams?: RoleQuery |
|||
): AxiosPromise<OptionType[]> { |
|||
return request({ |
|||
url: '/api/v1/roles/options', |
|||
method: 'get', |
|||
params: queryParams |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 获取角色的菜单ID集合 |
|||
* |
|||
* @param queryParams |
|||
*/ |
|||
export function getRoleMenuIds(roleId: number): AxiosPromise<number[]> { |
|||
return request({ |
|||
url: '/api/v1/roles/' + roleId + '/menuIds', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 分配菜单权限给角色 |
|||
* |
|||
* @param queryParams |
|||
*/ |
|||
export function updateRoleMenus( |
|||
roleId: number, |
|||
data: number[] |
|||
): AxiosPromise<any> { |
|||
return request({ |
|||
url: '/api/v1/roles/' + roleId + '/menus', |
|||
method: 'put', |
|||
data: data |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 获取角色详情 |
|||
* |
|||
* @param id |
|||
*/ |
|||
export function getRoleForm(id: number): AxiosPromise<RoleForm> { |
|||
return request({ |
|||
url: '/api/v1/roles/' + id + '/form', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 添加角色 |
|||
* |
|||
* @param data |
|||
*/ |
|||
export function addRole(data: RoleForm) { |
|||
return request({ |
|||
url: '/api/v1/roles', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 更新角色 |
|||
* |
|||
* @param id |
|||
* @param data |
|||
*/ |
|||
export function updateRole(id: number, data: RoleForm) { |
|||
return request({ |
|||
url: '/api/v1/roles/' + id, |
|||
method: 'put', |
|||
data: data |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 批量删除角色,多个以英文逗号(,)分割 |
|||
* |
|||
* @param ids |
|||
*/ |
|||
export function deleteRoles(ids: string) { |
|||
return request({ |
|||
url: '/api/v1/roles/' + ids, |
|||
method: 'delete' |
|||
}); |
|||
} |
|||
@ -0,0 +1,78 @@ |
|||
/** |
|||
* 角色查询参数 |
|||
*/ |
|||
export interface RoleQuery extends PageQuery { |
|||
keywords?: string; |
|||
} |
|||
|
|||
/** |
|||
* 角色分页对象 |
|||
*/ |
|||
export interface RolePageVO { |
|||
/** |
|||
* 角色编码 |
|||
*/ |
|||
code?: string; |
|||
|
|||
/** |
|||
* 角色ID |
|||
*/ |
|||
id?: number; |
|||
/** |
|||
* 角色名称 |
|||
*/ |
|||
name?: string; |
|||
/** |
|||
* 排序 |
|||
*/ |
|||
sort?: number; |
|||
/** |
|||
* 角色状态 |
|||
*/ |
|||
status?: number; |
|||
/** |
|||
* 创建时间 |
|||
*/ |
|||
createTime?: Date; |
|||
/** |
|||
* 修改时间 |
|||
*/ |
|||
updateTime?: Date; |
|||
} |
|||
|
|||
/** |
|||
* 角色分页 |
|||
*/ |
|||
export type RolePageResult = PageResult<RolePageVO[]>; |
|||
|
|||
/** |
|||
* 角色表单对象 |
|||
*/ |
|||
export interface RoleForm { |
|||
/** |
|||
* 角色ID |
|||
*/ |
|||
id?: number; |
|||
|
|||
/** |
|||
* 角色编码 |
|||
*/ |
|||
code: string; |
|||
/** |
|||
* 数据权限 |
|||
*/ |
|||
dataScope?: number; |
|||
|
|||
/** |
|||
* 角色名称 |
|||
*/ |
|||
name: string; |
|||
/** |
|||
* 排序 |
|||
*/ |
|||
sort?: number; |
|||
/** |
|||
* 角色状态(1-正常;0-停用) |
|||
*/ |
|||
status?: number; |
|||
} |
|||
@ -0,0 +1,83 @@ |
|||
import request from '@/utils/request'; |
|||
import { AxiosPromise } from 'axios'; |
|||
import { getOrgTree,submintPostPower,setupPage,submintRolePower,getSystemOrgTree,systemMenusTypeTree,getSystemMenusForRole } from './types' |
|||
/** |
|||
* 获取行政组织 |
|||
*/ |
|||
export function listRoutesOld(data: getOrgTree){ |
|||
return request({ |
|||
url: '/hrapi/org/get_organdpost_three', |
|||
method: 'post', |
|||
data:data |
|||
}); |
|||
} |
|||
/** |
|||
* 获取系统类型 |
|||
*/ |
|||
export function getSystemType(data: setupPage){ |
|||
return request({ |
|||
url: '/kpiapi/powerpc/system_list', |
|||
method: 'post', |
|||
data:data |
|||
}); |
|||
} |
|||
/** |
|||
* 获取各系统权限菜单 |
|||
*/ |
|||
export function getSystemPoewrTree(data: getSystemOrgTree): AxiosPromise<systemMenusTypeTree[]>{ |
|||
return request({ |
|||
url: '/kpiapi/powerpc/system_about_power_menu', |
|||
method: 'post', |
|||
data:data |
|||
}); |
|||
} |
|||
/** |
|||
* 给指定岗位授权 |
|||
*/ |
|||
export function grantSystemPostPoewr(data: submintPostPower){ |
|||
return request({ |
|||
url: '/kpiapi/powerpc/grant_post_system_powers', |
|||
method: 'post', |
|||
data:data |
|||
}); |
|||
} |
|||
/** |
|||
* 给指定岗位授权 |
|||
*/ |
|||
export function getGrantPowers(data: getSystemOrgTree): AxiosPromise<string[]>{ |
|||
return request({ |
|||
url: '/systemapi/grant/get_post_grant_powers', |
|||
method: 'post', |
|||
data:data |
|||
}); |
|||
} |
|||
/** |
|||
* 根据角色获取各系统权限菜单 |
|||
*/ |
|||
export function getSystemPoewrTreeForRole(data: getSystemMenusForRole): AxiosPromise<systemMenusTypeTree[]>{ |
|||
return request({ |
|||
url: '/kpiapi/powerpc/system_about_power_menurole', |
|||
method: 'post', |
|||
data:data |
|||
}); |
|||
} |
|||
/** |
|||
* 获取指定角色授权 |
|||
*/ |
|||
export function getGrantRolePowers(data: getSystemMenusForRole): AxiosPromise<string[]>{ |
|||
return request({ |
|||
url: '/systemapi/grant/get_role_grant_powers', |
|||
method: 'post', |
|||
data:data |
|||
}); |
|||
} |
|||
/** |
|||
* 给指定角色授权 |
|||
*/ |
|||
export function grantSystemRolePoewr(data: submintRolePower){ |
|||
return request({ |
|||
url: '/kpiapi/powerpc/grant_role_system_powers', |
|||
method: 'post', |
|||
data:data |
|||
}); |
|||
} |
|||
@ -0,0 +1,94 @@ |
|||
import request from '@/utils/request'; |
|||
import { AxiosPromise } from 'axios'; |
|||
import { searchRoleWord,roleLietCont,editRoleContKeyword,editRoleStatus,addRoleContKeyword,getRoleEndUser,RoleEndUSerContList,BaseDelRoleToUser,getOrgAndUserList,RoleEndUSerTreeList,CallBackOrgUserCont,setupRolePeople } from './types' |
|||
|
|||
/** |
|||
* 获取角色列表 |
|||
*/ |
|||
export function getSystemRoleList(data: searchRoleWord): AxiosPromise<roleLietCont[]>{ |
|||
return request({ |
|||
url: '/kpiapi/powerpc/system_role_list', |
|||
method: 'post', |
|||
data:data |
|||
}); |
|||
} |
|||
/** |
|||
* 编辑角色内容 |
|||
*/ |
|||
export function addRoleCont(data: addRoleContKeyword){ |
|||
return request({ |
|||
url: '/kpiapi/powerpc/add_system_role', |
|||
method: 'post', |
|||
data:data |
|||
}); |
|||
} |
|||
/** |
|||
* 编辑角色内容 |
|||
*/ |
|||
export function editRoleCont(data: editRoleContKeyword){ |
|||
return request({ |
|||
url: '/kpiapi/powerpc/edit_system_role', |
|||
method: 'post', |
|||
data:data |
|||
}); |
|||
} |
|||
/** |
|||
* 编辑角色内容状态 |
|||
*/ |
|||
export function editRoleContStatus(data: editRoleStatus){ |
|||
return request({ |
|||
url: '/kpiapi/powerpc/edit_system_role_statebatch', |
|||
method: 'post', |
|||
data:data |
|||
}); |
|||
} |
|||
/** |
|||
* 获取角色使用人员列表 |
|||
*/ |
|||
export function getRoleEndUserList(data: getRoleEndUser): AxiosPromise<RoleEndUSerContList>{ |
|||
return request({ |
|||
url: '/kpiapi/powerpc/role_about_people_list', |
|||
method: 'post', |
|||
data:data |
|||
}); |
|||
} |
|||
/** |
|||
* 批量删除角色使用人 |
|||
*/ |
|||
export function batchDelUserFromRole(data: BaseDelRoleToUser){ |
|||
return request({ |
|||
url: '/kpiapi/powerpc/batch_del_roleman', |
|||
method: 'post', |
|||
data:data |
|||
}); |
|||
} |
|||
/** |
|||
* 获取行政组织树及相关人员 |
|||
*/ |
|||
export function getOrgAndUserListCont(data: getOrgAndUserList):AxiosPromise<RoleEndUSerTreeList>{ |
|||
return request({ |
|||
url: '/hrapi/org/govthreeaboutman', |
|||
method: 'post', |
|||
data:data |
|||
}); |
|||
} |
|||
/** |
|||
* 搜索内容输出 |
|||
*/ |
|||
export function searchOrgUserContSend(data: searchRoleWord):AxiosPromise<CallBackOrgUserCont>{ |
|||
return request({ |
|||
url: '/hrapi/org/search_org_people', |
|||
method: 'post', |
|||
data:data |
|||
}); |
|||
} |
|||
/** |
|||
* 提交选择完毕的使用人 |
|||
*/ |
|||
export function submittoAppointUser(data: setupRolePeople){ |
|||
return request({ |
|||
url: '/kpiapi/powerpc/add_role_user', |
|||
method: 'post', |
|||
data:data |
|||
}); |
|||
} |
|||
@ -0,0 +1,267 @@ |
|||
|
|||
/** |
|||
* 获取行政组织及岗位树 |
|||
*/ |
|||
export interface getOrgTree{ |
|||
id?: string; |
|||
level?: number; |
|||
all?: number; |
|||
} |
|||
|
|||
/** |
|||
* 行政岗位树列表 |
|||
*/ |
|||
export interface orgPostTreeData{ |
|||
allnumber?:[string]; |
|||
count?: number; |
|||
list:orgPostTreeList; |
|||
} |
|||
export interface orgPostTreeList { |
|||
id?: string; //id
|
|||
number?: string; //编号
|
|||
name?: string; //名称
|
|||
superior?: string; //上级
|
|||
orgid?: string; //行政组织
|
|||
attribute?: number; //属性
|
|||
sort?: number; //排序
|
|||
orgname?: string; //行政组织名称
|
|||
departid?: string; //部门ID
|
|||
departname?: string; //部门名称
|
|||
adminorg?: string; //岗位归属行政组织
|
|||
child?:orgPostTreeList[]; //子集
|
|||
} |
|||
|
|||
/** |
|||
* 翻页数据 |
|||
*/ |
|||
export interface setupPage { |
|||
page?:number; //页码
|
|||
pagesize?:number; //每页获取数量
|
|||
} |
|||
/** |
|||
* 系统列表参数 |
|||
*/ |
|||
export interface systemList{ |
|||
page?:number; //页码
|
|||
pagesize?:number; //每页获取数量
|
|||
count?: number; //记录总数
|
|||
total?: number; //每页总数
|
|||
list?: systemCont[]; //
|
|||
} |
|||
export interface systemCont{ |
|||
id?:number; //id
|
|||
key?:string; //识别符
|
|||
coder?:string; //关键字
|
|||
title?:string; //系统名称
|
|||
apiurl?:string; //api地址
|
|||
sort?:number; //排序
|
|||
state?:number; //状态
|
|||
time?:number; //编辑时间
|
|||
} |
|||
|
|||
//菜单列表
|
|||
export interface systemMenusType { |
|||
id?:string; //
|
|||
name?:string; //
|
|||
parentid?:string; //
|
|||
pathurl?:string; //
|
|||
istrue?:boolean; //
|
|||
menukey?:string; //
|
|||
key?:string; //
|
|||
attribute?:string; //
|
|||
} |
|||
//菜单列表树
|
|||
export interface systemMenusTypeTree { |
|||
id?:string; //
|
|||
name?:string; //
|
|||
parentid?:string; //
|
|||
pathurl?:string; //
|
|||
istrue?:boolean; //
|
|||
menukey?:string; //
|
|||
key?:string; //
|
|||
attribute?:string; //
|
|||
child?:systemMenusType[]; //
|
|||
menuOperation?:systemMenusType[]; //
|
|||
} |
|||
/** |
|||
* 获取行政组织及岗位树 |
|||
*/ |
|||
export interface getSystemOrgTree{ |
|||
name?: string; |
|||
ordid?: string; |
|||
postid?: string; |
|||
} |
|||
|
|||
/** |
|||
* 提交岗位权限参数 |
|||
*/ |
|||
export interface submintPostPower{ |
|||
systemname:string |
|||
ordid:string |
|||
postid:string |
|||
level?:number |
|||
power:systemMenusTypeTree[] |
|||
} |
|||
|
|||
/** |
|||
* 角色搜索 |
|||
*/ |
|||
export interface searchRoleWord{ |
|||
name?: string; |
|||
} |
|||
|
|||
/** |
|||
* 角色列表 |
|||
*/ |
|||
export interface roleLietCont{ |
|||
id:number; |
|||
name?:string; |
|||
istrue?:boolean; |
|||
sort?: number; |
|||
state?:number; |
|||
time?: number; |
|||
} |
|||
/** |
|||
* 编辑角色 |
|||
*/ |
|||
export interface editRoleContKeyword{ |
|||
id?:string; |
|||
name?:string; |
|||
sort?: number; |
|||
} |
|||
|
|||
export interface addRoleContKeyword{ |
|||
name?:string; |
|||
sort?: number; |
|||
} |
|||
/** |
|||
* 获取行政组织及岗位树 |
|||
*/ |
|||
export interface editRoleStatus{ |
|||
id?: string[]; |
|||
istrue?: number; |
|||
state?: number; |
|||
} |
|||
/** |
|||
* 根据角色获取权限菜单 |
|||
*/ |
|||
export interface getSystemMenusForRole{ |
|||
name:string; |
|||
roleid?:string; |
|||
} |
|||
/** |
|||
* 提交角色配权数据 |
|||
*/ |
|||
|
|||
export interface submintRolePower{ |
|||
systemname:string |
|||
roleid:string |
|||
level?:number |
|||
power:systemMenusTypeTree[] |
|||
} |
|||
/** |
|||
* 获取角色使用人员 |
|||
*/ |
|||
export interface getRoleEndUser{ |
|||
id:string; |
|||
name?:string; |
|||
page?:number; //页码
|
|||
pagesize?:number; //每页获取数量
|
|||
} |
|||
/** |
|||
* 使用人员信息 |
|||
*/ |
|||
export interface usercont{ |
|||
id?:string; |
|||
number?:string; |
|||
name?:string; |
|||
company?:string; |
|||
companyname?:string; |
|||
department?:string; |
|||
departmentname?:string; |
|||
orgId?:string; |
|||
orgname?:string; |
|||
dutiesid?:string; |
|||
dutiesname?:string; |
|||
wechat?:string; |
|||
key?:string; |
|||
departmenttitle?:string; |
|||
icon?:string; |
|||
iconbase64?:string; |
|||
} |
|||
/** |
|||
* 角色使用人员分页 |
|||
*/ |
|||
export type RoleEndUSerContList = PageResult<usercont[]>; |
|||
/** |
|||
* 批量删除角色使用人 |
|||
*/ |
|||
export interface BaseDelRoleToUser{ |
|||
id:string; |
|||
mankey:string[]; |
|||
} |
|||
/** |
|||
* 获取行政组织树及相关人员 |
|||
*/ |
|||
export interface getOrgAndUserList { |
|||
id:string; |
|||
all?:number; |
|||
level?:number; |
|||
} |
|||
|
|||
/** |
|||
* 行政组织及人员列表 |
|||
*/ |
|||
export interface orgAndPeopleList{ |
|||
id?: string; |
|||
name?: string; |
|||
number?: string; |
|||
icon?: string; |
|||
iconbase64?: string; |
|||
parentId?: string; |
|||
orgId?: string; |
|||
isman?: number; |
|||
sort?: number; |
|||
identify?: number; |
|||
all_name?: string; |
|||
child?: orgAndPeopleList[]; |
|||
} |
|||
export interface orgAndPeopleLists{ |
|||
id: string; |
|||
name?: string; |
|||
number?: string; |
|||
icon?: string; |
|||
iconbase64?: string; |
|||
parentId: string; |
|||
orgId?: string; |
|||
isman?: number; |
|||
sort?: number; |
|||
identify?: number; |
|||
all_name?:string; |
|||
} |
|||
export interface orgUserPageResult<T> { |
|||
/** |
|||
* 人员列表 |
|||
*/ |
|||
list: orgAndPeopleLists[]; |
|||
/** |
|||
* 行政组织与人树 |
|||
*/ |
|||
three: T; |
|||
} |
|||
export type RoleEndUSerTreeList = orgUserPageResult<orgAndPeopleList[]>; |
|||
/** |
|||
* 搜索内容输出 |
|||
*/ |
|||
export interface sendSearchOrgPeople{ |
|||
org:orgAndPeopleLists[]; |
|||
people:orgAndPeopleLists[]; |
|||
} |
|||
export type CallBackOrgUserCont = sendSearchOrgPeople; |
|||
/** |
|||
* 设定角色使用人 |
|||
*/ |
|||
export interface setupRolePeople{ |
|||
roleid:string; |
|||
peoplelist:orgAndPeopleLists[]; |
|||
} |
|||
@ -0,0 +1,159 @@ |
|||
import request from '@/utils/request'; |
|||
import { AxiosPromise } from 'axios'; |
|||
import { UserForm, UserInfo, UserPageVO, UserQuery } from './types'; |
|||
|
|||
/** |
|||
* 登录成功后获取用户信息(昵称、头像、权限集合和角色集合) |
|||
*/ |
|||
export function getUserInfo(): AxiosPromise<UserInfo> { |
|||
return request({ |
|||
url: '/api/v1/users/me', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
export function getUserInfoIng(): AxiosPromise<UserInfo> { |
|||
return request({ |
|||
url: '/systemapi/user/get_user_cont', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
/** |
|||
* 获取用户分页列表 |
|||
* |
|||
* @param queryParams |
|||
*/ |
|||
export function getUserPage( |
|||
queryParams: UserQuery |
|||
): AxiosPromise<PageResult<UserPageVO[]>> { |
|||
return request({ |
|||
url: '/api/v1/users/page', |
|||
method: 'get', |
|||
params: queryParams |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 获取用户表单详情 |
|||
* |
|||
* @param userId |
|||
*/ |
|||
export function getUserForm(userId: number): AxiosPromise<UserForm> { |
|||
return request({ |
|||
url: '/api/v1/users/' + userId + '/form', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 添加用户 |
|||
* |
|||
* @param data |
|||
*/ |
|||
export function addUser(data: any) { |
|||
return request({ |
|||
url: '/api/v1/users', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 修改用户 |
|||
* |
|||
* @param id |
|||
* @param data |
|||
*/ |
|||
export function updateUser(id: number, data: UserForm) { |
|||
return request({ |
|||
url: '/api/v1/users/' + id, |
|||
method: 'put', |
|||
data: data |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 修改用户状态 |
|||
* |
|||
* @param id |
|||
* @param status |
|||
*/ |
|||
export function updateUserStatus(id: number, status: number) { |
|||
return request({ |
|||
url: '/api/v1/users/' + id + '/status', |
|||
method: 'patch', |
|||
params: { status: status } |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 修改用户密码 |
|||
* |
|||
* @param id |
|||
* @param password |
|||
*/ |
|||
export function updateUserPassword(id: number, password: string) { |
|||
return request({ |
|||
url: '/api/v1/users/' + id + '/password', |
|||
method: 'patch', |
|||
params: { password: password } |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 删除用户 |
|||
* |
|||
* @param ids |
|||
*/ |
|||
export function deleteUsers(ids: string) { |
|||
return request({ |
|||
url: '/api/v1/users/' + ids, |
|||
method: 'delete' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 下载用户导入模板 |
|||
* |
|||
* @returns |
|||
*/ |
|||
export function downloadTemplateApi() { |
|||
return request({ |
|||
url: '/api/v1/users/template', |
|||
method: 'get', |
|||
responseType: 'arraybuffer' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 导出用户 |
|||
* |
|||
* @param queryParams |
|||
* @returns |
|||
*/ |
|||
export function exportUser(queryParams: UserQuery) { |
|||
return request({ |
|||
url: '/api/v1/users/_export', |
|||
method: 'get', |
|||
params: queryParams, |
|||
responseType: 'arraybuffer' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 导入用户 |
|||
* |
|||
* @param file |
|||
*/ |
|||
export function importUser(deptId: number, file: File) { |
|||
const formData = new FormData(); |
|||
formData.append('file', file); |
|||
return request({ |
|||
url: '/api/v1/users/_import', |
|||
method: 'post', |
|||
params: { deptId: deptId }, |
|||
data: formData, |
|||
headers: { |
|||
'Content-Type': 'multipart/form-data' |
|||
} |
|||
}); |
|||
} |
|||
@ -0,0 +1,111 @@ |
|||
/** |
|||
* 登录用户信息 |
|||
*/ |
|||
export interface UserInfo { |
|||
nickname: string; |
|||
avatar: string; |
|||
roles: string[]; |
|||
perms: string[]; |
|||
} |
|||
|
|||
/** |
|||
* 用户查询对象类型 |
|||
*/ |
|||
export interface UserQuery extends PageQuery { |
|||
keywords?: string; |
|||
status?: number; |
|||
deptId?: number; |
|||
} |
|||
|
|||
/** |
|||
* 用户分页对象 |
|||
*/ |
|||
export interface UserPageVO { |
|||
/** |
|||
* 用户头像地址 |
|||
*/ |
|||
avatar?: string; |
|||
/** |
|||
* 创建时间 |
|||
*/ |
|||
createTime?: Date; |
|||
/** |
|||
* 部门名称 |
|||
*/ |
|||
deptName?: string; |
|||
/** |
|||
* 用户邮箱 |
|||
*/ |
|||
email?: string; |
|||
/** |
|||
* 性别 |
|||
*/ |
|||
genderLabel?: string; |
|||
/** |
|||
* 用户ID |
|||
*/ |
|||
id?: number; |
|||
/** |
|||
* 手机号 |
|||
*/ |
|||
mobile?: string; |
|||
/** |
|||
* 用户昵称 |
|||
*/ |
|||
nickname?: string; |
|||
/** |
|||
* 角色名称,多个使用英文逗号(,)分割 |
|||
*/ |
|||
roleNames?: string; |
|||
/** |
|||
* 用户状态(1:启用;0:禁用) |
|||
*/ |
|||
status?: number; |
|||
/** |
|||
* 用户名 |
|||
*/ |
|||
username?: string; |
|||
} |
|||
|
|||
/** |
|||
* 用户表单类型 |
|||
*/ |
|||
export interface UserForm { |
|||
/** |
|||
* 用户头像 |
|||
*/ |
|||
avatar?: string; |
|||
/** |
|||
* 部门ID |
|||
*/ |
|||
deptId?: number; |
|||
/** |
|||
* 邮箱 |
|||
*/ |
|||
email?: string; |
|||
/** |
|||
* 性别 |
|||
*/ |
|||
gender?: number; |
|||
/** |
|||
* 用户ID |
|||
*/ |
|||
id?: number; |
|||
mobile?: string; |
|||
/** |
|||
* 昵称 |
|||
*/ |
|||
nickname?: string; |
|||
/** |
|||
* 角色ID集合 |
|||
*/ |
|||
roleIds?: number[]; |
|||
/** |
|||
* 用户状态(1:正常;0:禁用) |
|||
*/ |
|||
status?: number; |
|||
/** |
|||
* 用户名 |
|||
*/ |
|||
username?: string; |
|||
} |
|||
|
After Width: | Height: | Size: 160 KiB |
|
After Width: | Height: | Size: 96 KiB |
|
After Width: | Height: | Size: 4.7 KiB |
|
After Width: | Height: | Size: 1.6 MiB |
|
After Width: | Height: | Size: 69 KiB |
|
After Width: | Height: | Size: 325 KiB |
|
After Width: | Height: | Size: 1.6 MiB |
|
After Width: | Height: | Size: 2.0 MiB |
|
After Width: | Height: | Size: 799 KiB |
|
After Width: | Height: | Size: 633 KiB |
|
After Width: | Height: | Size: 267 KiB |
|
After Width: | Height: | Size: 895 KiB |
|
After Width: | Height: | Size: 850 KiB |
|
After Width: | Height: | Size: 226 KiB |
|
After Width: | Height: | Size: 1.8 MiB |
|
After Width: | Height: | Size: 2.4 MiB |
|
After Width: | Height: | Size: 777 KiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 3.8 MiB |
|
After Width: | Height: | Size: 3.2 MiB |
|
After Width: | Height: | Size: 2.2 MiB |
|
After Width: | Height: | Size: 361 KiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 962 KiB |
|
After Width: | Height: | Size: 70 KiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 627 KiB |
|
After Width: | Height: | Size: 180 KiB |
|
After Width: | Height: | Size: 169 KiB |
|
After Width: | Height: | Size: 86 KiB |
|
After Width: | Height: | Size: 111 KiB |
|
After Width: | Height: | Size: 2.0 MiB |
|
After Width: | Height: | Size: 65 KiB |
|
After Width: | Height: | Size: 424 KiB |
|
After Width: | Height: | Size: 170 KiB |
|
After Width: | Height: | Size: 2.0 MiB |
|
After Width: | Height: | Size: 315 KiB |
|
After Width: | Height: | Size: 571 B |
|
After Width: | Height: | Size: 371 B |
|
After Width: | Height: | Size: 404 B |
|
After Width: | Height: | Size: 579 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 517 B |
|
After Width: | Height: | Size: 397 B |
|
After Width: | Height: | Size: 513 B |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1008 B |
|
After Width: | Height: | Size: 738 B |
|
After Width: | Height: | Size: 764 B |
|
After Width: | Height: | Size: 639 B |
|
After Width: | Height: | Size: 2.3 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 2.1 KiB |