调整接口
This commit is contained in:
@@ -6,6 +6,7 @@ class YuthonProperty(models.Model):
|
||||
|
||||
@api.model
|
||||
def get_complete_ledger_report(self, params):
|
||||
print("params:", params)
|
||||
domain = []
|
||||
if params.get("keyword"):
|
||||
keyword = params["keyword"]
|
||||
@@ -21,6 +22,11 @@ class YuthonProperty(models.Model):
|
||||
if params.get("date_end"):
|
||||
domain.append(("due_date", "<=", params.get("date_end")))
|
||||
|
||||
# condition, 这里需要放到具体的搜索条件中 domain .
|
||||
condition = params.get('condition',False)
|
||||
partner_id = params.get('partner_id',False)
|
||||
company_id = params.get('company_id',False)
|
||||
|
||||
# # 6. 排除无效账单(作废/红冲)
|
||||
# domain += [
|
||||
# ("is_invalid", "=", False),
|
||||
|
||||
@@ -22,8 +22,8 @@ class ReceivableReport extends Component {
|
||||
endDate: null,
|
||||
keyword: "",
|
||||
booleanValue:true,
|
||||
partnerValue:false,
|
||||
selectPartner:{},
|
||||
selectCompany:{},
|
||||
condition:false,
|
||||
conditions:[{
|
||||
'name':'自有',
|
||||
@@ -60,22 +60,31 @@ class ReceivableReport extends Component {
|
||||
async onChangeBoolean(v){
|
||||
this.state.booleanValue = v
|
||||
}
|
||||
getDomainCompany(){
|
||||
return []
|
||||
}
|
||||
|
||||
getDomain(){
|
||||
// 过滤条件
|
||||
return [];
|
||||
return [['id', 'in', [107,106, 215,112,110,214,218,173,219]]]
|
||||
}
|
||||
async onUpdatePartner(v){
|
||||
console.log(v)
|
||||
this.state.selectPartner = v
|
||||
this.state.partnerValue = v.display_name
|
||||
this.state.selectPartner = v[0]
|
||||
}
|
||||
|
||||
async onUpdateCompany(v){
|
||||
this.state.selectCompany = v[0]
|
||||
}
|
||||
|
||||
async onSearch() {
|
||||
const params = {
|
||||
date_start: this.state.startDate,
|
||||
date_end: this.state.endDate,
|
||||
keyword: this.state.keyword,
|
||||
keyword: this.state.keyword || false,
|
||||
condition:this.state.condition || false,
|
||||
partner_id:this.state.selectPartner?.id,
|
||||
company_id:this.state.selectCompany?.id,
|
||||
};
|
||||
const result = await this.serviceOrm.call(
|
||||
this.config.model,
|
||||
|
||||
@@ -36,12 +36,12 @@
|
||||
<div class="col-3">
|
||||
<label>所属公司</label>
|
||||
<Many2XAutocomplete
|
||||
value="state.partnerValue?.display_name"
|
||||
getDomain="getDomain"
|
||||
value="state.selectCompany?.display_name"
|
||||
getDomain="getDomainCompany"
|
||||
resModel="'yuthon.property.company'"
|
||||
fieldString="'所属公司'"
|
||||
activeActions="{}"
|
||||
update.bind="onUpdatePartner"
|
||||
update.bind="onUpdateCompany"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
@@ -57,7 +57,7 @@
|
||||
<div class="col-3">
|
||||
<label>片区管理员</label>
|
||||
<Many2XAutocomplete
|
||||
value="state.partnerValue?.display_name"
|
||||
value="state.selectPartner?.display_name"
|
||||
getDomain="getDomain"
|
||||
resModel="'res.users'"
|
||||
fieldString="'片区管理员'"
|
||||
|
||||
@@ -22,16 +22,15 @@ class YouthonReport extends Component {
|
||||
startDate: null,
|
||||
endDate: null,
|
||||
keyword: "", // 绑定的是 char 类型的数据 input 框,
|
||||
booleanValue:true,
|
||||
partnerValue:false, // 用于值的显示
|
||||
selectPartner:{},
|
||||
selectCompany:{},
|
||||
condition:false,
|
||||
conditions:[{
|
||||
'name':'name1',
|
||||
'value':'value1'
|
||||
'name':'自有',
|
||||
'value':'self'
|
||||
},{
|
||||
'name':'name2',
|
||||
'value':'value2'
|
||||
'name':'代管',
|
||||
'value':'agency'
|
||||
}]
|
||||
});
|
||||
|
||||
@@ -61,22 +60,31 @@ class YouthonReport extends Component {
|
||||
this.state.booleanValue = v
|
||||
}
|
||||
|
||||
getDomainCompany(){
|
||||
return []
|
||||
}
|
||||
|
||||
getDomain(){
|
||||
// 过滤条件
|
||||
return [];
|
||||
return [['id', 'in', [107,106, 215,112,110,214,218,173,219]]]
|
||||
}
|
||||
async onUpdatePartner(v){
|
||||
console.log(v)
|
||||
|
||||
//
|
||||
this.state.selectPartner = v[0]
|
||||
}
|
||||
|
||||
async onUpdateCompany(v){
|
||||
this.state.selectCompany = v[0]
|
||||
}
|
||||
|
||||
async onSearch() {
|
||||
const params = {
|
||||
date_start: this.state.startDate,
|
||||
date_end: this.state.endDate,
|
||||
keyword: this.state.keyword,
|
||||
keyword: this.state.keyword || false,
|
||||
condition:this.state.condition || false,
|
||||
partner_id:this.state.selectPartner?.id,
|
||||
company_id:this.state.selectCompany?.id,
|
||||
};
|
||||
const result = await this.serviceOrm.call(
|
||||
this.config.model,
|
||||
@@ -96,11 +104,18 @@ class YouthonReport extends Component {
|
||||
}
|
||||
|
||||
async onChangeStartDate(date){
|
||||
// 这里修改 date
|
||||
this.state.startDate = date;
|
||||
console.log(date)
|
||||
// 判断 date 是数组
|
||||
if (Array.isArray(date)) {
|
||||
this.state.startDate = date[0];
|
||||
this.state.endDate = date[1]
|
||||
}
|
||||
}
|
||||
async onChangeEndDate(date){
|
||||
this.state.endDate = date;
|
||||
if (Array.isArray(date)) {
|
||||
this.state.startDate = date[0];
|
||||
this.state.endDate = date[1]
|
||||
}
|
||||
}
|
||||
}
|
||||
YouthonReport.props = {...standardActionServiceProps };
|
||||
|
||||
@@ -3,162 +3,116 @@
|
||||
<templates id="template" xml:space="preserve">
|
||||
<t t-name="youthon_report.YouthonReport">
|
||||
<div class="container-fluid d-flex flex-column h-100 mt-2 pb-3 ">
|
||||
<div class="card mb-2">
|
||||
<div class="row g-4">
|
||||
<!-- <div class="card mb-2">-->
|
||||
<!-- <div class="row g-4">-->
|
||||
|
||||
<!-- 未处理违约金 -->
|
||||
<div class="col-md-4">
|
||||
<div class="stat-card danger bg-white">
|
||||
<div class="stat-label mb-2">未处理违约金</div>
|
||||
<div class="stat-value text-dark">¥245,890.00</div>
|
||||
<div class="stat-change text-danger mt-1">
|
||||
▲ 12.5% <small class="text-muted">较上月</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <!– 未处理违约金 –>-->
|
||||
<!-- <div class="col-md-4">-->
|
||||
<!-- <div class="stat-card danger bg-white">-->
|
||||
<!-- <div class="stat-label mb-2">未处理违约金</div>-->
|
||||
<!-- <div class="stat-value text-dark">¥245,890.00</div>-->
|
||||
<!-- <div class="stat-change text-danger mt-1">-->
|
||||
<!-- ▲ 12.5% <small class="text-muted">较上月</small>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
|
||||
<!-- 已收回违约金 -->
|
||||
<div class="col-md-4">
|
||||
<div class="stat-card success bg-white">
|
||||
<div class="stat-label mb-2">已收回违约金</div>
|
||||
<div class="stat-value text-dark">¥1,320,560.00</div>
|
||||
<div class="stat-change text-success mt-1">
|
||||
▲ 8.2% <small class="text-muted">较上月</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <!– 已收回违约金 –>-->
|
||||
<!-- <div class="col-md-4">-->
|
||||
<!-- <div class="stat-card success bg-white">-->
|
||||
<!-- <div class="stat-label mb-2">已收回违约金</div>-->
|
||||
<!-- <div class="stat-value text-dark">¥1,320,560.00</div>-->
|
||||
<!-- <div class="stat-change text-success mt-1">-->
|
||||
<!-- ▲ 8.2% <small class="text-muted">较上月</small>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
|
||||
<!-- 违约合同数 -->
|
||||
<div class="col-md-4">
|
||||
<div class="stat-card info bg-white">
|
||||
<div class="stat-label mb-2">违约合同数</div>
|
||||
<div class="stat-value text-dark">148</div>
|
||||
<div class="stat-change text-danger mt-1">
|
||||
▲ 3.1% <small class="text-muted">较上月</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <!– 违约合同数 –>-->
|
||||
<!-- <div class="col-md-4">-->
|
||||
<!-- <div class="stat-card info bg-white">-->
|
||||
<!-- <div class="stat-label mb-2">违约合同数</div>-->
|
||||
<!-- <div class="stat-value text-dark">148</div>-->
|
||||
<!-- <div class="stat-change text-danger mt-1">-->
|
||||
<!-- ▲ 3.1% <small class="text-muted">较上月</small>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
|
||||
</div>
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
|
||||
|
||||
<div class="card mb-2">
|
||||
<div class="card-body">
|
||||
<!-- 搜索区域 -->
|
||||
<div class="row mb-2" t-ref="search_area">
|
||||
|
||||
<!-- 应收日期范围 -->
|
||||
<div class="col-3">
|
||||
<label>日期范围</label>
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<DateTimeInput
|
||||
range="true"
|
||||
value="state.startDate"
|
||||
type="'date'"
|
||||
placeholder="fromPlaceholder"
|
||||
onChange="(date) => this.onChangeStartDate(date)"
|
||||
/>
|
||||
<i class="oi oi-arrow-right"></i>
|
||||
<DateTimeInput
|
||||
range="true"
|
||||
value="state.endDate"
|
||||
type="'date'"
|
||||
placeholder="toPlaceholder"
|
||||
onChange="(date) => this.onChangeEndDate(date)"
|
||||
/>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 所属公司 -->
|
||||
<div class="col-3">
|
||||
<label>所属公司</label>
|
||||
<Many2XAutocomplete
|
||||
value="state.selectCompany?.display_name"
|
||||
getDomain="getDomainCompany"
|
||||
resModel="'yuthon.property.company'"
|
||||
fieldString="'所属公司'"
|
||||
activeActions="{}"
|
||||
update.bind="onUpdateCompany"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<label>权属类型</label>
|
||||
<select id="formview_default_conditions" class="o_input" t-model="state.condition">
|
||||
<option t-foreach="state.conditions" t-as="cond"
|
||||
t-att-value="cond.value"
|
||||
t-key="cond.name">
|
||||
<t t-esc="cond.name"/>
|
||||
</option>
|
||||
</select>
|
||||
</div><!-- 片区管理员 -->
|
||||
<div class="col-3">
|
||||
<label>片区管理员</label>
|
||||
<Many2XAutocomplete
|
||||
value="state.selectPartner?.display_name"
|
||||
getDomain="getDomain"
|
||||
resModel="'res.users'"
|
||||
fieldString="'片区管理员'"
|
||||
activeActions="{}"
|
||||
update.bind="onUpdatePartner"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<!-- 操作按钮 -->
|
||||
<div class="col-12 mt-3 d-flex justify-content-end gap-2">
|
||||
<button class="btn btn-primary" t-on-click="onSearch">搜索</button>
|
||||
<button class="btn btn-success" t-on-click="onExportExcel">导出</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="card mb-2 ">
|
||||
<div class="card-body">
|
||||
<!-- 搜索区域 -->
|
||||
<div class="row mb-2" t-ref="search_area">
|
||||
<!-- m2o -->
|
||||
<div class="col-4">
|
||||
<label>筛选</label>
|
||||
<Many2XAutocomplete
|
||||
value="state.selectPartner?.display_name"
|
||||
resModel="'res.partner'"
|
||||
getDomain="getDomain"
|
||||
fieldString="'客户'"
|
||||
activeActions="{}"
|
||||
update.bind="onUpdatePartner"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="col-4">
|
||||
<label>条件</label>
|
||||
<select id="formview_default_conditions" class="o_input" t-model="state.condition">
|
||||
<option t-foreach="state.conditions" t-as="cond"
|
||||
t-att-value="cond.value"
|
||||
t-key="cond.name">
|
||||
<t t-esc="cond.name"/>
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
<!-- bool -->
|
||||
<div class="col-4">
|
||||
<label>Boolean</label>
|
||||
<CheckBox value="state.booleanValue"
|
||||
className="'o_field_boolean o_boolean_toggle form-switch'"
|
||||
onChange.bind="onChangeBoolean">
|
||||
​
|
||||
</CheckBox>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<label>日期范围</label>
|
||||
<DateTimeInput
|
||||
value="state.startDate"
|
||||
type="'date'"
|
||||
placeholder="fromPlaceholder"
|
||||
onChange="(date) => this.onChangeStartDate(date)"
|
||||
/>
|
||||
<i class="oi oi-arrow-right"></i>
|
||||
<DateTimeInput
|
||||
value="state.endDate"
|
||||
type="'date'"
|
||||
placeholder="toPlaceholder"
|
||||
onChange="(date) => this.onChangeEndDate(date)"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="col-4">
|
||||
<label>日期范围</label>
|
||||
<div class="row">
|
||||
<div class="col-5">
|
||||
<DateTimeInput
|
||||
value="state.startDate"
|
||||
type="'date'"
|
||||
placeholder="fromPlaceholder"
|
||||
onChange="(date) => this.onChangeStartDate(date)"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-2">至</div>
|
||||
<div class="col-5">
|
||||
<DateTimeInput
|
||||
value="state.startDate"
|
||||
type="'date'"
|
||||
placeholder="fromPlaceholder"
|
||||
onChange="(date) => this.onChangeStartDate(date)"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-4">
|
||||
<label>日期范围</label>
|
||||
<DateTimeInput
|
||||
value="state.startDate"
|
||||
type="'date'"
|
||||
placeholder="fromPlaceholder"
|
||||
onChange="(date) => this.onChangeStartDate(date)"
|
||||
/>
|
||||
<i class="oi oi-arrow-right"></i>
|
||||
<DateTimeInput
|
||||
value="state.endDate"
|
||||
type="'date'"
|
||||
placeholder="toPlaceholder"
|
||||
onChange="(date) => this.onChangeEndDate(date)"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<label>关键字(datetime)</label>
|
||||
<DateTimeInput
|
||||
value="state.startDate"
|
||||
type="'datetime'"
|
||||
placeholder="fromPlaceholder"
|
||||
onChange="(date) => this.onChangeStartDate(date)"
|
||||
/>
|
||||
<i class="oi oi-arrow-right"></i>
|
||||
<DateTimeInput
|
||||
value="state.endDate"
|
||||
type="'datetime'"
|
||||
placeholder="toPlaceholder"
|
||||
onChange="(date) => this.onChangeEndDate(date)"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-4 align-self-end">
|
||||
<button class="btn btn-primary" t-on-click="onSearch">搜索</button>
|
||||
<button class="btn btn-primary" t-on-click="onExportExcel">导出</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ag-grid 区域 -->
|
||||
<div class="row flex-grow-1">
|
||||
|
||||
Reference in New Issue
Block a user