Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
W
wk_add_wechat
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
刘松
wk_add_wechat
Commits
08cd6ac8
Commit
08cd6ac8
authored
Sep 28, 2018
by
刘松
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
final
parent
dec35184
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
217 additions
and
113 deletions
+217
-113
index.js
api/index.js
+65
-23
app.js
app.js
+2
-0
package-lock.json
package-lock.json
+18
-2
package.json
package.json
+1
-0
addTask.ts
src/api/addTask.ts
+5
-0
CommonTable.vue
src/components/CommonTable.vue
+24
-19
addTask.ts
src/store/modules/addTask.ts
+23
-11
filterNumber.ts
src/store/modules/filterNumber.ts
+5
-5
login.ts
src/store/modules/login.ts
+1
-1
types.ts
src/store/types.ts
+2
-0
AddTask.vue
src/views/AddTask.vue
+30
-14
FilterNumber.vue
src/views/FilterNumber.vue
+31
-30
Layout.vue
src/views/layout/Layout.vue
+10
-8
No files found.
api/index.js
View file @
08cd6ac8
...
...
@@ -12,7 +12,7 @@ let db = {};
const
dbpath
=
process
.
env
.
MONGO
||
"mongodb://127.0.0.1:27017/addwechat?poolSize=100000000"
;
const
AuthName
=
'l_q6KiRVG4200kwRXIwVfgY1yOIa'
;
const
AuthPass
=
'N11ztBU2lExdNOklH2AmX4JOzdIa'
;
const
host
=
process
.
env
.
GO
||
'http://192.168.1.1
31
:9912'
;
const
host
=
process
.
env
.
GO
||
'http://192.168.1.1
16
:9912'
;
const
deviceHost
=
process
.
env
.
DEVICE
||
'http://192.168.1.122:9911'
;
//const host = "http://192.168.1.122:9912";
let
authorition
=
''
;
...
...
@@ -49,10 +49,14 @@ MongoClient.connect(dbpath, (err, conn) => {
function
initMongo
()
{
db
.
collection
(
'account'
).
update
({
username
:
'admin'
},{
$set
:
{
password
:
md5password
(
'123asd'
)
}
},
{
upsert
:
1
},(
err
,
rep
)
=>
{
console
.
dir
(
err
);
console
.
dir
(
rep
.
result
);
})
db
.
collection
(
'account'
).
findOne
({
username
:
'admin'
},(
e
,
r
)
=>
{
if
(
e
||
!
r
)
{
db
.
collection
(
'account'
).
update
({
username
:
'admin'
},{
$set
:
{
password
:
md5password
(
'123asd'
)
}
},
{
upsert
:
1
},(
err
,
rep
)
=>
{
console
.
dir
(
err
);
console
.
dir
(
rep
.
result
);
})
}
});
}
...
...
@@ -96,7 +100,7 @@ router.get('/ping',async function (req, res) {
})
router
.
get
(
'/search'
,
async
(
req
,
res
)
=>
{
let
{
page
=
0
,
size
=
0
}
=
req
.
query
;
let
{
page
=
1
,
size
=
1
0
}
=
req
.
query
;
if
(
page
>
0
)
page
-=
1
;
let
options
=
{
skip
:
parseInt
(
page
*
size
),
limit
:
parseInt
(
size
)
};
let
count
=
await
db
.
collection
(
'filters'
).
count
({})
...
...
@@ -107,7 +111,7 @@ router.get('/search',async (req, res) => {
.
toArray
(
async
(
err
,
rep
)
=>
{
let
arrs
=
await
getCount
(
rep
)
if
(
err
)
return
res
.
status
(
500
).
json
({
error
:
'数据获取错误'
});
else
return
res
.
status
(
200
).
json
({
count
,
list
:
arrs
});
else
return
res
.
status
(
200
).
json
({
count
,
list
:
arrs
,
page
:
parseInt
(
page
||
0
)
+
1
,
size
:
parseInt
(
size
||
10
)
});
});
})
...
...
@@ -136,7 +140,7 @@ router.get('/qrcode',async (req, res) => {
router
.
get
(
'/tasks'
,
async
(
req
,
res
)
=>
{
let
{
page
=
0
,
size
=
10
}
=
req
.
query
;
let
{
page
=
1
,
size
=
10
}
=
req
.
query
;
if
(
page
>
0
)
page
-=
1
;
let
options
=
{
skip
:
parseInt
(
page
*
size
),
limit
:
parseInt
(
size
)
};
let
count
=
await
db
.
collection
(
'taskWrap'
).
count
({})
...
...
@@ -153,14 +157,34 @@ router.get('/tasks',async (req, res) => {
return
x
;
});
console
.
dir
(
arrs
);
return
res
.
status
(
200
).
json
({
count
,
list
:
arrs
});
return
res
.
status
(
200
).
json
({
count
,
list
:
arrs
,
page
:
parseInt
(
page
||
0
)
+
1
,
size
:
parseInt
(
size
||
10
)
});
}
});
})
router
.
get
(
'/task/update'
,(
req
,
res
)
=>
{
let
{
id
,
update
}
=
req
.
query
;
let
update_body
=
{};
if
(
update
==
'stop'
)
{
update_body
[
'$set'
]
=
{
stop
:
1
};
}
else
{
update_body
[
'$unset'
]
=
{
stop
:
1
};
}
console
.
dir
(
update_body
);
db
.
collection
(
'taskWrap'
).
update
({
_id
:
OID
(
id
)},
update_body
,
(
err
,
rep
)
=>
{
if
(
err
)
return
res
.
status
(
500
).
json
({
error
:
'更新失败,刷新查看'
});
else
{
db
.
collection
(
'tasks'
).
update
({
taskWrapID
:
OID
(
id
)},
update_body
,
{
multi
:
1
},(
error
,
rep
)
=>
{
if
(
error
)
return
res
.
status
(
500
).
json
({
error
:
'更新失败,刷新查看'
});
else
res
.
status
(
200
).
json
({
status
:
'ok'
});
});
}
});
})
router
.
get
(
'/task/detail'
,
async
(
req
,
res
)
=>
{
let
{
page
=
0
,
size
=
10
,
taskWrapID
=
null
}
=
req
.
query
;
let
{
page
=
1
,
size
=
10
,
taskWrapID
=
null
}
=
req
.
query
;
if
(
page
>
0
)
page
-=
1
;
let
options
=
{
skip
:
parseInt
(
page
*
size
),
limit
:
parseInt
(
size
)
};
let
count
=
await
db
.
collection
(
'tasks'
).
count
({
taskWrapID
:
OID
(
taskWrapID
)
})
...
...
@@ -169,8 +193,9 @@ router.get('/task/detail',async (req, res) => {
.
skip
(
parseInt
(
page
*
size
))
.
limit
(
parseInt
(
size
))
.
toArray
(
async
(
err
,
rep
)
=>
{
rep
=
rep
.
map
(
x
=>
{
delete
x
.
wechat_id
;
let
phone
=
(
x
.
phone
||
[
'*'
]);
x
.
phone
=
phone
[
0
]
+
'*********'
+
phone
[
phone
.
length
-
1
];
return
x
;});
if
(
err
)
return
res
.
status
(
500
).
json
({
error
:
'数据获取错误'
});
else
return
res
.
status
(
200
).
json
({
count
,
list
:
rep
});
else
return
res
.
status
(
200
).
json
({
count
,
list
:
rep
,
page
:
parseInt
(
page
||
0
)
+
1
,
size
:
parseInt
(
size
||
10
)
});
});
})
...
...
@@ -282,13 +307,24 @@ router.get('/is_login_wechat/',async (req, res) => {
})
router
.
post
(
'/remove'
,
async
(
req
,
res
)
=>
{
let
collection
=
req
.
body
.
collection
;
let
query
=
req
.
body
.
query
;
let
rep
=
await
db
.
collection
(
collection
)
.
remove
(
query
);
return
res
.
status
(
200
).
json
(
rep
);
});
router
.
get
(
'/devices'
,
async
(
req
,
res
)
=>
{
console
.
dir
(
deviceHost
);
axios
(
deviceHost
+
'/get_device'
,
{
method
:
"GET"
,
headers
:
{
"Content-Type"
:
"application/json"
},
timeout
:
300000
})
.
then
(
async
rep
=>
{
console
.
dir
(
rep
.
data
);
if
(
rep
.
data
&&
rep
.
data
.
msg
&&
rep
.
data
.
msg
.
list
)
{
res
.
status
(
200
).
json
({
list
:
rep
.
data
.
msg
.
list
});
}
else
{
...
...
@@ -296,6 +332,7 @@ router.get('/devices',async (req, res) => {
}
})
.
catch
(
err
=>
{
console
.
dir
(
err
);
if
(
err
)
return
res
.
status
(
500
).
json
({
error
:
'获取失败'
});
});
})
...
...
@@ -381,24 +418,24 @@ function generateQueryModel (body) {
let
areas
=
[];
let
{
ageEnd
,
ageStart
,
consumptionDuring
,
consumptionEnd
,
consumptionStart
,
districts
,
dsgroup
,
flowDuring
,
flowEnd
,
flowStart
,
sexlist
}
=
body
;
if
(
!
isNaN
(
ageEnd
)
&&
!
isNaN
(
ageStart
))
{
age
=
[{
attrCode
:
map2Code
[
'age'
],
relation
:
5
,
attrValue
:
ageEnd
,
condition
:
'
or'
},{
attrCode
:
map2Code
[
'age'
],
relation
:
3
,
attrValue
:
ageStart
,
condition
:
'or
'
}];
age
=
[{
attrCode
:
map2Code
[
'age'
],
relation
:
5
,
attrValue
:
ageEnd
,
condition
:
'
and'
},{
attrCode
:
map2Code
[
'age'
],
relation
:
3
,
attrValue
:
ageStart
,
condition
:
'and
'
}];
attrs
=
attrs
.
concat
(
age
);
}
if
(
!
isNaN
(
consumptionStart
)
&&
!
isNaN
(
consumptionEnd
))
{
if
(
consumptionDuring
===
'近三月平均'
)
{
consumption
=
[{
attrCode
:
map2Code
[
'consume_3'
],
relation
:
5
,
attrValue
:
consumptionEnd
,
condition
:
'
or'
},{
attrCode
:
map2Code
[
'consume_3'
],
relation
:
3
,
attrValue
:
consumptionStart
,
condition
:
'or
'
}];
consumption
=
[{
attrCode
:
map2Code
[
'consume_3'
],
relation
:
5
,
attrValue
:
consumptionEnd
,
condition
:
'
and'
},{
attrCode
:
map2Code
[
'consume_3'
],
relation
:
3
,
attrValue
:
consumptionStart
,
condition
:
'and
'
}];
}
else
{
consumption
=
[{
attrCode
:
map2Code
[
'consume_6'
],
relation
:
5
,
attrValue
:
consumptionEnd
,
condition
:
'
or'
},{
attrCode
:
map2Code
[
'consume_3'
],
relation
:
3
,
attrValue
:
consumptionStart
,
condition
:
'or
'
}];
consumption
=
[{
attrCode
:
map2Code
[
'consume_6'
],
relation
:
5
,
attrValue
:
consumptionEnd
,
condition
:
'
and'
},{
attrCode
:
map2Code
[
'consume_3'
],
relation
:
3
,
attrValue
:
consumptionStart
,
condition
:
'and
'
}];
}
attrs
=
attrs
.
concat
(
consumption
);
}
if
(
!
isNaN
(
flowStart
)
&&
!
isNaN
(
flowEnd
))
{
if
(
flowDuring
===
'近三月平均'
)
{
flow
=
[{
attrCode
:
map2Code
[
'flow_3'
],
relation
:
5
,
attrValue
:
flowEnd
,
condition
:
'
or'
},{
attrCode
:
map2Code
[
'flow_3'
],
relation
:
3
,
attrValue
:
flowStart
,
condition
:
'or
'
}];
flow
=
[{
attrCode
:
map2Code
[
'flow_3'
],
relation
:
5
,
attrValue
:
flowEnd
,
condition
:
'
and'
},{
attrCode
:
map2Code
[
'flow_3'
],
relation
:
3
,
attrValue
:
flowStart
,
condition
:
'and
'
}];
}
else
{
flow
=
[{
attrCode
:
map2Code
[
'flow_6'
],
relation
:
5
,
attrValue
:
flowEnd
,
condition
:
'
or'
},{
attrCode
:
map2Code
[
'consume_3'
],
relation
:
3
,
attrValue
:
flowStart
,
condition
:
'or
'
}];
flow
=
[{
attrCode
:
map2Code
[
'flow_6'
],
relation
:
5
,
attrValue
:
flowEnd
,
condition
:
'
and'
},{
attrCode
:
map2Code
[
'consume_3'
],
relation
:
3
,
attrValue
:
flowStart
,
condition
:
'and
'
}];
}
attrs
=
attrs
.
concat
(
flow
);
}
...
...
@@ -418,7 +455,10 @@ function generateQueryModel (body) {
})
})
}
if
(
areas
.
length
)
attrs
=
attrs
.
concat
(
areas
);
if
(
areas
.
length
)
attrs
=
attrs
.
concat
(
areas
);
if
(
attrs
.
length
)
{
attrs
[
attrs
.
length
-
1
].
condition
=
'and'
;
}
return
attrs
;
}
...
...
@@ -428,15 +468,17 @@ router.post("/model/query", function(req,res) {
let
{
access_token
}
=
await
generateToken
();
console
.
dir
(
access_token
);
let
model
=
generateQueryModel
(
req
.
body
);
console
.
dir
(
JSON
.
stringify
({
requestId
:
generateRequestID
(),
queryModel
:
[{
attrList
:
model
}],
}));
axios
(
host
+
'/modelUserListQuery'
,
{
method
:
"POST"
,
data
:
JSON
.
stringify
({
requestId
:
generateRequestID
(),
queryModel
:
[{
attrList
:
model
}],
queryModel
:
[{
attrList
:
model
,
groupCondition
:
'and'
},{
attrList
:
[{
"attrCode"
:
"K003638"
,
"relation"
:
8
,
"attrValue"
:
"90AAAAAA"
}]
}]
}),
timeout
:
1000
*
60
*
10
,
headers
:
{
...
...
@@ -470,7 +512,7 @@ router.post("/logout",function(req,res) {
db
.
collection
(
'session'
)
.
remove
({
_id
:
OID
(
sessionID
)
},
(
err
,
rep
)
=>
{
if
(
err
||
!
rep
)
return
res
.
sendStatus
(
500
);
if
(
err
||
!
rep
)
return
res
.
sendStatus
(
500
);
res
.
send
({
status
:
"ok"
,
rep
});
});
});
...
...
app.js
View file @
08cd6ac8
const
express
=
require
(
'express'
);
const
cookieParser
=
require
(
'cookie-parser'
);
const
bodyParser
=
require
(
'body-parser'
);
const
morgan
=
require
(
'morgan'
);
const
path
=
require
(
'path'
);
//const morgan = require('morgan');
const
http
=
require
(
'http'
);
...
...
@@ -8,6 +9,7 @@ const app = express();
const
api
=
require
(
'./api'
);
const
server
=
http
.
Server
(
app
);
app
.
use
(
morgan
(
'short'
));
app
.
use
(
bodyParser
.
json
());
app
.
use
(
bodyParser
.
urlencoded
({
extended
:
false
...
...
package-lock.json
View file @
08cd6ac8
...
...
@@ -1319,6 +1319,11 @@
"integrity"
:
"sha1-yrHmEY8FEJXli1KBrqjBzSK/wOM="
,
"dev"
:
true
},
"basic-auth"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz"
,
"integrity"
:
"sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg=="
},
"batch"
:
{
"version"
:
"0.6.1"
,
"resolved"
:
"http://registry.npm.taobao.org/batch/download/batch-0.6.1.tgz"
,
...
...
@@ -5481,6 +5486,18 @@
"resolved"
:
"https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.1.5.tgz"
,
"integrity"
:
"sha512-emT/tM4ZBinqd6RZok+EzDdtN4LjYJIckv71qQVOEFmvXgT5cperZegVmTgox/1cx4XQu6LJ5ZuIwipP/eKdQg=="
},
"morgan"
:
{
"version"
:
"1.9.1"
,
"resolved"
:
"https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz"
,
"integrity"
:
"sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA=="
,
"dependencies"
:
{
"debug"
:
{
"version"
:
"2.6.9"
,
"resolved"
:
"https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
,
"integrity"
:
"sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="
}
}
},
"move-concurrently"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"http://registry.npm.taobao.org/move-concurrently/download/move-concurrently-1.0.1.tgz"
,
...
...
@@ -5854,8 +5871,7 @@
"on-headers"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"http://registry.npm.taobao.org/on-headers/download/on-headers-1.0.1.tgz"
,
"integrity"
:
"sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c="
,
"dev"
:
true
"integrity"
:
"sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c="
},
"once"
:
{
"version"
:
"1.4.0"
,
...
...
package.json
View file @
08cd6ac8
...
...
@@ -18,6 +18,7 @@
"
lodash
"
:
"^4.17.11"
,
"
moment
"
:
"^2.22.2"
,
"
mongodb
"
:
"^3.1.6"
,
"
morgan
"
:
"^1.9.1"
,
"
qs
"
:
"^6.5.2"
,
"
vue
"
:
"^2.5.17"
,
"
vue-class-component
"
:
"^6.0.0"
,
...
...
src/api/addTask.ts
View file @
08cd6ac8
...
...
@@ -6,6 +6,10 @@ const getTaskList = (size: number, page?: number) => {
return
axios
.
get
(
`/api/tasks?page=
${
page
}
&size=
${
size
}
`
);
};
const
removeTask
=
(
id
:
string
,
update
:
string
)
=>
{
return
axios
.
get
(
`/api/task/update?id=
${
id
}
&update=
${
update
}
`
);
};
const
getDetailList
=
(
size
:
number
,
page
:
number
,
taskWrapID
:
string
)
=>
{
return
axios
.
get
(
`/api/task/detail?page=
${
page
}
&size=
${
size
}
&taskWrapID=
${
taskWrapID
}
`
);
};
...
...
@@ -25,4 +29,5 @@ export {
getTaskList
,
createTask
,
getDetailList
,
removeTask
};
src/components/CommonTable.vue
View file @
08cd6ac8
...
...
@@ -31,7 +31,7 @@
</template>
</el-table-column>
<
template
v-if=
'addable || detailable'
>
<
template
v-if=
'addable || detailable
|| removealbe
'
>
<el-table-column
fixed=
"right"
label=
"操作"
...
...
@@ -54,6 +54,17 @@
size=
"small"
>
详情
</el-button>
<template
v-if=
'removeable'
>
<el-button
@
click
.
native
.
prevent=
"detailRemove(scope.$index)"
type=
"text"
size=
"small"
>
{{
scope
.
row
.
stop
?
'启动'
:
'停止'
}}
</el-button>
</
template
>
</template>
</template>
</el-table-column>
...
...
@@ -87,6 +98,10 @@ import { Action, State } from 'vuex-class';
type
:
Boolean
,
default
:
false
,
},
removeable
:
{
type
:
Boolean
,
default
:
false
,
},
addRow
:
{
type
:
Function
,
default
:
()
=>
{
...
...
@@ -99,6 +114,12 @@ import { Action, State } from 'vuex-class';
// 这里传入要编辑的函数
},
},
detailRemove
:
{
type
:
Function
,
default
:
()
=>
{
// 这里传入要编辑的函数
},
},
setRow
:
{
type
:
Function
,
default
:
()
=>
{
...
...
@@ -138,24 +159,8 @@ export default class CommonTable extends Vue {
}
public
isCallbackCode
(
num
:
number
)
{
let
str
=
''
;
switch
(
num
)
{
case
0
:
str
=
'添加成功'
;
break
;
case
1
:
str
=
'已是好友'
;
break
;
case
2
:
str
=
'没有该用户'
;
break
;
case
3
:
str
=
'其他异常'
;
break
;
case
100
:
str
=
'未执行'
;
break
;
}
return
str
;
let
map
=
[
'正在添加'
,
'已是好友'
,
'没有该用户'
,
'其他异常'
];
return
((
num
&&
map
[
num
])
?
map
[
num
]
:
'未执行'
);
}
public
searchRoleById
(
id
:
string
)
{
...
...
src/store/modules/addTask.ts
View file @
08cd6ac8
import
{
Commit
}
from
'vuex'
;
import
{
Message
}
from
'element-ui'
;
import
{
GET_TASKLIST
,
CREATE_TASK
,
GET_DETAILLIST
}
from
'../types'
;
import
{
getTaskList
,
createTask
,
getDetailList
}
from
'@/api/addTask'
;
import
{
GET_TASKLIST
,
CREATE_TASK
,
GET_DETAILLIST
,
REMOVE_TASK
}
from
'../types'
;
import
{
getTaskList
,
createTask
,
getDetailList
,
removeTask
}
from
'@/api/addTask'
;
export
interface
State
{
...
...
@@ -44,6 +44,19 @@ const actions = {
});
},
[
REMOVE_TASK
](
context
:
{
commit
:
Commit
,
state
:
State
},
payload
:
{
id
:
string
,
update
:
string
},
)
{
// 获取角色列表
removeTask
(
payload
.
id
,
payload
.
update
).
then
((
data
:
any
)
=>
{
Message
.
success
(
`更新成功`
);
}).
catch
((
err
:
any
)
=>
{
Message
.
error
(
`更新成功`
);
throw
(
err
);
});
},
[
GET_DETAILLIST
](
context
:
{
commit
:
Commit
,
state
:
State
},
payload
:
{
size
:
number
,
taskWrapID
:
any
,
page
:
number
},
...
...
@@ -67,24 +80,22 @@ const actions = {
id
:
string
,
user_id
:
string
,
greet
:
string
,
callback
:
any
})
{
// 创建角色
createTask
(
payload
).
then
((
data
)
=>
{
const
result
=
data
.
data
;
if
(
result
.
list
)
{
context
.
commit
(
CREATE_TASK
,
result
);
Message
.
success
(
'创建成功'
);
}
else
{
Message
.
error
(
data
.
data
.
msg
);
}
context
.
commit
(
CREATE_TASK
,
result
);
Message
.
success
(
'创建成功'
);
if
(
payload
.
callback
)
payload
.
callback
(
null
,
result
);
}).
catch
((
err
)
=>
{
if
(
payload
.
callback
)
payload
.
callback
(
'创建失败'
);
throw
(
err
);
});
},
};
const
mutations
=
{
[
GET_TASKLIST
](
state
:
State
,
data
:
{
list
:
any
[],
count
:
number
})
{
[
GET_TASKLIST
](
state
:
State
,
data
:
{
list
:
any
[],
count
:
number
,
size
:
any
,
page
:
any
})
{
state
.
dataList
=
data
.
list
.
map
(
(
x
:
any
)
=>
{
return
{
name
:
x
.
code
,
...
...
@@ -94,6 +105,7 @@ const mutations = {
used
:
x
.
used
||
0
,
createdAt
:
x
.
createdAt
,
_id
:
x
.
_id
,
stop
:
x
.
stop
,
};
});
state
.
count
=
data
.
count
;
...
...
@@ -101,7 +113,7 @@ const mutations = {
state
.
size
=
parseInt
(
data
.
size
||
10
);
},
[
GET_DETAILLIST
](
state
:
State
,
data
:
{
list
:
any
[],
count
:
number
})
{
[
GET_DETAILLIST
](
state
:
State
,
data
:
{
list
:
any
[],
count
:
number
,
size
:
any
,
page
:
any
})
{
state
.
detailData
.
dataList
=
data
.
list
.
map
(
(
x
:
any
)
=>
{
return
{
number
:
x
.
phone
,
...
...
src/store/modules/filterNumber.ts
View file @
08cd6ac8
...
...
@@ -26,7 +26,7 @@ const filterNumberState: State = {
dataList
:
[],
deviceList
:
[{
label
:
'1'
,
value
:
'1'
}],
count
:
0
,
page
:
0
,
page
:
1
,
size
:
10
,
};
...
...
@@ -67,10 +67,10 @@ const actions = {
// 筛选
createFilterList
(
payload
).
then
((
data
:
any
)
=>
{
Message
.
success
(
'创建成功'
);
// payload.callback && payload.callback(
);
if
(
payload
.
callback
)
payload
.
callback
(
null
,
data
);
}).
catch
((
err
:
any
)
=>
{
Message
.
success
(
'创建失败'
);
// payload.callback && payload.callback(
);
Message
.
error
(
'创建失败'
);
if
(
payload
.
callback
)
payload
.
callback
(
err
);
throw
(
err
);
});
},
...
...
@@ -98,7 +98,7 @@ const actions = {
};
const
mutations
=
{
[
GET_FILTERLIST
](
state
:
State
,
data
:
{
list
:
any
,
count
:
number
})
{
[
GET_FILTERLIST
](
state
:
State
,
data
:
{
list
:
any
,
count
:
number
,
size
:
any
,
page
:
any
})
{
state
.
dataList
=
data
.
list
.
map
(
(
x
:
any
)
=>
{
let
filter
=
''
;
if
(
x
.
sexlist
)
{
...
...
src/store/modules/login.ts
View file @
08cd6ac8
...
...
@@ -42,7 +42,7 @@ const mutations = {
[
LOGIN
](
state
:
State
,
data
:
{
username
:
string
,
sessionID
:
string
})
{
state
.
isLogin
=
true
;
localStorage
.
setItem
(
'__sessionID'
,
data
.
sessionID
);
state
.
account
.
username
=
data
.
username
;
state
.
account
=
data
;
// state.dataList = data.rows;
// state.count = data.count;
},
...
...
src/store/types.ts
View file @
08cd6ac8
...
...
@@ -17,6 +17,8 @@ export const GET_WECHAT = 'GET_WECHAT';
export
const
RESET_QRCODE
=
'RESET_QRCODE'
;
export
const
RESET_WECHATINFO
=
'RESET_WECHATINFO'
;
export
const
GET_DETAILLIST
=
'GET_DETAILLIST'
;
export
const
REMOVE_TASK
=
'REMOVE_TASK'
;
...
...
src/views/AddTask.vue
View file @
08cd6ac8
...
...
@@ -10,6 +10,8 @@
:tHeadList=
'tHeadList'
:detailable=
'detailable'
:detailRow=
'detailRow'
:detailRemove=
"detailRemove"
:removeable=
"removeable"
/>
<div
class=
"pagination"
>
<Pagination
...
...
@@ -54,7 +56,7 @@ import { Component, Vue } from 'vue-property-decorator';
import
{
mapActions
,
mapState
}
from
'vuex'
;
import
{
Action
,
State
}
from
'vuex-class'
;
import
{
GET_TASKLIST
,
CREATE_TASK
,
GET_DETAILLIST
}
from
'@/store/types'
;
import
{
GET_TASKLIST
,
CREATE_TASK
,
GET_DETAILLIST
,
REMOVE_TASK
}
from
'@/store/types'
;
import
CommonTable
from
'@/components/CommonTable.vue'
;
import
Pagination
from
'@/components/Pagination.vue'
;
...
...
@@ -74,6 +76,7 @@ export default class AddTask extends Vue {
@
Action
(
GET_TASKLIST
)
public
getTasklist
:
any
;
@
Action
(
CREATE_TASK
)
public
createTask
:
any
;
@
Action
(
GET_DETAILLIST
)
public
getDetailList
:
any
;
@
Action
(
REMOVE_TASK
)
public
removeTask
:
any
;
// 初始化数据
...
...
@@ -114,7 +117,7 @@ export default class AddTask extends Vue {
width
:
'auto'
,
}];
public
detailable
=
true
;
public
removeable
=
true
;
// 分页
public
page
=
1
;
public
size
=
10
;
...
...
@@ -125,7 +128,7 @@ export default class AddTask extends Vue {
public
dialog
=
{
name
:
''
,
data
:
{},
data
:
{
_id
:
null
},
index
:
0
,
};
...
...
@@ -135,28 +138,41 @@ export default class AddTask extends Vue {
// 点击表格进行编辑
this
.
dialog
.
name
=
'taskDetail'
;
this
.
$data
.
isDialogShow
=
true
;
this
.
getDetailList
({
page
:
1
,
size
:
10
,
taskWrapID
:
this
.
addTaskState
.
dataList
[
index
].
_id
});
//this.setDialogData('taskDetail', index);
this
.
dialog
.
data
=
this
.
addTaskState
.
dataList
[
index
];
this
.
dialog
.
index
=
index
;
this
.
getDetailList
({
page
:
1
,
size
:
10
,
taskWrapID
:
this
.
dialog
.
data
.
_id
});
}
public
detailRemove
(
index
:
number
)
{
// 点击表格进行编辑
let
id
=
this
.
addTaskState
.
dataList
[
index
].
_id
;
let
update
=
this
.
addTaskState
.
dataList
[
index
].
stop
?
'start'
:
'stop'
this
.
removeTask
({
id
,
update
});
}
public
setDialogData
(
name
:
string
,
index
:
number
)
{
public
detailPageChange
(
page
:
number
)
{
this
.
getDetailList
({
page
:
page
,
size
:
10
,
taskWrapID
:
this
.
dialog
.
data
.
_id
});
}
public
detailSizeChange
(
size
:
number
)
{
this
.
getDetailList
({
page
:
1
,
size
:
size
,
taskWrapID
:
this
.
dialog
.
data
.
_id
});
}
/* public setDialogData(name: string, index: number) {
// 设置弹框数据
this.dialog.name = name;
this.$data.isDialogShow = true;
this.dialog.data = this.addTaskState.dataList[index];
this.dialog.index = index;
}
}
*/
// 分页
public
paginationSizeChange
(
index
:
number
)
{
this
.
size
=
index
;
// this.getPermission({ size: this.size, page: this.page });
public
paginationSizeChange
(
size
:
number
)
{
this
.
getTasklist
({
size
:
size
,
page
:
1
});
}
public
paginationPageChange
(
index
:
number
)
{
this
.
page
=
index
;
// this.getPermission({ size: this.size, page: this.page });
public
paginationPageChange
(
page
:
number
)
{
this
.
getTasklist
({
size
:
this
.
addTaskState
.
detailData
.
size
,
page
:
page
});
}
// 清除表单元素及弹框属性
...
...
src/views/FilterNumber.vue
View file @
08cd6ac8
...
...
@@ -202,7 +202,7 @@
</div>
<div
class=
"dialog-footer"
slot=
'footer'
>
<el-button
type=
"primary"
@
click=
"sumbitAddFilter"
>
确 定
</el-button>
<el-button
type=
"primary"
@
click=
"sumbitAddFilter"
:loading=
"pending"
:disabled=
"pending"
>
确 定
</el-button>
<el-button
@
click=
"closeDialog"
>
取 消
</el-button>
</div>
</el-dialog>
...
...
@@ -265,7 +265,7 @@
</el-form-item>
</el-form>
<div
class=
"dialog-footer"
slot=
'footer'
>
<el-button
type=
"primary"
@
click=
"sumbitAddWechat"
>
确 定
</el-button>
<el-button
type=
"primary"
@
click=
"sumbitAddWechat"
:loading=
"pending"
:disabled=
"pending"
>
确 定
</el-button>
<el-button
@
click=
"closeDialog"
>
取 消
</el-button>
</div>
</el-dialog>
...
...
@@ -337,6 +337,7 @@ export default class FilterNumber extends Vue {
}];
public
addable
=
true
;
public
deleteable
=
true
;
public
pending
=
false
;
public
area
=
{
nation
:
'全国'
,
checkAll
:
false
,
...
...
@@ -592,33 +593,21 @@ export default class FilterNumber extends Vue {
}
// 分页
public
paginationSizeChange
(
index
:
number
)
{
this
.
size
=
index
;
this
.
getFilterlist
({
size
:
this
.
size
,
page
:
this
.
page
});
public
paginationSizeChange
(
size
:
number
)
{
this
.
getFilterlist
({
size
:
size
,
page
:
1
});
}
public
paginationPageChange
(
index
:
number
)
{
this
.
page
=
index
;
this
.
getFilterlist
({
size
:
this
.
size
,
page
:
this
.
page
});
public
paginationPageChange
(
page
:
number
)
{
this
.
getFilterlist
({
size
:
this
.
numberFilterState
.
size
,
page
:
page
});
}
// 清除表单元素及弹框属性
public
cleanDialogForm
(
form
:
string
)
{
//const newform = this.$data[form];
if
(
form
===
'filterForm'
)
this
.
$refs
.
filterForm
.
resetFields
();
else
this
.
$refs
.
addForm
.
resetFields
();
if
(
form
===
'addForm'
)
{
this
.
resetQrcode
();
}
/* Object.keys(newform).forEach((val, ind) => {
let t = '';
if( val === 'flowDuring' || val === 'consumptionDuring') {
t = '近三月平均';
}
newform[val] = t;
});*/
//console.dir(this.$data[form]);
//console.dir('====> end');
}
// 弹框
...
...
@@ -668,6 +657,7 @@ export default class FilterNumber extends Vue {
public
sumbitAddFilter
()
{
const
form
=
this
.
$data
.
filterForm
;
const
area
=
this
.
$data
.
area
;
const
self
=
this
;
this
.
$refs
.
filterForm
.
validate
((
valid
:
any
)
=>
{
if
(
valid
)
{
let
areas
:
any
=
[];
...
...
@@ -682,33 +672,44 @@ export default class FilterNumber extends Vue {
}
});
form
.
districts
=
areas
;
form
.
callback
=
()
=>
{
this
.
cleanDialogForm
(
'filterForm'
);
form
.
callback
=
(
err
:
any
,
data
:
any
)
=>
{
self
.
$data
.
pending
=
false
;
if
(
!
err
){
self
.
closeDialog
();
self
.
cleanDialogForm
(
'filterForm'
);
}
}
self
.
$data
.
pending
=
true
;
//console.dir(form);
this
.
createFilter
(
form
).
then
((
data
:
any
)
=>
{
this
.
closeDialog
();
//this.cleanDialogForm('filterForm');
});
this
.
createFilter
(
form
);
}
});
}
public
sumbitAddWechat
()
{
const
form
=
this
.
$data
.
addForm
;
const
self
=
this
;
this
.
$refs
.
addForm
.
validate
((
valid
:
any
)
=>
{
if
(
valid
)
{
if
(
this
.
deviceState
.
weChatInfo
&&
this
.
deviceState
.
weChatInfo
.
wechatId
)
{
let
data
=
{
let
data
:
any
=
{
count
:
form
.
thisTimeAdd
,
id
:
this
.
dialog
.
data
.
_id
,
user_id
:
this
.
deviceState
.
weChatInfo
.
wechatId
,
greet
:
form
.
verificationLanguage
,
}
this
.
createTask
(
data
).
then
((
data
:
any
)
=>
{
data
.
callback
=
(
err
:
any
,
data
:
any
)
=>
{
self
.
$data
.
pending
=
false
;
if
(
!
err
){
self
.
closeDialog
();
self
.
cleanDialogForm
(
'addForm'
);
}
}
self
.
$data
.
pending
=
true
;
this
.
createTask
(
data
)
/*.then((data: any) => {
this.closeDialog();
this.cleanDialogForm('addForm');
});
});
*/
}
// 提交
// this.createPermission(form).then((data: any) => {
...
...
@@ -830,10 +831,10 @@ export default class FilterNumber extends Vue {
this
.
getQrcode
({
sn
:
sn
,
type
:
'get'
});
}
else
{
this
.
deviceState
.
deviceList
.
forEach
((
x
:
any
)
=>
{
if
(
x
.
value
==
value
)
{
this
.
resetWechat
(
x
.
weChatInfo
)
if
(
x
.
value
==
=
value
)
{
this
.
resetWechat
(
x
.
weChatInfo
)
;
}
})
})
;
}
}
...
...
src/views/layout/Layout.vue
View file @
08cd6ac8
...
...
@@ -7,7 +7,7 @@
</span>
<el-dropdown
style=
"line-height: 60px;float: right;margin: 0px 30px;"
>
<span
class=
"theme-text"
>
{{
currentUser
}}
<i
class=
"el-icon-arrow-down el-icon--right"
></i>
{{
account
||
'~'
}}
<i
class=
"el-icon-arrow-down el-icon--right"
></i>
</span>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item>
...
...
@@ -30,7 +30,7 @@
:unique-opened=
true
>
<li
class=
"welcome"
>
<i
class=
"el-icon-people"
></i>
<span
slot=
"title"
>
Welcome
{{
currentUser
}}
</span>
<span
slot=
"title"
>
Welcome
{{
account
||
'~'
}}
</span>
</li>
<el-menu-item
v-for=
"item in menuItems"
:key=
item.index
@
click=
routeTo
:route=
item.index
:index=
item.index
>
<i
:class=
item.icon
></i>
...
...
@@ -49,6 +49,7 @@
<
script
lang=
"ts"
>
import
{
Component
,
Vue
}
from
'vue-property-decorator'
;
@
Component
({
data
()
{
return
{
...
...
@@ -63,11 +64,6 @@ import { Component, Vue } from 'vue-property-decorator';
}],
};
},
computed
:
{
currentUser
()
{
return
'username'
;
},
},
methods
:
{
routeTo
()
{
// TODO
...
...
@@ -75,11 +71,17 @@ import { Component, Vue } from 'vue-property-decorator';
},
logout
()
{
// TODO
localStorage
.
removeItem
(
'__sessionID'
);
location
.
href
=
'/'
;
},
},
})
export
default
class
Layout
extends
Vue
{}
export
default
class
Layout
extends
Vue
{
get
account
()
{
return
this
.
$store
.
state
.
login
.
account
.
username
;
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment