| @@ -84,3 +84,15 @@ export function getCentralSubjects(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) | |||
| }, | |||
| { ////阳光村务(新)-- 标段合同中的查看标段农户 | |||
| 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', | |||
| name: 'sunVillageInfoListMultipleLotsNh', | |||
| @@ -18,32 +18,34 @@ | |||
| <van-form @submit="goModify" @failed="getError" :show-error-message="false" scroll-to-error validate-first> | |||
| <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="所属银行" | |||
| placeholder="请选择" | |||
| v-model="bankType" | |||
| @click="showBankType = true" | |||
| input-align="right" | |||
| right-icon="arrow-down" | |||
| v-model="form.bankType" | |||
| label-width="auto" | |||
| required | |||
| :required="true" | |||
| :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 | |||
| show-toolbar | |||
| :columns="bankTypeOptions" | |||
| @confirm="onConfirmBankType" | |||
| @cancel="showBankType = false" | |||
| value-key="bankDeposit" | |||
| :columns="bankAddressOption" | |||
| @confirm="onConfirmBankAddress" | |||
| @cancel="showBankAddress = false" | |||
| /> | |||
| </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="机构号" v-model="form.institutionNumber" placeholder="请输入机构号" input-align="right" label-width="auto"/> | |||
| @@ -62,21 +64,29 @@ | |||
| <script> | |||
| 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 { | |||
| name: "paymentAccountAdd", | |||
| components: {FieldSelect, FieldCascadeSelect}, | |||
| data() { | |||
| return { | |||
| showBankType:false, | |||
| bankType:'', | |||
| // 所属银行字典 | |||
| bankTypeOptions: [], | |||
| showBankAddress: false, | |||
| bankAddressOption: [], | |||
| form:{ | |||
| sheng: "", //省 必填 | |||
| shi: "", //市 必填 | |||
| bankType: "", //所属银行 必填 | |||
| bankDeposit: "", //开户行 必填 | |||
| payeePaymentLines: "", //联行号 //必填 | |||
| } | |||
| region: [], | |||
| }, | |||
| }; | |||
| }, | |||
| created() { | |||
| @@ -89,9 +99,7 @@ | |||
| getDetail(){ | |||
| // 所属银行 | |||
| 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){ | |||
| @@ -114,7 +122,61 @@ | |||
| }, | |||
| goBack(){ | |||
| 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> | |||
| @@ -41,6 +41,10 @@ | |||
| <img src="../../assets/images/sunVillage_info/signature_icon_02.png" alt="" width="35"> | |||
| <p>签名</p> | |||
| </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)"> | |||
| <img src="../../assets/images/sunVillage_info/signature_icon_04.png" alt="" width="35"> | |||
| <p>附件</p> | |||
| @@ -240,6 +244,12 @@ | |||
| type: mime | |||
| }) | |||
| }, | |||
| showMultipleLotsNh(id) { | |||
| this.$router.push({ | |||
| path: '/sunVillage_info/list_multipleLotsContract_nh', | |||
| query: { id: id } | |||
| }) | |||
| }, | |||
| }, | |||
| } | |||
| </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> | |||