From d0b2563e29ab723b68c70855375a37c76471eb26 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期二, 18 六月 2024 16:34:18 +0800
Subject: [PATCH] 登录页布局修改-启动流程action样式配置
---
Source/plt-web/plt-web-ui/src/components/actions/handlers.js | 4
Source/plt-web/plt-web-ui/public/img/login-background.png | 0
Source/plt-web/plt-web-ui/src/page/login/userlogin.vue | 3
Source/plt-web/plt-web-ui/src/store/modules/user.js | 12
Source/plt-web/plt-web-ui/src/components/actions/base/startWorkFlow.vue | 144 +++++++++
Source/plt-web/plt-web-ui/src/components/actions/base/StartWorkflowAction.js | 72 +++-
Source/plt-web/plt-web-ui/public/img/Group.png | 0
Source/plt-web/plt-web-ui/public/img/image.png.png | 0
Source/plt-web/plt-web-ui/src/styles/login.scss | 20 -
Source/plt-web/plt-web-ui/src/components/dynamic-components/dynamic-button.vue | 13
Source/plt-web/plt-web-ui/src/views/custom-ui/testFileTable.vue | 532 +++++++++++++++++++++++++++++++++++
Source/plt-web/plt-web-ui/public/img/login-bg.png | 0
Source/plt-web/plt-web-ui/src/page/login/index.vue | 51 +--
Source/plt-web/plt-web-ui/src/api/user.js | 4
14 files changed, 765 insertions(+), 90 deletions(-)
diff --git a/Source/plt-web/plt-web-ui/public/img/Group.png b/Source/plt-web/plt-web-ui/public/img/Group.png
new file mode 100644
index 0000000..9ffeefa
--- /dev/null
+++ b/Source/plt-web/plt-web-ui/public/img/Group.png
Binary files differ
diff --git a/Source/plt-web/plt-web-ui/public/img/image.png.png b/Source/plt-web/plt-web-ui/public/img/image.png.png
new file mode 100644
index 0000000..86cfdeb
--- /dev/null
+++ b/Source/plt-web/plt-web-ui/public/img/image.png.png
Binary files differ
diff --git a/Source/plt-web/plt-web-ui/public/img/login-background.png b/Source/plt-web/plt-web-ui/public/img/login-background.png
new file mode 100644
index 0000000..9d61111
--- /dev/null
+++ b/Source/plt-web/plt-web-ui/public/img/login-background.png
Binary files differ
diff --git a/Source/plt-web/plt-web-ui/public/img/login-bg.png b/Source/plt-web/plt-web-ui/public/img/login-bg.png
new file mode 100644
index 0000000..b5e04b8
--- /dev/null
+++ b/Source/plt-web/plt-web-ui/public/img/login-bg.png
Binary files differ
diff --git a/Source/plt-web/plt-web-ui/src/api/user.js b/Source/plt-web/plt-web-ui/src/api/user.js
index b3d90d9..9bb5ea7 100644
--- a/Source/plt-web/plt-web-ui/src/api/user.js
+++ b/Source/plt-web/plt-web-ui/src/api/user.js
@@ -1,7 +1,7 @@
import request from '@/router/axios';
import website from "@/config/website";
-export const loginByUsername = (tenantId, deptId, roleId, username, password, type, key) => request({
+export const loginByUsername = (tenantId, deptId, roleId, userId, password, type, key) => request({
url: '/api/framework/loginController/login',
method: 'post',
headers: {
@@ -13,7 +13,7 @@
},
params: {
tenantId,
- username,
+ userId,
password,
grant_type: (website.captchaMode ? "captcha" : "password"),
scope: "all",
diff --git a/Source/plt-web/plt-web-ui/src/components/actions/base/StartWorkflowAction.js b/Source/plt-web/plt-web-ui/src/components/actions/base/StartWorkflowAction.js
index 5d67215..ab77ad8 100644
--- a/Source/plt-web/plt-web-ui/src/components/actions/base/StartWorkflowAction.js
+++ b/Source/plt-web/plt-web-ui/src/components/actions/base/StartWorkflowAction.js
@@ -4,34 +4,36 @@
import {paramLow,callPreEvent, callPostEvent} from '../BaseAction';
import {validatenull} from "@/util/validate";
import Vue from "vue";
+import workActionDialog from "@/components/actions/base/startWorkFlow"
+
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;
- }
-
- //楠岃瘉涓嶅厑璁稿惎鍔ㄧ殑鏉′欢
- if(!validatenull(options.paramVOS.checknotprocess)) {
- let notprocess = options.paramVOS.checknotprocess.split('&');
- let checknotprocess=false;
- notprocess.forEach((item,i)=>{
- if (options.dataStore[0][item.split('=')[0]] == item.split('=')[1]) {
- checknotprocess=true;
- return false;
- }
- })
- if (checknotprocess) {
- Vue.prototype.$message.error(replaceFreeMarker(options.paramVOS.checknotprocessmsg,options.dataStore,{}) || "褰撳墠鏁版嵁涓嶅厑璁稿彂璧锋祦绋�");
- return false;
- }
- }
+ // 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;
+ // }
+ //
+ // //楠岃瘉涓嶅厑璁稿惎鍔ㄧ殑鏉′欢
+ // if(!validatenull(options.paramVOS.checknotprocess)) {
+ // let notprocess = options.paramVOS.checknotprocess.split('&');
+ // let checknotprocess=false;
+ // notprocess.forEach((item,i)=>{
+ // if (options.dataStore[0][item.split('=')[0]] == item.split('=')[1]) {
+ // checknotprocess=true;
+ // return false;
+ // }
+ // })
+ // if (checknotprocess) {
+ // Vue.prototype.$message.error(replaceFreeMarker(options.paramVOS.checknotprocessmsg,options.dataStore,{}) || "褰撳墠鏁版嵁涓嶅厑璁稿彂璧锋祦绋�");
+ // return false;
+ // }
+ // }
callPreEvent(options, doBefore, function (options) {
showStartWindow(options, function () {
@@ -47,7 +49,29 @@
*/
export const showStartWindow = (options,callback)=> {
const paramVOS = options.paramVOS;
+ // if (!paramVOS['form'] && !paramVOS['context']) {
+ // Vue.prototype.$message.error("鎸夐挳閰嶇疆涓嶆纭�");
+ // return false;
+ // }
+ const dialogConstructor = Vue.extend(workActionDialog);
+ 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;
}
/**
diff --git a/Source/plt-web/plt-web-ui/src/components/actions/base/startWorkFlow.vue b/Source/plt-web/plt-web-ui/src/components/actions/base/startWorkFlow.vue
new file mode 100644
index 0000000..5c8cdb1
--- /dev/null
+++ b/Source/plt-web/plt-web-ui/src/components/actions/base/startWorkFlow.vue
@@ -0,0 +1,144 @@
+<template>
+ <el-dialog v-dialogDrag
+ append-to-body="true"
+ :close-on-click-modal="false"
+ :destroy-on-close="true"
+ :visible.sync="visible"
+ :width="width"
+ class="avue-dialog"
+ title="鍚姩娴佺▼"
+ top="0"
+ style="margin-top: -10% !important;"
+ @close="dialogClose">
+
+ <el-form :model="saveParam" :rules="rules" class="demo-form-inline" label-position="left" label-width="auto">
+ <el-form-item label="娴佺▼妯℃澘">
+ <el-input v-model="saveParam.modelName" disabled placeholder="娴佺▼妯℃澘"></el-input>
+ </el-form-item>
+ <el-form-item label="娴佺▼鍚嶇О" prop="processName">
+ <el-input v-model="saveParam.processName" placeholder="娴佺▼鍚嶇О">
+ </el-input>
+ </el-form-item>
+ <el-form-item label="娴佺▼鎻忚堪">
+ <el-input v-model="saveParam.processDesc" :rows="4" placeholder="娴佺▼鎻忚堪" type="textarea">
+ </el-input>
+ </el-form-item>
+ </el-form>
+
+ <el-divider></el-divider>
+ <div class="btns-icon">
+ <el-button circle icon="el-icon-star-off" @click="handleCollect"></el-button>
+ </div>
+ <el-form :model="collectParam" class="demo-form-inline" label-position="left" label-width="auto">
+ <el-form-item v-for="(item, index) in initFrom" :key="index" :label="item.taskName">
+ <el-select v-model="collectParam.flowTaskUsers[index]['userId']" :placeholder="item.taskName" filterable
+ style="width: 100%;" @change="handleSelect($event, index)">
+ <el-option v-for="(key, keyi) in typeName" :key="keyi" :label="key.userNames"
+ :value="key.userId"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="handleCancel">鍙� 娑�</el-button>
+ <el-button type="primary" @click="handleConfirm">纭� 瀹�</el-button>
+ </div>
+
+ </el-dialog>
+</template>
+
+<script>
+import {validatenull} from "@/util/validate";
+
+export default {
+ name: "startWorkFlow",
+ props: {
+ paramVOS: {
+ type: Object,
+ default: {}
+ },
+ sourceData: {
+ //鎵�灞炲尯鍩熺殑涓婁竴鍖哄煙閫変腑鏁版嵁
+ type: Object,
+ default: {}
+ },
+ dataStore: {
+ //寮圭獥鏃舵寜閽墍灞炲尯鍩熼�変腑鏁版嵁
+ type: Array,
+ default: []
+ },
+ },
+ data() {
+ return {
+ visible: false,
+ saveParam: {},
+ users: [],
+ collectParam: {},
+ initFrom: [],
+ typeName: [],
+ }
+ },
+ watch: {
+ users: {
+ handler(val) {
+ this.collectParam.flowTaskUsers = val
+ },
+ deep: true,
+ immediate: true
+ },
+ parameter: {
+ handler(newval, oldval) {
+ this.saveParam = Object.assign({processName: '', processDesc: ''}, newval);
+ },
+ deep: true,
+ immediate: true
+ }
+ },
+ computed: {
+ fullscreen() {
+ if (this.paramVOS.width || this.paramVOS.height) {
+ return false;
+ } else if (this.paramVOS.form) {
+ return false;
+ }
+ return true;
+ },
+ 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 "40%";
+ }
+ },
+ },
+ methods: {
+ // 鍏抽棴寮圭獥
+ dialogClose() {
+ this.visible = false;
+ },
+
+ handleSelect() {
+
+ },
+
+ handleCollect() {
+
+ },
+
+ handleCancel() {
+ this.dialogClose();
+ },
+
+ handleConfirm() {
+
+ }
+ }
+}
+</script>
+
+<style scoped lang="scss">
+
+</style>
diff --git a/Source/plt-web/plt-web-ui/src/components/actions/handlers.js b/Source/plt-web/plt-web-ui/src/components/actions/handlers.js
index 9838f82..ec54208 100644
--- a/Source/plt-web/plt-web-ui/src/components/actions/handlers.js
+++ b/Source/plt-web/plt-web-ui/src/components/actions/handlers.js
@@ -27,6 +27,10 @@
rev: () => {import("@/components/actions/base/RevisionAction").then(module => {
module.doAction(options,callback);
})},
+ //鍚姩娴佺▼
+ launchworkflow: () => {import("@/components/actions/base/StartWorkflowAction").then(module => {
+ module.doAction(options,callback);
+ })},
};
if (handlers[type]) {
handlers[type]()
diff --git a/Source/plt-web/plt-web-ui/src/components/dynamic-components/dynamic-button.vue b/Source/plt-web/plt-web-ui/src/components/dynamic-components/dynamic-button.vue
index d9834d3..4007355 100644
--- a/Source/plt-web/plt-web-ui/src/components/dynamic-components/dynamic-button.vue
+++ b/Source/plt-web/plt-web-ui/src/components/dynamic-components/dynamic-button.vue
@@ -4,8 +4,9 @@
<div v-if="type === 'table' || type === 'TreeTable'">
<!--top灞曠ず琛ㄦ牸涓婃柟鍖哄煙 menu灞曠ず琛ㄦ牸鎿嶄綔鏍忓尯鍩� 鏃犲氨鏄粯璁� -->
<el-tooltip v-if="LocationType === 'top'" v-for="item in basicButtonList.top" :content="item.description || item.name" placement="top">
- <el-button :key="item.oid" :icon="item.paramVOS.icon"
- :type="item.paramVOS.btnType || 'primary'" plain
+ <el-button :key="item.oid"
+ :icon="item.paramVOS && item.paramVOS.icon ? item.paramVOS.icon :''"
+ :type="item.paramVOS && item.paramVOS.btnType ? item.paramVOS.btnType : 'primary'" plain
size="small"
@click="buttonClick(item)">{{ item.name }}</el-button>
</el-tooltip>
@@ -28,8 +29,8 @@
<div v-else-if="type === 'form'">
<el-tooltip v-for="item in basicButtonList" :content="item.description || item.name" placement="top">
<el-button :key="item.oid"
- :icon="item.paramVOS.icon"
- :type="item.paramVOS.btnType || 'primary'"
+ :icon="item.paramVOS && item.paramVOS.icon ? item.paramVOS.icon :''"
+ :type="item.paramVOS && item.paramVOS.btnType ? item.paramVOS.btnType : 'primary'" plain
plain
size="small"
@click="buttonClick(item)">{{ item.name }}</el-button>
@@ -38,8 +39,8 @@
<div v-else-if="type === 'tree'" class="tree-buttons">
<el-tooltip v-for="item in basicButtonList" :content="item.description || item.name" placement="top">
<el-button :key="item.oid"
- :icon="item.paramVOS.icon"
- :type="item.paramVOS.btnType || 'primary'"
+ :icon="item.paramVOS && item.paramVOS.icon ? item.paramVOS.icon :''"
+ :type="item.paramVOS && item.paramVOS.btnType ? item.paramVOS.btnType : 'primary'" plain
plain
size="small"
@click="buttonClick(item)">{{ item.name }}</el-button>
diff --git a/Source/plt-web/plt-web-ui/src/page/login/index.vue b/Source/plt-web/plt-web-ui/src/page/login/index.vue
index 610911e..2307ee0 100644
--- a/Source/plt-web/plt-web-ui/src/page/login/index.vue
+++ b/Source/plt-web/plt-web-ui/src/page/login/index.vue
@@ -4,34 +4,6 @@
@keyup.enter.native="handleLogin">
<top-color v-show="false"></top-color>
<div class="login-weaper animated bounceInDown">
- <div class="login-left">
- <div class="login-time">
- {{time}}
- </div>
- <p class="title">{{ $t('login.info') }}</p>
- <div style="font-size: 15px">
- <span>----------------------------------------------</span>
- <br>
- <span>绠$悊绉熸埛缂栧彿锛�000000</span>
- <br>
- <span>瓒呯骇绠$悊鍛樿处鍙�: admin / admin</span>
- <br>
- <span>浜轰簨璐﹀彿: hr / hr</span>
- <br>
- <span>缁忕悊璐﹀彿: manager / manager</span>
- <br>
- <span>鑰佹澘璐﹀彿: boss / boss</span>
- <br>
- <span>----------------------------------------------</span>
- <br>
- <span>鏅�氱鎴风紪鍙凤細璇﹁绉熸埛绠$悊妯″潡</span>
- <br>
- <span>绉熸埛绠$悊鍛樿处鍙�: admin / admin</span>
- <br>
- <span>----------------------------------------------</span>
- </div>
- <!--<img class="img" src="/img/logo.png" alt="">-->
- </div>
<div class="login-border">
<div class="login-main">
<h4 class="login-title">
@@ -40,15 +12,15 @@
</h4>
<userLogin v-if="activeName==='user'"></userLogin>
<thirdLogin v-else-if="activeName==='third'"></thirdLogin>
- <div class="login-menu">
- <a href="#" @click.stop="activeName='user'">{{ $t('login.userLogin') }}</a>
- <!--<a href="#" @click.stop="activeName='code'">{{ $t('login.phoneLogin') }}</a>-->
- <a href="#" @click.stop="activeName='third'">{{ $t('login.thirdLogin') }}</a>
- <a :href="website.ssoUrl + website.redirectUri">{{ $t('login.ssoLogin') }}</a>
- </div>
</div>
</div>
+ </div>
+ <div class="login-bg-image">
+ <el-image
+ style="width: 20vw; height: 44vh"
+ :src="require('../../../public/img/Group.png')"
+ fit="fill"></el-image>
</div>
</div>
</template>
@@ -147,6 +119,15 @@
};
</script>
-<style lang="scss">
+<style lang="scss" scoped>
+.login-container {
+ background: #fff url('../../../public/img/login-background.png')no-repeat center;
+ background-size: 100% 100%; /* 鎴栬�� background-size: 100% 100%; */
+}
+.login-bg-image{
+ position: fixed;
+ left: 10%;
+ top: 35%;
+}
</style>
diff --git a/Source/plt-web/plt-web-ui/src/page/login/userlogin.vue b/Source/plt-web/plt-web-ui/src/page/login/userlogin.vue
index 6ef68e3..0e775ec 100644
--- a/Source/plt-web/plt-web-ui/src/page/login/userlogin.vue
+++ b/Source/plt-web/plt-web-ui/src/page/login/userlogin.vue
@@ -189,7 +189,8 @@
}
this.$router.push({path: this.tagWel.value});
loading.close();
- }).catch(() => {
+ }).catch((err) => {
+ console.log('err',err)
loading.close();
});
diff --git a/Source/plt-web/plt-web-ui/src/store/modules/user.js b/Source/plt-web/plt-web-ui/src/store/modules/user.js
index 3b04ff9..2506220 100644
--- a/Source/plt-web/plt-web-ui/src/store/modules/user.js
+++ b/Source/plt-web/plt-web-ui/src/store/modules/user.js
@@ -62,13 +62,13 @@
//鏍规嵁鐢ㄦ埛鍚嶇櫥褰�
LoginByUsername({commit}, userInfo) {
return new Promise((resolve, reject) => {
- loginByUsername(userInfo.tenantId, userInfo.deptId, userInfo.roleId, userInfo.username, md5(userInfo.password), userInfo.type, userInfo.key,).then(res => {
+ loginByUsername(userInfo.tenantId, userInfo.deptId, userInfo.roleId, userInfo.username, userInfo.password, userInfo.type, userInfo.key,).then(res => {
const data = res.data;
- if (data.success) {
- commit('SET_TOKEN', data.obj.sessionInfo.token);
- commit('SET_REFRESH_TOKEN', data.obj.sessionInfo.token);
- commit('SET_TENANT_ID', data.tenant_id);
- commit('SET_USER_INFO', data.obj.sessionInfo);
+ if (data.code === 200) {
+ commit('SET_TOKEN', data.obj.tokenVO.accessToken);
+ commit('SET_REFRESH_TOKEN', data.obj.tokenVO.accessToken);
+ // commit('SET_TENANT_ID', data.tenant_id);
+ // commit('SET_USER_INFO', data.obj.sessionInfo); 鐢ㄦ埛淇℃伅
commit('DEL_ALL_TAG');
commit('CLEAR_LOCK');
} else {
diff --git a/Source/plt-web/plt-web-ui/src/styles/login.scss b/Source/plt-web/plt-web-ui/src/styles/login.scss
index e6a7b13..3760c17 100644
--- a/Source/plt-web/plt-web-ui/src/styles/login.scss
+++ b/Source/plt-web/plt-web-ui/src/styles/login.scss
@@ -5,15 +5,15 @@
width: 100%;
height: 100%;
margin: 0 auto;
- background-image: url("/img/bg/bg.jpg");
background-size: 100% 100%;
}
.login-weaper {
margin: 0 auto;
- width: 1000px;
- box-shadow: -4px 5px 10px rgba(0, 0, 0, 0.4);
-
+ width: 500px;
+ border-radius: 20px;
+ background-color: rgba(256, 256, 256, 0.6);
+ box-shadow: -4px 5px 10px rgba(0, 0, 0, 0.3);
.el-input-group__append {
border: none;
}
@@ -62,18 +62,6 @@
font-size: 30px;
letter-spacing: 2px;
}
-
-.login-border {
- border-left: none;
- border-top-right-radius: 5px;
- border-bottom-right-radius: 5px;
- color: #fff;
- background-color: #fff;
- width: 50%;
- float: left;
- box-sizing: border-box;
-}
-
.login-main {
margin: 0 auto;
width: 65%;
diff --git a/Source/plt-web/plt-web-ui/src/views/custom-ui/testFileTable.vue b/Source/plt-web/plt-web-ui/src/views/custom-ui/testFileTable.vue
new file mode 100644
index 0000000..25ef3a8
--- /dev/null
+++ b/Source/plt-web/plt-web-ui/src/views/custom-ui/testFileTable.vue
@@ -0,0 +1,532 @@
+<template>
+ <basic-container>
+ <avue-crud ref="crud"
+ v-model="form"
+ :before-open="beforeOpen"
+ :data="data"
+ :option="option"
+ :page.sync="page"
+ :table-loading="loading"
+ @row-del="rowDel"
+ @search-change="searchChange"
+ @search-reset="searchReset"
+ @selection-change="selectionChange"
+ @row-click="selectedRowClick"
+ @current-change="currentChange"
+ @size-change="sizeChange"
+ @refresh-change="refreshChange"
+ @on-load="onLoad">
+ <template slot="menuLeft">
+ <el-button v-if="hasUpload" icon="el-icon-upload2"
+ plain
+ size="small"
+ type="primary"
+ @click="handleUpload">涓� 浼�
+ </el-button>
+ <el-button v-if="hasEdit" icon="el-icon-edit"
+ plain
+ size="small"
+ type="primary"
+ @click="handleEdit">淇� 鏀�
+ </el-button>
+ <el-button v-if="hasDownload" icon="el-icon-download"
+ plain
+ size="small"
+ type="primary"
+ @click="handleDownload">涓� 杞�
+ </el-button>
+ <el-button v-if="hasDel" icon="el-icon-delete"
+ plain
+ size="small"
+ type="danger"
+ @click="handleDelete">鍒� 闄�
+ </el-button>
+ </template>
+ <template slot="menu" slot-scope="scope">
+ <el-button v-if="hasDownload" icon="el-icon-download"
+ size="small"
+ type="text"
+ @click="handleDownload(scope.row)">涓嬭浇
+ </el-button>
+ </template>
+ </avue-crud>
+ <el-dialog :visible.sync="attachBox"
+ append-to-body
+ title="闄勪欢绠$悊"
+ width="555px">
+ <avue-form ref="form" v-model="attachForm" :option="attachOption" :upload-after="uploadAfter"
+ :upload-before="uploadBefore" :upload-error="uploadError">
+ </avue-form>
+ </el-dialog>
+ </basic-container>
+</template>
+<script>
+// import {getList, getFile, upload, update, remove, download} from "@/api/resource/file";
+import {validatenull} from "@/util/validate";
+import func from "@/util/func";
+
+export default {
+ name: "testFileTable",
+ // props: ["options", "ownbizOid"],
+ props:{
+ options:{
+ type:Object,
+ default:{}
+ },
+ ownbizOid:{
+ type:String,
+ default: ""
+ },
+ sourceData:{
+ type:Array,
+ default:[]
+ }
+ },
+ /**
+ * 棣栨鍔犺浇鐖剁骇琛ㄦ牸濡傛灉涓虹┖ 浼犵殑榛樿鏉′欢
+ currentButtonKey: VIEW
+ ownbizOid: share
+ ownBtmName: share
+ fileDocClassify: ADMIN_SHARE
+ fileDocClassifyName: 绠$悊鍛樺叡浜枃浠�
+ page: 1
+ limit: 10
+ **/
+ /**
+ *棣栨鍔犺浇鐖剁骇琛ㄦ牸濡傛灉瀛樺湪鏁版嵁 鍜� 琛ㄦ牸琛屽叏閫� 浼犵殑榛樿鏉′欢
+ currentButtonKey: VIEW
+ ownbizOid: 0 // 鍗曢�� 閫夋嫨褰撳墠琛屼紶褰撳墠琛宨d
+ ownBtmName: 0 // 鍗曢�� 閫夋嫨褰撳墠琛屼紶褰撳墠鍒嗙被鍚嶇О
+ fileDocClassify: !=processAuditSuggest
+ fileDocClassifyName: 绠$悊鍛樺叡浜枃浠�
+ page: 1
+ limit: 10
+ */
+ data() {
+ return {
+ form: {},
+ query: {},
+ params: {},
+ loading: false,
+ // hasPage: this.options.hasPage || false,
+ page: {
+ pageSize: 10,
+ currentPage: 1,
+ total: 0
+ },
+ attachBox: false,
+ selectionList: [],
+ //榛樿涓簄ull鍏ㄩ儴鏄痶rue
+ hasUpload: validatenull(this.options.hasUpload) ? true : this.options.hasUpload,
+ hasEdit: validatenull(this.options.hasEdit) ? true : this.options.hasEdit,
+ hasDel: validatenull(this.options.hasDel) ? true : this.options.hasDel,
+ hasDownload: validatenull(this.options.hasDownload) ? true : this.options.hasDownload,
+ option: {
+ height: (this.options.tableHeight ? this.options.tableHeight : '300'),
+ calcHeight: 30,
+ tip: false,
+ searchShow: false,
+ searchMenuSpan: 6,
+ border: true,
+ index: true,
+ viewBtn: true,
+ refreshBtn: false,
+ selection: true,
+ dialogClickModal: false,
+ addBtn:false,
+ column: [
+ {
+ label: "鏂囦欢鍚嶇О",
+ prop: "name",
+ search: true,
+ },
+ {
+ label: "鏂囦欢澶у皬",
+ prop: "fileSize",
+ formatter: function (d) {
+ if (!d.fileSize || d.fileSize == null || d.fileSize * 1 == 0 || isNaN(d.fileSize * 1)) {
+ return "鏈煡澶у皬";
+ } else {
+ //鍘熷澶у皬鏄疊
+ var filesize = d.fileSize * 1;
+ if (filesize > 1024 * 1024 * 1024 * 1024) {
+ return parseInt(filesize / (1024 * 1024 * 1024 * 1024)) + "TB";
+ } else if (filesize > 1024 * 1024 * 1024) {
+ return parseInt(filesize / (1024 * 1024 * 1024)) + "GB";
+ } else if (filesize > 1024 * 1024) {
+ return parseInt(filesize / (1024 * 1024)) + "MB";
+ } else if (filesize > 1024) {
+ return parseInt(filesize / 1024) + "KB";
+ } else {
+ return filesize + "B";
+ }
+ }
+ }
+ },
+ {
+ label: "鍒涘缓鑰�",
+ prop: "creator"
+ },
+ {
+ label: "鍒涘缓鏃堕棿",
+ prop: "createTime"
+ },
+ ]
+ },
+ columnType: {
+ text: "input",
+ combox: "select",
+ truefalse: "switch",
+ number: "number",
+ textarea: "textarea",
+ datetime: "datetime",
+ date: "date",
+ refer: "refer",
+ },
+ data: [],
+ attachForm: {},
+ attachOption: {
+ submitBtn: false,
+ emptyBtn: false,
+ column: [{
+ prop: 'fileDocClassify',
+ label: '鏂囦欢绫诲瀷',
+ props: {
+ label: 'value',
+ value: 'key'
+ },
+ change: () => {
+ (!!this.options.fileDocClassifyCombox) && this.changeFun('fileDocClassify');
+ },
+ blur: () => {
+ (!this.options.fileDocClassifyCombox) && this.changeFun('fileDocClassify');
+ },
+ value: this.options.fileDocClassify || "ADMIN_SHARE",
+ type: (!this.options.fileDocClassifyCombox) ? 'input' : 'select',
+ dicData: (this.options.fileDocClassifyCombox || []),//[{key: 'text', value: '鏂囨湰妗�'}]
+ display: (!!this.options.fileDocClassifyCombox)
+ }, {
+ label: '闄勪欢涓婁紶',
+ prop: 'attachFile',
+ type: 'upload',
+ dragFile: true,
+ showFileList: false,
+ accept: this.options.uploadAccept || 'file',
+ loadText: '鏂囦欢涓婁紶涓紝璇风◢绛�',
+ span: 24,
+ propsHttp: {
+ res: 'data'
+ },
+ data: {
+ ownbizOid: this.options.ownbizOid || "share",
+ ownBtmName: this.options.ownbizBtm || "share",
+ fileDocClassify: this.options.fileDocClassify || "ADMIN_SHARE",
+ fileDocClassifyName: this.options.fileDocClassifyName || "绠$悊鍛樺叡浜枃浠�"
+ },
+ action: "/api/ubcs-resource/fileController/uploadFile"
+ }
+ ]
+ }
+ };
+ },
+ computed: {
+ oids() {
+ let oids = [];
+ this.selectionList.forEach(ele => {
+ oids.push(ele.oid);
+ });
+ return oids.join(",");
+ }
+ },
+ created() {
+ this.setFormItem();
+ this.setParams()
+ },
+ mounted() {
+ console.log('sourceData',this.sourceData)
+ },
+ watch: {
+ ownbizOid(val) {
+ this.setParams()
+ this.refreshChange()
+ },
+ },
+ methods: {
+ setFormItem() {
+ /*this.options.formItems=[{
+ field: 'fileDocClassify11',
+ title: '鏂囦欢绫诲瀷',
+ type: 'combox',
+ data: [{key: 'text', value: '鏂囨湰妗�'},{key: 'number', value: '鏁板瓧妗�'}]
+ }]*/
+ if (this.options && this.options.formItems) {
+ this.options.formItems.forEach(item => {
+ // 璁剧疆琛ㄥ崟鏍¢獙鐨勮鍒欙紝鏂囨湰
+ let message = "璇烽�夋嫨";
+ let trigger = "change";
+ if (item.type === "text") {
+ message = "璇疯緭鍏�";
+ trigger = "blur";
+ }
+ this.attachOption.column.push({
+ ...item,
+ label: item.title,
+ prop: item.field,
+ display: !item.hidden,
+ value: item.defaultValue,
+ disabled: item.readOnly,
+ type: this.columnType[item.type],
+ dicData: this.getDataList(item.type, item.data),
+ change: () => {
+ if (item.type !== "text" && item.type !== "number" && item.type !== "textarea") {
+ this.changeFun(item.field);
+ }
+ },
+ blur: () => {
+ if (item.type == "text" || item.type == "number" || item.type == "textarea") {
+ this.changeFun(item.field);
+ }
+ },
+ rules: [
+ {
+ required: item.required,
+ message: `璇�${message}${item.title}`,
+ trigger,
+ },
+ {
+ // 濡傛灉娌℃湁姝e垯鍒欏尮閰嶄换浣曞瓧绗�
+ pattern: item.verify ? item.verify : /[\s\S.]*/g,
+ message: item.tooltips,
+ trigger,
+ },
+ ],
+ props: {
+ label: 'value',
+ value: 'key'
+ }
+ })
+ })
+ }
+ },
+ changeFun(prop) {
+ this.attachOption.column[1].data[prop] = this.attachForm[prop]
+ },
+ getDataList(type, dicData) {
+ if (type === "truefalse") {
+ return [
+ {
+ key: false,
+ value: "鍚�",
+ },
+ {
+ key: true,
+ value: "鏄�",
+ },
+ ];
+ } else if (type === "combox") {
+ return dicData;
+ }
+ return [];
+ },
+ setParams() {
+ var queryMap = {
+ currentButtonKey: 'VIEW',
+ ownbizOid: this.options.ownbizOid || "share",
+ ownBtmName: this.options.ownbizBtm || "share",
+ fileDocClassify: this.options.fileDocClassify || "ADMIN_SHARE",
+ fileDocClassifyName: this.options.fileDocClassifyName || "绠$悊鍛樺叡浜枃浠�"
+ };
+ if (this.options.where) {
+ Object.assign(queryMap, this.options.where);
+ }
+ this.params = queryMap;
+
+ if (!this.options.pageObject) {
+ this.options.pageObject = {
+ limit: 10,
+ page: 1
+ };
+ }
+ this.page.pageSize = this.options.pageObject.limit;
+ this.page.currentPage = this.options.pageObject.page;
+
+ this.attachOption.column[1].data.ownbizOid = this.options.ownbizOid || "share";
+ this.attachOption.column[1].data.ownBtmName = this.options.ownbizBtm || "share";
+ this.attachOption.column[1].data.fileDocClassify = this.options.fileDocClassify || "ADMIN_SHARE";
+ this.attachOption.column[1].data.fileDocClassifyName = this.options.fileDocClassifyName || "绠$悊鍛樺叡浜枃浠�"
+
+ },
+ handleUpload() {
+ this.attachOption.column[1].data.fileOid = '';
+ delete this.attachOption.column[1].data.oid;
+ delete this.attachOption.column[1].data.updateFileFlag;
+ this.attachBox = true;
+ },
+ handleEdit() {
+ if (this.selectionList.length == 0) {
+ this.$message.warning('璇烽�夋嫨闇�瑕佷慨鏀圭殑鏂囦欢')
+ return false;
+ } else if (this.selectionList.length > 1) {
+ this.$message.warning('璇烽�夋嫨涓�鏉℃暟鎹�')
+ return false;
+ }
+ this.attachOption.column[1].data.fileOid = this.oids;
+ this.attachOption.column[1].data.oid = this.oids;
+ this.attachOption.column[1].data.updateFileFlag = true
+ this.attachBox = true;
+ },
+ uploadBefore(file, done, loading, column) {
+ done();
+ },
+ uploadAfter(res, done, loading, column) {
+ this.attachBox = false;
+ this.$message.success('鏂囦欢涓婁紶鎴愬姛')
+ this.refreshChange();
+ done();
+ },
+ uploadError(error, column) {
+ this.$message.error(error || '涓婁紶鏂囦欢鍑虹幇浜嗗紓甯�')
+ },
+ handleDownload(row) {
+ //window.open(`${row.link}`);
+ let data = new FormData();
+ if (row && row.oid) {
+ data.append('fileOids', row.oid)
+ this.downloadFile(data);
+ } else {
+ if (this.selectionList.length === 0) {
+ this.$message.warning("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
+ return;
+ }
+ data.append('fileOids', this.oids)
+ this.downloadFile(data);
+ }
+ },
+ downloadFile(data) {
+ download(data).then(res => {
+ // console.log(res);
+ if (res) {
+ func.downloadFileByBlobHandler(res);
+ }
+ });
+ },
+ rowDel(row) {
+ this.$confirm("纭畾灏嗛�夋嫨鏂囦欢鍒犻櫎?", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning"
+ })
+ .then(() => {
+ return remove([row.oid]);
+ })
+ .then(() => {
+ this.onLoad(this.page);
+ this.$message({
+ type: "success",
+ message: "鎿嶄綔鎴愬姛!"
+ });
+ });
+ },
+ handleDelete() {
+ if (this.selectionList.length === 0) {
+ this.$message.warning("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
+ return;
+ }
+ this.$confirm("纭畾灏嗛�夋嫨鏁版嵁鍒犻櫎?", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning"
+ })
+ .then(() => {
+ return remove(this.oids.split(','));
+ })
+ .then(() => {
+ this.onLoad(this.page);
+ this.$message({
+ type: "success",
+ message: "鎿嶄綔鎴愬姛!"
+ });
+ this.$refs.crud.toggleSelection();
+ });
+ },
+ beforeOpen(done, type) {
+ if (["edit", "view"].includes(type)) {
+ getDetail(this.form.id).then(res => {
+ this.form = res.data.data;
+ });
+ }
+ done();
+ },
+ searchReset() {
+ this.query = {};
+ this.onLoad(this.page);
+ },
+ searchChange(params, done) {
+ this.query = params;
+ this.page.currentPage = 1;
+ this.onLoad(this.page);
+ done();
+ },
+ selectionChange(list) {
+ this.selectionList = list;
+ this.$refs.crud.setCurrentRow(this.selectionList[list.length - 1]);
+ },
+ selectedRowClick(row) {
+ this.selectionList = row;
+ this.$refs.crud.toggleSelection();
+ this.$refs.crud.setCurrentRow(row);
+ this.$refs.crud.toggleRowSelection(row); //閫変腑褰撳墠琛�
+ },
+ selectionClear() {
+ this.selectionList = [];
+ this.$refs.crud.toggleSelection();
+ },
+ currentChange(currentPage) {
+ this.page.currentPage = currentPage;
+ },
+ sizeChange(pageSize) {
+ this.page.pageSize = pageSize;
+ },
+ refreshChange() {
+ this.onLoad(this.page);
+ },
+ onLoad(page, params = {}) {
+ // this.loading = true;
+ // var query = {}
+ // if (this.query) {
+ // for (var key in this.query) {
+ // query['conditionMap["' + key + '"]'] = this.query[key];
+ // }
+ // }
+ // getList(page.currentPage, page.pageSize, Object.assign(params, this.params, query, this.query)).then(res => {
+ // const data = res.data.data;
+ // this.page.total = data.total;
+ // if (this.options.fileDocClassifyCombox) {
+ // this.data = data.records.map(item => {
+ // if (validatenull(item.fileDocClassifyName) && !validatenull(item.fileDocClassify)) {
+ // item.fileDocClassifyName = this.options.fileDocClassifyCombox[item.fileDocClassify] || '';
+ // }
+ // return {
+ // ...item
+ // }
+ // })
+ // } else {
+ // this.data = data.records;
+ // }
+ //
+ // this.loading = false;
+ // this.selectionClear();
+ // }).catch(error => {
+ // this.$message.error(error);
+ // this.loading = false;
+ // });
+ }
+ }
+}
+</script>
+
+<style scoped lang="scss">
+/deep/.el-dialog{
+ height: 20% !important;
+}
+</style>
--
Gitblit v1.9.3