Browse Source

Merge branch 'mdp-lcode-ui-web-2.0.0-qqkj-inner'

master
陈裕财 2 years ago
parent
commit
bdc92b5005
  1. 10
      index.html
  2. 3
      src/api/mdp_pub/mdp_config.js
  3. 2
      src/components/mdp-ui-ext/mdp-expand/FormData.vue
  4. 2
      src/components/mdp-ui-ext/mdp-expand/FormDataItem.vue
  5. 2
      src/components/mdp-ui-ext/mdp-image/Index.vue
  6. 2
      src/components/mdp-ui-ext/mdp-select-tag/TagSelect.vue
  7. 7
      src/components/mdp-ui/index.scss
  8. 43
      src/components/mdp-ui/js/util.js
  9. 94
      src/components/mdp-ui/mdp-date-range/Index.vue
  10. 60
      src/components/mdp-ui/mdp-date/Index.vue
  11. 8
      src/components/mdp-ui/mdp-dialog/Index.vue
  12. 72
      src/components/mdp-ui/mdp-field/Index.vue
  13. 37
      src/components/mdp-ui/mdp-select-table/Index.vue
  14. 9
      src/components/mdp-ui/mdp.scss
  15. 3
      src/components/mdp-ui/mixin/MdpSelectMixin.js
  16. 5
      src/components/mdp-ui/mixin/MdpTableMixin.js
  17. 4
      src/lang/zh.js
  18. 154
      src/views/login/components/login.vue

10
index.html

@ -11,5 +11,15 @@
<script src="./tinymce/tinymce.min.js"></script> <script src="./tinymce/tinymce.min.js"></script>
<div id="app"></div> <div id="app"></div>
<!-- built files will be auto injected --> <!-- built files will be auto injected -->
<script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?2e8c4834ae1ae4b4d240a864a36d726b";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
</body> </body>
</html> </html>

3
src/api/mdp_pub/mdp_config.js

@ -134,6 +134,9 @@ export default {
*/ */
getSupportComponents:function(){ getSupportComponents:function(){
return ['myFocus'] return ['myFocus']
},
getOpenSourceLink:function(){
return "https://gitee.com/qingqinkj218/collections/375320"
} }
} }

2
src/components/mdp-ui-ext/mdp-expand/FormData.vue

@ -127,7 +127,7 @@ import treeTool from '@/components/mdp-ui/js/treeTool.js'
editSubmit: function () { editSubmit: function () {
this.$refs.editForm.validate((valid) => { this.$refs.editForm.validate((valid) => {
if (valid) { if (valid) {
debugger
this.editLoading = true; this.editLoading = true;
let params = Object.assign({}, this.editForm); let params = Object.assign({}, this.editForm);
if(this.isExtInfosCpd){ if(this.isExtInfosCpd){

2
src/components/mdp-ui-ext/mdp-expand/FormDataItem.vue

@ -208,7 +208,7 @@
}, },
onFieldChange(val){ onFieldChange(val){
debugger;
this.$emit('input',this.editForm) this.$emit('input',this.editForm)
this.$emit('change',this.editForm,this.field) this.$emit('change',this.editForm,this.field)

2
src/components/mdp-ui-ext/mdp-image/Index.vue

@ -149,7 +149,7 @@ export default {
} }
}, },
initCurrData(){ initCurrData(){
debugger
var val=this.value var val=this.value
if(!val){ if(!val){
this.myVal=val this.myVal=val

2
src/components/mdp-ui-ext/mdp-select-tag/TagSelect.vue

@ -139,7 +139,7 @@ data() {
methods: { methods: {
// //
initCurrData(){ initCurrData(){
debugger
this.searchTableDatas(); this.searchTableDatas();
}, },

7
src/components/mdp-ui/index.scss

@ -12,10 +12,8 @@
.field-info { .field-info {
align-items: center; align-items: center;
display:inline-flex; display:inline-flex;
margin-left: 10px;
} }
.field-oper { .field-oper {
margin-left: 5px;
margin-right: 5px; margin-right: 5px;
display: none; display: none;
} }
@ -36,7 +34,6 @@
} }
.field-info { .field-info {
margin-left: 10px;
display:inline-flex; display:inline-flex;
align-items: center; align-items: center;
align-content: center; align-content: center;
@ -51,7 +48,6 @@
} }
} }
.field-oper { .field-oper {
margin-left: 5px;
margin-right: 5px; margin-right: 5px;
display: none; display: none;
} }
@ -100,10 +96,7 @@
} }
.dashed-circle { .dashed-circle {
width: 40px;
height: 40px;
border: 2px dashed #000000; border: 2px dashed #000000;
border-radius: 40px/40px;
} }
.field-box:hover .dashed-circle { .field-box:hover .dashed-circle {
border: 2px dashed #409eff; border: 2px dashed #409eff;

43
src/components/mdp-ui/js/util.js

@ -398,5 +398,46 @@ export default {
// 防止反复添加 // 防止反复添加
if(!document.getElementById(id)) document.body.appendChild(a); if(!document.getElementById(id)) document.body.appendChild(a);
a.click(); a.click();
}
},
calcMaxHeight:function(cssSelector) {
var table=cssSelector;
if(typeof cssSelector == 'string'){
table=document.querySelector(cssSelector);
}
var innerHeight=window.innerHeight
var top=150;
if(table!=null){
var rect=table.getBoundingClientRect()
if(rect && rect.top){
top=rect.top;
}
}
var maxTableHeight =innerHeight-top;
return maxTableHeight;
},
calcTableMaxHeight:function(cssSelector) {
var table=cssSelector;
if(typeof cssSelector == 'string'){
table=document.querySelector(cssSelector);
}
var innerHeight=window.innerHeight
var pageHeight=32
var top=150;
var bottomHeight=24
if(table!=null){
var rect=table.getBoundingClientRect()
if(rect && rect.top!=0){
top=rect.top;
}
}
var maxTableHeight =innerHeight-top-pageHeight-bottomHeight;
return maxTableHeight;
},
} }

94
src/components/mdp-ui/mdp-date-range/Index.vue

@ -1,50 +1,52 @@
<template> <template>
<el-date-picker v-if="showStyle=='origin'||showStyle==''||!showStyle" :type="type" :style="styleObj" v-model="dateRange" :value-format="valueFormat" :format="format"
unlink-panels
:range-separator="rangeSepaSrator"
:start-placeholder="startPlaceholder"
:end-placeholder="endPlaceholder"
:default-range="[-30,0]"
@change="onDateRangeChange"
:picker-options="pickerOptions"
></el-date-picker>
<span v-else :class="showStyle=='x'?{'field-box-x':true}:{'field-box':true}" >
<el-avatar v-if="showAvater!=false" class="field-avater" :class="{'dashed-circle':avaterCpd.isNull,disabled:disabled===true,enabled:disabled!==true}" :icon="avaterCpd.icon" :style="{backgroundColor:avaterCpd.color}">{{avaterCpd.innerText}}</el-avatar>
<span class="field-info" :class="{disabled:disabled===true,enabled:disabled!==true}">
<slot name="field-info" :value="dateRange">
<span v-if="showStyle=='x'">
<span class="field-value" v-if="!avaterCpd.isNull">{{avaterCpd.innerText}} </span>
<span class="field-value" v-else><span class="label-font-color"></span></span>
<slot name="label">
<span class="field-label">{{label||'请选择日期'}}</span>
</slot>
</span>
<span v-else>
<slot name="value" :value="myVal" :field="{label:label,color:color,icon:icon,disabled:disabled,clearable:clearable}">
<span v-if="!avaterCpd.isNull">{{avaterCpd.innerText}}</span>
<span v-else class="label-font-color"></span>
</slot>
</span>
</slot>
</span>
<span v-if="disabled!==true" class="field-oper" :class="{disabled:disabled===true,enabled:disabled!==true}">
<el-date-picker :type="type" :style="styleObj" v-model="dateRange" :value-format="valueFormat" :format="format"
unlink-panels
:range-separator="rangeSepaSrator"
:start-placeholder="startPlaceholder"
:end-placeholder="endPlaceholder"
:default-range="[-30,0]"
@change="onDateRangeChange"
:picker-options="pickerOptions"
></el-date-picker>
</span>
</span>
<el-date-picker v-if="showStyle=='origin'||showStyle==''||!showStyle" :type="type" :style="styleObj" v-model="dateRange" :value-format="valueFormat" :format="format"
unlink-panels
:range-separator="rangeSepaSrator"
:start-placeholder="startPlaceholder"
:end-placeholder="endPlaceholder"
:default-range="[-30,0]"
@change="onDateRangeChange"
:picker-options="pickerOptions"
></el-date-picker>
<span v-else :class="showStyle=='x'?{'field-box-x':true}:{'field-box':true}" >
<slot class="field-avater" name="avater">
<el-avatar :size="size" :class="{'dashed-circle':avaterCpd.isNull,disabled:disabled===true,enabled:disabled!==true}" :icon="avaterCpd.icon" :style="{backgroundColor:avaterCpd.color}">{{avaterCpd.innerText}}</el-avatar>
</slot>
<span class="field-info" :class="{disabled:disabled===true,enabled:disabled!==true}">
<slot name="info" :value="dateRange" >
<span v-if="showStyle=='x'">
<div class="field-value">
<slot name="value">
<div v-if="!avaterCpd.isNull">{{avaterCpd.innerText}}</div>
<div v-else class="label-font-color"></div>
</slot>
</div>
<div class="field-label">
<slot name="label">{{label||'请选择日期'}}</slot>
</div>
</span>
<span v-else class="field-value">
<slot name="value" :value="myVal" :field="{label:label,color:color,icon:icon,disabled:disabled,clearable:clearable}">
<div v-if="!avaterCpd.isNull">{{avaterCpd.innerText}}</div>
<div v-else class="label-font-color"></div>
</slot>
</span>
</slot>
</span>
<span v-if="disabled!==true" class="field-oper" :class="{disabled:disabled===true,enabled:disabled!==true}">
<el-date-picker :type="type" :style="styleObj" v-model="dateRange" :value-format="valueFormat" :format="format"
unlink-panels
:range-separator="rangeSepaSrator"
:start-placeholder="startPlaceholder"
:end-placeholder="endPlaceholder"
:default-range="[-30,0]"
@change="onDateRangeChange"
:picker-options="pickerOptions"
></el-date-picker>
</span>
</span>
</template> </template>
<script> <script>

60
src/components/mdp-ui/mdp-date/Index.vue

@ -2,47 +2,47 @@
<el-date-picker v-if="showStyle=='origin'||showStyle==''||!showStyle" v-model="myVal" :value-format="valueFormat" :format="format" <el-date-picker v-if="showStyle=='origin'||showStyle==''||!showStyle" v-model="myVal" :value-format="valueFormat" :format="format"
@change="onChange" :type="type" @change="onChange" :type="type"
:picker-options="pickerOptions"></el-date-picker> :picker-options="pickerOptions"></el-date-picker>
<span v-else :class="showStyle=='x'?{'field-box-x':true}:{'field-box':true}" @click="showSelect"> <span v-else :class="showStyle=='x'?{'field-box-x':true}:{'field-box':true}" @click="showSelect">
<slot> <slot>
<slot v-if="showStyle=='x'" name="avater" :value="myVal" :field="{label:label,color:color,icon:icon,disabled:disabled,clearable:clearable}" >
<slot v-if="showStyle=='x'" name="avater" :value="myVal" :field="{label:label,color:color,icon:icon,disabled:disabled,clearable:clearable}" >
<el-avatar :class="{'field-avater':true,'dashed-circle':avaterCpd.isNull,disabled:disabled===true,enabled:disabled!==true}" :icon="avaterCpd.icon" :style="{backgroundColor:avaterCpd.color}">{{avaterCpd.innerText}}</el-avatar> <el-avatar :class="{'field-avater':true,'dashed-circle':avaterCpd.isNull,disabled:disabled===true,enabled:disabled!==true}" :icon="avaterCpd.icon" :style="{backgroundColor:avaterCpd.color}">{{avaterCpd.innerText}}</el-avatar>
</slot> </slot>
<span class="field-info" :class="{disabled:disabled===true,enabled:disabled!==true}">
<slot name="info">
<span v-if="showStyle=='x'">
<span class="field-value">
<slot name="value" :value="myVal" :field="{label:label,color:color,icon:icon,disabled:disabled,clearable:clearable}">
<span v-if="!avaterCpd.isNull">{{avaterCpd.innerText}}</span>
<span v-else class="label-font-color"></span>
<span class="field-info" :class="{disabled:disabled===true,enabled:disabled!==true}">
<slot name="info">
<span v-if="showStyle=='x'">
<div class="field-value">
<slot name="value" :value="myVal" :field="{label:label,color:color,icon:icon,disabled:disabled,clearable:clearable}">
<div v-if="!avaterCpd.isNull">{{avaterCpd.innerText}}</div>
<div v-else class="label-font-color"></div>
</slot>
</div>
<div class="field-label" >
<slot name="label"> {{label}}</slot>
</div>
</span>
<span v-else>
<slot name="value" :value="myVal" :field="{label:label,color:color,icon:icon,disabled:disabled,clearable:clearable}">
<div v-if="!avaterCpd.isNull">{{avaterCpd.innerText}}</div>
<div v-else class="label-font-color"></div>
</slot>
</span>
</slot> </slot>
</span> </span>
<span class="field-label" >
<slot name="label"> {{label}}</slot>
</span>
<span class="field-oper" ref="operRef" :class="{disabled:disabled===true,enabled:disabled!==true}">
<slot name="oper" :value="myVal" :field="{label:label,color:color,icon:icon,disabled:disabled,clearable:clearable}">
<el-date-picker v-model="myVal" :value-format="valueFormat" :format="format" :type="type"
@change="onChange"
:picker-options="pickerOptions"></el-date-picker>
</slot>
</span> </span>
<span v-else>
<slot name="value" :value="myVal" :field="{label:label,color:color,icon:icon,disabled:disabled,clearable:clearable}">
<span v-if="!avaterCpd.isNull">{{avaterCpd.innerText}}</span>
<span v-else class="label-font-color"></span>
</slot>
</span>
</slot> </slot>
</span> </span>
<span class="field-oper" ref="operRef" :class="{disabled:disabled===true,enabled:disabled!==true}">
<slot name="oper" :value="myVal" :field="{label:label,color:color,icon:icon,disabled:disabled,clearable:clearable}">
<el-date-picker v-model="myVal" :value-format="valueFormat" :format="format" :type="type"
@change="onChange"
:picker-options="pickerOptions"></el-date-picker>
</slot>
</span>
</slot>
</span>
</template>
</template>
<script>
<script>
import util from '@/components/mdp-ui/js/util';//
import util from '@/components/mdp-ui/js/util';//
import {MdpFieldMixin} from "../mixin/MdpFieldMixin.js" import {MdpFieldMixin} from "../mixin/MdpFieldMixin.js"
export default { export default {

8
src/components/mdp-ui/mdp-dialog/Index.vue

@ -1,10 +1,10 @@
<template> <template>
<el-dialog :title="myTitle" append-to-body modal-append-to-body :visible.sync="visible" :fullscreen="fullscreen" :width="width?width:'70%'" :close-on-click-modal="closeOnClickModal">
<slot :visible="visible" :title="myTitle" :data="this.data?this.data:{}" :dialog="that">
<el-dialog :title="myTitle||title" append-to-body modal-append-to-body :visible.sync="visible" :fullscreen="fullscreen" :width="width?width:'70%'" :close-on-click-modal="closeOnClickModal">
<slot :visible="visible" :title="myTitle||title" :data="this.data?this.data:{}" :dialog="that">
</slot> </slot>
<template slot="footer" > <template slot="footer" >
<slot name="footer" :visible="visible" :title="myTitle" :data="this.data?this.data:{}" :dialog="that" >
<slot name="footer" :visible="visible" :title="myTitle||title" :data="this.data?this.data:{}" :dialog="that" >
</slot> </slot>
</template> </template>
@ -54,6 +54,8 @@
this.data=data this.data=data
if(data && data.title){ if(data && data.title){
this.myTitle=data.title this.myTitle=data.title
}else{
this.myTitle=this.title
} }
}, },
close(){ close(){

72
src/components/mdp-ui/mdp-field/Index.vue

@ -1,40 +1,44 @@
<template> <template>
<span :class="showStyle=='x'?{'field-box-x':true}:{'field-box':true}" @click="showSelect">
<slot>
<slot v-if="showStyle=='x'" name="avater" :value="myVal" :field="{label:label,color:color,icon:icon,disabled:disabled,clearable:clearable}" >
<el-avatar :class="{'field-avater':true,'dashed-circle':avaterCpd.isNull,disabled:disabled===true,enabled:disabled!==true}" :icon="avaterCpd.icon" :style="{backgroundColor:avaterCpd.color}">{{avaterCpd.innerText}}</el-avatar>
</slot>
<span class="field-info" :class="{disabled:disabled===true,enabled:disabled!==true}">
<slot name="info" v-if="showStyle=='x'" :value="myVal" :field="{label:label,color:color,icon:icon,disabled:disabled,clearable:clearable}">
<span class="field-value">
<slot name="value" :value="myVal" :field="{label:label,color:color,icon:icon,disabled:disabled,clearable:clearable}">
<span v-if="!avaterCpd.isNull">{{avaterCpd.innerText}}</span>
<span v-else class="label-font-color"></span>
</slot>
</span>
<span class="field-label" >
<slot name="label"> {{label}}</slot>
</span>
<span>
<span :class="showStyle=='x'?{'field-box-x':true}:{'field-box':true}" @click="showSelect">
<slot>
<slot v-if="showStyle=='x'" class="field-avater" name="avater" :value="myVal" :field="{label:label,color:color,icon:icon,disabled:disabled,clearable:clearable}" >
<el-avatar :size="size" :class="{'dashed-circle':avaterCpd.isNull,disabled:disabled===true,enabled:disabled!==true}" :icon="avaterCpd.icon" :style="{backgroundColor:avaterCpd.color}">{{avaterCpd.innerText}}</el-avatar>
</slot>
<span class="field-info" :class="{disabled:disabled===true,enabled:disabled!==true}">
<slot name="info" :value="myVal" :field="{label:label,color:color,icon:icon,disabled:disabled,clearable:clearable}">
<span v-if="showStyle=='x'" >
<div class="field-value">
<slot name="value" :value="myVal" :field="{label:label,color:color,icon:icon,disabled:disabled,clearable:clearable}">
<div v-if="!avaterCpd.isNull">{{avaterCpd.innerText}}</div>
<div v-else class="label-font-color"></div>
</slot> </slot>
<slot name="info" v-else :value="myVal" :field="{label:label,color:color,icon:icon,disabled:disabled,clearable:clearable}">
<slot name="value" :value="myVal" :field="{label:label,color:color,icon:icon,disabled:disabled,clearable:clearable}">
<span v-if="!avaterCpd.isNull">{{avaterCpd.innerText}}</span>
<span v-else class="label-font-color"></span>
</slot>
</div>
<div class="field-label" >
<slot name="label"> {{label}}</slot>
</div>
</span>
<span v-else>
<div class="field-value">
<slot name="value" :value="myVal" :field="{label:label,color:color,icon:icon,disabled:disabled,clearable:clearable}">
<div v-if="!avaterCpd.isNull">{{avaterCpd.innerText}}</div>
<div v-else class="label-font-color"></div>
</slot> </slot>
</span>
<span class="field-oper" ref="operRef" :class="{disabled:disabled===true,enabled:disabled!==true}">
<slot name="oper" :value="myVal" :field="{label:label,color:color,icon:icon,disabled:disabled,clearable:clearable}">
<el-input v-model="myVal" :placeholder="placeholder" @change="onChange"></el-input>
</slot>
</span>
</slot>
</span>
</template>
<script>
</div>
</span>
</slot>
</span>
<span class="field-oper" ref="operRef" :class="{disabled:disabled===true,enabled:disabled!==true}">
<slot name="oper" :value="myVal" :field="{label:label,color:color,icon:icon,disabled:disabled,clearable:clearable}">
<el-input v-model="myVal" :placeholder="placeholder" @change="onChange"></el-input>
</slot>
</span>
</slot>
</span>
</span>
</template>
<script>
import {MdpFieldMixin} from "../mixin/MdpFieldMixin.js" import {MdpFieldMixin} from "../mixin/MdpFieldMixin.js"

37
src/components/mdp-ui/mdp-select-table/Index.vue

@ -1,10 +1,12 @@
<template> <template>
<span> <span>
<span v-if="showStyle=='origin'" :title="title||placeholder||emptyText"> <span v-if="showStyle=='origin'" :title="title||placeholder||emptyText">
<el-select :size="size" :multiple="multiple" :placeholder="placeholder" :disabled="disabled" :style="{width:width?width+'':'auto'}" class="my-select" ref="selectRef" v-model="myVal" @change="onChange" :clearable="clearable" @visible-change="$emit('visible-change',$event)" @focus="$emit('focus',$event)" @blur="$emit('blur',$event)" @clear="$emit('blur',$event)" @click="$emit('click',$event)">
<el-select :size="size" :multiple="multiple" :placeholder="placeholder" :disabled="disabled" :style="{width:width?width+'':'auto'}" class="my-select" ref="selectRef" v-model="myVal" @change="onChange" :clearable="clearable" @visible-change="$emit('visible-change',$event)" @focus="$emit('focus',$event)" @blur="$emit('blur',$event)" @clear="$emit('clear',$event)" @click="$emit('click',$event)">
<slot> <slot>
<el-option disabled value="" style="margin-bottom:5px;"> <el-option disabled value="" style="margin-bottom:5px;">
<el-row><el-button @click.stop="$refs['tableDialog'].open()" icon="el-icon-search">更多数据</el-button> </el-row>
<slot name="toolbar">
<el-row><el-button @click.stop="$refs['tableDialog'].open()" icon="el-icon-search">更多数据</el-button> </el-row>
</slot>
</el-option> </el-option>
<el-option class="avatar-container" v-for="(option,index) in optionsCpd" :key="index" :value="option[props['id']]" :label="option[props['name']]"> <el-option class="avatar-container" v-for="(option,index) in optionsCpd" :key="index" :value="option[props['id']]" :label="option[props['name']]">
@ -72,11 +74,13 @@
</span> </span>
<span class="field-oper" :class="{disabled:disabled===true,enabled:disabled!==true,hidden:true}"> <span class="field-oper" :class="{disabled:disabled===true,enabled:disabled!==true,hidden:true}">
<slot name="oper"> <slot name="oper">
<el-select :multiple="multiple" :size="size" :style="{width:width?width+'':'auto'}" class="my-select" ref="selectRef" v-model="myVal" @change="onChange" :clearable="clearable" @visible-change="$emit('visible-change',$event)" @focus="$emit('focus',$event)" @blur="$emit('blur',$event)" @clear="$emit('blur',$event)" @click="$emit('click',$event)">
<el-select :multiple="multiple" :size="size" :style="{width:width?width+'':'auto'}" class="my-select" ref="selectRef" v-model="myVal" @change="onChange" :clearable="clearable" @visible-change="$emit('visible-change',$event)" @focus="$emit('focus',$event)" @blur="$emit('blur',$event)" @clear="$emit('clear',$event)" @click="$emit('click',$event)">
<slot> <slot>
<el-option disabled value="" style="margin-bottom:5px;"> <el-option disabled value="" style="margin-bottom:5px;">
<el-row><el-button @click.stop="$refs['tableDialog'].open()" icon="el-icon-search">更多数据</el-button> </el-row>
</el-option>
<slot name="toolbar">
<el-row><el-button @click.stop="$refs['tableDialog'].open()" icon="el-icon-search">更多数据</el-button> </el-row>
</slot>
</el-option>
<el-option class="avatar-container" v-for="(option,index) in optionsCpd" :key="index" :value="option[props['id']]" :label="option[props['name']]"> <el-option class="avatar-container" v-for="(option,index) in optionsCpd" :key="index" :value="option[props['id']]" :label="option[props['name']]">
<div class="avatar-wrapper"> <div class="avatar-wrapper">
@ -94,7 +98,7 @@
</span> </span>
<mdp-dialog ref="tableDialog" title="选择数据" width="80%"> <mdp-dialog ref="tableDialog" title="选择数据" width="80%">
<template v-slot="{visible,data,dialog}"> <template v-slot="{visible,data,dialog}">
<mdp-table :multiple="multiple" sub-op-type="select" :visible="visible" :crud-apis="{list:loadFun}" :props="props" :column-cfgs="columnConfigs" @select="onTableDataSelect">
<mdp-table :multiple="multiple" sub-op-type="select" :params="params" :visible="visible" :crud-apis="{list:loadFun}" :props="props" :column-cfgs="columnConfigs" @select="onTableDataSelect">
</mdp-table> </mdp-table>
</template> </template>
</mdp-dialog> </mdp-dialog>
@ -130,7 +134,7 @@
columnCfgs:{ columnCfgs:{
type:Array, type:Array,
default:null, default:null,
}
},
}, },
data(){ data(){
return { return {
@ -151,7 +155,13 @@
if(!tableDataCacheList){ if(!tableDataCacheList){
tableDataCacheList=[] tableDataCacheList=[]
} }
var notExists=datas.filter(d=>!tableDataCacheList.some(c=>c[this.props['id']]==d[this.props['id']]))
var dataArr=[]
if(!datas instanceof Array){
dataArr=datas
}else{
dataArr=[datas]
}
var notExists=dataArr.filter(d=>!tableDataCacheList.some(c=>c[this.props['id']]==d[this.props['id']]))
tableDataCacheList.push(...notExists) tableDataCacheList.push(...notExists)
tableDataCacheMap.set(this.codeKey,tableDataCacheList) tableDataCacheMap.set(this.codeKey,tableDataCacheList)
}, },
@ -180,6 +190,7 @@
var notExistsVals=mVals.filter(v=>!this.item.options.some(k=>k[this.props['id']]==v)) var notExistsVals=mVals.filter(v=>!this.item.options.some(k=>k[this.props['id']]==v))
if(notExistsVals && notExistsVals.length>0){ if(notExistsVals && notExistsVals.length>0){
var params={pageSize:10,pageNum:1} var params={pageSize:10,pageNum:1}
Object.assign(params,this.params)
params[this.props['id']]="$IN"+notExistsVals.join(",") params[this.props['id']]="$IN"+notExistsVals.join(",")
this.loadFun(params).then(res=>{ this.loadFun(params).then(res=>{
var tips = res.data.tips var tips = res.data.tips
@ -189,6 +200,16 @@
} }
}) })
} }
}else{
var params={pageSize:10,pageNum:1}
Object.assign(params,this.params)
this.loadFun(params).then(res=>{
var tips = res.data.tips
if(tips.isOk && res.data.data.length>0){
this.item.options.push(...res.data.data)
this.setCacheList(res.data.data)
}
})
} }
}, },
onTableDataSelect(tableDatas){ onTableDataSelect(tableDatas){

9
src/components/mdp-ui/mdp.scss

@ -366,7 +366,7 @@ table tr.hover-row{
} }
} }
.el-dialog { .el-dialog {
max-height: 96%;
max-height: 100%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
margin: 0 !important; margin: 0 !important;
@ -421,3 +421,10 @@ table tr.hover-row{
} }
} }
} }
.echart-box{
min-height: calc(60vh);
max-height: calc(80vh);
overflow-y: 'hidden';
width:100%;
padding:10px;
}

3
src/components/mdp-ui/mixin/MdpSelectMixin.js

@ -556,6 +556,7 @@ export const MdpSelectMixin = {
* @returns * @returns
*/ */
initOptionsByInitName(myVal,myName){ initOptionsByInitName(myVal,myName){
this.initOptions=myVal.map((v,idx)=>{ this.initOptions=myVal.map((v,idx)=>{
var option={} var option={}
option[this.props['id']]=v option[this.props['id']]=v
@ -612,7 +613,7 @@ export const MdpSelectMixin = {
}else{ }else{
this.myVal=val+'' this.myVal=val+''
if(initName){ if(initName){
this.initOptionsByInitName(this.myVal,[initName])
this.initOptionsByInitName([this.myVal],[initName])
} }
} }

5
src/components/mdp-ui/mixin/MdpTableMixin.js

@ -237,7 +237,10 @@ export const MdpTableMixin = {
* 此函数由组件扩展,给defaultFilters添加其它的额外默认参数 * 此函数由组件扩展,给defaultFilters添加其它的额外默认参数
*/ */
initDefaultFilters(){ initDefaultFilters(){
debugger
if(this.params){
Object.assign(this.defaultFilters,this.params)
}
}, },
/** /**
* 检查参数是否满足调用后台接口的条件 * 检查参数是否满足调用后台接口的条件

4
src/lang/zh.js

@ -59,8 +59,8 @@ export default {
}, },
login: { login: {
mainTitle:'唛盟云', mainTitle:'唛盟云',
subTitle:'项目管理平台',
title: '唛盟项目管理平台',
subTitle:'唛盟低代码平台',
title: '唛盟低代码平台',
logIn: '登录', logIn: '登录',
username: '账号', username: '账号',
password: '密码', password: '密码',

154
src/views/login/components/login.vue

@ -31,7 +31,7 @@
<div class="oper"> <div class="oper">
<a @click="isRestPwd = true">忘记密码</a> <a @click="isRestPwd = true">忘记密码</a>
<a @click="loginByShowAccount">演示账户登录</a>
<a @click="$refs['starDialog'].open({action:loginByShowAccount})">演示账户登录</a>
<a v-if="loginForm.authType == 'password_display_userid' " @click="loginForm.authType = 'sms'">手机号登录</a> <a v-if="loginForm.authType == 'password_display_userid' " @click="loginForm.authType = 'sms'">手机号登录</a>
<a v-if="loginForm.authType == 'sms' " @click="loginForm.authType = 'password_display_userid' ">密码登录</a> <a v-if="loginForm.authType == 'sms' " @click="loginForm.authType = 'password_display_userid' ">密码登录</a>
</div> </div>
@ -40,7 +40,7 @@
<el-divider content-position="center">第三方登录方式</el-divider> <el-divider content-position="center">第三方登录方式</el-divider>
<div class="other"> <div class="other">
<el-popover trigger="manual" v-model="wxLoginCodeVisible" placement="top-start"> <div id="login_container"></div> <el-popover trigger="manual" v-model="wxLoginCodeVisible" placement="top-start"> <div id="login_container"></div>
<img slot="reference" src="@/assets/image/module/weixin.png" @click="weixinLogin">
<img slot="reference" src="@/assets/image/module/weixin.png" @click="$refs['starDialog'].open({action:weixinLogin})">
<el-button type="text" @click="wxLoginCodeVisible=false" icon="el-icon-close">关闭</el-button><el-button type="text" @click="weixinLogin" icon="el-icon-refresh"></el-button> <el-button type="text" @click="wxLoginCodeVisible=false" icon="el-icon-close">关闭</el-button><el-button type="text" @click="weixinLogin" icon="el-icon-refresh"></el-button>
</el-popover> </el-popover>
</div> </div>
@ -76,7 +76,16 @@
</el-button> </el-button>
</div> </div>
</div> </div>
<mdp-dialog ref="starDialog" width="600px" title="hi~同学,来支持一下【唛盟开源项目】吧,为项目点个Star!">
<el-row>
<el-link :href="$mdp.getOpenSourceLink()" target="_blank" type="primary" icon="el-icon-star-off">唛盟项目</el-link>
</el-row>
<template #footer="{visible,data,dialog}">
<el-row slot="footer">
<el-button @click="dialog.close()">取消</el-button><el-button type="primary" @click="doLoginByAction(data.action)">已点赞继续登陆</el-button>
</el-row>
</template>
</mdp-dialog>
</div> </div>
</template> </template>
@ -258,46 +267,45 @@ export default {
smsCode:this.loginForm.smsCode, smsCode:this.loginForm.smsCode,
branchId:this.userBranchId, branchId:this.userBranchId,
} }
var loginParams={ }
if(params.authType=='password_display_userid'){
loginParams.userloginid=params.displayUserid
loginParams.password=params.password
loginParams.grantType="password"
loginParams.authType='password_display_userid'
//loginParams.deptid=params.deptid
loginParams.branchId=params.branchId
}else if(params.authType=='sms'){
loginParams.userloginid=params.phoneno
loginParams.password=params.smsCode
loginParams.grantType="password"
loginParams.authType="sms"
//loginParams.deptid=params.deptid
loginParams.branchId=params.branchId
}
this.$store.dispatch("LoginByUserloginid",loginParams).then(res => {
this.loading = false
if(res.data.tips.isOk==true){
this.loading = true;
this.$store.dispatch('GetUserInfo').then((res2)=>{
this.loading = false
if(res2.data.tips.isOk==true){
this.userDeptid=res2.data.userInfo.deptid
this.rolesChecked();
}else{
this.$notify.error(res2.data.tips.msg);
}
}).catch(err=>{
console.log(err);
this.loading = false
});
}else{
this.$notify.error(res.data.tips.msg);
var loginParams={ }
if(params.authType=='password_display_userid'){
loginParams.userloginid=params.displayUserid
loginParams.password=params.password
loginParams.grantType="password"
loginParams.authType='password_display_userid'
//loginParams.deptid=params.deptid
loginParams.branchId=params.branchId
}else if(params.authType=='sms'){
loginParams.userloginid=params.phoneno
loginParams.password=params.smsCode
loginParams.grantType="password"
loginParams.authType="sms"
//loginParams.deptid=params.deptid
loginParams.branchId=params.branchId
} }
}).catch((e) => {
this.loading = false
})
this.$store.dispatch("LoginByUserloginid",loginParams).then(res => {
this.loading = false
if(res.data.tips.isOk==true){
this.loading = true;
this.$store.dispatch('GetUserInfo').then((res2)=>{
this.loading = false
if(res2.data.tips.isOk==true){
this.userDeptid=res2.data.userInfo.deptid
this.rolesChecked();
}else{
this.$notify.error(res2.data.tips.msg);
}
}).catch(err=>{
console.log(err);
this.loading = false
});
}else{
this.$notify.error(res.data.tips.msg);
}
}).catch((e) => {
this.loading = false
})
} else { } else {
return false return false
} }
@ -363,7 +371,10 @@ export default {
}) })
}, },
doLoginByAction(action){
this.$refs['starDialog'].close();
action();
},
afterQRScan() { afterQRScan() {
// const hash = window.location.hash.slice(1) // const hash = window.location.hash.slice(1)
// const hashObj = getQueryObject(hash) // const hashObj = getQueryObject(hash)
@ -383,36 +394,37 @@ export default {
// } // }
}, },
loginByShowAccount(){ loginByShowAccount(){
this.loading = true
var loginParams={ }
loginParams.userloginid="demo-branch-01"
loginParams.password=md5("888888")
loginParams.grantType="password"
loginParams.authType='password_display_userid'
this.$store.dispatch("LoginByUserloginid",loginParams).then(res => {
this.loading = false
if(res.data.tips.isOk==true){
this.loading = true;
this.$store.dispatch('GetUserInfo').then((res2)=>{
this.loading = false
if(res2.data.tips.isOk==true){
this.userDeptid=res2.data.userInfo.deptid
this.rolesChecked();
}else{
this.$notify.error(res2.data.tips.msg);
}
this.loading = true
var loginParams={ }
loginParams.userloginid="demo-branch-01"
loginParams.password=md5("888888")
loginParams.grantType="password"
loginParams.authType='password_display_userid'
this.$store.dispatch("LoginByUserloginid",loginParams).then(res => {
}).catch(err=>{
console.log(err);
this.loading = false
});
}else{
this.$notify.error(res.data.tips.msg);
}
}).catch((e) => {
this.loading = false
})
this.loading = false
if(res.data.tips.isOk==true){
this.loading = true;
this.$store.dispatch('GetUserInfo').then((res2)=>{
this.loading = false
if(res2.data.tips.isOk==true){
this.userDeptid=res2.data.userInfo.deptid
this.rolesChecked();
}else{
this.$notify.error(res2.data.tips.msg);
}
}).catch(err=>{
console.log(err);
this.loading = false
});
}else{
this.$notify.error(res.data.tips.msg);
}
}).catch((e) => {
this.loading = false
})
} }
}, },
created() { created() {

Loading…
Cancel
Save