apply-clients 3.0.5-2 → 3.0.5-3

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,139 +1,139 @@
1
- <template>
2
- <div class="auto" style="padding-right:5px; padding-top: 10px;" v-if="refreshed">
3
- <validator name="v">
4
-
5
- <div v-for="(index,item) in data" class="panel" v-bind:class="{'panel-default': showpanl[index].showdef, ' panel-info ' : showpanl[index].showinfo}">
6
- <div :class="{'panel-heading background-default':showpanl[index].show,'panel-heading':!showpanl[index].show}" @click ="hello(index)">
7
- <h3 class="panel-title">{{item.title}}信息<span class="pull-right glyphicon" v-bind:class="{'glyphicon-chevron-right': showpanl[index].show, 'glyphicon-chevron-down' : showpanl[index].hasError}"></span></h3>
8
- </div>
9
- <div class="panel-body" v-if="showpanl[index].hasError">
10
- <div class="col-sm-12">
11
- <div v-for="(index2,row) in item.fields">
12
- <span v-if="row.hasOwnProperty('field')" class="col-sm-12">{{item.fields[index2].label}}:{{item.fields[index2].value}}</span>
13
- <span v-else class="col-sm-12" v-for="(index3,arr) in row.items">{{arr.label}}:{{arr.value?'是':'否'}}</span>
14
- </div>
15
- </div>
16
- </div>
17
- </div>
18
-
19
- </validator>
20
- </div>
21
- </template>
22
- <script>
23
- import {HttpResetClass} from 'vue-client'
24
- export default {
25
- title: '通气点火信息',
26
- data () {
27
- return {
28
- data:null,
29
- defnames:null,
30
- refreshed:true,
31
- showpanl:[]
32
- }
33
- },
34
- props: ['selectdata'],
35
- methods: {
36
- // 初始化 [{label:xx,value:vvv,filed}]
37
- initializtion(){
38
- let tempArray =[]
39
- // 按照数据库defname的顺序排序
40
- for(let i = 0;i<this.defnames.length;i++){
41
- // 配置文件title循环
42
- for(let j = 0;j<this.$workflow_vue.activitys.length;j++){
43
- if(this.defnames[i].defname===this.$workflow_vue.activitys[j].title){
44
- let temp = JSON.parse(JSON.stringify(this.$workflow_vue.activitys[j]))
45
- if(this.defnames[i].hasOwnProperty('person')){
46
- temp.person = this.defnames[i].person
47
- }
48
- this.showpanl.push({hasError:false,show:true,showdef:true,showinfo:false})
49
- tempArray.push(temp)
50
- }
51
- }
52
- }
53
- // 给排序后的数组填充数据
54
- for(let i=0;i<tempArray.length;i++){
55
- for(let j = 0;j<tempArray[i].fields.length;j++){
56
- if(tempArray[i].fields[j].hasOwnProperty('field')){
57
- if((tempArray[i].fields[j].label=='项目预算金额' ||
58
- tempArray[i].fields[j].label=='设计费成本' ||
59
- tempArray[i].fields[j].label=='材料预算成本' ||
60
- tempArray[i].fields[j].label=='施工预算成本' ||
61
- tempArray[i].fields[j].label=='探伤预算成本' ||
62
- tempArray[i].fields[j].label=='检测预算成本' ||
63
- tempArray[i].fields[j].label=='其他预算成本' ||
64
- tempArray[i].fields[j].label=='首付'||
65
- tempArray[i].fields[j].label=='进度款'||
66
- tempArray[i].fields[j].label=='尾款' ) && this.$login.f.f_parentname !== '市场部'){
67
- tempArray[i].fields[j].value = '隐藏数据'
68
- }else{
69
- tempArray[i].fields[j].value = this.selectdata[tempArray[i].fields[j].field]
70
- }
71
-
72
- }else if(tempArray[i].fields[j].hasOwnProperty('items')){
73
- for(let k = 0;k<tempArray[i].fields[j].items.length;k++){
74
- tempArray[i].fields[j].items[k].value = this.selectdata[tempArray[i].fields[j].items[k].field]
75
- }
76
- }
77
- if(tempArray[i].fields[j].value&&typeof tempArray[i].fields[j].value =='string'&&tempArray[i].fields[j].value.startsWith('{')&&tempArray[i].fields[j].value.endsWith('}')){
78
- let temp = JSON.parse(tempArray[i].fields[j].value)
79
- tempArray[i].fields[j].value = temp.name
80
- }
81
- }
82
- }
83
- this.data = tempArray
84
- this.refreshed =false
85
- this.$nextTick(()=>{
86
- this.refreshed =true
87
- this.hello(9999999)
88
- })
89
- },
90
- hello (index) {
91
- if (!this.selectdata.defname) {
92
- return
93
- }
94
- if(index==9999999){
95
- console.log("this.showpanl:"+this.showpanl)
96
- this.showpanl[0].hasError = true
97
- return
98
- }
99
- if (this.showpanl[index].show) {
100
- this.showpanl[index].show = false
101
- this.showpanl[index].hasError = true
102
- } else {
103
- this.showpanl[index].show = true
104
- this.showpanl[index].hasError= false
105
- }
106
- }
107
- },
108
- watch:{
109
- async 'selectdata'(){
110
- let http = new HttpResetClass()
111
- var temp = []
112
- if(this.selectdata){
113
- let res = await http.load('POST','rs/sql/getdefname',{data:{processid:this.selectdata.f_process_id}},{resolveMsg:null, rejectMsg:null})
114
- //循环去除回退导致重复的节点
115
- for (var i = 0; i < res.data.length; i++) {
116
- var flag = true
117
- for (var j = 0; j< temp.length; j++){
118
- if(res.data[i].defname == temp[j].defname){
119
- flag = false
120
- }
121
- }
122
- if(flag){
123
- temp.push(res.data[i])
124
- }
125
- }
126
- this.defnames = temp
127
- }
128
- // 初始化开始
129
- this.initializtion()
130
- }
131
- }
132
- }
133
- </script>
134
- <style scoped>
135
- .background-default{
136
- background-color: #F2F6FA;
137
- }
138
-
139
- </style>
1
+ <template>
2
+ <div class="auto" style="padding-right:5px; padding-top: 10px;" v-if="refreshed">
3
+ <validator name="v">
4
+
5
+ <div v-for="(index,item) in data" class="panel" v-bind:class="{'panel-default': showpanl[index].showdef, ' panel-info ' : showpanl[index].showinfo}">
6
+ <div :class="{'panel-heading background-default':showpanl[index].show,'panel-heading':!showpanl[index].show}" @click ="hello(index)">
7
+ <h3 class="panel-title">{{item.title}}信息<span class="pull-right glyphicon" v-bind:class="{'glyphicon-chevron-right': showpanl[index].show, 'glyphicon-chevron-down' : showpanl[index].hasError}"></span></h3>
8
+ </div>
9
+ <div class="panel-body" v-if="showpanl[index].hasError">
10
+ <div class="col-sm-12">
11
+ <div v-for="(index2,row) in item.fields">
12
+ <span v-if="row.hasOwnProperty('field')" class="col-sm-12">{{item.fields[index2].label}}:{{item.fields[index2].value}}</span>
13
+ <span v-else class="col-sm-12" v-for="(index3,arr) in row.items">{{arr.label}}:{{arr.value?'是':'否'}}</span>
14
+ </div>
15
+ </div>
16
+ </div>
17
+ </div>
18
+
19
+ </validator>
20
+ </div>
21
+ </template>
22
+ <script>
23
+ import {HttpResetClass} from 'vue-client'
24
+ export default {
25
+ title: '通气点火信息',
26
+ data () {
27
+ return {
28
+ data:null,
29
+ defnames:null,
30
+ refreshed:true,
31
+ showpanl:[]
32
+ }
33
+ },
34
+ props: ['selectdata'],
35
+ methods: {
36
+ // 初始化 [{label:xx,value:vvv,filed}]
37
+ initializtion(){
38
+ let tempArray =[]
39
+ // 按照数据库defname的顺序排序
40
+ for(let i = 0;i<this.defnames.length;i++){
41
+ // 配置文件title循环
42
+ for(let j = 0;j<this.$workflow_vue.activitys.length;j++){
43
+ if(this.defnames[i].defname===this.$workflow_vue.activitys[j].title){
44
+ let temp = JSON.parse(JSON.stringify(this.$workflow_vue.activitys[j]))
45
+ if(this.defnames[i].hasOwnProperty('person')){
46
+ temp.person = this.defnames[i].person
47
+ }
48
+ this.showpanl.push({hasError:false,show:true,showdef:true,showinfo:false})
49
+ tempArray.push(temp)
50
+ }
51
+ }
52
+ }
53
+ // 给排序后的数组填充数据
54
+ for(let i=0;i<tempArray.length;i++){
55
+ for(let j = 0;j<tempArray[i].fields.length;j++){
56
+ if(tempArray[i].fields[j].hasOwnProperty('field')){
57
+ if((tempArray[i].fields[j].label=='项目预算金额' ||
58
+ tempArray[i].fields[j].label=='设计费成本' ||
59
+ tempArray[i].fields[j].label=='材料预算成本' ||
60
+ tempArray[i].fields[j].label=='施工预算成本' ||
61
+ tempArray[i].fields[j].label=='探伤预算成本' ||
62
+ tempArray[i].fields[j].label=='检测预算成本' ||
63
+ tempArray[i].fields[j].label=='其他预算成本' ||
64
+ tempArray[i].fields[j].label=='首付'||
65
+ tempArray[i].fields[j].label=='进度款'||
66
+ tempArray[i].fields[j].label=='尾款' ) && this.$login.f.f_parentname !== '市场部'){
67
+ tempArray[i].fields[j].value = '隐藏数据'
68
+ }else{
69
+ tempArray[i].fields[j].value = this.selectdata[tempArray[i].fields[j].field]
70
+ }
71
+
72
+ }else if(tempArray[i].fields[j].hasOwnProperty('items')){
73
+ for(let k = 0;k<tempArray[i].fields[j].items.length;k++){
74
+ tempArray[i].fields[j].items[k].value = this.selectdata[tempArray[i].fields[j].items[k].field]
75
+ }
76
+ }
77
+ if(tempArray[i].fields[j].value&&typeof tempArray[i].fields[j].value =='string'&&tempArray[i].fields[j].value.startsWith('{')&&tempArray[i].fields[j].value.endsWith('}')){
78
+ let temp = JSON.parse(tempArray[i].fields[j].value)
79
+ tempArray[i].fields[j].value = temp.name
80
+ }
81
+ }
82
+ }
83
+ this.data = tempArray
84
+ this.refreshed =false
85
+ this.$nextTick(()=>{
86
+ this.refreshed =true
87
+ this.hello(9999999)
88
+ })
89
+ },
90
+ hello (index) {
91
+ if (!this.selectdata.defname) {
92
+ return
93
+ }
94
+ if(index==9999999){
95
+ console.log("this.showpanl:"+this.showpanl)
96
+ this.showpanl[0].hasError = true
97
+ return
98
+ }
99
+ if (this.showpanl[index].show) {
100
+ this.showpanl[index].show = false
101
+ this.showpanl[index].hasError = true
102
+ } else {
103
+ this.showpanl[index].show = true
104
+ this.showpanl[index].hasError= false
105
+ }
106
+ }
107
+ },
108
+ watch:{
109
+ async 'selectdata'(){
110
+ let http = new HttpResetClass()
111
+ var temp = []
112
+ if(this.selectdata){
113
+ let res = await http.load('POST','rs/sql/getdefname',{data:{processid:this.selectdata.f_process_id}},{resolveMsg:null, rejectMsg:null})
114
+ //循环去除回退导致重复的节点
115
+ for (var i = 0; i < res.data.length; i++) {
116
+ var flag = true
117
+ for (var j = 0; j< temp.length; j++){
118
+ if(res.data[i].defname == temp[j].defname){
119
+ flag = false
120
+ }
121
+ }
122
+ if(flag){
123
+ temp.push(res.data[i])
124
+ }
125
+ }
126
+ this.defnames = temp
127
+ }
128
+ // 初始化开始
129
+ this.initializtion()
130
+ }
131
+ }
132
+ }
133
+ </script>
134
+ <style scoped>
135
+ .background-default{
136
+ background-color: #F2F6FA;
137
+ }
138
+
139
+ </style>
@@ -144,10 +144,18 @@ export default {
144
144
  condition += `and fusetype like '${this.useType}'`
145
145
  }
146
146
  let http = new HttpResetClass()
147
- let data = {
148
- tablename: 't_files',
149
- condition: condition + ` order by f_uploaddate desc `
147
+ if (this.$login.f.rolesnames.includes('部长')){
148
+ var data = {
149
+ tablename: 't_files',
150
+ condition: condition +` order by f_uploaddate desc `
151
+ }
152
+ }else {
153
+ data = {
154
+ tablename: 't_files',
155
+ condition: condition + ` and f_username = '${this.headers.username}'` +` order by f_uploaddate desc `
156
+ }
150
157
  }
158
+
151
159
  let getFile = await http.load('POST', 'rs/sql/singleTable', {data: data}, {
152
160
  warnMsg: null,
153
161
  resolveMsg: null
@@ -0,0 +1,214 @@
1
+ <template>
2
+ <div style="text-align: center;" v-if="refresh">
3
+ <div class="span" style="margin-top: 10px;height: auto;min-height: 200px;width: 92%">
4
+ <partial-view v-ref:single-load>
5
+ <data-grid :model="model" v-ref:grid>
6
+ <template partial='head'>
7
+ <tr>
8
+ <th>序号</th>
9
+ <th>名称</th>
10
+ <th>金额(元)</th>
11
+ <th>备注</th>
12
+ <th v-if="$parent.$parent.$parent.mark === 0">
13
+ <button type="button" name="button" class="btn btn-info" @click="$parent.$parent.$parent.add()">新增收费</button>
14
+ </th>
15
+ </tr>
16
+ </template>
17
+ <template partial='body'>
18
+ <td style="text-align: center">{{ $index + 1 }}</td>
19
+ <td style="text-align: center">{{ row.f_costplan_name }}</td>
20
+ <td style="text-align: center">{{ row.f_fee }}</td>
21
+ <td style="text-align: center">{{ row.f_remarks }}</td>
22
+ <td class="flex-around" v-if="$parent.$parent.$parent.mark === 0">
23
+ <button type="button" name="button" class="btn btn-link"
24
+ @click.stop="$parent.$parent.$parent.modifyParam(row)">修改
25
+ </button>
26
+ <button type="button" name="button" class="btn btn-link"
27
+ @click.stop="$parent.$parent.$parent.deleteItem(row)">删除
28
+ </button>
29
+ </td>
30
+ </template>
31
+ </data-grid>
32
+ </partial-view>
33
+ <span>合计:{{f_cost_sum}}元</span>
34
+ </div>
35
+ </div>
36
+ <modal :show.sync="showpay" v-ref:modal backdrop="false">
37
+ <header slot="modal-header" class="modal-header">
38
+ <button type="button" class="close" @click="close"><span>&times;</span></button>
39
+ <h4 class="modal-title">新增成本计划</h4>
40
+ </header>
41
+ <article slot="modal-body" class="modal-body">
42
+ <div class="from-group">
43
+ <label>名称</label>
44
+ <input type="text" class="form-control" v-model="addItem.f_costplan_name">
45
+ </div>
46
+ <div class="from-group">
47
+ <label>金额(元)</label>
48
+ <input type="number" class="form-control" v-model="addItem.f_fee" >
49
+ </div>
50
+ <div class="from-group">
51
+ <label>备注</label>
52
+ <textarea type="text" rows="2" class="form-control" v-model="addItem.f_remarks"></textarea>
53
+ </div>
54
+ </article>
55
+ <footer slot="modal-footer" class="modal-footer">
56
+ <button v-show="showpay" type="button" class="btn btn-default" @click='close'>取消</button>
57
+ <button v-show="showpay" type="button" class="btn btn-success" @click='addpaydipetail'>确认</button>
58
+ </footer>
59
+ </modal>
60
+ </template>
61
+
62
+ <script>
63
+ import {HttpResetClass} from 'vue-client'
64
+ import $ from 'jquery'
65
+
66
+ export default {
67
+ title: '合同签订',
68
+ data () {
69
+ return {
70
+ refresh: true,
71
+ showpay: false, // 新增成本计划开关
72
+ model: {
73
+ rows: [] // 材料成本数据数组
74
+ },
75
+ addItem:{},
76
+ f_cost_sum:0,
77
+ // costplan:['施工成本','材料成本','设计费','监理费','管理费','税金']
78
+ }
79
+ },
80
+ props: {
81
+ selectdata: {
82
+ type: Object
83
+ },
84
+ mark: {
85
+ type: Number,
86
+ default: 0
87
+ }
88
+ },
89
+ ready () {
90
+ this.load()
91
+ },
92
+ methods: {
93
+ async load () {
94
+ let http = new HttpResetClass()
95
+ let data = {
96
+ tablename: 't_cost_plan',
97
+ condition: `f_process_id = '${this.selectdata.f_process_id}'`
98
+ }
99
+ let res = await http.load('POST', 'rs/sql/singleTable', {data: data}, {resolveMsg: null, rejectMsg: '获取数据失败'})
100
+ .then((res) => {
101
+ this.model.rows = res.data
102
+ this.f_cost_sum=0
103
+ for (var i=0;i<this.model.rows.length;i++){
104
+ this.f_cost_sum += Number(this.model.rows[i].f_fee)
105
+ }
106
+ })
107
+ },
108
+ /*// 初始化成本计划
109
+ async fcostplan(){
110
+ let http = new HttpResetClass()
111
+ let data = {
112
+ tablename: 't_cost_plan',
113
+ condition: `f_process_id = '${this.selectdata.f_process_id}'`
114
+ }
115
+ let number = await http.load("post",'rs/sql/checkcostplan', {data: data},{resolveMsg: null, rejectMsg: '获取数据失败'})
116
+ if (number.data[0].num =='0'){
117
+ for (let i=0;i<this.costplan.length;i++){
118
+ this.addItem.f_costplan_name = this.costplan[i]
119
+ if (this.costplan[i]=='材料成本'){
120
+ let data1 = {
121
+ applyNum: `mb.f_apply_num='${this.selectdata.f_apply_num}'`
122
+ }
123
+ await http.load('POST', 'rs/logic/material_cost', {data: data1}, {
124
+ resolveMsg: null,
125
+ rejectMsg: 'material_cost失败'
126
+ }).then((res) => {
127
+ if (res.data[0]['']=='null'||res.data[0]['']==null){
128
+ this.addItem.f_fee = 0
129
+ }else {
130
+ this.addItem.f_fee = res.data[0]['']
131
+ }
132
+ })
133
+ }else {
134
+ this.addItem.f_fee = 0
135
+ }
136
+ this.addItem.f_process_id = this.selectdata.f_process_id
137
+ this.addItem.f_apply_num = this.selectdata.f_apply_num
138
+ this.addItem.f_operator = this.$login.f.name
139
+ this.addItem.f_department = this.$login.f.f_parentname
140
+ this.addItem.f_filiale = this.$login.f.f_fengongsi
141
+ await http.load('POST', 'rs/logic/addcostplan', this.addItem, {resolveMsg:null, rejectMsg: '保存失败'})
142
+ }
143
+ this.load()
144
+ }
145
+ },*/
146
+ // 关闭模态框
147
+ close () {
148
+ this.showpay = false
149
+ this.addItem = null
150
+ },
151
+ // 模态框确定按钮保存数据
152
+ async addpaydipetail () {
153
+ let http = new HttpResetClass()
154
+ this.addItem.f_process_id = this.selectdata.f_process_id
155
+ this.addItem.f_apply_num = this.selectdata.f_apply_num
156
+ this.addItem.f_operator = this.$login.f.name
157
+ this.addItem.f_department = this.$login.f.f_parentname
158
+ this.addItem.f_filiale = this.$login.f.f_fengongsi
159
+ await http.load('POST', 'rs/logic/addcostplan', this.addItem, {resolveMsg: '保存成功', rejectMsg: '保存失败'})
160
+ .then((res) => {
161
+ this.close()
162
+ this.load()
163
+ })
164
+ },
165
+ deleteItem (row) {
166
+ let http = new HttpResetClass()
167
+ http.load('POST','rs/logic/delectcostplan', {data: row}, {resolveMsg: null, rejectMsg: '删除失败'})
168
+ .then((res) => {
169
+ this.load()
170
+ })
171
+ },
172
+ //新增收费 开启模态框
173
+ add () {
174
+ this.showpay = true
175
+ },
176
+ modifyParam(row){
177
+ this.addItem=row
178
+ this.showpay = true
179
+ },
180
+ /*async updateapply(){
181
+ let data={
182
+ id:this.selectdata.id,
183
+ f_cost_sum:this.f_cost_sum
184
+ }
185
+ this.$resetpost('rs/entity/t_apply', data,{resolveMsg: null, rejectMsg: '提交失败'})
186
+ }*/
187
+ },
188
+ watch: {}
189
+ }
190
+
191
+ </script>
192
+
193
+
194
+ <style scoped>
195
+ table {
196
+ border-collapse: collapse;
197
+ border-spacing: 0;
198
+ width: 100%;
199
+ }
200
+
201
+ table, td, th {
202
+ padding: 0;
203
+ border: 1px solid black
204
+ }
205
+
206
+ tr {
207
+ height: 34px;
208
+ }
209
+
210
+ #DynamicForm input {
211
+ text-align: center;
212
+ }
213
+
214
+ </style>