From 5cf009d5ee7cd782a360848d5c2d7b71aec4d8af Mon Sep 17 00:00:00 2001
From: loulijun2021 <1694218219@qq.com>
Date: 星期三, 19 七月 2023 11:07:55 +0800
Subject: [PATCH] 1.接入signalR 消息推送功能
---
src/views/purchasesManager/goodsStatisticsList.vue | 123 ++++--
src/main.js | 3
src/layout/components/Navbar.vue | 26 +
src/views/purchasesManager/InventoryLedgerList.vue | 3
package.json | 2
src/settings.js | 4
src/layout/components/Sidebar/index.vue | 2
src/utils/signalR.js | 36 ++
src/store/modules/settings.js | 4
src/views/purchasesManager/salesStatisticsList.vue | 788 ++++------------------------------------------
10 files changed, 227 insertions(+), 764 deletions(-)
diff --git a/package.json b/package.json
index edd9c99..cdcf9ff 100644
--- a/package.json
+++ b/package.json
@@ -14,6 +14,7 @@
"test:ci": "npm run lint && npm run test:unit"
},
"dependencies": {
+ "@microsoft/signalr": "^7.0.9",
"axios": "0.18.1",
"core-js": "3.6.5",
"cronstrue": "^2.28.0",
@@ -41,6 +42,7 @@
"vuedraggable": "^2.24.3"
},
"devDependencies": {
+ "@aspnet/signalr": "^1.0.27",
"@vue/cli-plugin-babel": "4.4.4",
"@vue/cli-plugin-eslint": "4.4.4",
"@vue/cli-plugin-unit-jest": "4.4.4",
diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue
index e504d48..41a17d2 100644
--- a/src/layout/components/Navbar.vue
+++ b/src/layout/components/Navbar.vue
@@ -64,6 +64,13 @@
<el-tooltip class="item" effect="dark" content="鍏ㄥ睆" placement="bottom">
<screenfull id="screenfull" class="right-menu-item hover-effect" />
</el-tooltip>
+
+ <el-tooltip class="item" effect="dark" content="鎴戠殑娑堟伅" placement="bottom">
+ <el-badge :is-dot="$store.state.settings.isDot" class="item right-menu-item hover-effect">
+ <i class="el-icon-bell" @click="$message('鐐瑰嚮浜嗘垜鐨勬秷鎭紒');$store.state.settings.isDot=false" />
+ </el-badge>
+ </el-tooltip>
+
<div style=" font-size: 18px;font-family: 'Microsoft YaHei';color:#AAAAAA;padding:0 8px;cursor: pointer">
{{ stu_torgname }}
</div>
@@ -228,6 +235,18 @@
this.username = getCookie('username')
this.stu_torgname = getCookie('stu_torgname') === '' ? '绯荤粺绠$悊鍛�' : getCookie('stu_torgname')
},
+ mounted() {
+ this.$signalr.off('SendAll')
+ this.$signalr.on('SendAll', (res) => {
+ this.$notify({
+ offset: 80,
+ type: 'warning',
+ title: '娑堟伅鎻愰啋',
+ message: res
+ })
+ this.$store.state.settings.isDot = true
+ })
+ },
computed: {
...mapGetters([
'sidebar',
@@ -285,6 +304,7 @@
this.$store.dispatch('app/toggleSideBar')
},
async logout() {
+ this.$signalr.off('SendAll')
await this.$store.dispatch('user/logout')
this.$message.success('閫�鍑烘垚鍔燂紒')
this.$router.push(`/login`)
@@ -322,6 +342,12 @@
}
</script>
<style lang="scss" scoped>
+::v-deep .el-badge__content {
+ position: absolute !important;
+ top: 12px !important;
+ right: 10px !important;
+}
+
.display_btw {
display: flex;
justify-content: space-between;
diff --git a/src/layout/components/Sidebar/index.vue b/src/layout/components/Sidebar/index.vue
index 24a9fe1..acd2ac3 100644
--- a/src/layout/components/Sidebar/index.vue
+++ b/src/layout/components/Sidebar/index.vue
@@ -42,7 +42,7 @@
<div v-if="!$store.state.settings.menuIsHorizontal" style="position: absolute;bottom: 20px;left: 30px;">
<div>
<el-button v-if="$store.state.app.sidebar.opened" type="text" style="font-size: 14px;cursor: pointer">
- 鏂板嚡杩埗閫燰1.6.52
+ 鏂板嚡杩埗閫燰1.6.53
</el-button>
<!-- <el-button type="text"><a href="http://www.ykxkd.com/" target="_blank">鏂板嚡杩埗閫燰1.0.01</a></el-button>-->
</div>
diff --git a/src/main.js b/src/main.js
index 0754da0..81f0498 100644
--- a/src/main.js
+++ b/src/main.js
@@ -70,6 +70,9 @@
// 寮曠敤淇敼杩囩殑gantt
Vue.use(vGanttChart)
+import signalr from './utils/signalR'
+Vue.prototype.$signalr = signalr.signal
+
import { setCookie } from '@/utils/auth' // 寮曠敤淇敼杩囩殑gantt
// 鍒ゆ柇鏄惁璧板師骞冲彴杩囨潵
if (window.location.hash.indexOf('guid') !== -1) {
diff --git a/src/settings.js b/src/settings.js
index 36efd85..f444e6f 100644
--- a/src/settings.js
+++ b/src/settings.js
@@ -34,6 +34,8 @@
animationType: 'fade-transform', // 鍔ㄧ敾绫诲瀷 鍒濆绫诲瀷:fade-transform
- orgType: ''// 缁勭粐绫诲瀷 D 閮ㄩ棬 W 杞﹂棿 '' 绠$悊鍛�
+ orgType: '', // 缁勭粐绫诲瀷 D 閮ㄩ棬 W 杞﹂棿 '' 绠$悊鍛�
+
+ isDot: false// 鎴戠殑娑堟伅鍙充笂瑙掑皬绾㈢偣 true 鏄剧ず false 闅愯棌
}
diff --git a/src/store/modules/settings.js b/src/store/modules/settings.js
index bc708b8..717708c 100644
--- a/src/store/modules/settings.js
+++ b/src/store/modules/settings.js
@@ -9,7 +9,8 @@
headBackgroundColorValue,
menuIsHorizontal,
leftBackgroundColorValue,
- animationType
+ animationType,
+ isDot
} = defaultSettings
const state = {
@@ -17,6 +18,7 @@
leftBackgroundColorValue: leftBackgroundColorValue, // 宸﹁竟鑳屾櫙棰滆壊
headBackgroundColorValue: headBackgroundColorValue, // 澶撮儴鑳屾櫙棰滆壊
menuIsHorizontal: menuIsHorizontal, // 鑿滃崟鏄惁鏄í灞�
+ isDot: isDot,
theme: variables.theme,
showSettings: showSettings,
fixedHeader: fixedHeader,
diff --git a/src/utils/signalR.js b/src/utils/signalR.js
new file mode 100644
index 0000000..11180bf
--- /dev/null
+++ b/src/utils/signalR.js
@@ -0,0 +1,36 @@
+import * as signalR from '@aspnet/signalr'
+
+const url = 'http://121.196.36.24:8019/chatHub'
+const signal = new signalR.HubConnectionBuilder()
+ .withUrl(url, {
+ // skipNegotiation: true,
+ // transport: signalR.HttpTransportType.WebSockets
+ })
+ .configureLogging(signalR.LogLevel.Information)
+ .build()
+// signal.on('SendAll', (res) => {
+// console.log(res, '鏀跺埌娑堟伅浜�')
+// })
+signal.start().then(() => {
+ if (window.Notification) {
+ if (Notification.permission === 'granted') {
+ console.log('鍏佽閫氱煡')
+ } else if (Notification.permission !== 'denied') {
+ console.log('闇�瑕侀�氱煡鏉冮檺')
+ Notification.requestPermission((permission) => {
+ console.log('鏉冮檺閫氱煡', permission)
+ })
+ } else if (Notification.permission === 'denied') {
+ console.log('鎷掔粷閫氱煡')
+ }
+ } else {
+ console.error('娴忚鍣ㄤ笉鏀寔Notification')
+ }
+ console.log('杩炴帴鎴愬姛')
+})
+// signal.onclose((err) => {
+// console.log('杩炴帴宸茬粡鏂紑 鎵ц鍑芥暟onclose', err)
+// })
+export default {
+ signal
+}
diff --git a/src/views/purchasesManager/InventoryLedgerList.vue b/src/views/purchasesManager/InventoryLedgerList.vue
index e62c5d9..c7af705 100644
--- a/src/views/purchasesManager/InventoryLedgerList.vue
+++ b/src/views/purchasesManager/InventoryLedgerList.vue
@@ -410,6 +410,7 @@
},
dialogVisible2: false,
+ OrgTypeArrxx: [],
recordData: []// 鏌ョ湅璁板綍鏁扮粍
}
@@ -637,7 +638,7 @@
::v-deep .pop_btn {
.el-button--primary {
- float: right;
+ float: right;
}
}
diff --git a/src/views/purchasesManager/goodsStatisticsList.vue b/src/views/purchasesManager/goodsStatisticsList.vue
index d89f627..8cd0464 100644
--- a/src/views/purchasesManager/goodsStatisticsList.vue
+++ b/src/views/purchasesManager/goodsStatisticsList.vue
@@ -1,41 +1,84 @@
-<template>
- <div id="app">
- <div class="box">
- <el-input v-model="input" placeholder class="inp" />
- <el-button type="primary" @click="showDialog">鐢熸垚 cron</el-button>
- </div>
- <el-dialog title="鐢熸垚 cron" :visible.sync="showCron">
- <vcrontab :expression="expression" @hide="showCron=false" @fill="crontabFill" />
- </el-dialog>
- </div>
-</template>
-<script>
-import vcrontab from 'vcrontab'
+<!--<template>-->
+<!-- <div class="home">-->
+<!-- <h1>鍓嶇婕旂ずSignalR</h1>-->
+<!-- <input v-model="user" type="text">-->
+<!-- <input v-model="message" type="text">-->
+<!-- <button @click="sendAll">鍙戦�佸叏閮�</button>-->
+<!-- <button @click="sendOwn">瀵硅嚜宸卞彂閫�</button>-->
+<!-- <button @click="sendOther">瀵瑰叾浠栧彂閫�</button>-->
+<!-- <div>-->
+<!-- <ul v-for="(item, index) in messages" :key="index + 'itemMessage'">-->
+<!-- <li>{{ item.user }} says {{ item.message }}</li>-->
+<!-- </ul>-->
+<!-- </div>-->
+<!-- </div>-->
+<!--</template>-->
-export default {
- components: { vcrontab },
- data() {
- return {
- input: '',
- expression: '',
- showCron: false,
- cronExpression: '*/1 * * * *',
- form: {},
- formLabelWidth: '120px'
- // showCron: false
- }
- },
- methods: {
- crontabFill(value) {
- // 纭畾鍚庡洖浼犵殑鍊�
- this.input = value
- },
- showDialog() {
- this.expression = this.input
- // 浼犲叆鐨� cron 琛ㄨ揪寮忥紝鍙互鍙嶈В鏋愬埌 UI 涓�
- this.showCron = true
- }
- }
-}
-</script>
-}
+<!--<script>-->
+<!--// @ is an alias to /src-->
+<!--import * as signalR from '@aspnet/signalr'-->
+<!--export default {-->
+<!-- name: 'Home',-->
+<!-- components: {},-->
+<!-- data() {-->
+<!-- return {-->
+<!-- user: 's2', // 鐢ㄦ埛-->
+<!-- message: '22222', // 娑堟伅-->
+<!-- connection: '', // signalr杩炴帴-->
+<!-- messages: [] // 杩斿洖娑堟伅-->
+<!-- }-->
+<!-- },-->
+<!-- created: function() {-->
+<!-- const thisVue = this-->
+<!-- this.connection = new signalR.HubConnectionBuilder()-->
+<!-- .withUrl('http://121.196.36.24:8019/chatHub', {-->
+<!-- // skipNegotiation: true,-->
+<!-- // transport: signalR.HttpTransportType.WebSockets-->
+<!-- })-->
+<!-- .configureLogging(signalR.LogLevel.Information)-->
+<!-- .build()-->
+
+<!-- console.log(this.connection, 1)-->
+
+<!-- this.connection.on('ReceiveMessage', function(user, message) {-->
+<!-- debugger-->
+<!-- thisVue.messages.push({ user, message })-->
+<!-- console.log({ user, message })-->
+<!-- })-->
+<!-- this.connection.on('ReceiveCaller', function(message) {-->
+<!-- debugger-->
+<!-- const user = '鑷繁' // 杩欓噷涓轰簡push涓嶆姤閿欙紝鎴戝氨寮勪簡涓�涓粯璁ゅ�笺��-->
+<!-- thisVue.messages.push({ user, message })-->
+<!-- console.log({ user, message })-->
+<!-- })-->
+<!-- this.connection.start()-->
+<!-- },-->
+<!-- methods: {-->
+<!-- // 缁欏叏閮ㄥ彂閫佹秷鎭�-->
+<!-- sendAll: function() {-->
+<!-- this.connection-->
+<!-- .invoke('SendMessage', this.user, this.message)-->
+<!-- .catch(function(err) {-->
+<!-- return console.error(err)-->
+<!-- })-->
+<!-- },-->
+<!-- // 鍙粰鑷繁鍙戦�佹秷鎭�-->
+<!-- sendOwn: function() {-->
+<!-- this.connection-->
+<!-- .invoke('SendMessageCaller', this.message)-->
+<!-- .catch(function(err) {-->
+<!-- return console.error(err)-->
+<!-- })-->
+<!-- },-->
+
+<!-- // 缁欏叾浠栦汉鍛樺彂閫佹秷鎭�-->
+<!-- sendOther: function() {-->
+<!-- this.connection-->
+<!-- .invoke('SendMessageOther', this.user, this.message)-->
+<!-- .catch(function(err) {-->
+<!-- return console.error(err)-->
+<!-- })-->
+<!-- }-->
+<!-- }-->
+<!--}-->
+<!--</script>-->
diff --git a/src/views/purchasesManager/salesStatisticsList.vue b/src/views/purchasesManager/salesStatisticsList.vue
index e634736..05fca5c 100644
--- a/src/views/purchasesManager/salesStatisticsList.vue
+++ b/src/views/purchasesManager/salesStatisticsList.vue
@@ -1,746 +1,94 @@
<template>
<div>
- <div class="body" :style="{height:mainHeight+'px'}">
+ <!-- <input v-model="user" type="text">-->
+ <!-- <input v-model="message" type="text"><br>-->
+ <!-- <button @click="SendAll">鍙戦��</button>-->
+ <!-- <hr>-->
+ <!-- <ul>-->
+ <!-- <li v-for="(item, index) in msgList" :key="index">-->
+ <!-- {{ item.user }}: {{ item.msg }}-->
+ <!-- </li>-->
+ <!-- </ul>-->
- <div class="bodyTopButtonGroup">
- <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
- </div>
- <div class="bodyTopFormGroup">
- <el-form
- ref="form"
- :model="form"
- label-width="100px"
- inline
- style="display: flex;"
- >
- <div class="elForm">
- <el-form-item label="瀛樿揣缂栫爜" style=" display: flex;">
- <el-input v-model="form.OrgCode" placeholder="璇疯緭鍏�" style="width: 200px" />
- </el-form-item>
- <el-form-item label="瀛樿揣鍚嶇О" style=" display: flex;">
- <el-input v-model="form.OrgName" placeholder="璇疯緭鍏�" style="width: 200px" />
- </el-form-item>
- <!-- <el-form-item label="鍒涘缓浜哄憳" style=" display: flex;">-->
- <!-- <el-input v-model="form.UserName" style="width: 200px" placeholder="璇疯緭鍏�" />-->
- <!-- </el-form-item>-->
- <el-form-item label="棰勮浜よ揣鏃ユ湡" style="display: flex;font-size: 14px;align-items: center">
- <el-date-picker
- v-model="form.orderdate"
- type="daterange"
- range-separator="~"
- class="timeMini"
- size="mini"
- style="width: 200px;display: flex;line-height: 34px;height: 34px;"
- :clearable="false"
- start-placeholder="寮�濮嬫棩鏈�"
- end-placeholder="缁撴潫鏃ユ湡"
- />
- </el-form-item>
- </div>
- <div
- class="bodySearchReset"
- :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
- >
- <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
- <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
- </div>
- </el-form>
- <div
- class="bodyTopFormExpand"
- />
- </div>
- <div class="elTableDiv">
- <!-- <TableColumnSettings-->
- <!-- :list1="tableColumnSettingsArray"-->
- <!-- @tableColumnUpdate="tableColumnUpdate"-->
- <!-- />-->
- <el-table
- ref="tableDataRef"
- :key="tableTimeStampKey"
- class="tableFixed"
- :data="tableData"
- border
- :row-class-name="tableRowClassName"
- :style="{width: 100+'%',height:tableHeight+'px'}"
- highlight-current-row
- :height="tableHeight+'px'"
- :header-cell-style="this.$headerCellStyle"
- :cell-style="this.$cellStyle"
- >
- <!-- @sort-change="sortChange"-->
+ <button @click="onClickButton">
+ 鎵嬪姩鍙戦��
+ </button>
- <el-table-column
- type="index"
- width="50"
- label="搴忓彿"
- fixed
- />
- <el-table-column
- v-for="item in tableColumnSettingsArray"
- v-if="item.show"
- :key="item.id"
- :sortable="item.sortable"
- :prop="item.prop"
- :min-width="item.minWidth"
- :label="item.label"
- :width="item.width"
- show-tooltip-when-overflow
- :fixed="item.fixed?(item.fixed==='left'?'left':'right'):false"
- >
- <template slot-scope="{row}">
- <div v-if="!row[item.prop]">/</div>
- <div v-else>{{ row[item.prop] }}</div>
- </template>
- </el-table-column>
-
- <el-table-column
- fixed="right"
- label="鎿嶄綔"
- width="120"
- >
- <template slot-scope="{row}">
- <div class="operationClass">
- <el-tooltip class="item" effect="dark" content="缂栬緫" placement="top">
- <i
- :style="{color:$store.state.settings.theme}"
- class="el-icon-edit-outline"
- @click="edit('edit',row)"
- />
- </el-tooltip>
- <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top">
- <i :style="{color:$store.state.settings.theme}" class="el-icon-delete" @click="del(row.id)" />
- </el-tooltip>
- <!-- <el-button type="primary" size="mini" />-->
- <!-- <el-button type="danger" size="mini">鍒犻櫎</el-button>-->
-
- </div>
- </template>
- </el-table-column>
- </el-table>
- </div>
- <!--鍒嗛〉-->
- <pagination
- :total="total"
- :page.sync="form.page"
- :limit.sync="form.rows"
- align="right"
- layout="total ,prev, pager, next,sizes,jumper"
- popper-class="select_bottom"
- @pagination="getOrganizationSearch"
- />
- </div>
-
- <el-dialog
- v-el-drag-dialog
- :title="operation==='add'?'鏂板':'缂栬緫'"
- :visible.sync="dialogVisible"
- width="900px"
- top="15vh"
- :close-on-click-modal="false"
- @closed="handleClose"
- @close="handleClose"
- >
- <el-form ref="dialogForm" inline :rules="dialogFormRules" :model="dialogForm" label-width="100px">
- <el-form-item label="瀛樿揣缂栫爜" prop="partcode">
- <el-input v-model="dialogForm.partcode" :disabled="operation!=='add'" style="width: 200px" />
- </el-form-item>
- <el-form-item label="瀛樿揣鍚嶇О" prop="partname">
- <el-input v-model="dialogForm.partname" :disabled="operation!=='add'" style="width: 200px" />
- </el-form-item>
- <el-form-item label="瑙勬牸鍨嬪彿" prop="partspec">
- <el-input v-model="dialogForm.partspec" style="width: 200px" />
- </el-form-item>
- <el-form-item label="閿�鍞崟浣�" prop="saleUnit">
- <el-input v-model="dialogForm.saleUnit" style="width: 200px" />
- </el-form-item>
- <el-form-item label="鏁伴噺" prop="sum">
- <el-input v-model="dialogForm.sum" style="width: 200px" />
- </el-form-item>
- <el-form-item label="鏈�鏂板惈绋庡敭浠�" prop="newSale">
- <el-input v-model="dialogForm.newSale" style="width: 200px" />
- </el-form-item>
- <el-form-item label="绋庣巼%" prop="taxPercent">
- <el-input v-model="dialogForm.taxPercent" style="width: 200px" />
- </el-form-item>
- <el-form-item label="鍚◣鍗曚环" prop="newTaxPrice">
- <el-input v-model="dialogForm.newTaxPrice" style="width: 200px" />
- </el-form-item>
- <el-form-item label="閲戦" prop="money">
- <el-input v-model="dialogForm.money" style="width: 200px" />
- </el-form-item>
- <el-form-item label="鍚◣閲戦" prop="taxMoney">
- <el-input v-model="dialogForm.taxMoney" style="width: 200px" />
- </el-form-item>
-
- <el-form-item label="棰勮浜よ揣鏃ユ湡" prop="expectedDate" style="width: 200px" />
- <el-date-picker
- v-model="dialogForm.expectedDate"
- type="date"
- placeholder="閫夋嫨鏃ユ湡"
- />
- <!-- <el-input v-model="dialogForm.expectedDate" style="width: 200px" />-->
- </el-form-item>
- <el-form-item label="鐜板瓨閲�" prop="stockCount">
- <el-input v-model="dialogForm.stockCount" style="width: 200px" />
- </el-form-item>
- <el-form-item label="鐜板瓨閲忚鏄�" prop="stockDesc">
- <el-input v-model="dialogForm.stockDesc" type="textarea" style="width: 200px" />
- </el-form-item>
- <el-form-item label="澶囨敞" prop="notes">
- <el-input v-model="dialogForm.notes" type="textarea" style="width: 200px" />
- </el-form-item>
- <el-form-item label="閫�璐у師鍥�" prop="returnReason">
- <el-input v-model="dialogForm.returnReason" type="textarea" style="width: 200px" />
- </el-form-item>
-
- </el-form>
- <span slot="footer" class="dialog-footer">
- <div class="footerButton">
- <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
- <el-button
- v-waves
- type="primary"
- :loading="$store.state.app.buttonIsDisabled"
- :disabled="$store.state.app.buttonIsDisabled"
- @click="dialogVisibleConfirm"
- >纭� 瀹�</el-button>
- </div>
- </span>
- </el-dialog>
+ <div style="margin: 200px">{{ msg }}</div>
</div>
</template>
<script>
-import Pagination from '@/components/Pagination'
-import { AddUpdateOrganization, DeleteOrganization, OrganizationSearch, PrentOrganization } from '@/api/basicSettings'
-import { getCookie } from '@/utils/auth'
-import { validateCode } from '@/utils/global'
-import TableColumnSettings from '@/components/TableColumnSettings'
-import elDragDialog from '@/directive/el-drag-dialog' // base on element-ui
-import waves from '@/directive/waves/index.js' // 姘存尝绾规寚浠�
+import * as signalR from '@microsoft/signalr'
-// const SER_HZ = /^[\u4e00-\u9fa5]+$/
-// const SER_HZ = /^[a-zA-Z0-9_;,.<>() ]{0,}$/
export default {
- name: 'ZZJG',
- components: {
- Pagination, TableColumnSettings
- },
- directives: { elDragDialog, waves },
data() {
- const validateTypeCode = (rule, value, callback) => {
- if (!value) {
- return callback(new Error('璇烽�夋嫨涓婄骇'))
- } else {
- callback()
- }
- }
return {
- windowHeight: 0,
- windowWidth: 0,
- mainHeight: 0,
- tableHeight: 0,
- numvalue: 0,
- form: {
- OrgCode: '', // 缁勭粐鏋舵瀯浠g爜
- OrgName: '', // 缁勭粐鏋舵瀯鍚嶇О
- orderdate: '', // 鍗曟嵁鏃ユ湡
- prop: 'lm_date', // 鎺掑簭瀛楁
- order: 'desc', // 鎺掑簭瀛楁
- page: 1, // 绗嚑椤�
- rows: 20 // 姣忛〉澶氬皯鏉�
- },
-
- tableColumnSettingsArray: [
- { minWidth: 50, width: false, prop: 'id', label: 'id', id: 1, show: false, fixed: false, sortable: false }, // 闅愯棌鍒� show: false闅愯棌锛宼rue鏄剧ず
- // { minWidth: 25, width: 50, prop: 'RowNum', label: '搴忓彿', id: 2, show: true, fixed: 'left', sortable: false }, // custom
- {
- minWidth: 110,
- width: false,
- prop: 'partcode',
- label: '瀛樿揣缂栫爜',
- id: 2,
- show: true,
- fixed: false,
- sortable: true
- }, {
- minWidth: 110,
- width: false,
- prop: 'partname',
- label: '瀛樿揣鍚嶇О',
- id: 3,
- show: true,
- fixed: false,
- sortable: true
- },
- {
- minWidth: 110,
- width: false,
- prop: 'partspec',
- label: '瑙勬牸鍨嬪彿',
- id: 4,
- show: true,
- fixed: false,
- sortable: true
- },
- {
- minWidth: 110,
- width: false,
- prop: 'saleUnit',
- label: '閿�鍞崟浣�',
- id: 5,
- show: true,
- fixed: false,
- sortable: true
- },
- {
- minWidth: 110,
- width: false,
- prop: 'sum',
- label: '鏁伴噺',
- id: 6,
- show: true,
- fixed: false,
- sortable: true
- },
- {
- minWidth: 130,
- width: false,
- prop: 'newSale',
- label: '鏈�鏂板惈绋庡敭浠�',
- id: 7,
- show: true,
- fixed: false,
- sortable: true
- },
- {
- minWidth: 110,
- width: false,
- prop: 'taxPercent',
- label: '绋庣巼%',
- id: 8,
- show: true,
- fixed: false,
- sortable: true
- },
- {
- minWidth: 110,
- width: false,
- prop: 'newTaxPrice',
- label: '鍚◣鍗曚环',
- id: 9,
- show: true,
- fixed: false,
- sortable: true
- },
- {
- minWidth: 110,
- width: false,
- prop: 'money',
- label: '閲戦',
- id: 10,
- show: true,
- fixed: false,
- sortable: true
- },
- {
- minWidth: 110,
- width: false,
- prop: 'taxMoney',
- label: '鍚◣閲戦',
- id: 11,
- show: true,
- fixed: false,
- sortable: true
- },
- {
- minWidth: 130,
- width: false,
- prop: 'expectedDate',
- label: '棰勮浜よ揣鏃ユ湡',
- id: 12,
- show: true,
- fixed: false,
- sortable: true
- },
- {
- minWidth: 110,
- width: false,
- prop: 'stockCount',
- label: '鐜板瓨閲�',
- id: 13,
- show: true,
- fixed: false,
- sortable: true
- },
- {
- minWidth: 120,
- width: false,
- prop: 'stockDesc',
- label: '鐜板瓨閲忚鏄�',
- id: 13,
- show: true,
- fixed: false,
- sortable: true
- },
- {
- minWidth: 110,
- width: false,
- prop: 'notes',
- label: '澶囨敞',
- id: 13,
- show: true,
- fixed: false,
- sortable: true
- },
- {
- minWidth: 110,
- width: false,
- prop: 'returnReason',
- label: '閫�璐у師鍥�',
- id: 13,
- show: true,
- fixed: false,
- sortable: true
- }
- ],
- tableTimeStampKey: new Date().getTime(), // 琛ㄦ牸key
-
- total: 10,
- tableData: [
- { id: 1001, partcode: 201, partname: '涓绘満', partspec: '', saleUnit: '涓�', sum: 1000, newScale: 200000, taxPercent: '', newTaxPrice: 200000, money: 200000, taxMoney: 200000, expectedDate: '2023-04-04', stockCount: 300, stockDesc: '', notes: '', returnReason: '' },
- { id: 1002, partcode: 114, partname: '涓绘澘2', partspec: '#333', saleUnit: '涓�', sum: 1000, newScale: 100000, taxPercent: '', newTaxPrice: 100000, money: 100000, taxMoney: 100000, expectedDate: '2023-04-05', stockCount: 500, stockDesc: '', notes: '', returnReason: '' },
- { id: 1003, partcode: 108, partname: '鏄剧ず鍣�', partspec: '', saleUnit: '涓�', sum: 2000, newScale: 100000, taxPercent: '', newTaxPrice: 100000, money: 100000, taxMoney: 100000, expectedDate: '2023-04-05', stockCount: 600, stockDesc: '', notes: '', returnReason: '' },
- { id: 1004, partcode: 105, partname: '鏈虹', partspec: '', saleUnit: '涓�', sum: 1000, newScale: 20000, taxPercent: '', newTaxPrice: 20000, money: 20000, taxMoney: 20000, expectedDate: '2023-04-06', stockCount: 300, stockDesc: '', notes: '', returnReason: '' },
- { id: 1005, partcode: 103, partname: '纭洏', partspec: '', saleUnit: '涓�', sum: 1000, newScale: 60000, taxPercent: '', newTaxPrice: 60000, money: 60000, taxMoney: 60000, expectedDate: '2023-04-07', stockCount: 300, stockDesc: '', notes: '', returnReason: '' }
- ],
-
- dialogVisible: false,
- dialogForm: {
- partcode: '',
- partname: '',
- partspec: '',
- saleUnit: '',
- sum: '',
- newSale: '',
- taxPercent: '',
- newTaxPrice: '',
- money: '',
- taxMoney: '',
- expectedDate: '',
- stockCount: '',
- stockDesc: '',
- notes: '',
- returnReason: ''
- },
-
- operation: '',
- dialogFormRules: {
- partcode: [
- { required: true, validator: validateCode, trigger: ['blur', 'change'] }
- ],
- partname: [
- { required: true, message: '璇疯緭鍏ュ悕绉�', trigger: ['blur', 'change'] }
- ]
-
- }
-
+ // connection: '',
+ // user: '',
+ // message: '',
+ // msgList: []
+ msg: ''
}
},
- // watch: {
- // windowHeight(val) {
- // console.log('瀹炴椂灞忓箷楂樺害锛�', val, this.windowHeight)
- // },
- // windowWidth(val) {
- // if (val < 768) {
- // this.dialogWidth = '100%'
- // } else {
- // this.dialogWidth = '75%'
- // }
- // console.log('瀹炴椂灞忓箷瀹藉害锛�', val, this.windowHeight)
- // }
- // },
created() {
- // this.getOrganizationSearch()
+ // this.init()
},
- mounted() {
- window.addEventListener('resize', this.getHeight)
- this.getHeight()
- this.total = this.tableData.length
- },
- destroyed() {
-
- },
methods: {
- tableColumnUpdate(val, isCopyTrue) {
- if (isCopyTrue) {
- this.tableColumnSettingsArray = val
- }
- this.tableTimeStampKey = new Date().getTime()
- this.$refs.tableDataRef.doLayout()
- },
- async getOrganizationSearch() {
- const res = await OrganizationSearch(this.form)
- this.tableData = res.data
- this.total = res.count
- },
- // 鎺掑簭鏀瑰彉鏃�
- sortChange({ column, prop, order }) {
- if (order === 'descending') {
- order = 'desc'
- } else if (order === 'ascending') {
- order = 'asc'
- } else {
- order = 'desc'
- }
- this.form.order = order
- this.form.prop = prop
- this.getOrganizationSearch()
- },
- // 鏌ヨ
- search() {
- // this.getOrganizationSearch()
- },
- // 閲嶇疆
- reset() {
- this.form.OrgCode = ''
- this.form.OrgName = ''
- // this.form.OrgType = ''
- // this.form.UserName = ''
- // this.getOrganizationSearch()
- },
-
- // 鏂板鎸夐挳
- async add(operation) {
- this.operation = operation
- this.dialogVisible = true
-
- // const res = await getNewEncodingRules(getCookie('ruleCode'))
- // this.dialogForm.OrgCode = res.RightCode
- // this.numvalue = res.numvalue
- },
- // 淇敼鎸夐挳
- edit(operation, row) {
- this.operation = operation
- this.dialogVisible = true
- // if (row.description === 'F') {
- // this.dialogForm.OrgType = '宸ュ巶'
- // } else
- if (row.description === 'D') {
- this.dialogForm.OrgType = '閮ㄩ棬'
- } else if (row.description === 'W') {
- this.dialogForm.OrgType = '杞﹂棿'
- }
- // else if (row.description === 'K') {
- // this.dialogForm.OrgType = '绉戝'
- // } else if (row.description === 'L') {
- // this.dialogForm.OrgType = '鐢熶骇绾�'
- // }
- this.$nextTick(() => {
- this.changeRadio(this.dialogForm.OrgType)
- this.dialogForm.OrgCode = row.org_code
- this.dialogForm.OrgName = row.org_name
- this.dialogForm.SupUnit = row.parent_id
- })
- },
- // 鍒犻櫎鎸夐挳
- async del(id) {
- this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', {
- confirmButtonText: '纭畾',
- cancelButtonText: '鍙栨秷',
- type: 'warning'
- }).then(() => {
- DeleteOrganization({ orgid: id }).then(res => {
- if (res.code === '200') {
- this.$message.success('鍒犻櫎鎴愬姛!')
- if (this.form.page > 1 && this.tableData.length === 1) {
- this.form.page--
- }
- this.getOrganizationSearch()
- }
+ onClickButton() {
+ this.$signalr.invoke('SendMessage', 'xx')// 鐢ㄤ簬鎵嬪姩鍙戦�佹秷鎭殑鏂瑰紡
+ .catch(function(err) {
+ return console.error(err)
})
- }).catch(() => {
- this.$message.info('宸插彇娑堝垹闄�')
- })
- },
- // 瀵硅瘽妗嗗叧闂簨浠�
- handleClose() {
- this.dialogForm.OrgType = '閮ㄩ棬'
- this.dialogForm.OrgCode = ''
- this.dialogForm.OrgName = ''
- this.dialogForm.SupUnit = ''
- this.$refs.dialogForm.clearValidate()
- },
- // 瀵硅瘽妗嗗彇娑�
- dialogVisibleCancel() {
- this.dialogVisible = false
- },
- // 瀵硅瘽妗嗙‘璁�
- dialogVisibleConfirm() {
- this.$refs.dialogForm.validate(valid => {
- if (valid) {
- this.$store.state.app.buttonIsDisabled = true
- const data = {
- OrganType: this.dialogForm.OrgType === '閮ㄩ棬' ? 'D' : 'W',
- OrganCode: this.dialogForm.OrgCode,
- OrganName: this.dialogForm.OrgName,
- RightCode: '',
- numvalue: '',
- // RightCode: this.operation === 'add' ? getCookie('ruleCode') : '',
- // numvalue: this.operation === 'add' ? this.numvalue : '',
- SupUnit: this.dialogForm.OrgType === '閮ㄩ棬' ? '0' : this.dialogForm.SupUnit,
- OperType: this.operation === 'add' ? 'Add' : 'Update',
- Operator: getCookie('admin')
- }
-
- AddUpdateOrganization(data).then(res => {
- if (res.code === '200') {
- this.dialogVisible = false
- this.$message.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�')
- this.getOrganizationSearch()
- this.$store.state.app.buttonIsDisabled = false
- } else {
- this.$message.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�')
- this.$store.state.app.buttonIsDisabled = false
- }
- })
- }
- })
- },
- // 鑾峰彇椤甸潰楂樺害
- getHeight() {
- this.$nextTick(() => {
- this.mainHeight = window.innerHeight - 85
- this.tableHeight = this.mainHeight - 195
- if (window.innerHeight < 769) {
- this.tableHeight = this.tableHeight - 40
- }
- this.isIpad = window.innerHeight < 769 && window.innerWidth < 1367
- this.$refs.tableDataRef.doLayout()
- })
- },
- tableRowClassName({ row, rowIndex }) {
- return 'custom-row'
}
+ //
+ // init() {
+ // this.connection = new signalR.HubConnectionBuilder()
+ // .withUrl('http://121.196.36.24:8019/chatHub', {})
+ // .configureLogging(signalR.LogLevel.Error)
+ // .build()
+ // this.connection.on('ReceiveMessage', data => {
+ // this.msgList.push(data)
+ // })
+ //
+ // this.connection.start().then(() => {
+ // if (window.Notification) {
+ // if (Notification.permission === 'granted') {
+ // console.log('鍏佽閫氱煡')
+ // } else if (Notification.permission !== 'denied') {
+ // console.log('闇�瑕侀�氱煡鏉冮檺')
+ // Notification.requestPermission((permission) => {
+ // console.log('鏉冮檺閫氱煡', permission)
+ // })
+ // } else if (Notification.permission === 'denied') {
+ // console.log('鎷掔粷閫氱煡')
+ // }
+ // } else {
+ // console.error('娴忚鍣ㄤ笉鏀寔Notification')
+ // }
+ // console.log('杩炴帴鎴愬姛')
+ // })
+ //
+ // this.connection.on('SendAll', (res) => {
+ // console.log(res, '鏀跺埌娑堟伅')
+ // })
+ //
+ // // this.connection.start().then(() => {
+ // // this.connection.invoke('SendAll', '123', '鎴戣繛涓婂暒')
+ // // })
+ // },
+ // SendAll() {
+ // const params = {
+ // user: this.user,
+ // message: this.message
+ // }
+ // this.connection.invoke('SendAll', params)
+ // }
}
}
</script>
-<!--鍏叡椤甸潰鏍峰紡-->
-<style lang="scss" scoped>
-$main_color: #42b983;
-.el-icon-share, .el-icon-delete, .el-icon-edit-outline {
- color: $main_color;
- cursor: pointer;
-}
+<style></style>
-.el-icon-edit-outline {
- margin-right: 15px;
-}
-
-::v-deep .el-button--primary, .el-button--default, .el-button--info {
- height: 34px;
- display: flex;
- align-items: center;
- padding: 0 15px;
-}
-
-::v-deep .el-button--primary {
- //background-color: $main_color !important;
-}
-
-::v-deep .el-button--default {
- background-color: #f8f8fa;
- border: none;
-}
-
-::v-deep .el-input__inner {
- height: 34px;
- line-height: 34px;
- //color: #a7a7a7;
-}
-
-::v-deep .el-dialog__body {
- padding: 20px 100px !important;
-}
-
-::v-deep .dialogVisibleRoles .el-dialog__body {
- padding: 20px 20px !important;
-}
-
-::v-deep .importPickerClass .el-dialog__body {
- padding: 20px 20px !important;
-}
-
-::v-deep .el-dialog__footer {
- display: flex;
- justify-content: flex-end;
-}
-
-::v-deep .el-table .caret-wrapper {
- transform: scale(0.8);
-}
-
-::v-deep .cell {
- display: flex;
- align-items: center;
- justify-content: space-between;
-}
-
-::v-deep .el-table::before {
- height: 0;
-}
-
-::v-deep .el-table__body-wrapper {
- background-color: #f8f8fa;
-}
-
-::v-deep .el-table__body .el-table__row.hover-row td {
- background-color: #eaecef;
-}
-
-::v-deep .el-form--inline .el-form-item__label {
- color: #a7a7a7;
-}
-
-.body ::v-deep .el-divider {
- border: 1px solid #eee;
- width: 99%;
- margin: 10px auto;
-}
-
-.body ::v-deep .el-form-item {
- margin-bottom: 0;
-}
-
-.tableFixed {
- ::v-deep .el-table__fixed-right {
- height: 100% !important;
- }
-
- ::v-deep .el-table__fixed {
- height: 100% !important;
- }
-}
-
-//::v-deep .cell {
-// display: flex;
-// flex-wrap: nowrap;
-//}
-//
-//::v-deep .has-gutter .cell {
-// display: flex;
-// flex-wrap: nowrap;
-//}
-</style>
-<style>
-.osloading {
- font-size: 30px;
-}
-
-.el-table .custom-row {
- background: #f8f8fa;
-}
-</style>
--
Gitblit v1.9.3