system-clients 3.2.1-24 → 3.2.1-27

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.
@@ -1,201 +1,201 @@
1
- <template>
2
- <div class='flex foot_tabset1'>
3
- <!-- Nav tabs -->
4
- <ul class="nav nav-{{navStyle}}" role="tablist" style="margin-left: 1%">
5
- <li style="margin-right: 10px;height: 100%"
6
- :id="'vc-tabset-li-'+attach +'-'+$index"
7
- v-for="r in renderData"
8
- @click.prevent="handleTabListClick($index, r)"
9
- :disabled="r.disabled"
10
- >
11
- <button v-if="button" class="button_new" style="width: max-content" v-bind:class="{
12
- 'btn-succ': ($index === active),
13
- 'disabled': r.disabled
14
- }">
15
- <slot name="header">
16
- {{ r.header }}
17
- </slot>
18
- <!-- 关闭按钮 -->
19
- <span class="glyphicon glyphicon-remove" style="margin-left: 15px;" @click="deletetTab(r)" v-if="close"
20
- :id="'vc-tabset-close-'+attach +'-'+$index"></span>
21
- </button>
22
- <span v-if="!button" v-bind:class="{
23
- 'span-active': ($index === active),
24
- 'span-disable': ($index !== active)
25
- }">
26
- <slot name="header">
27
- {{ r.header }}
28
- </slot>
29
- <!-- 关闭按钮 -->
30
- <span class="glyphicon glyphicon-remove" style="margin-left: 15px;" @click="deletetTab(r)" v-if="close"
31
- :id="'vc-tabset-close-'+attach +'-'+$index"></span>
32
- </span>
33
-
34
- </li>
35
- </ul>
36
-
37
- <!-- Tab panes -->
38
- <div class="tab-content span" v-el:tab-content>
39
- <slot></slot>
40
- </div>
41
- </div>
42
- </template>
43
-
44
- <script>
45
- import {remove} from 'vue-client/src/stores/Remove.js'
46
-
47
- export default {
48
- props: {
49
- navStyle: {
50
- type: String,
51
- default: 'tabs'
52
- },
53
- effect: {
54
- type: String,
55
- default: 'fadein'
56
- },
57
- active: {
58
- type: Number,
59
- default: 0
60
- },
61
- close: {
62
- type: Boolean,
63
- default: false
64
- },
65
- button: {
66
- type: Boolean,
67
- default: true
68
- },
69
- attach: {
70
- type: String,
71
- default: 'vuestrap'
72
- },
73
- content: {}
74
- },
75
- ready() {
76
- remove.$on('remove', (name) => {
77
- console.log('tabset收$on 到的名字为:', name)
78
- this.$removeTab(name)
79
- })
80
- },
81
- data() {
82
- return {
83
- // 数据格式:{comp, header,disabled}
84
- // - comp: 当前页签对应的tab组件
85
- renderData: []
86
- }
87
- },
88
- methods: {
89
- handleTabListClick(index, el) {
90
- // 没有打开过, 则添加显示
91
- this.$dispatch('tab-changed')
92
- if (!this.$parent.show.includes(el.header)) {
93
- this.$parent.show.push(el.header)
94
- }
95
- if (el.comp._scope && el.comp._scope.tab) {
96
- this.$dispatch('tab-changed', el.comp._scope.tab.comp.name)
97
- }
98
- if (!el.disabled) this.active = index
99
- },
100
- // deletetab函数为自己添加
101
- deletetTab(el) {
102
- this.$removeTab(el.comp._scope.tab.comp.name)
103
- remove.$emit('delete', el.comp._scope.tab.comp.name)
104
- },
105
- // 根据删除也下标,修改所有页签的下标
106
- modifyAllIndex(index) {
107
- let cur = this.active
108
- this.$nextTick(() => {
109
- // 关闭页签以后的多有页签的的下标向前挪动一位,之前的页签不动
110
- for (var i = index; i < this.renderData.length; i++) {
111
- this.renderData[i].comp.index -= 1
112
- }
113
- // 修改激活页
114
- // 获取当前激活页签下标,关闭在当前激活页之后(包含当前激活页),当前激活页下标不变
115
- // 当关闭当前激活页之前(激活页向前移动一位)
116
- if (this.active > index || this.active === this.renderData.length) {
117
- this.active = cur - 1
118
- } else if (cur === 0) {
119
- this.active = 0
120
- } else {
121
- this.active = cur
122
- }
123
- if (this.active === -1) {
124
- this.$dispatch('tab-changed', null)
125
- } else {
126
- this.$dispatch('tab-changed', this.renderData[this.active].comp._scope.tab.comp.name)
127
- }
128
- })
129
- }
130
- },
131
- events: {
132
- 'delete'(index) {
133
- this.modifyAllIndex(index)
134
- }
135
- }
136
- }
137
- </script>
138
-
139
- <style scoped>
140
- ul > li > a {
141
- position: relative;
142
- }
143
-
144
- ul > li > a > span {
145
- display: none;
146
- }
147
-
148
- .span-active {
149
- width: max-content;
150
- border-bottom: 3px solid #5ac0d9;
151
- height: 100%;
152
- display: inline-block;
153
- font-size: 1.5rem;
154
- color: #666;
155
- font-weight: 550;
156
- padding: 0px 10px;
157
- padding-top: 3px;
158
- vertical-align: bottom;
159
- }
160
-
161
- .span-disable {
162
- width: max-content;
163
- height: 100%;
164
- display: inline-block;
165
- font-size: 1.5rem;
166
- color: #666;
167
- font-weight: 550;
168
- padding: 0px 10px;
169
- padding-top: 3px;
170
- vertical-align: bottom;
171
- }
172
-
173
- /*ul > li > a:hover > span {*/
174
- /*display: initial;*/
175
- /*position: absolute;*/
176
- /*right: 0;*/
177
- /*top: 35%;*/
178
- /*border: 1px solid #EAEAEA;*/
179
- /*}*/
180
- /*ul > li > a:hover > span:hover {*/
181
- /*border: 1px solid #EAEAEA;*/
182
- /*color: #5cb95c;*/
183
- /*}*/
184
- ul > li > button {
185
- background-color: #FFFFFF;
186
- border-radius: 4px;
187
- color: #999;
188
- border: 1px solid #5cb95c;
189
- }
190
-
191
- .btn-succ {
192
- background-color: #6aa6e2;
193
- border-radius: 4px;
194
- color: #fff;
195
- }
196
-
197
- .foot_tabset1 > .nav {
198
- /*overflow-x: scroll;*/
199
- white-space: nowrap;
200
- }
201
- </style>
1
+ <template>
2
+ <div class='flex foot_tabset1'>
3
+ <!-- Nav tabs -->
4
+ <ul class="nav nav-{{navStyle}}" role="tablist" style="margin-left: 1%">
5
+ <li style="margin-right: 10px;height: 100%"
6
+ :id="'vc-tabset-li-'+attach +'-'+$index"
7
+ v-for="r in renderData"
8
+ @click.prevent="handleTabListClick($index, r)"
9
+ :disabled="r.disabled"
10
+ >
11
+ <button v-if="button" class="button_new" style="width: max-content" v-bind:class="{
12
+ 'btn-succ': ($index === active),
13
+ 'disabled': r.disabled
14
+ }">
15
+ <slot name="header">
16
+ {{ r.header }}
17
+ </slot>
18
+ <!-- 关闭按钮 -->
19
+ <span class="glyphicon glyphicon-remove" style="margin-left: 15px;" @click="deletetTab(r)" v-if="close"
20
+ :id="'vc-tabset-close-'+attach +'-'+$index"></span>
21
+ </button>
22
+ <span v-if="!button" v-bind:class="{
23
+ 'span-active': ($index === active),
24
+ 'span-disable': ($index !== active)
25
+ }">
26
+ <slot name="header">
27
+ {{ r.header }}
28
+ </slot>
29
+ <!-- 关闭按钮 -->
30
+ <span class="glyphicon glyphicon-remove" style="margin-left: 15px;" @click="deletetTab(r)" v-if="close"
31
+ :id="'vc-tabset-close-'+attach +'-'+$index"></span>
32
+ </span>
33
+
34
+ </li>
35
+ </ul>
36
+
37
+ <!-- Tab panes -->
38
+ <div class="tab-content span" v-el:tab-content>
39
+ <slot></slot>
40
+ </div>
41
+ </div>
42
+ </template>
43
+
44
+ <script>
45
+ import {remove} from 'vue-client/src/stores/Remove.js'
46
+
47
+ export default {
48
+ props: {
49
+ navStyle: {
50
+ type: String,
51
+ default: 'tabs'
52
+ },
53
+ effect: {
54
+ type: String,
55
+ default: 'fadein'
56
+ },
57
+ active: {
58
+ type: Number,
59
+ default: 0
60
+ },
61
+ close: {
62
+ type: Boolean,
63
+ default: false
64
+ },
65
+ button: {
66
+ type: Boolean,
67
+ default: true
68
+ },
69
+ attach: {
70
+ type: String,
71
+ default: 'vuestrap'
72
+ },
73
+ content: {}
74
+ },
75
+ ready() {
76
+ remove.$on('remove', (name) => {
77
+ console.log('tabset收$on 到的名字为:', name)
78
+ this.$removeTab(name)
79
+ })
80
+ },
81
+ data() {
82
+ return {
83
+ // 数据格式:{comp, header,disabled}
84
+ // - comp: 当前页签对应的tab组件
85
+ renderData: []
86
+ }
87
+ },
88
+ methods: {
89
+ handleTabListClick(index, el) {
90
+ // 没有打开过, 则添加显示
91
+ this.$dispatch('tab-changed')
92
+ if (!this.$parent.show.includes(el.header)) {
93
+ this.$parent.show.push(el.header)
94
+ }
95
+ if (el.comp._scope && el.comp._scope.tab) {
96
+ this.$dispatch('tab-changed', el.comp._scope.tab.comp.name)
97
+ }
98
+ if (!el.disabled) this.active = index
99
+ },
100
+ // deletetab函数为自己添加
101
+ deletetTab(el) {
102
+ this.$removeTab(el.comp._scope.tab.comp.name)
103
+ remove.$emit('delete', el.comp._scope.tab.comp.name)
104
+ },
105
+ // 根据删除也下标,修改所有页签的下标
106
+ modifyAllIndex(index) {
107
+ let cur = this.active
108
+ this.$nextTick(() => {
109
+ // 关闭页签以后的多有页签的的下标向前挪动一位,之前的页签不动
110
+ for (var i = index; i < this.renderData.length; i++) {
111
+ this.renderData[i].comp.index -= 1
112
+ }
113
+ // 修改激活页
114
+ // 获取当前激活页签下标,关闭在当前激活页之后(包含当前激活页),当前激活页下标不变
115
+ // 当关闭当前激活页之前(激活页向前移动一位)
116
+ if (this.active > index || this.active === this.renderData.length) {
117
+ this.active = cur - 1
118
+ } else if (cur === 0) {
119
+ this.active = 0
120
+ } else {
121
+ this.active = cur
122
+ }
123
+ if (this.active === -1) {
124
+ this.$dispatch('tab-changed', null)
125
+ } else {
126
+ this.$dispatch('tab-changed', this.renderData[this.active].comp._scope.tab.comp.name)
127
+ }
128
+ })
129
+ }
130
+ },
131
+ events: {
132
+ 'delete'(index) {
133
+ this.modifyAllIndex(index)
134
+ }
135
+ }
136
+ }
137
+ </script>
138
+
139
+ <style scoped>
140
+ ul > li > a {
141
+ position: relative;
142
+ }
143
+
144
+ ul > li > a > span {
145
+ display: none;
146
+ }
147
+
148
+ .span-active {
149
+ width: max-content;
150
+ border-bottom: 3px solid #5ac0d9;
151
+ height: 100%;
152
+ display: inline-block;
153
+ font-size: 1.5rem;
154
+ color: #666;
155
+ font-weight: 550;
156
+ padding: 0px 10px;
157
+ padding-top: 3px;
158
+ vertical-align: bottom;
159
+ }
160
+
161
+ .span-disable {
162
+ width: max-content;
163
+ height: 100%;
164
+ display: inline-block;
165
+ font-size: 1.5rem;
166
+ color: #666;
167
+ font-weight: 550;
168
+ padding: 0px 10px;
169
+ padding-top: 3px;
170
+ vertical-align: bottom;
171
+ }
172
+
173
+ /*ul > li > a:hover > span {*/
174
+ /*display: initial;*/
175
+ /*position: absolute;*/
176
+ /*right: 0;*/
177
+ /*top: 35%;*/
178
+ /*border: 1px solid #EAEAEA;*/
179
+ /*}*/
180
+ /*ul > li > a:hover > span:hover {*/
181
+ /*border: 1px solid #EAEAEA;*/
182
+ /*color: #5cb95c;*/
183
+ /*}*/
184
+ ul > li > button {
185
+ background-color: #FFFFFF;
186
+ border-radius: 4px;
187
+ color: #999;
188
+ border: 1px solid #5cb95c;
189
+ }
190
+
191
+ .btn-succ {
192
+ background-color: #6aa6e2;
193
+ border-radius: 4px;
194
+ color: #fff;
195
+ }
196
+
197
+ .foot_tabset1 > .nav {
198
+ /*overflow-x: scroll;*/
199
+ white-space: nowrap;
200
+ }
201
+ </style>
@@ -0,0 +1,145 @@
1
+ <template>
2
+ <div :class="style">
3
+ <label :class="font_style">小&emsp;&emsp;区</label>
4
+ <v-select :value.sync="initres.f_residential_area"
5
+ v-model="initres.f_residential_area"
6
+ class="input-font"
7
+ :options='residentialAreaOptions'
8
+ placeholder='小区名称'
9
+ @change="getbuilds"
10
+ close-on-select :valueSingle=true>
11
+ </v-select>
12
+ </div>
13
+ <div :class="style">
14
+ <label :class="font_style">楼&emsp;&emsp;栋</label>
15
+ <v-select :value.sync="initres.f_building"
16
+ v-model="initres.f_building"
17
+ class="input-font"
18
+ :options='buildOptions'
19
+ placeholder='楼栋'
20
+ @change="getUnits"
21
+ close-on-select :valueSingle="true">
22
+ </v-select>
23
+ </div>
24
+ <div :class="style">
25
+ <label :class="font_style">单&emsp;&emsp;元</label>
26
+ <v-select :value.sync="initres.f_unit"
27
+ v-model="initres.f_unit"
28
+ class="input-font"
29
+ :options='unitOptions'
30
+ placeholder='单元'
31
+ close-on-select :valueSingle="true">
32
+ </v-select>
33
+ </div>
34
+ </template>
35
+ <script>
36
+ import {HttpResetClass} from "vue-client";
37
+ /**
38
+ *档案管理查询列表
39
+ */
40
+ export default {
41
+ title: '小区查询',
42
+ props: {
43
+ style: {
44
+ type: String,
45
+ default: 'col-sm-2 form-group'
46
+ },
47
+ font_style: {
48
+ type: String,
49
+ default: 'font_normal_body'
50
+ },
51
+ mul: {
52
+ type: Boolean,
53
+ default: true
54
+ },
55
+ //初始值
56
+ initres: {
57
+ type: Object,
58
+ default: null,
59
+ },
60
+ conditions: {
61
+ type: Object,
62
+ default: null,
63
+ },
64
+ f_unit: {
65
+ type: String,
66
+ default: "f_unit = '{}'",
67
+ },
68
+ f_residential_area: {
69
+ type: String,
70
+ default: "f_residential_area = '{}'",
71
+ },
72
+ f_building: {
73
+ type: String,
74
+ default: "f_building = '{}'",
75
+ }
76
+ },
77
+ data () {
78
+ return {
79
+ residentialAreaOptions:[],
80
+ buildOptions:[],
81
+ unitOptions:[],
82
+ http:new HttpResetClass()
83
+ }
84
+ },
85
+ ready(){
86
+ this.getAllArea()
87
+ this.conditions=Object.assign({},this.conditions,{f_unit:this.f_unit,f_residential_area:this.f_residential_area,f_building:this.f_building})
88
+ },
89
+ methods: {
90
+ getAllArea(){
91
+ this.residentialAreaOptions = []
92
+ this.buildOptions = []
93
+ this.unitOptions = []
94
+ this.initres.f_residential_area = ''
95
+ this.initres.f_building = ''
96
+ this.initres.f_unit = ''
97
+ this.http.load('POST',"rs/sql/address_getarealist",{data:{condition: `s.f_filialeid = ${this.$login.f.orgid}`}},{resolveMsg: null, rejectMsg: null}).then(result =>{
98
+ if(result.data.length>0){
99
+ result.data.forEach(item => this.residentialAreaOptions.push({label:item.f_residential_area,value:item.f_residential_area}))
100
+ }
101
+ })
102
+ },
103
+ getbuilds(f_residential_area){
104
+ console.log('f_residential_area ===> ' + JSON.stringify(f_residential_area))
105
+ this.buildOptions = []
106
+ this.initres.f_building = ''
107
+ this.unitOptions = []
108
+ this.initres.f_unit = ''
109
+ if(f_residential_area.length<=0){
110
+ return
111
+ }
112
+ let criteria = {
113
+ condition: `f_building IS NOT NULL AND f_residential_area = '${f_residential_area}'`,
114
+ groupitem: 'f_building',
115
+ orderitem: 'f_building'
116
+ }
117
+ this.http.load('POST',"rs/sql/getUseraddressByCon",{'data': criteria},{resolveMsg: null, rejectMsg: null}).then(result =>{
118
+ if(result.data.length>0){
119
+ result.data.forEach(item => this.buildOptions.push({label:item.f_building,value:item.f_building}))
120
+ }
121
+ })
122
+
123
+ },
124
+ getUnits(f_building){
125
+ f_building = f_building[0]
126
+ this.unitOptions = []
127
+ this.initres.f_unit = ''
128
+ if(!f_building){
129
+ return
130
+ }
131
+ let criteria = {
132
+ condition: `f_unit IS NOT NULL AND f_unit != '' AND f_residential_area = '${this.initres.f_residential_area}' AND f_building = '${this.initres.f_building}'`,
133
+ orderitem: 'f_unit',
134
+ groupitem: 'f_unit'
135
+ }
136
+ this.http.load('POST',"rs/sql/getUseraddressByCon",{'data': criteria},{resolveMsg: null, rejectMsg: null}).then(result=>{
137
+ if(result.data.length>0){
138
+ result.data.forEach(item => this.unitOptions.push({label:item.f_unit,value:item.f_unit}))
139
+ }
140
+ })
141
+
142
+ }
143
+ }
144
+ }
145
+ </script>
@@ -1,65 +1,65 @@
1
- <template>
2
- <div class="flex">
3
- <div class="auto">
4
- <div class="form-horizontal select-overspread" style="background: white; padding: 0 1%;">
5
- <div class="row">
6
- <div class="col-sm-2 form-group">
7
- <label class="font_normal_body" title="参数管理:终端类型">终端类型</label>
8
- <v-select id="f_charge_type"
9
- v-model="model.f_equipment_type"
10
- placeholder='终端类型'
11
- :value.sync="model.f_equipment_type"
12
- :options='equipmentType'
13
- close-on-select clear-button>
14
- </v-select>
15
- </div>
16
- </div>
17
- </div>
18
- </div>
19
- <div v-if="model.f_equipment_type[0] === 'PC'">
20
- <pc-manage></pc-manage>
21
- </div>
22
- <div v-if="model.f_equipment_type[0] === 'POS'">
23
- <pos-manage></pos-manage>
24
- </div>
25
- <div v-if="model.f_equipment_type[0] === 'PHONE'">
26
- <phone-manage></phone-manage>
27
- </div>
28
- </div>
29
- </template>
30
-
31
- <script>
32
-
33
- export default {
34
- title: '终端控制',
35
- data () {
36
- return {
37
- filialeNameStr: this.$login.f.f_fengongsi,
38
- filialeCodeStr: this.$login.f.orgid,
39
- userid:this.$login.f.id,
40
- source: `tool.getFullTree(this.getRights().where(row.getType() != $zone$).where(row.getType() != $role$))`,
41
- equipmentType: this.$appdata.getParam('终端类型'),
42
- model: {
43
- f_equipment_type: []
44
- }
45
- }
46
- },
47
- ready () {
48
- console.log('看看终端类型', this.equipmentType)
49
- this.model.f_equipment_type = [this.equipmentType[0].value]
50
- },
51
- methods: {
52
- del (row) {
53
- console.log('要删除了', row)
54
- },
55
-
56
- getRes (obj) {
57
- this.filialeNameStr = obj.res
58
- this.filialeCodeStr = obj.resids
59
- },
60
- },
61
- computed: {
62
-
63
- }
64
- }
65
- </script>
1
+ <template>
2
+ <div class="flex">
3
+ <div class="auto">
4
+ <div class="form-horizontal select-overspread" style="background: white; padding: 0 1%;">
5
+ <div class="row">
6
+ <div class="col-sm-2 form-group">
7
+ <label class="font_normal_body" title="参数管理:终端类型">终端类型</label>
8
+ <v-select id="f_charge_type"
9
+ v-model="model.f_equipment_type"
10
+ placeholder='终端类型'
11
+ :value.sync="model.f_equipment_type"
12
+ :options='equipmentType'
13
+ close-on-select clear-button>
14
+ </v-select>
15
+ </div>
16
+ </div>
17
+ </div>
18
+ </div>
19
+ <div v-if="model.f_equipment_type[0] === 'PC'">
20
+ <pc-manage></pc-manage>
21
+ </div>
22
+ <div v-if="model.f_equipment_type[0] === 'POS'">
23
+ <pos-manage></pos-manage>
24
+ </div>
25
+ <div v-if="model.f_equipment_type[0] === 'PHONE'">
26
+ <phone-manage></phone-manage>
27
+ </div>
28
+ </div>
29
+ </template>
30
+
31
+ <script>
32
+
33
+ export default {
34
+ title: '终端控制',
35
+ data () {
36
+ return {
37
+ filialeNameStr: this.$login.f.f_fengongsi,
38
+ filialeCodeStr: this.$login.f.orgid,
39
+ userid:this.$login.f.id,
40
+ source: `tool.getFullTree(this.getRights().where(row.getType() != $zone$).where(row.getType() != $role$))`,
41
+ equipmentType: this.$appdata.getParam('终端类型'),
42
+ model: {
43
+ f_equipment_type: []
44
+ }
45
+ }
46
+ },
47
+ ready () {
48
+ console.log('看看终端类型', this.equipmentType)
49
+ this.model.f_equipment_type = [this.equipmentType[0].value]
50
+ },
51
+ methods: {
52
+ del (row) {
53
+ console.log('要删除了', row)
54
+ },
55
+
56
+ getRes (obj) {
57
+ this.filialeNameStr = obj.res
58
+ this.filialeCodeStr = obj.resids
59
+ },
60
+ },
61
+ computed: {
62
+
63
+ }
64
+ }
65
+ </script>