@@ -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> |