庞东旭 před 2 roky
rodič
revize
7f1c2b3221
11 změnil soubory, kde provedl 285 přidání a 24 odebrání
  1. +188
    -0
      src/components/form/SubjectTreeChooser.vue
  2. +68
    -0
      src/components/form/SubjectTreeChooserNodeItem.vue
  3. +2
    -2
      src/views/sunVillage_info/index.vue
  4. +1
    -1
      src/views/sunVillage_info/index_code.vue
  5. +2
    -2
      src/views/sunVillage_info/list_finance_detail.vue
  6. +1
    -1
      src/views/sunVillage_info/list_issues.vue
  7. +5
    -4
      src/views/sunVillage_info/list_issues_add.vue
  8. +7
    -5
      src/views/sunVillage_info/list_issues_detail.vue
  9. +8
    -6
      src/views/sunVillage_info/list_issues_edit.vue
  10. +1
    -1
      src/views/sunVillage_info/list_register.vue
  11. +2
    -2
      src/views/sunVillage_info/list_tourists_detail.vue

+ 188
- 0
src/components/form/SubjectTreeChooser.vue Zobrazit soubor

@@ -0,0 +1,188 @@
<!-- 会计科目选择弹出层组件 zhao -->
<template>
<van-popup v-model="popupVisible" position="bottom" :style="{'height': height || 'unset',}">
<van-search
v-model="searchValue"
placeholder="按科目编码/名称筛选"
@input="onSearch"
/>

<van-tabs v-model="active" @change="onTabChanged">
<van-tab :title="item.subjectName" :name="item.subjectId" v-for="(item, index) in subjects">
<SubjectTreeChooserNodeItem :ref="'tree' + index" :subjects="item.children" @clicked="onItemClicked" :can-select-non-leaf="canSelectNonLeaf"></SubjectTreeChooserNodeItem>
</van-tab>
</van-tabs>
</van-popup>
</template>

<script>
import request from "@/utils/request";
import SubjectTreeChooserNodeItem from "./SubjectTreeChooserNodeItem";

export default {
name: "SubjectTreeChooser",
components: {SubjectTreeChooserNodeItem},
props: [
'value', 'visible', 'height', 'canSelectNonLeaf',
],
watch: {
value: function (newVal, oldVal) {
if(newVal != this.internalValue)
{
this.internalValue = newVal;
this.syncIndex();
}
},
visible: function(newVal, oldVal) {
if(this.popupVisible !== newVal)
{
this.popupVisible = newVal;
if(newVal)
this.syncIndex();
}
},
popupVisible: function(newVal, oldVal) {
if(newVal !== this.visible)
this.$emit('update:visible', newVal);
},
},
created() {
this.getSubjects();
},
data() {
return {
popupVisible: false,
internalValue: this.value,
searchValue: '',
active: '1',
subjects: [],
};
},
methods: {
getSubjects() {
this.subjects = [];
let map = {};
this.getDicts('subject_type').then((resp) => {
this.subjects = resp.data.map((x) => {
let item = {
subjectId: x.dictValue,
subjectName: x.dictLabel,
subjectNameAll: x.dictLabel,
subjectType: x.dictValue,
subjectLevel: 0,
children: [],
visible: true,
};
map[x.dictValue] = item;
return item;
});
let url = '/finance/subject/listAll'; // '/villageAffairs/public/subjects/153'
request(url).then((resp) => {
let list = this.makeTree(resp.rows || resp.data);
for(let v of list)
{
if(v.subjectId.length === 3)
{
map[v.subjectType].children.push(v);
}
}
})
});
},
onItemClicked(subject) {
if(this.canSelectNonLeaf || subject.is_last === 'Y')
{
this.internalValue = subject.subjectId
this.$emit('input', subject.subjectId);
this.$emit('select', subject);
this.close();
}
},
onItemToggle({subject, on}) {
},
onCancel() {
this.close();
},
makeTree(list) {
function isnull(p) {
return p === null || p === undefined || p === '';
}
function makeTree_r(l, p) {
const isRoot = isnull(p);
let res = [];
for(let v of l)
{
if((isRoot && isnull(v.parentId)) || (!isRoot && v.parentId == p))
{
let arr = makeTree_r(l, v.subjectId);
if(arr.length > 0)
v.children = arr;
else
delete v.children;
res.push(v);
}
}
return res;
}
return makeTree_r(list.map((x) => {
x.visible = true;
return x;
}));
},
onSearch(value) {
function handleTree_r(l, func) {
let res = 0;
for(let v of l)
{
let r = func(v) ? 1 : 0;
if(v.children && Array.isArray(v.children) && v.children.length > 0)
{
r += handleTree_r(v.children, func);
}
v.visible = r > 0;
res += r;
}
return res;
}

for(let v of this.subjects)
{
if(v.subjectId === this.active && value)
{
handleTree_r(v.children, (x) => x.subjectId.startsWith(value) || x.subjectName.indexOf(value) !== -1);
}
else
{
handleTree_r(v.children, (x) => true);
}
}
},
onTabChanged() {
this.searchValue = '';
this.onSearch();
},
folderAll() { // TODO: not work
for(let i in this.subjects)
{
if(this.$refs['tree' + i])
this.$refs['tree' + i][0].folderAll();
}
},
close() {
this.popupVisible = false;
this.folderAll();
this.searchValue = '';
this.active = '1';
this.$emit('cancel');
},
syncIndex() {
if(this.subjects.length === 0 || !this.internalValue)
return;
this.active = this.internalValue[0];
},
},
}
</script>

<style scoped>
</style>

+ 68
- 0
src/components/form/SubjectTreeChooserNodeItem.vue Zobrazit soubor

@@ -0,0 +1,68 @@
<!-- 会计科目选择节点组件 zhao -->
<template>
<van-collapse v-model="active">
<template v-for="(subject, index) in subjects">
<van-collapse-item :ref="'collapse' + index" :lazy-render="false" :title="subject.subjectId + ' ' + subject.subjectName" :name="subject.subjectId" :is-link="subject.is_last !== 'Y'" :class="subject.is_last === 'Y' ? 'subject-tree-node-leaf' : 'subject-tree-node-non-leaf'" v-if="subject.visible">
<template #title>
<div @click="($event) => onItemClicked($event, subject)">{{ subject.subjectId }} {{ subject.subjectName }}</div>
</template>
<SubjectTreeChooserNodeItem :ref="'childCollapse' + index" :subjects="subject.children" v-if="subject.children && Array.isArray(subject.children) && subject.children.length > 0" @clicked="onChildItemClicked" :can-select-non-leaf="canSelectNonLeaf">
</SubjectTreeChooserNodeItem>
</van-collapse-item>
</template>
</van-collapse>
</template>

<script>

export default {
name: "SubjectTreeChooserNodeItem",
props: [
'subjects', 'canSelectNonLeaf',
],
watch: {
},
created() {
},
data() {
return {
active: [],
};
},
methods: {
onItemClicked($event, subject) {
if(this.canSelectNonLeaf || subject.is_last === 'Y')
{
this.$emit('clicked', subject);
//$event.preventDefault();
$event.stopPropagation();
}
},
onChildItemClicked(subject) {
this.$emit('clicked', subject);
},
folderAll() { // TODO: not work
for(let i in this.subjects)
{
if(this.$refs['childCollapse' + i])
this.$refs['childCollapse' + i][0].folderAll();
if(this.$refs['collapse' + i])
this.$refs['collapse' + i][0].toggle(false);
}
},
},
}
</script>

<style>
.subject-tree-node-non-leaf .van-collapse-item__content {
padding-right: 0;
padding-top: 0;
padding-bottom: 0;
}
.subject-tree-node-leaf .van-collapse-item__content {
padding-right: 0;
padding-top: 0;
padding-bottom: 0;
}
</style>

+ 2
- 2
src/views/sunVillage_info/index.vue Zobrazit soubor

@@ -48,9 +48,9 @@
<div class="nav_list">
<router-link :to="{name:'sunVillageInfoListFinance'}" class="nav_item n_1">财务公开榜</router-link>
<router-link :to="{name:'sunVillageInfoListTourists'}" class="nav_item n_2">零工公开榜</router-link>
<router-link :to="{name:'sunVillageInfoListIssues'}" class="nav_item n_3">重大事项公开</router-link>
<router-link :to="{name:'sunVillageInfoListRegister'}" class="nav_item n_6">零工登记</router-link>
<router-link :to="{name:'sunVillageInfoListIssues'}" class="nav_item n_3">重大事项</router-link>
<router-link :to="{name:'sunVillageInfoFixedAssets'}" class="nav_item n_4">固定资产</router-link>
<router-link :to="{name:'sunVillageInfoFixedAssets'}" class="nav_item n_4">资产登记</router-link>
<router-link :to="{name:'sunVillageInfoInformation'}" class="nav_item n_5">合同登记</router-link>
<router-link :to="{name:'sunVillageInfoListBalanceRanking'}" class="nav_item n_7">科目余额</router-link>
</div>


+ 1
- 1
src/views/sunVillage_info/index_code.vue Zobrazit soubor

@@ -17,7 +17,7 @@
<div class="nav_list">
<router-link :to="{name:'sunVillageInfoListFinance',query:{type:'code'}}" class="nav_item n_1">财务公开榜</router-link>
<router-link :to="{name:'sunVillageInfoListTourists',query:{type:'code'}}" class="nav_item n_2">零工公开榜</router-link>
<router-link :to="{name:'sunVillageInfoListIssues',query:{type:'code'}}" class="nav_item n_3">重大事项</router-link>
<router-link :to="{name:'sunVillageInfoListIssues',query:{type:'code'}}" class="nav_item n_3">重大事项公开</router-link>
<!-- <router-link :to="{name:'sunVillageInfoFixedAssets'}" class="nav_item n_4">固定资产</router-link>-->
<!-- <router-link :to="{name:'sunVillageInfoInformation'}" class="nav_item n_5">合同登记</router-link>-->
</div>


+ 2
- 2
src/views/sunVillage_info/list_finance_detail.vue Zobrazit soubor

@@ -23,7 +23,7 @@
</template>
</van-field>

<van-field readonly v-model="form.openName" placeholder="请输入名称" :rules="[{ required: true , message:'请输入名称' }]" input-align="right" :border="false" >
<van-field readonly v-model="form.openName" :rules="[{ required: true , message:'请输入名称' }]" input-align="right" :border="false" >
<template #label>
<img src="../../assets/images/sunVillage_info/add_tit_icon_02.png" width="18">
<p style="margin-left: 5px;">公开名称</p>
@@ -55,7 +55,7 @@
</div>
</div>
</div>
<van-field readonly v-model="form.remark" placeholder="请输入备注" input-align="right" :border="false" >
<van-field readonly v-model="form.remark" input-align="right" :border="false" >
<template #label>
<img src="../../assets/images/sunVillage_info/add_tit_icon_05.png" width="18">
<p style="margin-left: 5px;">备注</p>


+ 1
- 1
src/views/sunVillage_info/list_issues.vue Zobrazit soubor

@@ -1,7 +1,7 @@
<template>
<div class="home_wrapper">
<div class="header_main">
重大事项
重大事项公开榜
<div class="return_btn" @click="onClickLeft"></div>
<div class="add_btn" @click="goAdd" v-show="showBtn"></div>
</div>


+ 5
- 4
src/views/sunVillage_info/list_issues_add.vue Zobrazit soubor

@@ -71,17 +71,18 @@
<img src="../../assets/images/sunVillage_info/addFile.png" width="120" />
</van-uploader>
</div>
<van-field v-model="form.remark" placeholder="请输入备注" input-align="right" :border="false" >

<van-field v-model="form.content" type="textarea" autosize placeholder="请输入内容" input-align="right" :border="false" >
<template #label>
<img src="../../assets/images/sunVillage_info/add_tit_icon_05.png" width="18">
<p style="margin-left: 5px;">备注</p>
<p style="margin-left: 5px;">内容</p>
</template>
</van-field>

<van-field v-model="form.content" type="textarea" autosize placeholder="请输入内容" input-align="right" :border="false" >
<van-field v-model="form.remark" placeholder="请输入备注" input-align="right" :border="false" >
<template #label>
<img src="../../assets/images/sunVillage_info/add_tit_icon_05.png" width="18">
<p style="margin-left: 5px;">内容</p>
<p style="margin-left: 5px;">备注</p>
</template>
</van-field>



+ 7
- 5
src/views/sunVillage_info/list_issues_detail.vue Zobrazit soubor

@@ -23,7 +23,7 @@
</template>
</van-field>

<van-field readonly v-model="form.openName" placeholder="请输入名称" :rules="[{ required: true , message:'请输入名称' }]" input-align="right" :border="false" >
<van-field readonly v-model="form.openName" :rules="[{ required: true , message:'请输入名称' }]" input-align="right" :border="false" >
<template #label>
<img src="../../assets/images/sunVillage_info/add_tit_icon_02.png" width="18">
<p style="margin-left: 5px;">公开名称</p>
@@ -55,16 +55,18 @@
</div>
</div>
</div>
<van-field readonly v-model="form.remark" placeholder="请输入备注" input-align="right" :border="false" >

<van-field readonly v-model="form.content" type="textarea" autosize input-align="right" :border="false" >
<template #label>
<img src="../../assets/images/sunVillage_info/add_tit_icon_05.png" width="18">
<p style="margin-left: 5px;">备注</p>
<p style="margin-left: 5px;">内容</p>
</template>
</van-field>
<van-field readonly v-model="form.content" type="textarea" autosize placeholder="请输入备注" input-align="right" :border="false" >

<van-field readonly v-model="form.remark" input-align="right" :border="false" >
<template #label>
<img src="../../assets/images/sunVillage_info/add_tit_icon_05.png" width="18">
<p style="margin-left: 5px;">内容</p>
<p style="margin-left: 5px;">备注</p>
</template>
</van-field>



+ 8
- 6
src/views/sunVillage_info/list_issues_edit.vue Zobrazit soubor

@@ -71,12 +71,6 @@
<img src="../../assets/images/sunVillage_info/addFile.png" width="120" />
</van-uploader>
</div>
<van-field v-model="form.remark" placeholder="请输入备注" input-align="right" :border="false" >
<template #label>
<img src="../../assets/images/sunVillage_info/add_tit_icon_05.png" width="18">
<p style="margin-left: 5px;">备注</p>
</template>
</van-field>

<van-field v-model="form.content" type="textarea" autosize placeholder="请输入内容" input-align="right" :border="false" >
<template #label>
@@ -84,6 +78,14 @@
<p style="margin-left: 5px;">内容</p>
</template>
</van-field>

<van-field v-model="form.remark" placeholder="请输入备注" input-align="right" :border="false" >
<template #label>
<img src="../../assets/images/sunVillage_info/add_tit_icon_05.png" width="18">
<p style="margin-left: 5px;">备注</p>
</template>
</van-field>

</div>

<div style="margin: 16px auto;width: 50%;">


+ 1
- 1
src/views/sunVillage_info/list_register.vue Zobrazit soubor

@@ -1,7 +1,7 @@
<template>
<div class="home_wrapper">
<div class="header_main">
零工登记
零工信息
<div class="return_btn" @click="onClickLeft"></div>
<div class="add_btn" @click="goAdd" v-show="showBtn"></div>
</div>


+ 2
- 2
src/views/sunVillage_info/list_tourists_detail.vue Zobrazit soubor

@@ -23,7 +23,7 @@
</template>
</van-field>

<van-field readonly v-model="form.openName" placeholder="请输入名称" :rules="[{ required: true , message:'请输入名称' }]" input-align="right" :border="false" >
<van-field readonly v-model="form.openName" :rules="[{ required: true , message:'请输入名称' }]" input-align="right" :border="false" >
<template #label>
<img src="../../assets/images/sunVillage_info/add_tit_icon_02.png" width="18">
<p style="margin-left: 5px;">公开名称</p>
@@ -55,7 +55,7 @@
</div>
</div>
</div>
<van-field readonly v-model="form.remark" placeholder="请输入备注" input-align="right" :border="false" >
<van-field readonly v-model="form.remark" input-align="right" :border="false" >
<template #label>
<img src="../../assets/images/sunVillage_info/add_tit_icon_05.png" width="18">
<p style="margin-left: 5px;">备注</p>


Načítá se…
Zrušit
Uložit