3e57a29d by 任超

feat:监管平台开始搭建

0 parents
Showing 219 changed files with 4891 additions and 0 deletions
# https://editorconfig.org
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
insert_final_newline = false
trim_trailing_whitespace = false
# just a flag
ENV = 'development'
NODE_ENV=development
# base api
VUE_APP_BASE_API = '/api'
# 开发环境
VUE_APP_API_BASE_URL = 'http://192.168.2.38:8008'
# just a flag
ENV = 'production'
NODE_ENV=production
# base api
VUE_APP_BASE_API = ''
# 演示,正式后端
VUE_APP_API_BASE_URL = 'http://192.168.2.38:8008'
.DS_Store
node_modules
/dist
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Editor directories and files
.history
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
/src/api/config.js
package-lock.json
MIT License
Copyright (c) 2017-present PanJiaChen
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
# 安装依赖
npm install
# 建议不要直接使用 cnpm 安装依赖,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题
npm install --registry=https://registry.npm.taobao.org
## Git 贡献提交规范
- 参考 [vue](https://github.com/vuejs/vue/blob/dev/.github/COMMIT_CONVENTION.md) 规范 ([Angular](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-angular))
- `feat` 增加新功能
- `fix` 修复问题/BUG
- `style` 代码风格相关无影响运行结果的
- `perf` 优化/性能提升
- `refactor` 重构
- `revert` 撤销修改
- `test` 测试相关
- `docs` 文档/注释
- `chore` 依赖更新/脚手架配置修改等
- `wip` 开发中
module.exports = {
presets: [
// https://github.com/vuejs/vue-cli/tree/master/packages/@vue/babel-preset-app
// '@vue/cli-plugin-babel/preset'
[
"@vue/app",
{
"useBuiltIns": "entry",
polyfills: [
'es6.promise',
'es6.symbol'
]
}
]
],
'env': {
'development': {
// babel-plugin-dynamic-import-node plugin only does one thing by converting all import() to require().
// This plugin can significantly increase the speed of hot updates, when you have a large number of pages.
// https://panjiachen.github.io/vue-element-admin-site/guide/advanced/lazy-loading.html
'plugins': ['dynamic-import-node']
}
}
}
{
"name": "bdcdj-web",
"version": "4.4.0",
"description": "HOUTAI",
"author": "psh",
"scripts": {
"dev": "vue-cli-service serve",
"build": "vue-cli-service build"
},
"dependencies": {
"@jiaminghi/data-view": "^2.10.0",
"axios": "^0.21.1",
"core-js": "^3.6.5",
"echarts": "^4.6.0",
"js-cookie": "2.2.0",
"lodash": "^4.17.21",
"node-sass": "^4.14.1",
"normalize.css": "7.0.0",
"nprogress": "0.2.0",
"vue": "2.6.10",
"vue-awesome": "^4.5.0",
"vue-router": "3.0.2",
"vuex": "3.1.0"
},
"devDependencies": {
"@vue/cli-plugin-babel": "4.4.4",
"@vue/cli-plugin-unit-jest": "4.4.4",
"@vue/cli-service": "4.4.4",
"@vue/test-utils": "1.0.0-beta.29",
"autoprefixer": "9.5.1",
"babel-plugin-dynamic-import-node": "2.3.3",
"chalk": "2.4.2",
"connect": "3.6.6",
"element-ui": "^2.15.8",
"html-webpack-plugin": "3.2.0",
"runjs": "4.3.2",
"sass-loader": "8.0.2",
"sass-resources-loader": "^2.2.1",
"script-ext-html-webpack-plugin": "2.1.3",
"serve-static": "1.13.2",
"style-resources-loader": "^1.4.1",
"svg-sprite-loader": "4.1.3",
"svgo": "^2.3.1",
"vue-template-compiler": "2.6.10"
},
"browserslist": [
"> 1%",
"last 2 versions"
],
"bugs": {
"url": "https://github.com/PanJiaChen/vue-element-admin/issues"
},
"engines": {
"node": ">=8.9",
"npm": ">= 3.0.0"
},
"keywords": [
"vue",
"admin",
"dashboard",
"element-ui",
"boilerplate",
"admin-template",
"management-system"
],
"license": "MIT",
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"repository": {
"type": "git",
"url": "git+https://github.com/PanJiaChen/vue-element-admin.git"
}
}
module.exports = {
plugins: {
autoprefixer: {}
},
}
No preview for this file type
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="renderer" content="webkit">
<meta name="referrer" content="no-referrer" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= webpackConfig.name %></title>
</head>
<body>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
<script>
window.baseUrl = location.origin || location.protocol +'//'+location.host
// window.authorization = 'bearer AT-14-h4UlUGjPvgmrIgnDO-3QgMP0m4YJGQTR';
// window.authorization = 'bearer AT-223-c-Q86EHx75m7ig3EDf-SwMWl4U0AKn0b';
window.timeout=5000
window.authorization="bearer AT-4-MxSrO29Coe7VTazx8uuixtqqgO-hvCB6"
</script>
<template>
<div id="app">
<router-view />
</div>
</template>
\ No newline at end of file
import request from '@/utils/request'
class dataReporting {
// 数据上报表头相关接口
async getQltFwFdcqYzByCondition (id) {
return request({
url: '/sjsbFunctionOper/getSjsbTableInfo',
method: 'get',
params: {
msgId: id
}
})
}
// 根据msgid查询任务表数据详情
async searchTaskInfoByMsgid (id) {
return request({
url: '/sjsbFunctionOper/searchTaskInfoByMsgid',
method: 'get',
params: {
msgid: id
}
})
}
}
export default new dataReporting()
\ No newline at end of file
import request from '@/utils/request'
class ruleConfig {
// 列表查询
async getSysYwsjbList (data) {
return request({
url: '/SysYwsjb/getSysYwsjbList',
method: 'post',
data
})
}
// 编辑界面列表查询
async eidtConfigRule (id) {
return request({
url: '/SysYwsjb/getSysYwsjbWithSysYwsjbFieldByBsmYwsjb',
method: 'get',
params: {
bsmYwsjb: id
}
})
}
// 编辑
async editSysYwsjbWithSysYwsjbField (data) {
return request({
url: '/SysYwsjb/editSysYwsjbWithSysYwsjbField',
method: 'post',
data
})
}
// 编辑
async deleteSysYwsjbWithSysYwsjbFieldByBsmYwsjb (id) {
return request({
url: '/SysYwsjb/deleteSysYwsjbWithSysYwsjbFieldByBsmYwsjb',
method: 'delete',
params: {
bsmYwsjb: id
}
})
}
// 编辑界面列表查询----根据数据表名查询
async getRuleList (dataTable) {
return request({
url: '/SysYwsjb/getSysYwsjbWithSysYwsjbFieldByDataTable',
method: 'get',
params: {
dataTable: dataTable
}
})
}
}
export default new ruleConfig()
\ No newline at end of file
import request from '@/utils/request'
import SERVER from './config'
// 用户首页
// 获取首页待办事项
export function getHomeTodoList () {
return request({
url: SERVER.SERVERAPI + '/rest/workBench/getHomeTodoList',
method: 'get'
})
}
//获取首页已办事项
export function getHomeDoneList () {
return request({
url: SERVER.SERVERAPI + '/rest/workBench/getHomeDoneList',
method: 'get'
})
}
//获取首页常办项目
export function getHomeFrequentProjects () {
return request({
url: SERVER.SERVERAPI + '/rest/workBench/getHomeFrequentProjects',
method: 'get'
})
}
//保存常办项目
export function saveFrequentProjectsList (data) {
return request({
url: SERVER.SERVERAPI + '/rest/workBench/saveFrequentProjectsList',
method: 'post',
data
})
}
// 获取用户信息
export function getUserInfo () {
return request({
url: SERVER.SERVERAPI + '/rest/user/getUserInfo',
method: 'get',
})
}
// 获取菜单信息
export function getMenuInfo () {
return request({
url: SERVER.SERVERAPI + '/rest/user/getUserAuthorizationMenus',
method: 'get',
})
}
<template>
<div :id="id" :class="className" :style="{ height: height, width: width }" />
</template>
<script>
import tdTheme from './theme.json' // 引入默认主题
import '../map/fujian.js'
export default {
name: 'echart',
props: {
className: {
type: String,
default: 'chart'
},
id: {
type: String,
default: 'chart'
},
width: {
type: String,
default: '100%'
},
height: {
type: String,
default: '2.5rem'
},
options: {
type: Object,
default: ()=>({})
}
},
data () {
return {
chart: null
}
},
watch: {
options: {
handler (options) {
// 设置true清空echart缓存
this.chart.setOption(options, true)
},
deep: true
}
},
mounted () {
this.$echarts.registerTheme('tdTheme', tdTheme); // 覆盖默认主题
this.initChart();
},
beforeDestroy () {
this.chart.dispose()
this.chart = null
},
methods: {
initChart () {
// 初始化echart
this.chart = this.$echarts.init(this.$el, 'tdTheme')
this.chart.setOption(this.options, true)
}
}
}
</script>
<style>
</style>
{
"color": [
"#2d8cf0",
"#19be6b",
"#ff9900",
"#E46CBB",
"#9A66E4",
"#ed3f14"
],
"backgroundColor": "rgba(0,0,0,0)",
"textStyle": {},
"title": {
"textStyle": {
"color": "#516b91"
},
"subtextStyle": {
"color": "#93b7e3"
}
},
"line": {
"itemStyle": {
"normal": {
"borderWidth": "2"
}
},
"lineStyle": {
"normal": {
"width": "2"
}
},
"symbolSize": "6",
"symbol": "emptyCircle",
"smooth": true
},
"radar": {
"itemStyle": {
"normal": {
"borderWidth": "2"
}
},
"lineStyle": {
"normal": {
"width": "2"
}
},
"symbolSize": "6",
"symbol": "emptyCircle",
"smooth": true
},
"bar": {
"itemStyle": {
"normal": {
"barBorderWidth": 0,
"barBorderColor": "#ccc"
},
"emphasis": {
"barBorderWidth": 0,
"barBorderColor": "#ccc"
}
}
},
"pie": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
},
"emphasis": {
"borderWidth": 0,
"borderColor": "#ccc"
}
}
},
"scatter": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
},
"emphasis": {
"borderWidth": 0,
"borderColor": "#ccc"
}
}
},
"boxplot": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
},
"emphasis": {
"borderWidth": 0,
"borderColor": "#ccc"
}
}
},
"parallel": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
},
"emphasis": {
"borderWidth": 0,
"borderColor": "#ccc"
}
}
},
"sankey": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
},
"emphasis": {
"borderWidth": 0,
"borderColor": "#ccc"
}
}
},
"funnel": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
},
"emphasis": {
"borderWidth": 0,
"borderColor": "#ccc"
}
}
},
"gauge": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
},
"emphasis": {
"borderWidth": 0,
"borderColor": "#ccc"
}
}
},
"candlestick": {
"itemStyle": {
"normal": {
"color": "#edafda",
"color0": "transparent",
"borderColor": "#d680bc",
"borderColor0": "#8fd3e8",
"borderWidth": "2"
}
}
},
"graph": {
"itemStyle": {
"normal": {
"borderWidth": 0,
"borderColor": "#ccc"
}
},
"lineStyle": {
"normal": {
"width": 1,
"color": "#aaa"
}
},
"symbolSize": "6",
"symbol": "emptyCircle",
"smooth": true,
"color": [
"#2d8cf0",
"#19be6b",
"#f5ae4a",
"#9189d5",
"#56cae2",
"#cbb0e3"
],
"label": {
"normal": {
"textStyle": {
"color": "#eee"
}
}
}
},
"map": {
"itemStyle": {
"normal": {
"areaColor": "#f3f3f3",
"borderColor": "#516b91",
"borderWidth": 0.5
},
"emphasis": {
"areaColor": "rgba(165,231,240,1)",
"borderColor": "#516b91",
"borderWidth": 1
}
},
"label": {
"normal": {
"textStyle": {
"color": "#000"
}
},
"emphasis": {
"textStyle": {
"color": "rgb(81,107,145)"
}
}
}
},
"geo": {
"itemStyle": {
"normal": {
"areaColor": "#f3f3f3",
"borderColor": "#516b91",
"borderWidth": 0.5
},
"emphasis": {
"areaColor": "rgba(165,231,240,1)",
"borderColor": "#516b91",
"borderWidth": 1
}
},
"label": {
"normal": {
"textStyle": {
"color": "#000"
}
},
"emphasis": {
"textStyle": {
"color": "rgb(81,107,145)"
}
}
}
},
"categoryAxis": {
"axisLine": {
"show": true,
"lineStyle": {
"color": "#cccccc"
}
},
"axisTick": {
"show": false,
"lineStyle": {
"color": "#333"
}
},
"axisLabel": {
"show": true,
"textStyle": {
"color": "#fff"
}
},
"splitLine": {
"show": false,
"lineStyle": {
"color": [
"#eeeeee"
]
}
},
"splitArea": {
"show": false,
"areaStyle": {
"color": [
"rgba(250,250,250,0.05)",
"rgba(200,200,200,0.02)"
]
}
}
},
"valueAxis": {
"axisLine": {
"show": true,
"lineStyle": {
"color": "#cccccc"
}
},
"axisTick": {
"show": false,
"lineStyle": {
"color": "#333"
}
},
"axisLabel": {
"show": true,
"textStyle": {
"color": "#fff"
}
},
"splitLine": {
"show": false,
"lineStyle": {
"color": [
"#eeeeee"
]
}
},
"splitArea": {
"show": false,
"areaStyle": {
"color": [
"rgba(250,250,250,0.05)",
"rgba(200,200,200,0.02)"
]
}
}
},
"logAxis": {
"axisLine": {
"show": true,
"lineStyle": {
"color": "#cccccc"
}
},
"axisTick": {
"show": false,
"lineStyle": {
"color": "#333"
}
},
"axisLabel": {
"show": true,
"textStyle": {
"color": "#999999"
}
},
"splitLine": {
"show": true,
"lineStyle": {
"color": [
"#eeeeee"
]
}
},
"splitArea": {
"show": false,
"areaStyle": {
"color": [
"rgba(250,250,250,0.05)",
"rgba(200,200,200,0.02)"
]
}
}
},
"timeAxis": {
"axisLine": {
"show": true,
"lineStyle": {
"color": "#cccccc"
}
},
"axisTick": {
"show": false,
"lineStyle": {
"color": "#333"
}
},
"axisLabel": {
"show": true,
"textStyle": {
"color": "#999999"
}
},
"splitLine": {
"show": true,
"lineStyle": {
"color": [
"#eeeeee"
]
}
},
"splitArea": {
"show": false,
"areaStyle": {
"color": [
"rgba(250,250,250,0.05)",
"rgba(200,200,200,0.02)"
]
}
}
},
"toolbox": {
"iconStyle": {
"normal": {
"borderColor": "#999"
},
"emphasis": {
"borderColor": "#666"
}
}
},
"legend": {
"textStyle": {
"color": "#fff"
}
},
"tooltip": {
"axisPointer": {
"lineStyle": {
"color": "#ccc",
"width": 1
},
"crossStyle": {
"color": "#ccc",
"width": 1
}
}
},
"timeline": {
"lineStyle": {
"color": "#8fd3e8",
"width": 1
},
"itemStyle": {
"normal": {
"color": "#8fd3e8",
"borderWidth": 1
},
"emphasis": {
"color": "#8fd3e8"
}
},
"controlStyle": {
"normal": {
"color": "#8fd3e8",
"borderColor": "#8fd3e8",
"borderWidth": 0.5
},
"emphasis": {
"color": "#8fd3e8",
"borderColor": "#8fd3e8",
"borderWidth": 0.5
}
},
"checkpointStyle": {
"color": "#8fd3e8",
"borderColor": "rgba(138,124,168,0.37)"
},
"label": {
"normal": {
"textStyle": {
"color": "#8fd3e8"
}
},
"emphasis": {
"textStyle": {
"color": "#8fd3e8"
}
}
}
},
"visualMap": {
"color": [
"#516b91",
"#59c4e6",
"#a5e7f0"
]
},
"dataZoom": {
"backgroundColor": "rgba(0,0,0,0)",
"dataBackgroundColor": "rgba(255,255,255,0.3)",
"fillerColor": "rgba(167,183,204,0.4)",
"handleColor": "#a7b7cc",
"handleSize": "100%",
"textStyle": {
"color": "#333"
}
},
"markPoint": {
"label": {
"normal": {
"textStyle": {
"color": "#eee"
}
},
"emphasis": {
"textStyle": {
"color": "#eee"
}
}
}
}
}
import dialogBox from '@/components/DialogBox/dialogBox.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('Theme', Theme);
Vue.prototype.$popup = Popup.install;
Vue.prototype.$alertMes = MessageBox.alert;
}
}
\ 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 }">
<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
},
height: {
type: String,
default: ''
}
},
data () {
return {
key: 0,
dialogVisible: false,
fullscreen: false,
scrollerHeight: ''
}
},
watch: {
value (val) {
this.dialogVisible = val
this.height && (this.scrollerHeight = this.height + 'px')
}
},
methods: {
handleFullscreen () {
this.fullscreen = !this.fullscreen
if (!this.fullscreen) {
this.scrollerHeight = ''
} else {
this.scrollerHeight = (window.innerHeight - 120) + '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 "~@/styles/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' @row-click="singleElection"
: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">
<el-table-column width="45" align="center" v-if="isRadio">
<template slot-scope="scope">
<el-radio v-model="selected" :label="scope.$index"></el-radio>
</template>
</el-table-column>
<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">
<el-table-column width="45" align="center" v-if="isRadio">
<template slot-scope="scope">
<el-radio v-model="selected" :label="scope.$index"></el-radio>
</template>
</el-table-column>
<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,
},
isRadio: {
type: Boolean,
default: false,
},
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: {},
selected: ''
}
},
created () {
this.getMergeArr(this.data, this.merge)
this.getHeight()
},
computed: {
dataLength () {
return [] || this.data.length
},
},
methods: {
// 单选
singleElection (row) {
this.selected = this.data.indexOf(row);
console.log(this.selected);
},
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;
}
/deep/.el-radio__label {
display: none;
}
</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);
}
}
}
};
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 = (title, message, 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">
<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 v-if="message !== ''" class="richText" v-html="message"></div>
</div>
<div class="el-message-box__btns">
<el-button :loading="cancelButtonLoading" :class="[cancelButtonClasses]" :round="roundButton" size="small"
@click.native="handleAction('cancel')" @keydown.enter="handleAction('cancel')">
{{ cancelButtonText || t('el.messagebox.cancel') }}
</el-button>
</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 ElInput from 'element-ui/packages/input';
import ElButton from 'element-ui/packages/button';
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++;
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>
<style scoped>
/deep/.el-message-box {
width: 500px;
max-height: 95%;
}
/deep/.message-title {
font-size: 18px;
font-weight: 700;
margin-bottom: 5px;
}
/deep/.el-message-box__content img {
width: 100%;
height: 100%;
}
/deep/.el-message-box__content {
padding-top: 0;
}
</style>
\ No newline at end of file
import Vue from 'vue'
import Popup from './index.vue'
const PopupBox = Vue.extend(Popup)
Popup.install = function (title, editItem, data, formData) {
data.title = title
data.editItem = editItem
if (formData) {
data.formData = formData
}
let instance = new PopupBox({
data
}).$mount()
document.body.appendChild(instance.$el)
Vue.nextTick(() => {
instance.isShow = true
})
}
export default Popup
<template>
<transition name="msgbox-fade" v-if="myShow">
<div class="ls-mask" v-loading="loading">
<div class="ls-mask-window" :style="{ 'width': width }">
<div class="ls-head">
<div class="ls-title" :style="{ 'text-align': titleStyle }">
<svg-icon v-if="iconClass != ''" :icon-class='iconClass' />
<b>{{ title }}</b>
</div>
<svg-icon icon-class='close' class="closeStyle" @click="onCancel" />
</div>
<div class="mask-content" ref='contentRef' :style="{ 'height': contentHeight }">
<component :is="editItem" ref='childRef' @loading='loadingFn' :key="key" :formData='formData' />
</div>
<div class="ls-mask-footer" v-if='btnShow'>
<el-button type="primary" @click="onConfirm">{{ confirmText }}</el-button>
<el-button @click="onCancel">{{ cancelText }}</el-button>
</div>
</div>
</div>
</transition>
</template>
<script>
export default {
name: 'index',
data () {
return {
title: '标题',
editItem: "",
formData: undefined,//父组件传递的参数 负责传给子组件
btnShow: false,
cancel: function () { },
confirm: function () { },
cancelText: '取消',
confirmText: '确认',
isSync: false,
isShow: false,
myShow: false,
titleStyle: 'center',
width: "75%",
height: "auto",
contentHeight: "",
iconClass: "",
key: 0
}
},
props: {
loading: { type: Boolean, default: false },
},
watch: {
isShow (newValue) {
this.editItem = this.loadViewFn(this.editItem)
document.body.appendChild(this.$el);
this.myShow = newValue
}
},
mounted () {
// 计算滚动条高度
setTimeout(() => {
if (this.btnShow) {
if (this.height == 'auto') {
this.contentHeight = (this.$refs.contentRef.offsetHeight) + 'px'
} else {
this.contentHeight = this.height
}
} else {
if (this.height == 'auto') {
this.contentHeight = (this.$refs.contentRef.offsetHeight) + 'px'
} else {
this.contentHeight = this.height
}
}
}, 300)
},
methods: {
onCancel () {
this.isShow = false
this.cancel()
},
onConfirm () {
this.loading = true
let res = new Promise((resolve, reject) => {
this.confirm()
resolve(true)
})
if (res) {
this.isShow = false
}
},
loadingFn (e) { //加载状态
this.loading = e
},
loadViewFn (view) {
return (r) =>
require.ensure([], () =>
r(require(`@/views/${view}.vue`))
)
}
},
destroyed () {
if (this.appendToBody && this.$el && this.$el.parentNode) {
this.$el.parentNode.removeChild(this.$el);
}
}
}
</script>
<style scoped lang="scss" >
.ls-mask {
width: 100%;
height: 100%;
z-index: 100;
position: fixed;
left: 0;
top: 0;
background: rgba(0, 0, 0, 0.3);
}
.ls-mask-window {
background: white;
position: relative;
left: 50%;
top: 50%;
min-height: 200px;
transform: translate(-50%, -50%);
border-radius: 5px;
overflow: hidden;
}
.ls-mask-window b {
padding-left: 5px;
}
.ls-title {
padding: 16px;
color: #ffffff;
background: linear-gradient(3deg, #409EFF, #a7cbee);
}
.ls-title .svg-icon {
font-size: 18px;
}
.mask-content {
padding: 20px;
width: 100%;
min-height: 30%;
max-height: 95%;
overflow-y: scroll;
}
.ls-mask-footer {
height: 50px;
display: flex;
justify-content: center;
width: 100%;
position: absolute;
border-top: 1px solid $borderColor;
bottom: 0;
background: #ffffff;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
overflow: hidden;
}
/deep/.closeStyle {
position: absolute;
top: 13px;
right: 26px;
font-size: 24px;
cursor: pointer;
color: #409EFF;
}
/deep/.el-loading-mask {
background: none;
}
/deep/.el-button {
margin: 8px 10px;
width: 75px;
}
</style>
\ No newline at end of file
弹窗封装
2.用法以及参数:
this.$popup('提示','ywbl/dbx/aa',{
width: '75%', // 初始化75% 不需要改的话 可以直接不要
formData: this.formData, // 父组件传给子组件的参数
cancel: function () {}, //取消事件的回调 没有按钮可以不需要
confirm: function () {} //确认事件的回调 没有按钮可以不需要
})
5.后续有修改请添加在此处文档说明作用
\ No newline at end of file
<!--显示svg文件图标-->
<template>
<div v-if="isExternal" :style="styleExternalIcon" class="svg-external-icon svg-icon" v-on="$listeners" />
<svg v-else :class="svgClass" aria-hidden="true" v-on="$listeners">
<use :xlink:href="iconName" />
</svg>
</template>
<script>
// doc: https://panjiachen.github.io/vue-element-admin-site/feature/component/svg-icon.html#usage
import { isExternal } from '@/utils/validate'
export default {
name: 'SvgIcon',
props: {
iconClass: {
type: String,
required: true
},
className: {
type: String,
default: ''
}
},
computed: {
isExternal() {
return isExternal(this.iconClass)
},
iconName() {
return `#icon-${this.iconClass}`
},
svgClass() {
if (this.className) {
return 'svg-icon ' + this.className
} else {
return 'svg-icon'
}
},
styleExternalIcon() {
return {
mask: `url(${this.iconClass}) no-repeat 50% 50%`,
'-webkit-mask': `url(${this.iconClass}) no-repeat 50% 50%`
}
}
}
}
</script>
<style scoped>
.svg-icon {
width: 1em;
height: 1em;
vertical-align: -0.15em;
fill: currentColor;
overflow: hidden;
}
.svg-external-icon {
background-color: currentColor;
mask-size: cover!important;
display: inline-block;
}
</style>
<template>
<el-color-picker v-model="theme"
:predefine="['#409EFF', '#1890ff', '#304156', '#212121', '#11a983', '#13c2c2', '#6959CD', '#f5222d',]"
class="theme-picker" popper-class="theme-picker-dropdown" />
</template>
<script>
const version = require('element-ui/package.json').version // element-ui version from node_modules
const ORIGINAL_THEME = '#409EFF' // default color
export default {
data () {
return {
chalk: '', // content of theme-chalk css
theme: ''
}
},
computed: {
defaultTheme () {
return this.$store.state.app.theme
}
},
watch: {
defaultTheme: {
handler: function (val, oldVal) {
this.theme = val
},
immediate: true
},
async theme (val) {
const oldVal = this.chalk ? this.theme : ORIGINAL_THEME
if (typeof val !== 'string') return
const themeCluster = this.getThemeCluster(val.replace('#', ''))
const originalCluster = this.getThemeCluster(oldVal.replace('#', ''))
console.log(themeCluster, originalCluster)
const $message = this.$message({
message: ' Compiling the theme',
customClass: 'theme-message',
type: 'success',
duration: 0,
iconClass: 'el-icon-loading'
})
const getHandler = (variable, id) => {
return () => {
const originalCluster = this.getThemeCluster(ORIGINAL_THEME.replace('#', ''))
const newStyle = this.updateStyle(this[variable], originalCluster, themeCluster)
let styleTag = document.getElementById(id)
if (!styleTag) {
styleTag = document.createElement('style')
styleTag.setAttribute('id', id)
document.head.appendChild(styleTag)
}
styleTag.innerText = newStyle
}
}
if (!this.chalk) {
const url = `https://unpkg.com/element-ui@${version}/lib/theme-chalk/index.css`
await this.getCSSString(url, 'chalk')
}
const chalkHandler = getHandler('chalk', 'chalk-style')
chalkHandler()
const styles = [].slice.call(document.querySelectorAll('style'))
.filter(style => {
const text = style.innerText
return new RegExp(oldVal, 'i').test(text) && !/Chalk Variables/.test(text)
})
styles.forEach(style => {
const { innerText } = style
if (typeof innerText !== 'string') return
style.innerText = this.updateStyle(innerText, originalCluster, themeCluster)
})
this.$emit('change', val)
$message.close()
}
},
methods: {
updateStyle (style, oldCluster, newCluster) {
let newStyle = style
oldCluster.forEach((color, index) => {
newStyle = newStyle.replace(new RegExp(color, 'ig'), newCluster[index])
})
return newStyle
},
getCSSString (url, variable) {
return new Promise(resolve => {
const xhr = new XMLHttpRequest()
xhr.onreadystatechange = () => {
if (xhr.readyState === 4 && xhr.status === 200) {
this[variable] = xhr.responseText.replace(/@font-face{[^}]+}/, '')
resolve()
}
}
xhr.open('GET', url)
xhr.send()
})
},
getThemeCluster (theme) {
const tintColor = (color, tint) => {
let red = parseInt(color.slice(0, 2), 16)
let green = parseInt(color.slice(2, 4), 16)
let blue = parseInt(color.slice(4, 6), 16)
if (tint === 0) { // when primary color is in its rgb space
return [red, green, blue].join(',')
} else {
red += Math.round(tint * (255 - red))
green += Math.round(tint * (255 - green))
blue += Math.round(tint * (255 - blue))
red = red.toString(16)
green = green.toString(16)
blue = blue.toString(16)
return `#${red}${green}${blue}`
}
}
const shadeColor = (color, shade) => {
let red = parseInt(color.slice(0, 2), 16)
let green = parseInt(color.slice(2, 4), 16)
let blue = parseInt(color.slice(4, 6), 16)
red = Math.round((1 - shade) * red)
green = Math.round((1 - shade) * green)
blue = Math.round((1 - shade) * blue)
red = red.toString(16)
green = green.toString(16)
blue = blue.toString(16)
return `#${red}${green}${blue}`
}
const clusters = [theme]
for (let i = 0; i <= 9; i++) {
clusters.push(tintColor(theme, Number((i / 10).toFixed(2))))
}
clusters.push(shadeColor(theme, 0.1))
return clusters
}
}
}
</script>
<style>
.theme-message,
.theme-picker-dropdown {
z-index: 99999 !important;
}
.theme-picker .el-color-picker__trigger {
height: 26px !important;
width: 26px !important;
padding: 2px;
}
.theme-picker-dropdown .el-color-dropdown__link-btn {
display: none;
}
</style>
\ No newline at end of file
<template>
<div class="issuingInfo itemForm">
<el-form :model="ruleForm" :rules="rules" ref="issuingInfo" label-width="100px">
<el-row>
<el-col :span="8">
<el-form-item prop="YSDM">
<span slot="label">
要素代码: <br />
<p class="label-detail">(YSDM)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.YSDM" placeholder="要素代码"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="YWH">
<span slot="label">
业务号: <br />
<p class="label-detail">(YWH)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.YWH" placeholder="业务号"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="DJDL">
<span slot="label">
登记大类: <br />
<p class="label-detail">(DJDL)</p>
</span>
<el-select :disabled="$store.state.business.Edit" v-model="ruleForm.DJDL" placeholder="登记大类">
<el-option v-for="item in dicData['A21']" :key="item.DCODE" :label="item.DNAME" :value="item.DCODE">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item prop="DJXL">
<span slot="label">
登记小类: <br />
<p class="label-detail">(DJXL)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.DJXL" placeholder="登记小类"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="ZL">
<span slot="label">
坐落: <br />
<p class="label-detail">(ZL)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.ZL" placeholder="坐落"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="QZHM">
<span slot="label">
权证号码: <br />
<p class="label-detail">(QZHM)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.QZHM" placeholder="权证号码"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item prop="WJJS">
<span slot="label">
文件件数: <br />
<p class="label-detail">(WJJS)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.WJJS"
v-only-number="{ max: 99999, min: 1, precision: 0 }" placeholder="文件件数"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="ZYS">
<span slot="label">
总页数 <br />
<p class="label-detail">(ZYS)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.ZYS"
v-only-number="{ max: 99999, min: 1, precision: 0 }" placeholder="总页数"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="GDRY">
<span slot="label">
归档人员: <br />
<p class="label-detail">(GDRY)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.GDRY" placeholder="归档人员"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item prop="GDSJ">
<span slot="label">
归档时间: <br />
<p class="label-detail">(GDSJ)</p>
</span>
<el-date-picker :disabled="$store.state.business.Edit" type="datetime" placeholder="归档时间" clearable
v-model="ruleForm.GDSJ" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="BZ">
<span slot="label">
备注: <br />
<p class="label-detail">(BZ)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.BZ" placeholder="备注"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="QXDM">
<span slot="label">
区县代码: <br />
<p class="label-detail">(QXDM)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.QXDM" placeholder="区县代码"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<message-tips ref="msg" />
</div>
</template>
<script>
// 归档信息
import business from '@/api/business'
import ruleMixin from '@/mixins/ruleMixin.js'
export default {
mixins: [ruleMixin],
props: {
bsmSjsb: {
type: String,
default: ''
},
dataTable: {
type: String,
default: ''
}
},
data () {
return {
ruleForm: {
YSDM: '',
YWH: '',
DJDL: '',
DJXL: '',
ZL: '',
QZHM: '',
WJJS: '',
ZYS: '',
GDRY: '',
GDSJ: '',
BZ: '',
QXDM: ''
}
}
},
methods: {
async featchData () {
try {
let { result: res } = await business.getDjfDjGdById(this.bsmSjsb)
this.ruleForm = res
this.featchRule()
} catch (error) {
this.$refs.msg.messageShow()
}
},
handleUpdateForm () {
return new Promise(async (resolve) => {
try {
let res = await business.updateDjfDjGd(this.ruleForm)
// this.$refs['formList'].resetFields();
resolve(res.code)
} catch (error) {
this.$refs.msg.messageShow()
}
})
}
}
}
</script>
<style scoped lang="scss">
@import "./css/itemForm.scss";
</style>
<template>
<div class="auditInfo itemForm">
<el-form :model="form" ref="formList" label-width="110px" :key="key">
<div v-for="(item, index) in form.auditInfo" :key="index" class="auditInfo-item">
<p class="auditInfo-item-name">审核信息{{ index + 1 }}</p>
<div class="auditInfo-item-list">
<el-row class="auditInfo-item-input">
<el-col :span="8">
<el-form-item :prop="'auditInfo.' + index + '.YSDM'" :rules="rules.YSDM">
<span slot="label">
要素代码: <br />
<p class="label-detail">(YSDM)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="form.auditInfo[index].YSDM"
placeholder="要素代码"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :prop="'auditInfo.' + index + '.YWH'" :rules="rules.YWH">
<span slot="label">
业务号: <br />
<p class="label-detail">(YWH)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="form.auditInfo[index].YWH"
placeholder="业务号"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :prop="'auditInfo.' + index + '.JDMC'" :rules="rules.JDMC">
<span slot="label">
节点名称: <br />
<p class="label-detail">(JDMC)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="form.auditInfo[index].JDMC"
placeholder="节点名称"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row class="auditInfo-item-input">
<el-col :span="24">
<el-form-item :prop="'auditInfo.' + index + '.SHYJ'" :rules="rules.SHYJ">
<span slot="label">
审核意见: <br />
<p class="label-detail">(SHYJ)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="form.auditInfo[index].SHYJ" type="textarea"
:rows="2" placeholder="审核意见"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row class="auditInfo-item-input">
<el-col :span="8">
<el-form-item :prop="'auditInfo.' + index + '.SHRYXM'" :rules="rules.SHRYXM">
<span slot="label">
审核人员姓名: <br />
<p class="label-detail">(SHRYXM)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="form.auditInfo[index].SHRYXM"
placeholder="审核人员姓名"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :prop="'auditInfo.' + index + '.SHKSSJ'" :rules="rules.SHKSSJ">
<span slot="label">
审核开始时间: <br />
<p class="label-detail">(SHKSSJ)</p>
</span>
<el-date-picker :disabled="$store.state.business.Edit" type="datetime" placeholder="审核开始时间" clearable
v-model="form.auditInfo[index].SHKSSJ" value-format="yyyy-MM-dd HH:mm:ss"
:picker-options="item.traceStart" @change="changeTraceStart(item)"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :prop="'auditInfo.' + index + '.SHJSSJ'" :rules="rules.SHJSSJ">
<span slot="label">
审核结束时间: <br />
<p class="label-detail">(SHJSSJ)</p>
</span>
<el-date-picker :disabled="$store.state.business.Edit" type="datetime" placeholder="审核结束时间" clearable
v-model="form.auditInfo[index].SHJSSJ" :picker-options="item.traceEnd" @change="changeTraceEnd(item)"
value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row class="auditInfo-item-input">
<el-col :span="8">
<el-form-item :prop="'auditInfo.' + index + '.SXH'" :rules="{ ...rules.SXH, ...typeNum }">
<span slot="label">
顺序号: <br />
<p class="label-detail">(SXH)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model.number="form.auditInfo[index].SXH"
type="number" v-only-number="{ max: 9999, min: 0, precision: 0 }" placeholder="顺序号"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :prop="'auditInfo.' + index + '.CZJG'" :rules="rules.SHKSSJ">
<span slot="label">
操作结果: <br />
<p class="label-detail">(CZJG)</p>
</span>
<el-select :disabled="$store.state.business.Edit" v-model="form.auditInfo[index].CZJG"
placeholder="请选择操作结果">
<el-option v-for="item in dicData['A37']" :key="item.DCODE" :label="item.DNAME" :value="item.DCODE">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :prop="'auditInfo.' + index + '.QXDM'" :rules="rules.QXDM">
<span slot="label">
区县代码: <br />
<p class="label-detail">(QXDM)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="form.auditInfo[index].QXDM"
placeholder="区县代码"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :prop="'auditInfo.' + index + '.BZ'" :rules="rules.BZ">
<span slot="label">
区县代码: <br />
<p class="label-detail">(BZ)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="form.auditInfo[index].BZ"
placeholder="备注"></el-input>
</el-form-item>
</el-col>
</el-row>
</div>
</div>
</el-form>
<message-tips ref="msg" />
</div>
</template>
<script>
import business from '@/api/business'
import ruleMixin from '@/mixins/ruleMixin.js'
// 审核信息
export default {
mixins: [ruleMixin],
props: {
bsmSjsb: {
type: String,
default: ''
},
dataTable: {
type: String,
default: ''
}
},
data () {
return {
form: {
auditInfo: [
{
YSDM: '',
YWH: '',
JDMC: '',
SHYJ: '',
SHRYXM: '',
SHKSSJ: '',
traceStart: {},
SHJSSJ: '',
traceEnd: {},
SXH: '',
CZJG: '',
QXDM: '',
BZ: ''
}
]
}
}
},
methods: {
changeTraceEnd (item) {
if (item.SHJSSJ !== null) { //当前值为空 也会进行判断 所以条件最好不要非空验证
item.traceStart = {
disabledDate: (time) => {
return time.getTime() > new Date(item.SHJSSJ).getTime() //大于结束时间的不选
}
}
} else {
item.traceStart = {}
}
},
//跟踪API结束时间限制开始时间
changeTraceStart (item) {
if (item.SHKSSJ !== null) { //当前值为空 也会进行判断 所以条件最好不要非空验证
item.traceEnd = {
disabledDate: (time) => {
return time.getTime() < new Date(item.SHKSSJ).getTime() //小于开始时间的不选
}
}
} else {
item.traceEnd = {}
}
},
async featchData () {
try {
let { result: res } = await business.getDjfDjShById(this.bsmSjsb)
this.form.auditInfo = res
this.featchRule()
} catch (error) {
this.$refs.msg.messageShow()
}
},
handleUpdateForm () {
return new Promise(async (resolve) => {
try {
let res = await business.updateDjfDjSh(this.form.auditInfo)
// this.$refs['formList'].resetFields();
resolve(res.code)
} catch (error) {
this.$refs.msg.messageShow()
}
})
}
}
}
</script>
<style scoped lang="scss">
@import "./css/itemForm.scss";
.auditInfo-item {
display: flex;
height: 100%;
margin-bottom: 15px;
margin-right: 5px;
&-name {
display: flex;
align-items: center;
justify-content: center;
width: 20px;
padding: 10px 20px;
line-height: 28px;
border: 1px solid #ccc;
margin-right: 15px;
border-radius: 3px;
}
&-list {
width: 100%;
flex: 1;
display: flex;
justify-content: center;
flex-direction: column;
}
}
</style>
<template>
<div class="boundaryLine itemForm">
<el-form :model="boundaryLine" :rules="rules" ref="formList" label-width="121px" :key="key">
<div v-for="(item, index) in boundaryLine.ruleForm" :key="index" class="boundaryLine-item">
<p class="boundaryLine-item-name">界址线{{ index + 1 }}</p>
<div class="boundaryLine-item-list">
<el-row>
<el-col :span="8">
<el-form-item>
<span slot="label">
标识码: <br />
<p class="label-detail">(BSM)</p>
</span>
<p :class="{ 'disabled': $store.state.business.Edit }">
{{ boundaryLine.ruleForm[index].BSM }}
</p>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :prop="'ruleForm.' + index + '.YSDM'" :rules="rules.YSDM">
<span slot="label">
要素代码: <br />
<p class="label-detail">(YSDM)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="boundaryLine.ruleForm[index].YSDM"
maxlength="10" placeholder="要素代码"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :prop="'ruleForm.' + index + '.ZDZHDM'" :rules="rules.ZDZHDM">
<span slot="label">
宗地/宗海代码: <br />
<p class="label-detail">(ZDZHDM)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="boundaryLine.ruleForm[index].ZDZHDM"
maxlength="19" placeholder="宗地/宗海代码"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item :prop="'ruleForm.' + index + '.JZXCD'" :rules="{ ...rules.JZXCD, ...typeNum }">
<span slot="label">
界址线长度: <br />
<p class="label-detail">(JZXCD)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model.number="boundaryLine.ruleForm[index].JZXCD"
type="number" v-only-number="{ max: 999999999999999, min: 0, precision: 2 }"
placeholder="界址线长度"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :prop="'ruleForm.' + index + '.JZXLB'" :rules="rules.JZXLB">
<span slot="label">
界址线类别: <br />
<p class="label-detail">(JZXLB)</p>
</span>
<el-select :disabled="$store.state.business.Edit" v-model="boundaryLine.ruleForm[index].JZXLB"
placeholder="界址线类别">
<el-option v-for="item in dicData['A48']" :key="item.DCODE" :label="item.DNAME" :value="item.DCODE">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :prop="'ruleForm.' + index + '.JZXWZ'" :rules="rules.JZXWZ">
<span slot="label">
界址线位置: <br />
<p class="label-detail">(JZXWZ)</p>
</span>
<el-select :disabled="$store.state.business.Edit" v-model="boundaryLine.ruleForm[index].JZXWZ"
placeholder="界址线位置">
<el-option v-for="item in dicData['A3']" :key="item.DCODE" :label="item.DNAME" :value="item.DCODE">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item :prop="'ruleForm.' + index + '.JXXZ'" class="borderTopNone" :rules="rules.JXXZ">
<span slot="label">
界线性质: <br />
<p class="label-detail">(JXXZ)</p>
</span>
<el-select :disabled="$store.state.business.Edit" v-model="boundaryLine.ruleForm[index].JXXZ"
placeholder="界线性质">
<el-option v-for="item in dicData['A2']" :key="item.DCODE" :label="item.DNAME" :value="item.DCODE">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :prop="'ruleForm.' + index + '.QSJXXYSBH'" class="borderTopNone" :rules="rules.QSJXXYSBH">
<span slot="label">
权属界线协议书编号: <br />
<p class="label-detail">(QSJXXYSBH)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="boundaryLine.ruleForm[index].QSJXXYSBH"
placeholder="权属界线协议书编号"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :prop="'ruleForm.' + index + '.QSJXXYS'" class="borderTopNone" :rules="rules.QSJXXYS">
<span slot="label">
权属界线协议书: <br />
<p class="label-detail">(QSJXXYS)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="boundaryLine.ruleForm[index].QSJXXYS"
placeholder="权属界线协议书"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item :prop="'ruleForm.' + index + '.QSZYYYSBH'" :rules="rules.QSZYYYSBH">
<span slot="label">
权属争议原由书编号: <br />
<p class="label-detail">(QSZYYYSBH)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="boundaryLine.ruleForm[index].QSZYYYSBH"
placeholder="权属争议原由书编号"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :prop="'ruleForm.' + index + '.QSZYYYS'" :rules="rules.QSZYYYS">
<span slot="label">
权属争议原由书: <br />
<p class="label-detail">(QSZYYYS)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="boundaryLine.ruleForm[index].QSZYYYS"
placeholder="权属争议原由书"></el-input>
</el-form-item>
</el-col>
</el-row>
</div>
</div>
</el-form>
<message-tips ref="msg" />
</div>
</template>
<script>
import business from '@/api/business'
import ruleMixin from '@/mixins/ruleMixin.js'
// 界址线信息
export default {
mixins: [ruleMixin],
props: {
bsmSjsb: {
type: String,
default: ''
},
dataTable: {
type: String,
default: ''
}
},
data () {
return {
boundaryLine: {
ruleForm: [
{
BSM: '',
YSDM: '',
ZDZHDM: '',
JZXCD: undefined,
JZXLB: '',
JZXWZ: '',
JXXZ: '',
QSJXXYSBH: '',
QSJXXYS: '',
QSZYYYSBH: '',
QSZYYYS: ''
}
]
}
}
},
methods: {
async featchData () {
try {
let { result: res } = await business.getKttGyJzxById(this.bsmSjsb)
this.boundaryLine.ruleForm = res
this.featchRule()
} catch (error) {
this.$refs.msg.messageShow()
}
},
handleUpdateForm () {
return new Promise(async (resolve) => {
try {
let res = await business.updateKttGyJzx(this.boundaryLine.ruleForm)
resolve(res.code)
} catch (error) {
this.$refs.msg.messageShow()
}
})
}
}
}
</script>
<style scoped lang="scss">
@import "./css/itemForm.scss";
.boundaryLine-item {
display: flex;
height: 100%;
margin-bottom: 15px;
margin-right: 5px;
&-name {
display: flex;
align-items: center;
justify-content: center;
width: 20px;
padding: 10px 20px;
line-height: 28px;
border: 1px solid #ccc;
margin-right: 15px;
border-radius: 3px;
}
&-list {
width: 100%;
flex: 1;
display: flex;
justify-content: center;
flex-direction: column;
}
}
</style>
<template>
<div class="boundaryPoint itemForm">
<el-form :model="boundaryPoint" :rules="rules" ref="formList" label-width="113px" :key="key">
<div v-for="(item, index) in boundaryPoint.ruleForm" :key="index" class="boundaryPoint-item">
<p class="boundaryPoint-item-name">界址点{{ index + 1 }}</p>
<div class="boundaryPoint-item-list">
<el-row>
<el-col :span="8">
<el-form-item>
<span slot="label">
标识码: <br />
<p class="label-detail">(BSM)</p>
</span>
<p :class="{ 'disabled': $store.state.business.Edit }">
{{ boundaryPoint.ruleForm[index].BSM }}
</p>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :prop="'ruleForm.' + index + '.YSDM'" :rules="rules.YSDM">
<span slot="label">
要素代码: <br />
<p class="label-detail">(YSDM)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="boundaryPoint.ruleForm[index].YSDM"
maxlength="10" placeholder="要素代码"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :prop="'ruleForm.' + index + '.ZDZHDM'" :rules="rules.ZDZHDM">
<span slot="label">
宗地/宗海代码: <br />
<p class="label-detail">(ZDZHDM)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="boundaryPoint.ruleForm[index].ZDZHDM"
maxlength="19" placeholder="宗地/宗海代码"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item :prop="'ruleForm.' + index + '.JZDH'" :rules="rules.JZDH">
<span slot="label">
界址点号: <br />
<p class="label-detail">(JZDH)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="boundaryPoint.ruleForm[index].JZDH"
maxlength="10" placeholder="界址点号"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :prop="'ruleForm.' + index + '.SXH'" :rules="{ ...rules.SXH, ...typeNum }">
<span slot="label">
顺序号: <br />
<p class="label-detail">(SXH)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model.number="boundaryPoint.ruleForm[index].SXH"
type="number" v-only-number="{ max: 99999999999, min: 0, precision: 0 }" placeholder="顺序号"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :prop="'ruleForm.' + index + '.JBLX'" :rules="rules.JBLX">
<span slot="label">
界标类型: <br />
<p class="label-detail">(JBLX)</p>
</span>
<el-select :disabled="$store.state.business.Edit" v-model="boundaryPoint.ruleForm[index].JBLX"
placeholder="界标类型">
<el-option v-for="item in dicData['A4']" :key="item.DCODE" :label="item.DNAME" :value="item.DCODE">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item :prop="'ruleForm.' + index + '.JZDLX'" :rules="rules.JZDLX">
<span slot="label">
界址点类型: <br />
<p class="label-detail">(JZDLX)</p>
</span>
<el-select :disabled="$store.state.business.Edit" v-model="boundaryPoint.ruleForm[index].JZDLX"
placeholder="界址点类型">
<el-option v-for="item in dicData['A5']" :key="item.DCODE" :label="item.DNAME" :value="item.DCODE">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :prop="'ruleForm.' + index + '.XZBZ'" :rules="{ ...rules.XZBZ, ...typeNum }">
<span slot="label">
X坐标值: <br />
<p class="label-detail">(XZBZ)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model.number="boundaryPoint.ruleForm[index].XZBZ"
type="number" v-only-number="{ max: 999999999999999, min: 0, precision: 3 }"
placeholder="X坐标值"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :prop="'ruleForm.' + index + '.YZBZ'" :rules="{ ...rules.YZBZ, ...typeNum }">
<span slot="label">
Y坐标值: <br />
<p class="label-detail">(YZBZ)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model.number="boundaryPoint.ruleForm[index].YZBZ"
type="number" v-only-number="{ max: 999999999999999, min: 0, precision: 3 }"
placeholder="Y坐标值"></el-input>
</el-form-item>
</el-col>
</el-row>
</div>
</div>
</el-form>
<message-tips ref="msg" />
</div>
</template>
<script>
// 界址点信息
import business from '@/api/business'
import ruleMixin from '@/mixins/ruleMixin.js'
export default {
mixins: [ruleMixin],
props: {
bsmSjsb: {
type: String,
default: ''
},
dataTable: {
type: String,
default: ''
}
},
data () {
return {
boundaryPoint: {
ruleForm: [{
BSM: '',
YSDM: '',
ZDZHDM: '',
JZDH: '',
SXH: '',
JBLX: '',
JZDLX: '',
XZBZ: '',
YZBZ: '',
}]
}
}
},
methods: {
async featchData () {
try {
let { result: res } = await business.getKttGyJzdById(this.bsmSjsb)
this.boundaryPoint.ruleForm = res
this.featchRule()
} catch (error) {
this.$refs.msg.messageShow()
}
},
handleUpdateForm () {
return new Promise(async (resolve) => {
try {
let res = await business.updateKttGyJzd(this.boundaryPoint.ruleForm)
// this.$refs['formList'].resetFields();
resolve(res.code)
} catch (error) {
this.$refs.msg.messageShow()
}
})
}
}
}
</script>
<style scoped lang="scss">
@import "./css/itemForm.scss";
.boundaryPoint-item {
display: flex;
height: 100%;
margin-bottom: 15px;
margin-right: 5px;
&-name {
display: flex;
align-items: center;
justify-content: center;
width: 20px;
padding: 10px 20px;
line-height: 28px;
border: 1px solid #ccc;
margin-right: 15px;
border-radius: 3px;
}
&-list {
width: 100%;
flex: 1;
display: flex;
justify-content: center;
flex-direction: column;
}
}
</style>
<template>
<div class="cancellationRegistration itemForm">
<el-form :model="ruleForm" :rules="rules" ref="formList" label-width="100px" :key="key">
<el-row>
<el-col :span="8">
<el-form-item prop="YSDM">
<span slot="label">
要素代码: <br />
<p class="label-detail">(YSDM)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.YSDM" placeholder="要素代码"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="YWH">
<span slot="label">
业务号: <br />
<p class="label-detail">(YWH)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.YWH" placeholder="业务号"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="BDCDYH">
<span slot="label">
不动产单元号: <br />
<p class="label-detail">(BDCDYH)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.BDCDYH" placeholder="不动产单元号"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item prop="BDCQZH">
<span slot="label">
不动产权证号: <br />
<p class="label-detail">(BDCQZH)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.BDCQZH" placeholder="不动产权证号"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="ZXYWH">
<span slot="label">
注销业务号: <br />
<p class="label-detail">(ZXYWH)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.ZXYWH" placeholder="注销业务号"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="ZXSJ">
<span slot="label">
注销时间: <br />
<p class="label-detail">(ZXSJ)</p>
</span>
<el-date-picker :disabled="$store.state.business.Edit" type="date" placeholder="选择日期" clearable
v-model="ruleForm.ZXSJ" value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item prop="QXDM">
<span slot="label">
区县代码: <br />
<p class="label-detail">(QXDM)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.QXDM" placeholder="区县代码"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="DJJG">
<span slot="label">
登记机构: <br />
<p class="label-detail">(DJJG)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.DJJG" placeholder="登记机构"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="DBR">
<span slot="label">
登簿人:<br />
<p class="label-detail">(DBR)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.DBR" placeholder="登簿人"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item prop="DJSJ">
<span slot="label">
登记时间: <br />
<p class="label-detail">(DJSJ)</p>
</span>
<el-date-picker :disabled="$store.state.business.Edit" type="date" placeholder="选择日期" clearable
v-model="ruleForm.DJSJ" value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="BZ">
<span slot="label">
备注: <br />
<p class="label-detail">(BZ)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.BZ" placeholder="备注"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<message-tips ref="msg" />
</div>
</template>
<script>
// 注销登记信息
import business from '@/api/business'
import ruleMixin from '@/mixins/ruleMixin.js'
export default {
mixins: [ruleMixin],
props: {
bsmSjsb: {
type: String,
default: ''
},
dataTable: {
type: String,
default: ''
}
},
data () {
return {
ruleForm: {
YSDM: '',
YWH: '',
BDCDYH: '',
BDCQZH: '',
ZXYWH: '',
ZXSJ: '',
QXDM: '',
DJJG: '',
DBR: '',
DJSJ: '',
BZ: ''
}
}
},
methods: {
async featchData () {
try {
let { result: res } = await business.getQlfQlZxdjById(this.bsmSjsb)
this.ruleForm = res
this.featchRule()
} catch (error) {
this.$refs.msg.messageShow()
}
},
handleUpdateForm () {
return new Promise(async (resolve) => {
try {
let res = await business.updateQlfQlZxdj(this.ruleForm)
// this.$refs['formList'].resetFields();
resolve(res.code)
} catch (error) {
this.$refs.msg.messageShow()
}
})
}
}
}
</script>
<style scoped lang="scss">
@import "./css/itemForm.scss";
</style>
<template>
<div class="certificateInfo itemForm">
<el-form :model="certificateInfo" :rules="rules" ref="formList" label-width="100px" :key="key">
<div v-for="(item, index) in certificateInfo.ruleForm" :key="index" class="obligee-item">
<p class="obligee-item-name">善证信息{{ index + 1 }}</p>
<div class="obligee-item-list">
<el-row>
<el-col :span="8">
<el-form-item :prop="'ruleForm.' + index + '.YSDM'">
<span slot="label">
要素代码: <br />
<p class="label-detail">(YSDM)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="certificateInfo.ruleForm[index].YSDM"
placeholder="要素代码"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :prop="'ruleForm.' + index + '.YWH'">
<span slot="label">
业务号: <br />
<p class="label-detail">(YWH)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="certificateInfo.ruleForm[index].YWH"
placeholder="业务号"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :prop="'ruleForm.' + index + '.SZMC'">
<span slot="label">
缮证名称: <br />
<p class="label-detail">(SZMC)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="certificateInfo.ruleForm[index].SZMC"
placeholder="缮证名称"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item :prop="'ruleForm.' + index + '.SZZH'">
<span slot="label">
缮证证号: <br />
<p class="label-detail">(SZZH)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="certificateInfo.ruleForm[index].SZZH"
placeholder="缮证证号"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :prop="'ruleForm.' + index + '.YSXLH'">
<span slot="label">
印刷序列号: <br />
<p class="label-detail">(YSXLH)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="certificateInfo.ruleForm[index].YSXLH"
placeholder="印刷序列号"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :prop="'ruleForm.' + index + '.SZRY'">
<span slot="label">
缮证人员: <br />
<p class="label-detail">(SZRY)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="certificateInfo.ruleForm[index].SZRY"
placeholder="缮证人员"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item :prop="'ruleForm.' + index + '.SZSJ'">
<span slot="label">
缮证时间: <br />
<p class="label-detail">(SZSJ)</p>
</span>
<el-date-picker :disabled="$store.state.business.Edit" placeholder="缮证时间" type="datetime" clearable
v-model="certificateInfo.ruleForm[index].SZSJ" value-format="yyyy-MM-dd HH:mm:ss">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :prop="'ruleForm.' + index + '.BZ'">
<span slot="label">
备注: <br />
<p class="label-detail">(BZ)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="certificateInfo.ruleForm[index].BZ"
placeholder="备注"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :prop="'ruleForm.' + index + '.QXDM'">
<span slot="label">
区县代码: <br />
<p class="label-detail">(QXDM)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="certificateInfo.ruleForm[index].QXDM"
placeholder="区县代码"></el-input>
</el-form-item>
</el-col>
</el-row>
</div>
</div>
</el-form>
<message-tips ref="msg" />
</div>
</template>
<script>
import business from '@/api/business'
import ruleMixin from '@/mixins/ruleMixin.js'
// 缮证信息
export default {
mixins: [ruleMixin],
props: {
bsmSjsb: {
type: String,
default: ''
},
dataTable: {
type: String,
default: ''
}
},
data () {
return {
certificateInfo: {
ruleForm: [{
YSDM: '',
YWH: '',
SZMC: '',
SZZH: '',
YSXLH: '',
SZRY: '',
SZSJ: '',
BZ: '',
QXDM: ''
}]
}
}
},
methods: {
async featchData () {
try {
let { result: res } = await business.getDjfDjSzById(this.bsmSjsb)
this.certificateInfo.ruleForm = res
console.log(this.certificateInfo.ruleForm)
this.featchRule()
} catch (error) {
this.$refs.msg.messageShow()
}
},
handleUpdateForm () {
return new Promise(async (resolve) => {
try {
let res = await business.updateDjfDjSz(this.certificateInfo.ruleForm)
// this.$refs['formList'].resetFields();
resolve(res.code)
} catch (error) {
this.$refs.msg.messageShow()
}
})
}
}
}
</script>
<style scoped lang="scss">
@import "./css/itemForm.scss";
.obligee-item {
display: flex;
height: 100%;
margin-bottom: 15px;
margin-right: 5px;
&-name {
display: flex;
align-items: center;
justify-content: center;
width: 20px;
padding: 10px 20px;
line-height: 28px;
border: 1px solid #ccc;
margin-right: 15px;
border-radius: 3px;
}
&-list {
width: 100%;
flex: 1;
display: flex;
justify-content: center;
flex-direction: column;
}
}
</style>
<template>
<div class="parcelChange itemForm">
<el-form :model="ruleForm" :rules="rules" ref="formList" label-width="100px" :key="key">
<el-row>
<el-col :span="8">
<el-form-item prop="ZHDM">
<span slot="label">
宗海代码: <br />
<p class="label-detail">(ZHDM)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.ZHDM" maxlength="19"
placeholder="宗海代码"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="BHYY">
<span slot="label">
变化原因: <br />
<p class="label-detail">(BHYY)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.BHYY" placeholder="变化原因"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="BHNR">
<span slot="label">
变化内容: <br />
<p class="label-detail">(BHNR)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.BHNR" placeholder="变化内容"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item prop="DJSJ">
<span slot="label">
登记时间: <br />
<p class="label-detail">(DJSJ)</p>
</span>
<el-date-picker :disabled="$store.state.business.Edit" type="datetime" placeholder="选择日期" clearable
v-model="ruleForm.DJSJ" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="DBR">
<span slot="label">
登簿人: <br />
<p class="label-detail">(DBR)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.DBR" placeholder="登簿人"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="QXDM">
<span slot="label">
区县代码: <br />
<p class="label-detail">(QXDM)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.QXDM" placeholder="区县代码"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<message-tips ref="msg" />
</div>
</template>
<script>
import business from '@/api/business'
import ruleMixin from '@/mixins/ruleMixin.js'
// 宗海变化情况
export default {
mixins: [ruleMixin],
props: {
bsmSjsb: {
type: String,
default: ''
},
dataTable: {
type: String,
default: ''
}
},
data () {
return {
ruleForm: {
ZHDM: '',
BHYY: '',
BHNR: '',
DJSJ: '',
DBR: '',
QXDM: ''
}
}
},
methods: {
async featchData () {
try {
let { result: res } = await business.getZhK105ById(this.bsmSjsb)
this.ruleForm = res
this.featchRule()
} catch (error) {
this.$refs.msg.messageShow()
}
},
handleUpdateForm () {
return new Promise(async (resolve) => {
try {
let res = await business.updateZhK105(this.ruleForm)
// this.$refs['formList'].resetFields();
resolve(res.code)
} catch (error) {
this.$refs.msg.messageShow()
}
})
}
}
}
</script>
<style scoped lang="scss">
@import "./css/itemForm.scss";
</style>
.itemForm {
margin-top: 5px;
position: relative;
padding: 10px;
/deep/.el-select {
width: 100%;
}
/deep/.el-form-item__error {
right: 25px;
top: 15px;
text-align: right;
pointer-events: none;
}
/deep/.el-date-editor {
width: 100%;
}
/deep/.el-date-editor--date {
width: 100%;
}
/deep/.el-cascader {
width: 100%;
}
/deep/.el-form-item__label {
line-height: 16px;
font-size: 12px;
position: relative;
}
/deep/ .el-form-item__content {
display: flex;
}
// table 样式
/deep/.el-form-item__label {
border: 1px solid #DCDFE6;
border-right: none;
background-color: #F2F6FC;
text-align: center;
padding: 0;
}
/deep/.el-form-item__content {
border: 1px solid #DCDFE6;
margin-right: -1px;
}
/deep/.el-textarea__inner {
margin: 5px;
width: 96%;
}
/deep/.el-input__inner {
margin: 5px;
width: 96%;
}
/deep/.el-form-item {
margin-bottom: 0;
margin-top: -1px;
}
.item-label {
display: flex;
align-items: flex-end;
flex-direction: column;
font-size: 12px;
flex: 0 0 90px;
margin-right: 3px;
p {
line-height: 16px;
white-space: nowrap;
text-align: right;
}
p:nth-child(1) {
position: relative;
right: 5px;
}
}
}
\ No newline at end of file
<template>
<div class="houseFloor itemForm">
<el-form :model="ruleForm" :rules="rules" ref="formList" label-width="121px" :key="key">
<el-row>
<el-col :span="8">
<el-form-item prop="YSDM">
<span slot="label">
要素代码: <br />
<p class="label-detail">(YSDM)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.YSDM" placeholder="要素代码"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="CH">
<span slot="label">
层号: <br />
<p class="label-detail">(CH)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.CH" placeholder="层号"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="ZRZH">
<span slot="label">
自然幢号: <br />
<p class="label-detail">(ZRZH)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.ZRZH" placeholder="自然幢号"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item prop="SJC">
<span slot="label">
实际层: <br />
<p class="label-detail">(SJC)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.SJC" placeholder="实际层"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="MYC">
<span slot="label">
名义层: <br />
<p class="label-detail">(MYC)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.MYC" placeholder="名义层"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="CJZMJ" :rules="{ type: 'number' }">
<span slot="label">
层建筑面积: <br />
<p class="label-detail">(CJZMJ)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-only-number="{ max: 999999999999999, min: 0, precision: 3 }"
placeholder="层建筑面积" type="number" v-model.number="ruleForm.CJZMJ"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item prop="CTNJZMJ" :rules="{ type: 'number' }">
<span slot="label">
层套内建筑面积: <br />
<p class="label-detail">(CTNJZMJ)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-only-number="{ max: 999999999999999, min: 0, precision: 3 }"
placeholder="层套内建筑面积" type="number" v-model.number="ruleForm.CTNJZMJ"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="CYTMJ" :rules="{ type: 'number' }">
<span slot="label">
层阳台面积: <br />
<p class="label-detail">(CYTMJ)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-only-number="{ max: 999999999999999, min: 0, precision: 3 }"
placeholder="层阳台面积" type="number" v-model.number="ruleForm.CYTMJ"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="CGYJZMJ" :rules="{ type: 'number' }">
<span slot="label">
层共有建筑面积: <br />
<p class="label-detail">(CGYJZMJ)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-only-number="{ max: 999999999999999, min: 0, precision: 3 }"
placeholder="层共有建筑面积" type="number" v-model.number="ruleForm.CGYJZMJ"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item prop="CFTJZMJ" :rules="{ type: 'number' }">
<span slot="label">
层分摊建筑面积: <br />
<p class="label-detail">(CFTJZMJ)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-only-number="{ max: 999999999999999, min: 0, precision: 3 }"
placeholder="层分摊建筑面积" type="number" v-model.number="ruleForm.CFTJZMJ"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="CBQMJ" :rules="{ type: 'number' }">
<span slot="label">
层半墙面积: <br />
<p class="label-detail">(CBQMJ)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-only-number="{ max: 999999999999999, min: 0, precision: 3 }"
type="number" placeholder="层半墙面积" v-model.number="ruleForm.CBQMJ"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="CG" :rules="{ type: 'number' }">
<span slot="label">
层高: <br />
<p class="label-detail">(CG)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-only-number="{ max: 999999999999999, min: 0, precision: 3 }"
placeholder="层高" type="number" v-model.number="ruleForm.CG"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item prop="SPTYMJ" :rules="{ type: 'number' }">
<span slot="label">
水平投影面积: <br />
<p class="label-detail">(SPTYMJ)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-only-number="{ max: 999999999999999, min: 0, precision: 3 }"
placeholder="水平投影面积" type="number" v-model.number="ruleForm.SPTYMJ"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="QXDM">
<span slot="label">
区县代码: <br />
<p class="label-detail">(QXDM)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.QXDM" placeholder="区县代码"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<message-tips ref="msg" />
</div>
</template>
<script>
// 层信息
import business from '@/api/business'
import ruleMixin from '@/mixins/ruleMixin.js'
export default {
mixins: [ruleMixin],
props: {
bsmSjsb: {
type: String,
default: ''
},
dataTable: {
type: String,
default: ''
}
},
data () {
return {
ruleForm: {
YSDM: '',
CH: '',
ZRZH: '',
SJC: '',
MYC: '',
CJZMJ: '',
CTNJZMJ: '',
CYTMJ: '',
CGYJZMJ: '',
CFTJZMJ: '',
CBQMJ: '',
CG: '',
SPTYMJ: '',
QXDM: ''
}
}
},
methods: {
async featchData () {
try {
let { result: res } = await business.getKttFwCById(this.bsmSjsb)
this.ruleForm = res
this.featchRule()
} catch (error) {
this.$refs.msg.messageShow()
}
},
handleUpdateForm () {
return new Promise(async (resolve, reject) => {
try {
let res = await business.updateKttFwC(this.ruleForm)
// this.$refs['formList'].resetFields();
resolve(res.code)
} catch (error) {
this.$refs.msg.messageShow()
}
})
},
}
}
</script>
<style scoped lang="scss">
@import "./css/itemForm.scss";
</style>
<template>
<div class="islandCoordinates itemForm">
<el-form :model="ruleForm" :rules="rules" ref="formList" label-width="100px" :key="key">
<el-row>
<el-col :span="8">
<el-form-item prop="ZHHDDM">
<span slot="label">
宗海/海岛代码: <br />
<p class="label-detail">(ZHHDDM)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.ZHHDDM" maxlength="19"
placeholder="宗海/海岛代码"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="XH" :rules="{ type: 'number' }">
<span slot="label">
序号: <br />
<p class="label-detail">(XH)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model.number="ruleForm.XH" type="number"
v-only-number="{ max: 999999, min: 0, precision: 0 }" placeholder="序号"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="BW" :rules="{ type: 'number' }">
<span slot="label">
北纬: <br />
<p class="label-detail">(BW)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model.number="ruleForm.BW" type="number"
v-only-number="{ max: 999999999999999, min: 0, precision: 8 }" placeholder="北纬"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item prop="DJ" :rules="{ type: 'number' }">
<span slot="label">
东经: <br />
<p class="label-detail">(DJ)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model.number="ruleForm.DJ" type="number"
v-only-number="{ max: 999999999999999, min: 0, precision: 8 }" placeholder="东经"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="QXDM">
<span slot="label">
区县代码: <br />
<p class="label-detail">(QXDM)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.QXDM" placeholder="区县代码"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<message-tips ref="msg" />
</div>
</template>
<script>
// 用海、用岛坐标
import business from '@/api/business'
import ruleMixin from '@/mixins/ruleMixin.js'
export default {
mixins: [ruleMixin],
props: {
bsmSjsb: {
type: String,
default: ''
},
dataTable: {
type: String,
default: ''
}
},
data () {
return {
ruleForm: {
ZHHDDM: '',
XH: '',
BW: '',
DJ: '',
QXDM: ''
}
}
},
methods: {
async featchData () {
try {
let { result: res } = await business.getKtfZhYhydzbById(this.bsmSjsb)
this.ruleForm = res
this.featchRule()
} catch (error) {
this.$refs.msg.messageShow()
}
},
handleUpdateForm () {
return new Promise(async (resolve, reject) => {
try {
let res = await business.updateKtfZhYhydzb(this.ruleForm)
// this.$refs['formList'].resetFields();
resolve(res.code)
} catch (error) {
this.$refs.msg.messageShow()
}
})
}
}
}
</script>
<style scoped lang="scss">
@import "./css/itemForm.scss";
</style>
<template>
<div class="issuingInfo itemForm">
<el-form :model="ruleForm" :rules="rules" ref="formList" label-width="108px" :key="key">
<el-row>
<el-col :span="8">
<el-form-item prop="YSDM" class="borderTopNone">
<span slot="label">
要素代码: <br />
<p class="label-detail">(YSDM)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.YSDM" placeholder="要素代码"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="YWH" class="borderTopNone">
<span slot="label">
业务号: <br />
<p class="label-detail">(YWH)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.YWH" placeholder="业务号"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="FZRY" class="borderTopNone">
<span slot="label">
发证人员: <br />
<p class="label-detail">(FZRY)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.FZRY" placeholder="发证人员"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item prop="FZSJ">
<span slot="label">
发证时间: <br />
<p class="label-detail">(FZSJ)</p>
</span>
<el-date-picker :disabled="$store.state.business.Edit" placeholder="发证时间" type="datetime" clearable
v-model="ruleForm.FZSJ" value-format="yyyy-MM-dd HH:mm:ss">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="FZMC">
<span slot="label">
发证名称: <br />
<p class="label-detail">(FZMC)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.FZMC" placeholder="发证名称"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="FZSL" :rules="{ type: 'number' }">
<span slot="label">
发证数量: <br />
<p class="label-detail">(FZSL)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-only-number="{ max: 9999, min: 0, precision: 0 }" type="number"
v-model.number="ruleForm.FZSL" placeholder="发证数量"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item prop="HFZSH">
<span slot="label">
核发证书号: <br />
<p class="label-detail">(HFZSH)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.HFZSH" placeholder="核发证书号"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="LZRXM">
<span slot="label">
领证人姓名: <br />
<p class="label-detail">(LZRXM)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.LZRXM" placeholder="领证人姓名"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="LZRZJLB">
<span slot="label">
领证人证件类别: <br />
<p class="label-detail">(LZRZJLB)</p>
</span>
<el-select :disabled="$store.state.business.Edit" v-model="ruleForm.LZRZJLB" placeholder="请选择">
<el-option v-for="item in dicData['A30']" :key="item.DCODE" :label="item.DNAME" :value="item.DCODE">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item prop="LZRZJHM">
<span slot="label">
领证人证件号码: <br />
<p class="label-detail">(LZRZJHM)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.LZRZJHM"
placeholder="领证人证件号码"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="LZRDH">
<span slot="label">
领证人电话: <br />
<p class="label-detail">(LZRDH)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.LZRDH"
onkeyup="this.value=this.value.replace(/[^\d.]/g,'');" maxlength="11" placeholder="领证人电话"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="LZRDZ">
<span slot="label">
领证人地址: <br />
<p class="label-detail">(LZRDZ)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.LZRDZ" placeholder="领证人地址"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item prop="LZRYB">
<span slot="label">
领证人邮编: <br />
<p class="label-detail">(LZRYB)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.LZRYB" placeholder="领证人邮编"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="BZ">
<span slot="label">
备注: <br />
<p class="label-detail">(BZ)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.BZ" placeholder="备注"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="QXDM">
<span slot="label">
区县代码: <br />
<p class="label-detail">(QXDM)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.QXDM" placeholder="区县代码"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="YSXLH">
<span slot="label">
印刷序列号: <br />
<p class="label-detail">(YSXLH)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.YSXLH" placeholder="印刷序列号"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<message-tips ref="msg" />
</div>
</template>
<script>
// 发证信息
import business from '@/api/business'
import ruleMixin from '@/mixins/ruleMixin.js'
import treeSelect from '@/components/treeSelect/index.vue'
export default {
mixins: [ruleMixin],
props: {
bsmSjsb: {
type: String,
default: ''
},
dataTable: {
type: String,
default: ''
}
},
components: {
treeSelect
},
data () {
return {
ruleForm: {
YSDM: '',
YWH: '',
FZRY: '',
FZSJ: '',
FZMC: '',
FZSL: '',
HFZSH: '',
LZRXM: '',
LZRZJHM: '',
LZRDH: '',
LZRDZ: '',
LZRYB: '',
BZ: '',
QXDM: '',
YSXLH: ''
}
}
},
methods: {
async featchData () {
try {
let { result: res } = await business.getDjfDjFzDetailById(this.bsmSjsb)
this.ruleForm = res
this.featchRule()
} catch (error) {
this.$refs.msg.messageShow()
}
},
handleUpdateForm () {
return new Promise(async (resolve, reject) => {
try {
let res = await business.updateDjfDjFz(this.ruleForm)
// this.$refs['formList'].resetFields();
resolve(res.code)
} catch (error) {
this.$refs.msg.messageShow()
}
})
}
}
}
</script>
<style scoped lang="scss">
@import "./css/itemForm.scss";
</style>
<template>
<div class="linearFixture itemForm">
<el-form :model="ruleForm" :rules="rules" ref="formList" label-width="100px" :key="key">
<el-row>
<el-col :span="8">
<el-form-item>
<span slot="label">
标识码: <br />
<p class="label-detail">(BSM)</p>
</span>
<p :class="{ 'disabled': $store.state.business.Edit }">
{{ ruleForm.BSM }}
</p>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="YSDM">
<span slot="label">
要素代码: <br />
<p class="label-detail">(YSDM)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.YSDM" placeholder="要素代码"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="BDCDYH">
<span slot="label">
不动产单元号: <br />
<p class="label-detail">(BDCDYH)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.BDCDYH" placeholder="不动产单元号"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item prop="ZDZHDM">
<span slot="label">
宗地/宗海代码: <br />
<p class="label-detail">(ZDZHDM)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.ZDZHDM" placeholder="宗地/宗海代码"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="XZDZWLX">
<span slot="label">
线状定着物类型: <br />
<p class="label-detail">(XZDZWLX)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.XZDZWLX"
placeholder="线状定着物类型"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="DZWMC">
<span slot="label">
定着物名称: <br />
<p class="label-detail">(DZWMC)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.DZWMC" placeholder="定着物名称"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item prop="MJDW">
<span slot="label">
面积单位:<br />
<p class="label-detail">(MJDW)</p>
</span>
<el-select :disabled="$store.state.business.Edit" v-model="ruleForm.MJDW" placeholder="面积单位">
<el-option v-for="item in dicData['A7']" :key="item.DCODE" :label="item.DNAME" :value="item.DCODE">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="MJ">
<span slot="label">
面积: <br />
<p class="label-detail">(MJ)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.MJ"
v-only-number="{ max: 99999, min: 1, precision: 2 }" placeholder="面积"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="DAH">
<span slot="label">
档案号: <br />
<p class="label-detail">(DAH)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.DAH" placeholder="档案号"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item prop="ZT">
<span slot="label">
状态: <br />
<p class="label-detail">(ZT)</p>
</span>
<el-select :disabled="$store.state.business.Edit" v-model="ruleForm.ZT" placeholder="状态">
<el-option v-for="item in dicData['A11']" :key="item.DCODE" :label="item.DNAME" :value="item.DCODE">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="QXDM">
<span slot="label">
区县代码: <br />
<p class="label-detail">(QXDM)</p>
</span>
<el-input :disabled="$store.state.business.Edit" v-model="ruleForm.QXDM" placeholder="区县代码"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<message-tips ref="msg" />
</div>
</template>
<script>
// 线状定着物
import business from '@/api/business'
import ruleMixin from '@/mixins/ruleMixin.js'
export default {
mixins: [ruleMixin],
props: {
bsmSjsb: {
type: String,
default: ''
},
dataTable: {
type: String,
default: ''
}
},
data () {
return {
ruleForm: {
BSM: '',
YSDM: '',
BDCDYH: '',
ZDZHDM: '',
mzdzwlx: '',
DZWMC: '',
MJ: '',
DAH: '',
ZT: '',
QXDM: ''
}
}
},
methods: {
async featchData () {
try {
let { result: res } = await business.getKtfQtXzdzwById(this.bsmSjsb)
this.ruleForm = res
this.featchRule()
} catch (error) {
this.$refs.msg.messageShow()
}
},
handleUpdateForm () {
return new Promise(async (resolve, reject) => {
try {
let res = await business.updateKtfQtXzdzw(this.ruleForm)
// this.$refs['formList'].resetFields();
resolve(res.code)
} catch (error) {
this.$refs.msg.messageShow()
}
})
}
}
}
</script>
<style scoped lang="scss">
@import "./css/itemForm.scss";
</style>
This diff is collapsed. Click to expand it.