sale-client 3.5.59 → 3.5.61

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,164 +1,164 @@
1
- var express = require('express')
2
- var webpack = require('webpack')
3
- var config = require('./webpack.dev.conf')
4
- var proxyMiddleware = require('http-proxy-middleware')
5
- // var httpProxy = require('http-proxy')
6
-
7
- var app = express()
8
- var compiler = webpack(config)
9
- // var proxy = httpProxy.createProxyServer()
10
-
11
- // Define HTTP proxies to your custom API backend
12
- // https://github.com/chimurai/http-proxy-middleware
13
- var bendi = 'http://192.168.50.4:8400', bendi1 = 'http://121.36.106.17:8400/'
14
- // 公司测试服务
15
- var fuwu = 'http://192.168.50.4:8400'
16
- // var fuwu = 'http://121.36.106.17:8400/'
17
- // 铜川正式
18
- // var fuwu = 'http://61.134.55.234:9999/'
19
- // 铜川测试
20
- // var fuwu = 'http://61.134.55.234:9999/'
21
- // var fuwu = 'http://60.222.250.39:8300/'
22
- // 韶关
23
- // var fuwu = 'http://119.146.1.106:8300/'
24
- // 巩义测试服务
25
- // var fuwu = 'http://192.168.0.227:8400'
26
- // 燎原测试服务
27
- // var fuwu = 'http://121.41.19.238:8400 '
28
- // var fuwu = 'http://121.41.19.238:9001/'
29
-
30
- // var fuwu = 'http://139.214.92.34:8301/'
31
-
32
- var proxyTable = {
33
- '/rs/logic/saleExport': {
34
- target: fuwu
35
- },
36
- '/rs/logic/saleGetExportProgress': {
37
- target: fuwu
38
- },
39
- '/rs/file': {
40
- target: fuwu
41
- },
42
- '/files': {
43
- target: fuwu
44
- },
45
- // 查找资源服务数据
46
- '/rs/search': {
47
- target: fuwu
48
- },
49
- // 查找资源服务数据
50
- '/rs/logic/getLogin': {
51
- target: fuwu
52
- },
53
- // 查找资源服务数据
54
- '/rs/logic/getInitData': {
55
- target: fuwu
56
- },
57
- '/rs/logic/getSaleInitData': {
58
- target: fuwu
59
- },
60
- '/invoice': {
61
- target: fuwu
62
- },
63
- // 用户登录服务地址
64
- '/rs/user': {
65
- target: fuwu
66
- },
67
- '/rs/path/getParams': {
68
- target: fuwu
69
- },
70
- '/rs/data': {
71
- target: fuwu
72
- },
73
- '/rs/license': {
74
- target: fuwu
75
- },
76
- '/rs/db': {
77
- target: fuwu
78
- },
79
- '/excel': {
80
- target: fuwu
81
- },
82
- '/rs/config': {
83
- target: fuwu
84
- },
85
- '/rs/sql/getLicenseById': {
86
- target: fuwu
87
- },
88
- '/rs/sql/manage_getarealist': {
89
- target: fuwu
90
- },
91
- '/rs/sql/manage_getstreetlist': {
92
- target: fuwu
93
- },
94
- '/rs/report': {
95
- target: 'http://121.36.106.17:8400/'
96
- },
97
- '/rs/vue': {
98
- target: fuwu
99
- },
100
- '/webmeter': {
101
- target: 'http://192.168.50.4:8450'
102
- },
103
- '/rs': {
104
- // target: 'http://192.168.30.63:8081/'
105
- // target: 'http://121.36.106.17:8400/'
106
- target: bendi
107
- }
108
- }
109
-
110
- var devMiddleware = require('webpack-dev-middleware')(compiler, {
111
- publicPath: config.output.publicPath,
112
- stats: {
113
- colors: true,
114
- chunks: false
115
- }
116
- })
117
-
118
- var hotMiddleware = require('webpack-hot-middleware')(compiler)
119
- // force page reload when html-webpack-plugin template changes
120
- compiler.plugin('compilation', function (compilation) {
121
- compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) {
122
- hotMiddleware.publish({action: 'reload'})
123
- cb()
124
- })
125
- })
126
-
127
- // proxy api requests
128
- Object.keys(proxyTable).forEach(function (context) {
129
- var options = proxyTable[context]
130
- if (typeof options === 'string') {
131
- options = {target: options}
132
- }
133
- app.use(proxyMiddleware(context, options))
134
- })
135
-
136
- // handle fallback for HTML5 history API
137
- app.use(require('connect-history-api-fallback')())
138
- // app.use(function (req, res, next) {
139
- // res.header('Access-Control-Allow-Origin', '*')
140
- // res.header('Access-Control-Allow-Headers', 'X-Requested-With')
141
- // res.header('Access-Control-Allow-Methods', 'PUT, POST, GET,DELETE, OPTIONS')
142
- // res.header('X-Powered-By', '3,2,1')
143
- // res.header('Access-Control-Allow-Credentials', 'true')
144
- // res.header('Content-Type', 'application/json;charset=utf-8')
145
- // next()
146
- // })
147
-
148
- // serve webpack bundle output
149
- app.use(devMiddleware)
150
-
151
- // enable hot-reload and state-preserving
152
- // compilation error display
153
- app.use(hotMiddleware)
154
-
155
- // serve pure static assets
156
- app.use('/static', express.static('./static'))
157
-
158
- module.exports = app.listen(8089, function (err) {
159
- if (err) {
160
- console.log(err)
161
- return
162
- }
163
- console.log('Listening at http://localhost:8089')
164
- })
1
+ var express = require('express')
2
+ var webpack = require('webpack')
3
+ var config = require('./webpack.dev.conf')
4
+ var proxyMiddleware = require('http-proxy-middleware')
5
+ // var httpProxy = require('http-proxy')
6
+
7
+ var app = express()
8
+ var compiler = webpack(config)
9
+ // var proxy = httpProxy.createProxyServer()
10
+
11
+ // Define HTTP proxies to your custom API backend
12
+ // https://github.com/chimurai/http-proxy-middleware
13
+ var bendi = 'http://121.36.106.17:8400', bendi1 = 'http://121.36.106.17:8400/'
14
+ // 公司测试服务
15
+ var fuwu = 'http://121.36.106.17:8400'
16
+ // var fuwu = 'http://121.36.106.17:8400/'
17
+ // 铜川正式
18
+ // var fuwu = 'http://61.134.55.234:9999/'
19
+ // 铜川测试
20
+ // var fuwu = 'http://61.134.55.234:9999/'
21
+ // var fuwu = 'http://60.222.250.39:8300/'
22
+ // 韶关
23
+ // var fuwu = 'http://119.146.1.106:8300/'
24
+ // 巩义测试服务
25
+ // var fuwu = 'http://192.168.0.227:8400'
26
+ // 燎原测试服务
27
+ // var fuwu = 'http://121.41.19.238:8400 '
28
+ // var fuwu = 'http://121.41.19.238:9001/'
29
+
30
+ // var fuwu = 'http://139.214.92.34:8301/'
31
+
32
+ var proxyTable = {
33
+ '/rs/logic/saleExport': {
34
+ target: fuwu
35
+ },
36
+ '/rs/logic/saleGetExportProgress': {
37
+ target: fuwu
38
+ },
39
+ '/rs/file': {
40
+ target: fuwu
41
+ },
42
+ '/files': {
43
+ target: fuwu
44
+ },
45
+ // 查找资源服务数据
46
+ '/rs/search': {
47
+ target: fuwu
48
+ },
49
+ // 查找资源服务数据
50
+ '/rs/logic/getLogin': {
51
+ target: fuwu
52
+ },
53
+ // 查找资源服务数据
54
+ '/rs/logic/getInitData': {
55
+ target: fuwu
56
+ },
57
+ '/rs/logic/getSaleInitData': {
58
+ target: fuwu
59
+ },
60
+ '/invoice': {
61
+ target: fuwu
62
+ },
63
+ // 用户登录服务地址
64
+ '/rs/user': {
65
+ target: fuwu
66
+ },
67
+ '/rs/path/getParams': {
68
+ target: fuwu
69
+ },
70
+ '/rs/data': {
71
+ target: fuwu
72
+ },
73
+ '/rs/license': {
74
+ target: fuwu
75
+ },
76
+ '/rs/db': {
77
+ target: fuwu
78
+ },
79
+ '/excel': {
80
+ target: fuwu
81
+ },
82
+ '/rs/config': {
83
+ target: fuwu
84
+ },
85
+ '/rs/sql/getLicenseById': {
86
+ target: fuwu
87
+ },
88
+ '/rs/sql/manage_getarealist': {
89
+ target: fuwu
90
+ },
91
+ '/rs/sql/manage_getstreetlist': {
92
+ target: fuwu
93
+ },
94
+ '/rs/report': {
95
+ target: 'http://121.36.106.17:8400/'
96
+ },
97
+ '/rs/vue': {
98
+ target: fuwu
99
+ },
100
+ '/webmeter': {
101
+ target: 'http://192.168.50.4:8450'
102
+ },
103
+ '/rs': {
104
+ // target: 'http://192.168.30.63:8081/'
105
+ // target: 'http://121.36.106.17:8400/'
106
+ target: bendi
107
+ }
108
+ }
109
+
110
+ var devMiddleware = require('webpack-dev-middleware')(compiler, {
111
+ publicPath: config.output.publicPath,
112
+ stats: {
113
+ colors: true,
114
+ chunks: false
115
+ }
116
+ })
117
+
118
+ var hotMiddleware = require('webpack-hot-middleware')(compiler)
119
+ // force page reload when html-webpack-plugin template changes
120
+ compiler.plugin('compilation', function (compilation) {
121
+ compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) {
122
+ hotMiddleware.publish({action: 'reload'})
123
+ cb()
124
+ })
125
+ })
126
+
127
+ // proxy api requests
128
+ Object.keys(proxyTable).forEach(function (context) {
129
+ var options = proxyTable[context]
130
+ if (typeof options === 'string') {
131
+ options = {target: options}
132
+ }
133
+ app.use(proxyMiddleware(context, options))
134
+ })
135
+
136
+ // handle fallback for HTML5 history API
137
+ app.use(require('connect-history-api-fallback')())
138
+ // app.use(function (req, res, next) {
139
+ // res.header('Access-Control-Allow-Origin', '*')
140
+ // res.header('Access-Control-Allow-Headers', 'X-Requested-With')
141
+ // res.header('Access-Control-Allow-Methods', 'PUT, POST, GET,DELETE, OPTIONS')
142
+ // res.header('X-Powered-By', '3,2,1')
143
+ // res.header('Access-Control-Allow-Credentials', 'true')
144
+ // res.header('Content-Type', 'application/json;charset=utf-8')
145
+ // next()
146
+ // })
147
+
148
+ // serve webpack bundle output
149
+ app.use(devMiddleware)
150
+
151
+ // enable hot-reload and state-preserving
152
+ // compilation error display
153
+ app.use(hotMiddleware)
154
+
155
+ // serve pure static assets
156
+ app.use('/static', express.static('./static'))
157
+
158
+ module.exports = app.listen(8089, function (err) {
159
+ if (err) {
160
+ console.log(err)
161
+ return
162
+ }
163
+ console.log('Listening at http://localhost:8089')
164
+ })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sale-client",
3
- "version": "3.5.59",
3
+ "version": "3.5.61",
4
4
  "description": "收费模块前台组件",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -153,7 +153,7 @@ export default {
153
153
  base: {
154
154
  f_user_name: '',
155
155
  f_user_state: '',
156
- f_user_type:'',
156
+ f_user_type: '',
157
157
  f_credentials: '',
158
158
  f_cost_type: '',
159
159
  f_bz_type: '',
@@ -337,6 +337,17 @@ export default {
337
337
  if (this.fileSaveData.reason && this.fileSaveData.reason !== '其他') {
338
338
  this.fileSaveData.modifyReason = this.fileSaveData.reason
339
339
  }
340
+ console.log('row-------->',this.row)
341
+ for (let item in this.filechangeDetails.rows){
342
+ if (item.f_field_name === '通气日期') {
343
+ let name = this.$login.f.name
344
+ let parentname = this.$login.f.f_parentname
345
+ console.log('验证进来了--------------->',name,parentname)
346
+ this.fileSaveData.userinfo.f_operator = name
347
+ this.fileSaveData.userinfo.f_depname = parentname
348
+ }
349
+ }
350
+
340
351
  this.$FileManageService.fileSave(this.fileSaveData).then((res) => {
341
352
  this.$parent.resdata = res.data.result[0].f_userinfo_code
342
353
  if (!this.row) {
@@ -10,14 +10,16 @@
10
10
  <input type="text"
11
11
  :disabled="look"
12
12
  v-model="model.name" style="width:60%"
13
- class="input_search full-with" placeholder="项目类别">
13
+ class="input_search full-with" placeholder="名称">
14
14
  </div>
15
15
  <div class="col-sm-6">
16
16
  <label class="font_normal_body">类别</label>
17
- <input type="text"
18
- :disabled="look" disabled
19
- v-model="model.type" style="width:60%"
20
- class="input_search full-with" placeholder="项目类别">
17
+ <v-select :disabled="look"
18
+ v-model="model.type"
19
+ placeholder='项目类别'
20
+ :value.sync="model.type"
21
+ :value-single="true"
22
+ :options='types'></v-select>
21
23
  </div>
22
24
  </div>
23
25
  <div class="row" style="margin-top:1rem;" v-if="model.type ==='型号'">
@@ -35,6 +37,13 @@
35
37
  v-model="model.code" style="width:60%"
36
38
  class="input_search full-with" id="name" placeholder="物料编码">
37
39
  </div>
40
+ <div class="col-sm-6">
41
+ <label class="font_normal_body">单价</label>
42
+ <input type="text"
43
+ :disabled="look"
44
+ v-model="model.price" style="width:60%"
45
+ class="input_search full-with" id="name" placeholder="物料单价">
46
+ </div>
38
47
  </div>
39
48
  <!-- 按钮 -->
40
49
  <div class="row col-sm-12" style="margin-top: 1rem">
@@ -46,6 +55,8 @@
46
55
  <span class=" glyphicon glyphicon-log-out"></span>返回
47
56
  </button>
48
57
  </div>
58
+ <div class="row col-sm-12" style="margin-top: 18rem">
59
+ </div>
49
60
  <work-busy :is-busy="isbusy"></work-busy>
50
61
  </div>
51
62
  </template>
@@ -68,7 +79,11 @@ export default {
68
79
  },
69
80
  type: '',
70
81
  isbusy: false,
71
- types: [{label: '普通模式', value: '普通模式'}, {label: 'markDown模式', value: 'markDown模式'}],
82
+ types: this.$appdata.getParam('材料管理-项目类别') ? this.$appdata.getParam('材料管理-项目类别') : [{
83
+ label: '型号',
84
+ value: '型号'
85
+ }, {label: '燃气具设备', value: '燃气具设备'}, {label: '报建', value: '报建'},
86
+ {label: '规格', value: '规格'}, {label: '材料', value: '材料'}, {label: '品名', value: '品名'}],
72
87
  showFile: 'false',
73
88
  file: []
74
89
  }
@@ -118,7 +133,7 @@ export default {
118
133
  this.$dispatch('cancel')
119
134
  },
120
135
  async confirm () {
121
- await this.$resetpost('ncc/rs/entity/t_material_info', this.model).then(res =>
136
+ await this.$resetpost('rs/entity/t_material_info', this.model).then(res =>
122
137
  this.$parent.$refs.funlist.searchData()
123
138
  )
124
139
  },
@@ -127,7 +142,7 @@ export default {
127
142
  },
128
143
  delFile (row) {
129
144
  if (!this.look) {
130
- this.$resetdelete(`ncc/rs/entity/t_material_info`, {id: row.id}).then(res =>
145
+ this.$resetdelete(`rs/entity/t_material_info`, {id: row.id}).then(res =>
131
146
  this.initdata()
132
147
  )
133
148
  }
@@ -122,7 +122,7 @@ export default {
122
122
  condition: condition || '1 = 1'
123
123
  }
124
124
  this.seaching = true
125
- let temp = await this.$resetpost('ncc/rs/logic/query_material', {data}, {rejectMsg: null, resolveMsg: null})
125
+ let temp = await this.$resetpost('rs/logic/query_material', {data}, {rejectMsg: null, resolveMsg: null})
126
126
  if (!model) {
127
127
  this.model = handleTree(temp.data)
128
128
  }
@@ -149,7 +149,7 @@ export default {
149
149
  this.$showAlert('请先删除子目录!', 'warning', 2000)
150
150
  return
151
151
  }
152
- this.$resetdelete(`ncc/rs/entity/t_material_info`, {id: obj.data.id}).then(res =>
152
+ this.$resetdelete(`rs/entity/t_material_info`, {id: obj.data.id}).then(res =>
153
153
  this.searchData()
154
154
  )
155
155
  },
@@ -162,7 +162,7 @@ export default {
162
162
  depict: '',
163
163
  type: '普通模式'
164
164
  }
165
- await this.$resetpost('ncc/rs/entity/t_material_info', model).then(res =>
165
+ await this.$resetpost('rs/entity/t_material_info', model).then(res =>
166
166
  this.searchData()
167
167
  )
168
168
  }
@@ -1,12 +1,12 @@
1
1
  <template>
2
2
  <div id="unit" class="flex-row">
3
3
  <material-display @select-changed='selected' @modify-res="modifyRes"
4
- @add-res="addRes"
5
- class="basic-main" style="width:auto;" v-ref:funlist>
4
+ @add-res="addRes"
5
+ class="basic-main" style="width:auto;" v-ref:funlist>
6
6
  </material-display>
7
7
  <div class="binary-right" style="width: 40%;overflow-x: hidden; overflow-y: scroll;" v-if="row">
8
8
  <materials-base :look='look' :data="row" :title="title"
9
- :parent="row.parent_name" @cancel="cancel">
9
+ :parent="row.parent_name" @cancel="cancel">
10
10
  </materials-base>
11
11
  </div>
12
12
  </div>
@@ -1,132 +1,132 @@
1
- <template>
2
- <div class="auto form-horizontal" >
3
- <modal :show.sync="show &&!billConfig.autoPrint" v-ref:modal large backdrop="false">
4
- <header slot="modal-header" class="modal-header">
5
- <h3 style="color:black" class="modal-title">收费发票</h3>
6
- </header>
7
- <article slot="modal-body" class="modal-body">
8
- <!-- <div v-if="bill.data">-->
9
- <!-- {{{bill.data}}}-->
10
- <!-- </div>-->
11
- <validator name='v'>
12
- <form class="form-horizontal select-overspread">
13
- <div class="row" style="display: flex;justify-content: center;" id='normal-bill' v-if="bill.data">
14
- {{{bill.data}}}
15
- </div>
16
- </form>
17
- </validator>
18
- </article>
19
- <footer slot="modal-footer" class="modal-footer">
20
- <div v-if="billConfig.hasBillManage">
21
- <div class="col-sm-2" >
22
- <span><strong>发票号:{{model.f_using_number}}</strong></span>
23
- </div>
24
- </div>
25
- <button type="button" class="btn btn-success" @click='print(true)'>选择打印机打印</button>
26
- <button type="button" class="btn btn-success" @click='print()' @keyup.enter="print()" v-el:confirmbutton>打印</button>
27
- <report-print id='normal-bill' top='5mm' left='5mm' width='90%' height='80%' :notrepeat="true" :showbtn="false" v-ref:reportprint></report-print>
28
- <button type="button" class="btn btn-default" @click='cancel()' v-if="!billConfig.hasBillManage">取消</button>
29
- </footer>
30
- </modal>
31
- </div>
32
- </template>
33
- <script>
34
- import { DataModel } from 'vue-client'
35
-
36
- let getBillData = async function (self, val) {
37
- console.log('temp:', self)
38
- let temp = {
39
- reprint: "'正常'",
40
- operator: `'${self.$login.f.name}'`,
41
- condition: self.data.id
42
- }
43
- if (self.data.fillgasid) {
44
- temp.condition = `"${self.data.fillgasid}"`
45
- }
46
- console.log('self.billData.url:', self.billData.url)
47
- self.bill = new DataModel(self.billData.url, temp)
48
- await self.bill.search(self.data.id)
49
- // 获取发票号
50
- self.model.f_using_number = self.billData.bill.number
51
- }
52
-
53
- export default {
54
- title: '收费发票',
55
- data () {
56
- return {
57
- model: {
58
- f_using_number: null
59
- },
60
- bill: {},
61
- messShow: false
62
- }
63
- },
64
- props: ['show','data','billData', 'billConfig'],
65
- ready () {
66
- console.log('打票', this.billConfig, this.billData)
67
- },
68
- methods: {
69
- // 确认按钮获得焦点
70
- confirmbuttonfocus () {
71
- this.$nextTick(() => {
72
- this.$els.confirmbutton.focus()
73
- })
74
- },
75
- cancel () {
76
- this.$dispatch('toggle')
77
- },
78
- getbill () {
79
- this.$refs.reportprint.isPrint = true
80
- let val = true
81
- getBillData(this, val).then(() => {
82
- this.$emit('ready')
83
- }).catch((error) => {
84
- this.$emit('error', error)
85
- })
86
- },
87
- async print (select) {
88
- // 更新系统发票
89
- try {
90
- if (this.billConfig.hasBillManage) {
91
- if (this.data.f_bill_type != '清算单') { await this.$CommonService.openPaperBill(this.data.id, this.data.f_bill_type, this.billConfig.billType, this.billData.bill, '正常') }
92
- } else {
93
- await this.$resetpost('rs/logic/sale_billReprint', {data: this.data}, {resolveMsg: null, rejectMsg: '票据补打出错!!'})
94
- }
95
- if (select) {
96
- this.$refs.reportprint.print(true)
97
- } else {
98
- this.$refs.reportprint.print()
99
- }
100
- } catch (error) {
101
- this.$dispatch('refresh')
102
- }
103
- }
104
- },
105
- watch: {
106
- 'show' (val) {
107
- if (val) {
108
- getBillData(this, val).then(() => {
109
- if(this.billConfig.autoPrint){
110
- this.print()
111
- }
112
- this.$emit('ready')
113
- }).catch((error) => {
114
- this.$emit('error', error)
115
- })
116
- this.confirmbuttonfocus()
117
- }
118
- }
119
- },
120
- events: {
121
- 'print' () {
122
- // 对票据明细进行更新或插入操作
123
- this.$dispatch('printok', '发票打印', this.data)
124
- },
125
- 'print-error' () {
126
- this.$dispatch('error', '发票打印', this.data, null)
127
- }
128
- }
129
- }
130
- </script>
131
- <style >
132
- </style>
1
+ <template>
2
+ <div class="auto form-horizontal" >
3
+ <modal :show.sync="show &&!billConfig.autoPrint" v-ref:modal large backdrop="false">
4
+ <header slot="modal-header" class="modal-header">
5
+ <h3 style="color:black" class="modal-title">收费发票</h3>
6
+ </header>
7
+ <article slot="modal-body" class="modal-body">
8
+ <!-- <div v-if="bill.data">-->
9
+ <!-- {{{bill.data}}}-->
10
+ <!-- </div>-->
11
+ <validator name='v'>
12
+ <form class="form-horizontal select-overspread">
13
+ <div class="row" style="display: flex;justify-content: center;" id='normal-bill' v-if="bill.data">
14
+ {{{bill.data}}}
15
+ </div>
16
+ </form>
17
+ </validator>
18
+ </article>
19
+ <footer slot="modal-footer" class="modal-footer">
20
+ <div v-if="billConfig.hasBillManage">
21
+ <div class="col-sm-2" >
22
+ <span><strong>发票号:{{model.f_using_number}}</strong></span>
23
+ </div>
24
+ </div>
25
+ <button type="button" class="btn btn-success" @click='print(true)'>选择打印机打印</button>
26
+ <button type="button" class="btn btn-success" @click='print()' @keyup.enter="print()" v-el:confirmbutton>打印</button>
27
+ <report-print id='normal-bill' top='5mm' left='5mm' width='90%' height='80%' :notrepeat="true" :showbtn="false" v-ref:reportprint></report-print>
28
+ <button type="button" class="btn btn-default" @click='cancel()' v-if="!billConfig.hasBillManage">取消</button>
29
+ </footer>
30
+ </modal>
31
+ </div>
32
+ </template>
33
+ <script>
34
+ import { DataModel } from 'vue-client'
35
+
36
+ let getBillData = async function (self, val) {
37
+ console.log('temp:', self)
38
+ let temp = {
39
+ reprint: "'正常'",
40
+ operator: `'${self.$login.f.name}'`,
41
+ condition: self.data.id
42
+ }
43
+ if (self.data.fillgasid) {
44
+ temp.condition = `"${self.data.fillgasid}"`
45
+ }
46
+ console.log('self.billData.url:', self.billData.url)
47
+ self.bill = new DataModel(self.billData.url, temp)
48
+ await self.bill.search(self.data.id)
49
+ // 获取发票号
50
+ self.model.f_using_number = self.billData.bill.number
51
+ }
52
+
53
+ export default {
54
+ title: '收费发票',
55
+ data () {
56
+ return {
57
+ model: {
58
+ f_using_number: null
59
+ },
60
+ bill: {},
61
+ messShow: false
62
+ }
63
+ },
64
+ props: ['show','data','billData', 'billConfig'],
65
+ ready () {
66
+ console.log('打票', this.billConfig, this.billData)
67
+ },
68
+ methods: {
69
+ // 确认按钮获得焦点
70
+ confirmbuttonfocus () {
71
+ this.$nextTick(() => {
72
+ this.$els.confirmbutton.focus()
73
+ })
74
+ },
75
+ cancel () {
76
+ this.$dispatch('toggle')
77
+ },
78
+ getbill () {
79
+ this.$refs.reportprint.isPrint = true
80
+ let val = true
81
+ getBillData(this, val).then(() => {
82
+ this.$emit('ready')
83
+ }).catch((error) => {
84
+ this.$emit('error', error)
85
+ })
86
+ },
87
+ async print (select) {
88
+ // 更新系统发票
89
+ try {
90
+ if (this.billConfig.hasBillManage) {
91
+ if (this.data.f_bill_type != '清算单') { await this.$CommonService.openPaperBill(this.data.id, this.data.f_bill_type, this.billConfig.billType, this.billData.bill, '正常') }
92
+ } else {
93
+ await this.$resetpost('rs/logic/sale_billReprint', {data: this.data}, {resolveMsg: null, rejectMsg: '票据补打出错!!'})
94
+ }
95
+ if (select) {
96
+ this.$refs.reportprint.print(true)
97
+ } else {
98
+ this.$refs.reportprint.print()
99
+ }
100
+ } catch (error) {
101
+ this.$dispatch('refresh')
102
+ }
103
+ }
104
+ },
105
+ watch: {
106
+ 'show' (val) {
107
+ if (val) {
108
+ getBillData(this, val).then(() => {
109
+ if(this.billConfig.autoPrint){
110
+ this.print()
111
+ }
112
+ this.$emit('ready')
113
+ }).catch((error) => {
114
+ this.$emit('error', error)
115
+ })
116
+ this.confirmbuttonfocus()
117
+ }
118
+ }
119
+ },
120
+ events: {
121
+ 'print' () {
122
+ // 对票据明细进行更新或插入操作
123
+ this.$dispatch('printok', '发票打印', this.data)
124
+ },
125
+ 'print-error' () {
126
+ this.$dispatch('error', '发票打印', this.data, null)
127
+ }
128
+ }
129
+ }
130
+ </script>
131
+ <style >
132
+ </style>
@@ -312,10 +312,29 @@ export default {
312
312
  this.model.rows = ''
313
313
  },
314
314
  operate (title, name, row) {
315
- this.asideTitle = this.componentName = title
316
- // 单条业务逻辑操作不管批量操作是否为true统一都修改为false
317
- this.bulkType = null
318
- this.$dispatch('select-oper', title, name, row)
315
+ // 换表前需要校验
316
+ if (title == '换表管理') {
317
+ this.$resetpost('rs/logic/checkHandPlan', {data: {f_userinfo_id: row.f_userinfo_id}}, {resolveMsg: null, rejectMsg: null}).then((res) => {
318
+ // 收费成功,打票
319
+ console.log('校验换表数据结果:', res)
320
+ if (res.data.resultData.length > 0) {
321
+ this.$showAlert(res.data.resultData, 'warning', 3000)
322
+ return
323
+ }
324
+ this.asideTitle = this.componentName = title
325
+ // 单条业务逻辑操作不管批量操作是否为true统一都修改为false
326
+ this.bulkType = null
327
+ this.$dispatch('select-oper', title, name, row)
328
+ })
329
+ } else {
330
+ // if (parseInt(row.f_balance) < 0) {
331
+ // this.$showMessage('账户当前欠费未缴清', ['confirm'])
332
+ // } else {
333
+ this.asideTitle = this.componentName = title
334
+ // 单条业务逻辑操作不管批量操作是否为true统一都修改为false
335
+ this.bulkType = null
336
+ this.$dispatch('select-oper', title, name, row)
337
+ }
319
338
  },
320
339
  IOTCenter (row) {
321
340
  row.f_calculation !== '预付费' ? this.operate('物联网表收费', 'machine-charge', row) : this.operate('物联网表收费', 'iot-meter-center', row)
@@ -344,7 +344,10 @@
344
344
  left join t_sellinghand tsh on th.id=tsh.f_hand_id
345
345
  where th.f_hand_state = '有效' and th.f_input_date > '${row.f_operate_date}' and tsh.f_debt_money>0
346
346
  and th.f_userfiles_id = '${row.f_userfiles_id}' and tsh.f_state='有效'`
347
- let getwate = await this.$resetpost('rs/logic/sqlquery', {data: {sql: sql}})
347
+ let getwate = await this.$resetpost('rs/logic/sqlquery', {data: {sql: sql}}, {
348
+ resolveMsg: null,
349
+ rejectMsg: '获取记录详情出错!!'
350
+ })
348
351
  if (getwate.data.length > 0) {
349
352
  this.$showAlert('此次机表收费之后有自动下账,不能撤销此纪录', 'warning', 1500)
350
353
  return
@@ -15,8 +15,8 @@
15
15
  placeholder='处理状态'
16
16
  :value.sync="model.f_hand_state"
17
17
  :options='$parent.$parent.states'
18
- condition= "f_hand_state = {}"
19
18
  close-on-select
19
+ condition= " {} "
20
20
  @change="$parent.$parent.search">
21
21
  </v-select>
22
22
  </div>
@@ -149,7 +149,7 @@
149
149
  <td style="text-align:center">{{row.f_meter_source}}</td>
150
150
  <td style="text-align:center">{{row.f_audit_person}}</td>
151
151
  <td style="text-align:center">{{row.f_audit_date}}</td>
152
- <td style="text-align: center" v-if="row.f_hand_state == '待审核'">
152
+ <td style="text-align: center" v-if="row.f_meter_state === '待审核' && row.f_hand_state === '有效'">
153
153
  <button type="button" class="button_search button_spacing width-60" @click.stop="$parent.$parent.$parent.success(row)">通过</button>
154
154
  <br>
155
155
  <button type="button" class="button_search button_spacing width-60" @click.stop="$parent.$parent.$parent.faild(row)">不通过</button>
@@ -201,13 +201,13 @@
201
201
  pushdata: {openid: '', cause: ''},
202
202
  row: null,
203
203
  model: new PagedList('rs/sql/meterReadAudit', 20),
204
- states: [{label: '待审核', value: `'待审核'`}, {label: '未通过', value: `'无效'`}, {label: '已通过', value: `'有效'`}],
204
+ states: [{label: '待审核', value: ` f_meter_state = '待审核' and f_hand_state ='有效'`}, {label: '未通过', value: ` f_hand_state = '无效'`}, {label: '已通过', value: `f_meter_state = '已抄表' and f_hand_state ='有效'`}],
205
205
  meterbooks: [{label: '全部', value: ''}]
206
206
  }
207
207
  },
208
208
  ready () {
209
209
  readyGen(this)
210
- this.$refs.paged.$refs.cri.model.f_hand_state[0] =`'待审核'`
210
+ this.$refs.paged.$refs.cri.model.f_hand_state[0] = ` f_meter_state = '待审核'`
211
211
  },
212
212
  methods: {
213
213
  loadMeterBooks () {
@@ -0,0 +1,316 @@
1
+ <template>
2
+ <div class="basic-main" style="height: 98%">
3
+ <div class="flex">
4
+ <criteria-paged :model="model" v-ref:paged>
5
+ <criteria partial='criteria' v-ref:cri @condition-changed="$parent.selfSearch">
6
+ <div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
7
+ <div class="row">
8
+ <!--<div class="col-sm-6">-->
9
+ <!--style="border: 1px solid #a6d5ea; box-shadow: darkgrey 1px 1px 1px 2px;padding: 0.5%">-->
10
+ <div class="col-sm-2 form-group">
11
+ <label class="font_normal_body">抄表日期</label>
12
+ <datepicker placeholder="开始日期"
13
+ style="width:60%"
14
+ class="datepicker"
15
+ v-model="model.startDate"
16
+ :value.sync="model.startDate"
17
+ condition="f_input_date >='{} 00:00:00'"
18
+ :format="'yyyy-MM-dd'"
19
+ ></datepicker>
20
+ </div>
21
+ <div class="col-sm-2 form-group">
22
+ <label class="font_normal_body">&emsp;&emsp;至&emsp;</label>
23
+ <datepicker placeholder="抄表日期"
24
+ style="width:60%"
25
+ v-model="model.endDate"
26
+ :value.sync="model.endDate"
27
+ condition="f_input_date <='{} 23:59:59'"
28
+ :format="'yyyy-MM-dd'"
29
+ ></datepicker>
30
+ </div>
31
+
32
+ <div class="col-sm-2 form-group">
33
+ <label class="font_normal_body">客户编号</label>
34
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_userinfo_code"
35
+ condition="f_userinfo_code='{}'" placeholder='客户编号'>
36
+ </div>
37
+
38
+ <div class="span" style="float:right;">
39
+
40
+ <button class="button_search button_spacing" @click="$parent.$parent.search()">查询</button>
41
+ <button class="button_clear button_spacing" @click="$parent.$parent.clear()">清空</button>
42
+ <export-excel
43
+ :data="{condition: $parent.$parent.excelCondition}"
44
+ :field="$parent.$parent.fields"
45
+ sqlurl="rs/logic/saleExport" progress="saleGetExportProgress" sql-name="getAuditMachineHand"
46
+ template-name='抄表审核导出'
47
+ :choose-col="true">
48
+ </export-excel>
49
+ <div
50
+ :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
51
+ @click="$parent.$parent.hidden()" class="button_spacing" style="float: right"></div>
52
+ </div>
53
+ </div>
54
+ <div class="row" v-show="$parent.$parent.criteriaShow">
55
+ <div class="col-sm-2 form-group">
56
+ <label class="font_normal_body">表&emsp;&emsp;号</label>
57
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_meternumber"
58
+ condition="f_meternumber like '%{}%'" placeholder='表号'>
59
+ </div>
60
+ <div class="col-sm-2 form-group">
61
+ <label class="font_normal_body">客户姓名</label>
62
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_user_name" placeholder='客户姓名'
63
+ condition="f_user_name like '%{}%'">
64
+ </div>
65
+ <div class="col-sm-2 form-group">
66
+ <label class="font_normal_body">小&ensp;&ensp;&ensp;&ensp;区</label>
67
+ <v-select :value.sync="model.f_residential_area"
68
+ class="select_list select"
69
+ enter-push
70
+ v-model="model.f_residential_area"
71
+ style="width: 60%"
72
+ multiple="true"
73
+ :options='$parent.$parent.residentialArea' placeholder='选择小区'
74
+ close-on-select v-el:cc>
75
+ </v-select>
76
+ </div>
77
+ <div class="col-sm-2 form-group">
78
+ <label class="font_normal_body">楼&emsp;&emsp;栋</label>
79
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_building"
80
+ condition="f_building = '{}'" placeholder='楼栋'>
81
+ </div>
82
+ <div class="col-sm-2 form-group">
83
+ <label class="font_normal_body">单&emsp;&emsp;元</label>
84
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_unit"
85
+ condition="f_unit = '{}'" placeholder='单元'>
86
+ </div>
87
+ <div class="col-sm-2 form-group">
88
+ <label class="font_normal_body">楼&emsp;&emsp;层</label>
89
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_floor"
90
+ condition="f_floor = '{}'" placeholder='楼层'>
91
+ </div>
92
+ <div class="col-sm-2 form-group">
93
+ <label class="font_normal_body">门&ensp;牌&ensp;号</label>
94
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_room"
95
+ condition="f_room like '%{}%'" placeholder='门牌号'>
96
+ </div>
97
+ <div class="col-sm-2 form-group">
98
+ <label class="font_normal_body">客户地址</label>
99
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_address"
100
+ condition="f_address like '%{}%'" placeholder='客户地址'>
101
+ </div>
102
+ <div class="col-sm-2 form-group">
103
+ <label class="font_normal_body">抄&ensp;表&ensp;员</label>
104
+ <v-select :value.sync="model.f_inputtor" v-model='model.f_inputtor'
105
+ style="width:60%"
106
+ multiple="true"
107
+ :options='$parent.$parent.inputtores' placeholder='抄表员'
108
+ close-on-select
109
+ v-el:cc></v-select>
110
+ </div>
111
+ <div class="col-sm-2 form-group">
112
+ <label class="font_normal_body">客户类型</label>
113
+ <v-select :value.sync="model.f_user_type" v-model="model.f_user_type"
114
+ :options='$parent.$parent.usertypes' placeholder='客户类型'
115
+ style="width:60%"
116
+ close-on-select
117
+ condition="f_user_type = '{}'"></v-select>
118
+ </div>
119
+ <div class="col-sm-2 form-group">
120
+ <label class="font_normal_body">抄&ensp;表&ensp;册</label>
121
+ <v-select :value.sync="model.f_meter_book" v-model="model.f_meter_book"
122
+ :options='$parent.$parent.meterbooks' placeholder='抄表册'
123
+ style="width:60%"
124
+ :multiple="true"
125
+ condition="f_meter_book_num in {}"></v-select>
126
+ </div>
127
+ <res-select-group :show-component="['company','department','operator']" :initres="$parent.$parent.initres" @re-res="$parent.$parent.getRes"
128
+ v-ref:sel></res-select-group>
129
+ </div>
130
+
131
+ </div>
132
+ </criteria>
133
+ <data-grid :model="model" partial='list' class="list_area table_sy" v-ref:grid id="hand_manager_grid">
134
+ <template partial='head'>
135
+ <tr>
136
+ <th><nobr>客户编号</nobr></th>
137
+ <th><nobr>基本信息</nobr></th>
138
+ <th><nobr>用户等级</nobr></th>
139
+ <th><nobr>上期结余</nobr></th>
140
+ <th><nobr>表号</nobr></th>
141
+ <th><nobr>上期底数</nobr></th>
142
+ <th><nobr>本期底数</nobr></th>
143
+ <th><nobr>上次抄表录入日期</nobr></th>
144
+ <th><nobr>下发日期</nobr></th>
145
+ <th><nobr>抄表录入日期</nobr></th>
146
+ <th><nobr>抄表册</nobr></th>
147
+ <th><nobr>抄表员</nobr></th>
148
+ </tr>
149
+ </template>
150
+ <template partial='body'>
151
+ <td>{{row.f_userinfo_code}}</td>
152
+ <td> <nobr>{{row.f_user_name}}&nbsp;&nbsp;{{row.f_address}} </nobr></td>
153
+ <td>{{row.f_user_level}}</td>
154
+ <td>{{row.f_balance}}</td>
155
+ <td>{{row.f_meternumber}}</td>
156
+ <td>{{row.f_last_tablebase}}</td>
157
+ <td id="hand-creat" style="display: flex;justify-content: space-between;align-items: center"><b>{{row.f_tablebase}}</b></td>
158
+ <td><nobr>{{row.f_last_input_date}}</nobr></td>
159
+ <td><nobr>{{row.f_hand_date}}</nobr></td>
160
+ <td><nobr>{{row.f_input_date}}</nobr></td>
161
+ <td> <nobr>{{row.f_book_name}} </nobr></td>
162
+ <td>{{row.f_inputtor}}</td>
163
+ </template>
164
+ </data-grid>
165
+ </criteria-paged>
166
+ </div>
167
+ </div>
168
+
169
+ </template>
170
+ <script>
171
+ import {HttpResetClass, PagedList} from 'vue-client'
172
+
173
+ let readyGen = async function (self) {
174
+ self.$refs.paged.$refs.cri.model.startDate = self.$login.toStartAndEndDateString()[0]
175
+ self.$refs.paged.$refs.cri.model.endDate = self.$login.toStandardDateString()
176
+ await self.$LoadParams.loadMeterBook(self.f_filialeid)
177
+ self.loadMeterBooks()
178
+ self.getaddress()
179
+ }
180
+
181
+ export default {
182
+ title: '已上传抄表查询',
183
+ data () {
184
+ return {
185
+ timer: null,
186
+ model: new PagedList('rs/sql/getMachineUploaded', 50),
187
+ initres: {
188
+ org: [this.$login.f.orgid],
189
+ dep: [],
190
+ user: []
191
+ },
192
+ config: {
193
+ examine: false
194
+ },
195
+ imgfilename: '',
196
+ // 小区
197
+ residentialArea: [],
198
+ imgshow: false,
199
+ criteriaShow: false,
200
+ orgCondtionStr: '',
201
+ excelCondition: '',
202
+ fields: {
203
+ 'f_userinfo_code': '客户编号',
204
+ 'f_user_name': '客户名称',
205
+ 'f_address': '客户地址',
206
+ 'f_balance': '上期结余',
207
+ 'f_meternumber': '表号',
208
+ 'f_last_tablebase': '上期底数',
209
+ 'f_tablebase': '本期底数',
210
+ 'f_last_input_date': '上次抄表录入日期',
211
+ 'f_hand_date': '下发日期',
212
+ 'f_input_date': '抄表录入日期',
213
+ 'f_book_name': '抄表册',
214
+ 'f_inputtor': '抄表员'
215
+ },
216
+ auditState: [{label: '全部', value: ''}, {label: '已审核', value: '已抄表'}, {label: '未审核', value: '待审核'}],
217
+ auditState1: [{label: '全部', value: ''}, {label: '审核失败', value: '审核失败'}],
218
+ meters: [{label: '全部', value: ''}, {label: '机表', value: '机表'}, {label: '物联网表', value: '物联网表'}],
219
+ resultstate: this.$appdata.getParam('抄表结果状态'),
220
+ meterstates: this.$appdata.getParam('抄表状态') ? [{
221
+ label: '全部',
222
+ value: ''
223
+ }, ...this.$appdata.getParam('抄表状态')] : [],
224
+ usertypes: this.$appdata.getParam('客户类型') ? [{label: '全部', value: ''}, ...this.$appdata.getParam('客户类型')] : [],
225
+ userlevels: this.$appdata.getParam('用户等级') ? [{label: '全部', value: ''}, ...this.$appdata.getParam('用户等级')] : [],
226
+ adjustablename: this.$appdata.getParam('调压箱名称') ? [{
227
+ label: '全部',
228
+ value: ''
229
+ }, ...this.$appdata.getParam('调压箱名称')] : [],
230
+ meterbooks: [],
231
+ // 公司下拉
232
+ curorgid: [this.$login.f.orgid]
233
+ }
234
+ },
235
+ props: [],
236
+ beforeDestroy () {
237
+ // 销毁定时器
238
+ if (this.timer) clearInterval(this.timer)
239
+ },
240
+ ready () {
241
+ this.model.pageSizeMax = 9999999
242
+ readyGen(this)
243
+ },
244
+ methods: {
245
+ hidden () {
246
+ this.criteriaShow = !this.criteriaShow
247
+ },
248
+ getRes (obj) {
249
+ this.orgCondtionStr = obj
250
+ },
251
+ view (row) {
252
+ this.$parent.showupload = true
253
+ this.$parent.row = row
254
+ },
255
+ async getaddress () {
256
+ console.log('开始获取小区')
257
+ let HttpReset = new HttpResetClass()
258
+ var data = await HttpReset.load('POST', 'rs/sql/manage_getarealist', {
259
+ data: {
260
+ condition: `1=1 and s.f_filialeid = '${this.$login.f.orgid}'`
261
+ }
262
+ }, {resolveMsg: null, rejectMsg: '获取小区失败!'})
263
+ console.log('小区', data)
264
+ let house = []
265
+ house.push()
266
+ for (let row of data.data) {
267
+ console.log('开始保存小区')
268
+ house.push({label: row.f_residential_area, value: row.f_residential_area})
269
+ }
270
+ this.residentialArea = house
271
+ },
272
+ search () {
273
+ this.$refs.paged.$refs.cri.search()
274
+ },
275
+ clear () {
276
+ Object.keys(this.$refs.paged.$refs.cri.model).forEach((key) => {
277
+ this.$refs.paged.$refs.cri.model[key] = []
278
+ })
279
+ },
280
+ selfSearch (args) {
281
+ if (!this.orgCondtionStr) {
282
+ args.condition = `${args.condition}` + ' and f_orgid = ' + this.$login.f.orgid
283
+ } else {
284
+ args.condition = `${args.condition}` + this.orgCondtionStr
285
+ }
286
+ this.excelCondition = args.condition
287
+ this.$refs.paged.$refs.grid.selectInit()
288
+ this.model.search(args.condition, args.model)
289
+ },
290
+ loadMeterBooks () {
291
+ this.meterbooks = this.$GetSaleParam.getMeterBooks()
292
+ }
293
+ },
294
+ computed: {
295
+ inputtores () {
296
+ // 获取抄表员
297
+ console.log('获取抄表员', this.$login.f)
298
+ let rs = []
299
+ if (this.$login.f.f_gasman.length > 0) {
300
+ for (let i = 0; i < this.$login.f.f_gasman.length; i++) {
301
+ let temp = {
302
+ label: this.$login.f.f_gasman[i].name,
303
+ value: this.$login.f.f_gasman[i].name
304
+ }
305
+ rs.push(temp)
306
+ }
307
+ }
308
+ this.inputtores2 = rs
309
+ return [...rs]
310
+ }
311
+ },
312
+ watch: {
313
+
314
+ }
315
+ }
316
+ </script>
package/src/sale.js CHANGED
@@ -325,6 +325,8 @@ export default function (filiale) {
325
325
  Vue.component('machine-hand-manager', (resolve) => { require(['./components/revenue/machineHandManage/machineHandManager'], resolve) })
326
326
  // 机表抄表审核
327
327
  Vue.component('machine-hand-audit', (resolve) => { require(['./components/revenue/machineHandManage/machineHandAudit'], resolve) })
328
+ // 机表抄表已上传未同步
329
+ Vue.component('machine-uploaded', (resolve) => { require(['./components/revenue/machineHandManage/machineUploaded'], resolve) })
328
330
  // 机表抄表
329
331
  Vue.component('machine-hand', (resolve) => { require(['./components/revenue/machineHandManage/machineHand'], resolve) })
330
332
  // 计划下发