centaline-data-driven 1.2.22 → 1.2.25
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.
- package/package.json +1 -1
- package/src/centaline/api/index.js +20 -0
- package/src/centaline/common/index.js +3 -0
- package/src/centaline/css/common.css +9 -1
- package/src/centaline/dynamicComboBoxWithTextBox/src/dynamicComboBoxWithTextBox.vue +10 -1
- package/src/centaline/dynamicDetail/src/dynamicContactList.vue +67 -137
- package/src/centaline/dynamicDetail/src/dynamicPropertyDetailRET.vue +15 -72
- package/src/centaline/dynamicFile/src/dynamicFile.vue +40 -2
- package/src/centaline/dynamicPhotoSelectList/src/dynamicPhotoSelectList.vue +2 -1
- package/src/centaline/loader/src/ctl/ComboBoxWithTextBox.js +18 -0
- package/src/centaline/loader/src/ctl/ContactList.js +151 -0
- package/src/centaline/loader/src/ctl/Detail.js +15 -0
- package/src/centaline/loader/src/ctl.js +1 -0
- package/src/main.js +3 -1
- package/wwwroot/static/centaline/centaline-data-driven.js +3 -3
- package/wwwroot/static/centaline/centaline-data-driven.js.map +1 -1
package/package.json
CHANGED
|
@@ -127,6 +127,10 @@ Axios.defaults.withCredentials = true;//允许带上跨域cookies
|
|
|
127
127
|
|
|
128
128
|
const api = {
|
|
129
129
|
get(url, params, callback) {
|
|
130
|
+
if(common.flagRouterSelf()){
|
|
131
|
+
url=url+params.action;
|
|
132
|
+
params=params.para;
|
|
133
|
+
}
|
|
130
134
|
return Axios.get(url, params, {
|
|
131
135
|
headers: {
|
|
132
136
|
headers: common.getDataDrivenOpts().handler.getRequestHeaders()
|
|
@@ -138,6 +142,10 @@ const api = {
|
|
|
138
142
|
);
|
|
139
143
|
},
|
|
140
144
|
post(url, params, callback) {
|
|
145
|
+
if(common.flagRouterSelf()){
|
|
146
|
+
url=url+params.action;
|
|
147
|
+
params=params.para;
|
|
148
|
+
}
|
|
141
149
|
return Axios.post(url, params, {
|
|
142
150
|
headers: {
|
|
143
151
|
headers: common.getDataDrivenOpts().handler.getRequestHeaders()
|
|
@@ -214,6 +222,14 @@ const api = {
|
|
|
214
222
|
}
|
|
215
223
|
else {
|
|
216
224
|
Vue.prototype.$message.error(response.data.rtnMsg);
|
|
225
|
+
// Vue.prototype.$message({
|
|
226
|
+
// message: response.data.rtnMsg,//消息文字
|
|
227
|
+
// dangerouslyUseHTMLString: false,
|
|
228
|
+
// type: 'error',//主题:success/warning/info/error
|
|
229
|
+
// center: true,//是否居中
|
|
230
|
+
// duration: 0, //显示时间, 毫秒。设为 0 则不会自动关闭
|
|
231
|
+
// showClose: true,//是否显示关闭按钮
|
|
232
|
+
// });
|
|
217
233
|
}
|
|
218
234
|
}
|
|
219
235
|
return Promise.reject(response);
|
|
@@ -222,6 +238,10 @@ const api = {
|
|
|
222
238
|
return Promise.resolve(response.data);
|
|
223
239
|
},
|
|
224
240
|
postHandler(url, params, formData) {
|
|
241
|
+
if(common.flagRouterSelf()){
|
|
242
|
+
url=url+params.action;
|
|
243
|
+
params=params.para;
|
|
244
|
+
}
|
|
225
245
|
return Axios.post(url, params, {
|
|
226
246
|
headers: common.getDataDrivenOpts().handler.getRequestHeaders()
|
|
227
247
|
}).then(this.postThenHandler).catch((ex) => {
|
|
@@ -768,4 +768,12 @@ html {
|
|
|
768
768
|
}
|
|
769
769
|
.ct-table-content .checkbox-td .el-checkbox{
|
|
770
770
|
min-width: initial;
|
|
771
|
-
}
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
.el-message__content{
|
|
774
|
+
white-space: pre-line;
|
|
775
|
+
line-height: 20px!important;
|
|
776
|
+
}
|
|
777
|
+
.details-mid .st-serach-screen,.details-mid .ct-searchtable{
|
|
778
|
+
border-radius: initial;
|
|
779
|
+
}
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
<el-input v-if="model.id3" v-bind="model.attrs"
|
|
49
49
|
:placeholder="model.placeholder3" v-model="model.value3"
|
|
50
50
|
@input="inputHandler($event)" @change="changeHandler($event)"
|
|
51
|
-
:disabled="model.lock" :maxlength="
|
|
51
|
+
:disabled="model.lock" :maxlength="maxlength4"></el-input>
|
|
52
52
|
</div>
|
|
53
53
|
</div>
|
|
54
54
|
</div>
|
|
@@ -110,6 +110,15 @@
|
|
|
110
110
|
set: function (v) {
|
|
111
111
|
|
|
112
112
|
}
|
|
113
|
+
},
|
|
114
|
+
maxlength4()
|
|
115
|
+
{
|
|
116
|
+
if(this.model.max4)
|
|
117
|
+
{
|
|
118
|
+
return parseInt(this.model.max4)
|
|
119
|
+
}
|
|
120
|
+
return 99999
|
|
121
|
+
|
|
113
122
|
}
|
|
114
123
|
},
|
|
115
124
|
mounted() {
|
|
@@ -3,41 +3,30 @@
|
|
|
3
3
|
<!-- 联系人 -->
|
|
4
4
|
<div class="contacts-head">
|
|
5
5
|
<div class="title-l">联系人信息</div>
|
|
6
|
-
<
|
|
6
|
+
<component class="el-button contacts-but el-button--info el-button--mini max-info"
|
|
7
|
+
v-if="apiRouter!==null && !flagLook" :is="apiRouter.is" :vmodel="apiRouter"
|
|
8
|
+
@click="lookOwner(apiRouter,$event)"></component>
|
|
7
9
|
<div class="contacts-tips" v-else>
|
|
8
|
-
<
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
<component class="el-button el-button--primary el-button--mini max-btn-add"
|
|
11
|
+
v-if="model && model.buttons!==null && model.buttons.length>0"
|
|
12
|
+
v-for="(col, index) in model.buttons" :key="index"
|
|
13
|
+
:is="col.is" :vmodel="col"
|
|
14
|
+
@click="fieldClickHandler(col,$event)"></component>
|
|
11
15
|
</div>
|
|
12
16
|
</div>
|
|
13
17
|
<!-- 表格 -->
|
|
14
|
-
<div class="contacts-table" v-show="
|
|
15
|
-
<el-table
|
|
16
|
-
:
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
:min-width="item.width"
|
|
27
|
-
>
|
|
28
|
-
<template slot-scope="scope">
|
|
29
|
-
<span v-if="scope.column.property=='phone'">{{ scope.row.phone }}
|
|
30
|
-
|
|
31
|
-
</span>
|
|
32
|
-
<span v-else-if="scope.column.property=='tel'">
|
|
33
|
-
{{scope.row.tel}}
|
|
34
|
-
|
|
35
|
-
</span>
|
|
36
|
-
<span v-else>
|
|
37
|
-
{{scope.row[scope.column.property]}}
|
|
38
|
-
</span>
|
|
39
|
-
</template>
|
|
40
|
-
</el-table-column>
|
|
18
|
+
<div class="contacts-table" v-show="flagLook">
|
|
19
|
+
<el-table :data="tableData" stripe fit style="width: 100%" :header-cell-style="{background:'#f3f3f3',color:'#333333'}">
|
|
20
|
+
<el-table-column v-for="(item,index) in columnList" :key="index"
|
|
21
|
+
:property="item.prop" :label="item.label" :min-width="item.width" >
|
|
22
|
+
<template slot-scope="scope">
|
|
23
|
+
<span v-if="scope.column.property=='phone'">{{scope.row.phone }}</span>
|
|
24
|
+
<span v-else-if="scope.column.property=='tel'">{{scope.row.tel}}</span>
|
|
25
|
+
<span v-else>
|
|
26
|
+
{{scope.row[scope.column.property]}}
|
|
27
|
+
</span>
|
|
28
|
+
</template>
|
|
29
|
+
</el-table-column>
|
|
41
30
|
</el-table>
|
|
42
31
|
</div>
|
|
43
32
|
</div>
|
|
@@ -53,10 +42,14 @@
|
|
|
53
42
|
vmodel: Object,
|
|
54
43
|
api: String,
|
|
55
44
|
apiParam: Object,
|
|
45
|
+
apiRouter: {
|
|
46
|
+
Object,
|
|
47
|
+
default:{}
|
|
48
|
+
},
|
|
56
49
|
},
|
|
57
50
|
data() {
|
|
58
51
|
return {
|
|
59
|
-
|
|
52
|
+
flagLook: false,
|
|
60
53
|
columnList: [
|
|
61
54
|
{
|
|
62
55
|
prop: 'name',
|
|
@@ -115,40 +108,31 @@
|
|
|
115
108
|
opening:'first',
|
|
116
109
|
}
|
|
117
110
|
},
|
|
118
|
-
mounted() {
|
|
119
|
-
var self = this;
|
|
120
|
-
this.$nextTick(function () {
|
|
121
|
-
if (self.vmodel) {
|
|
122
|
-
self.load(self.vmodel);
|
|
123
|
-
}
|
|
124
|
-
else if (typeof self.source !== 'undefined') {
|
|
125
|
-
self.loaderObj.Detail(self.source,null,self.load);
|
|
126
|
-
}
|
|
127
|
-
else if (typeof self.api !== 'undefined') {
|
|
128
|
-
self.loaderObj.Detail(self.api,self.apiParam, self.load);
|
|
129
|
-
}
|
|
130
|
-
});
|
|
111
|
+
mounted() {
|
|
131
112
|
},
|
|
132
113
|
activated() {
|
|
133
114
|
this.$nextTick(() => {
|
|
134
|
-
|
|
115
|
+
this.setDetailHeight();
|
|
135
116
|
})
|
|
136
117
|
},
|
|
137
118
|
methods: {
|
|
138
119
|
load(data) {
|
|
139
120
|
var self = this;
|
|
140
|
-
this.model = data;
|
|
121
|
+
this.model = data;
|
|
141
122
|
this.model.$vue = self;
|
|
142
|
-
|
|
143
123
|
},
|
|
144
124
|
loadFields() {
|
|
145
125
|
var self = this;
|
|
146
126
|
},
|
|
147
|
-
lookOwner() {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
127
|
+
lookOwner(router) {
|
|
128
|
+
var self = this;
|
|
129
|
+
var submitData=router.getActionPara({}).para;
|
|
130
|
+
router.doAction(submitData, (res) => {
|
|
131
|
+
if (res.rtnCode === 200) {
|
|
132
|
+
self.loaderObj.ContactList(res,null,self.load);
|
|
133
|
+
self.flagLook = true;
|
|
134
|
+
}
|
|
135
|
+
});
|
|
152
136
|
},
|
|
153
137
|
setDetailHeight() {
|
|
154
138
|
this.$nextTick(() => {
|
|
@@ -164,11 +148,11 @@
|
|
|
164
148
|
var self = this;
|
|
165
149
|
var callBack=null;
|
|
166
150
|
let submitData={};
|
|
167
|
-
var router = this.model.
|
|
151
|
+
var router = this.model.buttons.find((v) => {
|
|
168
152
|
return v.id === field.id;
|
|
169
153
|
});
|
|
170
|
-
if(router==undefined && this.model.
|
|
171
|
-
router = this.model.
|
|
154
|
+
if(router==undefined && this.model.actionRouter){
|
|
155
|
+
router = this.model.actionRouter.find((v) => {
|
|
172
156
|
return v.id === field.id;
|
|
173
157
|
});
|
|
174
158
|
}
|
|
@@ -320,53 +304,6 @@
|
|
|
320
304
|
}
|
|
321
305
|
</script>
|
|
322
306
|
<style lang="scss" scoped>
|
|
323
|
-
.main{
|
|
324
|
-
background: #ECEFF2;
|
|
325
|
-
}
|
|
326
|
-
.rel{
|
|
327
|
-
position: relative;
|
|
328
|
-
}
|
|
329
|
-
.y-auto {
|
|
330
|
-
overflow-y: auto;
|
|
331
|
-
overflow-x: auto;
|
|
332
|
-
}
|
|
333
|
-
.w64{width: 64px!important}
|
|
334
|
-
.w93{width: 93px!important}
|
|
335
|
-
.w300 {
|
|
336
|
-
width: 300px;
|
|
337
|
-
}
|
|
338
|
-
.mt5{
|
|
339
|
-
margin-top: 5px;
|
|
340
|
-
}
|
|
341
|
-
.mt10{
|
|
342
|
-
margin-top: 10px;
|
|
343
|
-
}
|
|
344
|
-
.mt15{
|
|
345
|
-
margin-top: 15px;
|
|
346
|
-
}
|
|
347
|
-
.mb10{
|
|
348
|
-
margin-bottom: 10px;
|
|
349
|
-
}
|
|
350
|
-
.mb20 {
|
|
351
|
-
margin-bottom: 20px;
|
|
352
|
-
}
|
|
353
|
-
.mr10{
|
|
354
|
-
margin-right: 10px;
|
|
355
|
-
}
|
|
356
|
-
.p0 {
|
|
357
|
-
padding: 0 !important;
|
|
358
|
-
}
|
|
359
|
-
.pb10{
|
|
360
|
-
padding-bottom: 10px!important;
|
|
361
|
-
}
|
|
362
|
-
.f-wb {
|
|
363
|
-
font-weight: bold;
|
|
364
|
-
}
|
|
365
|
-
.base-box {
|
|
366
|
-
background: #FFFFFF;
|
|
367
|
-
border-radius: 6px;
|
|
368
|
-
width: 100%;
|
|
369
|
-
}
|
|
370
307
|
.details-content{
|
|
371
308
|
font-size: 12px;
|
|
372
309
|
.title-l{
|
|
@@ -963,36 +900,33 @@
|
|
|
963
900
|
}
|
|
964
901
|
}
|
|
965
902
|
// 按钮
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
color: #fff;
|
|
994
|
-
}
|
|
995
|
-
.max-btn-add button{ /*list-button*/
|
|
903
|
+
.max-info{
|
|
904
|
+
height: 26px;
|
|
905
|
+
color: #333333;
|
|
906
|
+
background-color: #FFFFFF;
|
|
907
|
+
border: 1px solid #E0E0E0;
|
|
908
|
+
border-radius: 6px;
|
|
909
|
+
font-size: 12px;
|
|
910
|
+
}
|
|
911
|
+
.max-default{
|
|
912
|
+
border: 1px solid #EE6B6B;
|
|
913
|
+
color: #EE6B6B;
|
|
914
|
+
height: 26px;
|
|
915
|
+
|
|
916
|
+
border-radius: 6px;
|
|
917
|
+
font-size: 12px;
|
|
918
|
+
}
|
|
919
|
+
.max-info:hover,.max-default:hover{
|
|
920
|
+
background-color:#FF9393;
|
|
921
|
+
border-color: #FF9393;
|
|
922
|
+
color: #fff;
|
|
923
|
+
}
|
|
924
|
+
.max-info:active,.max-default:active{
|
|
925
|
+
background-color: #B33136;
|
|
926
|
+
border-color: #B33136;
|
|
927
|
+
color: #fff;
|
|
928
|
+
}
|
|
929
|
+
.max-btn-add button{ /*list-button*/
|
|
996
930
|
height: 26px;
|
|
997
931
|
background: #EE6B6B;
|
|
998
932
|
box-shadow: 0px 2px 4px 0px rgba(238,107,107,0.25);
|
|
@@ -1010,11 +944,7 @@
|
|
|
1010
944
|
height: 26px;
|
|
1011
945
|
border-radius: 6px;
|
|
1012
946
|
}
|
|
1013
|
-
.follow-search-bar{
|
|
1014
|
-
display: flex;
|
|
1015
|
-
}
|
|
1016
947
|
.r{
|
|
1017
948
|
float: right;
|
|
1018
949
|
}
|
|
1019
|
-
|
|
1020
950
|
</style>
|
|
@@ -135,12 +135,11 @@
|
|
|
135
135
|
</div>
|
|
136
136
|
</div>
|
|
137
137
|
<div class="open-mero" @click="allInfo=!allInfo">{{allInfo?'收起全部':'查看全部'}}
|
|
138
|
-
<!-- <img src="../../../assets/mero.png" alt="" class="mero" > :class="allInfo?'more-colose':'more-open'" -->
|
|
139
138
|
<i :class="allInfo?'more-colose':'mero-open'"></i>
|
|
140
139
|
</div>
|
|
141
140
|
</div>
|
|
142
141
|
<div class="contacts-info base-box">
|
|
143
|
-
<ct-contactList v-if="model.
|
|
142
|
+
<ct-contactList v-if="model.contactApiRouter!==null" :apiRouter="model.contactApiRouter" ></ct-contactList>
|
|
144
143
|
</div>
|
|
145
144
|
<div class="tablist-info base-box">
|
|
146
145
|
<div class="details-tabs-box">
|
|
@@ -190,6 +189,17 @@
|
|
|
190
189
|
<div>该房源共<span class="red-text">{{model.fields1Dic.LookCustomerCount.value}}</span>位客户看房</div>
|
|
191
190
|
<div>最近7天带看<span class="red-text">{{model.fields1Dic.CustomerLookCount7.value}}</span>次,总带看<span class="red-text">{{model.fields1Dic.CustomerLookCountAll.value}}</span>次。</div>
|
|
192
191
|
</div>
|
|
192
|
+
<div v-if="model.operationList!==null" :key="model.operationKey" class="operation-table base-box">
|
|
193
|
+
<div v-for="(col, index) in model.operationList" :key="index" class="table-box">
|
|
194
|
+
<div class="t-item">
|
|
195
|
+
<span class="i">{{col.operationName}}</span>
|
|
196
|
+
</div>
|
|
197
|
+
<div class="t-item"><span class="i" :class="'operation'+col.flagKey">{{col.desc}}</span></div>
|
|
198
|
+
<div class="t-item" style="height: 50px;">
|
|
199
|
+
<component class="el-button t-but el-button--info max-info" v-if="col.router && col.router.show" :is="col.router.is" :vmodel="col.router" :api="model.optionApi" @click="fieldClickHandler(col.router,$event)"></component>
|
|
200
|
+
</div>
|
|
201
|
+
</div>
|
|
202
|
+
</div>
|
|
193
203
|
<div class="staff-info base-box">
|
|
194
204
|
<el-tabs :value="model.activeIndex2" @tab-click="handleClick">
|
|
195
205
|
<el-tab-pane v-for="(col, index) in model.tags2" :key="col.appID"
|
|
@@ -222,17 +232,6 @@
|
|
|
222
232
|
</el-tab-pane>
|
|
223
233
|
</el-tabs>
|
|
224
234
|
</div>
|
|
225
|
-
<div v-if="model.operationList!==null" :key="model.operationKey" class="operation-table base-box">
|
|
226
|
-
<div v-for="(col, index) in model.operationList" :key="index" class="table-box">
|
|
227
|
-
<div class="t-item">
|
|
228
|
-
<span class="i">{{col.operationName}}</span>
|
|
229
|
-
</div>
|
|
230
|
-
<div class="t-item"><span class="i" :class="'operation'+col.flagKey">{{col.desc}}</span></div>
|
|
231
|
-
<div class="t-item" style="height: 50px;">
|
|
232
|
-
<component class="el-button t-but el-button--info max-info" v-if="col.router && col.router.show" :is="col.router.is" :vmodel="col.router" :api="model.optionApi" @click="fieldClickHandler(col.router,$event)"></component>
|
|
233
|
-
</div>
|
|
234
|
-
</div>
|
|
235
|
-
</div>
|
|
236
235
|
<div class="customer">
|
|
237
236
|
<div class="customer-title">
|
|
238
237
|
匹配客户
|
|
@@ -327,66 +326,10 @@
|
|
|
327
326
|
{ name: '餐厅', url: 'http://10.5.10.44:13031/Images/20210705/112124_4f83c6d5-36bd-444f-9ea1-fa4e3f4de5e0.jpg?width=140&height=135&mode=stretch', isVr: false, type: 'img' },
|
|
328
327
|
{ name: '户型图', url: 'http://10.5.10.44:13031/Images/20210705/112505_6a3cb2d4-c773-4aba-91af-df6721eadb34.jpg?width=140&height=135&mode=stretch', isVr: false, type: 'video' },
|
|
329
328
|
{ name: '其它', url: 'http://10.5.10.44:13031/Images/20210705/112133_b62d7a78-96b3-4801-b94c-47b83263a001.jpg?width=140&height=135&mode=stretch', isVr: false, type: 'video' },
|
|
330
|
-
|
|
331
|
-
allInfo: false,
|
|
332
|
-
allIn:false,
|
|
333
|
-
codeOwner: false,
|
|
334
|
-
columnList: [
|
|
335
|
-
{
|
|
336
|
-
prop: 'name',
|
|
337
|
-
label: '联系人',
|
|
338
|
-
width: '80'
|
|
339
|
-
},
|
|
340
|
-
{
|
|
341
|
-
prop: 'type',
|
|
342
|
-
label: '类型',
|
|
343
|
-
width: '60'
|
|
329
|
+
],
|
|
344
330
|
},
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
label: '手机',
|
|
348
|
-
width: '125'
|
|
349
|
-
},
|
|
350
|
-
{
|
|
351
|
-
prop: 'tel',
|
|
352
|
-
label: '座机',
|
|
353
|
-
width: '170'
|
|
354
|
-
},
|
|
355
|
-
{
|
|
356
|
-
prop: 'wx',
|
|
357
|
-
label: '微信',
|
|
358
|
-
width: '150'
|
|
359
|
-
},
|
|
360
|
-
{
|
|
361
|
-
prop: 'entTime',
|
|
362
|
-
label: '录入时间',
|
|
363
|
-
width: '150'
|
|
364
|
-
},
|
|
365
|
-
{
|
|
366
|
-
prop: 'entUser',
|
|
367
|
-
label: '录入人',
|
|
368
|
-
width: '80'
|
|
369
|
-
},
|
|
370
|
-
{
|
|
371
|
-
prop: 'remarks',
|
|
372
|
-
label: '操作',
|
|
373
|
-
// width:'180'
|
|
374
|
-
},
|
|
375
|
-
],
|
|
376
|
-
tableData: [
|
|
377
|
-
{
|
|
378
|
-
name: '王建国先生',
|
|
379
|
-
type: '业主',
|
|
380
|
-
phone: '13866668888',
|
|
381
|
-
tel: '0275-55556666-5896',
|
|
382
|
-
wx: '555566665896',
|
|
383
|
-
entTime: '2021-10-26 29:27:25',
|
|
384
|
-
entUser: '王天',
|
|
385
|
-
remarks: '删除',
|
|
386
|
-
isIcon: true,
|
|
387
|
-
},
|
|
388
|
-
],
|
|
389
|
-
opening:'first',
|
|
331
|
+
allInfo: false,
|
|
332
|
+
allIn:false,
|
|
390
333
|
}
|
|
391
334
|
},
|
|
392
335
|
mounted() {
|
|
@@ -248,11 +248,33 @@
|
|
|
248
248
|
return false;
|
|
249
249
|
}
|
|
250
250
|
}
|
|
251
|
-
|
|
251
|
+
if(eventName=='valid'&&!this.validFileClass())
|
|
252
|
+
{
|
|
253
|
+
this.validMessage="请选择附件分类";
|
|
254
|
+
this.valid = false;
|
|
255
|
+
return false;
|
|
256
|
+
}
|
|
252
257
|
this.valid = true;
|
|
253
258
|
return this.valid;
|
|
254
259
|
},
|
|
255
|
-
|
|
260
|
+
//验证附件分类是否必填
|
|
261
|
+
validFileClass()
|
|
262
|
+
{
|
|
263
|
+
if(this.model.paramName)
|
|
264
|
+
{
|
|
265
|
+
if(this.model.sourceList&&this.model.sourceList.length>0)
|
|
266
|
+
{
|
|
267
|
+
let notClass= this.model.sourceList.filter(item=>{
|
|
268
|
+
return item.mediaLabelID==undefined||item.mediaLabelID=="";
|
|
269
|
+
})
|
|
270
|
+
if(notClass.length>0)
|
|
271
|
+
{
|
|
272
|
+
return false
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
return true;
|
|
277
|
+
},
|
|
256
278
|
classifyClickHandle: function () {
|
|
257
279
|
var self = this;
|
|
258
280
|
this.model.getOptions(() => {
|
|
@@ -263,12 +285,28 @@
|
|
|
263
285
|
classify.file.mediaLabelName = classify.option[this.model.optionModel.optionAttrs.label];
|
|
264
286
|
classify.file.mediaLabelID = classify.option[this.model.optionModel.optionAttrs.value];
|
|
265
287
|
this.model.setClassify(classify);
|
|
288
|
+
if(!this.validFileClass())
|
|
289
|
+
{
|
|
290
|
+
this.validMessage="请选择附件分类";
|
|
291
|
+
this.valid = false;
|
|
292
|
+
}else
|
|
293
|
+
{
|
|
294
|
+
this.valid = true;
|
|
295
|
+
}
|
|
266
296
|
},
|
|
267
297
|
classifyFormClickHandle: function (file) {
|
|
268
298
|
var self = this;
|
|
269
299
|
this.model.updateClassify(file, () => {
|
|
270
300
|
//self.$forceUpdate();
|
|
271
301
|
});
|
|
302
|
+
if(!this.validFileClass())
|
|
303
|
+
{
|
|
304
|
+
this.validMessage="请选择附件分类";
|
|
305
|
+
this.valid = false;
|
|
306
|
+
}else
|
|
307
|
+
{
|
|
308
|
+
this.valid = true;
|
|
309
|
+
}
|
|
272
310
|
},
|
|
273
311
|
}
|
|
274
312
|
}
|
|
@@ -107,6 +107,7 @@
|
|
|
107
107
|
});
|
|
108
108
|
self.FlagPhoto = true;
|
|
109
109
|
self.imageList = sourceRows;
|
|
110
|
+
//self.imageList=[{thumbnailUrl:'lmg.jj20.com/up/allimg/tp01/1ZZH250054149-0-lp.jpg',mediaUrl:'lmg.jj20.com/up/allimg/tp01/1ZZH250054149-0-lp.jpg'}];
|
|
110
111
|
} catch (e) {
|
|
111
112
|
self.$message.warning(e);
|
|
112
113
|
}
|
|
@@ -139,7 +140,7 @@
|
|
|
139
140
|
if (this.chooseList && this.chooseList.length > 0) {
|
|
140
141
|
this.$emit('handlePhoto', this.chooseList);
|
|
141
142
|
} else {
|
|
142
|
-
|
|
143
|
+
this.$message.warning("请选择至少一张图片");
|
|
143
144
|
}
|
|
144
145
|
|
|
145
146
|
},
|
|
@@ -32,6 +32,24 @@ const cbwt = function (source) {
|
|
|
32
32
|
set value3(v) {
|
|
33
33
|
source.code4 = v;
|
|
34
34
|
},
|
|
35
|
+
get max2() {
|
|
36
|
+
return source.maxValue2;
|
|
37
|
+
},
|
|
38
|
+
set max2(v) {
|
|
39
|
+
source.maxValue2 = v;
|
|
40
|
+
},
|
|
41
|
+
get max3() {
|
|
42
|
+
return source.maxValue3;
|
|
43
|
+
},
|
|
44
|
+
set max3(v) {
|
|
45
|
+
source.maxValue3 = v;
|
|
46
|
+
},
|
|
47
|
+
get max4() {
|
|
48
|
+
return source.maxValue4;
|
|
49
|
+
},
|
|
50
|
+
set max4(v) {
|
|
51
|
+
source.maxValue4 = v;
|
|
52
|
+
},
|
|
35
53
|
get optionColCount() {
|
|
36
54
|
return parseInt(source.optCount) || 5;
|
|
37
55
|
},
|