Browse Source

Task 零工

master
zhaodengke 8 months ago
parent
commit
9d49ff293e
12 changed files with 903 additions and 265 deletions
  1. +160
    -0
      src/components/form/CommonUpload.vue
  2. +3
    -0
      src/components/form/FieldDatePicker.vue
  3. +18
    -0
      src/router/index.js
  4. +9
    -1
      src/views/sunVillage_info/list_tourists.vue
  5. +3
    -80
      src/views/sunVillage_info/list_tourists_add.vue
  6. +30
    -37
      src/views/sunVillage_info/list_tourists_detail.vue
  7. +2
    -94
      src/views/sunVillage_info/list_tourists_edit.vue
  8. +14
    -4
      src/views/sunVillage_info/list_tourists_ranking.vue
  9. +151
    -8
      src/views/sunVillage_info/list_tourists_registration.vue
  10. +95
    -41
      src/views/sunVillage_info/list_tourists_registration_add.vue
  11. +188
    -0
      src/views/sunVillage_info/list_tourists_registration_detail.vue
  12. +230
    -0
      src/views/sunVillage_info/list_tourists_registration_edit.vue

+ 160
- 0
src/components/form/CommonUpload.vue View File

@@ -0,0 +1,160 @@
<!-- 通用上传组件 zhao -->

<template>
<van-uploader
v-model="fileList"
:multiple="multiple"
:after-read="afterRead"
:show-upload="showUpload"
:deletable="deletable"
@delete="deleteFile"
:accept="accept || null"
/>
</template>

<script>

import {commonUpload} from "@/api/sunVillage_info/fixedAssets";

export default {
name: "commonUpload",
props: {
name: String,
value: { // 绑定值 字符串 ,分隔 可监听
type: String,
default: null,
},
accept: { // 上传类型限制: 默认图片, * = 任意类型
type: String,
},
multiple: { // 多文件上传
type: Boolean,
default: false,
},
deletable: { // 允许删除
type: Boolean,
default: true,
},
showUpload: { // 显示上传按钮
type: Boolean,
default: true,
},
formData: { // 额外请求参数
type: Object,
default: function() {
return {};
},
},
file: { // 上传文件字段名
type: String,
default: 'file',
},
host: {
type: String, // 文件地址前缀
default: '/api',
},
},
watch: {
value: function (newVal, oldVal) {
if(newVal != this.internalValue)
this.setInternalValue(newVal);
},
},
created() {
this.parseValue(this.value);
},
data() {
return {
internalValue: this.value,
fileList: [],
pathList: [],
};
},
methods: {
setInternalValue(newVal) {
this.parseValue(newVal);
this.internalValue = newVal;
},
parseValue(data) {
if(data)
{
this.pathList = data.split(',');
}
else
{
this.pathList = [];
}
this.fileList = this.pathList.map((x) => {
return {
url: this.host + x,
};
});
},
makeFormData() {
let fd = new FormData();
if(this.formData)
{
for(let k of Object.keys(this.formData))
{
fd.set(k, this.formData[k]);
}
}
return fd;
},
upload(file) {
let params1 = this.makeFormData();
params1.append(this.file, file.file);
return commonUpload(params1).then((resp) => {
this.pathList.push(resp.fileName);
this.updateInternalValue();
this.$emit('upload', resp.fileName);
});
},
afterRead(file) {
this.$toast.loading({
message: "上传中...",
forbidClick: true,
duration: 0,
});
// 此时可以自行将文件上传至服务器
if (file instanceof Array) {//判断是否为数组,单张图片为array,多张为数组,数组返回true否则为false
if(file.length > 0)
{
let index = 0;
const f = () => {
if(index >= file.length)
return;
let up = file[index];
//console.log(up);
console.log(`上传文件: ${index} -> ${up.file.name}`);
this.upload(up).then(() => {
index++;
if(index < file.length)
f();
});
};
f();
}
} else {
this.upload(file);
}
},
deleteFile(detail){
this.pathList.splice(detail.index,1);
this.updateInternalValue();
this.$emit('remove', detail.index);
},
updateInternalValue() {
let files = this.pathList.join(',');
console.log(files);
this.internalValue = files;
if(this.internalValue != this.value)
this.$emit('input', this.internalValue);
},
},
}
</script>

<style scoped>

</style>

+ 3
- 0
src/components/form/FieldDatePicker.vue View File

@@ -41,6 +41,8 @@
:type="type || 'date'" :type="type || 'date'"
:readonly="readonly" :readonly="readonly"
:title="label || ''" :title="label || ''"
:min-date="minDate"
:max-date="maxDate"
@confirm="onConfirm" @confirm="onConfirm"
@cancel="onCancel" @cancel="onCancel"
@change="onChanged" @change="onChanged"
@@ -62,6 +64,7 @@ export default {
'formatter', // value的格式化 String|Function|undefined 字符串为格式字符串, 函数则必须有返回 undefined则不转换 'formatter', // value的格式化 String|Function|undefined 字符串为格式字符串, 函数则必须有返回 undefined则不转换
'clearable', // 点击取消时清空绑定值 'clearable', // 点击取消时清空绑定值
'yearRangeLength', // type === 'year' 时生成的年份数量范围 [YEAR - yearRangeLength, YEAR + yearRangeLength] 'yearRangeLength', // type === 'year' 时生成的年份数量范围 [YEAR - yearRangeLength, YEAR + yearRangeLength]
'minDate', 'maxDate'
], ],
watch: { watch: {
value: function (newVal, oldVal) { value: function (newVal, oldVal) {


+ 18
- 0
src/router/index.js View File

@@ -3597,6 +3597,24 @@ export const constantRoutes = [
}, },
component: (resolve) => require(['@/views/sunVillage_info/list_tourists_registration_add'], resolve) component: (resolve) => require(['@/views/sunVillage_info/list_tourists_registration_add'], resolve)
}, },
{ ////阳光村务(新)-- 零工登记详情
path: '/sunVillage_info/list_tourists_registration_detail',
name: 'sunVillageInfoListTouristsRegistrationDetail',
meta: {
title: '查看零工登记',
hidden: true,
},
component: (resolve) => require(['@/views/sunVillage_info/list_tourists_registration_detail'], resolve)
},
{ ////阳光村务(新)-- 零工登记修改
path: '/sunVillage_info/list_tourists_registration_edit',
name: 'sunVillageInfoListTouristsRegistrationEdit',
meta: {
title: '修改零工登记',
hidden: true,
},
component: (resolve) => require(['@/views/sunVillage_info/list_tourists_registration_edit'], resolve)
},
{ ////阳光村务(新)-- 合同信息 { ////阳光村务(新)-- 合同信息
path: '/sunVillage_info/list_register', path: '/sunVillage_info/list_register',
name: 'sunVillageInfoListRegister', name: 'sunVillageInfoListRegister',


+ 9
- 1
src/views/sunVillage_info/list_tourists.vue View File

@@ -53,6 +53,14 @@
<i class="icon "></i> <i class="icon "></i>
</div> </div>
</div> </div>
<div class="operation" v-if="!showBtn">
<div class="opera_btn list" @click="goRanking(item.id,item.openNy)">
<i class="icon "></i>
</div>
<div class="opera_btn view" @click="goDetail(item.id)">
<i class="icon "></i>
</div>
</div>
</div> </div>
</van-list> </van-list>
</div> </div>
@@ -93,7 +101,7 @@
projectIndex:'', projectIndex:'',
showBtn:true, showBtn:true,
nowYear:new Date().getFullYear(), nowYear:new Date().getFullYear(),
yearList:[]
yearList:[],
}; };
}, },
created() { created() {


+ 3
- 80
src/views/sunVillage_info/list_tourists_add.vue View File

@@ -46,27 +46,12 @@
<van-field readonly input-align="right" :border="false" > <van-field readonly input-align="right" :border="false" >
<template #label> <template #label>
<img src="../../assets/images/sunVillage_info/add_tit_icon_03.png" width="18"> <img src="../../assets/images/sunVillage_info/add_tit_icon_03.png" width="18">
<p style="margin-left: 5px;">事前公开</p>
<p style="margin-left: 5px;">公开图片</p>
</template> </template>
</van-field> </van-field>
<!-- @delete="deleteFile1"--> <!-- @delete="deleteFile1"-->
<van-uploader v-model="fileList" multiple :after-read="afterRead" @delete="deleteFile1" style="margin-top: 10PX" /> <van-uploader v-model="fileList" multiple :after-read="afterRead" @delete="deleteFile1" style="margin-top: 10PX" />
<van-field readonly input-align="right" :border="false" >
<template #label>
<img src="../../assets/images/sunVillage_info/add_tit_icon_03.png" width="18">
<p style="margin-left: 5px;">事中公开</p>
</template>
</van-field>
<!-- @delete="deleteFile1"-->
<van-uploader v-model="fileList2" multiple :after-read="afterRead2" @delete="deleteFile2" style="margin-top: 10PX" />
<van-field readonly input-align="right" :border="false" >
<template #label>
<img src="../../assets/images/sunVillage_info/add_tit_icon_03.png" width="18">
<p style="margin-left: 5px;">事后公开</p>
</template>
</van-field>
<!-- @delete="deleteFile1"-->
<van-uploader v-model="fileList3" multiple :after-read="afterRead3" @delete="deleteFile3" style="margin-top: 10PX" />

<div style="border-top: 1px solid #ededed;margin-top: 10PX;"> <div style="border-top: 1px solid #ededed;margin-top: 10PX;">
<van-field readonly input-align="right" :border="false" > <van-field readonly input-align="right" :border="false" >
<template #label> <template #label>
@@ -117,15 +102,11 @@
form:{ form:{
openNy:this.format(new Date(),'yyyy-MM'), openNy:this.format(new Date(),'yyyy-MM'),
openPic:'', openPic:'',
openPic2:'',
openPic3:'',
openFile:'', openFile:'',
openName:this.format(new Date(),'yyyy')+ '年' + (this.format(new Date(),'MM')-1) + '月零工公开' openName:this.format(new Date(),'yyyy')+ '年' + (this.format(new Date(),'MM')-1) + '月零工公开'
}, },
openPic:[],
fileList:[], fileList:[],
fileList1:[],
fileList2:[],
fileList3:[],
openNy:new Date(), openNy:new Date(),
type:'', type:'',
openFile:[], openFile:[],
@@ -136,8 +117,6 @@
}, },
openFile2:[], openFile2:[],
openPic2:[], openPic2:[],
openPic3:[],
openPic4:[],
}; };
}, },
created() { created() {
@@ -159,8 +138,6 @@
var that = this; var that = this;
that.form.openFile = that.openFile2.join(',') that.form.openFile = that.openFile2.join(',')
that.form.openPic = that.openPic2.join(',') that.form.openPic = that.openPic2.join(',')
that.form.openPic2 = that.openPic3.join(',')
that.form.openPic3 = that.openPic4.join(',')
tempWorkerOpenAdd(that.form).then((r1) => { tempWorkerOpenAdd(that.form).then((r1) => {
if (r1.code == 200){ if (r1.code == 200){
that.$notify({ type: 'success', message: '新增成功' }); that.$notify({ type: 'success', message: '新增成功' });
@@ -179,14 +156,6 @@
this.openPic2.splice(detail.index,1) this.openPic2.splice(detail.index,1)
// this.form.openPic.splice(index,1); // this.form.openPic.splice(index,1);
}, },
deleteFile2(detail){
this.openPic3.splice(detail.index,1)
// this.form.openPic.splice(index,1);
},
deleteFile3(detail){
this.openPic4.splice(detail.index,1)
// this.form.openPic.splice(index,1);
},
deleteWord(index){ deleteWord(index){
this.openFileList.splice(index,1); this.openFileList.splice(index,1);
this.openFile2.splice(index,1); this.openFile2.splice(index,1);
@@ -214,52 +183,6 @@
}) })
} }
}, },
afterRead2(file) {
this.$toast.loading({
message: "上传中...",
forbidClick: true,
duration: 0,
});
// 此时可以自行将文件上传至服务器
if (file instanceof Array){//判断是否为数组,单张图片为array,多张为数组,数组返回true否则为false
file.map(res=>{
let params1 = new FormData();
params1.append("file", res.file);
commonUpload(params1).then((r1) => {
this.openPic3.push(r1.fileName);
})
})
}else{
let params1 = new FormData();
params1.append("file", file.file);
commonUpload(params1).then((r1) => {
this.openPic3.push(r1.fileName);
})
}
},
afterRead3(file) {
this.$toast.loading({
message: "上传中...",
forbidClick: true,
duration: 0,
});
// 此时可以自行将文件上传至服务器
if (file instanceof Array){//判断是否为数组,单张图片为array,多张为数组,数组返回true否则为false
file.map(res=>{
let params1 = new FormData();
params1.append("file", res.file);
commonUpload(params1).then((r1) => {
this.openPic4.push(r1.fileName);
})
})
}else{
let params1 = new FormData();
params1.append("file", file.file);
commonUpload(params1).then((r1) => {
this.openPic4.push(r1.fileName);
})
}
},
afterReadOpenFile(file){ afterReadOpenFile(file){
this.$toast.loading({ this.$toast.loading({
message: "上传中...", message: "上传中...",


+ 30
- 37
src/views/sunVillage_info/list_tourists_detail.vue View File

@@ -36,29 +36,12 @@
<van-field readonly input-align="right" :border="false" > <van-field readonly input-align="right" :border="false" >
<template #label> <template #label>
<img src="../../assets/images/sunVillage_info/add_tit_icon_03.png" width="18"> <img src="../../assets/images/sunVillage_info/add_tit_icon_03.png" width="18">
<p style="margin-left: 5px;">事前公开</p>
<p style="margin-left: 5px;">公开图片</p>
</template> </template>
</van-field> </van-field>
<!-- @delete="deleteFile1"--> <!-- @delete="deleteFile1"-->
<van-uploader v-model="openPic" :show-upload="false" :deletable="false" multiple style="margin-top: 10PX" /> <van-uploader v-model="openPic" :show-upload="false" :deletable="false" multiple style="margin-top: 10PX" />


<van-field readonly input-align="right" :border="false" >
<template #label>
<img src="../../assets/images/sunVillage_info/add_tit_icon_03.png" width="18">
<p style="margin-left: 5px;">事中公开</p>
</template>
</van-field>
<!-- @delete="deleteFile1"-->
<van-uploader v-model="openPic2" :show-upload="false" :deletable="false" multiple style="margin-top: 10PX" />

<van-field readonly input-align="right" :border="false" >
<template #label>
<img src="../../assets/images/sunVillage_info/add_tit_icon_03.png" width="18">
<p style="margin-left: 5px;">事后公开</p>
</template>
</van-field>
<!-- @delete="deleteFile1"-->
<van-uploader v-model="openPic3" :show-upload="false" :deletable="false" multiple style="margin-top: 10PX" />
<div style="border-top: 1px solid #ededed;margin-top: 10PX;"> <div style="border-top: 1px solid #ededed;margin-top: 10PX;">
<van-field readonly input-align="right" :border="false" > <van-field readonly input-align="right" :border="false" >
<template #label> <template #label>
@@ -71,7 +54,8 @@
<div v-for="(item,index) in openFileList" :key="index" style="display: flex;align-items: center;margin-top: 10px;"> <div v-for="(item,index) in openFileList" :key="index" style="display: flex;align-items: center;margin-top: 10px;">
<img src="../../assets/images/sunVillage_info/WORD.png" width="30" v-if="item.type == 'word'"/> <img src="../../assets/images/sunVillage_info/WORD.png" width="30" v-if="item.type == 'word'"/>
<img src="../../assets/images/sunVillage_info/ECEL.png" width="30" v-if="item.type == 'excel'" /> <img src="../../assets/images/sunVillage_info/ECEL.png" width="30" v-if="item.type == 'excel'" />
<a :href="item.url" style="margin-left: 10px;color: #333333">{{item.name}}</a>
<a v-if="item.type == 'word' || item.type == 'excel'" :href="item.url" style="margin-left: 10px;color: #333333">{{item.name}}</a>
<p v-else @click="goToPage(item.url)" style="margin-left: 10px;color: #333333">{{item.name}}</p>
</div> </div>
</div> </div>
</div> </div>
@@ -83,7 +67,11 @@
</van-field> </van-field>


</div> </div>

<van-dialog v-model:show="fjImgShow" title="附件" :show-confirm-button="false" show-cancel-button cancelButtonText="关闭" >
<div style="width: 100%;height: 400px;overflow:scroll;">
<img :src="fjImg" width="95%"/>
</div>
</van-dialog>
</div> </div>
</template> </template>


@@ -99,13 +87,11 @@
form:{ form:{
openNy:this.format(new Date(),'yyyy-MM'), openNy:this.format(new Date(),'yyyy-MM'),
openPic:'', openPic:'',
openPic2:'',
openPic3:'',
openFile:'', openFile:'',
}, },
fjImg:'',
fjImgShow:false,
openPic:[], openPic:[],
openPic2:[],
openPic3:[],
fileList:[], fileList:[],
fileList1:[], fileList1:[],
openNy:new Date(), openNy:new Date(),
@@ -158,22 +144,29 @@
this.openPic.push({url:'/api'+rrr}) this.openPic.push({url:'/api'+rrr})
}) })
} }
if (res.data.openPic2 !='' && res.data.openPic2 != null && res.data.openPic2 != undefined){
res.data.openPic2 = res.data.openPic2.split(',')
res.data.openPic2.map((rrr,i)=>{
this.openPic2.push({url:'/api'+rrr})
})
}
if (res.data.openPic3 !='' && res.data.openPic3 != null && res.data.openPic3 != undefined){
res.data.openPic3 = res.data.openPic3.split(',')
res.data.openPic3.map((rrr,i)=>{
this.openPic3.push({url:'/api'+rrr})
})
}
this.form = res.data; this.form = res.data;
}) })
}, },

goToPage(url) {
const baseImgUrl = this.$store.getters.baseRoutingUrl;
let subIndex = url.lastIndexOf(".");
let ext = url.substring(subIndex + 1, url.length);
//console.log(ext)
if (ext == "jpg" || ext == "png") {
url = url.substring(4,url.length);
this.fjImg = baseImgUrl + url;
this.fjImgShow = true;
}else{
let allUrl = url;
const link = document.createElement("a");
link.style.display = "none";
link.target = "_blank"
link.href = allUrl;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
},
}, },
} }
</script> </script>


+ 2
- 94
src/views/sunVillage_info/list_tourists_edit.vue View File

@@ -46,29 +46,12 @@
<van-field readonly input-align="right" :border="false" > <van-field readonly input-align="right" :border="false" >
<template #label> <template #label>
<img src="../../assets/images/sunVillage_info/add_tit_icon_03.png" width="18"> <img src="../../assets/images/sunVillage_info/add_tit_icon_03.png" width="18">
<p style="margin-left: 5px;">事前公开</p>
<p style="margin-left: 5px;">公开图片</p>
</template> </template>
</van-field> </van-field>
<!-- @delete="deleteFile1"--> <!-- @delete="deleteFile1"-->
<van-uploader v-model="openPic" multiple :after-read="afterRead" @delete="deleteFile1" style="margin-top: 10PX" /> <van-uploader v-model="openPic" multiple :after-read="afterRead" @delete="deleteFile1" style="margin-top: 10PX" />


<van-field readonly input-align="right" :border="false" >
<template #label>
<img src="../../assets/images/sunVillage_info/add_tit_icon_03.png" width="18">
<p style="margin-left: 5px;">事中公开</p>
</template>
</van-field>
<!-- @delete="deleteFile1"-->
<van-uploader v-model="openPicsz" multiple :after-read="afterRead2" @delete="deleteFile2" style="margin-top: 10PX" />

<van-field readonly input-align="right" :border="false" >
<template #label>
<img src="../../assets/images/sunVillage_info/add_tit_icon_03.png" width="18">
<p style="margin-left: 5px;">事后公开</p>
</template>
</van-field>
<!-- @delete="deleteFile1"-->
<van-uploader v-model="openPicsh" multiple :after-read="afterRead3" @delete="deleteFile3" style="margin-top: 10PX" />
<div style="border-top: 1px solid #ededed;margin-top: 10PX;"> <div style="border-top: 1px solid #ededed;margin-top: 10PX;">
<van-field readonly input-align="right" :border="false" > <van-field readonly input-align="right" :border="false" >
<template #label> <template #label>
@@ -119,13 +102,9 @@
form:{ form:{
openNy:this.format(new Date(),'yyyy-MM'), openNy:this.format(new Date(),'yyyy-MM'),
openPic:'', openPic:'',
openPic2:'',
openPic3:'',
openFile:'', openFile:'',
}, },
openPic:[], openPic:[],
openPicsz:[],
openPicsh:[],
fileList:[], fileList:[],
fileList1:[], fileList1:[],
openNy:new Date(), openNy:new Date(),
@@ -138,8 +117,6 @@
deptId:'' deptId:''
}, },
openPic2:[], openPic2:[],
openPic3:[],
openPic4:[],
openFile2:[] openFile2:[]
}; };
}, },
@@ -184,20 +161,6 @@
this.openPic[i] = {url:'/api'+rrr} this.openPic[i] = {url:'/api'+rrr}
}) })
} }
if (res.data.openPic2!='' && res.data.openPic2 != null && res.data.openPic2 != undefined){
this.openPicsz = res.data.openPic2.split(',')
this.openPic3 = res.data.openPic2.split(',')
this.openPicsz.map((rrr,i)=>{
this.openPicsz[i] = {url:'/api'+rrr}
})
}
if (res.data.openPic3!='' && res.data.openPic3 != null && res.data.openPic3 != undefined){
this.openPicsh = res.data.openPic3.split(',')
this.openPic4 = res.data.openPic3.split(',')
this.openPicsh.map((rrr,i)=>{
this.openPicsh[i] = {url:'/api'+rrr}
})
}
that.form = res.data; that.form = res.data;
}) })
}, },
@@ -205,8 +168,6 @@
var that = this; var that = this;
that.form.openFile = that.openFile2.join(',') that.form.openFile = that.openFile2.join(',')
that.form.openPic = that.openPic2.join(',') that.form.openPic = that.openPic2.join(',')
that.form.openPic2 = that.openPic3.join(',')
that.form.openPic3 = that.openPic4.join(',')
tempWorkerOpenEdit(that.form).then((r1) => { tempWorkerOpenEdit(that.form).then((r1) => {
if (r1.code == 200){ if (r1.code == 200){
that.$notify({ type: 'success', message: '修改成功' }); that.$notify({ type: 'success', message: '修改成功' });
@@ -222,16 +183,9 @@
this.showBuildTime = false; this.showBuildTime = false;
}, },
deleteFile1(file,detail){ deleteFile1(file,detail){
console.log(detail)
//console.log(detail)
this.openPic2.splice(detail.index,1) this.openPic2.splice(detail.index,1)
}, },
deleteFile2(file,detail){
console.log(detail)
this.openPic3.splice(detail.index,1)
},
deleteFile3(file,detail){
this.openPic4.splice(detail.index,1)
},
deleteWord(index){ deleteWord(index){
this.openFile.splice(index,1); this.openFile.splice(index,1);
this.openFile2.splice(index,1); this.openFile2.splice(index,1);
@@ -259,52 +213,6 @@
}) })
} }
}, },
afterRead2(file) {
this.$toast.loading({
message: "上传中...",
forbidClick: true,
duration: 0,
});
// 此时可以自行将文件上传至服务器
if (file instanceof Array){//判断是否为数组,单张图片为array,多张为数组,数组返回true否则为false
file.map(res=>{
let params1 = new FormData();
params1.append("file", res.file);
commonUpload(params1).then((r1) => {
this.openPic3.push(r1.fileName);
})
})
}else{
let params1 = new FormData();
params1.append("file", file.file);
commonUpload(params1).then((r1) => {
this.openPic3.push(r1.fileName);
})
}
},
afterRead3(file) {
this.$toast.loading({
message: "上传中...",
forbidClick: true,
duration: 0,
});
// 此时可以自行将文件上传至服务器
if (file instanceof Array){//判断是否为数组,单张图片为array,多张为数组,数组返回true否则为false
file.map(res=>{
let params1 = new FormData();
params1.append("file", res.file);
commonUpload(params1).then((r1) => {
this.openPic4.push(r1.fileName);
})
})
}else{
let params1 = new FormData();
params1.append("file", file.file);
commonUpload(params1).then((r1) => {
this.openPic4.push(r1.fileName);
})
}
},
afterReadOpenFile(file){ afterReadOpenFile(file){
this.$toast.loading({ this.$toast.loading({
message: "上传中...", message: "上传中...",


+ 14
- 4
src/views/sunVillage_info/list_tourists_ranking.vue View File

@@ -25,7 +25,7 @@
<van-row> <van-row>
<van-col :span="24">姓名</van-col> <van-col :span="24">姓名</van-col>
</van-row> </van-row>
<van-row v-for="(item,index) in applicationList" :key="index">
<van-row v-for="(item,index) in applicationList" :key="index" @click.prevent ="viewItem(item.id)">
<van-col :span="24">{{item.workerName}}</van-col> <van-col :span="24">{{item.workerName}}</van-col>
</van-row> </van-row>
<div class="name_bg"></div> <div class="name_bg"></div>
@@ -41,7 +41,7 @@
<van-col :span="5">工日值</van-col> <van-col :span="5">工日值</van-col>
<van-col :span="4">金额(元)</van-col> <van-col :span="4">金额(元)</van-col>
</van-row> </van-row>
<van-row v-for="(item,index) in applicationList" :key="index">
<van-row v-for="(item,index) in applicationList" :key="index" @click="viewItem(item.id)">
<van-col :span="5">{{item.workReason}}</van-col> <van-col :span="5">{{item.workReason}}</van-col>
<van-col :span="5">{{item.workerNote}}</van-col> <van-col :span="5">{{item.workerNote}}</van-col>
<van-col :span="5">{{item.workNum}}</van-col> <van-col :span="5">{{item.workNum}}</van-col>
@@ -80,7 +80,7 @@
queryParams:{ queryParams:{
pageNum:1, pageNum:1,
pageSize:10, pageSize:10,
orderByColumn:'openNy',
orderByColumn:'jobNy',
isAsc:'desc', isAsc:'desc',
year:'', year:'',
}, },
@@ -104,7 +104,7 @@
getList(){ getList(){
var _this = this; var _this = this;
setTimeout(() => { setTimeout(() => {
console.log(_this.queryParams)
//console.log(_this.queryParams)
listOddjob(_this.queryParams).then(response => { listOddjob(_this.queryParams).then(response => {
_this.listLength = response.total; _this.listLength = response.total;
_this.applicationList = response.rows; _this.applicationList = response.rows;
@@ -119,6 +119,15 @@
}); });
}, 1000); }, 1000);
}, },
viewItem(id){
this.$router.push({
path: "/sunVillage_info/list_tourists_registration_detail",
query: {
id: id,
intent: 'view',
},
}).catch(() => {});
},
}, },
} }
</script> </script>
@@ -378,6 +387,7 @@
height: 100%; height: 100%;
position: absolute; position: absolute;
top: 0; top: 0;
pointer-events: none;
} }
.name_icon{ .name_icon{
position: absolute; position: absolute;


+ 151
- 8
src/views/sunVillage_info/list_tourists_registration.vue View File

@@ -29,8 +29,8 @@
<van-row> <van-row>
<van-col :span="24">姓名</van-col> <van-col :span="24">姓名</van-col>
</van-row> </van-row>
<van-row v-for="(item,index) in 10" :key="index">
<van-col :span="24">张三</van-col>
<van-row v-for="(item,index) in oddjobList" :key="index">
<van-col :span="24" @click="onItemClicked(item, index)">{{item.workerName}}</van-col>
</van-row> </van-row>
<div class="name_bg"></div> <div class="name_bg"></div>
<img src="../../assets/images/sunVillage_info/name_icon.png" class="name_icon"/> <img src="../../assets/images/sunVillage_info/name_icon.png" class="name_icon"/>
@@ -43,10 +43,10 @@
<van-col :span="8">出工事由</van-col> <van-col :span="8">出工事由</van-col>
<van-col :span="8">出工数</van-col> <van-col :span="8">出工数</van-col>
</van-row> </van-row>
<van-row v-for="(item,index) in 10" :key="index">
<van-col :span="8">2023-03-05</van-col>
<van-col :span="8">上班打卡</van-col>
<van-col :span="8">8</van-col>
<van-row v-for="(item,index) in oddjobList" :key="index" @click="onItemClicked(item, index)">
<van-col :span="8">{{item.jobTime}}</van-col>
<van-col :span="8">{{item.workReason}}</van-col>
<van-col :span="8">{{item.workNum}}</van-col>
</van-row> </van-row>
</div> </div>
</div> </div>
@@ -54,12 +54,43 @@
<div class="clear"></div> <div class="clear"></div>
</div> </div>


<van-popup
v-model="menuOpen"
:closeable="false"
close-icon="close"
position="bottom"
@close="onMenuClose"
>
<van-grid :column-num="3">
<van-grid-item text="查看" @click="viewItem(menuId)">
<template #icon>
<div class="menu_btn view">
<i class="icon "></i>
</div>
</template>
</van-grid-item>
<van-grid-item text="修改" @click="editItem(menuId)">
<template #icon>
<div class="menu_btn edit">
<i class="icon "></i>
</div>
</template>
</van-grid-item>
<van-grid-item text="删除" @click="removeItem(menuId)">
<template #icon>
<div class="menu_btn delete">
<i class="icon "></i>
</div>
</template>
</van-grid-item>
</van-grid>
</van-popup>


</div> </div>
</template> </template>


<script> <script>
import { listOddjob } from "@/api/sunVillage_info/fixedAssets";
import {delOddjob, listOddjob, tempWorkerOpenRemove} from "@/api/sunVillage_info/fixedAssets";
import Cookies from "js-cookie"; import Cookies from "js-cookie";
import request from '@/utils/request' import request from '@/utils/request'
export default { export default {
@@ -77,6 +108,7 @@
fileList:[], fileList:[],
listLength:'0', listLength:'0',
searchInput:'', searchInput:'',
pageNum:0,
queryParams:{ queryParams:{
pageNum:1, pageNum:1,
pageSize:10, pageSize:10,
@@ -92,8 +124,11 @@
showBtn:true, showBtn:true,
yearMonth:[], yearMonth:[],
yearList:[], yearList:[],
oddjobList:[],
deptName:'', deptName:'',
nowYear:new Date().getFullYear(), nowYear:new Date().getFullYear(),
menuOpen: false,
menuId: null,
}; };
}, },
created() { created() {
@@ -109,7 +144,14 @@
methods: { methods: {
getList(){ getList(){
var _this = this; var _this = this;

let params = {
bookId:this.queryParams.bookId,
yearMonth:this.queryParams.yearMonth,
}
listOddjob(params).then(response => {
this.listLength = response.total;
this.oddjobList = response.rows;
});
}, },
tabClickMonth(month){ tabClickMonth(month){
this.month = month ; this.month = month ;
@@ -140,7 +182,68 @@
this.applicationList = []; this.applicationList = [];
this.getList(); this.getList();
}, },
onItemClicked(item, index) {
console.log(`点击(${item.id})`);
this.menuId = item.id;
this.menuOpen = true;
},
onMenuClose() {
this.menuId = null;
},
viewItem(id){
console.log(`查看(${id})`);
this.menuOpen = false;
if(!id)
return;


this.$router.push({
path: "/sunVillage_info/list_tourists_registration_detail",
query: {
id: id,
intent: 'view',
},
}).catch(() => {});
},
editItem(id){
console.log(`编辑(${id})`);
this.menuOpen = false;
if(!id)
return;

this.$router.push({
path: "/sunVillage_info/list_tourists_registration_edit",
query: {
id: id,
intent: 'edit',
},
}).catch(() => {});
},
removeItem(id){
console.log(`移除(${id})`);
this.menuOpen = false;
if(!id)
return;

this.$dialog.alert({
title: '提示',
message: '确认删除?',
showCancelButton:true,
}).then(() => {
delOddjob(id).then(response => {
this.$notify({ type: 'success', message: '删除成功' });
/*this.$toast({
icon: 'success',
message: '删除成功',
duration:"1000",
});*/
this.listLength = 0;
this.oddjobList = [];
this.getList()
});
}).catch(() => {
// on cancel
});
}
}, },
} }
</script> </script>
@@ -431,6 +534,7 @@
height: 100%; height: 100%;
position: absolute; position: absolute;
top: 0; top: 0;
pointer-events: none;
} }
.name_icon{ .name_icon{
position: absolute; position: absolute;
@@ -492,4 +596,43 @@
.clear{ .clear{
clear: both; clear: both;
} }
.menu_btn{
width: 52px;
height: 52px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content:center;

&.delete{
background:#df0707;
.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;
.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;
.icon {
width: 29px;
height: 21px;
background: url('../../assets/images/sunVillage_info/list_icon_3.png') no-repeat;
background-size: 100% 100%;
display: block;
}
}
}
</style> </style>

+ 95
- 41
src/views/sunVillage_info/list_tourists_registration_add.vue View File

@@ -2,52 +2,66 @@
<div class="home_wrapper"> <div class="home_wrapper">
<div class="header_main"> <div class="header_main">
零工登记 零工登记
<div class="return_btn" @click="onClickLeft"></div>
<div class="return_btn" @click="back"></div>
</div> </div>
<van-form >
<van-form ref="formData">
<div class="list_main"> <div class="list_main">
<div class="titBox"> <div class="titBox">
<img src="../../assets/images/sunVillage_info/add_icon_3.png" style="width:22PX;height:22PX;margin-right: 10px;"/> <img src="../../assets/images/sunVillage_info/add_icon_3.png" style="width:22PX;height:22PX;margin-right: 10px;"/>
<p class="tit">添加零工</p> <p class="tit">添加零工</p>
</div> </div>


<field-date-picker
v-model="form.jobTime"
label="出工日期"
placeholder="请选择"
:rules="[{ required: true, message:'请选择出工日期' }]"
formatter="yyyy-MM-dd"
:min-date="minDate"
:max-date="maxDate"
:required="true"
/>

<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.totalMoney" label="金额(元)" placeholder="金额(元)" input-align="right" :border="false" type="number" />

<van-field <van-field
readonly
clickable
label="出工日期"
placeholder="请选择"
v-model="value"
@click="showBuildTime = true"
name="openPic"
label="事前公开"
input-align="right" input-align="right"
right-icon="arrow-down"
label-width="auto"
required
:border="false" :border="false"
:rules="[{ required: true , message:'请选择出工日期' }]"
/>
<van-popup v-model="showBuildTime" position="bottom">
<van-datetime-picker
type="date"
title="选择年月日"
:min-date="minDate"
v-model="buildTime"
@confirm="onConfirmBuildTime"
@cancel="showBuildTime = false"
/>
</van-popup>

<van-field required :rules="[{ required: true, message: '请填写出工姓名' }]" v-model="value" label="出工姓名" placeholder="出工姓名" input-align="right" :border="false" />
<van-field required :rules="[{ required: true, message: '请填写出工事由' }]" v-model="value" label="出工事由" placeholder="出工事由" input-align="right" :border="false" />
<van-field required :rules="[{ required: true, message: '请填写记工员' }]" v-model="value" label="记工员" placeholder="记工员" input-align="right" :border="false" />
<van-field required :rules="[{ required: true, message: '请填写出工数' }]" v-model="value" label="出工数" placeholder="出工数" input-align="right" :border="false" />
<van-field required :rules="[{ required: true, message: '请填写工日值' }]" v-model="value" label="工日值" placeholder="工日值" input-align="right" :border="false" />
<van-field required :rules="[{ required: true, message: '请填写金额(元)' }]" v-model="value" label="金额(元)" placeholder="金额(元)" input-align="right" :border="false" />
<van-field v-model="value" label="备注" placeholder="备注" input-align="right" :border="false" />
>
</van-field>
<CommonUpload name="openPic" v-model="form.openPic" multiple/>

<van-field
name="openPic2"
label="事中公开"
input-align="right"
:border="false"
>
</van-field>
<CommonUpload name="openPic2" v-model="form.openPic2" multiple/>

<van-field
name="openPic3"
label="事后公开"
input-align="right"
:border="false"
>
</van-field>
<CommonUpload name="openPic3" v-model="form.openPic3" multiple/>

<van-field v-model="form.remark" label="备注" placeholder="备注" input-align="right" :border="false" />


</div> </div>


<div style="margin: 16px auto;width: 50%;"> <div style="margin: 16px auto;width: 50%;">
<van-button round block type="primary" native-type="submit">
<van-button round block type="primary" @click="submitForm">
保存 保存
</van-button> </van-button>
</div> </div>
@@ -55,16 +69,39 @@
</div> </div>
</template> </template>
<script> <script>
import { addPermanent } from "@/api/sunVillage_info/fixedAssets";
import { addOddjob,updateOddjob } from "@/api/sunVillage_info/fixedAssets";
import CommonUpload from "@/components/form/CommonUpload.vue";
import FieldDatePicker from "@/components/form/FieldDatePicker.vue";
export default { export default {
name: "certificateList",
name: "listTouristsRegistrationAdd",
components: {FieldDatePicker, CommonUpload},
data() { data() {
return { return {
minDate:new Date(1900,1,1), minDate:new Date(1900,1,1),

showBuildTime:false,

buildTime:new Date(),
maxDate: new Date(2050, 12, 31),

form:{
id: null,
bookId: null,
deptId: null,
deptName: null,
jobNy: null,
jobTime: null,
workerName: null,
workReason: null,
workerNote: null,
workNum: null,
perMoney: null,
totalMoney: null,
remark: null,
openPic: null,
openPic2: null,
openPic3: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null
},


value:'' value:''
}; };
@@ -73,9 +110,26 @@


}, },
methods: { methods: {
onConfirmBuildTime(data){
this.form.buildTime = this.format(data,'yyyy-MM-dd');
this.showBuildTime = false;
submitForm(){
this.$refs.formData.validate().then(() => {
addOddjob(this.form).then(response => {
if (response.code == 200) {
this.$toast({
icon: 'success',
message: '保存成功',
duration:"1000",
});
setTimeout(() => {
this.$router.back();
},2000)
}
});
}).catch(() => {
this.$notify({ type: 'danger', message: '请填写完整的表单项' });
});
},
back() {
this.$router.back();
}, },
}, },
} }


+ 188
- 0
src/views/sunVillage_info/list_tourists_registration_detail.vue View File

@@ -0,0 +1,188 @@
<template>
<div class="home_wrapper">
<div class="header_main">
零工登记
<div class="return_btn" @click="back"></div>
</div>
<van-form ref="formData" :readonly="true">
<div class="list_main">

<van-field v-model="form.jobTime" label="出工日期" input-align="right" :border="false" />
<van-field v-model="form.workerName" label="出工姓名" input-align="right" :border="false" />
<van-field v-model="form.workReason" label="出工事由" input-align="right" :border="false" />
<van-field v-model="form.workerNote" label="记工员" input-align="right" :border="false" />
<van-field v-model="form.workNum" label="出工数" input-align="right" :border="false" type="number" />
<van-field v-model="form.perMoney" label="工日值" input-align="right" :border="false" type="number" />
<van-field v-model="form.totalMoney" label="金额(元)" input-align="right" :border="false" type="number" />

<van-field
name="openPic"
label="事前公开"
input-align="right"
:border="false"
>
</van-field>
<CommonUpload name="openPic" v-model="form.openPic" multiple :deletable="false" :show-upload="false"/>

<van-field
name="openPic2"
label="事中公开"
input-align="right"
:border="false"
>
</van-field>
<CommonUpload name="openPic2" v-model="form.openPic2" multiple :deletable="false" :show-upload="false"/>

<van-field
name="openPic3"
label="事后公开"
input-align="right"
:border="false"
>
</van-field>
<CommonUpload name="openPic3" v-model="form.openPic3" multiple :deletable="false" :show-upload="false"/>

<van-field v-model="form.remark" label="备注" input-align="left" :border="false" />

</div>

</van-form>
</div>
</template>
<script>
import {addOddjob, getOddjob, updateOddjob} from "@/api/sunVillage_info/fixedAssets";
import CommonUpload from "@/components/form/CommonUpload.vue";
export default {
name: "listTouristsRegistrationDetail",
components: {CommonUpload},
data() {
return {
form: {
id: null,
bookId: null,
deptId: null,
deptName: null,
jobNy: null,
jobTime: null,
workerName: null,
workReason: null,
workerNote: null,
workNum: null,
perMoney: null,
totalMoney: null,
remark: null,
openPic: null,
openPic2: null,
openPic3: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null
},
id:''
};
},
created() {
this.id = this.$route.query.id;
this.getDetail();
},
methods: {
getDetail() {
if(!this.id)
{
this.back();
return;
}

getOddjob(this.id).then((resp) => {
this.form = resp.data;
});
},
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;
}

}







</style>

+ 230
- 0
src/views/sunVillage_info/list_tourists_registration_edit.vue View File

@@ -0,0 +1,230 @@
<template>
<div class="home_wrapper">
<div class="header_main">
零工登记
<div class="return_btn" @click="back"></div>
</div>
<van-form ref="formData">
<div class="list_main">
<div class="titBox">
<img src="../../assets/images/sunVillage_info/add_icon_3.png" style="width:22PX;height:22PX;margin-right: 10px;"/>
<p class="tit">修改零工</p>
</div>

<field-date-picker
v-model="form.jobTime"
label="出工日期"
placeholder="请选择"
:rules="[{ required: true, message:'请选择出工日期' }]"
formatter="yyyy-MM-dd"
:min-date="minDate"
:max-date="maxDate"
:required="true"
/>

<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.totalMoney" label="金额(元)" placeholder="金额(元)" input-align="right" :border="false" type="number" />

<van-field
name="openPic"
label="事前公开"
input-align="right"
:border="false"
>
</van-field>
<CommonUpload name="openPic" v-model="form.openPic" multiple/>

<van-field
name="openPic2"
label="事中公开"
input-align="right"
:border="false"
>
</van-field>
<CommonUpload name="openPic2" v-model="form.openPic2" multiple/>

<van-field
name="openPic3"
label="事后公开"
input-align="right"
:border="false"
>
</van-field>
<CommonUpload name="openPic3" v-model="form.openPic3" multiple/>

<van-field v-model="form.remark" label="备注" placeholder="备注" input-align="right" :border="false" />

</div>

<div style="margin: 16px auto;width: 50%;">
<van-button round block type="primary" @click="submitForm">
保存
</van-button>
</div>
</van-form>
</div>
</template>
<script>
import {addOddjob, getOddjob, updateOddjob} from "@/api/sunVillage_info/fixedAssets";
import CommonUpload from "@/components/form/CommonUpload.vue";
import FieldDatePicker from "@/components/form/FieldDatePicker.vue";
export default {
name: "listTouristsRegistrationEdit",
components: {FieldDatePicker, CommonUpload},
data() {
return {
minDate:new Date(1900,1,1),
maxDate: new Date(2050, 12, 31),

form:{
id: null,
bookId: null,
deptId: null,
deptName: null,
jobNy: null,
jobTime: null,
workerName: null,
workReason: null,
workerNote: null,
workNum: null,
perMoney: null,
totalMoney: null,
remark: null,
openPic: null,
openPic2: null,
openPic3: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null
},

id:''
};
},
created() {
this.id = this.$route.query.id;
this.getDetail();
},
methods: {
getDetail() {
if(!this.id)
{
this.back();
return;
}

getOddjob(this.id).then((resp) => {
this.form = resp.data;
});
},
submitForm(){
this.$refs.formData.validate().then(() => {
updateOddjob(this.form).then(response => {
if (response.code == 200) {
this.$toast({
icon: 'success',
message: '保存成功',
duration:"1000",
});
setTimeout(() => {
this.$router.back();
},2000)
}
});
}).catch(() => {
this.$notify({ type: 'danger', message: '请填写完整的表单项' });
});
},
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;
}

}







</style>

Loading…
Cancel
Save