Compare commits
No commits in common. "xmlrpcui打印细码" and "weapp" have entirely different histories.
xmlrpcui打印
...
weapp
14
.gitignore
vendored
Normal file
14
.gitignore
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
# Windows
|
||||
[Dd]esktop.ini
|
||||
Thumbs.db
|
||||
$RECYCLE.BIN/
|
||||
|
||||
# macOS
|
||||
.DS_Store
|
||||
.fseventsd
|
||||
.Spotlight-V100
|
||||
.TemporaryItems
|
||||
.Trashes
|
||||
|
||||
# Node.js
|
||||
node_modules/
|
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"git.ignoreLimitWarning": true
|
||||
}
|
65
app.js
65
app.js
@ -2,36 +2,35 @@
|
||||
|
||||
|
||||
App({
|
||||
onLaunch() {
|
||||
// 展示本地存储能力
|
||||
const logs = wx.getStorageSync('logs') || []
|
||||
logs.unshift(Date.now())
|
||||
wx.setStorageSync('logs', logs)
|
||||
// 定义全局配置信息
|
||||
this.globalData = {
|
||||
httpsUrl: 'https://www.gdsfs.top', // 请填写有效的 URL,不包含端口号
|
||||
db: 'YS2025', // 请填写数据库名称
|
||||
username: '441785369@qq.com',
|
||||
password: 'Sj89061189'
|
||||
};
|
||||
const conf = wx.getStorageSync('conf') || {};
|
||||
conf.httpsUrl = this.globalData.httpsUrl;
|
||||
conf.db = this.globalData.db;
|
||||
conf.username = this.globalData.username;
|
||||
// conf.password = this.globalData.password;
|
||||
wx.setStorageSync('conf', conf)
|
||||
// 登录
|
||||
wx.login({
|
||||
success: res => {
|
||||
// 发送 res.code 到后台换取 openId, sessionKey, unionId
|
||||
}
|
||||
})
|
||||
},
|
||||
globalData: {
|
||||
userInfo: null,
|
||||
httpsUrl: '',
|
||||
db: '',
|
||||
username: ''
|
||||
}
|
||||
})
|
||||
|
||||
onLaunch() {
|
||||
// 展示本地存储能力
|
||||
const logs = wx.getStorageSync('logs') || []
|
||||
logs.unshift(Date.now())
|
||||
wx.setStorageSync('logs', logs)
|
||||
// 定义全局配置信息
|
||||
this.globalData = {
|
||||
odooUrl: 'https://www.gdsfs.top', // 请填写有效的 URL,不包含端口号
|
||||
db: 'YS2025', // 请填写数据库名称
|
||||
username: '441785369@qq.com',
|
||||
password: 'Sj89061189'
|
||||
};
|
||||
const conf = wx.getStorageSync('conf') || {};
|
||||
conf.odooUrl = this.globalData.odooUrl;
|
||||
conf.db = this.globalData.db;
|
||||
conf.username = this.globalData.username;
|
||||
// conf.password = this.globalData.password;
|
||||
wx.setStorageSync('conf', conf)
|
||||
// 登录
|
||||
wx.login({
|
||||
success: res => {
|
||||
// 发送 res.code 到后台换取 openId, sessionKey, unionId
|
||||
}
|
||||
})
|
||||
},
|
||||
globalData: {
|
||||
userInfo: null,
|
||||
odooUrl: '',
|
||||
db: '',
|
||||
username: ''
|
||||
}
|
||||
})
|
||||
|
78
app.json
78
app.json
@ -1,42 +1,40 @@
|
||||
{
|
||||
"pages": [
|
||||
"pages/deal/deal",
|
||||
"pages/deal/saleOrder/saleOrder",
|
||||
"pages/deal/saleOrder/kanban/saleOrderKanban",
|
||||
"pages/deal/saleOrder/kanban/from/saleOrderFrom",
|
||||
"pages/deal/saleOrder/kanban/from/printTag/printTag",
|
||||
"pages/deal/saleOrder/kanban/from/printTag/printTemplate/printTemplate",
|
||||
"pages/deal/saleOrder/kanban/from/printTag/printTemplate/bluetooth/bluetooth",
|
||||
"pages/data/data",
|
||||
"pages/index/index",
|
||||
"pages/logs/logs"
|
||||
],
|
||||
"tabBar": {
|
||||
"list": [
|
||||
{
|
||||
"pagePath": "pages/deal/deal",
|
||||
"text": "Deal"
|
||||
},
|
||||
{
|
||||
"pagePath": "pages/data/data",
|
||||
"text": "Data"
|
||||
},
|
||||
{
|
||||
"pagePath": "pages/logs/logs",
|
||||
"text": "state"
|
||||
},
|
||||
{
|
||||
"pagePath": "pages/index/index",
|
||||
"text": "Hr Employee"
|
||||
}
|
||||
]
|
||||
},
|
||||
"window": {
|
||||
"navigationBarTextStyle": "black",
|
||||
"navigationBarTitleText": "Weixin",
|
||||
"navigationBarBackgroundColor": "#ffffff"
|
||||
},
|
||||
"componentFramework": "glass-easel",
|
||||
"sitemapLocation": "sitemap.json",
|
||||
"lazyCodeLoading": "requiredComponents"
|
||||
"pages": [
|
||||
"pages/index/index",
|
||||
"pages/logs/logs",
|
||||
"pages/sale_order/sale_order",
|
||||
"pages/sale_order/form/sale_order_form"
|
||||
],
|
||||
"tabBar": {
|
||||
"list": [
|
||||
{
|
||||
"pagePath": "pages/sale_order/sale_order",
|
||||
"text": "Sale Order"
|
||||
},
|
||||
{
|
||||
"pagePath": "pages/logs/logs",
|
||||
"text": "state"
|
||||
},
|
||||
{
|
||||
"pagePath": "pages/index/index",
|
||||
"text": "Hr Employee"
|
||||
}
|
||||
]
|
||||
},
|
||||
"window": {
|
||||
"navigationBarTextStyle": "black",
|
||||
"navigationBarTitleText": "Weixin",
|
||||
"navigationBarBackgroundColor": "#ffffff"
|
||||
},
|
||||
"usingComponents": {
|
||||
"van-button": "@vant/weapp/button/index",
|
||||
"van-card": "@vant/weapp/card/index",
|
||||
"van-field": "@vant/weapp/field/index",
|
||||
"van-popup": "@vant/weapp/popup/index",
|
||||
"van-picker": "@vant/weapp/picker/index",
|
||||
"van-tag": "@vant/weapp/tag/index"
|
||||
},
|
||||
"componentFramework": "glass-easel",
|
||||
"sitemapLocation": "sitemap.json",
|
||||
"lazyCodeLoading": "requiredComponents"
|
||||
}
|
||||
|
381
package-lock.json
generated
Normal file
381
package-lock.json
generated
Normal file
@ -0,0 +1,381 @@
|
||||
{
|
||||
"name": "xmlrpc",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "xmlrpc",
|
||||
"version": "1.0.0",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@vant/weapp": "^1.11.7",
|
||||
"url": "^0.11.4",
|
||||
"xml-js": "^1.6.11",
|
||||
"xml2js": "^0.6.2",
|
||||
"xmlrpc": "^1.3.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"miniprogram-api-typings": "^4.0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@vant/weapp": {
|
||||
"version": "1.11.7",
|
||||
"resolved": "https://registry.npmjs.org/@vant/weapp/-/weapp-1.11.7.tgz",
|
||||
"integrity": "sha512-Rwn9BBnb4kHSV4XmvBicwtd42J+amEUfnFDcXJsGNPNX4a9c/DoT6YLsm4X1wB2+sQbdiQsbFBLAvGRBxCkD8g==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/call-bind-apply-helpers": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz",
|
||||
"integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"es-errors": "^1.3.0",
|
||||
"function-bind": "^1.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/call-bound": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz",
|
||||
"integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"call-bind-apply-helpers": "^1.0.1",
|
||||
"get-intrinsic": "^1.2.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/dunder-proto": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
|
||||
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"call-bind-apply-helpers": "^1.0.1",
|
||||
"es-errors": "^1.3.0",
|
||||
"gopd": "^1.2.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/es-define-property": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
|
||||
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/es-errors": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
|
||||
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/es-object-atoms": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
|
||||
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"es-errors": "^1.3.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/function-bind": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
|
||||
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
|
||||
"license": "MIT",
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/get-intrinsic": {
|
||||
"version": "1.2.7",
|
||||
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz",
|
||||
"integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"call-bind-apply-helpers": "^1.0.1",
|
||||
"es-define-property": "^1.0.1",
|
||||
"es-errors": "^1.3.0",
|
||||
"es-object-atoms": "^1.0.0",
|
||||
"function-bind": "^1.1.2",
|
||||
"get-proto": "^1.0.0",
|
||||
"gopd": "^1.2.0",
|
||||
"has-symbols": "^1.1.0",
|
||||
"hasown": "^2.0.2",
|
||||
"math-intrinsics": "^1.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/get-proto": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
|
||||
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"dunder-proto": "^1.0.1",
|
||||
"es-object-atoms": "^1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/gopd": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
|
||||
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/has-symbols": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
|
||||
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/hasown": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
|
||||
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"function-bind": "^1.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/math-intrinsics": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
|
||||
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/miniprogram-api-typings": {
|
||||
"version": "4.0.4",
|
||||
"resolved": "https://registry.npmjs.org/miniprogram-api-typings/-/miniprogram-api-typings-4.0.4.tgz",
|
||||
"integrity": "sha512-51SElLHA9t7/v54IFVjZcbeP04dQL4HreCvBLt3XGA3qruKRT9gvBtBvHXfOjXbhjVd6Vy2myOg/0LELPWmhfg==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/object-inspect": {
|
||||
"version": "1.13.3",
|
||||
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz",
|
||||
"integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/punycode": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
|
||||
"integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/qs": {
|
||||
"version": "6.14.0",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz",
|
||||
"integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==",
|
||||
"license": "BSD-3-Clause",
|
||||
"dependencies": {
|
||||
"side-channel": "^1.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.6"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/sax": {
|
||||
"version": "1.2.4",
|
||||
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
|
||||
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/side-channel": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
|
||||
"integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"es-errors": "^1.3.0",
|
||||
"object-inspect": "^1.13.3",
|
||||
"side-channel-list": "^1.0.0",
|
||||
"side-channel-map": "^1.0.1",
|
||||
"side-channel-weakmap": "^1.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/side-channel-list": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
|
||||
"integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"es-errors": "^1.3.0",
|
||||
"object-inspect": "^1.13.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/side-channel-map": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
|
||||
"integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"call-bound": "^1.0.2",
|
||||
"es-errors": "^1.3.0",
|
||||
"get-intrinsic": "^1.2.5",
|
||||
"object-inspect": "^1.13.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/side-channel-weakmap": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
|
||||
"integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"call-bound": "^1.0.2",
|
||||
"es-errors": "^1.3.0",
|
||||
"get-intrinsic": "^1.2.5",
|
||||
"object-inspect": "^1.13.3",
|
||||
"side-channel-map": "^1.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/url": {
|
||||
"version": "0.11.4",
|
||||
"resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz",
|
||||
"integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"punycode": "^1.4.1",
|
||||
"qs": "^6.12.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/xml-js": {
|
||||
"version": "1.6.11",
|
||||
"resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz",
|
||||
"integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"sax": "^1.2.4"
|
||||
},
|
||||
"bin": {
|
||||
"xml-js": "bin/cli.js"
|
||||
}
|
||||
},
|
||||
"node_modules/xml2js": {
|
||||
"version": "0.6.2",
|
||||
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz",
|
||||
"integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"sax": ">=0.6.0",
|
||||
"xmlbuilder": "~11.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/xml2js/node_modules/xmlbuilder": {
|
||||
"version": "11.0.1",
|
||||
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
|
||||
"integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/xmlbuilder": {
|
||||
"version": "8.2.2",
|
||||
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz",
|
||||
"integrity": "sha512-eKRAFz04jghooy8muekqzo8uCSVNeyRedbuJrp0fovbLIi7wlsYtdUn3vBAAPq2Y3/0xMz2WMEUQ8yhVVO9Stw==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/xmlrpc": {
|
||||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/xmlrpc/-/xmlrpc-1.3.2.tgz",
|
||||
"integrity": "sha512-jQf5gbrP6wvzN71fgkcPPkF4bF/Wyovd7Xdff8d6/ihxYmgETQYSuTc+Hl+tsh/jmgPLro/Aro48LMFlIyEKKQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"sax": "1.2.x",
|
||||
"xmlbuilder": "8.2.x"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.8",
|
||||
"npm": ">=1.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
22
package.json
Normal file
22
package.json
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"name": "xmlrpc",
|
||||
"version": "1.0.0",
|
||||
"main": "app.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"description": "",
|
||||
"dependencies": {
|
||||
"@vant/weapp": "^1.11.7",
|
||||
"url": "^0.11.4",
|
||||
"xml-js": "^1.6.11",
|
||||
"xml2js": "^0.6.2",
|
||||
"xmlrpc": "^1.3.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"miniprogram-api-typings": "^4.0.4"
|
||||
}
|
||||
}
|
@ -1,66 +0,0 @@
|
||||
// pages/data/data.js
|
||||
Page({
|
||||
|
||||
/**
|
||||
* 页面的初始数据
|
||||
*/
|
||||
data: {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面加载
|
||||
*/
|
||||
onLoad(options) {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面初次渲染完成
|
||||
*/
|
||||
onReady() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面显示
|
||||
*/
|
||||
onShow() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面隐藏
|
||||
*/
|
||||
onHide() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面卸载
|
||||
*/
|
||||
onUnload() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 页面相关事件处理函数--监听用户下拉动作
|
||||
*/
|
||||
onPullDownRefresh() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 页面上拉触底事件的处理函数
|
||||
*/
|
||||
onReachBottom() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 用户点击右上角分享
|
||||
*/
|
||||
onShareAppMessage() {
|
||||
|
||||
}
|
||||
})
|
@ -1,2 +0,0 @@
|
||||
<!--pages/data/data.wxml-->
|
||||
<text>pages/data/data.wxml</text>
|
@ -1 +0,0 @@
|
||||
/* pages/data/data.wxss */
|
@ -1,66 +0,0 @@
|
||||
// pages/deal/deal.js
|
||||
Page({
|
||||
|
||||
/**
|
||||
* 页面的初始数据
|
||||
*/
|
||||
data: {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面加载
|
||||
*/
|
||||
onLoad(options) {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面初次渲染完成
|
||||
*/
|
||||
onReady() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面显示
|
||||
*/
|
||||
onShow() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面隐藏
|
||||
*/
|
||||
onHide() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面卸载
|
||||
*/
|
||||
onUnload() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 页面相关事件处理函数--监听用户下拉动作
|
||||
*/
|
||||
onPullDownRefresh() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 页面上拉触底事件的处理函数
|
||||
*/
|
||||
onReachBottom() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 用户点击右上角分享
|
||||
*/
|
||||
onShareAppMessage() {
|
||||
|
||||
}
|
||||
})
|
@ -1,7 +0,0 @@
|
||||
{
|
||||
"usingComponents": {
|
||||
"van-grid": "@vant/weapp/grid/index",
|
||||
"van-grid-item": "@vant/weapp/grid-item/index",
|
||||
"van-nav-bar": "@vant/weapp/nav-bar/index"
|
||||
}
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
<!--pages/deal/deal.wxml-->
|
||||
<van-nav-bar
|
||||
placeholder = "true"
|
||||
title="买卖"
|
||||
left-text="刷新按钮1"
|
||||
right-text="短信通知弹窗1"
|
||||
left-arrow
|
||||
bind:click-left="onClickLeft"
|
||||
bind:click-right="onClickRight"
|
||||
/>
|
||||
<van-grid column-num="2">
|
||||
<van-grid-item icon="search" text="销售" badge="99+" link-type="navigateTo" url="/pages/deal/saleOrder/saleOrder" />
|
||||
<van-grid-item icon="home-o" text="采购" dot />
|
||||
<van-grid-item icon="home-o" text="客户" dot />
|
||||
<van-grid-item icon="home-o" text="供应商" dot />
|
||||
<van-grid-item icon="home-o" text="产品" dot />
|
||||
<van-grid-item icon="home-o" text="库存" dot />
|
||||
<van-grid-item icon="home-o" text="费用收入" dot />
|
||||
<van-grid-item icon="home-o" text="退货" dot />
|
||||
<van-grid-item icon="home-o" text="调拨" dot />
|
||||
<van-grid-item icon="home-o" text="快捷开单" dot />
|
||||
</van-grid>
|
@ -1 +0,0 @@
|
||||
/* pages/deal/deal.wxss */
|
@ -1,81 +0,0 @@
|
||||
// pages/deal/saleOrder/kanban/from/printTag/printTag.js
|
||||
Page({
|
||||
|
||||
/**
|
||||
* 页面的初始数据
|
||||
*/
|
||||
data: {
|
||||
|
||||
},
|
||||
//跳转打印模板
|
||||
onClickButton(event) {
|
||||
console.log('Card clicked:', event);
|
||||
// 将选中的 partner 数据存储到全局应用实例中
|
||||
// const app = getApp();
|
||||
// app.globalData.selectedPartner = partner;
|
||||
// 在这里可以添加更多的处理逻辑,比如跳转到详情页
|
||||
// wx.showToast({
|
||||
// title: `点击了订单 ${partner.name}`,
|
||||
// icon: 'none'
|
||||
// });
|
||||
// const index = event.currentTarget.dataset.index;
|
||||
wx.navigateTo({
|
||||
url: `/pages/deal/saleOrder/kanban/from/printTag/printTemplate/printTemplate`,
|
||||
});
|
||||
},
|
||||
/**
|
||||
* 生命周期函数--监听页面加载
|
||||
*/
|
||||
onLoad(options) {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面初次渲染完成
|
||||
*/
|
||||
onReady() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面显示
|
||||
*/
|
||||
onShow() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面隐藏
|
||||
*/
|
||||
onHide() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面卸载
|
||||
*/
|
||||
onUnload() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 页面相关事件处理函数--监听用户下拉动作
|
||||
*/
|
||||
onPullDownRefresh() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 页面上拉触底事件的处理函数
|
||||
*/
|
||||
onReachBottom() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 用户点击右上角分享
|
||||
*/
|
||||
onShareAppMessage() {
|
||||
|
||||
}
|
||||
})
|
@ -1,6 +0,0 @@
|
||||
{
|
||||
"usingComponents": {
|
||||
"van-card": "@vant/weapp/card/index",
|
||||
"van-submit-bar": "@vant/weapp/submit-bar/index"
|
||||
}
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
<!--pages/deal/saleOrder/kanban/from/printTag/printTag.wxml-->
|
||||
<van-card
|
||||
num="2"
|
||||
tag="标签"
|
||||
price="10.00"
|
||||
desc="描述信息"
|
||||
title="商品标题"
|
||||
thumb="{{ imageURL }}"
|
||||
>
|
||||
<view slot="footer">
|
||||
<van-button size="mini">按钮</van-button>
|
||||
<van-button size="mini">按钮</van-button>
|
||||
</view>
|
||||
</van-card>
|
||||
<van-submit-bar
|
||||
price="{{ 3050 }}"
|
||||
button-text="确认"
|
||||
bind:submit="onClickButton"
|
||||
tip="{{ true }}"
|
||||
>
|
||||
<van-tag type="primary">标签3</van-tag>
|
||||
<view slot="tip">提示1, <text>提示2</text></view>
|
||||
</van-submit-bar>
|
@ -1 +0,0 @@
|
||||
/* pages/deal/saleOrder/kanban/from/printTag/printTag.wxss */
|
@ -1,356 +0,0 @@
|
||||
Page({
|
||||
/**
|
||||
* 页面的初始数据
|
||||
*/
|
||||
data: {
|
||||
radio: '1',
|
||||
devices: [],
|
||||
connectedDeviceId: '',
|
||||
serviceId: '',
|
||||
characteristicId: '',
|
||||
isLoading: false,
|
||||
connectionStatus: '',
|
||||
canPrint: false,
|
||||
maxDevices: 10, // 设置最大搜索设备数量
|
||||
datafinecode: [111, 112, 444], // 示例数据
|
||||
currentCodeIndex: 0, // 当前打印的条码索引
|
||||
printProgress: '' // 打印进度信息
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面加载
|
||||
*/
|
||||
onLoad(options) {
|
||||
this.initBluetooth();
|
||||
this.autoConnect();
|
||||
},
|
||||
|
||||
/**
|
||||
* 初始化蓝牙模块
|
||||
*/
|
||||
initBluetooth() {
|
||||
wx.openBluetoothAdapter({
|
||||
success: (res) => {
|
||||
console.log('蓝牙模块初始化成功', res);
|
||||
this.startBluetoothDevicesDiscovery();
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('蓝牙模块初始化失败', err);
|
||||
wx.showToast({
|
||||
title: '蓝牙初始化失败',
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* 自动连接蓝牙设备
|
||||
*/
|
||||
autoConnect() {
|
||||
const savedDevice = wx.getStorageSync('bluetoothDevice');
|
||||
if (savedDevice) {
|
||||
this.connectDevice(savedDevice.deviceId);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 开始搜索蓝牙设备
|
||||
*/
|
||||
startBluetoothDevicesDiscovery() {
|
||||
wx.startBluetoothDevicesDiscovery({
|
||||
services: [], // 可以指定服务UUID,如果不指定则搜索所有设备
|
||||
success: (res) => {
|
||||
console.log('开始搜索蓝牙设备', res);
|
||||
this.onBluetoothDeviceFound();
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('搜索蓝牙设备失败', err);
|
||||
wx.showToast({
|
||||
title: '搜索设备失败',
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* 处理找到的蓝牙设备
|
||||
*/
|
||||
onBluetoothDeviceFound() {
|
||||
wx.onBluetoothDeviceFound((res) => {
|
||||
const devices = res.devices;
|
||||
const deviceList = [];
|
||||
for (let i = 0; i < devices.length; i++) {
|
||||
const device = devices[i];
|
||||
if (device.name) { // 确保设备名称不为空
|
||||
deviceList.push({
|
||||
name: device.name,
|
||||
deviceId: device.deviceId
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// 合并新发现的设备到现有设备列表
|
||||
const updatedDevices = [...this.data.devices, ...deviceList];
|
||||
const uniqueDevices = Array.from(new Set(updatedDevices.map(device => device.deviceId)))
|
||||
.map(deviceId => updatedDevices.find(device => device.deviceId === deviceId));
|
||||
|
||||
// 限制设备数量
|
||||
const limitedDevices = uniqueDevices.slice(0, this.data.maxDevices);
|
||||
|
||||
this.setData({
|
||||
devices: limitedDevices
|
||||
}, () => {
|
||||
console.log('devices 数据已更新:', this.data.devices);
|
||||
if (this.data.devices.length >= this.data.maxDevices) {
|
||||
this.stopBluetoothDevicesDiscovery();
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* 停止搜索蓝牙设备
|
||||
*/
|
||||
stopBluetoothDevicesDiscovery() {
|
||||
wx.stopBluetoothDevicesDiscovery({
|
||||
success: (res) => {
|
||||
console.log('停止搜索蓝牙设备', res);
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('停止搜索蓝牙设备失败', err);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* 连接蓝牙设备
|
||||
*/
|
||||
connectDevice(deviceId) {
|
||||
this.setData({
|
||||
isLoading: true,
|
||||
connectionStatus: '连接中...'
|
||||
});
|
||||
|
||||
wx.createBLEConnection({
|
||||
deviceId: deviceId,
|
||||
success: (res) => {
|
||||
console.log('连接蓝牙设备成功', res);
|
||||
wx.setStorageSync('bluetoothDevice', { deviceId: deviceId }); // 保存设备信息到本地存储
|
||||
this.setData({ connectedDeviceId: deviceId });
|
||||
this.getBLEDeviceServices(deviceId);
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('连接蓝牙设备失败', err);
|
||||
this.setData({
|
||||
isLoading: false,
|
||||
connectionStatus: '连接失败'
|
||||
});
|
||||
wx.showToast({
|
||||
title: '连接设备失败',
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取蓝牙服务
|
||||
*/
|
||||
getBLEDeviceServices(deviceId) {
|
||||
wx.getBLEDeviceServices({
|
||||
deviceId: deviceId,
|
||||
success: (res) => {
|
||||
console.log('获取蓝牙服务成功', res);
|
||||
const services = res.services;
|
||||
for (let i = 0; i < services.length; i++) {
|
||||
const service = services[i];
|
||||
if (service.isPrimary) {
|
||||
this.getBLEDeviceCharacteristics(deviceId, service.uuid);
|
||||
break;
|
||||
}
|
||||
}
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('获取蓝牙服务失败', err);
|
||||
this.setData({
|
||||
isLoading: false,
|
||||
connectionStatus: '连接失败'
|
||||
});
|
||||
wx.showToast({
|
||||
title: '获取服务失败',
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取蓝牙特征
|
||||
*/
|
||||
getBLEDeviceCharacteristics(deviceId, serviceId) {
|
||||
wx.getBLEDeviceCharacteristics({
|
||||
deviceId: deviceId,
|
||||
serviceId: serviceId,
|
||||
success: (res) => {
|
||||
console.log('获取蓝牙特征成功', res);
|
||||
const characteristics = res.characteristics;
|
||||
for (let i = 0; i < characteristics.length; i++) {
|
||||
const characteristic = characteristics[i];
|
||||
if (characteristic.properties.write) {
|
||||
this.setData({
|
||||
serviceId: serviceId,
|
||||
characteristicId: characteristic.uuid,
|
||||
isLoading: false,
|
||||
connectionStatus: '连接成功',
|
||||
canPrint: true
|
||||
});
|
||||
wx.showToast({
|
||||
title: '连接成功',
|
||||
icon: 'success'
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('获取蓝牙特征失败', err);
|
||||
this.setData({
|
||||
isLoading: false,
|
||||
connectionStatus: '连接失败'
|
||||
});
|
||||
wx.showToast({
|
||||
title: '获取特征失败',
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* 发送打印数据
|
||||
*/
|
||||
sendPrintData() {
|
||||
if (!this.data.connectedDeviceId || !this.data.serviceId || !this.data.characteristicId) {
|
||||
wx.showToast({
|
||||
title: '请先连接蓝牙设备',
|
||||
icon: 'none'
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
this.setData({
|
||||
currentCodeIndex: 0,
|
||||
printProgress: `正在打印第 1 个条码`
|
||||
});
|
||||
|
||||
this.printNextCode();
|
||||
},
|
||||
|
||||
/**
|
||||
* 打印下一个条码
|
||||
*/
|
||||
printNextCode() {
|
||||
const codes = this.data.datafinecode;
|
||||
const currentIndex = this.data.currentCodeIndex;
|
||||
|
||||
if (currentIndex >= codes.length) {
|
||||
this.setData({
|
||||
printProgress: '所有条码打印完成',
|
||||
canPrint: false // 禁用打印按钮
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
const code = codes[currentIndex];
|
||||
const tsplData = `
|
||||
SIZE 8,6
|
||||
GAP 2,0
|
||||
CLS
|
||||
TEXT 10,10,"4",0,1,1,"S896 44 55 ${code}"
|
||||
PRINT 1,1
|
||||
`;
|
||||
//TEXT:TSPL 中用于在标签上打印文本的命令。
|
||||
// 50,50:指定文本的起始位置,以点为单位。这里表示文本的左下角位于 (50, 50)。
|
||||
// "4":字体编号,不同的打印机支持不同的字体编号,具体需要参考打印机手册。
|
||||
// 0:旋转角度,0 表示不旋转。
|
||||
// 2,2:宽度和高度的比例因子,这里的值为 2 表示文本的宽度和高度都放大 2 倍。
|
||||
// "S896 44 55 ${code}":要打印的文本内容,其中 ${code} 是一个变量占位符,实际打印时会被替换为具体的值。
|
||||
const buffer = this.stringToBuffer(tsplData);
|
||||
|
||||
wx.writeBLECharacteristicValue({
|
||||
deviceId: this.data.connectedDeviceId,
|
||||
serviceId: this.data.serviceId,
|
||||
characteristicId: this.data.characteristicId,
|
||||
value: buffer,
|
||||
success: (res) => {
|
||||
console.log('发送打印数据成功', res);
|
||||
this.setData({
|
||||
printProgress: `正在打印第 ${currentIndex + 1} 个条码`
|
||||
});
|
||||
setTimeout(() => {
|
||||
this.setData({
|
||||
currentCodeIndex: currentIndex + 1
|
||||
});
|
||||
this.printNextCode();
|
||||
}, 1000); // 等待1秒后打印下一个条码
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('发送打印数据失败', err);
|
||||
this.setData({
|
||||
printProgress: `打印第 ${currentIndex + 1} 个条码失败`
|
||||
});
|
||||
setTimeout(() => {
|
||||
this.setData({
|
||||
currentCodeIndex: currentIndex + 1
|
||||
});
|
||||
this.printNextCode();
|
||||
}, 1000); // 等待1秒后打印下一个条码
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* 字符串转 ArrayBuffer
|
||||
*/
|
||||
stringToBuffer(str) {
|
||||
const buffer = new ArrayBuffer(str.length);
|
||||
const dataView = new DataView(buffer);
|
||||
for (let i = 0; i < str.length; i++) {
|
||||
dataView.setUint8(i, str.charCodeAt(i));
|
||||
}
|
||||
return buffer;
|
||||
},
|
||||
|
||||
/**
|
||||
* 重新搜索蓝牙设备
|
||||
*/
|
||||
reSearchDevices() {
|
||||
this.setData({ devices: [] });
|
||||
this.startBluetoothDevicesDiscovery();
|
||||
},
|
||||
|
||||
/**
|
||||
* 处理单选框变化
|
||||
*/
|
||||
onChange(event) {
|
||||
this.setData({
|
||||
radio: event.detail,
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* 处理单选框点击
|
||||
*/
|
||||
onClick(event) {
|
||||
const { name } = event.currentTarget.dataset;
|
||||
this.setData({
|
||||
radio: name,
|
||||
});
|
||||
const device = this.data.devices.find(d => d.deviceId === name);
|
||||
if (device) {
|
||||
this.connectDevice(device.deviceId);
|
||||
}
|
||||
}
|
||||
});
|
@ -1,12 +0,0 @@
|
||||
{
|
||||
"usingComponents": {
|
||||
"van-button": "@vant/weapp/button/index",
|
||||
"van-row": "@vant/weapp/row/index",
|
||||
"van-col": "@vant/weapp/col/index",
|
||||
"van-divider": "@vant/weapp/divider/index",
|
||||
"van-radio": "@vant/weapp/radio/index",
|
||||
"van-radio-group": "@vant/weapp/radio-group/index",
|
||||
"van-cell-group": "@vant/weapp/cell-group/index",
|
||||
"van-cell": "@vant/weapp/cell/index"
|
||||
}
|
||||
}
|
@ -1,36 +0,0 @@
|
||||
<van-row>
|
||||
<van-col offset="2" span="20">
|
||||
<van-button type="info" color="linear-gradient(to right, #4bb0ff, #6149f6)" size="large" bind:click="reSearchDevices">重新搜索</van-button>
|
||||
</van-col>
|
||||
</van-row>
|
||||
<van-divider />
|
||||
<van-row>
|
||||
<van-col offset="2" span="20">
|
||||
<van-button type="info" color="linear-gradient(to right, #4bb0ff, #6149f6)" size="large" bind:click="sendPrintData" wx:if="{{ canPrint }}">打印</van-button>
|
||||
</van-col>
|
||||
</van-row>
|
||||
<van-row>
|
||||
<van-col offset="2" span="20">选择一个已配对的打印设备</van-col>
|
||||
</van-row>
|
||||
<van-row>
|
||||
<van-col>
|
||||
<van-radio-group value="{{ radio }}" bind:change="onChange">
|
||||
<van-cell-group>
|
||||
<van-cell wx:for="{{ devices }}" wx:key="deviceId" title="{{ item.name }}" clickable data-name="{{ item.deviceId }}" bind:click="onClick">
|
||||
<van-radio slot="right-icon" name="{{ item.deviceId }}" />
|
||||
</van-cell>
|
||||
</van-cell-group>
|
||||
</van-radio-group>
|
||||
</van-col>
|
||||
</van-row>
|
||||
<van-row>
|
||||
<van-col offset="2" span="20">
|
||||
<van-loading type="spinner" color="#1989fa" wx:if="{{ isLoading }}" />
|
||||
<van-text wx:else>{{ connectionStatus }}</van-text>
|
||||
</van-col>
|
||||
</van-row>
|
||||
<van-row>
|
||||
<van-col offset="2" span="20">
|
||||
<van-text>{{ printProgress }}</van-text>
|
||||
</van-col>
|
||||
</van-row>
|
@ -1 +0,0 @@
|
||||
/* pages/deal/saleOrder/kanban/from/printTag/printTemplate/bluetooth/bluetooth.wxss */
|
@ -1,81 +0,0 @@
|
||||
// pages/deal/saleOrder/kanban/from/printTag/printTemplate/printTemplate.js
|
||||
Page({
|
||||
|
||||
/**
|
||||
* 页面的初始数据
|
||||
*/
|
||||
data: {
|
||||
|
||||
},
|
||||
//跳转打蓝牙界面
|
||||
printClick(event) {
|
||||
console.log('Card clicked:', event);
|
||||
// 将选中的 partner 数据存储到全局应用实例中
|
||||
// const app = getApp();
|
||||
// app.globalData.selectedPartner = partner;
|
||||
// 在这里可以添加更多的处理逻辑,比如跳转到详情页
|
||||
// wx.showToast({
|
||||
// title: `点击了订单 ${partner.name}`,
|
||||
// icon: 'none'
|
||||
// });
|
||||
// const index = event.currentTarget.dataset.index;
|
||||
wx.navigateTo({
|
||||
url: `/pages/deal/saleOrder/kanban/from/printTag/printTemplate/bluetooth/bluetooth`,
|
||||
});
|
||||
},
|
||||
/**
|
||||
* 生命周期函数--监听页面加载
|
||||
*/
|
||||
onLoad(options) {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面初次渲染完成
|
||||
*/
|
||||
onReady() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面显示
|
||||
*/
|
||||
onShow() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面隐藏
|
||||
*/
|
||||
onHide() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面卸载
|
||||
*/
|
||||
onUnload() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 页面相关事件处理函数--监听用户下拉动作
|
||||
*/
|
||||
onPullDownRefresh() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 页面上拉触底事件的处理函数
|
||||
*/
|
||||
onReachBottom() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 用户点击右上角分享
|
||||
*/
|
||||
onShareAppMessage() {
|
||||
|
||||
}
|
||||
})
|
@ -1,5 +0,0 @@
|
||||
{
|
||||
"usingComponents": {
|
||||
"van-button": "@vant/weapp/button/index"
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
<!--pages/deal/saleOrder/kanban/from/printTag/printTemplate/printTemplate.wxml-->
|
||||
<view>演示样式 随意拖动</view>
|
||||
<view>模板</view>
|
||||
<view>打印设置</view>
|
||||
<view>标签尺寸</view>
|
||||
<view>打印尺寸</view>
|
||||
<view>打印份数</view>
|
||||
<view>负数取绝对打印</view>
|
||||
<view>字段控制</view>
|
||||
<van-button type="info" bind:click="printClick">打印</van-button>
|
||||
|
@ -1 +0,0 @@
|
||||
/* pages/deal/saleOrder/kanban/from/printTag/printTemplate/printTemplate.wxss */
|
@ -1,80 +0,0 @@
|
||||
// pages/deal/saleOrder/kanban/from/saleOrderFrom.js
|
||||
Page({
|
||||
|
||||
/**
|
||||
* 页面的初始数据
|
||||
*/
|
||||
data: {
|
||||
|
||||
},
|
||||
onClickRight(event) {
|
||||
console.log('Card clicked:', event);
|
||||
// 将选中的 partner 数据存储到全局应用实例中
|
||||
// const app = getApp();
|
||||
// app.globalData.selectedPartner = partner;
|
||||
// 在这里可以添加更多的处理逻辑,比如跳转到详情页
|
||||
// wx.showToast({
|
||||
// title: `点击了订单 ${partner.name}`,
|
||||
// icon: 'none'
|
||||
// });
|
||||
// const index = event.currentTarget.dataset.index;
|
||||
wx.navigateTo({
|
||||
url: `/pages/deal/saleOrder/kanban/from/printTag/printTag`,
|
||||
});
|
||||
},
|
||||
/**
|
||||
* 生命周期函数--监听页面加载
|
||||
*/
|
||||
onLoad(options) {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面初次渲染完成
|
||||
*/
|
||||
onReady() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面显示
|
||||
*/
|
||||
onShow() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面隐藏
|
||||
*/
|
||||
onHide() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面卸载
|
||||
*/
|
||||
onUnload() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 页面相关事件处理函数--监听用户下拉动作
|
||||
*/
|
||||
onPullDownRefresh() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 页面上拉触底事件的处理函数
|
||||
*/
|
||||
onReachBottom() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 用户点击右上角分享
|
||||
*/
|
||||
onShareAppMessage() {
|
||||
|
||||
}
|
||||
})
|
@ -1,7 +0,0 @@
|
||||
{
|
||||
"usingComponents": {
|
||||
"van-nav-bar": "@vant/weapp/nav-bar/index",
|
||||
"van-icon": "@vant/weapp/icon/index",
|
||||
"van-loading": "@vant/weapp/loading/index"
|
||||
}
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
<!--pages/deal/saleOrder/kanban/from/saleOrderFrom.wxml-->
|
||||
<van-nav-bar
|
||||
title="标题"
|
||||
left-text="返回"
|
||||
right-text="按钮"
|
||||
left-arrow
|
||||
bind:click-left="onClickLeft"
|
||||
bind:click-right="onClickRight"
|
||||
/>
|
||||
<view>基本信息 产品信息 费用金额</view>
|
||||
<view>客户</view>
|
||||
<view>地址</view>
|
||||
<view>销售日期</view>
|
||||
<view>计划收款日期</view>
|
||||
<view>送货日期</view>
|
||||
<view>默认仓库</view>
|
||||
<view>业务员</view>
|
||||
<view>销售订单号</view>
|
||||
<view>销售订单行详细信息</view>
|
||||
<view>订单金额</view>
|
||||
<view>优惠金额</view>
|
||||
<view>合同金额</view>
|
||||
<view>非产品费用</view>
|
||||
<view>使用预收款冲销</view>
|
||||
<view>已收金额</view>
|
||||
<view>本次收款</view>
|
||||
<view>收款账户</view>
|
||||
<view>备注</view>
|
||||
<view>图片</view>
|
||||
<view>附件</view>
|
||||
<view>拒收</view>
|
||||
<view>删除 复制新增 一键送货 生成退货单 保存</view>
|
@ -1 +0,0 @@
|
||||
/* pages/deal/saleOrder/kanban/from/saleOrderFrom.wxss */
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"usingComponents": {
|
||||
"van-nav-bar": "@vant/weapp/nav-bar/index",
|
||||
"van-icon": "@vant/weapp/icon/index",
|
||||
"van-card": "@vant/weapp/card/index",
|
||||
"van-button": "@vant/weapp/button/index",
|
||||
"van-tag": "@vant/weapp/tag/index",
|
||||
"van-loading": "@vant/weapp/loading/index"
|
||||
}
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
<!--pages/deal/saleOrder/kanban/saleOrderKanban.wxml-->
|
||||
<van-nav-bar title="销售单" fixed="true" placeholder="true">
|
||||
<van-icon name="search" slot="right" />
|
||||
<van-loading type="spinner" color="#1989fa" wx:if="{{isLoading}}" vertical="true" slot="left" />
|
||||
</van-nav-bar>
|
||||
<view>销售日期帅选195 排序195 帅选195</view>
|
||||
|
||||
<van-card wx:for="{{kanban_datas}}" bind:tap="onCardClick" wx:key="id" data-index="{{index}}" num="{{item.date_order || '日期'}}" tag="{{index + 1 }}" price="{{item.orde_ddje || '0.00'}}" desc="{{item.partner_name|| '未知客户'}}" title="{{item.name || '销售订单号'}}" thumb="https://fastly.jsdelivr.net/npm/@vant/assets/ipad.jpeg">
|
||||
<view slot="footer">
|
||||
<van-button size="mini">分享195</van-button>
|
||||
<van-button size="mini">打印195</van-button>
|
||||
</view>
|
||||
<view slot="tags">
|
||||
<van-tag plain type="success" wx:for="{{item.orderLines}}" wx:key="item">
|
||||
{{item.name}}
|
||||
</van-tag>
|
||||
</view>
|
||||
</van-card>
|
@ -1 +0,0 @@
|
||||
/* pages/deal/saleOrder/kanban/saleOrderKanban.wxss */
|
@ -1,71 +0,0 @@
|
||||
// pages/deal/saleOrder/saleOrder.js
|
||||
Page({
|
||||
//弹出看板分页20个列表
|
||||
onClickRight() {
|
||||
wx.navigateTo({
|
||||
url: `/pages/deal/saleOrder/kanban/saleOrderKanban`,
|
||||
});
|
||||
},
|
||||
/**
|
||||
* 页面的初始数据
|
||||
*/
|
||||
data: {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面加载
|
||||
*/
|
||||
onLoad(options) {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面初次渲染完成
|
||||
*/
|
||||
onReady() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面显示
|
||||
*/
|
||||
onShow() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面隐藏
|
||||
*/
|
||||
onHide() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面卸载
|
||||
*/
|
||||
onUnload() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 页面相关事件处理函数--监听用户下拉动作
|
||||
*/
|
||||
onPullDownRefresh() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 页面上拉触底事件的处理函数
|
||||
*/
|
||||
onReachBottom() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 用户点击右上角分享
|
||||
*/
|
||||
onShareAppMessage() {
|
||||
|
||||
}
|
||||
})
|
@ -1,6 +0,0 @@
|
||||
{
|
||||
"usingComponents": {
|
||||
"van-submit-bar": "@vant/weapp/submit-bar/index",
|
||||
"van-nav-bar": "@vant/weapp/nav-bar/index"
|
||||
}
|
||||
}
|
@ -1,25 +0,0 @@
|
||||
<!--pages/deal/saleOrder/saleOrder.wxml-->
|
||||
<van-nav-bar
|
||||
placeholder = "true"
|
||||
title="标题"
|
||||
left-text="返回"
|
||||
right-text="按钮"
|
||||
left-arrow
|
||||
bind:click-left="onClickLeft"
|
||||
bind:click-right="onClickRight"
|
||||
/>
|
||||
<view> 客户1</view>
|
||||
<view> 日期1</view>
|
||||
<view> 默认仓库1</view>
|
||||
<view> 业务员1</view>
|
||||
<view> 客户货号 进价 +/-1</view>
|
||||
<view> 产品列表</view>
|
||||
<van-submit-bar
|
||||
price="{{ 3050 }}"
|
||||
button-text="确认"
|
||||
bind:submit="onClickButton"
|
||||
tip="{{ true }}"
|
||||
>
|
||||
<van-tag type="primary">标签3</van-tag>
|
||||
<view slot="tip">提示1, <text>提示2</text></view>
|
||||
</van-submit-bar>
|
@ -1 +0,0 @@
|
||||
/* pages/deal/saleOrder/saleOrder.wxss */
|
@ -8,6 +8,7 @@
|
||||
</button>
|
||||
<view class="nickname-wrapper">
|
||||
<text class="nickname-label">昵称</text>
|
||||
|
||||
<input type="nickname" class="nickname-input" placeholder="请输入昵称" bind:change="onInputChange" />
|
||||
</view>
|
||||
</block>
|
||||
@ -24,4 +25,4 @@
|
||||
<text class="user-motto">{{motto}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</scroll-view>
|
@ -3,7 +3,8 @@ const util = require('../../utils/util.js')
|
||||
|
||||
Page({
|
||||
data: {
|
||||
logs: []
|
||||
logs: [],
|
||||
conf: []
|
||||
},
|
||||
onLoad() {
|
||||
this.setData({
|
||||
@ -12,7 +13,21 @@ Page({
|
||||
date: util.formatTime(new Date(log)),
|
||||
timeStamp: log
|
||||
}
|
||||
})
|
||||
}),
|
||||
conf: wx.getStorageSync('conf') || {}
|
||||
})
|
||||
},
|
||||
clearStorageSync() {
|
||||
wx.clearStorageSync();
|
||||
wx.showToast({
|
||||
title: '缓存已清除',
|
||||
icon: 'success',
|
||||
duration: 2000
|
||||
});
|
||||
// 清除缓存后,可以重新加载数据或重置页面状态
|
||||
this.setData({
|
||||
logs: [],
|
||||
conf: {}
|
||||
});
|
||||
}
|
||||
})
|
||||
|
@ -1,6 +1,10 @@
|
||||
<!--logs.wxml-->
|
||||
<scroll-view class="scrollarea" scroll-y type="list">
|
||||
<button bindtap="clearStorageSync">清除缓存</button>
|
||||
<block wx:for="{{logs}}" wx:key="timeStamp" wx:for-item="log">
|
||||
<view class="log-item">{{index + 1}}. {{log.date}}</view>
|
||||
<view class="log-item">{{index + 1}}. {{conf.username}}</view>
|
||||
<view class="log-item">{{index + 1}}. {{conf.db}}</view>
|
||||
<view class="log-item">{{index + 1}}. {{conf.odooUrl}}</view>
|
||||
</block>
|
||||
</scroll-view>
|
||||
|
201
pages/sale_order/form/sale_order_form.js
Normal file
201
pages/sale_order/form/sale_order_form.js
Normal file
@ -0,0 +1,201 @@
|
||||
const app = getApp();
|
||||
|
||||
Page({
|
||||
/**
|
||||
* 页面的初始数据
|
||||
*/
|
||||
data: {
|
||||
partner: {},
|
||||
formData: {
|
||||
name: '',
|
||||
date_order: '',
|
||||
orde_ddje: '',
|
||||
partner_id: '',
|
||||
fineCode_Text:''
|
||||
},
|
||||
showDatePicker: false,
|
||||
currentDate: new Date().getTime(),
|
||||
showPartnerPicker: false,
|
||||
partnerColumns: [], // 初始化为空数组
|
||||
showProductPicker: false,
|
||||
productColumns: [], // 初始化为空数组
|
||||
selectedProducts: [],
|
||||
fineCode_Text: []
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面加载
|
||||
*/
|
||||
onLoad(options) {
|
||||
// 从全局应用实例中获取选中的 partner 数据
|
||||
const selectedPartner = app.globalData.selectedPartner;
|
||||
if (selectedPartner) {
|
||||
this.setData({
|
||||
partner: selectedPartner,
|
||||
formData: {
|
||||
name: selectedPartner.name,
|
||||
date_order: selectedPartner.date_order,
|
||||
orde_ddje: selectedPartner.orde_ddje,
|
||||
partner_id: selectedPartner.partner_name,
|
||||
|
||||
},
|
||||
orderLines: selectedPartner.orderLines || [] // 确保 fineCode_Text 被正确设置
|
||||
|
||||
});
|
||||
console.log('Selected Partner:', selectedPartner);
|
||||
|
||||
} else {
|
||||
console.error('Selected partner not found in global data');
|
||||
// 处理数据未找到的情况,例如返回上一页
|
||||
wx.navigateBack();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面初次渲染完成
|
||||
*/
|
||||
onReady() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面显示
|
||||
*/
|
||||
onShow() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面隐藏
|
||||
*/
|
||||
onHide() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面卸载
|
||||
*/
|
||||
onUnload() {
|
||||
// 清理全局数据
|
||||
app.globalData.selectedPartner = null;
|
||||
},
|
||||
|
||||
/**
|
||||
* 页面相关事件处理函数--监听用户下拉动作
|
||||
*/
|
||||
onPullDownRefresh() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 页面上拉触底事件的处理函数
|
||||
*/
|
||||
onReachBottom() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 用户点击右上角分享
|
||||
*/
|
||||
onShareAppMessage() {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 显示日期选择器
|
||||
*/
|
||||
showDatePicker() {
|
||||
this.setData({
|
||||
showDatePicker: true
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* 选择日期
|
||||
*/
|
||||
onDateConfirm(event) {
|
||||
const date = new Date(event.detail);
|
||||
const formattedDate = `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')} ${String(date.getHours()).padStart(2, '0')}:${String(date.getMinutes()).padStart(2, '0')}:${String(date.getSeconds()).padStart(2, '0')}`;
|
||||
this.setData({
|
||||
formData: {
|
||||
...this.data.formData,
|
||||
date_order: formattedDate
|
||||
},
|
||||
showDatePicker: false
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* 取消日期选择器
|
||||
*/
|
||||
onDateCancel() {
|
||||
this.setData({
|
||||
showDatePicker: false
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* 显示合作伙伴选择器
|
||||
*/
|
||||
showPartnerPicker() {
|
||||
this.setData({
|
||||
showPartnerPicker: true
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* 选择合作伙伴
|
||||
*/
|
||||
onPartnerConfirm(event) {
|
||||
const selectedPartnerName = this.data.partnerColumns[event.detail.index];
|
||||
const selectedPartnerInfo = this.data.partner.partnerInfo.find(info => info[1] === selectedPartnerName);
|
||||
this.setData({
|
||||
formData: {
|
||||
...this.data.formData,
|
||||
partner_id: selectedPartnerInfo[0]
|
||||
},
|
||||
showPartnerPicker: false
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* 取消合作伙伴选择器
|
||||
*/
|
||||
onPartnerCancel() {
|
||||
this.setData({
|
||||
showPartnerPicker: false
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* 表单提交
|
||||
*/
|
||||
onSubmit(event) {
|
||||
console.log('Form submitted:', this.data.formData);
|
||||
// 在这里可以添加表单提交的逻辑
|
||||
},
|
||||
|
||||
/**
|
||||
* 处理订单名称输入
|
||||
*/
|
||||
onNameInput(event) {
|
||||
this.setData({
|
||||
formData: {
|
||||
...this.data.formData,
|
||||
name: event.detail
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* 处理订单金额输入
|
||||
*/
|
||||
onOrdeDdjeInput(event) {
|
||||
this.setData({
|
||||
formData: {
|
||||
...this.data.formData,
|
||||
orde_ddje: event.detail
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
6
pages/sale_order/form/sale_order_form.json
Normal file
6
pages/sale_order/form/sale_order_form.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"usingComponents": {
|
||||
"van-image": "@vant/weapp/image/index",
|
||||
"van-datetime-picker": "@vant/weapp/datetime-picker/index"
|
||||
}
|
||||
}
|
74
pages/sale_order/form/sale_order_form.wxml
Normal file
74
pages/sale_order/form/sale_order_form.wxml
Normal file
@ -0,0 +1,74 @@
|
||||
<van-form bind:submit="onSubmit">
|
||||
<van-image
|
||||
width="20rem"
|
||||
height="20rem"
|
||||
fit="contain"
|
||||
src="https://img.yzcdn.cn/vant/cat.jpeg"
|
||||
/>
|
||||
|
||||
<van-field
|
||||
value="{{formData.name}}"
|
||||
label="订单名称"
|
||||
placeholder="请输入订单名称"
|
||||
required
|
||||
bind:input="onNameInput"
|
||||
/>
|
||||
|
||||
<van-field
|
||||
value="{{formData.date_order}}"
|
||||
label="日期"
|
||||
placeholder="请选择日期"
|
||||
is-link
|
||||
readonly
|
||||
name="datePicker"
|
||||
bind:click="showDatePicker"
|
||||
/>
|
||||
<van-popup show="{{showDatePicker}}" position="bottom">
|
||||
<van-datetime-picker
|
||||
type="datetime"
|
||||
value="{{currentDate}}"
|
||||
bind:confirm="onDateConfirm"
|
||||
bind:cancel="onDateCancel"
|
||||
/>
|
||||
</van-popup>
|
||||
|
||||
<van-field
|
||||
value="{{formData.orde_ddje}}"
|
||||
label="订单金额"
|
||||
placeholder="请输入订单金额"
|
||||
type="number"
|
||||
required
|
||||
bind:input="onOrdeDdjeInput"
|
||||
/>
|
||||
<!-- 渲染 fineCode_Text 的 <van-tag> 标签 -->
|
||||
<van-tag
|
||||
plain
|
||||
type="success"
|
||||
wx:for="{{orderLines}}"
|
||||
wx:key="index"
|
||||
>
|
||||
{{item.fineCode_Text}}
|
||||
</van-tag>
|
||||
|
||||
<van-field
|
||||
value="{{formData.partner_id}}"
|
||||
label="合作伙伴"
|
||||
placeholder="请选择合作伙伴"
|
||||
is-link
|
||||
readonly
|
||||
name="partnerPicker"
|
||||
bind:click="showPartnerPicker"
|
||||
/>
|
||||
<van-popup show="{{showPartnerPicker}}" position="bottom">
|
||||
<van-picker
|
||||
show-toolbar
|
||||
columns="{{partnerColumns}}"
|
||||
bind:confirm="onPartnerConfirm"
|
||||
bind:cancel="onPartnerCancel"
|
||||
/>
|
||||
</van-popup>
|
||||
|
||||
<van-button round block type="info" native-type="submit">
|
||||
提交
|
||||
</van-button>
|
||||
</van-form>
|
1
pages/sale_order/form/sale_order_form.wxss
Normal file
1
pages/sale_order/form/sale_order_form.wxss
Normal file
@ -0,0 +1 @@
|
||||
/* pages/sale_order/form/sale_order_form.wxss */
|
@ -1,4 +1,3 @@
|
||||
// pages/deal/saleOrder/kanban/saleOrderKanban.js
|
||||
// pages/sale_order/sale_order.js
|
||||
const convert = require('xml-js');
|
||||
const app = getApp();
|
||||
@ -8,11 +7,11 @@ Page({
|
||||
* 页面的初始数据
|
||||
*/
|
||||
data: {
|
||||
httpsUrl: '',
|
||||
odooUrl: '',
|
||||
db: '',
|
||||
username: '',
|
||||
password: '',
|
||||
kanban_datas: [],
|
||||
partners: [],
|
||||
userId: null, // 用于存储用户ID
|
||||
currentPage: 1, // 当前页码
|
||||
pageSize: 20, // 每页记录数
|
||||
@ -26,20 +25,20 @@ Page({
|
||||
onLoad(options) {
|
||||
// Odoo 服务器配置
|
||||
const {
|
||||
httpsUrl,
|
||||
odooUrl,
|
||||
db,
|
||||
username,
|
||||
password
|
||||
} = app.globalData;
|
||||
this.setData({
|
||||
httpsUrl: httpsUrl,
|
||||
odooUrl: odooUrl,
|
||||
db: db,
|
||||
username: username,
|
||||
password: password
|
||||
});
|
||||
|
||||
// 登录到 Odoo
|
||||
const loginUrl = `${this.data.httpsUrl}/xmlrpc/2/common`;
|
||||
const loginUrl = `${this.data.odooUrl}/xmlrpc/2/common`;
|
||||
const loginParams = [
|
||||
`<value><string>${this.data.db}</string></value>`,
|
||||
`<value><string>${this.data.username}</string></value>`,
|
||||
@ -91,7 +90,7 @@ Page({
|
||||
|
||||
this.setData({ isLoading: true });
|
||||
|
||||
const objectUrl = `${this.data.httpsUrl}/xmlrpc/2/object`;
|
||||
const objectUrl = `${this.data.odooUrl}/xmlrpc/2/object`;
|
||||
const objectParams = [
|
||||
`<value><string>${this.data.db}</string></value>`,
|
||||
`<value><int>${this.data.userId}</int></value>`,
|
||||
@ -107,7 +106,7 @@ Page({
|
||||
<value><string>name</string></value>
|
||||
<value><string>orde_ddje</string></value>
|
||||
<value><string>date_order</string></value>
|
||||
<value><string>partner_id</string></value>
|
||||
<value><string>partner_id</string></value> <!-- 添加 partner_id 字段 -->
|
||||
<value><string>order_line</string></value>
|
||||
</data>
|
||||
</array></value>
|
||||
@ -144,7 +143,7 @@ Page({
|
||||
return;
|
||||
}
|
||||
|
||||
const kanban_datas = data.map(item => {
|
||||
const partners = data.map(item => {
|
||||
const id = item.struct.member.find(member => member.name._text === 'id')?.value.int?._text || '';
|
||||
const name = item.struct.member.find(member => member.name._text === 'name')?.value.string?._text || '';
|
||||
const date_order = item.struct.member.find(member => member.name._text === 'date_order')?.value.string?._text || '';
|
||||
@ -174,7 +173,7 @@ Page({
|
||||
});
|
||||
|
||||
// 获取每个订单的 order_line 详细信息
|
||||
const fetchOrderLinePromises = kanban_datas.map(partner => {
|
||||
const fetchOrderLinePromises = partners.map(partner => {
|
||||
const order_lineInfoArray = Array.isArray(partner.order_lineInfo) ? partner.order_lineInfo : [partner.order_lineInfo];
|
||||
const orderLineIds = order_lineInfoArray.map(orderLine => orderLine.int?._text);
|
||||
return new Promise((resolve, reject) => {
|
||||
@ -195,7 +194,7 @@ Page({
|
||||
.then(updatedPartners => {
|
||||
console.log('Data fetched successfully:', updatedPartners);
|
||||
this.setData({
|
||||
kanban_datas: updatedPartners,
|
||||
partners: updatedPartners,
|
||||
isLoading: false
|
||||
});
|
||||
})
|
||||
@ -213,7 +212,7 @@ Page({
|
||||
* 获取总记录数
|
||||
*/
|
||||
getTotalRecords() {
|
||||
const objectUrl = `${this.data.httpsUrl}/xmlrpc/2/object`;
|
||||
const objectUrl = `${this.data.odooUrl}/xmlrpc/2/object`;
|
||||
const objectParams = [
|
||||
`<value><string>${this.data.db}</string></value>`,
|
||||
`<value><int>${this.data.userId}</int></value>`,
|
||||
@ -256,19 +255,21 @@ Page({
|
||||
*/
|
||||
loadMore() {
|
||||
if (this.data.isLoading || (this.data.currentPage * this.data.pageSize) >= this.data.totalRecords) return;
|
||||
|
||||
|
||||
this.setData({ currentPage: this.data.currentPage + 1 });
|
||||
this.fetchData();
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* 加载上一页数据
|
||||
*/
|
||||
loadPrevious() {
|
||||
if (this.data.isLoading || this.data.currentPage <= 1) return;
|
||||
|
||||
|
||||
this.setData({ currentPage: this.data.currentPage - 1 });
|
||||
this.fetchData();
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* 创建一个函数来进行 XML-RPC 请求
|
||||
*/
|
||||
@ -314,7 +315,7 @@ Page({
|
||||
* 获取 order_line 的详细信息
|
||||
*/
|
||||
fetchOrderLineDetails(orderLineIds, callback) {
|
||||
const objectUrl = `${this.data.httpsUrl}/xmlrpc/2/object`;
|
||||
const objectUrl = `${this.data.odooUrl}/xmlrpc/2/object`;
|
||||
const objectParams2 = [
|
||||
`<value><string>${this.data.db}</string></value>`,
|
||||
`<value><int>${this.data.userId}</int></value>`,
|
||||
@ -431,7 +432,7 @@ Page({
|
||||
* 处理卡片点击事件
|
||||
*/
|
||||
onCardClick(event) {
|
||||
const partner = this.data.kanban_datas[event.currentTarget.dataset.index];
|
||||
const partner = this.data.partners[event.currentTarget.dataset.index];
|
||||
if (!partner) {
|
||||
return;
|
||||
}
|
||||
@ -448,7 +449,7 @@ Page({
|
||||
});
|
||||
const index = event.currentTarget.dataset.index;
|
||||
wx.navigateTo({
|
||||
url: `/pages/deal/saleOrder/kanban/from/saleOrderFrom?index=${index}`,
|
||||
url: `/pages/sale_order/form/sale_order_form?index=${index}`,
|
||||
});
|
||||
},
|
||||
|
||||
@ -456,7 +457,7 @@ Page({
|
||||
* 处理图片点击事件
|
||||
*/
|
||||
onThumbClick(event) {
|
||||
const partner = this.data.kanban_datas[event.currentTarget.dataset.index];
|
||||
const partner = this.data.partners[event.currentTarget.dataset.index];
|
||||
if (!partner) {
|
||||
return;
|
||||
}
|
||||
@ -515,7 +516,7 @@ Page({
|
||||
* 用户点击右上角分享
|
||||
*/
|
||||
onShareAppMessage() {
|
||||
const partner = this.data.kanban_datas[0]; // 假设分享第一个订单
|
||||
const partner = this.data.partners[0]; // 假设分享第一个订单
|
||||
if (!partner) {
|
||||
return {};
|
||||
}
|
28
pages/sale_order/sale_order.wxml
Normal file
28
pages/sale_order/sale_order.wxml
Normal file
@ -0,0 +1,28 @@
|
||||
<!-- pages/sale_order/sale_order.wxml -->
|
||||
|
||||
<van-card
|
||||
wx:for="{{partners}}"
|
||||
wx:key="id"
|
||||
data-index="{{index}}"
|
||||
num="{{item.date_order || '日期'}}"
|
||||
tag="{{index + 1}}"
|
||||
price="{{item.orde_ddje || '0.00'}}"
|
||||
desc="{{item.partner_name|| '描述信息'}}"
|
||||
bind:tap="onCardClick"
|
||||
bind:click-thumb="onThumbClick"
|
||||
title="{{item.name || '商品标题'}}"
|
||||
thumb="https://fastly.jsdelivr.net/npm/@vant/assets/ipad.jpeg"
|
||||
>
|
||||
<!-- desc="{{item.products.map(product => product.name).join(', ') || '描述信息'}}" -->
|
||||
<view slot="tags">
|
||||
<van-tag
|
||||
plain
|
||||
type="success"
|
||||
wx:for="{{item.orderLines}}"
|
||||
wx:key="item"
|
||||
>
|
||||
{{item.name}}
|
||||
{{item.fineCode_Text}}
|
||||
</van-tag>
|
||||
</view>
|
||||
</van-card>
|
1
pages/sale_order/sale_order.wxss
Normal file
1
pages/sale_order/sale_order.wxss
Normal file
@ -0,0 +1 @@
|
||||
/* pages/sale_order/sale_order.wxss */
|
@ -1,10 +1,6 @@
|
||||
{
|
||||
"compileType": "miniprogram",
|
||||
"libVersion": "trial",
|
||||
"packOptions": {
|
||||
"ignore": [],
|
||||
"include": []
|
||||
},
|
||||
"setting": {
|
||||
"coverView": true,
|
||||
"es6": true,
|
||||
@ -12,17 +8,28 @@
|
||||
"minified": true,
|
||||
"enhance": true,
|
||||
"showShadowRootInWxmlPanel": true,
|
||||
"packNpmRelationList": [],
|
||||
"packNpmManually": true,
|
||||
"packNpmRelationList": [
|
||||
{
|
||||
"packageJsonPath": "./package.json",
|
||||
"miniprogramNpmDistDir": "./miniprogram_npm/"
|
||||
}
|
||||
],
|
||||
"babelSetting": {
|
||||
"ignore": [],
|
||||
"disablePlugins": [],
|
||||
"outputPath": ""
|
||||
}
|
||||
},
|
||||
"ignoreUploadUnusedFiles": true
|
||||
},
|
||||
"condition": {},
|
||||
"editorSetting": {
|
||||
"tabIndent": "auto",
|
||||
"tabSize": 2
|
||||
},
|
||||
"packOptions": {
|
||||
"ignore": [],
|
||||
"include": []
|
||||
},
|
||||
"appid": "wx463c21c58bdf2d7f"
|
||||
}
|
Loading…
Reference in New Issue
Block a user