a0be2501 by 田浩浩
2 parents 2d242171 2e4dc723
......@@ -73,6 +73,7 @@ export function bdcqzPreview (data) {
return request({
url: SERVER.SERVERAPI + '/rest/ywbl/bdcqz/bdcqzPreview',
method: 'post',
data
data,
responseType: 'blob'
})
}
\ No newline at end of file
......
......@@ -119,6 +119,25 @@ export function saveSpyjBySlsq (data) {
data
})
}
// 获取用户常用意见
export function getUserCommonOpinion (data) {
return request({
url: SERVER.SERVERAPI + '/rest/ywbl/opinion/getUserCommonOpinion',
method: 'post',
data
})
}
// 新增用户常用意见
export function addUserCommonOpinion (params) {
return request({
url: SERVER.SERVERAPI + '/rest/ywbl/opinion/addUserCommonOpinion',
method: 'get',
params
})
}
// 登簿接口
export function record (data) {
return request({
......
......@@ -41,7 +41,6 @@
<script>
import LbRender from './lb-render'
import forced from './forced.js'
import radio from './radio.js'
export default {
name: 'LbColumn',
props: {
......@@ -54,13 +53,10 @@ export default {
},
methods: {
setColumn () {
if (this.column.type && this.column.type != 'radio') {
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.type == 'radio') {
this.column.render = this.column.render || radio[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>
......
......@@ -11,9 +11,15 @@
<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'
: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>
......@@ -22,6 +28,12 @@
: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>
......@@ -45,6 +57,10 @@ export default {
type: Boolean,
default: true,
},
isRadio: {
type: Boolean,
default: false,
},
border: {
type: Boolean,
default: true,
......@@ -87,6 +103,7 @@ export default {
tableHeight: '',
mergeLine: {},
mergeIndex: {},
selected: ''
}
},
created () {
......@@ -99,6 +116,13 @@ export default {
},
},
methods: {
// 单选
singleElection (row) {
this.selected = this.data.indexOf(row);
console.log(this.selected);
},
tableRowClassName ({ row, rowIndex }) {
if (rowIndex % 2 === 1) {
return 'interlaced';
......@@ -197,4 +221,8 @@ export default {
padding-left: 3px;
padding-right: 3px;
}
/deep/.el-radio__label {
display: none;
}
</style>
......
export default {
radio: {
renderHeader: (h, { store }) => {
return '单选'
},
renderCell: (h, { row, column, store, $index }) => {
return (
<el-radio
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'
}
}
......@@ -41,7 +41,6 @@
<script>
import LbRender from './lb-render'
import forced from './forced.js'
import radio from './radio.js'
export default {
name: 'LbColumn',
props: {
......@@ -54,13 +53,10 @@ export default {
},
methods: {
setColumn () {
if (this.column.type && this.column.type != 'radio') {
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.type == 'radio') {
this.column.render = this.column.render || radio[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>
......
......@@ -11,9 +11,15 @@
<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'
: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>
......@@ -22,6 +28,12 @@
: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>
......@@ -45,6 +57,10 @@ export default {
type: Boolean,
default: true,
},
isRadio: {
type: Boolean,
default: false,
},
border: {
type: Boolean,
default: true,
......@@ -87,6 +103,7 @@ export default {
tableHeight: '',
mergeLine: {},
mergeIndex: {},
selected: ''
}
},
created () {
......@@ -99,6 +116,13 @@ export default {
},
},
methods: {
// 单选
singleElection (row) {
this.selected = this.data.indexOf(row);
console.log(this.selected);
},
tableRowClassName ({ row, rowIndex }) {
if (rowIndex % 2 === 1) {
return 'interlaced';
......@@ -197,4 +221,8 @@ export default {
padding-left: 3px;
padding-right: 3px;
}
/deep/.el-radio__label {
display: none;
}
</style>
......
......@@ -7,6 +7,7 @@ const getters = {
token: state => state.user.token,
avatar: state => state.user.avatar,
name: state => state.user.name,
userData: state => state.user.userData,
permission_routes: state => state.permission.routes,
addRoutes: state => state.permission.addRoutes,
addDict: state => state.dict.addDict,
......
......@@ -2,10 +2,12 @@ import { getUserInfo } from '@/api/user'
const state = {
name: '',
avatar: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png',
userData: {}
}
const mutations = {
SET_NAME: (state, name) => {
state.name = name
SET_NAME: (state, data) => {
state.name = data.loginName
state.userData = data
}
}
......@@ -13,7 +15,7 @@ const actions = {
getUserInfo ({ commit }) {
return new Promise(async (resolve) => {
let { result: res } = await getUserInfo()
commit('SET_NAME', res.loginName)
commit('SET_NAME', res)
resolve(true)
})
},
......
<template>
<dialogBox title="常用意见" width="60%" isMain v-model="value" @closeDialog="closeDialog" :isButton="false">
<div>
<el-button type="primary" native-type="submit" @click="openDialog()">新增常用</el-button>
<lb-table :page-size="pageData.size" border :current-page.sync="pageData.current" :total="tableData.total"
@size-change="handleSizeChange" @p-current-change="handleCurrentChange" :column="columns"
:data="tableData.data">
</lb-table>
<el-dialog title="新增意见" :visible.sync="addDialog" width="50%" :modal="false" top="30vh">
<div class="invalid-reson">常用意见:</div>
<el-input v-model="commonOpinion" placeholder="请输入常用意见" type="textarea" :rows="4"></el-input>
<div class="dialog-footer">
<el-button @click="closeaddDiglog()">取 消</el-button>
<el-button type="primary" @click="addOpinion()">确 定</el-button>
</div>
</el-dialog>
</div>
</dialogBox>
</template>
<script>
import table from "@/utils/mixin/table";
import { getUserCommonOpinion,addUserCommonOpinion } from "@/api/fqsq.js"
export default {
components: {},
mixins: [table],
props: {
value: { type: Boolean, default: false },
},
data () {
return {
columns: [
{
label: '序号',
type: 'index',
width: '50',
},
{
prop: "opinion",
label: "意见描述",
},
{
label: '操作',
width: '100',
render: (h, scope) => {
return (
<div>
<el-button type="text" onClick={() => { this.useCommonOpinion(scope.row) }}>使用</el-button>
</div>
)
}
}
],
tableData: {
total: 0,
data: [],
},
addDialog: false,
commonOpinion: ''
}
},
mounted() {
this.queryList()
},
methods: {
queryList(){
getUserCommonOpinion(this.pageData).then(res => {
let { total, records } = res.result
this.tableData.total = total;
this.tableData.data = records ? records : []
})
},
//新增常用意见
addOpinion(){
addUserCommonOpinion({commonOpinion: this.commonOpinion}).then(res => {
if(res.code == 200){
this.closeaddDiglog();
this.queryList()
}else{
this.$message.error(res.message)
}
})
},
//打开新增弹窗
openDialog() {
this.addDialog = true
},
//关闭新增弹窗
closeaddDiglog() {
this.addDialog = false;
this.commonOpinion = "";
},
//使用常用意见
useCommonOpinion(item){
this.$parent.useOpinion(item.opinion);
this.$emit("input", false);
},
//关闭列表弹窗
closeDialog () {
this.$emit("input", false);
this.commonOpinion = "";
}
}
}
</script>
<style scoped lang='scss'>
.invalid-reson {
margin-bottom: 10px;
}
.dialog-footer {
margin-top: 10px;
display: flex;
justify-content: flex-end;
}
</style>
\ No newline at end of file
......@@ -14,17 +14,11 @@
<el-row>
<el-col :span="24">
<el-form-item label-width="0" class="opinion_item" prop="shyj">
<el-input type="textarea" :rows="4" class="opinion" placeholder="请输入审批意见" v-if="item.stepShjy == '1'"
<el-input type="textarea" :rows="4" class="opinion" placeholder="请输入审批意见" v-if="item.stepShjy == '1' && ableOperation"
v-model="ruleForm.shyj"></el-input>
<el-input type="textarea" :rows="4" class="opinion" v-model="item.shyj" v-else :disabled="true">
</el-input>
<el-popover placement="right" width="50" trigger="hover" v-if="item.stepShjy == '1'">
<ul class="pointer">
<li @click="handleClick">复审</li>
<li>初审意见</li>
</ul>
<el-button class="opinion_btn" slot="reference">常用意见</el-button>
</el-popover>
<el-button class="opinion_btn" @click="commonOpinion" v-if="item.stepShjy == '1' && ableOperation">常用意见</el-button>
</el-form-item>
</el-col>
</el-row>
......@@ -42,32 +36,35 @@
</el-row>
</div>
</div>
<div class="submit_button" v-if="!$route.query.viewtype">
<el-button type="primary" v-if="tableData.length>0" @click="onSubmit">保存</el-button>
<div class="submit_button" v-if="ableOperation">
<el-button type="primary" @click="onSubmit">保存</el-button>
</div>
</el-form>
<el-empty v-if="tableData.length==0" description="暂无数据"></el-empty>
<commonDialog v-model="commonDialog" />
</div>
</template>
<script>
import { getSpyjList, saveSpyj, saveSpyjBySlsq } from "@/api/fqsq.js";
import { popupDialog } from "@/utils/popup.js";
import commonDialog from "./commonOpinion.vue";
import { mapGetters } from 'vuex'
export default {
components: {},
components: {commonDialog},
props: {
},
computed: {
...mapGetters([ 'userData'])
},
data () {
return {
bsmSlsq: '',
//刷新值
refresh : 10,
bestepid: '',
ruleForm: {
shyj: '',
ableOperation: true,
bsmSlsq: this.$route.query.bsmSlsq,
stepid: this.$route.query.bestepid,
shryxm: '',
shjssj: '',
},
bestepid: this.$route.query.bestepid,
ruleForm: {},
rules: {
shyj: [
{ required: true, message: '请输入审批意见', trigger: 'blur' }
......@@ -75,10 +72,14 @@ export default {
},
tableData: [],
propsParam: {},
commonDialog: false
}
},
created () {
this.propsParam = this.$attrs;
if(this.$route.query.viewtype){
this.ableOperation = false
}
this.list();
},
methods: {
......@@ -90,24 +91,33 @@ export default {
var formdata = new FormData();
formdata.append("bsmBusiness", this.propsParam.bsmBusiness);
formdata.append("bestepid", this.$route.query.bestepid);
formdata.append("ableOperation",this.ableOperation)
getSpyjList(formdata).then((res) => {
if (res.code === 200 && res.result) {
this.tableData = res.result
this.ruleForm.shyj = res.result[res.result.length - 1].shyj
this.ruleForm = res.result[res.result.length - 1]
}
})
},
onSubmit () {
this.ruleForm.bsmSlsq = this.bsmSlsq
this.ruleForm.bestepid = this.bestepid
saveSpyjBySlsq(this.ruleForm).then(res => {
if (res.code === 200) {
this.$message.success("保存成功")
this.refresh += 1
this.tableData[this.tableData.length - 1].shryxm = res.result.shryxm
this.tableData[this.tableData.length - 1].shjssj = res.result.shjssj
} else {
this.$message.error(res.message)
}
})
},
//打开常用意见列表弹窗
commonOpinion(){
this.commonDialog = true
},
//使用常用意见
useOpinion(opinion){
this.ruleForm.shyj = opinion
}
}
}
......
......@@ -4,37 +4,14 @@
<el-tabs v-model="activeName" @tab-click="handleClick" v-if="headTabBdcqz.length > 1">
<el-tab-pane :label="item.qlr + '(' + item.bdcqzh + ')'" :name="item.bsmBdcqz" v-for="(item,index) in headTabBdcqz" :key="index"></el-tab-pane>
</el-tabs>
<div class="aaaa">{{bdcqz.bdcqzlx == '1' ? '不动产权证书' : '不动产权证明'}}</div>
<div class="zsyl-box">
<div class="zsyl-left">
<div class="zsyl-title">
<span v-if="bdcqz.bdcqzh">{{bdcqz.bdcqzh}}</span>
<span v-else>____( )________不动产权第 号</span>
</div>
<table class="table-column">
<tr v-for="(item, colindex) in columns" :key="colindex">
<td>
<span>{{ item.label }}</span>
</td>
<td>
<span>
{{ getRowValue(item.prop) }}
</span>
</td>
</tr>
</table>
</div>
<div class="zsyl-right">
<div class="zsyl-title">附记</div>
<div class="zsyl-text">{{bdcqz.fj}}</div>
</div>
</div>
<div class="zsyl-title">{{bdcqz.bdcqzlx == '1' ? '不动产权证书' : '不动产权证明'}}</div>
<img :src="previewImage">
</div>
</template>
<script>
import { datas } from "../javascript/zsyl.js";
import { getSlsqBdcqzList} from "@/api/bdcqz.js"
import { getSlsqBdcqzList,bdcqzPreview} from "@/api/bdcqz.js"
export default {
components: {
},
......@@ -58,6 +35,8 @@ export default {
headTabBdcqz: [],
//tab选择绑定值
activeName: '',
//证书图片预览
previewImage: '',
ruleForm: {
bsmBdcqz: '',
szmc: '不动产权证书',
......@@ -89,11 +68,12 @@ export default {
getHeadTabBdcqz(){
getSlsqBdcqzList({bsmSlsq: this.formData.bsmSlsq}).then(res => {
if(res.code == 200){
if(res.result){
if(res.result && res.result.length > 0){
this.activeName = res.result[0].bsmBdcqz
this.bdcqz = res.result[0]
}
this.headTabBdcqz = res.result
this.getBdcqzPreview();
}
}
})
......@@ -102,43 +82,20 @@ export default {
handleClick(e){
this.bdcqz = this.headTabBdcqz[e.index - 0]
this.activeName = this.headTabBdcqz.bsmBdcqz
}
this.getBdcqzPreview();
},
getBdcqzPreview(){
bdcqzPreview(this.bdcqz).then(res => {
let blob = new Blob([res]);
let url = window.URL.createObjectURL(blob);
this.previewImage = url;
})
},
}
}
</script>
<style scoped lang="scss">
@import "~@/styles/mixin.scss";
.zsyl-box{
display: flex;
justify-content: space-between;
padding: 20px;
background: #FAFBE5;
.zsyl-left{
width: 330px;
.zsyl-title{
font-size: 18px;
text-align: center;
}
}
.zsyl-right{
width: 330px;
.zsyl-title{
letter-spacing: 50px;
text-align: center;
text-indent: 50px;
}
.zsyl-text{
border: 1px solid #ccc;
height: 90%;
}
}
.zsyl-title{
margin-bottom: 12px;
}
/deep/.el-table__row{
background: #FAFBE5!important;
}
}
.middle_padding {
padding-bottom: 10px;
}
......@@ -166,10 +123,10 @@ export default {
background: rgb(251,249,229);
}
}
.aaaa{
.zsyl-title{
background: #FAFBE5;
text-align: center;
padding-top: 10px;
padding: 5px 0px;
font-size: 20px;
}
</style>
......
......@@ -127,7 +127,7 @@ export default {
popupDialog("证书预览", "workflow/components/zsyl", {
bsmSlsq: this.bsmSlsq,
entryType: '1'
}, '800px')
}, '1070px')
break;
case "B7":
this.$popup("证书领取", "workflow/components/zslq", {
......
......@@ -289,8 +289,8 @@ export default {
break;
case "B5":
this.$popup("证书预览", "workflow/components/zsyl", {
height: "600px",
width: "800px",
height: "850px",
width: "1070px",
formData: {
bsmSlsq: this.bsmSlsq,
entryType: '1'
......
......@@ -11,9 +11,8 @@ class data extends filter {
columns () {
return [
{
type: 'radio',
label: '单选',
width: '50'
type: 'selection',
label: '全选'
},
{
label: '序号',
......