From 3a7cbae4f79e0043b9a75c9e419a841fc220c35a Mon Sep 17 00:00:00 2001 From: MrShi <1878285526@qq.com> Date: 星期三, 28 二月 2024 11:23:33 +0800 Subject: [PATCH] mrshi --- h5/pages.json | 8 h5/pages/appointmentDetails/appointmentDetails.vue | 82 +++++ admin/src/views/business/strandedPersonnel.vue | 47 ++- admin/src/views/business/retention.vue | 16 + admin/package-lock.json | 160 ++++++------ admin/vue.config.js | 4 h5/package-lock.json | 14 + admin/src/views/business/memberCard.vue | 11 admin/src/views/index.vue | 9 h5/package.json | 6 admin/src/views/business/userAction.vue | 118 +++++++- h5/pages/cropping/cropping.vue | 280 +++++++++++++++++++++ admin/src/views/business/visitEvent.vue | 2 admin/src/views/business/deviceEvent.vue | 6 14 files changed, 627 insertions(+), 136 deletions(-) diff --git a/admin/package-lock.json b/admin/package-lock.json index 697ba46..50d988a 100644 --- a/admin/package-lock.json +++ b/admin/package-lock.json @@ -1819,63 +1819,6 @@ "integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=", "dev": true }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "optional": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "optional": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "optional": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "optional": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "optional": true - }, - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "optional": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, "ssri": { "version": "8.0.1", "resolved": "https://registry.npm.taobao.org/ssri/download/ssri-8.0.1.tgz?cache=0&sync_timestamp=1617826515595&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fssri%2Fdownload%2Fssri-8.0.1.tgz", @@ -1883,28 +1826,6 @@ "dev": true, "requires": { "minipass": "^3.1.1" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "optional": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "vue-loader-v16": { - "version": "npm:vue-loader@16.8.3", - "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz", - "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==", - "dev": true, - "optional": true, - "requires": { - "chalk": "^4.1.0", - "hash-sum": "^2.0.0", - "loader-utils": "^2.0.0" } } } @@ -13568,6 +13489,87 @@ } } }, + "vue-loader-v16": { + "version": "npm:vue-loader@16.8.3", + "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz", + "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==", + "dev": true, + "optional": true, + "requires": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "optional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "optional": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "optional": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "optional": true + }, + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "optional": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "optional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "vue-property-decorator": { "version": "8.5.1", "resolved": "https://registry.npmjs.org/vue-property-decorator/-/vue-property-decorator-8.5.1.tgz", diff --git a/admin/src/views/business/deviceEvent.vue b/admin/src/views/business/deviceEvent.vue index 6230072..7e5b916 100644 --- a/admin/src/views/business/deviceEvent.vue +++ b/admin/src/views/business/deviceEvent.vue @@ -55,9 +55,9 @@ > <el-table-column prop="userType" label="浜哄憳绫诲瀷" min-width="100px"> <template slot-scope="{row}"> - <span v-if="row.userType === 0">鍔冲姟璁垮</span> - <span v-if="row.userType === 1">鏅�氳瀹�</span> - <span v-if="row.userType === 2">鍐呴儴浜哄憳</span> + <span v-if="row.personType === 0">鍔冲姟璁垮</span> + <span v-if="row.personType === 1">鏅�氳瀹�</span> + <span v-if="row.personType === 2">鍐呴儴浜哄憳</span> </template> </el-table-column> <el-table-column prop="personName" label="濮撳悕" min-width="100px"></el-table-column> diff --git a/admin/src/views/business/memberCard.vue b/admin/src/views/business/memberCard.vue index a9a5b53..707fcb0 100644 --- a/admin/src/views/business/memberCard.vue +++ b/admin/src/views/business/memberCard.vue @@ -8,8 +8,8 @@ <el-form-item label="濮撳悕/鎵嬫満鍙�" prop="keyword"> <el-input v-model="searchForm.keyword" placeholder="璇疯緭鍏ュ憳宸ュ鍚�/鎵嬫満鍙�" @keypress.enter.native="search"></el-input> </el-form-item> - <el-form-item label="鐢ㄦ埛绫诲瀷" prop="type"> - <el-select v-model="searchForm.type" placeholder="璇烽�夋嫨"> + <el-form-item label="鐢ㄦ埛绫诲瀷" prop="memberType"> + <el-select v-model="searchForm.memberType" placeholder="璇烽�夋嫨"> <el-option label="鍔冲姟浜哄憳" :value="0"></el-option> <el-option label="鍐呴儴鍛樺伐" :value="2"></el-option> </el-select> @@ -53,8 +53,8 @@ </el-table-column> <el-table-column label="鐢ㄦ埛绫诲瀷" min-width="100px"> <template slot-scope="{row}"> - <span v-if="row.type === 0">鍔冲姟璁垮</span> - <span v-if="row.type === 2">鍐呴儴浜哄憳</span> + <span v-if="row.memberType === 0">鍔冲姟璁垮</span> + <span v-if="row.memberType === 2">鍐呴儴浜哄憳</span> </template> </el-table-column> <el-table-column prop="memberName" label="鍛樺伐濮撳悕" min-width="100px"></el-table-column> @@ -102,7 +102,8 @@ searchForm: { code: '', keyword: '', - status: '' + status: '', + memberType: '' } } }, diff --git a/admin/src/views/business/retention.vue b/admin/src/views/business/retention.vue index 6b20da4..3d9dbdb 100644 --- a/admin/src/views/business/retention.vue +++ b/admin/src/views/business/retention.vue @@ -44,7 +44,12 @@ @selection-change="handleSelectionChange" > <el-table-column type="selection" width="55"></el-table-column> - <el-table-column prop="companyName" label="鍏徃/缁勭粐" min-width="100px"></el-table-column> + <el-table-column prop="companyName" label="鍏徃/缁勭粐" min-width="100px"> + <template slot-scope="{row}"> + <span v-if="row.type === 2 || row.type === 0">{{row.companyName}}</span> + <span v-else>{{row.visitCompanyName}}</span> + </template> + </el-table-column> <el-table-column prop="type" label="浜哄憳绫诲瀷" min-width="100px"> <template slot-scope="{row}"> <span v-if="row.type === 0">鍔冲姟璁垮</span> @@ -54,8 +59,13 @@ </el-table-column> <el-table-column prop="name" label="濮撳悕" min-width="100px"></el-table-column> <el-table-column prop="phone" label="鎵嬫満鍙�" min-width="100px"></el-table-column> - <el-table-column prop="idcardNo" label="韬唤璇佸彿" min-width="130px"></el-table-column> - <el-table-column prop="deviceName" label="杩涘満闂ㄧ" min-width="100px"></el-table-column> + <el-table-column prop="idcardDecode" label="韬唤璇佸彿" min-width="130px"></el-table-column> + <el-table-column label="杩涘満闂ㄧ" min-width="100px"> + <template slot-scope="{row}"> + <span v-if="row.type === 1">-</span> + <span v-else>{{row.deviceName}}</span> + </template> + </el-table-column> <el-table-column prop="eventDate" label="杩涘満鏃堕棿" min-width="100px"></el-table-column> <el-table-column label="浜鸿劯鐓х墖" min-width="100px"> <template slot-scope="{row}"> diff --git a/admin/src/views/business/strandedPersonnel.vue b/admin/src/views/business/strandedPersonnel.vue index 904b9a6..4ba97d3 100644 --- a/admin/src/views/business/strandedPersonnel.vue +++ b/admin/src/views/business/strandedPersonnel.vue @@ -42,25 +42,29 @@ </template> </el-table-column> <el-table-column prop="inDate" label="鍏ュ満鏃堕棿" min-width="100px"></el-table-column> - <el-table-column prop="endtime" label="鎺堟潈鍒版湡鏃堕棿" min-width="100px"></el-table-column> - <el-table-column prop="timeOut" label="瓒呮椂鏃堕暱" min-width="100px"></el-table-column> + <el-table-column prop="outDate" label="鎺堟潈鍒版湡鏃堕棿" min-width="100px"></el-table-column> + <el-table-column label="瓒呮椂鏃堕暱" min-width="100px"> + <template slot-scope="{row}"> + <span>{{row.timeOut.toString().replace('-', '')}}</span> + </template> + </el-table-column> <el-table-column label="鐘舵��" min-width="100px"> <template slot-scope="{row}"> <span v-if="row.outStatus === 0">鏈秴鏃�</span> - <span v-else-if="row.timeOut === 1">宸茶秴鏃�</span> - <span v-else-if="row.timeOut === 2">鍗冲皢瓒呮椂</span> + <span style="color: red;" v-else-if="row.outStatus === 1">宸茶秴鏃�</span> + <span v-else-if="row.outStatus === 2">鍗冲皢瓒呮椂</span> </template> </el-table-column> -<!-- <el-table-column--> -<!-- v-if="containPermissions(['business:member:update', 'business:member:delete'])"--> -<!-- label="鎿嶄綔"--> -<!-- min-width="120"--> -<!-- fixed="right"--> -<!-- >--> -<!-- <template slot-scope="{row}">--> -<!-- <el-button type="text" icon="el-icon-edit" v-permissions="['business:member:update']" @click="thaw(row.id)">绂诲巶</el-button>--> -<!-- </template>--> -<!-- </el-table-column>--> + <el-table-column + v-if="containPermissions(['business:member:update', 'business:member:delete'])" + label="鎿嶄綔" + min-width="120" + fixed="right" + > + <template slot-scope="{row}"> + <el-button type="text" icon="el-icon-edit" v-permissions="['business:member:update']" @click="departure(scope.row.id)">绂诲巶</el-button> + </template> + </el-table-column> </el-table> <pagination @size-change="handleSizeChange" @@ -77,6 +81,7 @@ import TableLayout from '@/layouts/TableLayout' import Pagination from '@/components/common/Pagination' import { findAllList } from '@/api/system/common' +import { level } from '@/api/business/staging' export default { name: 'strandedPersonnel', extends: BaseTable, @@ -104,6 +109,20 @@ this.getUser() }, methods: { + departure(id) { + this.$confirm('纭畾绂诲満鍚�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + level(id) + .then(res => { + this.search() + }) + }).catch(() => { + + }); + }, // thaws () { // if (this.tableData.selectedRows.length === 0) return this.$message.warning('鑷冲皯閫夋嫨涓�椤瑰唴瀹�') // const ids = this.tableData.selectedRows.map(item => { diff --git a/admin/src/views/business/userAction.vue b/admin/src/views/business/userAction.vue index 108984f..29c359f 100644 --- a/admin/src/views/business/userAction.vue +++ b/admin/src/views/business/userAction.vue @@ -2,11 +2,52 @@ <TableLayout :permissions="['business:useraction:query']"> <!-- 鎼滅储琛ㄥ崟 --> <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> - <el-form-item label="绫诲瀷" prop="type"> - <el-input v-model="searchForm.type" placeholder="璇疯緭鍏ョ被鍨�" @keypress.enter.native="search"></el-input> + <el-form-item label="鎿嶄綔浜哄悕绉�" prop="createName"> + <el-input v-model="searchForm.createName" placeholder="璇疯緭鍏ユ搷浣滀汉鍚嶇О" @keypress.enter.native="search"></el-input> </el-form-item> - <el-form-item label="鎿嶄綔鍓嶇姸鎬�" prop="beforeStatus"> - <el-input v-model="searchForm.beforeStatus" placeholder="璇疯緭鍏ユ搷浣滃墠鐘舵��" @keypress.enter.native="search"></el-input> + <el-form-item label="鎿嶄綔瀵硅薄" prop="memberName"> + <el-input v-model="searchForm.memberName" placeholder="璇疯緭鍏ユ搷浣滃璞�" @keypress.enter.native="search"></el-input> + </el-form-item> + <el-form-item label="鎵�灞炲叕鍙�" prop="companyName"> + <el-input v-model="searchForm.companyName" placeholder="璇疯緭鍏ユ墍灞炲叕鍙�" @keypress.enter.native="search"></el-input> + </el-form-item> + <el-form-item label="浜哄憳绫诲瀷" prop="memberType"> + <el-select v-model="searchForm.memberType" placeholder="璇烽�夋嫨"> + <el-option label="鍔冲姟璁垮" :value="0"></el-option> + <el-option label="鏅�氳瀹�" :value="1"></el-option> + <el-option label="鍐呴儴浜哄憳" :value="2"></el-option> + </el-select> + </el-form-item> + <el-form-item label="鎵嬫満鍙�" prop="mobile"> + <el-input v-model="searchForm.mobile" placeholder="璇疯緭鍏ユ墜鏈哄彿" @keypress.enter.native="search"></el-input> + </el-form-item> + <el-form-item label="鍘嗗彶璐﹀彿鐘舵��" prop="beforeStatus"> + <el-select v-model="searchForm.beforeStatus" placeholder="璇烽�夋嫨"> + <el-option label="瑙e喕" :value="0"></el-option> + <el-option label="鍐荤粨" :value="1"></el-option> + <el-option label="鎷夐粦" :value="2"></el-option> + <el-option label="鎭㈠" :value="3"></el-option> + <el-option label="璁句负鎷滆浜�" :value="4"></el-option> + <el-option label="鍙栨秷鎷滆浜�" :value="5"></el-option> + <el-option label="璁句负楂樼骇瀹℃壒浜�" :value="6"></el-option> + <el-option label="鍙栨秷楂樼骇瀹℃壒浜�" :value="7"></el-option> + <el-option label="鎵嬪姩绂诲満" :value="8"></el-option> + <el-option label="鍒犻櫎" :value="9"></el-option> + </el-select> + </el-form-item> + <el-form-item label="鎿嶄綔绫诲瀷" prop="type"> + <el-select v-model="searchForm.type" placeholder="璇烽�夋嫨"> + <el-option label="瑙e喕" :value="0"></el-option> + <el-option label="鍐荤粨" :value="1"></el-option> + <el-option label="鎷夐粦" :value="2"></el-option> + <el-option label="鎭㈠" :value="3"></el-option> + <el-option label="璁句负鎷滆浜�" :value="4"></el-option> + <el-option label="鍙栨秷鎷滆浜�" :value="5"></el-option> + <el-option label="璁句负楂樼骇瀹℃壒浜�" :value="6"></el-option> + <el-option label="鍙栨秷楂樼骇瀹℃壒浜�" :value="7"></el-option> + <el-option label="鎵嬪姩绂诲満" :value="8"></el-option> + <el-option label="鍒犻櫎" :value="9"></el-option> + </el-select> </el-form-item> <section> <el-button type="primary" @click="search">鎼滅储</el-button> @@ -16,18 +57,60 @@ <!-- 琛ㄦ牸鍜屽垎椤� --> <template v-slot:table-wrap> <el-table - v-loading="isWorking.search" - :data="tableData.list" - stripe + v-loading="isWorking.search" + :data="tableData.list" + stripe > - <el-table-column prop="editDate" label="鏇存柊鏃堕棿" min-width="100px"></el-table-column> - <el-table-column prop="type" label="绫诲瀷 0瑙e喕 1鍐荤粨 2鎷夐粦 3鎭㈠ 4璁句负鎷滆浜� 5鍙栨秷鎷滆浜� 6璁句负楂樼骇瀹℃壒浜� 7鍙栨秷楂樼骇瀹℃壒浜� 8鎵嬪姩绂诲満 9鍒犻櫎" min-width="100px"></el-table-column> - <el-table-column prop="beforeStatus" label="鎿嶄綔鍓嶇姸鎬� 0瑙e喕 1鍐荤粨 2鎷夐粦 3鎭㈠ 4璁句负鎷滆浜� 5鍙栨秷鎷滆浜� 6璁句负楂樼骇瀹℃壒浜� 7鍙栨秷楂樼骇瀹℃壒浜� 8鎵嬪姩绂诲満 9鍒犻櫎" min-width="100px"></el-table-column> + <el-table-column prop="createName" label="鎿嶄綔浜哄憳"></el-table-column> + <el-table-column prop="memberName" label="鎿嶄綔瀵硅薄"></el-table-column> + <el-table-column prop="companyName" label="鎵�灞炲叕鍙�"> + <template slot-scope="{row}"> + <span v-if="row.memberType === '1'">{{row.visitCompanyName}}</span> + <span v-else>{{row.companyName}}</span> + </template> + </el-table-column> + <el-table-column label="浜哄憳绫诲瀷"> + <template slot-scope="{row}"> + <span v-if="row.memberType === '0'">鍔冲姟璁垮</span> + <span v-if="row.memberType === '1'">鏅�氳瀹�</span> + <span v-if="row.memberType === '2'">鍐呴儴浜哄憳</span> + </template> + </el-table-column> + <el-table-column prop="mobile" label="鎵嬫満鍙�"></el-table-column> + <el-table-column label="鍘嗗彶鐘舵��"> + <template slot-scope="{row}"> + <span v-if="row.beforeStatus === 0">瑙e喕</span> + <span v-if="row.beforeStatus === 1">鍐荤粨</span> + <span v-if="row.beforeStatus === 2">鎷夐粦</span> + <span v-if="row.beforeStatus === 3">鎭㈠</span> + <span v-if="row.beforeStatus === 4">璁句负鎷滆浜�</span> + <span v-if="row.beforeStatus === 5">鍙栨秷鎷滆浜�</span> + <span v-if="row.beforeStatus === 6">璁句负楂樼骇瀹℃壒浜�</span> + <span v-if="row.beforeStatus === 7">鍙栨秷楂樼骇瀹℃壒浜�</span> + <span v-if="row.beforeStatus === 8">鎵嬪姩绂诲満</span> + <span v-if="row.beforeStatus === 8">鍒犻櫎</span> + </template> + </el-table-column> + <el-table-column label="鎿嶄綔"> + <template slot-scope="{row}"> + <span v-if="row.type === 0">瑙e喕</span> + <span v-if="row.type === 1">鍐荤粨</span> + <span v-if="row.type === 2">鎷夐粦</span> + <span v-if="row.type === 3">鎭㈠</span> + <span v-if="row.type === 4">璁句负鎷滆浜�</span> + <span v-if="row.type === 5">鍙栨秷鎷滆浜�</span> + <span v-if="row.type === 6">璁句负楂樼骇瀹℃壒浜�</span> + <span v-if="row.type === 7">鍙栨秷楂樼骇瀹℃壒浜�</span> + <span v-if="row.type === 8">鎵嬪姩绂诲満</span> + <span v-if="row.type === 8">鍒犻櫎</span> + </template> + </el-table-column> + <el-table-column prop="createDate" label="鎿嶄綔鏃堕棿"></el-table-column> </el-table> <pagination - @size-change="handleSizeChange" - @current-change="handlePageChange" - :pagination="tableData.pagination" + @size-change="handleSizeChange" + @current-change="handlePageChange" + :pagination="tableData.pagination" > </pagination> </template> @@ -46,8 +129,13 @@ return { // 鎼滅储 searchForm: { - type: '', - beforeStatus: '' + createName: '', + memberName: '', + companyName: '', + memberType: '', + mobile: '', + beforeStatus: '', + type: '' } } }, diff --git a/admin/src/views/business/visitEvent.vue b/admin/src/views/business/visitEvent.vue index ced0982..4ef5aa8 100644 --- a/admin/src/views/business/visitEvent.vue +++ b/admin/src/views/business/visitEvent.vue @@ -57,7 +57,7 @@ <el-table-column prop="beVisitedPersonName" label="琚浜�" min-width="100px"></el-table-column> <el-table-column prop="beVisitedPersonOrg" label="琚浜虹粍缁�" min-width="100px"></el-table-column> <el-table-column prop="eventTypeName" label="浜嬩欢绫诲瀷" min-width="100px"></el-table-column> - <el-table-column label="鎶撴媿鍥緐ri" min-width="100px"> + <el-table-column label="鎶撴媿鍥剧墖" min-width="100px"> <template slot-scope="{row}"> <el-image v-if="row.captureUrlFull!=null" style="width: 80px; height: 80px" diff --git a/admin/src/views/index.vue b/admin/src/views/index.vue index 31b1e0c..81d1978 100644 --- a/admin/src/views/index.vue +++ b/admin/src/views/index.vue @@ -64,16 +64,15 @@ label="璁垮鍏徃"> </el-table-column> <el-table-column - prop="address" label="浜哄憳绫诲瀷"> <template slot-scope="{row}"> - <span v-if="row.memberType === 0">鍔冲姟璁垮</span> - <span v-if="row.memberType === 1">鏅�氳瀹�</span> - <span v-if="row.memberType === 2">鍐呴儴浜哄憳</span> + <span v-if="row.type === 0">鍔冲姟璁垮</span> + <span v-if="row.type === 1">鏅�氳瀹�</span> + <span v-if="row.type === 2">鍐呴儴浜哄憳</span> </template> </el-table-column> <el-table-column - prop="endtime" + prop="outDate" label="鎺堟潈鍒版湡鏃堕棿"> </el-table-column> <el-table-column diff --git a/admin/vue.config.js b/admin/vue.config.js index 80cc160..27c1e78 100644 --- a/admin/vue.config.js +++ b/admin/vue.config.js @@ -13,9 +13,9 @@ // http://192.168.0.134:10028 浠诲悍 // http://192.168.0.110:10013 纾婄 // http://192.168.0.132:10013 甯呭摜 - // http://192.168.0.129:10013 钀嶅 + // http://192.168.0.126:10033 钀嶅 // https://dmtest.ahapp.net/admin_api 娴嬭瘯鏈� - target: 'http://192.168.0.126:10033', + target: 'http://192.168.0.129:10028', changeOrigin: true, pathRewrite: { [`^${[process.env.VUE_APP_API_PREFIX]}`]: '' diff --git a/h5/package-lock.json b/h5/package-lock.json index a356030..e16365b 100644 --- a/h5/package-lock.json +++ b/h5/package-lock.json @@ -1,7 +1,19 @@ { - "requires": true, + "name": "鏀寔鍒嗛〉Picker", + "version": "1.0", "lockfileVersion": 1, + "requires": true, "dependencies": { + "qrcodejs2": { + "version": "0.0.2", + "resolved": "https://registry.npmmirror.com/qrcodejs2/-/qrcodejs2-0.0.2.tgz", + "integrity": "sha512-+Y4HA+cb6qUzdgvI3KML8GYpMFwB24dFwzMkS/yXq6hwtUGNUnZQdUnksrV1XGMc2mid5ROw5SAuY9XhI3ValA==" + }, + "uniapp-qrcode": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/uniapp-qrcode/-/uniapp-qrcode-1.0.2.tgz", + "integrity": "sha512-jcWwWz4yXsO7if/+78MMXj5VUdZTLu2D6L/IKb4mJkIw87oF11pO3WS/jS27SUcPCrX/BKcir5a2R1uvkaoR9g==" + }, "uview-ui": { "version": "2.0.36", "resolved": "https://registry.npmjs.org/uview-ui/-/uview-ui-2.0.36.tgz", diff --git a/h5/package.json b/h5/package.json index c24d989..dcafdae 100644 --- a/h5/package.json +++ b/h5/package.json @@ -16,5 +16,9 @@ "鍓嶇缁勪欢", "閫氱敤缁勪欢" ] + }, + "dependencies": { + "qrcodejs2": "0.0.2", + "uniapp-qrcode": "^1.0.2" } -} \ No newline at end of file +} diff --git a/h5/pages.json b/h5/pages.json index 1ad3def..99f6cee 100644 --- a/h5/pages.json +++ b/h5/pages.json @@ -111,6 +111,14 @@ "navigationBarTitleText" : "棰勭害璇︽儏", "enablePullDownRefresh" : false } + }, + { + "path" : "pages/cropping/cropping", + "style" : + { + "navigationBarTitleText" : "鍥剧墖瑁佸壀", + "enablePullDownRefresh" : false + } } ], "subPackages": [ diff --git a/h5/pages/appointmentDetails/appointmentDetails.vue b/h5/pages/appointmentDetails/appointmentDetails.vue index 83d08c7..a3bc209 100644 --- a/h5/pages/appointmentDetails/appointmentDetails.vue +++ b/h5/pages/appointmentDetails/appointmentDetails.vue @@ -1,7 +1,7 @@ <template> <view class="box"> <view class="box_head"> - <image src="@/static/logo@2x.png" mode="widthFix"></image> + <canvas class="box_head_qrcode" canvas-id="img"></canvas> <text class="box_head_a" v-if="info.status === 0">璁垮棰勭害寰呭鏍�</text> <text class="box_head_a" style="color: ;" v-if="info.status === 2">璁垮棰勭害瀹℃牳閫氳繃</text> <text class="box_head_a" v-if="info.status === 3">璁垮棰勭害瀹℃牳涓嶉�氳繃</text> @@ -11,14 +11,15 @@ </view> <view class="box_list"> <view class="box_list_label">鎷滆淇℃伅</view> + <view class="box_list_tips">璇锋敞鎰忔煡鐪嬪嚭鍏ラ棬绂佷笅鍙戞儏鍐碉紝濡傝嫢涓嬪彂澶辫触闇�閲嶆柊鐢宠</view> <view class="box_list_item"> - <view class="box_list_item_label">鎷滆鍛樺伐锛�</view> + <view class="box_list_item_label">琚浜哄憳锛�</view> <view class="box_list_item_val">{{info.visitUserName}}</view> </view> - <view class="box_list_item"> + <!-- <view class="box_list_item"> <view class="box_list_item_label">杞︾墝鍙凤細</view> <view class="box_list_item_val">{{info.carNos}}</view> - </view> + </view> --> <view class="box_list_item"> <view class="box_list_item_label">鎷滆浜嬬敱锛�</view> <view class="box_list_item_val">{{info.visitReason}}</view> @@ -31,19 +32,38 @@ <view class="box_list_item_label">璁块棶闂ㄧ锛�</view> <view class="box_list_item_val" v-if="info.doorGroupName && info.doorGroupName.length > 0">{{info.doorGroupName.join('銆�')}}</view> </view> + <view class="box_list_item"> + <view class="box_list_item_label">涓昏瀹細</view> + <view class="box_list_item_val"> + {{info.name}} {{info.phone}} + </view> + </view> <view class="box_list_item" v-for="(item, index) in info.withVisitsList" :key="index"> <view class="box_list_item_label">闅忚浜哄憳{{index + 1}}锛�</view> - <view class="box_list_item_val">{{item.name}} {{item.phone}}</view> + <view class="box_list_item_val"> + {{item.name}} {{item.phone}} + <view class="box_list_item_val_btn" v-if="[2,5,7,8,9].includes(item.status)"> + <u-button text="鏌ョ湅浜岀淮鐮�" size="mini" @click="seeQrCode(item)" type="primary"></u-button> + </view> + </view> </view> </view> + <u-popup :show="show" mode="center" @close="close"> + <view class="qrocde"> + <canvas class="qrcode_img" canvas-id="img1"></canvas> + </view> + </u-popup> </view> </template> <script> + import wxcode from 'uniapp-qrcode' + export default { data() { return { - info: {} + info: {}, + show: false }; }, onLoad(option) { @@ -51,8 +71,26 @@ .then(res => { if (res.code === 200) { this.info = res.data + if (res.data.qrcode) { + wxcode.qrcode('img', res.data.qrcode, 320, 320) + } } }) + }, + methods: { + close() { + this.show = false + }, + seeQrCode(code) { + if (code.qrcode) { + this.show = true + this.$nextTick(() => { + wxcode.qrcode('img1', code.qrcode, 300, 300) + }) + } else { + uni.showToast({ title: '鏆傛棤浜岀淮鐮�', icon: 'none' }) + } + } } } </script> @@ -64,6 +102,17 @@ <style lang="scss" scoped> .box { width: 100%; + .qrocde { + width: 300rpx; + height: 300rpx; + display: flex; + align-items: center; + justify-content: center; + .qrcode_img { + width: 100%; + height: 100%; + } + } .box_head { width: 100%; padding: 40rpx 0; @@ -73,7 +122,7 @@ align-items: center; justify-content: center; flex-direction: column; - image { + .box_head_qrcode { width: 320rpx; height: 320rpx; } @@ -96,6 +145,19 @@ background-color: #ffffff; padding: 40rpx 30rpx; box-sizing: border-box; + .box_list_tips { + width: 100%; + height: 52rpx; + padding: 0 20rpx; + box-sizing: border-box; + line-height: 52rpx; + background-color: rgba(224, 49, 42, 0.06); + font-weight: 400; + font-size: 24rpx; + color: #E0312A; + border-radius: 4rpx; + margin: 30rpx 0; + } .box_list_label { font-size: 32rpx; font-weight: 500; @@ -117,6 +179,12 @@ font-family: PingFangSC, PingFang SC; font-weight: 400; color: #333333; + display: flex; + align-items: center; + .box_list_item_val_btn { + width: 140rpx; + margin-left: 15rpx; + } } } } diff --git a/h5/pages/cropping/cropping.vue b/h5/pages/cropping/cropping.vue new file mode 100644 index 0000000..cd95adc --- /dev/null +++ b/h5/pages/cropping/cropping.vue @@ -0,0 +1,280 @@ +<template> + <view class="settingHeadImage" @touchstart="onTouchstart" @touchmove.stop.prevent="onTouchmove" @touchend="touchE"> + <!-- 钂欏眰 --> + <canvas class="pre-canvas" canvas-id="firstCanvas" :style="{ width: 100 + 'vw', height: 100 + 'vh' }"></canvas> + <!-- img棰勮 --> + <view class="preImage" :style="{ width: preImgW + 'px' }"> + <canvas canvas-id="mycanvas" class="pre-i" + :style="{ width: preImgW + 'px', height: preImgH + 'px', transform: `translate(${x}px,${y}px)` }"></canvas> + </view> + <!-- 宸ュ叿 --> + <view class="setting-btns"><text @click="onCrop">纭畾</text></view> + </view> +</template> + +<script> + export default { + data() { + return { + maxW: 250, // 鏈�澶у搴� + maxH: 250, + screenWidth: '', // 灞忓箷瀹� + screenHeight: '', + xToTop: 0, // x鏂瑰悜璺濈椤堕儴璺濈 + scale: 1, // 缂╂斁 + preSrc: '', + preImgW: '', + preImgH: '', + x: 0, + y: 0, + oldx: 0, + oldy: 0, + isMove: false, + start: { + left: 0, + top: 0 + } + }; + }, + computed: {}, + onLoad(option) { + // 閫夋嫨鐓х墖淇℃伅 + let data = JSON.parse(decodeURIComponent(option.item)); + const query = uni.createSelectorQuery(); + query.select('.settingHeadImage').boundingClientRect(); + query.exec(res => { + // 璁剧疆灞忓箷澶у皬 + this.screenWidth = res[0].width; + this.screenHeight = res[0].height; + // 璁剧疆鍥惧儚鍩哄噯鍊硷紝鍥惧儚鍩哄噯鍊兼寜灞忓箷瀹藉害璁剧疆锛屼袱杈圭暀鐧藉悇40 + this.maxH = res[0].width - 80; + this.maxW = res[0].width - 80; + // 璁剧疆X杞村�硷紝绠楀紡锛氬睆骞曢珮搴︾殑涓�鍗婂噺鍘诲熀鍑嗘楂樺害鐨勪竴鍗� + this.xToTop = this.screenHeight / 2 - this.maxH / 2; + this.setImageSize(data); + }); + }, + methods: { + // 瀹介珮澶勭悊 + setImageSize(data) { + const { + tempFilePath + } = data; + const { + maxH, + maxW + } = this; + uni.getImageInfo({ + src: tempFilePath, + success: res => { + const { + errMsg, + path, + width, + height + } = res; + let w = ''; + let h = ''; + if (errMsg === 'getImageInfo:ok') { + w = width; + h = height; + // 瀹藉ぇ涓庨珮澶т簬鏈�澶у搴� + if (width > height && width > maxW) { + w = Math.floor((width / height) * maxW); + h = maxH; + } + // 楂樺ぇ浜庡澶т簬鏈�澶ч珮搴� + if (height > width && height > maxH) { + h = Math.floor((height / width) * maxH); + w = maxW; + } + // 瀹介珮鐩哥瓑鎴栬�呭楂樺皬浜庢渶澶у�� + if (width === height || (width < maxW && height < maxH)) { + h = maxH; + w = maxW; + } + this.preSrc = path; + this.preImgH = h; + this.preImgW = w; + // 璁剧疆钂欏眰 + this.setBgBox(); + // 鍥惧儚棰勮 + this.previewCanvas({ + w, + h, + path + }); + } + } + }); + }, + + // 璁剧疆钂欏眰 + setBgBox() { + const { + maxW, + maxH, + screenHeight, + screenWidth, + xToTop + } = this; + const ctx = uni.createCanvasContext('firstCanvas'); + // 鍏堟竻闄ょ煩褰� + ctx.clearRect(0, 0, screenWidth, screenHeight); + // 璁剧疆canvas閫忔槑搴� + ctx.setGlobalAlpha(0.7); + // 璁剧疆钂欏眰棰滆壊 + ctx.setFillStyle('#000000'); + // 缁樺埗钂欏眰 + ctx.fillRect(0, 0, screenWidth, screenHeight); + // 鍩哄噯妗嗙暀鐧� + ctx.clearRect(40, xToTop, maxW, maxH); + // 缁樺埗鍩哄噯妗� + ctx.beginPath(); + ctx.setStrokeStyle('#FFFFFF'); + ctx.strokeRect(40, xToTop, maxW, maxH); + ctx.closePath(); + ctx.draw(); + }, + // 棰勮 + previewCanvas({ + w, + h, + path + }) { + const ctx = uni.createCanvasContext('mycanvas'); + ctx.drawImage(path, 0, 0, w, h); + ctx.draw(); + }, + onTouchstart(ev) { + if (ev.changedTouches.length === 1) { + this.isMove = true; + this.start.left = ev.changedTouches[0].clientX; + this.start.top = ev.changedTouches[0].clientY; + } + }, + onTouchmove(ev) { + const { + maxW, + maxH, + preImgH, + preImgW, + xToTop + } = this; + if (this.isMove && ev.changedTouches.length === 1) { + let clientX = ev.changedTouches[0].clientX, + clientY = ev.changedTouches[0].clientY; + this.x = preImgW <= maxW ? 0 : this.oldx + clientX - this.start.left; + this.y = preImgH <= maxH ? 0 : this.oldy + clientY - this.start.top; + } + }, + touchE(val) { + const { + preImgH, + preImgW, + maxH, + maxW + } = this; + const query = uni.createSelectorQuery(); + const fx = this.x; + query.select('.pre-i').boundingClientRect(); + query.exec(res => { + // x銆亂鍥炲脊璁$畻 + let y = (res[0].height - res[0].width) / 2; + /** + * 鍒ゆ柇鐓х墖鍙Щ鍔ㄧ殑璺濈鏄惁澶т簬鐣欑櫧鐨勫�硷紝濡傛灉澶т簬鍚戝彸鍒掓椂鍥剧墖鐨勫鍑忓幓鍩哄噯妗嗙殑瀹藉噺鍘荤暀鐧藉悜宸︽椂鐣欑櫧锛屽皬浜庢椂鎸夊浘鐗囩殑鍙Щ鍔ㄥ�� + * */ + let x = (preImgW - maxW) / 2 > 40 ? (fx < 0 ? preImgW - maxW - 40 : 40) : (preImgW - maxW) / 2; + if (preImgH > maxH) { + this.y = this.y > y ? y : this.y < -y ? -y : this.y; + } + if (preImgW > maxW) { + this.x = this.x > x ? x : this.x < -x ? -x : this.x; + } + this.oldx = this.x; + this.oldy = this.y; + this.isMove = false; + }); + }, + // 瑁佸壀 + onCrop() { + let y = 0; + let x = 0; + const query = uni.createSelectorQuery(); + query.select('.pre-i').boundingClientRect(); + query.exec(res => { + // 鑾峰彇棰勮img璺濈宸︿笂鐨勮窛绂� + y = Math.abs(res[0].top); + x = Math.abs(res[0].left); + const { + maxW, + maxH, + preImgH, + preImgW, + xToTop + } = this; + uni.canvasToTempFilePath({ + x: Math.abs(res[0].left < 0 ? x + 40 : x - 40), + y: Math.abs(res[0].top < 0 ? xToTop + y : xToTop - y), + width: maxW, + height: maxH, + destWidth: maxW, + destHeight: maxH, + canvasId: 'mycanvas', + success: fileRes => { + console.log(fileRes); + uni.previewImage({ + count: 1, + urls: [fileRes.tempFilePath] + }); + }, + fail: function(err) { + console.log(err); + uni.showToast({ + title: '涓婁紶澶辫触锛氬浘鐗囩敓鎴愯繃绋嬩腑閬囧埌閿欒', + icon: 'none' + }); + } + }); + }); + } + } + }; +</script> + +<style lang="scss" scoped> + .settingHeadImage { + background-color: #000000; + overflow: hidden; + + .pre-canvas { + position: fixed; + top: 0; + left: 0; + z-index: 20; + } + + .preImage { + min-width: 100vw; + height: 100vh; + display: flex; + justify-content: center; + align-items: center; + overflow: hidden; + z-index: 1; + + .pre-i { + // transition: all 0.1s; + } + } + + .setting-btns { + position: fixed; + bottom: 0; + left: 0; + z-index: 20; + font-size: 14px; + color: #ffffff; + } + } +</style> \ No newline at end of file -- Gitblit v1.9.3