educode_sales 1.0.2 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/controllers/educode_sales/businesses_controller.rb +4 -1
- data/app/controllers/educode_sales/contracts_controller.rb +17 -1
- data/app/controllers/educode_sales/follow_ups_controller.rb +13 -12
- data/app/controllers/educode_sales/home_controller.rb +14 -0
- data/app/controllers/educode_sales/invoices_controller.rb +219 -0
- data/app/controllers/educode_sales/key_person_controller.rb +1 -1
- data/app/controllers/educode_sales/money_plan_records_controller.rb +116 -0
- data/app/controllers/educode_sales/money_plans_controller.rb +32 -28
- data/app/controllers/educode_sales/sale_trends_controller.rb +2 -2
- data/app/controllers/educode_sales/sales_details_controller.rb +1 -1
- data/app/controllers/educode_sales/teachers_controller.rb +7 -2
- data/app/models/educode_sales/business.rb +7 -0
- data/app/models/educode_sales/invoice.rb +5 -0
- data/app/models/educode_sales/invoice_apply.rb +12 -0
- data/app/models/educode_sales/invoice_detail.rb +10 -0
- data/app/models/educode_sales/key_person.rb +1 -1
- data/app/models/educode_sales/money_plan.rb +27 -0
- data/app/models/educode_sales/money_plan_claim.rb +7 -0
- data/app/models/educode_sales/money_plan_record.rb +7 -0
- data/app/models/educode_sales/staff.rb +2 -0
- data/app/views/educode_sales/businesses/edit_plan.html.erb +1 -1
- data/app/views/educode_sales/businesses/key_person.json.jbuilder +1 -1
- data/app/views/educode_sales/contracts/_list.html.erb +1 -1
- data/app/views/educode_sales/follow_ups/index.json.jbuilder +1 -1
- data/app/views/educode_sales/follow_ups/teachers.json.jbuilder +1 -1
- data/app/views/educode_sales/home/search_contracts.json.jbuilder +9 -0
- data/app/views/educode_sales/home/search_money_plans.json.jbuilder +9 -0
- data/app/views/educode_sales/invoices/_apply_records.html.erb +276 -0
- data/app/views/educode_sales/invoices/apply.html.erb +443 -0
- data/app/views/educode_sales/invoices/apply_records.js.erb +1 -0
- data/app/views/educode_sales/invoices/apply_records.json.jbuilder +20 -0
- data/app/views/educode_sales/invoices/details.json.jbuilder +17 -0
- data/app/views/educode_sales/invoices/list.json.jbuilder +14 -0
- data/app/views/educode_sales/invoices/new.html.erb +177 -0
- data/app/views/educode_sales/invoices/sales_details.html.erb +88 -0
- data/app/views/educode_sales/invoices/sales_details.json.jbuilder +14 -0
- data/app/views/educode_sales/money_plan_records/_index.html.erb +258 -0
- data/app/views/educode_sales/money_plan_records/add.html.erb +101 -0
- data/app/views/educode_sales/money_plan_records/confirm_plan.html.erb +167 -0
- data/app/views/educode_sales/money_plan_records/index.js.erb +1 -0
- data/app/views/educode_sales/money_plan_records/index.json.jbuilder +26 -0
- data/app/views/educode_sales/money_plans/_index.html.erb +245 -0
- data/app/views/educode_sales/money_plans/add.html.erb +147 -0
- data/app/views/educode_sales/money_plans/index.json.jbuilder +41 -8
- data/app/views/educode_sales/money_plans/list.html.erb +56 -0
- data/app/views/educode_sales/sales_details/edit.html.erb +6 -0
- data/app/views/educode_sales/teachers/add_keys.html.erb +2 -2
- data/app/views/layouts/educode_sales/application.html.erb +245 -236
- data/config/routes.rb +32 -1
- data/db/migrate/20230527150102_add_category_to_educode_sales_money_plans.rb +7 -0
- data/db/migrate/20230528115654_create_educode_sales_money_plan_records.rb +13 -0
- data/db/migrate/20230529022020_create_educode_sales_money_plan_claims.rb +12 -0
- data/db/migrate/20230531144834_create_educode_sales_invoice_applies.rb +25 -0
- data/db/migrate/20230601011835_create_educode_sales_invoices.rb +14 -0
- data/db/migrate/20230601011943_create_educode_sales_invoice_details.rb +20 -0
- data/lib/educode_sales/version.rb +1 -1
- metadata +35 -4
- data/app/views/educode_sales/money_plans/index.html.erb +0 -222
@@ -0,0 +1,245 @@
|
|
1
|
+
<div style="margin: 10px 10px 10px 10px" id="money_plan_list">
|
2
|
+
<form class="layui-form layui-form-pane" lay-filter="search_plans">
|
3
|
+
<div class="layui-form-item">
|
4
|
+
<div class="layui-inline">
|
5
|
+
<label class="layui-form-label">合同名称</label>
|
6
|
+
<div class="layui-input-inline">
|
7
|
+
<input type="text" name="business" class="layui-input">
|
8
|
+
</div>
|
9
|
+
</div>
|
10
|
+
<div class="layui-inline">
|
11
|
+
<label class="layui-form-label">客户名称</label>
|
12
|
+
<div class="layui-input-inline">
|
13
|
+
<input type="text" name="school" class="layui-input">
|
14
|
+
</div>
|
15
|
+
</div>
|
16
|
+
<div class="layui-inline">
|
17
|
+
<button type="reset" class="layui-btn layui-btn-primary" lay-submit lay-filter="reset_business_search">重置
|
18
|
+
</button>
|
19
|
+
<button type="submit" class="layui-btn layui-btn-primary" id="search_bt" lay-submit lay-filter="search_teachers">搜 索
|
20
|
+
</button>
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
</form>
|
24
|
+
</div>
|
25
|
+
<script type="text/html" id="toolbar_money_plan">
|
26
|
+
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn pull-right" style="margin-left: 20px;" lay-event="addMoney">添加回款计划</button>
|
27
|
+
</script>
|
28
|
+
|
29
|
+
<table class="layui-hide" id="money_plan_table" lay-filter="money_plan_table"></table>
|
30
|
+
|
31
|
+
<script type="text/html" id="school">
|
32
|
+
<a href="<%= base_url%>/colleges/{{d.school_id}}/statistics" class="layui-table-link" target="_blank">{{ d.school }}</a>
|
33
|
+
</script>
|
34
|
+
<script type="text/html" id="currentTableBarmoney_plan">
|
35
|
+
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="apply">开票申请</a>
|
36
|
+
<!-- <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">催款提醒</a> -->
|
37
|
+
|
38
|
+
</script>
|
39
|
+
|
40
|
+
<script>
|
41
|
+
layui.use(['form', 'table', 'miniPage', 'element', 'request'], function() {
|
42
|
+
var $ = layui.jquery,
|
43
|
+
form = layui.form,
|
44
|
+
request = layui.request,
|
45
|
+
miniPage = layui.miniPage;
|
46
|
+
laydate = layui.laydate;
|
47
|
+
table = layui.table;
|
48
|
+
|
49
|
+
laydate.render({
|
50
|
+
elem: '#date',
|
51
|
+
range: true
|
52
|
+
});
|
53
|
+
|
54
|
+
|
55
|
+
|
56
|
+
table.render({
|
57
|
+
elem: '#money_plan_table',
|
58
|
+
url: '/missions/money_plans',
|
59
|
+
toolbar: '#toolbar_money_plan',
|
60
|
+
defaultToolbar: ['filter'],
|
61
|
+
initSort: {
|
62
|
+
field: 'date_at',
|
63
|
+
type: 'desc' //排序方式 asc: 升序、desc: 降序、null: 默认排序
|
64
|
+
},
|
65
|
+
cols: [
|
66
|
+
[{
|
67
|
+
field: 'id',
|
68
|
+
width: 80,
|
69
|
+
title: '序号',
|
70
|
+
type: 'numbers',
|
71
|
+
}, {
|
72
|
+
field: 'number',
|
73
|
+
width: 120,
|
74
|
+
title: '合同编号'
|
75
|
+
}, {
|
76
|
+
field: 'business_name',
|
77
|
+
width: 150,
|
78
|
+
title: '合同名称'
|
79
|
+
}, {
|
80
|
+
field: 'school',
|
81
|
+
width: 180,
|
82
|
+
title: '客户名称'
|
83
|
+
}, {
|
84
|
+
field: 'staff_manages',
|
85
|
+
width: 120,
|
86
|
+
title: '销售经理'
|
87
|
+
}, {
|
88
|
+
field: 'category',
|
89
|
+
width: 120,
|
90
|
+
title: '回款类别',
|
91
|
+
}, {
|
92
|
+
field: 'amount',
|
93
|
+
width: 120,
|
94
|
+
sort: true,
|
95
|
+
title: '金额',
|
96
|
+
}, {
|
97
|
+
field: 'rate',
|
98
|
+
width: 100,
|
99
|
+
title: '比例',
|
100
|
+
}, {
|
101
|
+
field: 'payment_clause',
|
102
|
+
width: 200,
|
103
|
+
title: '付款条款',
|
104
|
+
}, {
|
105
|
+
field: 'date_at',
|
106
|
+
width: 150,
|
107
|
+
title: '计划回款时间',
|
108
|
+
}, {
|
109
|
+
field: 'return_period',
|
110
|
+
width: 120,
|
111
|
+
title: '回款周期',
|
112
|
+
}, {
|
113
|
+
field: 'state',
|
114
|
+
width: 100,
|
115
|
+
title: '回款状态',
|
116
|
+
}, {
|
117
|
+
field: 'stage',
|
118
|
+
width: 100,
|
119
|
+
title: '阶段',
|
120
|
+
}, {
|
121
|
+
field: 'accounts_state',
|
122
|
+
width: 150,
|
123
|
+
title: '应收款类型',
|
124
|
+
}, {
|
125
|
+
field: 'busireceipt_state',
|
126
|
+
width: 120,
|
127
|
+
title: '开票状态',
|
128
|
+
}, {
|
129
|
+
title: '操作',
|
130
|
+
minWidth: 200,
|
131
|
+
toolbar: '#currentTableBarmoney_plan',
|
132
|
+
align: "center",
|
133
|
+
fixed: 'right'
|
134
|
+
}]
|
135
|
+
],
|
136
|
+
limit: 20,
|
137
|
+
limits: [10, 15, 20, 30, 40, 50, 60, 70, 80, 90],
|
138
|
+
page: true
|
139
|
+
});
|
140
|
+
|
141
|
+
var sort = {},
|
142
|
+
search = {};
|
143
|
+
table.on('sort(money_plan_table)', function(obj) {
|
144
|
+
sort.field = obj.field;
|
145
|
+
sort.order = obj.type;
|
146
|
+
table.reload('money_plan_table', {
|
147
|
+
initSort: obj,
|
148
|
+
where: {
|
149
|
+
sort: sort,
|
150
|
+
q: search
|
151
|
+
}
|
152
|
+
});
|
153
|
+
})
|
154
|
+
|
155
|
+
// 监听搜索操作
|
156
|
+
form.on('submit(search_teachers)', function(data) {
|
157
|
+
search = data.field
|
158
|
+
table.reload('money_plan_table', {
|
159
|
+
page: {
|
160
|
+
curr: 1
|
161
|
+
},
|
162
|
+
where: {
|
163
|
+
q: search,
|
164
|
+
sort: sort
|
165
|
+
}
|
166
|
+
}, 'data');
|
167
|
+
return false;
|
168
|
+
});
|
169
|
+
|
170
|
+
form.on('submit(reset_business_search)', function(data) {
|
171
|
+
var field = data.field;
|
172
|
+
form.val('search_teachers', {
|
173
|
+
area: "",
|
174
|
+
date: "",
|
175
|
+
staff_id: "",
|
176
|
+
clazz: "",
|
177
|
+
professional_title: "",
|
178
|
+
school: "",
|
179
|
+
business: ""
|
180
|
+
});
|
181
|
+
return false;
|
182
|
+
});
|
183
|
+
|
184
|
+
table.on('toolbar(money_plan_table)', function(obj) {
|
185
|
+
if (obj.event == 'addMoney') {
|
186
|
+
var content = miniPage.getHrefContent('/missions/money_plans/add')
|
187
|
+
var openWH = miniPage.getOpenWidthHeight();
|
188
|
+
sindex = layer.open({
|
189
|
+
title: '添加回款计划',
|
190
|
+
type: 1,
|
191
|
+
shade: 0.2,
|
192
|
+
maxmin: true,
|
193
|
+
shadeClose: true,
|
194
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
195
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
196
|
+
content: content
|
197
|
+
});
|
198
|
+
$(window).on("resize", function() {
|
199
|
+
layer.full(sindex);
|
200
|
+
});
|
201
|
+
}
|
202
|
+
})
|
203
|
+
|
204
|
+
table.on('tool(money_plan_table)', function(obj) {
|
205
|
+
var data = obj.data;
|
206
|
+
business_id = data.business_id + "";
|
207
|
+
business = [{
|
208
|
+
value: data.business_id + "",
|
209
|
+
name: data.business
|
210
|
+
}]
|
211
|
+
if (obj.event === 'apply') { // 监听添加操作
|
212
|
+
var content = miniPage.getHrefContent('/missions/invoices/apply?id=' + data.business_id);
|
213
|
+
var openWH = miniPage.getOpenWidthHeight();
|
214
|
+
sindex = layer.open({
|
215
|
+
title: '开票申请',
|
216
|
+
type: 1,
|
217
|
+
shade: 0.2,
|
218
|
+
maxmin: true,
|
219
|
+
shadeClose: true,
|
220
|
+
area: [openWH[0] + 'px', openWH[1] + 'px'],
|
221
|
+
offset: [openWH[2] + 'px', openWH[3] + 'px'],
|
222
|
+
content: content
|
223
|
+
});
|
224
|
+
$(window).on("resize", function() {
|
225
|
+
layer.full(sindex);
|
226
|
+
});
|
227
|
+
}
|
228
|
+
});
|
229
|
+
|
230
|
+
});
|
231
|
+
</script>
|
232
|
+
<style>
|
233
|
+
.layui-table-tool-temp {
|
234
|
+
padding-right: 30px;
|
235
|
+
!important;
|
236
|
+
}
|
237
|
+
|
238
|
+
.layui-table-fixed .layui-table-body {
|
239
|
+
height: auto!important;
|
240
|
+
}
|
241
|
+
|
242
|
+
.layui-table-fixed.layui-hide {
|
243
|
+
display: block!important;
|
244
|
+
}
|
245
|
+
</style>
|
@@ -0,0 +1,147 @@
|
|
1
|
+
<div style="padding:10px">
|
2
|
+
<div class="layui-form layuimini-form" lay-filter="searchform">
|
3
|
+
<div class="layui-form-item">
|
4
|
+
<label class="layui-form-label required" style="width: 80px !important;">合同名称:</label>
|
5
|
+
<div class="layui-input-inline">
|
6
|
+
<div id="business" style="width:600px;"></div>
|
7
|
+
</div>
|
8
|
+
</div>
|
9
|
+
<div class="layui-form-item">
|
10
|
+
<div class="layui-inline">
|
11
|
+
<label class="layui-form-label required">回款类别:</label>
|
12
|
+
<div class="layui-input-inline">
|
13
|
+
<%= select_tag "category[0]", options_for_select(EducodeSales::MoneyPlan.categories.keys), { 'lay-filter': 'category', 'lay-verify': "required", include_blank: true, "lay-search": "" } %>
|
14
|
+
</div>
|
15
|
+
</div>
|
16
|
+
<div class="layui-inline">
|
17
|
+
<label class="layui-form-label required" style="width:50px;">金额:</label>
|
18
|
+
<div class="layui-input-inline">
|
19
|
+
<input type="text" name="amount[0]" value="" class="layui-input" lay-verify="required">
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
<div class="layui-inline">
|
23
|
+
<label class="layui-form-label required" style="width: 110px;">计划回款时间:</label>
|
24
|
+
<div class="layui-input-inline">
|
25
|
+
<input type="text" name="date_at[0]" value="" class="layui-input" lay-verify="required" id="date_at">
|
26
|
+
</div>
|
27
|
+
</div>
|
28
|
+
<div class="layui-inline">
|
29
|
+
<label class="layui-form-label">付款条件:</label>
|
30
|
+
<div class="layui-input-inline">
|
31
|
+
<input type="text" name="payment_clause[0]" value="" class="layui-input">
|
32
|
+
</div>
|
33
|
+
</div>
|
34
|
+
<div class="layui-inline">
|
35
|
+
<button class="layui-btn" id="addInput">+</button>
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
<div id="wraper"></div>
|
39
|
+
<div class="layui-form-item">
|
40
|
+
<div class="layui-input-block">
|
41
|
+
<button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveBtn">保存</button>
|
42
|
+
</div>
|
43
|
+
</div>
|
44
|
+
</div>
|
45
|
+
</div>
|
46
|
+
<script type="text/html" id="input_wraper">
|
47
|
+
<div class="layui-form-item">
|
48
|
+
<div class="layui-inline">
|
49
|
+
<label class="layui-form-label required">回款类别:</label>
|
50
|
+
<div class="layui-input-inline">
|
51
|
+
<%= select_tag "category[{{d.num}}]", options_for_select(EducodeSales::MoneyPlan.categories.keys), { 'lay-filter': 'category', 'lay-verify': "required", include_blank: true, "lay-search": "" } %>
|
52
|
+
</div>
|
53
|
+
</div>
|
54
|
+
<div class="layui-inline">
|
55
|
+
<label class="layui-form-label required" style="width:50px;">金额:</label>
|
56
|
+
<div class="layui-input-inline">
|
57
|
+
<input type="text" name="amount[{{d.num}}]" value="" class="layui-input" lay-verify="required">
|
58
|
+
</div>
|
59
|
+
</div>
|
60
|
+
<div class="layui-inline">
|
61
|
+
<label class="layui-form-label required" style="width: 110px;">计划回款时间:</label>
|
62
|
+
<div class="layui-input-inline">
|
63
|
+
<input type="text" name="date_at[{{d.num}}]" value="" class="layui-input date_{{d.num}}" lay-verify="required">
|
64
|
+
</div>
|
65
|
+
</div>
|
66
|
+
<div class="layui-inline">
|
67
|
+
<label class="layui-form-label">付款条件:</label>
|
68
|
+
<div class="layui-input-inline">
|
69
|
+
<input type="text" name="payment_clause[{{d.num}}]" value="" class="layui-input">
|
70
|
+
</div>
|
71
|
+
</div>
|
72
|
+
</div>
|
73
|
+
</script>
|
74
|
+
|
75
|
+
<script>
|
76
|
+
|
77
|
+
layui.use(['form', 'table', 'upload', 'laytpl', 'request', 'laydate', 'selectInput'], function() {
|
78
|
+
var form = layui.form,
|
79
|
+
layer = layui.layer,
|
80
|
+
table = layui.table,
|
81
|
+
laydate = layui.laydate,
|
82
|
+
laytpl = layui.laytpl,
|
83
|
+
request = layui.request,
|
84
|
+
selectInput = layui.selectInput,
|
85
|
+
$ = layui.$;
|
86
|
+
form.render();
|
87
|
+
|
88
|
+
laydate.render({
|
89
|
+
elem: '#date_at',
|
90
|
+
});
|
91
|
+
|
92
|
+
|
93
|
+
var business_id = "";
|
94
|
+
var business_select = selectInput.render({
|
95
|
+
elem: '#business',
|
96
|
+
name: 'bussiness_name', // 渲染的input的name值
|
97
|
+
layFilter: 'test', //同layui form参数lay-filter
|
98
|
+
layVerType: 'tips', // 同layui form参数lay-verType
|
99
|
+
layReqText: '请填写文本', //同layui form参数lay-ReqText
|
100
|
+
hasSelectIcon: false,
|
101
|
+
placeholder: '请输入合同名称', // 渲染的inputplaceholder值
|
102
|
+
remoteSearch: true, // 是否启用远程搜索 默认是false,和远程搜索回调保存同步
|
103
|
+
remoteMethod: function (value, cb) { // 远程搜索的回调函数
|
104
|
+
if (!value) {
|
105
|
+
business_id = "";
|
106
|
+
return cb([]);
|
107
|
+
}
|
108
|
+
request.get('missions/search_contracts?q=' + value, {}, function (res) {
|
109
|
+
if (res.data.length == 0) {
|
110
|
+
business_select.emptyValue();
|
111
|
+
return cb([])
|
112
|
+
}
|
113
|
+
return cb(res)
|
114
|
+
})
|
115
|
+
}
|
116
|
+
});
|
117
|
+
|
118
|
+
|
119
|
+
var num = 0;
|
120
|
+
$("#addInput").on("click", function() {
|
121
|
+
num += 1;
|
122
|
+
var getTpl = input_wraper.innerHTML, view = document.getElementById('wraper');
|
123
|
+
laytpl(getTpl).render({num: num}, function(html){
|
124
|
+
$(view).append(html);
|
125
|
+
});
|
126
|
+
form.render();
|
127
|
+
laydate.render({
|
128
|
+
elem: '.date_' + num,
|
129
|
+
});
|
130
|
+
})
|
131
|
+
|
132
|
+
|
133
|
+
form.on('submit(saveBtn)', function(data) {
|
134
|
+
data.field.num = num;
|
135
|
+
data.field.business_id = business_select.getValue() || business_id;
|
136
|
+
if (data.field.business_id == '') {
|
137
|
+
layer.msg('请选择合同')
|
138
|
+
return false;
|
139
|
+
}
|
140
|
+
request.post("missions/money_plans/", data.field, function(res) {
|
141
|
+
layer.close(parent.sindex)
|
142
|
+
parent.table.reload('money_plan_table')
|
143
|
+
})
|
144
|
+
return false;
|
145
|
+
});
|
146
|
+
});
|
147
|
+
</script>
|
@@ -2,20 +2,53 @@ total_amount = 0
|
|
2
2
|
json.data do
|
3
3
|
json.array! @money_plans do |d|
|
4
4
|
json.id d.id
|
5
|
+
json.business_name d.business.name
|
5
6
|
json.date_at (d&.date_at&.to_s(:date) || "")
|
6
7
|
json.amount d.amount
|
7
|
-
total_amount += d.amount
|
8
8
|
json.clazz d.clazz
|
9
|
-
json.business d.
|
10
|
-
json.business_id d.
|
11
|
-
json.school
|
12
|
-
json.school_id
|
9
|
+
json.business d.business.name
|
10
|
+
json.business_id d.business.id
|
11
|
+
json.school d.business.school.name
|
12
|
+
json.school_id d.business.school_id
|
13
13
|
json.staff d.staff.user.real_name
|
14
|
+
json.number d.business.number
|
15
|
+
json.category d.category || ''
|
16
|
+
json.payment_clause d.payment_clause
|
17
|
+
json.stage d.business&.last_follow_up&.stage&.name || ''
|
18
|
+
json.return_period d.return_period
|
19
|
+
json.signed_date d.business&.last_follow_up&.signed_date
|
20
|
+
json.actual_amount d.business&.last_follow_up&.actual_amount
|
21
|
+
json.rate d.business&.last_follow_up&.actual_amount ? (d.amount / d.business.last_follow_up.actual_amount * 100.0).round(2) : ''
|
22
|
+
json.staff_manages d.business&.last_follow_up&.assign_follow_ups.present? ? (d.business.last_follow_up.assign_follow_ups.map{ |d| d.staff.user.real_name}.join("、")) : d.business.staff&.user&.real_name
|
23
|
+
if d['claim_num'] > 0
|
24
|
+
json.state '已回款'
|
25
|
+
elsif d['claim_num'] == 0 && d.date_at < Time.now
|
26
|
+
json.state '正常'
|
27
|
+
else
|
28
|
+
json.state '已逾期'
|
29
|
+
end
|
30
|
+
if d['claim_num'] > 0
|
31
|
+
json.accounts_state ''
|
32
|
+
else
|
33
|
+
case d.business&.last_follow_up&.stage&.name
|
34
|
+
when '已中标'
|
35
|
+
json.accounts_state '中标应收款'
|
36
|
+
when '已签单'
|
37
|
+
json.accounts_state '合同应收款'
|
38
|
+
when '已部署'
|
39
|
+
json.accounts_state '部署应收款'
|
40
|
+
when '已验收'
|
41
|
+
json.accounts_state '验收应收款'
|
42
|
+
when '已回款'
|
43
|
+
json.accounts_state '质保金'
|
44
|
+
when '已开票'
|
45
|
+
json.accounts_state '开票应收款'
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
14
50
|
end
|
15
51
|
end
|
16
52
|
|
17
|
-
json.totalRow do
|
18
|
-
json.amount total_amount.round(2).to_s + '/' + @total_amount.round(2).to_s
|
19
|
-
end
|
20
53
|
json.code 0
|
21
54
|
json.count @money_plans.total_count
|
@@ -0,0 +1,56 @@
|
|
1
|
+
<%= Gon::Base.render_data %>
|
2
|
+
<div class="layui-tab" lay-filter="money_plan_tab">
|
3
|
+
<ul class="layui-tab-title">
|
4
|
+
<li class="layui-this">回款计划</li>
|
5
|
+
<li class="">回款记录</li>
|
6
|
+
<li class="">开票记录</li>
|
7
|
+
</ul>
|
8
|
+
<div class="layui-tab-content">
|
9
|
+
<div class="layui-tab-item layui-show">
|
10
|
+
<%=render 'index' %>
|
11
|
+
</div>
|
12
|
+
<div class="layui-tab-item">
|
13
|
+
<div id="monley_plan_record_wraper"></div>
|
14
|
+
</div>
|
15
|
+
<div class="layui-tab-item">
|
16
|
+
<div id="invoice_wraper"></div>
|
17
|
+
</div>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
|
21
|
+
<script>
|
22
|
+
layui.use(['form', 'table', 'miniPage', 'element', 'request', 'laydate', 'element'], function() {
|
23
|
+
var $ = layui.jquery,
|
24
|
+
form = layui.form,
|
25
|
+
request = layui.request,
|
26
|
+
dropdown = layui.dropdown,
|
27
|
+
miniPage = layui.miniPage,
|
28
|
+
element = layui.element,
|
29
|
+
laydate = layui.laydate;
|
30
|
+
var laydate = layui.laydate;
|
31
|
+
|
32
|
+
|
33
|
+
|
34
|
+
element.render();
|
35
|
+
element.on('tab(money_plan_tab)', function(data) {
|
36
|
+
if (data.index == 1 && $("#money_plan_record").length == 0) {
|
37
|
+
loadPage('/missions/money_plan_records')
|
38
|
+
} else if (data.index == 2 && $("#invoice_apply").length == 0) {
|
39
|
+
loadPage('/missions/invoices/apply_records')
|
40
|
+
}
|
41
|
+
});
|
42
|
+
|
43
|
+
|
44
|
+
function loadPage(url) {
|
45
|
+
var layer_index = layer.load(0, {shade: [0.1, '#fff']});
|
46
|
+
Rails.ajax({
|
47
|
+
url: url,
|
48
|
+
type: 'GET',
|
49
|
+
dataType: "script",
|
50
|
+
success: function (res) {
|
51
|
+
layer.close(layer_index);
|
52
|
+
}
|
53
|
+
});
|
54
|
+
}
|
55
|
+
})
|
56
|
+
</script>
|
@@ -45,6 +45,12 @@
|
|
45
45
|
<input type="text" name="delivery_date" value="<%= @sale_detail.delivery_date %>" class="layui-input" lay-verify="required" id="delivery_date">
|
46
46
|
</div>
|
47
47
|
</div>
|
48
|
+
<div class="layui-inline">
|
49
|
+
<label class="layui-form-label required">知识产权归属:</label>
|
50
|
+
<div class="layui-input-inline">
|
51
|
+
<%= select_tag "proprietorship", options_for_select(EducodeSales::SalesDetail.proprietorships.keys, @sale_detail.proprietorship), { 'lay-filter': 'proprietorship', 'lay-verify': "required", include_blank: true, "lay-search": "" } %>
|
52
|
+
</div>
|
53
|
+
</div>
|
48
54
|
</div>
|
49
55
|
<div class="layui-form-item">
|
50
56
|
<div class="layui-input-block">
|
@@ -160,7 +160,7 @@
|
|
160
160
|
});
|
161
161
|
});
|
162
162
|
|
163
|
-
|
163
|
+
user_input = selectInput.render({
|
164
164
|
elem: '#teacher',
|
165
165
|
name: 'name', // 渲染的input的name值
|
166
166
|
layFilter: 'teacher',
|
@@ -201,7 +201,7 @@
|
|
201
201
|
form.on('submit(add_keys)', function (data) {
|
202
202
|
data.field.name = user_input.getValue()
|
203
203
|
if (data.field.name == "") {
|
204
|
-
data.field.name = gon.teacher;
|
204
|
+
data.field.name = $("#"+user_input._input).val() // gon.teacher;
|
205
205
|
}
|
206
206
|
|
207
207
|
request.authPost("missions/follow_ups/" + parent.follow_up_id + "/add_keys", data.field, function (res) {
|