14678f85 by 田浩浩
2 parents a3960c7c 74cf9497
Showing 50 changed files with 1848 additions and 196 deletions
......@@ -21,4 +21,6 @@ yarn-error.log*
*.njsproj
*.sln
*.sw?
/src/api/config.js
package-lock.json
......
export default {
SERVERAPI: '/service-bdcdj9',
// SERVERCAI: '/service-bdcdj-Tian'
}
\ No newline at end of file
......@@ -6,25 +6,25 @@ export function Init (data) {
let apiUrl = "";
switch (data.get("djlx")) {
case "100":
apiUrl = "/rest/ywbl/jsydsyqlr/fristInit";
apiUrl = "/rest/ywbl/dyaq/fristInit";
break;
case "200":
apiUrl = "/rest/ywbl/jsydsyqlr/transferInit";
apiUrl = "/rest/ywbl/dyaq/transferInit";
break;
case "300":
apiUrl = "/rest/ywbl/jsydsyqlr/changeInit";
apiUrl = "/rest/ywbl/dyaq/changeInit";
break;
case "400":
apiUrl = "/rest/ywbl/jsydsyqlr/logoutInit";
apiUrl = "/rest/ywbl/dyaq/logoutInit";
break;
case "500":
apiUrl = "/rest/ywbl/jsydsyqlr/riviseInit";
apiUrl = "/rest/ywbl/dyaq/riviseInit";
break;
case "901":
apiUrl = "/rest/ywbl/jsydsyqlr/renewalInit";
apiUrl = "/rest/ywbl/dyaq/renewalInit";
break;
case "902":
apiUrl = "/rest/ywbl/jsydsyqlr/replaceInit";
apiUrl = "/rest/ywbl/dyaq/replaceInit";
break;
}
return request({
......
import dialogBox from '@/components/DialogBox/dialogBox.vue'
import lbTable from '@/components/lbTable/lb-table.vue'
import LbTable from '@/components/LbTable/lb-table.vue'
import Theme from '@/components/Theme/theme.vue'
import Popup from '@/components/Popup/index'
import MessageBox from '@/components/MessageBox/index.js'
export default {
install: (Vue) => {
Vue.component('dialogBox', dialogBox);
Vue.component('lbTable', lbTable);
Vue.component('lbTable', LbTable);
Vue.component('Theme', Theme);
Vue.prototype.$popup = Popup.install
Vue.prototype.$popup = Popup.install;
Vue.prototype.$alertMes = MessageBox.alert;
}
}
\ No newline at end of file
......
<template>
<el-calendar v-model="date">
<template slot="dateCell" slot-scope="{date, data}">
<div :class="{ selected: isSelected(date, data) }">
<div class="solar">{{ data.day.split('-')[2] }}</div>
<div class="lunar" :class="{ festival: isFestival(date, data) }">{{ solarToLunar(date, data) }}</div>
</div>
</template>
</el-calendar>
</template>
<script>
import calendar from './calendar'
export default {
name: 'calendar',
data () {
return {
date: new Date(),
// 根据selectedDates设置选中日期
selectedDates: []
}
},
methods: {
// 是否选中日期
isSelected: function (slotDate, slotData) {
return this.selectedDates.includes(slotData.day)
},
// 是否节假日
isFestival (slotDate, slotData) {
let solarDayArr = slotData.day.split('-');
let lunarDay = calendar.solar2lunar(solarDayArr[0], solarDayArr[1], solarDayArr[2])
// 公历节日\农历节日\农历节气
let festAndTerm = [];
festAndTerm.push(lunarDay.festival == null ? '' : ' ' + lunarDay.festival)
festAndTerm.push(lunarDay.lunarFestival == null ? '' : '' + lunarDay.lunarFestival)
festAndTerm.push(lunarDay.Term == null ? '' : '' + lunarDay.Term)
festAndTerm = festAndTerm.join('')
return festAndTerm != ''
},
// 公历转农历
solarToLunar (slotDate, slotData) {
let solarDayArr = slotData.day.split('-');
let lunarDay = calendar.solar2lunar(solarDayArr[0], solarDayArr[1], solarDayArr[2])
// 农历日期
let lunarMD = lunarDay.IMonthCn + lunarDay.IDayCn
// 公历节日\农历节日\农历节气
let festAndTerm = [];
festAndTerm.push(lunarDay.festival == null ? '' : ' ' + lunarDay.festival)
festAndTerm.push(lunarDay.lunarFestival == null ? '' : '' + lunarDay.lunarFestival)
festAndTerm.push(lunarDay.Term == null ? '' : '' + lunarDay.Term)
festAndTerm = festAndTerm.join('')
return festAndTerm == '' ? lunarMD : festAndTerm
}
}
}
</script>
<style scoped>
/**隐藏上一月、本月、下一月*/
.el-calendar__button-group {
display: none;
}
/deep/.el-calendar__body {
padding: 12px !important;
}
/deep/.el-calendar-table .el-calendar-day {
height: auto;
padding: 5px;
}
/**月份居中*/
.el-calendar__title {
width: 100%;
text-align: center;
}
/**日期div的样式*/
.el-calendar-table tr td:first-child {
border-left: 0px;
}
.el-calendar-table td {
min-height: 110px;
min-width: 110px;
border-right: 0px;
}
.el-calendar-table td.is-selected {
background-color: white;
}
.el-calendar-table .el-calendar-day {
padding: 0px;
text-align: center;
}
.el-calendar-table .el-calendar-day>div {
text-align: center
}
/**日期div的样式-公历*/
.el-calendar-table .el-calendar-day>div .solar {
text-align: center
}
/**日期div的样式-农历*/
.el-calendar-table .el-calendar-day>div .lunar {
padding-top: 5px;
font-size: 12px;
text-align: center
}
/**日期div的样式-选中*/
.el-calendar-table .el-calendar-day>div.selected {
background-color: #fef2f2;
border: 3px solid #fb0;
border-radius: 20px;
text-align: center
}
/**本月周末设置为红色*/
.el-calendar-table .current:nth-last-child(-n+2) .solar {
color: red;
}
/**本月农历设置为灰色*/
.el-calendar-table .current .lunar {
color: #606266;
font-size: 12px;
}
/**本月农历节日设置为红色*/
.el-calendar-table .current .lunar.festival {
color: red;
}
.el-calendar-table td {
border-right: none !important;
}
/**禁用点击效果*/
/*.el-calendar-table td {*/
/*pointer-events: none;*/
/*}*/
</style>
\ No newline at end of file
.dialogBox {
border-radius: 8px;
overflow: hidden;
background: #FFFFFF;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.10);
.dialog_title {
display: flex;
position: relative;
top: -2px;
b {
@include flex-center;
flex: 1;
width: 100%;
}
}
.dialog_full {
position: absolute;
top: 0;
right: 30px;
}
.el-dialog__body {
max-height: 88vh;
overflow-x: hidden;
overflow-y: hidden;
}
.dialog_footer {
margin-top: 8px;
@include flex-center;
}
}
.dialog_title {
@include flex;
justify-content: space-between;
width: 100%;
}
.el-dialog__header {
margin-bottom: 10px;
color: #4A4A4A;
background-color: #FCFDFD;
border-bottom: 1px solid #E4EBF4;
}
.el-dialog__body {
padding-top: 10px;
padding-bottom: 0;
}
.el-dialog__headerbtn .el-dialog__close {
color: #6B7A99 !important;
position: relative;
top: -2px;
}
.el-form-item {
@include flex;
width: 100%;
}
.el-dialog__wrapper {
width: 100%;
height: 100%;
overflow: hidden;
}
.contentCenter {
position: absolute;
top: 50%;
left: 50%;
transform: translate(calc(-50% + 85px), -50%);
}
.mainCenter {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
\ No newline at end of file
<template>
<el-dialog :visible.sync="dialogVisible" v-if="dialogVisible" :width="width" :fullscreen="fullscreen" top="0"
:append-to-body="appendToBody" :lock-scroll="true" :close-on-click-modal="false" @close="closeDialog" :key="key"
:custom-class="isMain ? 'mainCenter dialogBox' : 'contentCenter dialogBox'" :destroy-on-close="true" ref="dialogBox"
id="dialogBox">
<div slot="title">
<div class="dialog_title">
<b>{{ title }}</b>
<div v-if="isFullscreen" class="dialog_full">
<i class="el-icon-rank" v-if="fullscreen" @click="handleFullscreen"></i>
<i class="el-icon-full-screen" v-else @click="handleFullscreen" />
</div>
</div>
</div>
<div class="dialogBox-content" :style="{ height: scrollerHeight ? scrollerHeight : 'auto' }">
<slot></slot>
</div>
<div slot="footer" class="dialog_footer" v-if="isButton">
<el-button @click="closeDialog" v-if="isReset">取消</el-button>
<el-button type="primary" plain @click="submitForm" v-if="isSave" :disabled="btnDisabled" :loading="saveloding">
{{ saveButton }}</el-button>
</div>
</el-dialog>
</template>
<script>
export default {
props: {
value: { type: Boolean, default: false },
isMain: {
type: Boolean,
default: false
},
appendToBody: {
type: Boolean,
default: true
},
isButton: {
type: Boolean,
default: true,
},
width: {
type: String,
default: '70%',
},
title: {
type: String,
default: '',
},
isFullscreen: {
type: Boolean,
default: true,
},
isSave: {
type: Boolean,
default: true,
},
saveButton: {
type: String,
default: '提交',
},
isReset: {
type: Boolean,
default: true,
},
saveloding: {
type: Boolean,
default: false,
},
btnDisabled: {
type: Boolean,
default: false
}
},
data () {
return {
key: 0,
dialogVisible: false,
fullscreen: false,
scrollerHeight: false,
}
},
watch: {
value (val) {
this.dialogVisible = val
}
},
methods: {
handleFullscreen (val) {
this.fullscreen = !this.fullscreen
let height = document.getElementById('dialogBox').clientHeight
if (!this.fullscreen) {
this.scrollerHeight = false
} else {
this.scrollerHeight = (window.innerHeight - 180) + 'px'
}
},
submitForm () {
if (this.isButton) {
this.$emit('submitForm');
}
},
closeDialog () {
this.key++
this.$emit('input', false)
this.$emit('closeDialog')
}
},
}
</script>
<style rel="stylesheet/scss" lang="scss" >
@import "~@/styles/mixin.scss";
@import "./dialogBox.scss";
</style>
<style rel="stylesheet/scss" scoped lang="scss" >
/deep/.is-fullscreen {
position: absolute;
top: 50% !important;
left: 50% !important;
transform: translate(-50%, -50%) !important;
}
</style>
\ No newline at end of file
## 这个是弹框组件,对于element自带的组件进行封装,方便修改全局样式做统一操作
### 使用时在组件中引用
export default {
selection: {
renderHeader: (h, { store }) => {
return (
<el-checkbox
disabled={store.states.data && store.states.data.length === 0}
indeterminate={
store.states.selection.length > 0 && !store.states.isAllSelected
}
nativeOn-click={store.toggleAllSelection}
value={store.states.isAllSelected}
/>
)
},
renderCell: (h, { row, column, store, $index }) => {
return (
<el-checkbox
nativeOn-click={event => event.stopPropagation()}
value={store.isSelected(row)}
disabled={
column.selectable
? !column.selectable.call(null, row, $index)
: false
}
on-input={() => {
store.commit('rowSelectedChanged', row)
}}
/>
)
},
sortable: false,
resizable: false
},
index: {
renderHeader: (h, scope) => {
return <span>{scope.column.label || '#'}</span>
},
renderCell: (h, { $index, column }) => {
let i = $index + 1
const index = column.index
if (typeof index === 'number') {
i = $index + index
} else if (typeof index === 'function') {
i = index($index)
}
return <div>{i}</div>
},
sortable: false
},
expand: {
renderHeader: (h, scope) => {
return <span>{scope.column.label || ''}</span>
},
renderCell: (h, { row, store }, proxy) => {
const expanded = store.states.expandRows.indexOf(row) > -1
return (
<div
class={
'el-table__expand-icon ' +
(expanded ? 'el-table__expand-icon--expanded' : '')
}
on-click={e => proxy.handleExpandClick(row, e)}
>
<i class='el-icon el-icon-arrow-right' />
</div>
)
},
sortable: false,
resizable: false,
className: 'el-table__expand-column'
}
}
/*
* FileName: lb-column.vue
* Remark: element-column
* Project: lb-element-table
* Author: 任超
* File Created: Tuesday, 19th March 2019 9:58:23 am
* Last Modified: Tuesday, 19th March 2019 10:14:42 am
* Modified By: 任超
*/
<template>
<el-table-column v-bind="$attrs"
v-on="$listeners"
:prop="column.prop"
:label="column.label"
:type="column.type"
:index="column.index"
:column-key="column.columnKey"
:width="column.width"
:min-width="column.minWidth"
:fixed="column.fixed"
:scoped-slot="column.renderHeader"
:sortable="column.sortable || false"
:sort-method="column.sortMethod"
:sort-by="column.sortBy"
:sort-orders="column.sortOrders"
:resizable="column.resizable || true"
:formatter="column.formatter"
:show-overflow-tooltip="column.showOverflowTooltip || false"
:align="column.align || align || 'center'"
:header-align="column.headerAlign || headerAlign || column.align || align || 'center'"
:class-name="column.className"
:label-class-name="column.labelClassName"
:selectable="column.selectable"
:reserve-selection="column.reserveSelection || false"
:filters="column.filters"
:filter-placement="column.filterPlacement"
:filter-multiple="column.filterMultiple"
:filter-method="column.filterMethod"
:filtered-value="column.filteredValue">
<template slot="header"
slot-scope="scope">
<lb-render v-if="column.renderHeader"
:scope="scope"
:render="column.renderHeader">
</lb-render>
<span v-else>{{ scope.column.label }}</span>
</template>
<template slot-scope="scope">
<lb-render :scope="scope"
:render="column.render">
</lb-render>
</template>
<template v-if="column.children">
<lb-column v-for="(col, index) in column.children"
:key="index"
:column="col">
</lb-column>
</template>
</el-table-column>
</template>
<script>
import LbRender from './lb-render'
import forced from './forced.js'
export default {
name: 'LbColumn',
props: {
column: Object,
headerAlign: String,
align: String
},
components: {
LbRender
},
methods: {
setColumn () {
if (this.column.type) {
this.column.renderHeader = forced[this.column.type].renderHeader
this.column.render = this.column.render || forced[this.column.type].renderCell
}
if (this.column.formatter) {
this.column.render = (h, scope) => {
return <span>{ scope.column.formatter(scope.row, scope.column, scope.row, scope.$index) }</span>
}
}
if (!this.column.render) {
this.column.render = (h, scope) => {
return <span>{ scope.row[scope.column.property] }</span>
}
}
}
},
watch: {
column: {
handler () {
this.setColumn()
},
immediate: true
}
}
}
</script>
/*
* FileName: lb-render.vue
* Remark: 自定义render
* Project: lb-element-table
* Author: 任超
* File Created: Tuesday, 19th March 2019 10:15:30 am
* Last Modified: Tuesday, 19th March 2019 10:15:32 am
* Modified By: 任超
*/
<script>
export default {
name: 'LbRender',
functional: true,
props: {
scope: Object,
render: Function
},
render: (h, ctx) => {
return ctx.props.render ? ctx.props.render(h, ctx.props.scope) : ''
}
}
</script>
/*
* FileName: lb-table.vue
* Remark: element table
* Project: lb-element-table
* Author: 任超
* File Created: Tuesday, 19th March 2019 9:55:27 am
* Last Modified: Tuesday, 19th March 2019 9:55:34 am
* Modified By: 任超
*/
<template>
<div :class="['lb-table', customClass]">
<el-table v-if="!heightNumSetting" class="table-fixed" :row-style="{ height: '50px' }" ref="elTable"
:border='border' :row-class-name="tableRowClassName" :show-header='showHeader'
:header-cell-style="{ background: 'rgb(236, 245, 255)' }" v-bind="$attrs" :height="tableHeight" v-on="$listeners"
:data="data" style="width: 100%" :span-method="this.merge ? this.mergeMethod : this.spanMethod">
<lb-column v-bind="$attrs" v-for="(item, index) in column" :key="index" :column="item">
</lb-column>
</el-table>
<el-table v-else ref="elTable" class="table-fixed" :row-style="{ height: '50px' }" :border='border'
:row-class-name="tableRowClassName" :show-header='showHeader'
:header-cell-style="{ background: 'rgb(236, 245, 255)' }" v-bind="$attrs" :max-height="maxHeight"
v-on="$listeners" :data="data" style="width: 100%" :span-method="this.merge ? this.mergeMethod : this.spanMethod">
<lb-column v-bind="$attrs" v-for="(item, index) in column" :key="index" :column="item">
</lb-column>
</el-table>
<br>
<el-pagination class="lb-table-pagination" v-if="pagination" v-bind="$attrs" v-on="$listeners" background
:page-sizes="[10, 20, 50, 100]" layout="total, sizes, prev, pager, next" @current-change="paginationCurrentChange"
:style="{ 'margin-top': paginationTop, 'text-align': paginationAlign }">
</el-pagination>
</div>
</template>
<script>
import LbColumn from './lb-column'
export default {
props: {
column: Array,
data: Array,
spanMethod: Function,
pagination: {
type: Boolean,
default: true,
},
border: {
type: Boolean,
default: true,
},
showHeader: {
type: Boolean,
default: true,
},
paginationTop: {
type: String,
default: '0',
},
heightNum: {
type: Number,
default: 265,
},
maxHeight: {
type: Number,
default: 500
},
heightNumSetting: {
type: Boolean,
default: false,
},
customClass: {
type: String,
default: '',
},
paginationAlign: {
type: String,
default: 'left',
},
merge: Array,
},
components: {
LbColumn,
},
data () {
return {
tableHeight: '',
mergeLine: {},
mergeIndex: {},
}
},
created () {
this.getMergeArr(this.data, this.merge)
this.getHeight()
},
computed: {
dataLength () {
return [] || this.data.length
},
},
methods: {
tableRowClassName ({ row, rowIndex }) {
if (rowIndex % 2 === 1) {
return 'interlaced';
}
},
getHeight () {
if (!this.heightNumSetting) {
this.tableHeight = window.innerHeight - this.heightNum
}
},
clearSelection () {
this.$refs.elTable.clearSelection()
},
toggleRowSelection (row, selected) {
this.$refs.elTable.toggleRowSelection(row, selected)
},
toggleAllSelection () {
this.$refs.elTable.toggleAllSelection()
},
toggleRowExpansion (row, expanded) {
this.$refs.elTable.toggleRowExpansion(row, expanded)
},
setCurrentRow (row) {
this.$refs.elTable.setCurrentRow(row)
},
clearSort () {
this.$refs.elTable.clearSort()
},
clearFilter (columnKey) {
this.$refs.elTable.clearFilter(columnKey)
},
doLayout () {
this.$refs.elTable.doLayout()
},
sort (prop, order) {
this.$refs.elTable.sort(prop, order)
},
paginationCurrentChange (val) {
this.$emit('p-current-change', val)
},
getMergeArr (tableData, merge) {
if (!merge) return
this.mergeLine = {}
this.mergeIndex = {}
merge.forEach((item, k) => {
tableData.forEach((data, i) => {
if (i === 0) {
this.mergeIndex[item] = this.mergeIndex[item] || []
this.mergeIndex[item].push(1)
this.mergeLine[item] = 0
} else {
if (data[item] === tableData[i - 1][item]) {
this.mergeIndex[item][this.mergeLine[item]] += 1
this.mergeIndex[item].push(0)
} else {
this.mergeIndex[item].push(1)
this.mergeLine[item] = i
}
}
})
})
},
mergeMethod ({ row, column, rowIndex, columnIndex }) {
const index = this.merge.indexOf(column.property)
if (index > -1) {
const _row = this.mergeIndex[this.merge[index]][rowIndex]
const _col = _row > 0 ? 1 : 0
return {
rowspan: _row,
colspan: _col,
}
}
},
},
watch: {
merge () {
this.getMergeArr(this.data, this.merge)
},
dataLength () {
this.getMergeArr(this.data, this.merge)
}
},
}
</script>
<style rel="stylesheet/scss" scoped lang="scss">
.lb-table {
margin-top: 1px;
.interlaced {
background: #fafcff;
border: 1px solid #ebf2fa;
}
}
/deep/.el-table .cell {
padding-left: 3px;
padding-right: 3px;
}
</style>
## 这是对于element-table 进行的二次封装
### 文档地址
<!-- table 已经全局注册不需要每个页面单独注册 -->
[Windows/Mac/Linux 全平台客户端](https://github.liubing.me/lb-element-table/zh/guide/)
import service from './src/index';
export default {
install (Vue) {
Vue.prototype.$loading = service;
},
service
};
import Vue from 'vue';
import loadingVue from './loading.vue';
import { addClass, removeClass, getStyle } from 'element-ui/src/utils/dom';
import { PopupManager } from 'element-ui/src/utils/popup';
import afterLeave from 'element-ui/src/utils/after-leave';
import merge from 'element-ui/src/utils/merge';
const LoadingConstructor = Vue.extend(loadingVue);
const defaults = {
text: null,
fullscreen: true,
body: false,
lock: false,
customClass: ''
};
let fullscreenLoading;
LoadingConstructor.prototype.originalPosition = '';
LoadingConstructor.prototype.originalOverflow = '';
LoadingConstructor.prototype.close = function() {
if (this.fullscreen) {
fullscreenLoading = undefined;
}
afterLeave(this, _ => {
const target = this.fullscreen || this.body
? document.body
: this.target;
removeClass(target, 'el-loading-parent--relative');
removeClass(target, 'el-loading-parent--hidden');
if (this.$el && this.$el.parentNode) {
this.$el.parentNode.removeChild(this.$el);
}
this.$destroy();
}, 300);
this.visible = false;
};
const addStyle = (options, parent, instance) => {
let maskStyle = {};
if (options.fullscreen) {
instance.originalPosition = getStyle(document.body, 'position');
instance.originalOverflow = getStyle(document.body, 'overflow');
maskStyle.zIndex = PopupManager.nextZIndex();
} else if (options.body) {
instance.originalPosition = getStyle(document.body, 'position');
['top', 'left'].forEach(property => {
let scroll = property === 'top' ? 'scrollTop' : 'scrollLeft';
maskStyle[property] = options.target.getBoundingClientRect()[property] +
document.body[scroll] +
document.documentElement[scroll] +
'px';
});
['height', 'width'].forEach(property => {
maskStyle[property] = options.target.getBoundingClientRect()[property] + 'px';
});
} else {
instance.originalPosition = getStyle(parent, 'position');
}
Object.keys(maskStyle).forEach(property => {
instance.$el.style[property] = maskStyle[property];
});
};
const Loading = (options = {}) => {
if (Vue.prototype.$isServer) return;
options = merge({}, defaults, options);
if (typeof options.target === 'string') {
options.target = document.querySelector(options.target);
}
options.target = options.target || document.body;
if (options.target !== document.body) {
options.fullscreen = false;
} else {
options.body = true;
}
if (options.fullscreen && fullscreenLoading) {
return fullscreenLoading;
}
let parent = options.body ? document.body : options.target;
let instance = new LoadingConstructor({
el: document.createElement('div'),
data: options
});
addStyle(options, parent, instance);
if (instance.originalPosition !== 'absolute' && instance.originalPosition !== 'fixed' && instance.originalPosition !== 'sticky') {
addClass(parent, 'el-loading-parent--relative');
}
if (options.fullscreen && options.lock) {
addClass(parent, 'el-loading-parent--hidden');
}
parent.appendChild(instance.$el);
Vue.nextTick(() => {
instance.visible = true;
});
if (options.fullscreen) {
fullscreenLoading = instance;
}
return instance;
};
export default Loading;
<template>
<transition name="el-loading-fade" @after-leave="handleAfterLeave">
<div v-show="visible" class="el-loading-mask" :style="{ backgroundColor: background || '' }"
:class="[customClass, { 'is-fullscreen': fullscreen }]">
<div class="el-loading-spinner">
<!-- <svg v-if="!spinner" class="circular" viewBox="25 25 50 50">
<circle class="path" cx="50" cy="50" r="20" fill="none" />
</svg>
<i v-else :class="spinner"></i> -->
<img class="img" src="../../../image/progress.gif" alt="">
<p v-if="text" class="el-loading-text">{{ text }}</p>
</div>
</div>
</transition>
</template>
<script>
export default {
data () {
return {
text: null,
spinner: null,
background: null,
fullscreen: true,
visible: false,
customClass: ''
};
},
methods: {
handleAfterLeave () {
this.$emit('after-leave');
},
setText (text) {
this.text = text;
}
}
};
</script>
<style scoped lang="scss">
.el-loading-spinner {
margin-top: -100px !important;
.img {
width: 80px;
height: 80px;
}
}
</style>
\ No newline at end of file
import MessageBox from './src/main.js';
export default MessageBox;
const defaults = {
title: null,
message: '',
type: '',
iconClass: '',
showInput: false,
showClose: true,
modalFade: true,
lockScroll: true,
closeOnClickModal: true,
closeOnPressEscape: true,
closeOnHashChange: true,
inputValue: null,
inputPlaceholder: '',
inputType: 'text',
inputPattern: null,
inputValidator: null,
inputErrorMessage: '',
showConfirmButton: true,
showCancelButton: false,
confirmButtonPosition: 'right',
confirmButtonHighlight: false,
cancelButtonHighlight: false,
confirmButtonText: '',
cancelButtonText: '',
confirmButtonClass: '',
cancelButtonClass: '',
customClass: '',
beforeClose: null,
dangerouslyUseHTMLString: false,
center: false,
roundButton: false,
distinguishCancelAndClose: false
};
import Vue from 'vue';
import msgboxVue from './main.vue';
import merge from 'element-ui/src/utils/merge';
import { isVNode } from 'element-ui/src/utils/vdom';
const MessageBoxConstructor = Vue.extend(msgboxVue);
let currentMsg, instance;
let msgQueue = [];
const defaultCallback = action => {
if (currentMsg) {
let callback = currentMsg.callback;
if (typeof callback === 'function') {
if (instance.showInput) {
callback(instance.inputValue, action);
} else {
callback(action);
}
}
if (currentMsg.resolve) {
if (action === 'confirm') {
if (instance.showInput) {
currentMsg.resolve({ value: instance.inputValue, action });
} else {
currentMsg.resolve(action);
}
} else if (currentMsg.reject && (action === 'cancel' || action === 'close')) {
currentMsg.reject(action);
}
}
}
};
const initInstance = () => {
instance = new MessageBoxConstructor({
el: document.createElement('div')
});
instance.callback = defaultCallback;
};
const showNextMsg = () => {
if (!instance) {
initInstance();
}
instance.action = '';
if (!instance.visible || instance.closeTimer) {
if (msgQueue.length > 0) {
currentMsg = msgQueue.shift();
let options = currentMsg.options;
for (let prop in options) {
if (options.hasOwnProperty(prop)) {
instance[prop] = options[prop];
}
}
if (options.callback === undefined) {
instance.callback = defaultCallback;
}
let oldCb = instance.callback;
instance.callback = (action, instance) => {
oldCb(action, instance);
showNextMsg();
};
if (isVNode(instance.message)) {
instance.$slots.default = [instance.message];
instance.message = null;
} else {
delete instance.$slots.default;
}
['modal', 'showClose', 'closeOnClickModal', 'closeOnPressEscape', 'closeOnHashChange'].forEach(prop => {
if (instance[prop] === undefined) {
instance[prop] = true;
}
});
document.body.appendChild(instance.$el);
Vue.nextTick(() => {
instance.visible = true;
});
}
}
};
const MessageBox = function(options, callback) {
if (Vue.prototype.$isServer) return;
if (typeof options === 'string' || isVNode(options)) {
options = {
message: options
};
if (typeof arguments[1] === 'string') {
options.title = arguments[1];
}
} else if (options.callback && !callback) {
callback = options.callback;
}
if (typeof Promise !== 'undefined') {
return new Promise((resolve, reject) => { // eslint-disable-line
msgQueue.push({
options: merge({}, defaults, MessageBox.defaults, options),
callback: callback,
resolve: resolve,
reject: reject
});
showNextMsg();
});
} else {
msgQueue.push({
options: merge({}, defaults, MessageBox.defaults, options),
callback: callback
});
showNextMsg();
}
};
MessageBox.setDefaults = defaults => {
MessageBox.defaults = defaults;
};
MessageBox.alert = (message, title, options) => {
if (typeof title === 'object') {
options = title;
title = '';
} else if (title === undefined) {
title = '';
}
return MessageBox(merge({
title: title,
message: message,
$type: 'alert',
closeOnPressEscape: false,
closeOnClickModal: false
}, options));
};
MessageBox.close = () => {
instance.doClose();
instance.visible = false;
msgQueue = [];
currentMsg = null;
};
export default MessageBox;
export { MessageBox };
<template>
<transition name="msgbox-fade">
<div class="el-message-box__wrapper" tabindex="-1" v-show="visible" @click.self="handleWrapperClick" role="dialog"
aria-modal="true" :aria-label="title || 'dialog'">
<div class="el-message-box" :class="[customClass, center && 'el-message-box--center']">
<div class="el-message-box__header" v-if="title !== null">
<div class="el-message-box__title">
<div :class="['el-message-box__status', icon]" v-if="icon && center">
</div>
<span>{{ title }}</span>
</div>
<button type="button" class="el-message-box__headerbtn" aria-label="Close" v-if="showClose"
@click="handleAction(distinguishCancelAndClose ? 'close' : 'cancel')"
@keydown.enter="handleAction(distinguishCancelAndClose ? 'close' : 'cancel')">
<i class="el-message-box__close el-icon-close"></i>
</button>
</div>
<div class="el-message-box__content">
<div class="el-message-box__message" v-if="message !== ''">
<slot>
<p>{{ message }}</p>
</slot>
</div>
</div>
</div>
</div>
</transition>
</template>
<script type="text/babel">
import Popup from 'element-ui/src/utils/popup';
import Locale from 'element-ui/src/mixins/locale';
import { addClass, removeClass } from 'element-ui/src/utils/dom';
import { t } from 'element-ui/src/locale';
import Dialog from 'element-ui/src/utils/aria-dialog';
let messageBox;
let typeMap = {
success: 'success',
info: 'info',
warning: 'warning',
error: 'error'
};
export default {
mixins: [Popup, Locale],
props: {
modal: {
default: true
},
lockScroll: {
default: true
},
showClose: {
type: Boolean,
default: true
},
closeOnClickModal: {
default: true
},
closeOnPressEscape: {
default: true
},
closeOnHashChange: {
default: true
},
center: {
default: false,
type: Boolean
},
roundButton: {
default: false,
type: Boolean
}
},
components: {
ElInput,
ElButton
},
computed: {
icon () {
const { type, iconClass } = this;
return iconClass || (type && typeMap[type] ? `el-icon-${typeMap[type]}` : '');
},
confirmButtonClasses () {
return `el-button--primary ${this.confirmButtonClass}`;
},
cancelButtonClasses () {
return `${this.cancelButtonClass}`;
}
},
methods: {
getSafeClose () {
const currentId = this.uid;
return () => {
this.$nextTick(() => {
if (currentId === this.uid) this.doClose();
});
};
},
doClose () {
if (!this.visible) return;
this.visible = false;
this._closing = true;
this.onClose && this.onClose();
messageBox.closeDialog(); // 解绑
if (this.lockScroll) {
setTimeout(this.restoreBodyStyle, 200);
}
this.opened = false;
this.doAfterClose();
setTimeout(() => {
if (this.action) this.callback(this.action, this);
});
},
handleWrapperClick () {
if (this.closeOnClickModal) {
this.handleAction(this.distinguishCancelAndClose ? 'close' : 'cancel');
}
},
handleInputEnter () {
if (this.inputType !== 'textarea') {
return this.handleAction('confirm');
}
},
handleAction (action) {
if (this.$type === 'prompt' && action === 'confirm' && !this.validate()) {
return;
}
this.action = action;
if (typeof this.beforeClose === 'function') {
this.close = this.getSafeClose();
this.beforeClose(action, this, this.close);
} else {
this.doClose();
}
},
validate () {
if (this.$type === 'prompt') {
const inputPattern = this.inputPattern;
if (inputPattern && !inputPattern.test(this.inputValue || '')) {
this.editorErrorMessage = this.inputErrorMessage || t('el.messagebox.error');
addClass(this.getInputElement(), 'invalid');
return false;
}
const inputValidator = this.inputValidator;
if (typeof inputValidator === 'function') {
const validateResult = inputValidator(this.inputValue);
if (validateResult === false) {
this.editorErrorMessage = this.inputErrorMessage || t('el.messagebox.error');
addClass(this.getInputElement(), 'invalid');
return false;
}
if (typeof validateResult === 'string') {
this.editorErrorMessage = validateResult;
addClass(this.getInputElement(), 'invalid');
return false;
}
}
}
this.editorErrorMessage = '';
removeClass(this.getInputElement(), 'invalid');
return true;
},
getFirstFocus () {
const btn = this.$el.querySelector('.el-message-box__btns .el-button');
const title = this.$el.querySelector('.el-message-box__btns .el-message-box__title');
return btn || title;
},
getInputElement () {
const inputRefs = this.$refs.input.$refs;
return inputRefs.input || inputRefs.textarea;
},
handleClose () {
this.handleAction('close');
}
},
watch: {
inputValue: {
immediate: true,
handler (val) {
this.$nextTick(_ => {
if (this.$type === 'prompt' && val !== null) {
this.validate();
}
});
}
},
visible (val) {
if (val) {
this.uid++;
if (this.$type === 'alert' || this.$type === 'confirm') {
this.$nextTick(() => {
this.$refs.confirm.$el.focus();
});
}
this.focusAfterClosed = document.activeElement;
messageBox = new Dialog(this.$el, this.focusAfterClosed, this.getFirstFocus());
}
// prompt
if (this.$type !== 'prompt') return;
if (val) {
setTimeout(() => {
if (this.$refs.input && this.$refs.input.$el) {
this.getInputElement().focus();
}
}, 500);
} else {
this.editorErrorMessage = '';
removeClass(this.getInputElement(), 'invalid');
}
}
},
mounted () {
this.$nextTick(() => {
if (this.closeOnHashChange) {
window.addEventListener('hashchange', this.close);
}
});
},
beforeDestroy () {
if (this.closeOnHashChange) {
window.removeEventListener('hashchange', this.close);
}
setTimeout(() => {
messageBox.closeDialog();
});
},
data () {
return {
uid: 1,
title: undefined,
message: '',
type: '',
iconClass: '',
customClass: '',
showInput: false,
inputValue: null,
inputPlaceholder: '',
inputType: 'text',
inputPattern: null,
inputValidator: null,
inputErrorMessage: '',
showConfirmButton: true,
showCancelButton: false,
action: '',
confirmButtonText: '',
cancelButtonText: '',
confirmButtonLoading: false,
cancelButtonLoading: false,
confirmButtonClass: '',
confirmButtonDisabled: false,
cancelButtonClass: '',
editorErrorMessage: null,
callback: null,
dangerouslyUseHTMLString: false,
focusAfterClosed: null,
isOnComposition: false,
distinguishCancelAndClose: false
};
}
};
</script>
<template>
<div class="my-outbox">
<div class="my-inbox" ref='box'>
<div class="my-list" :style="note" v-for="(item,index) in sendVal" :key='index' ref='list'>
<span class="my-uname">{{ item }}</span>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'my-marquee-left',
props: {
sendVal: {
type: Array,
default: []
}
},
data () {
return {
note: {
backgroundSize: "20px 20px",
backgroundRepeat: "no-repeat",
backgroundPosition: "1% 50%"
},
// 定时器标识
nowTime: null,
// 每一个内容的宽度
disArr: []
}
},
mounted () {
// var that = this
var item = this.$refs.list
var len = this.sendVal.length
var arr = []
// 因为设置的margin值一样,所以取第一个就行。
var margin = this.getMargin(item[0])
for (var i = 0; i < len; i++) {
arr.push(item[i].clientWidth + margin) // 把宽度和 margin 加起来就是每一个元素需要移动的距离
}
this.disArr = arr
this.moveLeft()
},
beforeDestroy () {
// 页面关闭清除定时器
clearInterval(this.nowTime)
// 清除定时器标识
this.nowTime = null
},
methods: {
// 获取margin属性
getMargin (obj) {
var marg = window.getComputedStyle(obj, null)['margin-right']
marg = marg.replace('px', '')
return Number(marg) // 强制转化成数字
},
// 移动的方法
moveLeft () {
var that = this
var outbox = this.$refs.box
// 初始位置
var startDis = 0
// console.log('that.disArr: ', that.disArr)
this.nowTime = setInterval(function () {
startDis -= 0.5
// console.log('初始化移动:', startDis)
if (Math.abs(startDis) > Math.abs(that.disArr[0])) {
// 每次移动完一个元素的距离,就把这个元素的宽度
that.disArr.push(that.disArr.shift())
// 每次移动完一个元素的距离,就把列表数据的第一项放到最后一项
// console.log('that.sendVal: ', that.sendVal)
// console.log('that.sendVal: ', that.sendVal.shift())
that.sendVal.push(that.sendVal.shift())
startDis = 0
// console.log('移动')
} else {
// console.log('不来不来就不来...')
}
// 每次都让盒子移动指定的距离,在我自己做的项目中,这种字符串拼接的方法并没有生效
// outbox.style = 'transform: translateX3d(' + startDis + 'px)'
// 后面换了es6的模板字符串就可以了
outbox.style = `transform: translateX(${startDis}px)`
// outbox.style = 'transform: translateX(\' + startDis + \' px)'
// outbox.style.marginLeft = 'startDis'
// console.log('这里:', startDis)
}, 1000 / 60)
}
}
}
</script>
<style lang="scss" scoped>
.my-outbox {
color: #fff;
overflow: hidden;
line-height: 28px;
// background: $light-blue;
width: 500px;
.my-inbox {
white-space: nowrap;
.my-list {
margin-right: 15px;
display: inline-block;
font-size: 14px;
text-indent: 30px;
.my-uname {
color: #fff;
}
}
}
}
</style>
\ No newline at end of file
......@@ -107,7 +107,7 @@ export default {
.ls-mask {
width: 100%;
height: 100%;
z-index: 100000;
z-index: 2000;
position: fixed;
left: 0;
top: 0;
......
<template>
<div class="navbar-con">
<div class="navbar" v-theme.background="mTheme">
<div class="logo">
<img v-if="logo" :src="logo" class="header-logo">
......@@ -19,16 +20,26 @@
</el-dropdown>
</div>
</div>
<NoticeBar class="NoticeBar" :sendVal="sendVal" />
</div>
</template>
<script>
import NoticeBar from '@/components/NoticeBar/index'
import { mapGetters } from 'vuex'
export default {
components: {
NoticeBar
},
computed: {
...mapGetters(['sidebar', 'avatar', 'name'])
},
data () {
return {
logo: require('../../image/logo.png')
logo: require('../../image/logo.png'),
sendVal: [
'222222222222222222222222222222222',
'222222233333333333333333333333'
]
}
},
methods: {
......@@ -53,6 +64,16 @@ export default {
}
</script>
<style lang="scss" scoped>
.navbar-con {
position: relative;
}
.NoticeBar {
position: absolute;
left: 330px;
bottom: 0;
}
.el-dropdown-menu {
padding: 0 !important;
border: 1px solid #EBEEF5;
......
......@@ -24,6 +24,7 @@ router.beforeEach(async (to, from, next) => {
const accessRoutes = await store.dispatch('permission/generateRoutes', getMenuData)
router.addRoutes([...accessRoutes, { path: '*', redirect: '/404', hidden: true }])
const routeTo = Cookies.get('routerTo')
console.log(routeTo)
if (routeTo && routeTo !== '/') {
next({ ...to, replace: true })
} else {
......
......@@ -116,23 +116,20 @@
.title-block {
display: inline-block;
position: relative;
background: #3498db;
color: #fff !important;
text-align: center;
padding: 0px 20px;
height: 30px;
line-height: 30px;
border-radius: 5px 5px 5px 0px;
letter-spacing: 2px;
text-align: left;
width: 100%;
line-height: 26px;
padding-left: 10px;
font-size: 16px;
border-bottom: 1px solid $borderColor;
}
.title-block .triangle {
width: 0px;
height: 0px;
.title-block:after {
content: " ";
width: 0;
height: 16px;
position: absolute;
border: 5px solid transparent;
border-top: 5px solid #3498db;
border-right: 5px solid #3498db;
left: 0px;
bottom: -10px;
border-left: 3px solid $light-blue;
left: 0;
top: 5px;
}
\ No newline at end of file
......
......@@ -16,7 +16,7 @@
left: 0;
z-index: 1001;
background-color: $subMenuBg;
overflow: hidden;
// overflow: hidden;
.horizontal-collapse-transition {
transition: 0s width ease-in-out, 0s padding-left ease-in-out,
......@@ -25,8 +25,9 @@
.scrollbar-wrapper {
overflow-x: hidden !important;
overflow-y: auto;
// overflow-y: auto;
margin-right: 0 !important;
height: 90vh;
&::-webkit-scrollbar {
display: none;
......@@ -52,7 +53,6 @@
background-color: transparent !important;
border: none;
height: 100%;
// overflow-y: auto;
width: 100% !important;
}
......
import Loading from '@/components/loading/index.js';
import Loading from '@/components/Loading/index.js';
// 定义 loading
let loading
......
......@@ -3,7 +3,8 @@
作者:calliope
-->
<template>
<lb-table border :column="tableData.columns" :data="tableData.data" :maxHeight="200" heightNumSetting :pagination="false">
<lb-table border :column="tableData.columns" :data="tableData.data" :maxHeight="200" heightNumSetting
:pagination="false">
</lb-table>
</template>
<script>
......@@ -40,7 +41,7 @@ export default {
}
},
{
width: '200',
width: '150',
label: '身份证读卡器',
render: (h, scope) => {
return (
......@@ -51,7 +52,7 @@ export default {
}
},
{
width: '200',
width: '150',
prop: 'sqrxm',
label: '姓名/名称',
render: (h, scope) => {
......@@ -66,7 +67,7 @@ export default {
label: '证件种类',
render: (h, scope) => {
return (
<el-select value={scope.row[scope.column.property]}
<el-select class="width100" value={scope.row[scope.column.property]}
onChange={(val) => { scope.row[scope.column.property] = val }}>
{
this.dictData['A30'].map(option => {
......
......@@ -7,6 +7,28 @@
justify-content: space-between;
}
.workbench {
flex-wrap: wrap;
height: 100%;
li {
width: 32.5%;
height: 118px;
@include flex-center;
flex-direction: column;
color: #fff;
i {
color: #fff;
font-size: 30px;
}
}
li:nth-child(1) {
margin-bottom: 6px;
}
}
.marginZL15 {
margin: 0 15px;
}
......
......@@ -3,8 +3,14 @@
<div class="home-left">
<el-row :gutter="8">
<el-col :span="12">
<el-card shadow="hover">
鼠标悬浮时显示
<el-card shadow="hover" :body-style="{ padding: '0' }">
<ul class="workbench flexst">
<li v-for="(item, index) in newsListData" class="pointer" :key="index"
:style="{ backgroundColor: item.color }">
<i class="el-icon-s-claim"></i>
{{ item.title }}
</li>
</ul>
</el-card>
</el-col>
<el-col :span="12">
......@@ -14,7 +20,7 @@
<i class="el-icon-s-unfold pointer"></i>
</div>
<ul>
<li v-for="(item, index) in notice" :key="index" class="flexst">
<li v-for="(item, index) in notice" :key="index" class="flexst pointer">
<p class="list-title">{{ item.title }}</p>
<p class="marginZL15">{{ item.date }}</p>
<p>{{ item.state }}</p>
......@@ -41,11 +47,11 @@
<el-col :span="12">
<el-card shadow="hover">
<div slot="header" class="flexst">
<h5 class="title">公司邮件</h5>
<h5 class="title">法律法规</h5>
<i class="el-icon-s-unfold pointer"></i>
</div>
<ul>
<li v-for="(item, index) in mailList" :key="index" class="flexst">
<li v-for="(item, index) in mailList" @click="handleView" :key="index" class="flexst pointer">
<p class="right15">{{ item.date }}</p>
<p class="list-title">{{ item.title }}</p>
</li>
......@@ -73,6 +79,38 @@ export default {
components: { calendar },
data () {
return {
newsListData: [
{
icon: '',
title: '任务',
color: '#61AEFF'
},
{
icon: '',
title: '邮件',
color: '#43DEB3'
},
{
icon: '',
title: '消息',
color: '#F3C143'
},
{
icon: '',
title: '日历',
color: '#F09936'
},
{
icon: '',
title: '常用功能',
color: '#9C92FF'
},
{
icon: '',
title: '申请',
color: '#589FFF'
}
],
chartData: [{
year: '1991',
value: 15468
......@@ -92,14 +130,11 @@ export default {
year: '1996',
value: 31056
}, {
year: '1997',
value: 31982
}, {
year: '1998',
value: 32040
year: '1995',
value: 17000
}, {
year: '1999',
value: 33233
year: '1996',
value: 31056
}],
notice: [
{
......@@ -168,6 +203,10 @@ export default {
this.buildChart();
},
methods: {
handleView () {
const href = 'http://storage.xuetangx.com/public_assets/xuetangx/PDF/PlayerAPI_v1.0.6.pdf'
window.open(href, '_blank');
},
buildChart () {
var chart = new G2.Chart({
container: 'mountNode',
......@@ -204,5 +243,6 @@ export default {
}
</script>
<style scoped lang="scss">
@import "~@/styles/mixin.scss";
@import "./index.scss";
</style>
\ No newline at end of file
......
......@@ -61,6 +61,7 @@ class data extends filter {
},
{
label: "操作",
width: 100,
render: (h, scope) => {
return <el-button type="text" icon='el-icon-view' onClick={() => { vm.dydjbClick(scope) }}>打印登记薄</el-button>
}
......
<template>
<dialogBox title="家庭房产查询" @closeDialog="closeDialog" width="90%" :isButton="false" v-model="myValue">
<dialogBox title="家庭房产查询" @closeDialog="closeDialog" isMain width="70%" :isButton="false" v-model="myValue">
<div class="jtfccx-edit">
<div class="jtfccx-edit-con">
<b class="title">申请信息</b>
......@@ -26,19 +26,18 @@
<b class="title">权利人</b>
<personInfoTable @getInfoList="handleGetQlList" :dataList="qldataList" />
<div class="submit-button">
<el-button type="primary" @click="queryChick()">查询</el-button>
<el-button @click="resetClick()">重置</el-button>
<el-button type="primary" @click="queryChick">查询</el-button>
<el-button @click="resetClick">重置</el-button>
</div>
<b class="title">查询结果</b>
<!-- <p>查询编号:{{cxbh}}</p> -->
<lb-table :column="searchData.columns" border :data="searchData.data" :maxHeight="200" heightNumSetting
<b class="title" v-if="isSearch">查询结果</b>
<lb-table :column="searchData.columns" v-if="isSearch" :data="searchData.data" :maxHeight="200" heightNumSetting
:pagination="false">
</lb-table>
</div>
<div class="submit-button" style="padding-bottom:20px">
<el-button type="primary">无房证明打印(1)</el-button>
<el-button type="primary">房产结果打印(1)</el-button>
<div class="submit-button" v-if="isSearch" style="padding-bottom:20px">
<el-button type="primary" v-if="searchData.data.length > 0">房产结果打印(1)</el-button>
<el-button type="primary" v-else>无房证明打印(1)</el-button>
<el-button @click="closeDialog">关闭</el-button>
</div>
</div>
......@@ -57,10 +56,9 @@ export default {
props: {
value: { type: Boolean, default: false },
},
mounted() {
mounted () {
sendThis(this);
},
data () {
return {
myValue: this.value,
......@@ -69,6 +67,7 @@ export default {
ycyrgx: 1,
cxlx: '1' //查询类型 1:房产查询 2:登记簿查询
},
isSearch: false,
dataList: [{
sqrxm: '',
sqrzjlxbm: '',
......@@ -131,14 +130,10 @@ export default {
},
queryChick () {
this.addJtfc.djSqcxDO = { ...this.ruleForm }
// this.$message({
// type: 'success',
// message: '删除成功!'
// });
addJtfcCxjgXx(this.addJtfc).then(res => {
this.searchData.data = res.result;
console.log(res);
this.isSearch = true
})
},
resetClick () {
......@@ -148,12 +143,12 @@ export default {
handleRead (row) { },
//抵押
dyClick(){
dyClick () {
},
//查封
cfClick(){
cfClick () {
}
}
......@@ -162,6 +157,7 @@ export default {
<style scoped lang="scss">
@import "~@/styles/mixin.scss";
@import "~@/styles/public.scss";
.title {
padding-bottom: 10px;
margin-bottom: 10px;
......
......@@ -61,7 +61,6 @@ class data extends filter {
{
label: '登记状态',
width: '150',
align: 'center',
fixed: 'right',
render: (h, scope) => {
......@@ -69,9 +68,7 @@ class data extends filter {
<div>
<el-button type="text" icon="el-icon-edit-outline" onClick={() => { this.dyClick(scope) }}>抵押</el-button>
<el-button type="text" icon="el-icon-edit-outline" onClick={() => { this.cfClick(scope) }}>查封</el-button>
</div>
)
}
}
......
......@@ -81,8 +81,18 @@ export default {
handleAdd () {
this.isDialog = true;
},
handleViewClick (scope) {
var sqcxBsm = scope.row.bsmSqcx;
this.$popup("申请查询记录", "sqcx/sqcxjl/components/sqcxjlInfo", {
formData: {
sqcxBsm: sqcxBsm,
},
};
cancel: function () { }, //取消事件的回调
confirm: function () { },
});
}
}
}
</script>
<style scoped lang="scss">
@import "~@/styles/public.scss";
......
......@@ -69,6 +69,13 @@ class data extends filter {
{
prop: "cxyt",
label: "查询用途"
},
{
label: "操作",
width: 80,
render: (h, scope) => {
return <el-button type="text" icon='el-icon-view' onClick={() => { vm.handleViewClick(scope) }}>查看</el-button>
}
}
]
}
......
<template>
<div >
<div>
<el-form :model="ruleForm" label-width="120px">
<el-row>
<el-col :span="24" style="margin-bottom: 15px">
......@@ -29,14 +29,8 @@
<el-row>
<el-col>
<lb-table
:column="sqrData.columns"
border
:data="sqrData.data"
:maxHeight="200"
heightNumSetting
:pagination="false"
>
<lb-table :column="sqrData.columns" border :data="sqrData.data" :maxHeight="200" heightNumSetting
:pagination="false">
</lb-table>
</el-col>
</el-row>
......@@ -51,14 +45,8 @@
</el-row>
<el-row>
<el-col>
<lb-table
:column="qlrData.columns"
border
:data="qlrData.data"
:maxHeight="200"
heightNumSetting
:pagination="false"
>
<lb-table :column="qlrData.columns" border :data="qlrData.data" :maxHeight="200" heightNumSetting
:pagination="false">
</lb-table>
</el-col>
</el-row>
......@@ -73,19 +61,13 @@
</el-row>
<el-row>
<el-col>
<p>查询编号:{{cxbh}}</p>
<p>查询编号:{{ cxbh }}</p>
</el-col>
</el-row>
<el-row>
<el-col>
<lb-table
border
:column="cxjgData.columns"
:data="cxjgData.data"
:maxHeight="200"
heightNumSetting
:pagination="false"
>
<lb-table :column="cxjgData.columns" :data="cxjgData.data" :maxHeight="200" heightNumSetting
:pagination="false">
</lb-table>
</el-col>
</el-row>
......@@ -104,12 +86,12 @@ export default {
// },
props: ["formData"],
created() {
created () {
// debugger;
// alert(this.formData.sqcxBsm);
},
data() {
data () {
return {
ruleForm: {
cxyt: "",
......@@ -134,8 +116,7 @@ export default {
};
},
mounted() {
debugger;
mounted () {
sendThis(this);
var sqcxBsm = this.formData.sqcxBsm;
......@@ -145,19 +126,17 @@ export default {
this.sqrData.data = res.result.sqxx;
this.qlrData.data = res.result.qlrxx;
this.cxjgData.data = res.result.djSqcxCxjgDOList;
this.cxbh=res.result.djSqcxDO.cxbh;
this.cxbh = res.result.djSqcxDO.cxbh;
}
})
.catch((error) => {
console.log(error);
});
})
},
methods: {},
};
</script>
<style scoped lang="scss">
@import "~@/styles/mixin.scss";
</style>
......
......@@ -8,7 +8,7 @@ class data extends filter {
constructor() {
super()
}
cxjgcolumns() {
cxjgcolumns () {
return [
{
prop: 'qszt',
......@@ -73,7 +73,6 @@ class data extends filter {
{
label: '登记状态',
width: '150',
align: 'center',
fixed: 'right',
render: (h, scope) => {
......@@ -86,7 +85,7 @@ class data extends filter {
}
]
}
sqrcolumns() {
sqrcolumns () {
return [
{
prop: 'sqrxm',
......@@ -107,7 +106,7 @@ class data extends filter {
]
}
qlrcolumns() {
qlrcolumns () {
return [
{
prop: 'sqrxm',
......
......@@ -78,7 +78,6 @@ export default {
handleViewClick (scope) {
var sqcxBsm = scope.row.bsmSqcx;
this.$popup("申请查询记录", "sqcx/sqcxjl/components/sqcxjlInfo", {
height: "800px",
formData: {
sqcxBsm: sqcxBsm,
},
......
......@@ -65,10 +65,11 @@ class data extends filter {
},
{
label: "操作",
width: 80,
render: (h, scope) => {
return <el-button type="text" icon='el-icon-view' onClick={() => { vm.handleViewClick(scope) }}>查看</el-button>
}
},
}
]
}
}
......
......@@ -85,6 +85,9 @@
padding-left: 5px !important;
}
/deep/.el-menu {
border-right: none;
}
/deep/.el-menu-item.is-active {
......
......@@ -8,11 +8,6 @@
<el-form :model="ruleForm" ref="ruleForm" label-width="100px">
<el-row>
<el-col :span="8">
<el-form-item label="业务来源" prop="ywlymc">
<el-input v-model="ruleForm.ywlymc"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="申请业务名称" prop="sqywmc">
<el-input v-model="ruleForm.sqywmc"></el-input>
</el-form-item>
......@@ -22,13 +17,13 @@
<el-input v-model="ruleForm.qlrmc"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="义务人" prop="ywrmc">
<el-input v-model="ruleForm.ywrmc"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="受理时间" prop="slsj">
<el-date-picker v-model="ruleForm.slsj" value-format="yyyy-MM-dd" class="width100" type="date"
......@@ -55,7 +50,6 @@ export default {
return {
myValue: this.value,
ruleForm: {
ywlymc: '',
sqywmc: '',
qlrmc: '',
ywrmc: '',
......
<template>
<div class="from-clues">
<!-- 表单部分 -->
<div class="from-clues-header">
<el-form :model="queryForm" ref="queryForm" @submit.native.prevent label-width="80px">
<el-row>
......@@ -57,7 +56,7 @@
</div>
<div class="from-clues-content">
<lb-table :page-size="pageData.size" class="loadingtext" @sort-change="handleSort"
:current-page.sync="pageData.currentPage" :heightNum="300" :total="tableData.total"
:current-page.sync="pageData.currentPage" :heightNum="290" :total="tableData.total"
@size-change="handleSizeChange" @p-current-change="handleCurrentChange" :column="tableData.columns"
:data="tableData.data">
</lb-table>
......@@ -98,6 +97,13 @@ export default {
sendThis(this);
this.queryClick()
},
watch: {
queryForm: {
handler (newName, oldName) {
},
immediate: true
}
},
methods: {
// 列表渲染接口
queryClick () {
......
......@@ -124,6 +124,10 @@ export default {
});
},
handleSelectionChange (val) {
val.forEach((item, index) => {
item.bsmSsql = item.bsmQlxx
item.ybdcqzsh = item.bdcqzh
})
this.bdcdysz = val
}
},
......
......@@ -30,7 +30,7 @@ export function queueDjywmc (djywbm) {
case "A07400":
vm = "jsydsyq200";
break;
case "A07100"://抵押权首次
case "A37100"://抵押权首次
vm = "bdcqlMain";
break;
case "A37200"://抵押权转移
......
......@@ -30,7 +30,7 @@
flex-direction: column;
.item-list {
max-height: calc(100vh - 380px);
max-height: calc(100vh - 360px);
overflow-y: auto;
}
......@@ -146,6 +146,7 @@
flex: 1;
width: 100%;
padding: 3px;
}
p:nth-child(2) {
......@@ -189,7 +190,7 @@
cursor: pointer;
margin-bottom: 15px;
p {
p:nth-child(2) {
@include flex-center;
}
......@@ -202,6 +203,9 @@
flex: 1;
width: 100%;
padding: 3px;
padding-left: 30px;
display: flex;
align-items: center;
}
p:nth-child(2) {
......
......@@ -31,37 +31,21 @@
</ul>
</div>
<div class="right-situation el-card box-card is-always-shadow">
<div v-if="n >= 0">
<div class="right-title">常办业务列表</div>
<div class="right-title">{{ obj[n] }}</div>
<ul>
<li v-for="(item, index) in ywList" :key="index" @click="handleSelectYw(item, ywList)"
<li v-for="(item, index) in itemList" :key="index" @click="handleSelectYw(item, ywList)"
:class="item.cselect ? 'cactive' : ''">
<p>
{{ item.djywmc }}<br>
{{ item.nodename }}
</p>
<p v-if="item.sffqlc == 1" class="active" @click.stop="handleCollection(item)">
<i class="el-icon-star-off active"></i>
</p>
</li>
</ul>
</div>
<div v-if="n == -1">
<div class="right-title">登记情形</div>
<ul class="registration">
<li v-for="(item, index) in djqxList" @click="handleSelectYw(item, djqxList)"
:class="item.cselect ? 'cactive' : ''" :key="index">
<p>
{{ item.nodename }}
</p>
<p :class="item.userCollect == 1 ? 'active' : ''" @click.stop="handleCollection(item)">
<i class="el-icon-star-off" :class="item.userCollect == 1 ? 'active' : ''"></i>
</p>
</li>
</ul>
</div>
</div>
<div class="submit-button">
<el-button type="primary" :disabled="btnDisabled" @click="bthSelectClick">选择不动产</el-button>
</div>
......@@ -70,7 +54,6 @@
</div>
</template>
<script>
import Cookies from 'js-cookie'
import fqsqDialog from "./slectBdc.vue"
import { getCollectBiz, getleftMenu, getNextNode, addCollectBiz, deleteCollectBiz } from "@/api/ywbl"
export default {
......@@ -81,10 +64,17 @@ export default {
leftList: [
'常办业务', '一并申请', '登记簿补录',
],
// 左侧列表
list: [],
djlxList: [],
itemList: [],
ywList: [],
djqxList: [],
obj: {
'0': '常办业务列表',
'-1': '登记情形'
},
isDialog: false,
btnDisabled: true,
djywbm: '',
......@@ -104,12 +94,16 @@ export default {
},
methods: {
getDataList () {
getCollectBiz({ 'target': '#ywsq' }).then(res => {
getCollectBiz().then(res => {
let { result } = res
this.ywList = result
this.ywList.forEach(item => {
this.$set(item, 'cselect', false)
item.userCollect = 1
})
if (this.n == 0) {
this.itemList = this.ywList
}
})
getleftMenu().then(res => {
let { result } = res
......@@ -118,9 +112,14 @@ export default {
},
handleleftTitle (index) {
this.n = index
let obj = {
'0': this.ywList
}
this.itemList = obj[this.n]
this.list.forEach(item => {
if (item.check) item.check = false
})
},
// 业务-登记情形选择
handleSelectYw (item, list) {
......@@ -135,7 +134,6 @@ export default {
this.btnDisabled = false
this.bsmSqyw = item.bsmSqyw
this.djywbm = item.djywbm
console.log(this.djywbm, 'this.djywbm');
}
},
handleList (list, obj) {
......@@ -147,11 +145,11 @@ export default {
this.$set(obj, 'check', true)
this.getNextNode(obj.bsmSqyw)
this.djqxList = []
this.djlxList = []
this.itemList = []
},
// 获取下个节点类型
getNextNode (bsmSqyw, type) {
getNextNode(bsmSqyw, { 'target': '#ywsq' }).then(res => {
getNextNode (bsmSqyw, type = true) {
getNextNode(bsmSqyw).then(res => {
if (res.result.djqx) this.djqxList = res.result.djqx
if (res.result.djlx) this.djlxList = res.result.djlx
if (type) {
......@@ -162,6 +160,7 @@ export default {
this.$set(item, 'cselect', false)
})
}
this.itemList = this.djqxList
})
},
handleCollection (item) {
......@@ -178,6 +177,11 @@ export default {
}
})
} else {
this.$confirm('此操作将取消收藏, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteCollectBiz(item.bsmSqyw).then(res => {
if (res.code == 200) {
item.userCollect = '2'
......@@ -188,6 +192,12 @@ export default {
that.getDataList()
}
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消收藏'
})
})
}
},
handleSelect (item) {
......@@ -198,11 +208,11 @@ export default {
},
// 登记类型
handleDjlxSelect (item) {
this.btnDisabled = true
this.djlxList.forEach(item => {
if (item.cselect) item.cselect = false
item.cselect = false
})
this.$set(item, 'cselect', true)
this.btnDisabled = true
item.cselect = true
if (item.sffqlc == '1') {
this.btnDisabled = false
this.bsmSqyw = item.bsmSqyw
......@@ -225,4 +235,12 @@ export default {
<style scoped lang='scss'>
@import "~@/styles/mixin.scss";
@import './ywsq.scss';
/deep/.el-collapse-item__content {
padding-bottom: 0;
}
/deep/.el-collapse-item__wrap {
border-bottom: none;
}
</style>
\ No newline at end of file
......
......@@ -6,17 +6,26 @@
<el-row>
<el-col :span="5">
<el-form-item label="分发编号">
<el-input v-model="approveForm.batchno" @clear="queryClick()" clearable placeholder="分发编号"></el-input>
<el-input v-model="ruleForm.batchno" @clear="queryClick()" clearable placeholder="分发编号"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="领取时间">
<el-date-picker v-model="ruleForm.ffsj" type="daterange" range-separator="至" start-placeholder="开始日期"
end-placeholder="结束日期" @change="timeChange()" value-format="yyyy-MM-dd HH:mm:ss" clearable>
<el-col :span="5">
<el-form-item label="开始日期">
<el-date-picker v-model="ruleForm.ffkssj" :picker-options="pickerOptionsStart" type="date"
placeholder="开始日期" value-format="yyyy-MM-dd" clearable>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="结束时间">
<el-date-picker v-model="ruleForm.ffjssj" :picker-options="pickerOptionsEnd" type="date"
placeholder="结束日期" value-format="yyyy-MM-dd" clearable>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="11" class="btnColRight">
<el-col :span="9" class="btnColRight">
<el-form-item>
<el-button type="primary" native-type="submit" @click="queryClick()">查询</el-button>
<el-button type="primary" @click="openDialog()">新增</el-button>
......@@ -55,10 +64,6 @@ export default {
isDialog: false,
value: '',
ruleForm: {
batchno: "",
ffsj: ""
},
approveForm: {
batchno: '',
ffkssj: '',
ffjssj: ''
......@@ -68,6 +73,26 @@ export default {
columns: datas.columns(),
data: [],
},
// 开始结束日期限制
pickerOptionsStart: {
disabledDate: (time) => {
if (this.ruleForm.ffjssj) {
return (
time.getTime() >= new Date(this.ruleForm.ffjssj).getTime()
);
}
}
},
// 结束日期限制
pickerOptionsEnd: {
disabledDate: (time) => {
if (this.ruleForm.ffkssj) {
return (
time.getTime() <= new Date(this.ruleForm.ffkssj).getTime()
);
}
}
}
}
},
methods: {
......@@ -76,7 +101,7 @@ export default {
},
// 列表渲染接口
fetchData () {
getZsglffList({ ...this.approveForm, ...this.pageData }).then(res => {
getZsglffList({ ...this.ruleForm, ...this.pageData }).then(res => {
if (res.code === 200) {
let { total, records } = res.result
this.tableData.total = total;
......@@ -100,17 +125,6 @@ export default {
queryClick () {
this.fetchData()
},
//修改筛选时间
timeChange () {
if (this.ruleForm.ffsj != null) {
this.approveForm.ffkssj = this.ruleForm.ffsj[0];
this.approveForm.ffjssj = this.ruleForm.ffsj[1];
} else {
this.approveForm.ffkssj = ''
this.approveForm.ffjssj = ''
}
this.fetchData()
},
//确定证书分发
confrimVerify (item) {
this.$confirm('是否确定分发', '提示', {
......@@ -161,4 +175,8 @@ export default {
</script>
<style scoped lang="scss">
@import "~@/styles/public.scss";
/deep/.el-icon-date {
display: none;
}
</style>
......
......@@ -9,14 +9,21 @@
<el-input v-model="ruleForm.batchno" @clear="queryClick()" clearable placeholder="入库编号"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="人库时间">
<el-date-picker v-model="ruleForm.rksj" type="datetimerange" range-separator="至" start-placeholder="开始日期"
end-placeholder="结束日期" @change="timeChange()" value-format="yyyy-MM-dd HH:mm:ss" clearable>
<el-col :span="5">
<el-form-item label="开始日期">
<el-date-picker v-model="ruleForm.rkkssj" :picker-options="pickerOptionsStart" type="date"
placeholder="开始日期" value-format="yyyy-MM-dd" clearable>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="结束时间">
<el-date-picker v-model="ruleForm.rkjssj" :picker-options="pickerOptionsEnd" type="date"
placeholder="结束日期" value-format="yyyy-MM-dd" clearable>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="11" class="btnColRight">
<el-col :span="9" class="btnColRight">
<el-form-item>
<el-button type="primary" native-type="submit" @click="queryClick()">查询</el-button>
<el-button type="primary" @click="openDialog()">新增</el-button>
......@@ -54,7 +61,6 @@ export default {
isDialog: false,
viewDialog: false,
ruleForm: {
rksj: '',
batchno: '',
rkkssj: '',
rkjssj: ''
......@@ -64,7 +70,27 @@ export default {
columns: datas.columns(),
data: [],
},
};
// 开始结束日期限制
pickerOptionsStart: {
disabledDate: (time) => {
if (this.ruleForm.rkjssj) {
return (
time.getTime() >= new Date(this.ruleForm.rkjssj).getTime()
);
}
}
},
// 结束日期限制
pickerOptionsEnd: {
disabledDate: (time) => {
if (this.ruleForm.rkkssj) {
return (
time.getTime() <= new Date(this.ruleForm.rkkssj).getTime()
);
}
}
}
}
},
methods: {
// 列表渲染接口
......@@ -92,17 +118,6 @@ export default {
queryClick () {
this.fetchData()
},
//修改筛选时间
timeChange (val) {
if (this.ruleForm.rksj != null) {
this.ruleForm.rkkssj = this.ruleForm.rksj[0];
this.ruleForm.rkjssj = this.ruleForm.rksj[1];
} else {
this.ruleForm.rkkssj = ''
this.ruleForm.rkjssj = ''
}
this.fetchData()
},
//删除证书入库数据
delZsrk (item) {
this.$confirm('确定要删除吗, 是否继续?', '提示', {
......@@ -153,4 +168,8 @@ export default {
</script>
<style scoped lang="scss">
@import "~@/styles/public.scss";
/deep/.el-icon-date {
display: none;
}
</style>
......
import filter from '@/utils/filter.js'
let vm = null
const sendThis = (_this) => {
vm = _this
}
......@@ -60,7 +59,6 @@ class data extends filter {
},
{
label: '操作',
width: '200',
align: 'center',
fixed: 'right',
render: (h, scope) => {
......