diff --git a/src/api/lb-assessment-apply.js b/src/api/lb-assessment-apply.js index 0fc99a0..33632f3 100644 --- a/src/api/lb-assessment-apply.js +++ b/src/api/lb-assessment-apply.js @@ -30,3 +30,13 @@ export function deleteLbAssessmentApply(id) { method: 'delete' }) } + +/** 大模型解析申请评估文本为实体(不落库),请求可能较慢 */ +export function parseAssessmentApplyFromText(data) { + return request({ + url: '/lbAssessmentApply/parseAssessmentApplyFromText', + method: 'post', + data, + timeout: 120000 + }) +} diff --git a/src/directive/dialog-drag/index.js b/src/directive/dialog-drag/index.js new file mode 100644 index 0000000..04d2796 --- /dev/null +++ b/src/directive/dialog-drag/index.js @@ -0,0 +1,72 @@ +/** + * Element UI el-dialog:按住标题栏可拖拽移动 + * 使用: + */ +import Vue from 'vue' + +function bindDrag(el) { + const header = el.querySelector('.el-dialog__header') + const dialog = el.querySelector('.el-dialog') + if (!header || !dialog) return + + header.style.cursor = 'move' + header.style.userSelect = 'none' + + const onMouseDown = (e) => { + if (e.button !== 0) return + if (e.target.closest('.el-dialog__headerbtn')) return + + const rect = dialog.getBoundingClientRect() + const offsetX = e.clientX - rect.left + const offsetY = e.clientY - rect.top + const sty = dialog.style + sty.margin = '0' + sty.position = 'fixed' + sty.left = `${rect.left}px` + sty.top = `${rect.top}px` + + const onMouseMove = (e2) => { + const w = dialog.offsetWidth + const h = dialog.offsetHeight + const maxL = Math.max(0, document.documentElement.clientWidth - w) + const maxT = Math.max(0, document.documentElement.clientHeight - h) + let left = e2.clientX - offsetX + let top = e2.clientY - offsetY + if (left < 0) left = 0 + if (left > maxL) left = maxL + if (top < 0) top = 0 + if (top > maxT) top = maxT + sty.left = `${left}px` + sty.top = `${top}px` + } + + const onMouseUp = () => { + document.removeEventListener('mousemove', onMouseMove) + document.removeEventListener('mouseup', onMouseUp) + } + + document.addEventListener('mousemove', onMouseMove) + document.addEventListener('mouseup', onMouseUp) + e.preventDefault() + } + + header.addEventListener('mousedown', onMouseDown) + return () => header.removeEventListener('mousedown', onMouseDown) +} + +export default { + inserted(el) { + Vue.nextTick(() => { + if (typeof el._dialogDragUnbind === 'function') { + el._dialogDragUnbind() + } + el._dialogDragUnbind = bindDrag(el) + }) + }, + unbind(el) { + if (typeof el._dialogDragUnbind === 'function') { + el._dialogDragUnbind() + delete el._dialogDragUnbind + } + } +} diff --git a/src/main.js b/src/main.js index 01cba2f..373c4df 100644 --- a/src/main.js +++ b/src/main.js @@ -14,6 +14,9 @@ import router from './router' import '@/icons' // icon import '@/permission' // permission control +import dialogDrag from '@/directive/dialog-drag' + +Vue.directive('dialog-drag', dialogDrag) /** * If you don't want to use mock-server diff --git a/src/views/lb-business/assessment-apply/index.vue b/src/views/lb-business/assessment-apply/index.vue index 5f4b825..d282ce2 100644 --- a/src/views/lb-business/assessment-apply/index.vue +++ b/src/views/lb-business/assessment-apply/index.vue @@ -27,29 +27,26 @@ - - - - - - - - + + + + + + + - + + + + - - - - +