소스 검색

Merge remote-tracking branch 'origin/rongxin_dev' into rongxin_dev

rongxin_dev
yangfuda 2 달 전
부모
커밋
6e68c6449e
6개의 변경된 파일245개의 추가작업 그리고 157개의 파일을 삭제
  1. +47
    -0
      src/views/contracted/village/contractor/contractorFamilyDetail.vue
  2. +46
    -28
      src/views/sunVillage_info/resourceAdd.vue
  3. +49
    -27
      src/views/sunVillage_info/resourceDetail.vue
  4. +92
    -80
      src/views/sunVillage_info/resourceEdit.vue
  5. +5
    -12
      src/views/yinnong/doneCompleted/completedNew.vue
  6. +6
    -10
      src/views/yinnong/doneCompleted/doneNew.vue

+ 47
- 0
src/views/contracted/village/contractor/contractorFamilyDetail.vue 파일 보기

@@ -170,6 +170,14 @@
<van-field v-model="form.cybzsm" label="备注说明:" placeholder="请输入备注说明" type="textarea" rows="3" :border="false" input-align="right" maxlength="250" />
<!-- <van-field v-model="form.cycgfs" label="持股份数:" type="number" placeholder="请输入持股份数" :border="false" input-align="right" />
<van-field v-model="form.gqzbh" label="股权编号:" placeholder="请输入股权编号" :border="false" input-align="right" /> -->

<van-field label="佐证资料:" required :border="false" input-align="right" :rules="[{ required: true }]">
<template #input>
<van-uploader v-model="cyImg" multiple :after-read="afterRead" @delete="deleteFile" style="margin-top: 10PX" />
</template>
</van-field>


</van-form>
<p class="btn" @click="submitForm" v-if="taskStatus === '2' && $route.params.surveyStatus !== '3'">保存</p>
</div>
@@ -183,6 +191,7 @@
import FieldSelect from "@/components/form/FieldSelect";
import FieldDatePicker from "@/components/form/FieldDatePicker";
import { getJtcy, addJtcy, updateJtcy } from "@/api/contracted/cbfjtcy";
import {commonUpload} from "@/api/sunVillage_info/fixedAssets";

export default {
name: "contractedVillageContractor",
@@ -208,6 +217,8 @@
showNewAt: false, // 控制新建日期弹出层的显示和隐藏
minDate: new Date(1978, 0, 1),
maxDate: new Date(2100, 11, 31),
cyImg:[],
cyImg2:[],
};
},
created() {
@@ -242,6 +253,14 @@
methods: {
getDetail(){
getJtcy(this.$route.params.id).then(response => {
if (response.data.cyImg!='' && response.data.cyImg != null && response.data.cyImg != undefined){
this.cyImg = response.data.cyImg.split(',')
this.cyImg2 = response.data.cyImg.split(',')
this.cyImg.map((rrr,i)=>{
this.cyImg[i] = {url:'/api'+rrr}
})
}

this.form = response.data;
this.familyStatusText = this.selectDictLabel(this.familyStatusOptions, response.data.yhzgx);
this.cyzjlxText = this.selectDictLabel(this.cyzjlxOptions, response.data.cyzjlx);
@@ -292,6 +311,7 @@
}
}
this.$refs.formData.validate().then(() => {
this.form.cyImg = this.cyImg2.join(',')
if (this.$route.params.id) {
updateJtcy(this.form).then(response => {
if (response.code == 200) {
@@ -331,6 +351,32 @@
this.$notify({ type: 'danger', message: '请填写完整的表单项' });
});
},
deleteFile(file,detail){
this.cyImg2.splice(detail.index,1)
},
afterRead(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.cyImg2.push(r1.fileName);
})
})
}else{
let params1 = new FormData();
params1.append("file", file.file);
commonUpload(params1).then((r1) => {
this.cyImg2.push(r1.fileName);
})
}
},
resetForm() {
this.form = {
deptId: null,
@@ -353,6 +399,7 @@
wdyy: null,
sfhdr: 'N',
// householdStatus: '1',
cyImg: null
};
this.cyzjlxText = '居民身份证';
}


+ 46
- 28
src/views/sunVillage_info/resourceAdd.vue 파일 보기

@@ -100,31 +100,34 @@
/>
</van-popup>

<van-field
readonly
clickable
<field-select
v-model="form.status"
label="资产状态"
value-key="dictLabel"
data-key="dictValue"
placeholder="请选择"
v-model="assetStatus"
@click="showAssetStatus = true"
input-align="right"
right-icon="arrow-down"
label-width="auto"
required
:border="false"
:rules="[{ required: true }]"
/>
<van-popup v-model="showAssetStatus" position="bottom">
<van-picker
show-toolbar
:columns="assetStatusOptions"
@confirm="onConfirmAssetStatus"
@cancel="showAssetStatus = false"
/>
</van-popup>
requiredx
remote-url="/open/zdzh/list/sys_normal_disable"
:on-remote-response="'data'"/>


<field-select
v-model="form.utilizationStatus"
label="利用现状"
value-key="dictLabel"
data-key="dictValue"
placeholder="请选择"
requiredx
remote-url="/open/zdzh/list/utilization_status"
:on-remote-response="'data'"/>


<van-field v-model="form.useBy" label="使用人" placeholder="使用人" input-align="right" :border="false" />
<van-field v-model="form.checkSituation" label="核查情况" placeholder="核查情况" input-align="right" :border="false" />

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


</div>

<!-- <div class="list_main">-->
@@ -252,7 +255,7 @@
addType:'1',
buildTime:this.format(new Date(),'yyyy-MM-dd'),
useType:'1',
assetStatus:'1',
status:'0',
isMin:'Y',
isFormAsset:'N',
quantity:1.00,
@@ -268,7 +271,10 @@
netSalvage:0.00,
fixedValue:null,
perYearDepreciationValue:null,
depreciationValue:0
depreciationValue:0,
utilizationStatus: "1",
useBy: null,
checkSituation: null,
},
//资产类别
assetType:'房屋及建筑物',
@@ -288,6 +294,9 @@
//资产状态
assetStatusOptions:[],
showAssetStatus:false,
utilizationStatusOptions: [],
showUtilizationStatus:false,
utilizationStatus: '已利用',
assetStatus:'正常',
//资产状态
depreciationTypeOptions:[],
@@ -311,21 +320,21 @@
};
},
created() {
this.houseGetDicts("resource_sort").then((response) => {
/*this.houseGetDicts("resource_sort").then((response) => {
for(var i = 0 ; i < response.data.length ; i++){
this.resourceSortOptions.push({text:response.data[i].dictLabel,value:response.data[i].dictValue});
}
});
});*/
this.houseGetDicts("operation_type").then((response) => {
for(var i = 0 ; i < response.data.length ; i++){
this.operationTypeOptions.push({text:response.data[i].dictLabel,value:response.data[i].dictValue});
}
});
this.houseGetDicts("add_type").then((response) => {
/*this.houseGetDicts("add_type").then((response) => {
for(var i = 0 ; i < response.data.length ; i++){
this.addTypeOptions.push({text:response.data[i].dictLabel,value:response.data[i].dictValue});
}
});
});*/
this.houseGetDicts("use_type").then((response) => {
for(var i = 0 ; i < response.data.length ; i++){
this.useTypeOptions.push({text:response.data[i].dictLabel,value:response.data[i].dictValue});
@@ -336,10 +345,15 @@
this.assetStatusOptions.push({text:response.data[i].dictLabel,value:response.data[i].dictValue});
}
});
this.houseGetDicts("depreciation_type").then((response) => {
/* this.houseGetDicts("depreciation_type").then((response) => {
for(var i = 0 ; i < response.data.length ; i++){
this.depreciationTypeOptions.push({text:response.data[i].dictLabel,value:response.data[i].dictValue});
}
});*/
this.getDicts("utilization_status").then(response => {
for(var i = 0 ; i < response.data.length ; i++){
this.utilizationStatusOptions.push({text:response.data[i].dictLabel,value:response.data[i].dictValue});
}
});
// this.houseGetDicts("resource_farming_type").then((response) => {
// for(var i = 0 ; i < response.data.length ; i++){
@@ -426,7 +440,11 @@
this.form.status = data.value;
this.showAssetStatus = false;
},

onConfirmUtilizationStatus(data){
this.utilizationStatus = data.text;
this.form.utilizationStatus = data.value;
this.showUtilizationStatus = false;
},
onSubmit(){
addResource(this.form).then(response => {
if (response.code == 200){


+ 49
- 27
src/views/sunVillage_info/resourceDetail.vue 파일 보기

@@ -51,28 +51,36 @@
remote-url="/open/zdzh/list/operation_type"
:on-remote-response="'data'"/>

<van-field
readonly
<field-select
v-model="form.useType"
label="使用情况"
value-key="dictLabel"
data-key="dictValue"
placeholder="请选择"
v-model="useType"
input-align="right"
right-icon="arrow-down"
label-width="auto"
required
:border="false"
/>
remote-url="/open/zdzh/list/use_type"
:on-remote-response="'data'"/>

<van-field
readonly
<field-select
v-model="form.status"
label="资产状态"
value-key="dictLabel"
data-key="dictValue"
placeholder="请选择"
v-model="assetStatus"
input-align="right"
right-icon="arrow-down"
label-width="auto"
:border="false"
/>
remote-url="/open/zdzh/list/sys_normal_disable"
:on-remote-response="'data'"/>

<field-select
v-model="form.utilizationStatus"
label="利用现状"
value-key="dictLabel"
data-key="dictValue"
placeholder="请选择"
remote-url="/open/zdzh/list/utilization_status"
:on-remote-response="'data'"/>


<van-field v-model="form.useBy" label="使用人" placeholder="使用人" input-align="right" :border="false" />
<van-field v-model="form.checkSituation" label="核查情况" placeholder="核查情况" input-align="right" :border="false" />

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

@@ -203,7 +211,7 @@
addType:'1',
buildTime:this.format(new Date(),'yyyy-MM-dd'),
useType:'1',
assetStatus:'1',
status:'1',
isMin:'Y',
isFormAsset:'N',
quantity:1.00,
@@ -219,7 +227,10 @@
netSalvage:0.00,
fixedValue:null,
perYearDepreciationValue:null,
depreciationValue:0
depreciationValue:0,
utilizationStatus: null,
useBy: null,
checkSituation: null,
},
//资产类别
assetType:'房屋及建筑物',
@@ -245,7 +256,9 @@
depreciationTypeOptions:[],
showDepreciationType:false,
depreciationType:'不折旧',

utilizationStatusOptions: [],
showUtilizationStatus:false,
utilizationStatus: '已利用',
showBuildTime:false,
auditStatus:[],
loading: false,
@@ -263,21 +276,26 @@
};
},
created() {
this.houseGetDicts("resource_sort").then((response) => {
/* this.houseGetDicts("resource_sort").then((response) => {
for(var i = 0 ; i < response.data.length ; i++){
this.resourceSortOptions.push({text:response.data[i].dictLabel,value:response.data[i].dictValue});
}
});
});*/
this.houseGetDicts("operation_type").then((response) => {
for(var i = 0 ; i < response.data.length ; i++){
this.operationTypeOptions.push({text:response.data[i].dictLabel,value:response.data[i].dictValue});
}
});
this.houseGetDicts("add_type").then((response) => {
this.getDicts("utilization_status").then(response => {
for(var i = 0 ; i < response.data.length ; i++){
this.addTypeOptions.push({text:response.data[i].dictLabel,value:response.data[i].dictValue});
this.utilizationStatusOptions.push({text:response.data[i].dictLabel,value:response.data[i].dictValue});
}
});
/*this.houseGetDicts("add_type").then((response) => {
for(var i = 0 ; i < response.data.length ; i++){
this.addTypeOptions.push({text:response.data[i].dictLabel,value:response.data[i].dictValue});
}
});*/
this.houseGetDicts("use_type").then((response) => {
for(var i = 0 ; i < response.data.length ; i++){
this.useTypeOptions.push({text:response.data[i].dictLabel,value:response.data[i].dictValue});
@@ -288,11 +306,11 @@
this.assetStatusOptions.push({text:response.data[i].dictLabel,value:response.data[i].dictValue});
}
});
this.houseGetDicts("depreciation_type").then((response) => {
/*this.houseGetDicts("depreciation_type").then((response) => {
for(var i = 0 ; i < response.data.length ; i++){
this.depreciationTypeOptions.push({text:response.data[i].dictLabel,value:response.data[i].dictValue});
}
});
});*/
this.houseGetDicts("resource_type").then((response) => {
this.resourceTypeOptionsSelect = response.data;
for(var i = 0 ; i < response.data.length ; i++){
@@ -394,7 +412,11 @@
this.form.status = data.value;
this.showAssetStatus = false;
},

onConfirmUtilizationStatus(data){
this.utilizationStatus = data.text;
this.form.utilizationStatus = data.value;
this.showUtilizationStatus = false;
},
onSubmit(){
updateResource(this.form).then(response => {
if (response.code == 200){


+ 92
- 80
src/views/sunVillage_info/resourceEdit.vue 파일 보기

@@ -77,51 +77,42 @@
remote-url="/open/zdzh/list/operation_type"
:on-remote-response="'data'"/>

<van-field
readonly
clickable
<field-select
v-model="form.useType"
label="使用情况"
value-key="dictLabel"
data-key="dictValue"
placeholder="请选择"
v-model="useType"
@click="showUseType = true"
input-align="right"
right-icon="arrow-down"
label-width="auto"
required
:border="false"
:rules="[{ required: true }]"
/>
<van-popup v-model="showUseType" position="bottom">
<van-picker
show-toolbar
:columns="useTypeOptions"
@confirm="onConfirmUseType"
@cancel="showUseType = false"
/>
</van-popup>
:rulesx="[{ required: true }]"
requiredx
remote-url="/open/zdzh/list/use_type"
:on-remote-response="'data'"/>

<van-field
readonly
clickable

<field-select
v-model="form.status"
label="资产状态"
value-key="dictLabel"
data-key="dictValue"
placeholder="请选择"
v-model="assetStatus"
@click="showAssetStatus = true"
input-align="right"
right-icon="arrow-down"
label-width="auto"
required
:border="false"
:rules="[{ required: true }]"
/>
<van-popup v-model="showAssetStatus" position="bottom">
<van-picker
show-toolbar
:columns="assetStatusOptions"
@confirm="onConfirmAssetStatus"
@cancel="showAssetStatus = false"
/>
</van-popup>
:rulesx="[{ required: true }]"
requiredx
remote-url="/open/zdzh/list/sys_normal_disable"
:on-remote-response="'data'"/>

<field-select
v-model="form.utilizationStatus"
label="利用现状"
value-key="dictLabel"
data-key="dictValue"
placeholder="请选择"
requiredx
remote-url="/open/zdzh/list/utilization_status"
:on-remote-response="'data'"/>


<van-field v-model="form.useBy" label="使用人" placeholder="使用人" input-align="right" :border="false" />
<van-field v-model="form.checkSituation" label="核查情况" placeholder="核查情况" input-align="right" :border="false" />

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

@@ -247,33 +238,40 @@
applicationList:[],
applicationListSecond:[],
form:{
assetType:'151001',
assetType: null,
operationType: null,
addType:'1',
buildTime:this.format(new Date(),'yyyy-MM-dd'),
useType:'1',
assetStatus:'1',
isMin:'Y',
isFormAsset:'N',
quantity:1.00,
depreciationSubject:"152:累计折旧",
fixedSubject:"153:固定资产清理",
depreciationFeeSubject:"541005:管理费用-折旧及修理费",
depreciationType:'3',
expectedYears:1,
depreciationYears:0,
netValue:0.00,
originalValue:0.00,
residualsRate:1,
netSalvage:0.00,
fixedValue:null,
perYearDepreciationValue:null,
depreciationValue:0
addType: null,
buildTime: null,
useType: null,
assetStatus: null,
isMin: null,
isFormAsset: null,
quantity: null,
depreciationSubject: null,
fixedSubject: null,
depreciationFeeSubject:null,
depreciationType: null,
expectedYears: null,
depreciationYears: null,
netValue: null,
originalValue: null,
residualsRate: null,
netSalvage: null,
fixedValue: null,
perYearDepreciationValue: null,
depreciationValue: null,
utilizationStatus: null,
useBy: null,
checkSituation: null,
},
//资产类别
assetType:'房屋及建筑物',
showAssetType:false,
resourceSortOptions:[],
// 利用状况
utilizationStatusOptions: [],
showUtilizationStatus:false,
utilizationStatus: '已利用',
//经营属性
operationType:'经营性',
showOperationType:false,
@@ -312,21 +310,26 @@
};
},
created() {
this.houseGetDicts("resource_sort").then((response) => {
/*this.houseGetDicts("resource_sort").then((response) => {
for(var i = 0 ; i < response.data.length ; i++){
this.resourceSortOptions.push({text:response.data[i].dictLabel,value:response.data[i].dictValue});
}
});
});*/
this.houseGetDicts("operation_type").then((response) => {
for(var i = 0 ; i < response.data.length ; i++){
this.operationTypeOptions.push({text:response.data[i].dictLabel,value:response.data[i].dictValue});
}
});
this.houseGetDicts("add_type").then((response) => {
this.getDicts("utilization_status").then(response => {
for(var i = 0 ; i < response.data.length ; i++){
this.addTypeOptions.push({text:response.data[i].dictLabel,value:response.data[i].dictValue});
this.utilizationStatusOptions.push({text:response.data[i].dictLabel,value:response.data[i].dictValue});
}
});
/* this.houseGetDicts("add_type").then((response) => {
for(var i = 0 ; i < response.data.length ; i++){
this.addTypeOptions.push({text:response.data[i].dictLabel,value:response.data[i].dictValue});
}
});*/
this.houseGetDicts("use_type").then((response) => {
for(var i = 0 ; i < response.data.length ; i++){
this.useTypeOptions.push({text:response.data[i].dictLabel,value:response.data[i].dictValue});
@@ -337,11 +340,11 @@
this.assetStatusOptions.push({text:response.data[i].dictLabel,value:response.data[i].dictValue});
}
});
this.houseGetDicts("depreciation_type").then((response) => {
/*this.houseGetDicts("depreciation_type").then((response) => {
for(var i = 0 ; i < response.data.length ; i++){
this.depreciationTypeOptions.push({text:response.data[i].dictLabel,value:response.data[i].dictValue});
}
});
});*/
this.houseGetDicts("resource_type").then((response) => {
this.resourceTypeOptionsSelect = response.data;
for(var i = 0 ; i < response.data.length ; i++){
@@ -358,22 +361,29 @@
this.houseGetDicts("resources_unused_type").then((response) => {
this.unusedResourceTypeOptionsSelect = response.data;
});

this.getDetail();
},
methods: {
getDetail(){
getResource(this.$route.query.id).then(response => {
if (response.code == 200) {
this.form = response.data;

this.form = response.data;
this.resourceType = this.selectDictLabel(this.resourceTypeOptionsSelect, response.data.resourceType);
if(response.data.resourceType == 1){
this.resourceSort = this.selectDictLabel(this.farmingResourceTypeOptionsSelect, response.data.resourceSort);
}
if(response.data.resourceType == 2){
this.resourceSort = this.selectDictLabel(this.buildResourceTypeOptionsSelect, response.data.resourceSort);
}
if(response.data.resourceType == 3){
this.resourceSort = this.selectDictLabel(this.unusedResourceTypeOptionsSelect, response.data.resourceSort);
this.resourceType = this.selectDictLabel(this.resourceTypeOptionsSelect, response.data.resourceType);
if (response.data.resourceType == 1) {
this.resourceSort = this.selectDictLabel(this.farmingResourceTypeOptionsSelect, response.data.resourceSort);
}
if (response.data.resourceType == 2) {
this.resourceSort = this.selectDictLabel(this.buildResourceTypeOptionsSelect, response.data.resourceSort);
}
if (response.data.resourceType == 3) {
this.resourceSort = this.selectDictLabel(this.unusedResourceTypeOptionsSelect, response.data.resourceSort);
}
//this.operationType = this.selectDictLabel(this.operationTypeOptions, response.data.operationType);
//this.useType = this.selectDictLabel(this.useTypeOptions, response.data.useType);
//this.assetStatus = this.selectDictLabel(this.assetStatusOptions, response.data.status);
//this.utilizationStatus = this.selectDictLabel(this.utilizationStatusOptions, response.data.utilizationStatus);
}

});
@@ -425,8 +435,6 @@
});
}



},
onConfirmResourceSort(data){
this.resourceSort = data.text;
@@ -443,7 +451,11 @@
this.form.status = data.value;
this.showAssetStatus = false;
},

onConfirmUtilizationStatus(data){
this.utilizationStatus = data.text;
this.form.utilizationStatus = data.value;
this.showUtilizationStatus = false;
},
onSubmit(){
updateResource(this.form).then(response => {
if (response.code == 200){


+ 5
- 12
src/views/yinnong/doneCompleted/completedNew.vue 파일 보기

@@ -87,9 +87,10 @@
electronicSignature:"",
queryParams: {
pageNum: 1,
pageSize:10,
pageSize:20,
systemType: null,
deptId: null,
translate_dict:'1'
},
activityBusinessTypeOptions:[],
images:['../../../../static/images/yinnong/banner_03.jpg'],
@@ -104,7 +105,6 @@
if(this.$route.query.activeName){
this.activeName = this.$route.query.activeName
}
// this.getList();
});
console.log(this.$route.query.fr)
if(this.$route.query.fr){
@@ -128,8 +128,8 @@
},
getListReq(pageInfo) {
//console.log(pageInfo, this.queryParams.pageNum, this.queryParams.pageSize);
this.$set(this.queryParams, "deptId", this.$store.state.user.deptId);
return new Promise((resolve, reject) => {
this.$set(this.queryParams, "deptId", this.$store.state.user.deptId);
A_myTodoList(this.queryParams).then((response) => {
//console.info(_this.taskList.length)
response.rows.forEach(res => {
@@ -140,15 +140,8 @@
// }else if(res.tableName?res.tableName.indexOf('yinnong')>0:""){
// res.tableName = '来自银农直联审批管理系统'
// }
if(this.activityBusinessTypeOptions){
this.activityBusinessTypeOptions.map(t => {
if(t.dictValue === res.businessType){
console.log('aaaaa')
res.businessType = t.dictLabel
this.taskList.push(res)
}
});
}
res.businessType = this.selectDictLabel(this.activityBusinessTypeOptions, res.businessType);
this.taskList.push(res)
});
resolve(response);
});


+ 6
- 10
src/views/yinnong/doneCompleted/doneNew.vue 파일 보기

@@ -64,6 +64,7 @@
import yinnongIndex from "../../yinnongIndex";
import {A_myDoneList, A_myTodoList} from "../../../api/audit/aauditpipeline";
import PagedList from "@/components/common/PagedList.vue";
import {selectDictLabel} from "@/utils/utils";

export default {
components: {
@@ -82,9 +83,10 @@
total:0,
queryParams: {
pageNum: 1,
pageSize: 10,
pageSize: 20,
systemType: null,
deptId: null,
translate_dict:'1'
},
activityBusinessTypeOptions:[],
images:['../../../../static/images/yinnong/banner_02.jpg'],
@@ -99,7 +101,6 @@
if(this.$route.query.activeName){
this.activeName = this.$route.query.activeName
}
// this.getList();
});
//console.log(this.$route.query.fr)
if(this.$route.query.fr){
@@ -119,6 +120,7 @@
//console.log(pageInfo, this.queryParams.pageNum, this.queryParams.pageSize)
this.$set(this.queryParams, "deptId", this.$store.state.user.deptId);
return new Promise((resolve, reject) => {

A_myDoneList(this.queryParams).then((response) => {
//console.info(_this.taskList.length)
response.rows.forEach(res => {
@@ -129,14 +131,8 @@
// }else if(res.tableName?res.tableName.indexOf('yinnong')>0:""){
// res.tableName = '来自银农直联审批管理系统'
// }
if(this.activityBusinessTypeOptions){
this.activityBusinessTypeOptions.map(t => {
if(t.dictValue === res.businessType){
res.businessType = t.dictLabel
this.taskList.push(res)
}
});
}
res.businessType = this.selectDictLabel(this.activityBusinessTypeOptions, res.businessType);
this.taskList.push(res)
});
resolve(response);
});


불러오는 중...
취소
저장