添加自定义弹出拖拽指令&上传文件下载文件action配置以及页面编写&创建默认表格option配置&表格加上自定义宽度
¶Ô±ÈÐÂÎļþ |
| | |
| | | /** |
| | | * æé®å¤ç ä¸å¡ç±»åå®¡ç¾ |
| | | */ |
| | | import {paramLow,callPreEvent, callPostEvent} from '../BaseAction'; |
| | | import {validatenull} from "@/util/validate"; |
| | | import Vue from "vue"; |
| | | import func from "@/util/func"; |
| | | |
| | | export const doAction = (options,callback) => { |
| | | options.sourceData = options.sourceData || {}; |
| | | options.dataStore = options.dataStore || []; |
| | | if (!options.dataStore || options.dataStore.length < 1) { |
| | | Vue.prototype.$message.error("è¯·éæ©éè¦ä¸è½½çæ°æ®"); |
| | | return false; |
| | | } |
| | | if (!options.paramVOS.multi && options.dataStore.length > 1) { |
| | | Vue.prototype.$message.error("ä»
è½éæ©ä¸æ¡æ°æ®è¿è¡ä¸è½½"); |
| | | return false; |
| | | } |
| | | |
| | | |
| | | callPreEvent(options, doBefore, function (options) { |
| | | showStartWindow(options, function () { |
| | | callPostEvent(options, doAfter, callback,type); |
| | | }); |
| | | }); |
| | | }; |
| | | |
| | | /** |
| | | * æ¾ç¤ºæµç¨ççªå£ |
| | | * @param options æé®çé
ç½®ä¿¡æ¯ |
| | | * @param callback åè° |
| | | */ |
| | | export const showStartWindow = (options,callback)=> { |
| | | const paramVOS = options.paramVOS; |
| | | if (!paramVOS['form'] && !paramVOS['context']) { |
| | | Vue.prototype.$message.error("æé®é
ç½®ä¸æ£ç¡®"); |
| | | return false; |
| | | } |
| | | // func.downloadFileByBlobHandler(); |
| | | |
| | | } |
| | | /** |
| | | * åç½®äºä»¶ |
| | | * @param options æé®çé
ç½®ä¿¡æ¯ |
| | | * @param callback åè° |
| | | */ |
| | | export const doBefore = (options,callback)=> { |
| | | console.log("æ§è¡å¢å åç½®äºä»¶") |
| | | if(callback){ |
| | | callback(options); |
| | | } |
| | | } |
| | | /** |
| | | * åç½®äºä»¶ |
| | | * @param options æé®çé
ç½®ä¿¡æ¯ |
| | | * @param callback åè° |
| | | */ |
| | | export const doAfter = (options,callback,actionType)=> { |
| | | console.log('æ§è¡å¢å åç½®äºä»¶'); |
| | | if(callback){ |
| | | callback(actionType); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <el-dialog |
| | | v-dialogDrag |
| | | :width="width" |
| | | :visible.sync="visible" |
| | | :destroy-on-close="true" |
| | | :close-on-click-modal="false" |
| | | append-to-body |
| | | title="ä¸ä¼ æä»¶" |
| | | class="avue-dialog" |
| | | > |
| | | <Divider left="30px" text="导å
¥æç¤º"></Divider> |
| | | <ul> |
| | | <li> |
| | | 1.红è²åä½è¡¨ç¤ºå¿
è¾é¡¹ |
| | | </li> |
| | | <li> |
| | | 2.æ¯æ¬¡ä»
è½æå¤å¯¼å
¥10000æ¡æ°æ® |
| | | </li> |
| | | </ul> |
| | | <Divider left="30px" text="excelæä»¶ï¼éæ©æä»¶åä¼èªå¨ä¸ä¼ "></Divider> |
| | | <el-upload |
| | | :before-upload="beforeUpload" |
| | | :headers="uploadHeaders" |
| | | :on-change="uploadChange" |
| | | :on-error="onError" |
| | | :on-success="onSuccess" |
| | | :show-file-list="false" |
| | | accept=".xlsx, .xls" |
| | | action="/api/ubcs-code/codeClassify/importClassify" |
| | | class="upload-demo"> |
| | | <el-button size="small" style="margin: 15px 35px" type="primary">æµè§æä»¶</el-button> |
| | | </el-upload> |
| | | <template #footer> |
| | | <el-button |
| | | :loading="downloadLoading" |
| | | size="small" |
| | | type="primary" |
| | | @click="downloadTemplateFun" |
| | | >ä¸è½½å¯¼å
¥æ¨¡æ¿ |
| | | </el-button |
| | | > |
| | | <el-button size="small" @click="visible = false">å
³é</el-button> |
| | | </template> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | | <script> |
| | | // import {downloadErrorFile,downloadBatchImportApplyTemplate} from '@/api/template/templateAttr' |
| | | import {getToken} from "@/util/auth"; |
| | | import func from "@/util/func"; |
| | | import {validatenull} from "@/util/validate"; |
| | | |
| | | export default { |
| | | name: "upload-file", |
| | | props: { |
| | | paramVOS: { |
| | | type: Object, |
| | | default: {} |
| | | }, |
| | | sourceData: { |
| | | //æå±åºåçä¸ä¸åºåé䏿°æ® |
| | | type: Object, |
| | | default: {} |
| | | }, |
| | | dataStore: { |
| | | //å¼¹çªæ¶æé®æå±åºåé䏿°æ® |
| | | type: Array, |
| | | default: [] |
| | | }, |
| | | }, |
| | | data() { |
| | | return { |
| | | flga: true, |
| | | pageLoading: null, |
| | | downloadLoading: false, |
| | | visible:false, |
| | | } |
| | | }, |
| | | watch: { |
| | | visible: { |
| | | handler(newval, oldval) { |
| | | // console.log('newval',newval) |
| | | } |
| | | } |
| | | }, |
| | | computed: { |
| | | uploadHeaders() { |
| | | return { |
| | | "Blade-Auth": "bearer " + getToken(), |
| | | }; |
| | | }, |
| | | width() { |
| | | if (!validatenull(this.paramVOS.width)) { |
| | | if (this.paramVOS.width.includes("px") || this.paramVOS.width.includes("%")) { |
| | | return this.paramVOS.width; |
| | | } else { |
| | | return this.paramVOS.width + "px"; |
| | | } |
| | | } else { |
| | | return "60%"; |
| | | } |
| | | }, |
| | | fullscreen(){ |
| | | console.log(this.paramVOS) |
| | | if(this.paramVOS.width || this.paramVOS.height){ |
| | | return false; |
| | | }else if(this.paramVOS.form){ |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | }, |
| | | methods: { |
| | | //æä»¶ä¸ä¼ å |
| | | async beforeUpload(file) { |
| | | const fileType = file.name.split(".").pop(); |
| | | if (fileType !== "xlsx" && fileType !== "xls") { |
| | | // ä¸ä¼ æ ¼å¼ä¸ç¬¦åè¦æ±ï¼æç¤ºé误信æ¯å¹¶åæ¶ä¸ä¼ |
| | | this.$message.error("åªå
许ä¸ä¼ xlsxãxlsæ ¼å¼çæä»¶"); |
| | | return Promise.reject(false); |
| | | } |
| | | this.pageLoading = this.$loading({ |
| | | lock: true, |
| | | text: "æä»¶ä¸ä¼ ä¸", |
| | | spinner: "el-icon-loading", |
| | | background: "rgba(0, 0, 0, 0.7)", |
| | | }); |
| | | return true; |
| | | }, |
| | | // æä»¶ä¸ä¼ æå |
| | | onSuccess(resbonse) { |
| | | if (Object.keys(resbonse.data).length === 0) { |
| | | this.$message.success("ä¸ä¼ æåï¼"); |
| | | this.dialogVisible = false; |
| | | return; |
| | | } |
| | | if (resbonse.data.fileOid) { |
| | | const fileName = resbonse.data.filePath.split("/").pop(); |
| | | this.$message.error("请ä¸è½½éè¯¯ä¿¡æ¯æä»¶è¿è¡æ¥çï¼"); |
| | | downloadErrorFile({uuid: resbonse.data.fileOid}).then((res) => { |
| | | func.downloadFileByBlobHandler(res); |
| | | }); |
| | | } |
| | | }, |
| | | //ç¹å»ä¸è½½æ¨¡æ¿ |
| | | downloadTemplateFun() { |
| | | this.downloadLoading = true; |
| | | downloadBatchImportApplyTemplate({codeClassifyOid: this.codeClassifyOid}).then(res => { |
| | | this.$utilFunc.downloadFileByBlob(res.data, "æ¨¡æ¿æä»¶.xls"); |
| | | this.downloadLoading = false; |
| | | }).catch((res) => { |
| | | this.$message.warning(res) |
| | | this.downloadLoading = false; |
| | | }) |
| | | }, |
| | | //æä»¶ä¸ä¼ 失败 |
| | | onError(res) { |
| | | this.pageLoading.close(); |
| | | }, |
| | | //æä»¶ç¶ææ¹å |
| | | uploadChange(file) { |
| | | if (file.status === "success" || file.status === "error") { |
| | | this.pageLoading.close(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | ul { |
| | | color: rgb(188, 188, 188); |
| | | margin: 20px 0 20px 0; |
| | | padding: 0 0 0 30px; |
| | | list-style: none; |
| | | |
| | | li { |
| | | margin-bottom: 5px; |
| | | font-size: 13px; |
| | | } |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /** |
| | | * æé®å¤ç ä¸å¡ç±»åå®¡ç¾ |
| | | */ |
| | | import {paramLow,callPreEvent, callPostEvent} from '../BaseAction'; |
| | | import {validatenull} from "@/util/validate"; |
| | | import Vue from "vue"; |
| | | import uploadFileDialog from "@/components/actions/base/uploadFile" |
| | | |
| | | |
| | | export const doAction = (options,callback) => { |
| | | options.sourceData = options.sourceData || {}; |
| | | options.dataStore = options.dataStore || []; |
| | | |
| | | callPreEvent(options, doBefore, function (options) { |
| | | showStartWindow(options, function () { |
| | | callPostEvent(options, doAfter, callback,type); |
| | | }); |
| | | }); |
| | | }; |
| | | |
| | | /** |
| | | * æ¾ç¤ºæµç¨ççªå£ |
| | | * @param options æé®çé
ç½®ä¿¡æ¯ |
| | | * @param callback åè° |
| | | */ |
| | | export const showStartWindow = (options,callback)=> { |
| | | const paramVOS = options.paramVOS; |
| | | // if (!paramVOS['form'] && !paramVOS['context']) { |
| | | // Vue.prototype.$message.error("æé®é
ç½®ä¸æ£ç¡®"); |
| | | // return false; |
| | | // } |
| | | |
| | | const dialogConstructor = Vue.extend(uploadFileDialog); |
| | | let instance = new dialogConstructor(); |
| | | instance.sourceData = options.sourceData; |
| | | instance.dataStore = options.dataStore; |
| | | instance.paramVOS = paramVOS; |
| | | |
| | | instance.dialogClose = function () { |
| | | vm.visible = false; |
| | | document.body.removeChild(vm.$el); |
| | | instance.$destroy(); |
| | | instance = null; |
| | | }; |
| | | if (callback) { |
| | | instance.saveCallback = callback; |
| | | } |
| | | let vm = instance.$mount(); |
| | | document.body.appendChild(vm.$el); |
| | | instance.visible = true; |
| | | |
| | | } |
| | | /** |
| | | * åç½®äºä»¶ |
| | | * @param options æé®çé
ç½®ä¿¡æ¯ |
| | | * @param callback åè° |
| | | */ |
| | | export const doBefore = (options,callback)=> { |
| | | console.log("æ§è¡å¢å åç½®äºä»¶") |
| | | if(callback){ |
| | | callback(options); |
| | | } |
| | | } |
| | | /** |
| | | * åç½®äºä»¶ |
| | | * @param options æé®çé
ç½®ä¿¡æ¯ |
| | | * @param callback åè° |
| | | */ |
| | | export const doAfter = (options,callback,actionType)=> { |
| | | console.log('æ§è¡å¢å åç½®äºä»¶'); |
| | | if(callback){ |
| | | callback(actionType); |
| | | } |
| | | } |
| | |
| | | launchworkflow: () => {import("@/components/actions/base/StartWorkflowAction").then(module => { |
| | | module.doAction(options,callback); |
| | | })}, |
| | | //ä¸ä¼ æä»¶ |
| | | uploadfile: () => {import("@/components/actions/base/uploadFileAction").then(module => { |
| | | module.doAction(options,callback); |
| | | })}, |
| | | //ä¸ä¼ æä»¶ |
| | | downloadfile: () => {import("@/components/actions/base/downloadFileAction").then(module => { |
| | | module.doAction(options,callback); |
| | | })}, |
| | | }; |
| | | if (handlers[type]) { |
| | | handlers[type]() |
| | |
| | | //è¡¨æ ¼æ°æ® |
| | | tableList: [], |
| | | option: { |
| | | border:true, |
| | | stripe:true, |
| | | index: true, |
| | | addBtn: false, |
| | | editBtn: false, |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import Vue from 'vue'; |
| | | |
| | | // v-dialogDrag: å¼¹çªææ½ |
| | | Vue.directive('dialogDrag', { |
| | | bind(el) { |
| | | const dialogHeaderEl = el.querySelector('.el-dialog__header'); |
| | | const dragDom = el.querySelector('.el-dialog'); |
| | | dialogHeaderEl.style.cursor = 'move'; |
| | | |
| | | // è·ååæå±æ§ ie domå
ç´ .currentStyle ç«çè°·æ window.getComputedStyle(domå
ç´ , null); |
| | | const sty = dragDom.currentStyle || window.getComputedStyle(dragDom, null); |
| | | |
| | | dialogHeaderEl.onmousedown = (e) => { |
| | | // é¼ æ æä¸ï¼è®¡ç®å½åå
ç´ è·ç¦»å¯è§åºçè·ç¦» |
| | | const disX = e.clientX - dialogHeaderEl.offsetLeft; |
| | | const disY = e.clientY - dialogHeaderEl.offsetTop; |
| | | |
| | | // è·åå°çå¼å¸¦px æ£åå¹é
æ¿æ¢ |
| | | let styL, styT; |
| | | |
| | | // 注æå¨ieä¸ ç¬¬ä¸æ¬¡è·åå°çå¼ä¸ºç»ä»¶èªå¸¦50% ç§»å¨ä¹åèµå¼ä¸ºpx |
| | | if (sty.left.includes('%')) { |
| | | styL = +document.body.clientWidth * (+sty.left.replace(/%/g, '') / 100); |
| | | styT = +document.body.clientHeight * (+sty.top.replace(/%/g, '') / 100); |
| | | } else { |
| | | styL = +sty.left.replace(/\px/g, ''); |
| | | styT = +sty.top.replace(/\px/g, ''); |
| | | } |
| | | |
| | | document.onmousemove = function(e) { |
| | | // éè¿äºä»¶å§æï¼è®¡ç®ç§»å¨çè·ç¦» |
| | | const l = e.clientX - disX; |
| | | const t = e.clientY - disY; |
| | | |
| | | // ç§»å¨å½åå
ç´ |
| | | dragDom.style.left = `${l + styL}px`; |
| | | dragDom.style.top = `${t + styT}px`; |
| | | |
| | | // å°æ¤æ¶çä½ç½®ä¼ åºå» |
| | | // binding.value({x:e.pageX,y:e.pageY}) |
| | | }; |
| | | |
| | | document.onmouseup = function() { |
| | | document.onmousemove = null; |
| | | document.onmouseup = null; |
| | | }; |
| | | }; |
| | | } |
| | | }); |
| | | |
| | | |
| | |
| | | import website from '@/config/website'; |
| | | import crudCommon from '@/mixins/crud'; |
| | | import Divider from '@/components/Divider/index' |
| | | import '@/directive/el-drag-dialog/dialogDrag' |
| | | |
| | | //表åç»ä»¶ |
| | | import basicForm from "@/components/PLT-basic-component/basicForm"; |
| | | // ä¸å¡ç»ä»¶ |
¶Ô±ÈÐÂÎļþ |
| | |
| | | export default { |
| | | border:true, |
| | | height:'auto', |
| | | index:true, |
| | | dialogDrag:true, |
| | | searchShow:true, |
| | | searchIcon:true, |
| | | selection:true, |
| | | stripe:true, |
| | | // selection æ¯å¦æéæ©æ¡ |
| | | // indexFixed:true/left/right, åºå®å |
| | | // menu:false, æ¯å¦ææä½æ |
| | | // menuTitle:xxx, æä½æ æ é¢ |
| | | } |
| | |
| | | //ç¨æ·å |
| | | username: "admin", |
| | | //å¯ç |
| | | password: "admin", |
| | | password: "", |
| | | selectInput:'', |
| | | //䏿inputæ°æ® |
| | | value:'管çç»', |
| | |
| | | loginByUsername(userInfo.deptId, userInfo.roleId, userInfo.username, userInfo.password, userInfo.type, userInfo.key,).then(res => { |
| | | const data = res.data; |
| | | if (data.code === 200) { |
| | | // commit('SET_TOKEN', data.obj.sessionInfo.token); |
| | | // commit('SET_REFRESH_TOKEN', data.obj.sessionInfo.token); |
| | | |
| | | commit('SET_TOKEN', data.obj.tokenVO.accessToken); |
| | | commit('SET_REFRESH_TOKEN', data.obj.tokenVO.accessToken); |
| | | commit('DEL_ALL_TAG'); |
| | |
| | | } |
| | | }, |
| | | created() { |
| | | console.log(this.$route); |
| | | if (verifyNull(this.$route.query.type) || (verifyNull(this.$route.query.context) && verifyNull(this.$route.query.content))) { |
| | | this.$message.error("é
ç½®çä¿¡æ¯é误ï¼è¯·åèâ?type=xxx&context=yyy¶m=zzzâè¿ç§å½¢å¼ãå
¶ä¸typeæ¯ä¸å¡ç±»åï¼æé¾æ¥ç±»åï¼ï¼contextæ¯UIä¸ä¸æçåç§°"); |
| | | return false; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <basic-container> |
| | | <avue-crud :data="data" |
| | | :option="option"> |
| | | </avue-crud> |
| | | </basic-container> |
| | | </template> |
| | | |
| | | <script> |
| | | import basicOption from '@/option/user/basic-option' |
| | | export default { |
| | | name: "userManage", |
| | | data() { |
| | | return { |
| | | data: [ |
| | | { |
| | | id: 1, |
| | | name: 'å¼ ä¸', |
| | | sex: 'ç·' |
| | | }, { |
| | | id: 2, |
| | | name: 'æå', |
| | | sex: '女' |
| | | }, |
| | | { |
| | | id: 1, |
| | | name: 'å¼ ä¸', |
| | | sex: 'ç·' |
| | | }, { |
| | | id: 2, |
| | | name: 'æå', |
| | | sex: '女' |
| | | }, |
| | | { |
| | | id: 1, |
| | | name: 'å¼ ä¸', |
| | | sex: 'ç·' |
| | | }, { |
| | | id: 2, |
| | | name: 'æå', |
| | | sex: '女' |
| | | }, { |
| | | id: 1, |
| | | name: 'å¼ ä¸', |
| | | sex: 'ç·' |
| | | }, { |
| | | id: 2, |
| | | name: 'æå', |
| | | sex: '女' |
| | | } |
| | | , { |
| | | id: 1, |
| | | name: 'å¼ ä¸', |
| | | sex: 'ç·' |
| | | }, { |
| | | id: 2, |
| | | name: 'æå', |
| | | sex: '女' |
| | | } |
| | | , { |
| | | id: 1, |
| | | name: 'å¼ ä¸', |
| | | sex: 'ç·' |
| | | }, { |
| | | id: 2, |
| | | name: 'æå', |
| | | sex: '女' |
| | | } |
| | | , { |
| | | id: 1, |
| | | name: 'å¼ ä¸', |
| | | sex: 'ç·' |
| | | }, { |
| | | id: 2, |
| | | name: 'æå', |
| | | sex: '女' |
| | | } |
| | | , { |
| | | id: 1, |
| | | name: 'å¼ ä¸', |
| | | sex: 'ç·' |
| | | }, { |
| | | id: 2, |
| | | name: 'æå', |
| | | sex: '女' |
| | | } |
| | | , { |
| | | id: 1, |
| | | name: 'å¼ ä¸', |
| | | sex: 'ç·' |
| | | }, { |
| | | id: 2, |
| | | name: 'æå', |
| | | sex: '女' |
| | | } |
| | | , { |
| | | id: 1, |
| | | name: 'å¼ ä¸', |
| | | sex: 'ç·' |
| | | }, { |
| | | id: 2, |
| | | name: 'æå', |
| | | sex: '女' |
| | | } |
| | | , { |
| | | id: 1, |
| | | name: 'å¼ ä¸', |
| | | sex: 'ç·' |
| | | }, { |
| | | id: 2, |
| | | name: 'æå', |
| | | sex: '女' |
| | | } |
| | | ], |
| | | option: { |
| | | ...basicOption, |
| | | column: [ |
| | | { |
| | | label: 'å§å', |
| | | prop: 'name', |
| | | search:true |
| | | }, { |
| | | label: 'æ§å«', |
| | | prop: 'sex', |
| | | search:true |
| | | } |
| | | ] |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |