commit
559d6566b8
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,446 @@
|
|||||||
|
<template>
|
||||||
|
<view class="dynamicModel-list-v">
|
||||||
|
<view class="head-warp com-dropdown">
|
||||||
|
<u-dropdown class="u-dropdown" ref="uDropdown" @open="openData" >
|
||||||
|
<u-dropdown-item title="排序">
|
||||||
|
<view class="dropdown-slot-content">
|
||||||
|
<view class="dropdown-slot-content-main">
|
||||||
|
<u-cell-group>
|
||||||
|
<u-cell-item @click="cellClick(item)" :arrow="false" :title="item.label"
|
||||||
|
v-for="(item, index) in sortOptions" :key="index" :title-style="{color: sortValue == item.value ? '#2979ff' : '#606266' }">
|
||||||
|
<u-icon v-if="sortValue == item.value" name="checkbox-mark" color="#2979ff" size="32"></u-icon>
|
||||||
|
</u-cell-item>
|
||||||
|
</u-cell-group>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</u-dropdown-item>
|
||||||
|
<u-dropdown-item title="筛选" >
|
||||||
|
<view class="dropdown-slot-content">
|
||||||
|
<view class="dropdown-slot-content-main search-main">
|
||||||
|
<scroll-view scroll-y="true" style="height: 1000rpx;">
|
||||||
|
<view class="u-p-l-20 u-p-r-20 search-form">
|
||||||
|
<u-form :model="searchForm" ref="searchForm" :errorType="['toast']" label-position="left" label-width="150">
|
||||||
|
</u-form>
|
||||||
|
</view>
|
||||||
|
</scroll-view>
|
||||||
|
<view class="buttom-actions">
|
||||||
|
<u-button class="buttom-btn" @click="reset">重置</u-button>
|
||||||
|
<u-button class="buttom-btn" type="primary" @click="closeDropdown">检索</u-button>
|
||||||
|
</view>
|
||||||
|
<view class="dropdown-slot-bg" @click="$refs.uDropdown.close()"></view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</u-dropdown-item>
|
||||||
|
</u-dropdown>
|
||||||
|
</view>
|
||||||
|
<view class="list-warp">
|
||||||
|
<mescroll-uni ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :up="upOption" top="100">
|
||||||
|
<view class="list">
|
||||||
|
<view class="list-box">
|
||||||
|
<uni-swipe-action ref="swipeAction">
|
||||||
|
<uni-swipe-action-item v-for="(item, index) in list" :key="item.id" :threshold="0" :right-options="options">
|
||||||
|
<view class="item" @click="goDetail(item.id,item)">
|
||||||
|
<view class="u-line-1 item-cell" v-for="(column,i) in columnList" :key="i">
|
||||||
|
<view v-if="column.jnpfKey != 'table'">
|
||||||
|
<view class="" v-if="column.jnpfKey == 'relationForm'">
|
||||||
|
<text class="listTit u-line-1">{{column.label}}:</text>
|
||||||
|
<text class="listContent"
|
||||||
|
@click.stop="relationFormClick(item,column)"
|
||||||
|
style="color: blue;">{{item[column.prop]}}</text>
|
||||||
|
</view>
|
||||||
|
<view v-else class="u-line-1">
|
||||||
|
<text class="listTit u-line-1">{{column.label}}:</text>
|
||||||
|
<text class="listContent" v-if="['calculate','inputNumber'].includes(column.jnpfKey) && column.thousands">{{toThousands(item[column.prop],column)}}</text>
|
||||||
|
<text class="listContent" v-else>{{item[column.prop]}}</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="collapse-box u-flex" v-else>
|
||||||
|
<tableCell :label="column.label" :childList="item[column.prop]" @cRelationForm="relationFormClick"
|
||||||
|
:children="column.children" ref="tableCell" :pageLen="3"></tableCell>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<template v-slot:right>
|
||||||
|
<view class="right-option-box">
|
||||||
|
<view class="right-option" v-for="(it,i) in options" @click="handleClick(index)"
|
||||||
|
:key="i">
|
||||||
|
<text>{{it.text}}</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
</uni-swipe-action-item>
|
||||||
|
</uni-swipe-action>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</mescroll-uni>
|
||||||
|
</view>
|
||||||
|
<view class="com-addBtn" @click="addPage()" >
|
||||||
|
<u-icon name="plus" size="60" color="#fff" />
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
FlowJsonList
|
||||||
|
} from '@/api/workFlow/flowEngine'
|
||||||
|
import resources from '@/libs/resources.js'
|
||||||
|
import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
|
||||||
|
import tableCell from '../dynamicModel/components/tableCell.vue'
|
||||||
|
import {
|
||||||
|
getDictionaryDataSelector,
|
||||||
|
getDataInterfaceRes,
|
||||||
|
getDefaultCurrentValueUserIdAsync,
|
||||||
|
getDefaultCurrentValueDepartmentIdAsync
|
||||||
|
} from '@/api/common'
|
||||||
|
import request from '@/utils/request'
|
||||||
|
export default {
|
||||||
|
mixins: [MescrollMixin],
|
||||||
|
components: {
|
||||||
|
tableCell
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
show: false,
|
||||||
|
templateList: [],
|
||||||
|
sortValue: '',
|
||||||
|
searchForm: {
|
||||||
|
},
|
||||||
|
downOption: {
|
||||||
|
use: true,
|
||||||
|
auto: false
|
||||||
|
},
|
||||||
|
dataOptions:{
|
||||||
|
},
|
||||||
|
upOption: {
|
||||||
|
page: {
|
||||||
|
num: 0,
|
||||||
|
size: 20,
|
||||||
|
time: null,
|
||||||
|
},
|
||||||
|
empty: {
|
||||||
|
use: true,
|
||||||
|
icon: resources.message.nodata,
|
||||||
|
tip: "暂无数据",
|
||||||
|
fixed: true,
|
||||||
|
top: "300rpx",
|
||||||
|
zIndex: 5,
|
||||||
|
},
|
||||||
|
textNoMore: '没有更多数据',
|
||||||
|
toTop: {
|
||||||
|
bottom: 250
|
||||||
|
}
|
||||||
|
},
|
||||||
|
list: [],
|
||||||
|
appColumnList:[{"jnpfKey":"billRule","fullName":"凭证编号","label":"凭证编号","sortable":false,"align":"left","__config__":{"formId":101,"visibility":["pc","app"],"jnpfKey":"billRule","noShow":false,"tipLabel":"","dragDisabled":false,"rule":"ssdj","className":[],"label":"凭证编号","trigger":"change","showLabel":true,"required":false,"tableName":"jg_voucher","renderKey":1707042861597,"layout":"colFormItem","tagIcon":"icon-ym icon-ym-generator-documents","ruleName":"销售订单","tag":"JnpfInput","span":8},"readonly":true,"prop":"voucherCode","width":0,"__vModel__":"voucherCode","style":{"width":"100%"},"fixed":"none","placeholder":"系统自动生成","id":"voucherCode"},{"filterable":false,"clearable":true,"jnpfKey":"select","multiple":false,"fullName":"凭证类型","label":"凭证类型","sortable":false,"align":"left","props":{"label":"fullName","value":"id"},"__config__":{"formId":102,"visibility":["pc","app"],"jnpfKey":"select","defaultValue":"","noShow":false,"dataType":"static","dictionaryType":"","tipLabel":"","dragDisabled":false,"className":[],"label":"凭证类型","trigger":"change","propsUrl":"","templateJson":[],"showLabel":true,"required":true,"tableName":"jg_voucher","renderKey":1707042898113,"layout":"colFormItem","tagIcon":"icon-ym icon-ym-generator-select","propsName":"","tag":"JnpfSelect","regList":[],"span":8},"prop":"voucherType","width":0,"options":[{"fullName":"磅单","id":"1"},{"fullName":"收据","id":"2"},{"fullName":"其他","id":"3"}],"__vModel__":"voucherType","style":{"width":"100%"},"disabled":false,"interfaceHasPage":false,"fixed":"none","placeholder":"请选择","id":"voucherType","on":{"change":"({ data, formData, setFormData, setShowOrHide, setRequired, setDisabled, onlineUtils }) => {\n // 在此编写代码\n \n}"}}],
|
||||||
|
listQuery: {
|
||||||
|
moduleId:'572394520738554117',
|
||||||
|
sort: 'desc',
|
||||||
|
sidx: '',
|
||||||
|
keyword: '',
|
||||||
|
json: ''
|
||||||
|
},
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
text: '删除',
|
||||||
|
style: {
|
||||||
|
backgroundColor: '#dd524d'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
sortOptions:[
|
||||||
|
],
|
||||||
|
ableAll:{
|
||||||
|
},
|
||||||
|
interfaceRes:{
|
||||||
|
},
|
||||||
|
menuId:'',
|
||||||
|
columnList:[],
|
||||||
|
isTree:false,
|
||||||
|
type:'1',
|
||||||
|
key:new Date(),
|
||||||
|
dataValue:{},
|
||||||
|
userInfo:{},
|
||||||
|
firstInitSearchData:false,
|
||||||
|
thousandsField:[],
|
||||||
|
formatType:{"yyyy":"yyyy","yyyy-MM":"yyyy-mm","yyyy-MM-dd":"yyyy-mm-dd","yyyy-MM-dd HH:mm":"yyyy-mm-dd hh:MM","yyyy-MM-dd HH:mm:ss":"yyyy-mm-dd hh:MM:ss","HH:mm:ss":"hh:MM:ss","HH:mm":"hh:MM"},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad(e){
|
||||||
|
this.userInfo = uni.getStorageSync('userInfo') || {}
|
||||||
|
this.menuId = e.menuId
|
||||||
|
uni.$on('refresh', () => {
|
||||||
|
this.list = [];
|
||||||
|
this.mescroll.resetUpScroll();
|
||||||
|
})
|
||||||
|
this.dataAll()
|
||||||
|
this.getColumnList()
|
||||||
|
},
|
||||||
|
onUnload() {
|
||||||
|
uni.$off('refresh')
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
toThousands(val, column) {
|
||||||
|
let num = Number(val)
|
||||||
|
let newVal = this.thousandsField.includes(column.__vModel__) ? num.toLocaleString('zh', {maximumFractionDigits: '2',minimumFractionDigits: '2'}): num.toFixed(2);
|
||||||
|
return newVal
|
||||||
|
},
|
||||||
|
getJsonList() {
|
||||||
|
FlowJsonList(this.flowId,'1').then(res => {
|
||||||
|
this.templateList = res.data;
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getFormById() {
|
||||||
|
getFormById(this.formId).then(res => {
|
||||||
|
this.flowId = res.data&&res.data.id
|
||||||
|
this.enCode = res.data&&res.data.enCode
|
||||||
|
this.getJsonList()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
dataAll(){
|
||||||
|
},
|
||||||
|
openData(e){
|
||||||
|
if(e==1){
|
||||||
|
//this.reset()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//初始化查询的默认数据
|
||||||
|
async initSearchData() {
|
||||||
|
this.dataValue = JSON.parse(JSON.stringify(this.searchForm))
|
||||||
|
},
|
||||||
|
relationFormClick(item,column) {
|
||||||
|
let vModel = column.__vModel__?column.__vModel__+"_id":column.__vModel__
|
||||||
|
let id = item[vModel]
|
||||||
|
if(vModel){
|
||||||
|
let [attr,attr1]=vModel.split("_jnpf_")
|
||||||
|
if(attr&&attr1){
|
||||||
|
attr = attr.replace('jnpf_','')
|
||||||
|
id = item[attr]&&item[attr][attr1]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let modelId = column.modelId
|
||||||
|
if (!id || !modelId) return
|
||||||
|
let config = {
|
||||||
|
modelId: modelId,
|
||||||
|
id: id,
|
||||||
|
formTitle: '详情',
|
||||||
|
noShowBtn: 1
|
||||||
|
}
|
||||||
|
this.$nextTick(() => {
|
||||||
|
const url ='/pages/apply/dynamicModel/detail?config=' + this.base64.encode(JSON.stringify(config),"UTF-8")
|
||||||
|
uni.navigateTo({
|
||||||
|
url: url
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
async upCallback(page) {
|
||||||
|
if(!this.firstInitSearchData) {
|
||||||
|
await this.initSearchData()
|
||||||
|
this.firstInitSearchData = true
|
||||||
|
}
|
||||||
|
const query = {
|
||||||
|
currentPage: page.num,
|
||||||
|
pageSize: page.size,
|
||||||
|
menuId : this.menuId,
|
||||||
|
...this.listQuery,
|
||||||
|
...this.searchForm,
|
||||||
|
dataType:0,
|
||||||
|
}
|
||||||
|
request({
|
||||||
|
url: '/api/scm/Voucher/getList',
|
||||||
|
method: 'post',
|
||||||
|
data: query,
|
||||||
|
}).then(res => {
|
||||||
|
let _list = this.columnList.length?res.data.list:[];
|
||||||
|
this.mescroll.endSuccess(_list.length);
|
||||||
|
if (page.num == 1) this.list = [];
|
||||||
|
const list = _list.map(o => ({
|
||||||
|
show: false,
|
||||||
|
...o
|
||||||
|
}));
|
||||||
|
this.list = this.list.concat(_list);
|
||||||
|
}).catch(() => {
|
||||||
|
this.mescroll.endErr();
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleClick(index, index1) {
|
||||||
|
const item = this.list[index]
|
||||||
|
request({
|
||||||
|
url: '/api/scm/Voucher/' + item.id,
|
||||||
|
method: 'delete'
|
||||||
|
}).then(res => {
|
||||||
|
uni.showToast({
|
||||||
|
title: res.msg,
|
||||||
|
complete: () => {
|
||||||
|
this.$u.toast(res.msg)
|
||||||
|
this.mescroll.resetUpScroll()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
open(index) {
|
||||||
|
this.list[index].show = true;
|
||||||
|
this.list.map((val, idx) => {
|
||||||
|
if (index != idx) this.list[idx].show = false;
|
||||||
|
})
|
||||||
|
},
|
||||||
|
search() {
|
||||||
|
if (this.isPreview == '1') return
|
||||||
|
this.searchTimer && clearTimeout(this.searchTimer)
|
||||||
|
this.searchTimer = setTimeout(() => {
|
||||||
|
this.list = [];
|
||||||
|
this.mescroll.resetUpScroll();
|
||||||
|
}, 300)
|
||||||
|
},
|
||||||
|
goDetail(id) {
|
||||||
|
let btnType = ''
|
||||||
|
let btnList = []
|
||||||
|
btnList.push('btn_edit')
|
||||||
|
btnList.push('btn_detail')
|
||||||
|
if(btnList.length==0) return
|
||||||
|
this.jumPage(id,btnList)
|
||||||
|
},
|
||||||
|
addPage() {
|
||||||
|
this.jumPage()
|
||||||
|
},
|
||||||
|
jumPage(id, btnList) {
|
||||||
|
let idVal = id ? "&id=" + id : ''
|
||||||
|
let idList = []
|
||||||
|
for(let i=0;i<this.list.length;i++){
|
||||||
|
idList.push(this.list[i].id)
|
||||||
|
}
|
||||||
|
let idListVal = "&idList="+idList
|
||||||
|
if (!id){
|
||||||
|
uni.navigateTo({
|
||||||
|
url: "./form?menuId=" + this.menuId + "&jurisdictionType=btn_add"
|
||||||
|
})
|
||||||
|
} else if(btnList.includes('btn_detail')){
|
||||||
|
uni.navigateTo({
|
||||||
|
url: "./detail?menuId=" + this.menuId + "&btnList=" + btnList + idVal+idListVal
|
||||||
|
})
|
||||||
|
} else if(btnList.includes('btn_edit')){
|
||||||
|
uni.navigateTo({
|
||||||
|
url: "./form?menuId=" + this.menuId + "&jurisdictionType=btn_edit&btnList=" + btnList + idVal+idListVal
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getColumnList() {
|
||||||
|
let columnPermissionList = []
|
||||||
|
let _appColumnList =this.appColumnList
|
||||||
|
for (let i = 0; i < _appColumnList.length; i++) {
|
||||||
|
columnPermissionList.push(_appColumnList[i])
|
||||||
|
}
|
||||||
|
this.columnList = this.transformColumnList(columnPermissionList, this.dataOptions)
|
||||||
|
},
|
||||||
|
transformColumnList(columnList, dataOptions) {
|
||||||
|
let list = []
|
||||||
|
for (let i = 0; i < columnList.length; i++) {
|
||||||
|
let e = columnList[i]
|
||||||
|
let columProp = e.prop
|
||||||
|
let label = e.label
|
||||||
|
let option = null
|
||||||
|
let options = columProp + "Options"
|
||||||
|
if (!columProp.includes('-')) {
|
||||||
|
columProp = columProp
|
||||||
|
if(this.type=='4'){
|
||||||
|
columProp = columProp +"_name"
|
||||||
|
}
|
||||||
|
if(label.length>4){
|
||||||
|
label = label.substring(0, 4)
|
||||||
|
}
|
||||||
|
e.label = label
|
||||||
|
e.prop = columProp
|
||||||
|
e.option = option
|
||||||
|
list.push(e)
|
||||||
|
} else {
|
||||||
|
e.vModel = columProp.split('-')[1]
|
||||||
|
e.childLabel = e.label.split('-')[1]
|
||||||
|
options = e.vModel + "Options"
|
||||||
|
let prop = columProp.split('-')[0]
|
||||||
|
let label = e.label.split('-')[0]
|
||||||
|
let newItem = {
|
||||||
|
align: "center",
|
||||||
|
jnpfKey: "table",
|
||||||
|
prop,
|
||||||
|
label,
|
||||||
|
children: []
|
||||||
|
}
|
||||||
|
if (!list.some(o => o.prop === prop)) list.push(newItem)
|
||||||
|
for (let i = 0; i < list.length; i++) {
|
||||||
|
if (list[i].prop === prop) {
|
||||||
|
e.prop = e.prop
|
||||||
|
e.vModel = e.vModel
|
||||||
|
if(this.type=='4'){
|
||||||
|
e.prop = e.prop+"_name"
|
||||||
|
e.vModel = e.vModel+"_name"
|
||||||
|
}
|
||||||
|
e.option = option
|
||||||
|
list[i].children.push(e)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return list
|
||||||
|
},
|
||||||
|
cellClick(item) {
|
||||||
|
if (this.sortValue === item.value) return
|
||||||
|
this.listQuery.sort = item.sort
|
||||||
|
this.listQuery.sidx = item.sidx
|
||||||
|
this.sortValue = item.value
|
||||||
|
this.$refs.uDropdown.close();
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.list = [];
|
||||||
|
this.mescroll.resetUpScroll();
|
||||||
|
})
|
||||||
|
},
|
||||||
|
reset() {
|
||||||
|
this.searchForm = JSON.parse(JSON.stringify(this.dataValue))
|
||||||
|
this.key = new Date()
|
||||||
|
},
|
||||||
|
closeDropdown() {
|
||||||
|
this.$refs.uDropdown.close();
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.list = [];
|
||||||
|
this.mescroll.resetUpScroll();
|
||||||
|
})
|
||||||
|
},
|
||||||
|
dataList(data){
|
||||||
|
let _list =data.list
|
||||||
|
return _list;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
page {
|
||||||
|
background-color: #f0f2f6;
|
||||||
|
height: 100%;
|
||||||
|
/* #ifdef MP-ALIPAY */
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
/* #endif */
|
||||||
|
}
|
||||||
|
|
||||||
|
.right-option-box {
|
||||||
|
display: flex;
|
||||||
|
width: max-content;
|
||||||
|
|
||||||
|
.right-option {
|
||||||
|
width: 144rpx;
|
||||||
|
height: 100%;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #fff;
|
||||||
|
background-color: #dd524d;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.more-option {
|
||||||
|
background-color: #1890ff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
Loading…
Reference in new issue