| @@ -84,3 +84,15 @@ export function getCentralSubjects(query) { | |||||
| params: query | params: query | ||||
| }) | }) | ||||
| } | } | ||||
| //检索 | |||||
| export function realtimeBankList(data, dump = true) { | |||||
| return request({ | |||||
| url: '/yinnong/deposit/realtimeList', | |||||
| method: 'post', | |||||
| data: data, | |||||
| params: { | |||||
| dump, | |||||
| } | |||||
| }) | |||||
| } | |||||
| @@ -0,0 +1,216 @@ | |||||
| <!-- 下拉列表表单组件 zhao --> | |||||
| <template> | |||||
| <div> | |||||
| <van-field | |||||
| :readonly="true" | |||||
| :clickable="!readonly" | |||||
| :name="name" | |||||
| :value="visibleValue" | |||||
| :label="label" | |||||
| :placeholder="placeholder" | |||||
| @click="openPopup" | |||||
| input-align="right" | |||||
| right-icon="arrow-down" | |||||
| :rules="rules" | |||||
| :required="required" | |||||
| :label-width="labelWidth || 'auto'" | |||||
| > | |||||
| </van-field> | |||||
| <van-popup v-model="popupVisible" position="bottom"> | |||||
| <van-picker | |||||
| ref="picker" | |||||
| :title="label" | |||||
| show-toolbar | |||||
| :columns="columns ? columns : remoteColumns" | |||||
| :readonly="readonly" | |||||
| :value-key="valueKey" | |||||
| :loading="loading" | |||||
| @confirm="onConfirm" | |||||
| @cancel="onCancel" | |||||
| @change="onChanged" | |||||
| /> | |||||
| </van-popup> | |||||
| </div> | |||||
| </template> | |||||
| <script> | |||||
| import request from "@/utils/request"; | |||||
| export default { | |||||
| name: "fieldCascadeSelect", | |||||
| props: [ | |||||
| 'name', 'readonly', 'value', 'label', 'placeholder', 'required', 'rules', 'labelWidth', | |||||
| 'columns', // 列表数据 Array | |||||
| 'valueKey', // 名称键名 String | |||||
| 'dataKey', // 值键名 String | |||||
| 'remoteUrl', // 远程列表加载地址 String | |||||
| 'onRemoteResponse', // 远程获取到结果的处理回调 String|Function 如果是函数需返回数组, 如果是字符串支持.分割 | |||||
| 'clearable', // 点击取消时清空绑定值 | |||||
| ], | |||||
| watch: { | |||||
| value: function (newVal, oldVal) { | |||||
| this.internalValue = newVal; | |||||
| this.visibleValue = newVal ? newVal.join(' / ') : ''; | |||||
| this.syncIndex(); | |||||
| }, | |||||
| columns: function (newVal, oldVal) { | |||||
| this.syncIndex(); | |||||
| }, | |||||
| remoteUrl: function (newVal, oldVal) { | |||||
| this.requestRemote(); | |||||
| }, | |||||
| onRemoteResponse: function (newVal, oldVal) { | |||||
| this.parseRemote(); | |||||
| } | |||||
| }, | |||||
| created() { | |||||
| if(this.remoteUrl) | |||||
| this.requestRemote(); | |||||
| }, | |||||
| data() { | |||||
| return { | |||||
| popupVisible: false, | |||||
| internalValue: this.value, | |||||
| visibleValue: '', | |||||
| defaultIndex: [], | |||||
| remoteColumns: null, | |||||
| loading: false, | |||||
| remoteResponse: null, | |||||
| }; | |||||
| }, | |||||
| methods: { | |||||
| openPopup() { | |||||
| if(!this.readonly) | |||||
| { | |||||
| this.popupVisible = true; | |||||
| this.$nextTick(() => { | |||||
| this.$refs.picker.setIndexes(this.defaultIndex); | |||||
| }) | |||||
| } | |||||
| }, | |||||
| closePopup() { | |||||
| this.popupVisible = false; | |||||
| }, | |||||
| onChanged(data) { | |||||
| this.$emit('change', data); | |||||
| }, | |||||
| onConfirm(data) { | |||||
| this.syncValue(data); | |||||
| this.$emit('input', this.internalValue); | |||||
| this.$emit('confirm', this.internalValue); | |||||
| this.closePopup(); | |||||
| }, | |||||
| onCancel() { | |||||
| this.closePopup(); | |||||
| this.$emit('cancel'); | |||||
| if(this.clearable) | |||||
| { | |||||
| this.visibleValue = ''; | |||||
| this.internalValue = []; | |||||
| this.$emit('input', this.internalValue); | |||||
| } | |||||
| }, | |||||
| getValue(data) { | |||||
| return typeof(data) === 'object' && this.dataKey ? data[this.dataKey] : data; | |||||
| }, | |||||
| getLabel(data) { | |||||
| return typeof(data) === 'object' && this.valueKey ? data[this.valueKey] : data; | |||||
| }, | |||||
| syncValue(data) { | |||||
| let res = []; | |||||
| for(let a of data) | |||||
| { | |||||
| res.push(this.getValue(a)); | |||||
| } | |||||
| this.internalValue = res; | |||||
| res = []; | |||||
| for(let a of data) | |||||
| { | |||||
| res.push(this.getLabel(a)); | |||||
| } | |||||
| this.visibleValue = res.join(' / '); | |||||
| }, | |||||
| syncIndex() { | |||||
| let columns = this.getColumns(); | |||||
| if(!columns) | |||||
| return -1; | |||||
| let arr = []; | |||||
| let dataArr = []; | |||||
| let ptr = columns; | |||||
| for(let i = 0; i < this.internalValue.length; i++) | |||||
| { | |||||
| if(!ptr) | |||||
| break; | |||||
| let p = null; | |||||
| for(let m = 0; m < ptr.length; m++) | |||||
| { | |||||
| if(this.getValue(ptr[m]) == this.internalValue[i]) { | |||||
| arr.push(m); | |||||
| dataArr.push(ptr[m]); | |||||
| p = ptr[m]; | |||||
| break; | |||||
| } | |||||
| } | |||||
| if(p) | |||||
| ptr = p.children; | |||||
| } | |||||
| if(arr.length) | |||||
| { | |||||
| this.defaultIndex = arr; | |||||
| this.visibleValue = dataArr.map((x) => this.getLabel(x)).join(' / '); | |||||
| this.onChanged(dataArr); | |||||
| return dataArr; | |||||
| } | |||||
| if(1) // 不存在 | |||||
| { | |||||
| this.defaultIndex = []; | |||||
| this.visibleValue = (this.internalValue || []).join(' / '); | |||||
| this.onChanged([]); | |||||
| } | |||||
| return -1; | |||||
| }, | |||||
| getColumns() { | |||||
| return this.columns ? this.columns : this.remoteColumns; | |||||
| }, | |||||
| requestRemote() { | |||||
| if(!this.remoteUrl) | |||||
| return; | |||||
| this.loading = true; | |||||
| this.remoteColumns = []; | |||||
| let promise = typeof(this.remoteUrl) === 'function' ? this.remoteUrl() : (this.remoteUrl instanceof Promise ? this.remoteUrl : request(this.remoteUrl)); | |||||
| promise.then((resp) => { | |||||
| this.remoteResponse = resp; | |||||
| this.parseRemote(); | |||||
| this.syncIndex(); | |||||
| }).catch((e) => { | |||||
| console.error(e); | |||||
| }).finally(() => { | |||||
| this.loading = false; | |||||
| }) | |||||
| }, | |||||
| parseRemote() { | |||||
| if(!this.remoteResponse) | |||||
| return; | |||||
| let type = typeof(this.onRemoteResponse); | |||||
| if(type === 'function') | |||||
| this.remoteColumns = this.onRemoteResponse(this.remoteResponse); | |||||
| else if(type === 'string') | |||||
| { | |||||
| let arr = this.onRemoteResponse.split('.'); | |||||
| let ptr = this.remoteResponse; | |||||
| for(let i in arr) | |||||
| { | |||||
| ptr = this.remoteResponse[arr[i]]; | |||||
| } | |||||
| this.remoteColumns = ptr; | |||||
| } | |||||
| else | |||||
| this.remoteColumns = this.remoteResponse; | |||||
| }, | |||||
| }, | |||||
| } | |||||
| </script> | |||||
| <style scoped> | |||||
| </style> | |||||
| @@ -3759,6 +3759,15 @@ export const constantRoutes = [ | |||||
| }, | }, | ||||
| component: (resolve) => require(['@/views/sunVillage_info/list_multipleLots_detail'], resolve) | component: (resolve) => require(['@/views/sunVillage_info/list_multipleLots_detail'], resolve) | ||||
| }, | }, | ||||
| { ////阳光村务(新)-- 标段合同中的查看标段农户 | |||||
| path: '/sunVillage_info/list_multipleLotsContract_nh', | |||||
| name: 'sunVillageInfoListMultipleLotsContractNh', | |||||
| meta: { | |||||
| title: '标段农户', | |||||
| hidden: true, | |||||
| }, | |||||
| component: (resolve) => require(['@/views/sunVillage_info/list_multipleLotsContract_nh'], resolve) | |||||
| }, | |||||
| { ////阳光村务(新)-- 标段农户网签 | { ////阳光村务(新)-- 标段农户网签 | ||||
| path: '/sunVillage_info/list_multipleLotsNh', | path: '/sunVillage_info/list_multipleLotsNh', | ||||
| name: 'sunVillageInfoListMultipleLotsNh', | name: 'sunVillageInfoListMultipleLotsNh', | ||||
| @@ -18,32 +18,34 @@ | |||||
| <van-form @submit="goModify" @failed="getError" :show-error-message="false" scroll-to-error validate-first> | <van-form @submit="goModify" @failed="getError" :show-error-message="false" scroll-to-error validate-first> | ||||
| <div class="main_box"> | <div class="main_box"> | ||||
| <van-field label="省" required :rules="[{ required: true , message:'请输入省' }]" v-model="form.sheng" placeholder="请输入省" input-align="right" label-width="auto"/> | |||||
| <van-field label="市" required :rules="[{ required: true , message:'请输入市' }]" v-model="form.shi" placeholder="请输入市" input-align="right" label-width="auto"/> | |||||
| <van-field | |||||
| readonly | |||||
| clickable | |||||
| <FieldCascadeSelect :required="true" :rules="[{ required: true , message:'请选择省市' }]" data-key="value" value-key="label" :columns="regionOptions" v-model="form.region" placeholder="请选择开户省市" label="开户省市" label-width="auto" @input="onRegionChanged"/> | |||||
| <FieldSelect | |||||
| label="所属银行" | label="所属银行" | ||||
| placeholder="请选择" | placeholder="请选择" | ||||
| v-model="bankType" | |||||
| @click="showBankType = true" | |||||
| input-align="right" | |||||
| right-icon="arrow-down" | |||||
| v-model="form.bankType" | |||||
| label-width="auto" | label-width="auto" | ||||
| required | |||||
| :required="true" | |||||
| :rules="[{ required: true , message:'请选择所属银行' }]" | :rules="[{ required: true , message:'请选择所属银行' }]" | ||||
| :columns="bankTypeOptions" | |||||
| data-key="dictValue" | |||||
| value-key="dictLabel" | |||||
| /> | /> | ||||
| <van-popup v-model="showBankType" position="bottom"> | |||||
| <van-field label="开户行" required :rules="[{ required: true , message:'请输入开户行' }]" v-model="form.bankDeposit" placeholder="请输入开户行" input-align="right" label-width="auto"> | |||||
| <template #button> | |||||
| <van-button :disabled="!canFetch" size="small" type="primary" native-type="button" @click="searchBankAddress">手动检索</van-button> | |||||
| </template> | |||||
| </van-field> | |||||
| <van-popup v-model:show="showBankAddress" position="bottom"> | |||||
| <van-picker | <van-picker | ||||
| show-toolbar | show-toolbar | ||||
| :columns="bankTypeOptions" | |||||
| @confirm="onConfirmBankType" | |||||
| @cancel="showBankType = false" | |||||
| value-key="bankDeposit" | |||||
| :columns="bankAddressOption" | |||||
| @confirm="onConfirmBankAddress" | |||||
| @cancel="showBankAddress = false" | |||||
| /> | /> | ||||
| </van-popup> | </van-popup> | ||||
| <van-field label="开户行" required :rules="[{ required: true , message:'请输入开户行' }]" v-model="form.bankDeposit" placeholder="请输入开户行" input-align="right" label-width="auto"/> | |||||
| <van-field label="联行号" required :rules="[{ required: true , message:'请输入联行号' }]" v-model="form.payeePaymentLines" placeholder="请输入联行号" input-align="right" label-width="auto"/> | <van-field label="联行号" required :rules="[{ required: true , message:'请输入联行号' }]" v-model="form.payeePaymentLines" placeholder="请输入联行号" input-align="right" label-width="auto"/> | ||||
| <van-field label="机构号" v-model="form.institutionNumber" placeholder="请输入机构号" input-align="right" label-width="auto"/> | <van-field label="机构号" v-model="form.institutionNumber" placeholder="请输入机构号" input-align="right" label-width="auto"/> | ||||
| @@ -62,21 +64,29 @@ | |||||
| <script> | <script> | ||||
| import { addDeposit } from "@/api/onlineHome/bankAgriculture/bankOfDeposit"; | import { addDeposit } from "@/api/onlineHome/bankAgriculture/bankOfDeposit"; | ||||
| import {options} from "@/api/user"; | |||||
| import FieldCascadeSelect from "@/components/form/FieldCascadeSelect"; | |||||
| import {listDeposit, realtimeBankList} from "@/api/onlineHome/bankAgriculture/paymentAccount"; | |||||
| import FieldSelect from "@/components/form/FieldSelect"; | |||||
| export default { | export default { | ||||
| name: "paymentAccountAdd", | name: "paymentAccountAdd", | ||||
| components: {FieldSelect, FieldCascadeSelect}, | |||||
| data() { | data() { | ||||
| return { | return { | ||||
| showBankType:false, | showBankType:false, | ||||
| bankType:'', | bankType:'', | ||||
| // 所属银行字典 | // 所属银行字典 | ||||
| bankTypeOptions: [], | bankTypeOptions: [], | ||||
| showBankAddress: false, | |||||
| bankAddressOption: [], | |||||
| form:{ | form:{ | ||||
| sheng: "", //省 必填 | sheng: "", //省 必填 | ||||
| shi: "", //市 必填 | shi: "", //市 必填 | ||||
| bankType: "", //所属银行 必填 | bankType: "", //所属银行 必填 | ||||
| bankDeposit: "", //开户行 必填 | bankDeposit: "", //开户行 必填 | ||||
| payeePaymentLines: "", //联行号 //必填 | payeePaymentLines: "", //联行号 //必填 | ||||
| } | |||||
| region: [], | |||||
| }, | |||||
| }; | }; | ||||
| }, | }, | ||||
| created() { | created() { | ||||
| @@ -89,9 +99,7 @@ | |||||
| getDetail(){ | getDetail(){ | ||||
| // 所属银行 | // 所属银行 | ||||
| this.getDicts("bank_type_all").then(res => { | this.getDicts("bank_type_all").then(res => { | ||||
| for (var i = 0; i < res.data.length; i++) { | |||||
| this.bankTypeOptions.push({text: res.data[i].dictLabel, value: res.data[i].dictValue}); | |||||
| } | |||||
| this.bankTypeOptions = res.data; | |||||
| }); | }); | ||||
| }, | }, | ||||
| getError(e){ | getError(e){ | ||||
| @@ -114,7 +122,61 @@ | |||||
| }, | }, | ||||
| goBack(){ | goBack(){ | ||||
| window.history.go(-1) | window.history.go(-1) | ||||
| } | |||||
| }, | |||||
| onRegionChanged(val) { | |||||
| val = val || []; | |||||
| this.form.sheng = val.length > 0 ? val[0] : null; | |||||
| this.form.shi = val.length > 1 ? val[1] : null; | |||||
| }, | |||||
| onConfirmBankAddress(value){ | |||||
| this.form.bankAddress = value.bankDeposit; | |||||
| this.form.payeePaymentLines = value.payeePaymentLines; | |||||
| this.form.bankDeposit = value.bankDeposit; | |||||
| this.showBankAddress = false; | |||||
| }, | |||||
| checkFormField(what, desc) { | |||||
| if(!this.form[what]) | |||||
| { | |||||
| this.$toast({ | |||||
| icon: 'fail', | |||||
| message: '请选择' + desc, | |||||
| duration:"1000", | |||||
| }); | |||||
| return false; | |||||
| } | |||||
| return true; | |||||
| }, | |||||
| searchBankAddress(){ | |||||
| if(!this.checkFormField('sheng', '省')) return; | |||||
| if(!this.checkFormField('shi', '市')) return; | |||||
| if(!this.checkFormField('bankType', '所属银行')) return; | |||||
| if(!this.checkFormField('bankDeposit', '关键词')) return; | |||||
| let data = { | |||||
| sheng: this.form.sheng, | |||||
| shi: this.form.shi, | |||||
| bankType: this.form.bankType, | |||||
| bankDeposit: this.form.bankDeposit, | |||||
| } | |||||
| listDeposit(data).then(response => { | |||||
| if (response.rows.length<1){ | |||||
| realtimeBankList(data, false).then(response2 => { | |||||
| this.bankAddressOption = response2.data; | |||||
| this.showBankAddress = true; | |||||
| }); | |||||
| }else{ | |||||
| this.bankAddressOption = response.rows; | |||||
| this.showBankAddress = true; | |||||
| } | |||||
| }); | |||||
| }, | |||||
| }, | |||||
| computed: { | |||||
| regionOptions() { | |||||
| return options; | |||||
| }, | |||||
| canFetch() { | |||||
| return this.form.sheng && this.form.shi && this.form.bankType && this.form.bankDeposit; | |||||
| }, | |||||
| }, | }, | ||||
| } | } | ||||
| </script> | </script> | ||||
| @@ -41,6 +41,10 @@ | |||||
| <img src="../../assets/images/sunVillage_info/signature_icon_02.png" alt="" width="35"> | <img src="../../assets/images/sunVillage_info/signature_icon_02.png" alt="" width="35"> | ||||
| <p>签名</p> | <p>签名</p> | ||||
| </div> | </div> | ||||
| <div class="opera_btn" @click="showMultipleLotsNh(item.id)"> | |||||
| <img src="../../assets/images/sunVillage_info/signature_icon_03.png" alt="" width="35"> | |||||
| <p>查看农户</p> | |||||
| </div> | |||||
| <div class="opera_btn" @click="openPopupFile(item.id)"> | <div class="opera_btn" @click="openPopupFile(item.id)"> | ||||
| <img src="../../assets/images/sunVillage_info/signature_icon_04.png" alt="" width="35"> | <img src="../../assets/images/sunVillage_info/signature_icon_04.png" alt="" width="35"> | ||||
| <p>附件</p> | <p>附件</p> | ||||
| @@ -240,6 +244,12 @@ | |||||
| type: mime | type: mime | ||||
| }) | }) | ||||
| }, | }, | ||||
| showMultipleLotsNh(id) { | |||||
| this.$router.push({ | |||||
| path: '/sunVillage_info/list_multipleLotsContract_nh', | |||||
| query: { id: id } | |||||
| }) | |||||
| }, | |||||
| }, | }, | ||||
| } | } | ||||
| </script> | </script> | ||||
| @@ -0,0 +1,465 @@ | |||||
| <template> | |||||
| <div class="home_wrapper"> | |||||
| <div | |||||
| class="header_main" | |||||
| :style="`background-image:url(${require(showBtn?'@/assets/images/sunVillage_info/list_head.png':'@/assets/images/sunVillage_info/list_head_red.png')})`" | |||||
| > | |||||
| 标段农户 | |||||
| <div class="return_btn" @click="onClickLeft"></div> | |||||
| <!-- <div class="add_btn" @click="goAdd" v-show="showBtn"></div>--> | |||||
| </div> | |||||
| <div class="list_main"> | |||||
| <van-list | |||||
| v-model="loading" | |||||
| :finished="finished" | |||||
| finished-text="没有更多了" | |||||
| @load="getList" | |||||
| > | |||||
| <!----1--> | |||||
| <van-swipe-cell v-for="item in applicationList" :key="item.id" > | |||||
| <div class="item" @click="goDetail(item.id)"> | |||||
| <div class="info"> | |||||
| <div class="title"> | |||||
| <i class="icon_box" v-if="item.secondSigning==null"></i> | |||||
| <i class="icon_box1" v-if="item.secondSigning!=null"></i> | |||||
| <p class="news_title" :style="{'color': item.secondSigning!=null?'#2bc30c':'#eb1616'}">{{item.memberName}}</p> | |||||
| <p class="tips_mark" :style="{'color': item.secondSigning!=null?'#79bc29':'#f8a83d','background': item.secondSigning!=null?'#e8ffcd':'#ffedcd'}">{{item.signingMode}}</p> | |||||
| <p class="tips_mark2" v-if="item.signingMode === '线上'" :style="{'background': item.secondSigning!=null?'#2bc30c':'#eb1616'}">{{item.secondIsSign === '是' ? '已签名' : '未签名'}}</p> | |||||
| </div> | |||||
| <div class="time"> | |||||
| <p :style="{'color': item.secondSigning!=null?'#2bc30c':'#eb1616'}">{{item.idcard}}</p> | |||||
| <p style="color:#eb1616;font-weight: bold;"><span style="font-size: 12px;">¥</span>{{item.logAmount.toFixed(2)}}</p> | |||||
| </div> | |||||
| </div> | |||||
| </div> | |||||
| <template #right> | |||||
| <div class="operation"> | |||||
| <div class="opera_btn" @click="openPopupFile(item.id)"> | |||||
| <img src="../../assets/images/sunVillage_info/signature_icon_04.png" alt="" width="35"> | |||||
| <p>附件</p> | |||||
| </div> | |||||
| </div> | |||||
| </template> | |||||
| </van-swipe-cell> | |||||
| </van-list> | |||||
| </div> | |||||
| <!-- 附件弹出层 --> | |||||
| <van-popup v-model="showFile" round closeable position="bottom" :style="{ height: '30%' }" > | |||||
| <div style="padding: 0 3%;"> | |||||
| <van-divider>附件</van-divider> | |||||
| <van-uploader v-model="fileList" accept="" :after-read="afterRead" @delete="deleteFile" /> <!-- accept=".jpg, .gif, .png, .jpeg, .txt, .pdf, .doc, .docx, .xls, .xlsx" --> | |||||
| </div> | |||||
| </van-popup> | |||||
| </div> | |||||
| </template> | |||||
| <script> | |||||
| import { listMultipleLotsNh, multipleLotsSecondSign, attachmentQuery, attachmentUpload, attachmentRemove } from "@/api/sunVillage_info/fixedAssets"; | |||||
| import vueEsign from "vue-esign"; | |||||
| import signatureUploadSignature from "@/views/yinnong/signatureUploadSignature"; | |||||
| import $ from "jquery"; | |||||
| import Cookies from "js-cookie"; | |||||
| export default { | |||||
| name: "sunVillageInfoListMultipleLotsContractNh", | |||||
| components: {vueEsign, signatureUploadSignature}, | |||||
| data() { | |||||
| return { | |||||
| applicationList: [], | |||||
| loading: false, | |||||
| finished: false, | |||||
| show: false, | |||||
| showFile: false, | |||||
| fileList: [], | |||||
| listLength: '0', | |||||
| queryParams: { | |||||
| pageNum: 1, | |||||
| pageSize: 10, | |||||
| multiplelotsId: null, | |||||
| translate_dict: 1, | |||||
| }, | |||||
| showBtn: true, | |||||
| signaId: '', | |||||
| height: null | |||||
| }; | |||||
| }, | |||||
| created() { | |||||
| this.height = window.screen.height * 1.28 - 20; | |||||
| this.queryParams.multiplelotsId = this.$route.query.id; | |||||
| }, | |||||
| methods: { | |||||
| getList() { | |||||
| listMultipleLotsNh(this.queryParams).then(response => { | |||||
| response.rows.forEach(item => { | |||||
| this.applicationList.push(item); | |||||
| }); | |||||
| if (this.applicationList.length >= response.total) { | |||||
| this.finished = true; | |||||
| return; | |||||
| } else { | |||||
| this.loading = false; | |||||
| this.queryParams.pageNum += 1; | |||||
| } | |||||
| }); | |||||
| }, | |||||
| goDetail(id) { | |||||
| this.$router.push({ | |||||
| path: '/sunVillage_info/list_multipleLotsNh_detail', | |||||
| query: { id: id } | |||||
| }) | |||||
| }, | |||||
| openPopupFile(id){ | |||||
| this.fileList = []; | |||||
| this.signaId = id; | |||||
| this.showFile = true; | |||||
| let queryParams = { | |||||
| tableId: id, | |||||
| tableName: 't_transaction_multiplelotsnh', | |||||
| }; | |||||
| attachmentQuery(queryParams).then(response => { | |||||
| response.rows.map(res => { | |||||
| // let baseUrl = location.protocol+"//"+location.host+request.defaults.baseURL | |||||
| this.fileList.push({ | |||||
| url: '/api'+res.fileUrl, | |||||
| file: new File([], res.fileName,{}), | |||||
| id: res.id | |||||
| }); | |||||
| }) | |||||
| }); | |||||
| }, | |||||
| afterRead(file) { | |||||
| // 此时可以自行将文件上传至服务器 | |||||
| let params = new FormData(); | |||||
| params.append("tableId", this.signaId); | |||||
| params.append("tableName", "t_transaction_multiplelotsnh"); | |||||
| params.append("bizPath", "transaction"); | |||||
| params.append("fileType", '0'); | |||||
| params.append("file", file.file); | |||||
| params.append("userName", JSON.parse(Cookies.get('user')).memberName); | |||||
| attachmentUpload(params).then(response => { | |||||
| this.$notify({ type: 'success', message: '上传成功' }); | |||||
| let newFile = this.fileList[this.fileList.length - 1]; | |||||
| this.$set(newFile, 'id', response.id); | |||||
| }); | |||||
| }, | |||||
| deleteFile(file){ | |||||
| attachmentRemove(file.id).then(res => { | |||||
| this.$notify({ type: 'success', message: '删除成功' }); | |||||
| }); | |||||
| }, | |||||
| }, | |||||
| } | |||||
| </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; | |||||
| } | |||||
| } | |||||
| .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: 0 22px; | |||||
| margin-top: 15PX; | |||||
| .item { | |||||
| border-radius: 30px; | |||||
| background: #fff; | |||||
| box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1); | |||||
| padding: 25px 32px; | |||||
| margin-bottom: 20px; | |||||
| .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/signature_icon_01.png') no-repeat; | |||||
| background-size: 100% 100%; | |||||
| margin-right: 10px; | |||||
| flex-shrink: 0; | |||||
| } | |||||
| .icon_box1 { | |||||
| width: 34px; | |||||
| display: block; | |||||
| height: 30px; | |||||
| background: url('../../assets/images/sunVillage_info/signature_icon_01g.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 { | |||||
| background: #ffedcd; | |||||
| border-radius: 8px; | |||||
| font-size: 24px; | |||||
| color: #f8a83d; | |||||
| text-align: center; | |||||
| line-height: 34px; | |||||
| flex-shrink: 0; | |||||
| padding: 0 5Px; | |||||
| margin-left: auto; | |||||
| } | |||||
| .tips_mark2 { | |||||
| background: #eb1616; | |||||
| border-radius: 8px; | |||||
| font-size: 24px; | |||||
| color: #ffffff; | |||||
| text-align: center; | |||||
| line-height: 34px; | |||||
| flex-shrink: 0; | |||||
| padding: 0 5Px; | |||||
| margin-left: 10PX; | |||||
| } | |||||
| } | |||||
| .time { | |||||
| font-size: 16PX; | |||||
| color: #333333; | |||||
| display: flex; | |||||
| align-items: center; | |||||
| margin-top: 5PX; | |||||
| justify-content: space-between; | |||||
| .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: center; | |||||
| border-radius: 30px; | |||||
| background: #fff; | |||||
| box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1); | |||||
| height: 100%; | |||||
| padding: 0 15Px; | |||||
| margin-left: 10PX; | |||||
| .opera_btn { | |||||
| border-radius: 50%; | |||||
| padding: 0 10px; | |||||
| &.delete { | |||||
| background: #df0707; | |||||
| margin-left: 10PX; | |||||
| .icon { | |||||
| width: 22PX; | |||||
| height: 29PX; | |||||
| background: url('../../assets/images/sunVillage_info/signature_icon_03.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/signature_icon_02.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/signature_icon_04.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; | |||||
| } | |||||
| } | |||||
| .signature-box { | |||||
| border: 1px dashed #666; | |||||
| margin: 2px 20px; | |||||
| height: 100%; | |||||
| /*canvas{*/ | |||||
| /* height: 100%!important;*/ | |||||
| /*}*/ | |||||
| } | |||||
| .signature-footer { | |||||
| transform: rotate(90deg); | |||||
| width: auto; | |||||
| position: absolute; | |||||
| top: 50%; | |||||
| left: 0PX; | |||||
| .clearBtn { | |||||
| margin-left: 15px; | |||||
| } | |||||
| } | |||||
| .esigh-result { | |||||
| margin: 15px 20px; | |||||
| // height: 110px; | |||||
| border: 1px solid #666; | |||||
| font-size: 0; | |||||
| .imgs { | |||||
| width: 100%; | |||||
| } | |||||
| } | |||||
| } | |||||
| </style> | |||||