| @@ -17,3 +17,14 @@ export function getVillageAffairs(id) { | |||
| }) | |||
| } | |||
| // 查询地区下的账套列表 | |||
| export function bookListByDept(deptId, bookType) { | |||
| return request({ | |||
| url: '/open/villageAffairs/public/bookList/' + deptId, | |||
| method: 'get', | |||
| params: { | |||
| bookType, | |||
| }, | |||
| }) | |||
| } | |||
| @@ -0,0 +1,65 @@ | |||
| import request from '@/utils/request' | |||
| // 查询其他公开列表 | |||
| export function listOther(query) { | |||
| return request({ | |||
| url: '/subcontract/other/list', | |||
| method: 'get', | |||
| params: query | |||
| }) | |||
| } | |||
| // 查询其他公开详细 | |||
| export function getOther(id) { | |||
| return request({ | |||
| url: '/subcontract/other/get/' + id, | |||
| method: 'get' | |||
| }) | |||
| } | |||
| // 新增其他公开 | |||
| export function addOther(data) { | |||
| return request({ | |||
| url: '/subcontract/other/add', | |||
| method: 'post', | |||
| data: data | |||
| }) | |||
| } | |||
| // 修改其他公开 | |||
| export function updateOther(data) { | |||
| return request({ | |||
| url: '/subcontract/other/edit', | |||
| method: 'post', | |||
| data: data | |||
| }) | |||
| } | |||
| // 删除其他公开 | |||
| export function delOther(id) { | |||
| return request({ | |||
| url: '/subcontract/other/remove/' + id, | |||
| method: 'get' | |||
| }) | |||
| } | |||
| // 查询其他公开列表 游客 | |||
| export function otherOpenList(query) { | |||
| return request({ | |||
| url: '/open/villageAffairs/public/otherPublicList', | |||
| method: 'get', | |||
| params: query | |||
| }) | |||
| } | |||
| // 查询其他公开详细 游客 | |||
| export function otherOpenDetail(id) { | |||
| return request({ | |||
| url: '/open/villageAffairs/public/otherPublicDetail', | |||
| method: 'get', | |||
| params: { | |||
| id, | |||
| }, | |||
| }) | |||
| } | |||
| @@ -48,6 +48,10 @@ export default { | |||
| type: Function, | |||
| default: null, | |||
| }, | |||
| reload: { // 变更此值为true则重新加载数据 监听 | |||
| type: Boolean, | |||
| default: false, | |||
| }, | |||
| }, | |||
| components: { | |||
| }, | |||
| @@ -177,6 +181,15 @@ export default { | |||
| console.log('[PagedList]: ', ...arguments); | |||
| }, | |||
| }, | |||
| watch: { | |||
| reload(newVal) { | |||
| if(newVal) | |||
| { | |||
| this.$emit('update:reload', false); | |||
| this.getList(); | |||
| } | |||
| }, | |||
| }, | |||
| } | |||
| </script> | |||
| @@ -14,6 +14,7 @@ | |||
| :rules="rules" | |||
| :required="required" | |||
| :label-width="labelWidth || 'auto'" | |||
| :size="size || ''" | |||
| > | |||
| </van-field> | |||
| <van-popup v-model="popupVisible" position="bottom"> | |||
| @@ -46,6 +47,7 @@ export default { | |||
| 'remoteUrl', // 远程列表加载地址 String | |||
| 'onRemoteResponse', // 远程获取到结果的处理回调 String|Function 如果是函数需返回数组, 如果是字符串支持.分割 | |||
| 'clearable', // 点击取消时清空绑定值 | |||
| 'size', | |||
| ], | |||
| watch: { | |||
| value: function (newVal, oldVal) { | |||
| @@ -140,6 +140,8 @@ const whiteList = [ | |||
| '/sunVillage_info/list_contract_ranking', | |||
| '/sunVillage_info/identity_check', | |||
| '/sunVillage_info/assetMapOpen', | |||
| '/sunVillage_info/otherOpenVisitIndex', | |||
| '/sunVillage_info/otherOpenVisitDetail', | |||
| // 新型经营主体 | |||
| 'newBusinessEntity/newsBulletin', //新闻公告 | |||
| @@ -3795,6 +3795,51 @@ export const constantRoutes = [ | |||
| }, | |||
| component: (resolve) => require(['@/views/sunVillage_info/registration/registrationEdit'], resolve) | |||
| }, | |||
| { ////阳光村务(新)-- 综合公开 | |||
| path: '/sunVillage_info/otherOpenIndex', | |||
| name: 'otherOpenIndex', | |||
| meta: { | |||
| title: '综合公开', | |||
| hidden: true, | |||
| }, | |||
| component: (resolve) => require(['@/views/sunVillage_info/otherOpen/otherOpenList'], resolve) | |||
| }, | |||
| { ////阳光村务(新)-- 综合公开详情 | |||
| path: '/sunVillage_info/otherOpenDetail', | |||
| name: 'otherOpenDetail', | |||
| meta: { | |||
| title: '综合公开详情', | |||
| hidden: true, | |||
| }, | |||
| component: (resolve) => require(['@/views/sunVillage_info/otherOpen/otherOpenDetail'], resolve) | |||
| }, | |||
| { ////阳光村务(新)-- 新增/编辑综合公开 | |||
| path: '/sunVillage_info/otherOpenEdit', | |||
| name: 'otherOpenEdit', | |||
| meta: { | |||
| title: '编辑综合公开', | |||
| hidden: true, | |||
| }, | |||
| component: (resolve) => require(['@/views/sunVillage_info/otherOpen/otherOpenEdit'], resolve) | |||
| }, | |||
| { ////阳光村务(新)-- 综合公开 游客 | |||
| path: '/sunVillage_info/otherOpenVisitIndex', | |||
| name: 'otherOpenVisitIndex', | |||
| meta: { | |||
| title: '综合公开', | |||
| hidden: true, | |||
| }, | |||
| component: (resolve) => require(['@/views/sunVillage_info/otherOpen/otherOpenVisitList'], resolve) | |||
| }, | |||
| { ////阳光村务(新)-- 综合公开详情 游客 | |||
| path: '/sunVillage_info/otherOpenVisitDetail', | |||
| name: 'otherOpenVisitDetail', | |||
| meta: { | |||
| title: '综合公开详情', | |||
| hidden: true, | |||
| }, | |||
| component: (resolve) => require(['@/views/sunVillage_info/otherOpen/otherOpenVisitDetail'], resolve) | |||
| }, | |||
| { ////阳光村务(新)-- 发包方审核 | |||
| path: '/sunVillage_info/list_employer_process', | |||
| @@ -236,6 +236,27 @@ export const FINANCE = { | |||
| a = new BigNumber(a, 10); | |||
| return a.isZero(); | |||
| }, | |||
| sub(a, b) { | |||
| if(!(a instanceof BigNumber)) | |||
| a = new BigNumber(a, 10); | |||
| if(!(b instanceof BigNumber)) | |||
| b = new BigNumber(b, 10); | |||
| return a.minus(b, 10); | |||
| }, | |||
| mul(a, b) { | |||
| if(!(a instanceof BigNumber)) | |||
| a = new BigNumber(a, 10); | |||
| if(!(b instanceof BigNumber)) | |||
| b = new BigNumber(b, 10); | |||
| return a.multipliedBy(b, 10); | |||
| }, | |||
| div(a, b) { | |||
| if(!(a instanceof BigNumber)) | |||
| a = new BigNumber(a, 10); | |||
| if(!(b instanceof BigNumber)) | |||
| b = new BigNumber(b, 10); | |||
| return a.div(b, 10); | |||
| }, | |||
| toNumber(a) { | |||
| if(typeof(a) === 'number') | |||
| return a; | |||
| @@ -5,7 +5,10 @@ | |||
| <div class="address"><i class="icon"></i>{{deptName}}</div> | |||
| <div class="address">{{bookName}}</div> | |||
| <div class="address" @click="bookVisbile = true">{{bookName}}</div> | |||
| <van-popup v-model="bookVisbile" round position="bottom"> | |||
| <van-picker title="请选择账套" show-toolbar :columns="bookList" @confirm="onConfirmBook" @cancel="onCancelBook" value-key="bookName"/> | |||
| </van-popup> | |||
| </div> | |||
| <div class="exit_btn" @click="$router.push({name:'sunVillageInfoLogin'})"> | |||
| @@ -65,9 +68,10 @@ | |||
| </div> | |||
| </template> | |||
| <script> | |||
| import {bookInfo, nologinMenus} from "@/api/sunVillage_info/fixedAssets"; | |||
| import {bookInfo, nologinMenus} from "@/api/sunVillage_info/fixedAssets"; | |||
| import { sysConfig } from "@/api/homesteadSurvey/index"; | |||
| import Cookies from "js-cookie"; | |||
| import {bookListByDept} from "@/api/onlineHome/villageAffairs"; | |||
| export default { | |||
| name: "sunVillageInfoIndexCode", | |||
| data() { | |||
| @@ -94,7 +98,6 @@ | |||
| //账套列表 | |||
| bookVisbile:false, | |||
| bookList:[], | |||
| bookName:"", | |||
| bookId:"", | |||
| book:"", | |||
| @@ -102,7 +105,7 @@ | |||
| }; | |||
| }, | |||
| created() { | |||
| console.log(this.$store) | |||
| //console.log(this.$store) | |||
| if(this.$route.query.bookId){ | |||
| bookInfo(this.$route.query.bookId).then((res) => { | |||
| @@ -143,6 +146,7 @@ | |||
| this.configValue = res.rows[0].configValue; | |||
| } | |||
| }); | |||
| this.getBookList(this.$route.query.deptId); | |||
| }, | |||
| methods: { | |||
| goCode(){ | |||
| @@ -151,7 +155,24 @@ | |||
| }else{ | |||
| this.$router.push({path:'/sunVillage_info/login_code'}) | |||
| } | |||
| } | |||
| }, | |||
| onConfirmBook(e){ | |||
| this.bookVisbile = false; | |||
| const url = `/sunVillage_info/index_code?bookId=${e.id}&deptId=${this.$route.query.deptId}`; | |||
| this.$router.replace(url, () => { | |||
| window.location.href = url; | |||
| }); | |||
| }, | |||
| onCancelBook(e){ | |||
| this.bookVisbile = false | |||
| }, | |||
| getBookList(e){ | |||
| bookListByDept(e).then((response) => { | |||
| if (response.code == 200) { | |||
| this.bookList = response.rows; | |||
| } | |||
| }) | |||
| }, | |||
| }, | |||
| } | |||
| </script> | |||
| @@ -38,9 +38,9 @@ | |||
| <van-field required label="记工员" v-model="form.workerNote" placeholder="请输入记工员" :rules="[{ required: true , message:'请输入记工员' }]" input-align="right" :border="false" /> | |||
| <van-field required label="出工数" v-model="form.workNum" placeholder="请输入出工数" :rules="[{ required: true , message:'请输入出工数' }]" input-align="right" :border="false" /> | |||
| <van-field required label="出工数" v-model="form.workNum" placeholder="请输入出工数" :rules="[{ required: true , message:'请输入出工数' }]" input-align="right" :border="false" type="number" @change="calcMoney" /> | |||
| <van-field required label="工日值" v-model="form.perMoney" placeholder="请输入工日值" :rules="[{ required: true , message:'请输入工日值' }]" input-align="right" :border="false" /> | |||
| <van-field required label="工日值" v-model="form.perMoney" placeholder="请输入工日值" :rules="[{ required: true , message:'请输入工日值' }]" input-align="right" :border="false" type="number" @change="calcMoney" /> | |||
| <van-field required label="金额(元)" type="number" v-model="form.totalMoney" placeholder="请输入金额(元)" :rules="[{ required: true , message:'请输入金额' }]" input-align="right" :border="false" /> | |||
| @@ -61,6 +61,7 @@ | |||
| import { addOddjob } from "@/api/sunVillage_info/fixedAssets"; | |||
| import Cookies from "js-cookie"; | |||
| import request from '@/utils/request' | |||
| import {FINANCE} from "@/utils/finance"; | |||
| export default { | |||
| name: "certificateList", | |||
| data() { | |||
| @@ -113,7 +114,12 @@ | |||
| this.jobTime = data; | |||
| this.showBuildTime = false; | |||
| }, | |||
| calcMoney() { | |||
| if(this.form.workNum > 0 && this.form.perMoney > 0) | |||
| { | |||
| this.form.totalMoney = FINANCE.toNumber(FINANCE.mul(this.form.workNum, this.form.perMoney)); | |||
| } | |||
| }, | |||
| }, | |||
| } | |||
| </script> | |||
| @@ -38,9 +38,9 @@ | |||
| <van-field required label="记工员" v-model="form.workerNote" placeholder="请输入记工员" :rules="[{ required: true , message:'请输入记工员' }]" input-align="right" :border="false" /> | |||
| <van-field required label="出工数" v-model="form.workNum" placeholder="请输入出工数" :rules="[{ required: true , message:'请输入出工数' }]" input-align="right" :border="false" /> | |||
| <van-field required label="出工数" v-model="form.workNum" placeholder="请输入出工数" :rules="[{ required: true , message:'请输入出工数' }]" input-align="right" :border="false" type="number" @change="calcMoney" /> | |||
| <van-field required label="工日值" v-model="form.perMoney" placeholder="请输入工日值" :rules="[{ required: true , message:'请输入工日值' }]" input-align="right" :border="false" /> | |||
| <van-field required label="工日值" v-model="form.perMoney" placeholder="请输入工日值" :rules="[{ required: true , message:'请输入工日值' }]" input-align="right" :border="false" type="number" @change="calcMoney" /> | |||
| <van-field required label="金额(元)" type="number" v-model="form.totalMoney" placeholder="请输入金额(元)" :rules="[{ required: true , message:'请输入金额' }]" input-align="right" :border="false" /> | |||
| @@ -61,6 +61,7 @@ | |||
| import { addOddjob , getOddjob , updateOddjob } from "@/api/sunVillage_info/fixedAssets"; | |||
| import Cookies from "js-cookie"; | |||
| import request from '@/utils/request' | |||
| import {FINANCE} from "@/utils/finance"; | |||
| export default { | |||
| name: "certificateList", | |||
| data() { | |||
| @@ -122,6 +123,12 @@ | |||
| this.jobTime = data; | |||
| this.showBuildTime = false; | |||
| }, | |||
| calcMoney() { | |||
| if(this.form.workNum > 0 && this.form.perMoney > 0) | |||
| { | |||
| this.form.totalMoney = FINANCE.toNumber(FINANCE.mul(this.form.workNum, this.form.perMoney)); | |||
| } | |||
| }, | |||
| }, | |||
| } | |||
| @@ -25,8 +25,8 @@ | |||
| <van-field required :rules="[{ required: true, message: '请填写出工姓名' }]" v-model="form.workerName" label="出工姓名" placeholder="出工姓名" input-align="right" :border="false" /> | |||
| <van-field required :rules="[{ required: true, message: '请填写出工事由' }]" v-model="form.workReason" label="出工事由" placeholder="出工事由" input-align="right" :border="false" /> | |||
| <van-field required :rules="[{ required: true, message: '请填写记工员' }]" v-model="form.workerNote" label="记工员" placeholder="记工员" input-align="right" :border="false" /> | |||
| <van-field required :rules="[{ required: true, message: '请填写出工数' }]" v-model="form.workNum" label="出工数" placeholder="出工数" input-align="right" :border="false" type="number" /> | |||
| <van-field required :rules="[{ required: true, message: '请填写工日值' }]" v-model="form.perMoney" label="工日值" placeholder="工日值" input-align="right" :border="false" type="number" /> | |||
| <van-field required :rules="[{ required: true, message: '请填写出工数' }]" v-model="form.workNum" label="出工数" placeholder="出工数" input-align="right" :border="false" type="number" @change="calcMoney" /> | |||
| <van-field required :rules="[{ required: true, message: '请填写工日值' }]" v-model="form.perMoney" label="工日值" placeholder="工日值" input-align="right" :border="false" type="number" @change="calcMoney" /> | |||
| <van-field required :rules="[{ required: true, message: '请填写金额(元)' }]" v-model="form.totalMoney" label="金额(元)" placeholder="金额(元)" input-align="right" :border="false" type="number" /> | |||
| <van-field | |||
| @@ -36,7 +36,7 @@ | |||
| :border="false" | |||
| > | |||
| </van-field> | |||
| <CommonUpload name="openPic" v-model="form.openPic" multiple/> | |||
| <CommonUpload name="openPic" v-model="form.openPic" accept="image/*" multiple/> | |||
| <van-field | |||
| name="openPic2" | |||
| @@ -45,7 +45,7 @@ | |||
| :border="false" | |||
| > | |||
| </van-field> | |||
| <CommonUpload name="openPic2" v-model="form.openPic2" multiple/> | |||
| <CommonUpload name="openPic2" v-model="form.openPic2" accept="image/*" multiple/> | |||
| <van-field | |||
| name="openPic3" | |||
| @@ -54,7 +54,7 @@ | |||
| :border="false" | |||
| > | |||
| </van-field> | |||
| <CommonUpload name="openPic3" v-model="form.openPic3" multiple/> | |||
| <CommonUpload name="openPic3" v-model="form.openPic3" accept="image/*" multiple/> | |||
| <van-field v-model="form.remark" label="备注" placeholder="备注" input-align="right" :border="false" /> | |||
| @@ -72,6 +72,7 @@ | |||
| import { addOddjob,updateOddjob } from "@/api/sunVillage_info/fixedAssets"; | |||
| import CommonUpload from "@/components/form/CommonUpload.vue"; | |||
| import FieldDatePicker from "@/components/form/FieldDatePicker.vue"; | |||
| import {FINANCE} from "@/utils/finance"; | |||
| export default { | |||
| name: "listTouristsRegistrationAdd", | |||
| components: {FieldDatePicker, CommonUpload}, | |||
| @@ -131,6 +132,12 @@ | |||
| back() { | |||
| this.$router.back(); | |||
| }, | |||
| calcMoney() { | |||
| if(this.form.workNum > 0 && this.form.perMoney > 0) | |||
| { | |||
| this.form.totalMoney = FINANCE.toNumber(FINANCE.mul(this.form.workNum, this.form.perMoney)); | |||
| } | |||
| }, | |||
| }, | |||
| } | |||
| </script> | |||
| @@ -25,8 +25,8 @@ | |||
| <van-field required :rules="[{ required: true, message: '请填写出工姓名' }]" v-model="form.workerName" label="出工姓名" placeholder="出工姓名" input-align="right" :border="false" /> | |||
| <van-field required :rules="[{ required: true, message: '请填写出工事由' }]" v-model="form.workReason" label="出工事由" placeholder="出工事由" input-align="right" :border="false" /> | |||
| <van-field required :rules="[{ required: true, message: '请填写记工员' }]" v-model="form.workerNote" label="记工员" placeholder="记工员" input-align="right" :border="false" /> | |||
| <van-field required :rules="[{ required: true, message: '请填写出工数' }]" v-model="form.workNum" label="出工数" placeholder="出工数" input-align="right" :border="false" type="number" /> | |||
| <van-field required :rules="[{ required: true, message: '请填写工日值' }]" v-model="form.perMoney" label="工日值" placeholder="工日值" input-align="right" :border="false" type="number" /> | |||
| <van-field required :rules="[{ required: true, message: '请填写出工数' }]" v-model="form.workNum" label="出工数" placeholder="出工数" input-align="right" :border="false" type="number" @change="calcMoney" /> | |||
| <van-field required :rules="[{ required: true, message: '请填写工日值' }]" v-model="form.perMoney" label="工日值" placeholder="工日值" input-align="right" :border="false" type="number" @change="calcMoney" /> | |||
| <van-field required :rules="[{ required: true, message: '请填写金额(元)' }]" v-model="form.totalMoney" label="金额(元)" placeholder="金额(元)" input-align="right" :border="false" type="number" /> | |||
| <van-field | |||
| @@ -36,7 +36,7 @@ | |||
| :border="false" | |||
| > | |||
| </van-field> | |||
| <CommonUpload name="openPic" v-model="form.openPic" multiple/> | |||
| <CommonUpload name="openPic" v-model="form.openPic" accept="image/*" multiple/> | |||
| <van-field | |||
| name="openPic2" | |||
| @@ -45,7 +45,7 @@ | |||
| :border="false" | |||
| > | |||
| </van-field> | |||
| <CommonUpload name="openPic2" v-model="form.openPic2" multiple/> | |||
| <CommonUpload name="openPic2" v-model="form.openPic2" accept="image/*" multiple/> | |||
| <van-field | |||
| name="openPic3" | |||
| @@ -54,7 +54,7 @@ | |||
| :border="false" | |||
| > | |||
| </van-field> | |||
| <CommonUpload name="openPic3" v-model="form.openPic3" multiple/> | |||
| <CommonUpload name="openPic3" v-model="form.openPic3" accept="image/*" multiple/> | |||
| <van-field v-model="form.remark" label="备注" placeholder="备注" input-align="right" :border="false" /> | |||
| @@ -72,6 +72,7 @@ | |||
| import {addOddjob, getOddjob, updateOddjob} from "@/api/sunVillage_info/fixedAssets"; | |||
| import CommonUpload from "@/components/form/CommonUpload.vue"; | |||
| import FieldDatePicker from "@/components/form/FieldDatePicker.vue"; | |||
| import {FINANCE} from "@/utils/finance"; | |||
| export default { | |||
| name: "listTouristsRegistrationEdit", | |||
| components: {FieldDatePicker, CommonUpload}, | |||
| @@ -143,6 +144,12 @@ | |||
| back() { | |||
| this.$router.back(); | |||
| }, | |||
| calcMoney() { | |||
| if(this.form.workNum > 0 && this.form.perMoney > 0) | |||
| { | |||
| this.form.totalMoney = FINANCE.toNumber(FINANCE.mul(this.form.workNum, this.form.perMoney)); | |||
| } | |||
| }, | |||
| }, | |||
| } | |||
| </script> | |||
| @@ -0,0 +1,178 @@ | |||
| <template> | |||
| <div class="home_wrapper"> | |||
| <div class="header_main"> | |||
| {{title}} | |||
| <div class="return_btn" @click="back"></div> | |||
| </div> | |||
| <van-form ref="formData" :readonly="true"> | |||
| <div class="list_main"> | |||
| <van-field name="otherName" :value="form.otherName" label="公开名称" input-align="right" :border="false" /> | |||
| <van-field name="openAt" :value="form.openAt" label="公开时间" input-align="right" :border="false" /> | |||
| <van-field name="openContent" label="公开内容" input-align="right" :border="false" /> | |||
| <div class="open-content" v-html="form.openContent"></div> | |||
| <van-field | |||
| name="openPic" | |||
| label="公开图片" | |||
| input-align="right" | |||
| :border="false" | |||
| > | |||
| </van-field> | |||
| <CommonUpload name="openPic" :value="form.openPic" multiple :deletable="false" :show-upload="false"/> | |||
| <van-field | |||
| name="openFile" | |||
| label="公开文件" | |||
| input-align="right" | |||
| :border="false" | |||
| > | |||
| </van-field> | |||
| <CommonUpload name="openFile" :value="form.openFile" multiple :deletable="false" :show-upload="false"/> | |||
| <van-field name="remake" :value="form.remark" label="备注" input-align="left" :border="false"/> | |||
| </div> | |||
| </van-form> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| import CommonUpload from "@/components/form/CommonUpload.vue"; | |||
| import {getOther} from "@/api/sunVillage_info/otherOpen"; | |||
| export default { | |||
| name: "otherOpenDetail", | |||
| components: {CommonUpload}, | |||
| data() { | |||
| return { | |||
| form: { | |||
| id: null, | |||
| bookId: null, | |||
| deptId: null, | |||
| deptName: null, | |||
| otherName: null, | |||
| otherType: '1', | |||
| openYear: null, | |||
| openAt: null, | |||
| openContent: null, | |||
| openFile: null, | |||
| openPic: null, | |||
| remark: null, | |||
| createBy: null, | |||
| createTime: null, | |||
| updateBy: null, | |||
| updateTime: null, | |||
| }, | |||
| id:'', | |||
| title: '综合公开', | |||
| }; | |||
| }, | |||
| created() { | |||
| this.id = this.$route.query.id; | |||
| this.getDetail(); | |||
| }, | |||
| methods: { | |||
| getDetail() { | |||
| if(!this.id) | |||
| { | |||
| this.back(); | |||
| return; | |||
| } | |||
| getOther(this.id).then((resp) => { | |||
| this.form = resp.data; | |||
| this.getDicts('other_gk_type').then((resp) => { | |||
| const dict = resp.data.find((x) => x.dictValue == this.form.otherType); | |||
| if(dict) | |||
| this.title = dict.dictLabel; | |||
| }); | |||
| }); | |||
| }, | |||
| back() { | |||
| this.$router.back(); | |||
| }, | |||
| }, | |||
| } | |||
| </script> | |||
| <style scoped lang="scss"> | |||
| /deep/ .van-button--primary{ | |||
| background: url("../../../assets/images/sunVillage_info/btn_bg.png") no-repeat; | |||
| background-size: 100% 100%; | |||
| border: none; | |||
| } | |||
| .home_wrapper{ | |||
| background: #e9e9e9; | |||
| min-height: 100vh; | |||
| width: 100vw; | |||
| .header_main { | |||
| height: 116px; | |||
| background: url('../../../assets/images/sunVillage_info/list_head.png') no-repeat; | |||
| background-size: 100% 100%; | |||
| position: fixed; | |||
| top: 0; | |||
| left: 0; | |||
| width: 100%; | |||
| font-size: 36px; | |||
| line-height: 116px; | |||
| text-align: center; | |||
| color: #fff; | |||
| position: relative; | |||
| .return_btn { | |||
| width: 24px; | |||
| height: 43.2px; | |||
| background: url('../../../assets/images/sunVillage_info/list_icon_5.png') center center no-repeat; | |||
| background-size: 20px 36px; | |||
| position: absolute; | |||
| left: 38px; | |||
| top: 36px; | |||
| } | |||
| .add_btn { | |||
| width: 56.4px; | |||
| height: 40.8px; | |||
| background: url('../../../assets/images/sunVillage_info/list_icon_9.png') center center no-repeat; | |||
| background-size: 47px 34px; | |||
| position: absolute; | |||
| right: 38px; | |||
| top: 36px; | |||
| } | |||
| } | |||
| .list_main{ | |||
| padding:25px; | |||
| background: #ffffff; | |||
| width: 94%; | |||
| margin: 25px auto 0; | |||
| border-radius: 15PX; | |||
| box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1); | |||
| } | |||
| .titBox{ | |||
| display: flex; | |||
| align-items: center; | |||
| } | |||
| .tit{ | |||
| font-size: 36px; | |||
| font-weight: bold; | |||
| } | |||
| /deep/ .van-cell{ | |||
| padding-left: 0!important; | |||
| padding-right: 0!important; | |||
| padding-bottom: 0!important; | |||
| } | |||
| /deep/ .van-field__label{ | |||
| padding-left: 10PX; | |||
| width: 8.2em; | |||
| } | |||
| /deep/ .van-cell--required::before{ | |||
| left: 0; | |||
| } | |||
| } | |||
| .open-content { | |||
| padding: .2rem .3rem; | |||
| max-height: 8rem; | |||
| } | |||
| </style> | |||
| @@ -0,0 +1,280 @@ | |||
| <template> | |||
| <div class="home_wrapper"> | |||
| <div class="header_main"> | |||
| {{titlePreifx}}{{title}} | |||
| <div class="return_btn" @click="back()"></div> | |||
| </div> | |||
| <van-form ref="formData" :show-error-message="false" @submit="submit"> | |||
| <div class="list_main"> | |||
| <field-select | |||
| v-if="showTypeSelector" | |||
| v-model="form.otherType" | |||
| label="公开类型" | |||
| value-key="dictLabel" | |||
| data-key="dictValue" | |||
| placeholder="请选择公开类型" | |||
| :rules="rules.otherType" | |||
| required | |||
| size="large" | |||
| :columns="otherTypeOptions"/> | |||
| <van-field name="otherName" v-model="form.otherName" label="公开名称" input-align="right" required :rules="rules.otherName" placeholder="请输入公开名称" size="large" :maxlength="150"/> | |||
| <field-date-picker | |||
| name="openAt" | |||
| class="field_no-label" | |||
| v-model="form.openAt" | |||
| placeholder="请选择公开时间" | |||
| formatter="yyyy-MM-dd" | |||
| input-align="right" | |||
| type="date" | |||
| label="公开时间" | |||
| :required="true" | |||
| :rules="rules.openAt" | |||
| size="large" | |||
| /> | |||
| <van-field name="openContent" label="公开内容" size="large" :border="false"/> | |||
| <vue-html5-editor :content="content" :height="300" @change="updateData" style="margin-top: 0.2rem;"></vue-html5-editor> | |||
| <van-field | |||
| name="openPic" | |||
| label="公开图片" | |||
| input-align="right" | |||
| :border="false" | |||
| > | |||
| </van-field> | |||
| <CommonUpload name="openPic" v-model="form.openPic" accept="image/*" multiple/> | |||
| <van-field | |||
| name="openFile" | |||
| label="公开文件" | |||
| input-align="right" | |||
| :border="false" | |||
| > | |||
| </van-field> | |||
| <CommonUpload name="openFile" v-model="form.openFile" accept="*" multiple/> | |||
| <van-field name="remark" v-model="form.remark" label="备注" input-align="left" size="large" :maxlength="255" placeholder="请输入备注"/> | |||
| </div> | |||
| <div style="margin: 16px auto;width: 50%;"> | |||
| <van-button round block type="primary" native-type="submit"> | |||
| 保存 | |||
| </van-button> | |||
| </div> | |||
| </van-form> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| import CommonUpload from "@/components/form/CommonUpload.vue"; | |||
| import FieldDatePicker from "@/components/form/FieldDatePicker.vue"; | |||
| import {Toast} from "vant"; | |||
| import {addOther, getOther, updateOther} from "@/api/sunVillage_info/otherOpen"; | |||
| import FieldSelect from "@/components/form/FieldSelect.vue"; | |||
| export default { | |||
| name: "otherOpenEdit", | |||
| components: {FieldSelect, FieldDatePicker, CommonUpload}, | |||
| data() { | |||
| return { | |||
| form: { | |||
| id: null, | |||
| bookId: null, | |||
| deptId: null, | |||
| deptName: null, | |||
| otherName: null, | |||
| otherType: null, | |||
| openYear: null, | |||
| openAt: null, | |||
| openContent: null, | |||
| openFile: null, | |||
| openPic: null, | |||
| remark: null, | |||
| createBy: null, | |||
| createTime: null, | |||
| updateBy: null, | |||
| updateTime: null, | |||
| }, | |||
| rules: { | |||
| openAt: [{message: '请选择公开时间', required: true}], | |||
| otherName: [{message: '请输入公开名称', required: true}], | |||
| otherType: [{message: '请选择公开类型', required: true}], | |||
| }, | |||
| id: null, | |||
| intent: null, | |||
| content: '', | |||
| otherTypeOptions: [], | |||
| otherType: null, | |||
| title: '综合公开', | |||
| }; | |||
| }, | |||
| created() { | |||
| this.id = this.$route.query.id; | |||
| this.intent = this.$route.query.intent; | |||
| this.otherType = this.$route.query.otherType; | |||
| if(this.isEdit) | |||
| this.getDetail(); | |||
| else | |||
| { | |||
| this.form.otherType = this.$route.query.otherType; | |||
| this.getDicts('other_gk_type').then((resp) => { | |||
| this.otherTypeOptions = resp.data; | |||
| const dict = resp.data.find((x) => x.dictValue == this.form.otherType); | |||
| if(dict) | |||
| this.title = dict.dictLabel; | |||
| }); | |||
| } | |||
| }, | |||
| methods: { | |||
| getDetail() { | |||
| if(!this.id) | |||
| { | |||
| this.back(); | |||
| return; | |||
| } | |||
| getOther(this.id).then((resp) => { | |||
| this.form = resp.data; | |||
| this.content = this.form.openContent || ''; | |||
| this.getDicts('other_gk_type').then((resp) => { | |||
| const dict = resp.data.find((x) => x.dictValue == this.form.otherType); | |||
| if(dict) | |||
| this.title = dict.dictLabel; | |||
| }); | |||
| }); | |||
| }, | |||
| back(ti) { | |||
| if(ti > 0) | |||
| setTimeout(() => this.$router.back(), ti); | |||
| else | |||
| this.$router.back(); | |||
| }, | |||
| updateData(t) { | |||
| this.form.openContent = t; | |||
| }, | |||
| submit() { | |||
| const loading = Toast.loading({ | |||
| message: '保存中...', | |||
| duration: 0, | |||
| }); | |||
| if(this.form.id) | |||
| { | |||
| updateOther(this.form).then((resp) => { | |||
| this.$notify({ type: 'success', message: '保存成功' }); | |||
| this.back(1500); | |||
| }).finally(() => { | |||
| loading.clear(); | |||
| }); | |||
| } | |||
| else | |||
| { | |||
| addOther(this.form).then((resp) => { | |||
| this.$notify({ type: 'success', message: '新增成功' }); | |||
| this.back(1500); | |||
| }).finally(() => { | |||
| loading.clear(); | |||
| }); | |||
| } | |||
| }, | |||
| }, | |||
| computed: { | |||
| isAdd() { | |||
| return this.intent === 'add'; | |||
| }, | |||
| isEdit() { | |||
| return this.intent === 'edit'; | |||
| }, | |||
| titlePreifx() { | |||
| return this.intent === 'edit' ? '编辑' : '新增'; | |||
| }, | |||
| showTypeSelector() { | |||
| return this.isAdd && !this.otherType; | |||
| }, | |||
| }, | |||
| } | |||
| </script> | |||
| <style scoped lang="scss"> | |||
| /deep/ .van-button--primary{ | |||
| background: url("../../../assets/images/sunVillage_info/btn_bg.png") no-repeat; | |||
| background-size: 100% 100%; | |||
| border: none; | |||
| } | |||
| .home_wrapper{ | |||
| background: #e9e9e9; | |||
| min-height: 100vh; | |||
| width: 100vw; | |||
| .header_main { | |||
| height: 116px; | |||
| background: url('../../../assets/images/sunVillage_info/list_head.png') no-repeat; | |||
| background-size: 100% 100%; | |||
| position: fixed; | |||
| top: 0; | |||
| left: 0; | |||
| width: 100%; | |||
| font-size: 36px; | |||
| line-height: 116px; | |||
| text-align: center; | |||
| color: #fff; | |||
| position: relative; | |||
| .return_btn { | |||
| width: 24px; | |||
| height: 43.2px; | |||
| background: url('../../../assets/images/sunVillage_info/list_icon_5.png') center center no-repeat; | |||
| background-size: 20px 36px; | |||
| position: absolute; | |||
| left: 38px; | |||
| top: 36px; | |||
| } | |||
| .add_btn { | |||
| width: 56.4px; | |||
| height: 40.8px; | |||
| background: url('../../../assets/images/sunVillage_info/list_icon_9.png') center center no-repeat; | |||
| background-size: 47px 34px; | |||
| position: absolute; | |||
| right: 38px; | |||
| top: 36px; | |||
| } | |||
| } | |||
| .list_main{ | |||
| padding:25px; | |||
| background: #ffffff; | |||
| width: 94%; | |||
| margin: 25px auto 0; | |||
| border-radius: 15PX; | |||
| box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1); | |||
| } | |||
| .titBox{ | |||
| display: flex; | |||
| align-items: center; | |||
| } | |||
| .tit{ | |||
| font-size: 36px; | |||
| font-weight: bold; | |||
| } | |||
| /deep/ .van-cell{ | |||
| padding-left: 0!important; | |||
| padding-right: 0!important; | |||
| padding-bottom: 0!important; | |||
| } | |||
| /deep/ .van-field__label{ | |||
| padding-left: 10PX; | |||
| width: 8.2em; | |||
| } | |||
| /deep/ .van-cell--required::before{ | |||
| left: 0; | |||
| } | |||
| } | |||
| </style> | |||
| @@ -0,0 +1,485 @@ | |||
| <template> | |||
| <div class="home_wrapper"> | |||
| <div class="header_main" | |||
| :style="`background-image:url(${require('@/assets/images/sunVillage_info/list_head.png')})`" | |||
| > | |||
| <p class="title" @click="openTypeChooser">{{title}}</p> | |||
| <div class="return_btn" @click="back"></div> | |||
| <div class="add_btn" @click="add"></div> | |||
| </div> | |||
| <div class="record_main"> | |||
| <div class="record_det"> | |||
| <div class="year_l" @click="tabShow"><i :class="{'icon':true , 'zk':!showTab , 'ss':showTab } "></i>{{queryParams.openYear == '' ? '全部': queryParams.openYear}}<span class="unit">{{queryParams.openYear == '' ? '': '年'}}</span></div> | |||
| <div class="total_r">共{{total}}条公开</div> | |||
| </div> | |||
| <div class="record_list" v-if="showTab"> | |||
| <div :class="{'flex_block':true , 'current':queryParams.openYear == ''}" @click="tabClick('')">全部</div> | |||
| <div v-for="(item,index) in yearList" :key="index" :class="{'flex_block':true , 'current':queryParams.openYear == item}" @click="tabClick(item)">{{item}}</div> | |||
| </div> | |||
| </div> | |||
| <div class="list_main"> | |||
| <paged-list | |||
| ref="pagedList" | |||
| :page-num.sync="queryParams.pageNum" | |||
| :page-size.sync="queryParams.pageSize" | |||
| :total.sync="total" | |||
| :getListFunc="getListReq" | |||
| :reload.sync="reload" | |||
| @reload="dataList = []" | |||
| get-when-created> | |||
| <div class="item" v-for="(item,index) in dataList" :key="index" @click="viewItem(item.id)" > | |||
| <div class="info"> | |||
| <div class="title"> | |||
| <p class="news_title">{{item.otherName}}</p> | |||
| </div> | |||
| <div class="time"> | |||
| <div class="icon_time"></div> | |||
| {{item.openAt}} | |||
| </div> | |||
| </div> | |||
| <div class="operation"> | |||
| <div class="opera_btn view" @click.stop="viewItem(item.id)"> | |||
| <i class="icon "></i> | |||
| </div> | |||
| <div class="opera_btn edit" @click.stop="edit(item.id)"> | |||
| <i class="icon "></i> | |||
| </div> | |||
| <div class="opera_btn delete" @click.stop="remove(item.id)"> | |||
| <i class="icon"></i> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| </paged-list> | |||
| </div> | |||
| <van-action-sheet | |||
| v-model="showType" | |||
| :actions="otherTypeOptions" | |||
| cancel-text="取消" | |||
| close-on-click-action | |||
| @select="changeType" | |||
| /> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| import PagedList from "@/components/common/PagedList.vue"; | |||
| import {Dialog, Toast} from "vant"; | |||
| import {delOther, listOther} from "@/api/sunVillage_info/otherOpen"; | |||
| import {getLoginBook} from "@/api/sunVillage_info/fixedAssets"; | |||
| export default { | |||
| name: "otherOpenList", | |||
| components: {PagedList}, | |||
| data() { | |||
| return { | |||
| dataList:[], | |||
| total: 0, | |||
| queryParams:{ | |||
| pageNum:1, | |||
| pageSize:10, | |||
| orderByColumn:'openAt', | |||
| isAsc:'desc', | |||
| openYear:'', | |||
| otherType: null, | |||
| }, | |||
| yearList: [], | |||
| reload: false, | |||
| showTab: false, | |||
| otherTypeOptions: [], | |||
| showType: false, | |||
| }; | |||
| }, | |||
| created() { | |||
| this.queryParams.otherType = this.$route.query.otherType || ''; | |||
| this.getDicts('other_gk_type').then((resp) => { | |||
| let arr = []; | |||
| arr.push({ | |||
| dictValue: '', | |||
| dictLabel: '综合公开', | |||
| name: '全部', | |||
| }); | |||
| resp.data.forEach((x) => { | |||
| x.name = x.dictLabel; | |||
| arr.push(x); | |||
| }); | |||
| this.otherTypeOptions = arr; | |||
| }); | |||
| getLoginBook().then((resp) => { | |||
| let startYear = new Date().getFullYear(); | |||
| let thisYear = startYear; | |||
| if(resp.data.startDay) | |||
| { | |||
| startYear = parseInt(resp.data.startDay.substring(0, resp.data.startDay.indexOf('-'))) | |||
| } | |||
| for (let i = thisYear ; i >= startYear ; i--){ | |||
| this.yearList.push('' + i); | |||
| } | |||
| }); | |||
| }, | |||
| methods: { | |||
| getListReq(pageInfo) { | |||
| return new Promise((resolve, reject) => { | |||
| listOther(this.queryParams).then((response) => { | |||
| response.rows.forEach((x) => this.dataList.push(x)); | |||
| resolve(response); | |||
| }); | |||
| }); | |||
| }, | |||
| gotoViewItem(id) { | |||
| let parms = { | |||
| id: id, | |||
| intent: 'view', | |||
| }; | |||
| if(this.queryParams.otherType) | |||
| parms.otherType = this.queryParams.otherType; | |||
| this.$router.push({ | |||
| name: 'otherOpenDetail', | |||
| query: parms, | |||
| }).catch(() => {}); | |||
| }, | |||
| viewItem(id){ | |||
| this.$router.replace(`/sunVillage_info/otherOpenIndex?otherType=${this.queryParams.otherType || ''}`, () => this.gotoViewItem(id), () => this.gotoViewItem(id) ); | |||
| }, | |||
| gotoAdd() { | |||
| let parms = { | |||
| intent: 'add', | |||
| }; | |||
| if(this.queryParams.otherType) | |||
| parms.otherType = this.queryParams.otherType; | |||
| this.$router.push({ | |||
| name: 'otherOpenEdit', | |||
| query: parms, | |||
| }).catch(() => {}); | |||
| }, | |||
| add() { | |||
| this.$router.replace(`/sunVillage_info/otherOpenIndex?otherType=${this.queryParams.otherType || ''}`, () => this.gotoAdd(), () => this.gotoAdd() ); | |||
| }, | |||
| gotoEdit(id) { | |||
| let parms = { | |||
| id: id, | |||
| intent: 'edit', | |||
| }; | |||
| if(this.queryParams.otherType) | |||
| parms.otherType = this.queryParams.otherType; | |||
| this.$router.push({ | |||
| name: 'otherOpenEdit', | |||
| query: parms, | |||
| }).catch(() => {}); | |||
| }, | |||
| edit(id) { | |||
| this.$router.replace(`/sunVillage_info/otherOpenIndex?otherType=${this.queryParams.otherType || ''}`, () => this.gotoEdit(id), () => this.gotoEdit(id) ); | |||
| }, | |||
| remove(id) { | |||
| Dialog.confirm({ | |||
| title: '警告', | |||
| message: '确认删除该项?', | |||
| }) | |||
| .then(() => { | |||
| const loading = Toast.loading({ | |||
| message: '删除中...', | |||
| duration: 0, | |||
| }); | |||
| delOther(id).then((resp) => { | |||
| this.$notify({ type: 'success', message: '删除成功' }); | |||
| this.$refs.pagedList.getList(); | |||
| }).finally(() => { | |||
| loading.clear(); | |||
| }); | |||
| }) | |||
| .catch(() => {}); | |||
| }, | |||
| back() { | |||
| this.$router.replace('/sunVillage_info/otherOpenIndex', () => this.$router.back(), () => this.$router.back() ); | |||
| }, | |||
| tabClick(year){ | |||
| this.queryParams.openYear = year; | |||
| this.reload = true; | |||
| }, | |||
| tabShow(){ | |||
| this.showTab = !this.showTab; | |||
| }, | |||
| openTypeChooser() { | |||
| this.showType = true; | |||
| }, | |||
| changeType(action, index) { | |||
| this.queryParams.otherType = action.dictValue; | |||
| this.reload = true; | |||
| }, | |||
| }, | |||
| computed: { | |||
| title() { | |||
| if(this.queryParams.otherType) | |||
| { | |||
| const dict = this.otherTypeOptions.find((x) => x.dictValue == this.queryParams.otherType); | |||
| if(dict) | |||
| return dict.dictLabel; | |||
| } | |||
| return '综合公开'; | |||
| }, | |||
| }, | |||
| } | |||
| </script> | |||
| <style scoped lang="scss"> | |||
| .home_wrapper{ | |||
| background: #e9e9e9; | |||
| min-height: 100vh; | |||
| width: 100vw; | |||
| .header_main{ | |||
| height: 116px; | |||
| background: url('../../../assets/images/sunVillage_info/list_head.png') no-repeat; | |||
| background-size: 100% 100%; | |||
| position: fixed; | |||
| top: 0; | |||
| left: 0; | |||
| width: 100%; | |||
| font-size: 36px; | |||
| line-height: 116px; | |||
| text-align: center; | |||
| color: #fff; | |||
| position: relative; | |||
| .return_btn{ | |||
| width: 24px; | |||
| height: 43.2px; | |||
| background: url('../../../assets/images/sunVillage_info/list_icon_5.png') center center no-repeat; | |||
| background-size: 20px 36px; | |||
| position: absolute; | |||
| left: 38px; | |||
| top: 36px; | |||
| } | |||
| .add_btn{ | |||
| width: 56.4px; | |||
| height: 40.8px; | |||
| background: url('../../../assets/images/sunVillage_info/list_icon_9.png') center center no-repeat; | |||
| background-size: 47px 34px; | |||
| position: absolute; | |||
| right: 38px; | |||
| top: 36px; | |||
| } | |||
| .title { | |||
| } | |||
| .title::before { | |||
| display: inline-block; | |||
| width: 24px; | |||
| height: 24px; | |||
| content: ''; | |||
| background-image: url('../../../assets/images/icon/index_header_focus.png'); | |||
| background-repeat: no-repeat; | |||
| background-size: contain; | |||
| margin-right: 0.2rem; | |||
| transform: rotate( | |||
| 180deg | |||
| ); | |||
| } | |||
| .title::after { | |||
| width: 0.32rem; | |||
| height: 0.32rem; | |||
| display: inline-block; | |||
| content: ''; | |||
| background-image: url('../../../assets/images/icon/index_header_focus.png'); | |||
| background-repeat: no-repeat; | |||
| background-size: contain; | |||
| margin-left: 0.2rem; | |||
| } | |||
| } | |||
| .record_main{ | |||
| padding:30px 22px; | |||
| .record_det{ | |||
| height: 38px; | |||
| line-height: 38px; | |||
| display: flex; | |||
| justify-content:space-between; | |||
| .year_l{ | |||
| font-size: 30px; | |||
| display: flex; | |||
| align-items: center; | |||
| color: #858585; | |||
| .unit{ | |||
| padding-left: 5px; | |||
| } | |||
| .icon{ | |||
| width: 23px; | |||
| height: 12px; | |||
| display: block; | |||
| background: url('../../../assets/images/sunVillage_info/list_icon_1.png') no-repeat; | |||
| background-size: 100% 100%; | |||
| margin-bottom: 4px; | |||
| margin-right: 8px; | |||
| &.zk { | |||
| transform: rotate(0deg) | |||
| } | |||
| &.ss{ | |||
| transform: rotate(180deg) | |||
| } | |||
| } | |||
| } | |||
| .total_r{ | |||
| font-size: 26px; | |||
| letter-spacing: 2px; | |||
| } | |||
| } | |||
| .record_list{ | |||
| display: flex; | |||
| flex-flow: wrap; | |||
| margin-top: 12PX; | |||
| .flex_block{ | |||
| font-size: 30px; | |||
| color: #878787; | |||
| padding-right: 30px; | |||
| &.current{ | |||
| color: #4199fe; | |||
| font-weight: bold; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| .list_main{ | |||
| padding:15px 22px; | |||
| .item{ | |||
| height: 140px; | |||
| border-radius: 30px; | |||
| background: #fff; | |||
| box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1); | |||
| padding:25px 32px; | |||
| display: flex; | |||
| margin-bottom: 20px; | |||
| justify-content: space-between; | |||
| .info{ | |||
| .title{ | |||
| display: flex; | |||
| font-size: 32px; | |||
| align-items: center; | |||
| height: 58px; | |||
| .icon_box{ | |||
| width: 34px; | |||
| display: block; | |||
| height: 30px; | |||
| background: url('../../../assets/images/sunVillage_info/list_icon_2.png') no-repeat; | |||
| background-size: 100% 100%; | |||
| margin-right: 10px; | |||
| flex-shrink: 0; | |||
| } | |||
| .news_title{ | |||
| display: -webkit-box; | |||
| -webkit-box-orient: vertical; | |||
| -webkit-line-clamp: 1; | |||
| word-break: break-all; | |||
| overflow: hidden; | |||
| } | |||
| .tips_mark{ | |||
| width: 34px; | |||
| height: 34px; | |||
| background: #fa0c0c; | |||
| border-radius: 8px; | |||
| font-size: 24px; | |||
| color: #fff; | |||
| text-align: center; | |||
| line-height: 34px; | |||
| margin-left: 10px; | |||
| flex-shrink: 0; | |||
| } | |||
| } | |||
| .time{ | |||
| font-size: 24px; | |||
| color: #858585; | |||
| display: flex; | |||
| align-items: center; | |||
| height: 30px; | |||
| margin-top: 6px; | |||
| .icon_time{ | |||
| width: 25px; | |||
| height: 25px; | |||
| background: url('../../../assets/images/sunVillage_info/list_icon_4.png') no-repeat; | |||
| background-size: 100% 100%; | |||
| margin-right: 10px; | |||
| } | |||
| } | |||
| } | |||
| .operation{ | |||
| display: flex; | |||
| align-items: center; | |||
| justify-content: right; | |||
| text-align: right; | |||
| .opera_btn{ | |||
| width: 52px; | |||
| height: 52px; | |||
| border-radius: 50%; | |||
| display: flex; | |||
| align-items: center; | |||
| justify-content:center; | |||
| &.delete{ | |||
| background:#df0707; | |||
| margin-left: 10PX; | |||
| .icon{ | |||
| width: 22px; | |||
| height: 29px; | |||
| background: url('../../../assets/images/sunVillage_info/list_icon_7.png') no-repeat; | |||
| background-size: 100% 100%; | |||
| display: block; | |||
| } | |||
| } | |||
| &.edit{ | |||
| background: #79cf13; | |||
| margin-left: 10PX; | |||
| .icon { | |||
| width: 26px; | |||
| height: 25px; | |||
| background: url('../../../assets/images/sunVillage_info/list_icon_6.png') no-repeat; | |||
| background-size: 100% 100%; | |||
| display: block; | |||
| } | |||
| } | |||
| &.view{ | |||
| background: #3494ff; | |||
| margin-left: 10PX; | |||
| .icon { | |||
| width: 29px; | |||
| height: 21px; | |||
| background: url('../../../assets/images/sunVillage_info/list_icon_3.png') no-repeat; | |||
| background-size: 100% 100%; | |||
| display: block; | |||
| } | |||
| } | |||
| &.list{ | |||
| background: #79cf13; | |||
| margin-left: 10PX; | |||
| .icon { | |||
| width: 29px; | |||
| height: 21px; | |||
| background: url('../../../assets/images/sunVillage_info/list_icon_10.png') no-repeat; | |||
| background-size: 100% 100%; | |||
| display: block; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| .bottom_tips{ | |||
| font-size: 24px; | |||
| color: #a7a6a6; | |||
| text-align: center; | |||
| margin-top: 32px; | |||
| background: url('../../../assets/images/sunVillage_info/list_icon_8.png') center center no-repeat; | |||
| background-size: 260px 2px; | |||
| .xs{ | |||
| padding:0 8px; | |||
| background: #e9e9e9; | |||
| } | |||
| } | |||
| } | |||
| .top_head_title{ | |||
| font-size: 16PX; | |||
| text-align: center; | |||
| padding: 15PX 0; | |||
| } | |||
| </style> | |||
| @@ -0,0 +1,187 @@ | |||
| <template> | |||
| <div class="home_wrapper"> | |||
| <div class="header_main" | |||
| :style="`background-image:url(${require('@/assets/images/sunVillage_info/list_head_red.png')})`"> | |||
| {{title}} | |||
| <div class="return_btn" @click="back"></div> | |||
| </div> | |||
| <van-form ref="formData" :readonly="true"> | |||
| <div class="list_main"> | |||
| <van-field name="otherName" :value="form.otherName" label="公开名称" input-align="right" :border="false" /> | |||
| <van-field name="openAt" :value="form.openAt" label="公开时间" input-align="right" :border="false" /> | |||
| <van-field name="openContent" label="公开内容" input-align="right" :border="false" /> | |||
| <div class="open-content" v-html="form.openContent"></div> | |||
| <van-field | |||
| name="openPic" | |||
| label="公开图片" | |||
| input-align="right" | |||
| :border="false" | |||
| > | |||
| </van-field> | |||
| <CommonUpload name="openPic" :value="form.openPic" multiple :deletable="false" :show-upload="false"/> | |||
| <van-field | |||
| name="openFile" | |||
| label="公开文件" | |||
| input-align="right" | |||
| :border="false" | |||
| > | |||
| </van-field> | |||
| <CommonUpload name="openFile" :value="form.openFile" multiple :deletable="false" :show-upload="false"/> | |||
| <van-field name="remake" :value="form.remark" label="备注" input-align="left" :border="false"/> | |||
| </div> | |||
| </van-form> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| import CommonUpload from "@/components/form/CommonUpload.vue"; | |||
| import { otherOpenDetail} from "@/api/sunVillage_info/otherOpen"; | |||
| import Cookies from "js-cookie"; | |||
| export default { | |||
| name: "otherOpenVisitDetail", | |||
| components: {CommonUpload}, | |||
| data() { | |||
| return { | |||
| form: { | |||
| id: null, | |||
| bookId: null, | |||
| deptId: null, | |||
| deptName: null, | |||
| otherName: null, | |||
| otherType: '1', | |||
| openYear: null, | |||
| openAt: null, | |||
| openContent: null, | |||
| openFile: null, | |||
| openPic: null, | |||
| remark: null, | |||
| createBy: null, | |||
| createTime: null, | |||
| updateBy: null, | |||
| updateTime: null, | |||
| }, | |||
| id:'', | |||
| title: '综合公开', | |||
| bookId: null, | |||
| }; | |||
| }, | |||
| created() { | |||
| this.bookId = Cookies.get('bookId'); | |||
| if(!this.bookId) | |||
| { | |||
| this.back(); | |||
| return; | |||
| } | |||
| this.id = this.$route.query.id; | |||
| this.getDetail(); | |||
| }, | |||
| methods: { | |||
| getDetail() { | |||
| if(!this.id) | |||
| { | |||
| this.back(); | |||
| return; | |||
| } | |||
| otherOpenDetail(this.id).then((resp) => { | |||
| this.form = resp.data; | |||
| this.getDicts('other_gk_type').then((resp) => { | |||
| const dict = resp.data.find((x) => x.dictValue == this.form.otherType); | |||
| if(dict) | |||
| this.title = dict.dictLabel; | |||
| }); | |||
| }); | |||
| }, | |||
| back() { | |||
| this.$router.back(); | |||
| }, | |||
| }, | |||
| } | |||
| </script> | |||
| <style scoped lang="scss"> | |||
| /deep/ .van-button--primary{ | |||
| background: url("../../../assets/images/sunVillage_info/btn_bg.png") no-repeat; | |||
| background-size: 100% 100%; | |||
| border: none; | |||
| } | |||
| .home_wrapper{ | |||
| background: #e9e9e9; | |||
| min-height: 100vh; | |||
| width: 100vw; | |||
| .header_main { | |||
| height: 116px; | |||
| background: url('../../../assets/images/sunVillage_info/list_head.png') no-repeat; | |||
| background-size: 100% 100%; | |||
| position: fixed; | |||
| top: 0; | |||
| left: 0; | |||
| width: 100%; | |||
| font-size: 36px; | |||
| line-height: 116px; | |||
| text-align: center; | |||
| color: #fff; | |||
| position: relative; | |||
| .return_btn { | |||
| width: 24px; | |||
| height: 43.2px; | |||
| background: url('../../../assets/images/sunVillage_info/list_icon_5.png') center center no-repeat; | |||
| background-size: 20px 36px; | |||
| position: absolute; | |||
| left: 38px; | |||
| top: 36px; | |||
| } | |||
| .add_btn { | |||
| width: 56.4px; | |||
| height: 40.8px; | |||
| background: url('../../../assets/images/sunVillage_info/list_icon_9.png') center center no-repeat; | |||
| background-size: 47px 34px; | |||
| position: absolute; | |||
| right: 38px; | |||
| top: 36px; | |||
| } | |||
| } | |||
| .list_main{ | |||
| padding:25px; | |||
| background: #ffffff; | |||
| width: 94%; | |||
| margin: 25px auto 0; | |||
| border-radius: 15PX; | |||
| box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1); | |||
| } | |||
| .titBox{ | |||
| display: flex; | |||
| align-items: center; | |||
| } | |||
| .tit{ | |||
| font-size: 36px; | |||
| font-weight: bold; | |||
| } | |||
| /deep/ .van-cell{ | |||
| padding-left: 0!important; | |||
| padding-right: 0!important; | |||
| padding-bottom: 0!important; | |||
| } | |||
| /deep/ .van-field__label{ | |||
| padding-left: 10PX; | |||
| width: 8.2em; | |||
| } | |||
| /deep/ .van-cell--required::before{ | |||
| left: 0; | |||
| } | |||
| } | |||
| .open-content { | |||
| padding: .2rem .3rem; | |||
| max-height: 8rem; | |||
| } | |||
| </style> | |||
| @@ -0,0 +1,441 @@ | |||
| <template> | |||
| <div class="home_wrapper"> | |||
| <div class="header_main" | |||
| :style="`background-image:url(${require('@/assets/images/sunVillage_info/list_head_red.png')})`" | |||
| > | |||
| <p class="title" @click="openTypeChooser">{{title}}</p> | |||
| <div class="return_btn" @click="back"></div> | |||
| </div> | |||
| <div class="record_main"> | |||
| <div class="record_det"> | |||
| <div class="year_l" @click="tabShow"><i :class="{'icon':true , 'zk':!showTab , 'ss':showTab } "></i>{{queryParams.openYear == '' ? '全部': queryParams.openYear}}<span class="unit">{{queryParams.openYear == '' ? '': '年'}}</span></div> | |||
| <div class="total_r">共{{total}}条公开</div> | |||
| </div> | |||
| <div class="record_list" v-if="showTab"> | |||
| <div :class="{'flex_block':true , 'current':queryParams.openYear == ''}" @click="tabClick('')">全部</div> | |||
| <div v-for="(item,index) in yearList" :key="index" :class="{'flex_block':true , 'current':queryParams.openYear == item}" @click="tabClick(item)">{{item}}</div> | |||
| </div> | |||
| </div> | |||
| <div class="list_main"> | |||
| <paged-list | |||
| ref="pagedList" | |||
| :page-num.sync="queryParams.pageNum" | |||
| :page-size.sync="queryParams.pageSize" | |||
| :total.sync="total" | |||
| :getListFunc="getListReq" | |||
| :reload.sync="reload" | |||
| @reload="dataList = []" | |||
| get-when-created> | |||
| <div class="item" v-for="(item,index) in dataList" :key="index" @click="viewItem(item.id)" > | |||
| <div class="info"> | |||
| <div class="title"> | |||
| <p class="news_title">{{item.otherName}}</p> | |||
| </div> | |||
| <div class="time"> | |||
| <div class="icon_time"></div> | |||
| {{item.openAt}} | |||
| </div> | |||
| </div> | |||
| <div class="operation"> | |||
| <div class="opera_btn view" @click.stop="viewItem(item.id)"> | |||
| <i class="icon "></i> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| </paged-list> | |||
| </div> | |||
| <van-action-sheet | |||
| v-model="showType" | |||
| :actions="otherTypeOptions" | |||
| cancel-text="取消" | |||
| close-on-click-action | |||
| @select="changeType" | |||
| /> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| import PagedList from "@/components/common/PagedList.vue"; | |||
| import {Dialog, Toast} from "vant"; | |||
| import { otherOpenList} from "@/api/sunVillage_info/otherOpen"; | |||
| import {bookInfo, } from "@/api/sunVillage_info/fixedAssets"; | |||
| import Cookies from "js-cookie"; | |||
| export default { | |||
| name: "otherOpenVisitList", | |||
| components: {PagedList}, | |||
| data() { | |||
| return { | |||
| dataList:[], | |||
| total: 0, | |||
| queryParams:{ | |||
| pageNum:1, | |||
| pageSize:10, | |||
| orderByColumn:'openAt', | |||
| isAsc:'desc', | |||
| openYear:'', | |||
| otherType: null, | |||
| bookId: null, | |||
| deptId: null, | |||
| }, | |||
| yearList: [], | |||
| reload: false, | |||
| showTab: false, | |||
| otherTypeOptions: [], | |||
| showType: false, | |||
| }; | |||
| }, | |||
| created() { | |||
| this.queryParams.bookId = Cookies.get('bookId'); | |||
| this.queryParams.deptId = Cookies.get('deptId'); | |||
| if(!this.queryParams.bookId) | |||
| { | |||
| this.back(); | |||
| return; | |||
| } | |||
| this.queryParams.otherType = this.$route.query.otherType || ''; | |||
| this.getDicts('other_gk_type').then((resp) => { | |||
| let arr = []; | |||
| arr.push({ | |||
| dictValue: '', | |||
| dictLabel: '综合公开', | |||
| name: '全部', | |||
| }); | |||
| resp.data.forEach((x) => { | |||
| x.name = x.dictLabel; | |||
| arr.push(x); | |||
| }); | |||
| this.otherTypeOptions = arr; | |||
| }); | |||
| bookInfo(this.queryParams.bookId).then((resp) => { | |||
| let startYear = new Date().getFullYear(); | |||
| let thisYear = startYear; | |||
| if(resp.data.startDay) | |||
| { | |||
| startYear = parseInt(resp.data.startDay.substring(0, resp.data.startDay.indexOf('-'))) | |||
| } | |||
| for (let i = thisYear ; i >= startYear ; i--){ | |||
| this.yearList.push('' + i); | |||
| } | |||
| }); | |||
| }, | |||
| methods: { | |||
| getListReq(pageInfo) { | |||
| return new Promise((resolve, reject) => { | |||
| otherOpenList(this.queryParams).then((response) => { | |||
| response.rows.forEach((x) => this.dataList.push(x)); | |||
| resolve(response); | |||
| }); | |||
| }); | |||
| }, | |||
| gotoViewItem(id) { | |||
| let parms = { | |||
| id: id, | |||
| intent: 'view', | |||
| }; | |||
| if(this.queryParams.otherType) | |||
| parms.otherType = this.queryParams.otherType; | |||
| this.$router.push({ | |||
| name: 'otherOpenVisitDetail', | |||
| query: parms, | |||
| }).catch(() => {}); | |||
| }, | |||
| viewItem(id){ | |||
| this.$router.replace(`/sunVillage_info/otherOpenVisitIndex?otherType=${this.queryParams.otherType || ''}`, () => this.gotoViewItem(id), () => this.gotoViewItem(id) ); | |||
| }, | |||
| back() { | |||
| this.$router.replace('/sunVillage_info/otherOpenVisitIndex', () => this.$router.back(), () => this.$router.back() ); | |||
| }, | |||
| tabClick(year){ | |||
| this.queryParams.openYear = year; | |||
| this.reload = true; | |||
| }, | |||
| tabShow(){ | |||
| this.showTab = !this.showTab; | |||
| }, | |||
| openTypeChooser() { | |||
| this.showType = true; | |||
| }, | |||
| changeType(action, index) { | |||
| this.queryParams.otherType = action.dictValue; | |||
| this.reload = true; | |||
| }, | |||
| }, | |||
| computed: { | |||
| title() { | |||
| if(this.queryParams.otherType) | |||
| { | |||
| const dict = this.otherTypeOptions.find((x) => x.dictValue == this.queryParams.otherType); | |||
| if(dict) | |||
| return dict.dictLabel; | |||
| } | |||
| return '综合公开'; | |||
| }, | |||
| }, | |||
| } | |||
| </script> | |||
| <style scoped lang="scss"> | |||
| .home_wrapper{ | |||
| background: #e9e9e9; | |||
| min-height: 100vh; | |||
| width: 100vw; | |||
| .header_main{ | |||
| height: 116px; | |||
| background: url('../../../assets/images/sunVillage_info/list_head.png') no-repeat; | |||
| background-size: 100% 100%; | |||
| position: fixed; | |||
| top: 0; | |||
| left: 0; | |||
| width: 100%; | |||
| font-size: 36px; | |||
| line-height: 116px; | |||
| text-align: center; | |||
| color: #fff; | |||
| position: relative; | |||
| .return_btn{ | |||
| width: 24px; | |||
| height: 43.2px; | |||
| background: url('../../../assets/images/sunVillage_info/list_icon_5.png') center center no-repeat; | |||
| background-size: 20px 36px; | |||
| position: absolute; | |||
| left: 38px; | |||
| top: 36px; | |||
| } | |||
| .add_btn{ | |||
| width: 56.4px; | |||
| height: 40.8px; | |||
| background: url('../../../assets/images/sunVillage_info/list_icon_9.png') center center no-repeat; | |||
| background-size: 47px 34px; | |||
| position: absolute; | |||
| right: 38px; | |||
| top: 36px; | |||
| } | |||
| .title { | |||
| } | |||
| .title::before { | |||
| display: inline-block; | |||
| width: 24px; | |||
| height: 24px; | |||
| content: ''; | |||
| background-image: url('../../../assets/images/icon/index_header_focus.png'); | |||
| background-repeat: no-repeat; | |||
| background-size: contain; | |||
| margin-right: 0.2rem; | |||
| transform: rotate( | |||
| 180deg | |||
| ); | |||
| } | |||
| .title::after { | |||
| width: 0.32rem; | |||
| height: 0.32rem; | |||
| display: inline-block; | |||
| content: ''; | |||
| background-image: url('../../../assets/images/icon/index_header_focus.png'); | |||
| background-repeat: no-repeat; | |||
| background-size: contain; | |||
| margin-left: 0.2rem; | |||
| } | |||
| } | |||
| .record_main{ | |||
| padding:30px 22px; | |||
| .record_det{ | |||
| height: 38px; | |||
| line-height: 38px; | |||
| display: flex; | |||
| justify-content:space-between; | |||
| .year_l{ | |||
| font-size: 30px; | |||
| display: flex; | |||
| align-items: center; | |||
| color: #858585; | |||
| .unit{ | |||
| padding-left: 5px; | |||
| } | |||
| .icon{ | |||
| width: 23px; | |||
| height: 12px; | |||
| display: block; | |||
| background: url('../../../assets/images/sunVillage_info/list_icon_1.png') no-repeat; | |||
| background-size: 100% 100%; | |||
| margin-bottom: 4px; | |||
| margin-right: 8px; | |||
| &.zk { | |||
| transform: rotate(0deg) | |||
| } | |||
| &.ss{ | |||
| transform: rotate(180deg) | |||
| } | |||
| } | |||
| } | |||
| .total_r{ | |||
| font-size: 26px; | |||
| letter-spacing: 2px; | |||
| } | |||
| } | |||
| .record_list{ | |||
| display: flex; | |||
| flex-flow: wrap; | |||
| margin-top: 12PX; | |||
| .flex_block{ | |||
| font-size: 30px; | |||
| color: #878787; | |||
| padding-right: 30px; | |||
| &.current{ | |||
| color: #4199fe; | |||
| font-weight: bold; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| .list_main{ | |||
| padding:15px 22px; | |||
| .item{ | |||
| height: 140px; | |||
| border-radius: 30px; | |||
| background: #fff; | |||
| box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1); | |||
| padding:25px 32px; | |||
| display: flex; | |||
| margin-bottom: 20px; | |||
| justify-content: space-between; | |||
| .info{ | |||
| .title{ | |||
| display: flex; | |||
| font-size: 32px; | |||
| align-items: center; | |||
| height: 58px; | |||
| .icon_box{ | |||
| width: 34px; | |||
| display: block; | |||
| height: 30px; | |||
| background: url('../../../assets/images/sunVillage_info/list_icon_2.png') no-repeat; | |||
| background-size: 100% 100%; | |||
| margin-right: 10px; | |||
| flex-shrink: 0; | |||
| } | |||
| .news_title{ | |||
| display: -webkit-box; | |||
| -webkit-box-orient: vertical; | |||
| -webkit-line-clamp: 1; | |||
| word-break: break-all; | |||
| overflow: hidden; | |||
| } | |||
| .tips_mark{ | |||
| width: 34px; | |||
| height: 34px; | |||
| background: #fa0c0c; | |||
| border-radius: 8px; | |||
| font-size: 24px; | |||
| color: #fff; | |||
| text-align: center; | |||
| line-height: 34px; | |||
| margin-left: 10px; | |||
| flex-shrink: 0; | |||
| } | |||
| } | |||
| .time{ | |||
| font-size: 24px; | |||
| color: #858585; | |||
| display: flex; | |||
| align-items: center; | |||
| height: 30px; | |||
| margin-top: 6px; | |||
| .icon_time{ | |||
| width: 25px; | |||
| height: 25px; | |||
| background: url('../../../assets/images/sunVillage_info/list_icon_4.png') no-repeat; | |||
| background-size: 100% 100%; | |||
| margin-right: 10px; | |||
| } | |||
| } | |||
| } | |||
| .operation{ | |||
| display: flex; | |||
| align-items: center; | |||
| justify-content: right; | |||
| text-align: right; | |||
| .opera_btn{ | |||
| width: 52px; | |||
| height: 52px; | |||
| border-radius: 50%; | |||
| display: flex; | |||
| align-items: center; | |||
| justify-content:center; | |||
| &.delete{ | |||
| background:#df0707; | |||
| margin-left: 10PX; | |||
| .icon{ | |||
| width: 22px; | |||
| height: 29px; | |||
| background: url('../../../assets/images/sunVillage_info/list_icon_7.png') no-repeat; | |||
| background-size: 100% 100%; | |||
| display: block; | |||
| } | |||
| } | |||
| &.edit{ | |||
| background: #79cf13; | |||
| margin-left: 10PX; | |||
| .icon { | |||
| width: 26px; | |||
| height: 25px; | |||
| background: url('../../../assets/images/sunVillage_info/list_icon_6.png') no-repeat; | |||
| background-size: 100% 100%; | |||
| display: block; | |||
| } | |||
| } | |||
| &.view{ | |||
| background: #3494ff; | |||
| margin-left: 10PX; | |||
| .icon { | |||
| width: 29px; | |||
| height: 21px; | |||
| background: url('../../../assets/images/sunVillage_info/list_icon_3.png') no-repeat; | |||
| background-size: 100% 100%; | |||
| display: block; | |||
| } | |||
| } | |||
| &.list{ | |||
| background: #79cf13; | |||
| margin-left: 10PX; | |||
| .icon { | |||
| width: 29px; | |||
| height: 21px; | |||
| background: url('../../../assets/images/sunVillage_info/list_icon_10.png') no-repeat; | |||
| background-size: 100% 100%; | |||
| display: block; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| .bottom_tips{ | |||
| font-size: 24px; | |||
| color: #a7a6a6; | |||
| text-align: center; | |||
| margin-top: 32px; | |||
| background: url('../../../assets/images/sunVillage_info/list_icon_8.png') center center no-repeat; | |||
| background-size: 260px 2px; | |||
| .xs{ | |||
| padding:0 8px; | |||
| background: #e9e9e9; | |||
| } | |||
| } | |||
| } | |||
| .top_head_title{ | |||
| font-size: 16PX; | |||
| text-align: center; | |||
| padding: 15PX 0; | |||
| } | |||
| </style> | |||
| @@ -30,7 +30,7 @@ | |||
| :border="false" | |||
| > | |||
| </van-field> | |||
| <CommonUpload name="openPic1" v-model="form.openPic1" multiple/> | |||
| <CommonUpload name="openPic1" v-model="form.openPic1" accept="image/*" multiple/> | |||
| <van-field | |||
| name="openPic2" | |||
| @@ -39,7 +39,7 @@ | |||
| :border="false" | |||
| > | |||
| </van-field> | |||
| <CommonUpload name="openPic2" v-model="form.openPic2" multiple/> | |||
| <CommonUpload name="openPic2" v-model="form.openPic2" accept="image/*" multiple/> | |||
| <van-field | |||
| name="openPic3" | |||
| @@ -48,7 +48,7 @@ | |||
| :border="false" | |||
| > | |||
| </van-field> | |||
| <CommonUpload name="openPic3" v-model="form.openPic3" multiple/> | |||
| <CommonUpload name="openPic3" v-model="form.openPic3" accept="image/*" multiple/> | |||
| <van-field name="remark" v-model="form.remark" label="备注" input-align="left" size="large" :maxlength="255" placeholder="请输入备注"/> | |||
| @@ -69,7 +69,7 @@ | |||
| import FieldDatePicker from "@/components/form/FieldDatePicker.vue"; | |||
| import {Toast} from "vant"; | |||
| export default { | |||
| name: "registrationDetail", | |||
| name: "registrationEdit", | |||
| components: {FieldDatePicker, CommonUpload}, | |||
| data() { | |||
| return { | |||