From b6e694c220862d22f634c18bd583d6959785a54f Mon Sep 17 00:00:00 2001 From: liukangdong <898885815@qq.com> Date: 星期二, 21 五月 2024 11:54:11 +0800 Subject: [PATCH] ‘’ --- admin/src/components/common/QueryForm/queryForm.vue | 2 admin/src/views/vehicle/authorizationRecord.vue | 139 +++++++++ admin/src/views/operation/serviceCar/apprConfig.vue | 470 +++++++++++++++++++++++++++++++ admin/src/views/operation/serviceCar/driverConfig.vue | 128 ++++++++ admin/package.json | 1 admin/src/views/operation/serviceCar/apprRecord.vue | 135 +++++++++ 6 files changed, 874 insertions(+), 1 deletions(-) diff --git a/admin/package.json b/admin/package.json index 27e418b..3816b55 100644 --- a/admin/package.json +++ b/admin/package.json @@ -4,6 +4,7 @@ "private": true, "scripts": { "serve": "vue-cli-service serve", + "dev": "vue-cli-service serve", "build": "vue-cli-service build --mode production", "build:staging": "vue-cli-service build --mode test", "lint": "vue-cli-service lint", diff --git a/admin/src/components/common/QueryForm/queryForm.vue b/admin/src/components/common/QueryForm/queryForm.vue index 66563cb..bb962f5 100644 --- a/admin/src/components/common/QueryForm/queryForm.vue +++ b/admin/src/components/common/QueryForm/queryForm.vue @@ -92,7 +92,7 @@ }, listLength: { type: Number, - default: 3 + default: 6 }, queryFormConfig: { type: Object, diff --git a/admin/src/views/operation/serviceCar/apprConfig.vue b/admin/src/views/operation/serviceCar/apprConfig.vue new file mode 100644 index 0000000..3a43bbc --- /dev/null +++ b/admin/src/views/operation/serviceCar/apprConfig.vue @@ -0,0 +1,470 @@ +<template> + <TableLayout> + <template v-slot:table-wrap> + <el-tabs v-model="activeName"> + <el-tab-pane label="瀹ゅ唴鐢ㄨ溅" name="first"></el-tab-pane> + <el-tab-pane label="瀹ゅ鐢ㄨ溅" name="second"></el-tab-pane> + </el-tabs> + <div class="config"> + <div class="config_list"> + <div class="config_list_head"> + <span>娴佺▼閰嶇疆</span> + <el-button style="background: #435ebe" type="primary" + >鍙戝竷</el-button + > + </div> + <div class="config_content"> + <div class="item active"> + <div class="head">鍙戣捣浜�</div> + <div class="content">鍐呴儴鍛樺伐</div> + </div> + <div class="arrows"> + <div class="line"></div> + <img src="@/assets/images/peizhi_ar@2x.png" alt="" /> + </div> + <div + class="item yellow" + :class="{ active: activeSel === 'one' }" + @click="flowClick('one')" + > + <div class="head">瀹℃壒浜�</div> + <div class="content"> + <div>鏌愭煇-缁煎悎绉�</div> + <i class="el-icon-arrow-right"></i> + </div> + </div> + <div class="arrows"> + <div class="line"></div> + <img src="@/assets/images/peizhi_ar@2x.png" alt="" /> + </div> + <div + class="item yellow" + :class="{ active: activeSel === 'one' }" + @click="flowClick('one')" + > + <div class="head">瀹℃壒浜�</div> + <div class="content"> + <div>鏉庣惓-缁煎悎绉�</div> + <i class="el-icon-arrow-right"></i> + </div> + </div> + <div class="arrows"> + <div class="line"></div> + <img src="@/assets/images/peizhi_ar@2x.png" alt="" /> + </div> + <div + class="item blue" + :class="{ active: activeSel === 'two' }" + @click="flowClick('two')" + > + <div class="head">鎶勯�佷汉</div> + <div class="content"> + <div>鎸囨淳椹鹃┒鍛�</div> + <i class="el-icon-arrow-right"></i> + </div> + </div> + </div> + </div> + <div class="config_data"> + <div class="config_data_item"> + <div class="config_data_item_label">閫夋嫨璇ヨ妭鐐圭殑瀹℃壒浜�</div> + <el-radio-group v-model="radio"> + <el-radio :label="1">鎸囧畾浜哄憳</el-radio> + <el-radio :label="2">閮ㄩ棬涓荤</el-radio> + </el-radio-group> + <div class="config_data_item_reviewed" v-if="radio === 1"> + <div class="config_data_item_reviewed_label"> + <span>鎸囧畾瀹℃牳浜�</span> + <span>涓嶈秴杩�20浜�</span> + </div> + <div class="config_data_item_reviewed_content"> + <div class="config_data_item_reviewed_content_item"> + <span>鏍撳瓙鍝�</span> + <i class="el-icon-close"></i> + </div> + <span class="add" @click="selStaff">+娣诲姞</span> + </div> + </div> + <div class="config_data_item_reviewed" v-if="radio === 2"> + <div class="config_data_item_reviewed_label"> + <span>閮ㄩ棬涓荤</span> + </div> + <div class="config_data_item_reviewed_r"> + <span>琚浜虹殑</span> + <el-select + v-model="value" + placeholder="璇烽�夋嫨" + style="margin: 0 20px 0 10px" + > + <el-option + v-for="item in options" + :key="item.value" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + <el-checkbox v-model="checked" + >鎵句笉鍒颁富绠℃椂锛岀敱涓婄骇涓荤浠e鏍�</el-checkbox + > + </div> + </div> + </div> + <div class="config_data_item" v-if="radio !== 0"> + <div class="config_data_item_label"> + 瀹℃壒鏂瑰紡 + <span>瀹℃壒浜轰负澶氫釜鏃讹紝閲囩敤鐨勫鎵规柟寮�</span> + </div> + <el-radio-group + v-model="radio1" + style="display: flex; flex-direction: column" + > + <el-radio :label="0" style="margin-bottom: 20px" + >鎴栫锛堝叾涓竴鍚嶅鎵逛汉鍚屾剰鎴栨嫆缁濆嵆鍙級</el-radio + > + <el-radio :label="1">浼氱锛堟墍鏈夊鎵逛汉閮藉悓鎰忔墠鍙�氳繃锛�</el-radio> + </el-radio-group> + </div> + <div class="df_ac"> + <span class="mr10"><strong>鍏佽淇敼鐢宠椤�</strong></span> + <el-switch v-model="param.aa" active-value="1" inactive-value="0"> + </el-switch> + </div> + <div class="df_ac mt10"> + <span class="mr20">閫夋嫨淇敼椤�</span> + <el-select + v-model="param.list" + collapse-tags + multiple + placeholder="璇烽�夋嫨,澶氶��" + > + <el-option + v-for="item in options" + :key="item.value" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </div> + <div class="config_data_submit" v-if="radio !== 0"> + <el-button style="background: #435ebe" type="primary" + >淇濆瓨閰嶇疆椤�</el-button + > + </div> + </div> + </div> + </template> + <!-- --> + <el-dialog title="閫夋嫨鍛樺伐" :visible.sync="isShowTransfer" width="800px"> + <tree-transfer + v-model="param.menuIds" + :title="['鏈��', '宸查��']" + :from_data="fromData" + :to_data="selData" + :defaultProps="{ label: 'label' }" + mode="transfer" + height="500px" + filter + openAll + ref="treeTransfer" + > + </tree-transfer> + <span slot="footer" class="dialog-footer"> + <el-button @click="isShowTransfer = false">鍙� 娑�</el-button> + <el-button type="primary" @click="isShowTransfer = false" + >纭� 瀹�</el-button + > + </span> + </el-dialog> + </TableLayout> +</template> + +<script> +import TableLayout from '@/layouts/TableLayout' +import treeTransfer from 'el-tree-transfer' +export default { + name: 'config', + components: { + TableLayout, + treeTransfer + }, + data() { + return { + + value: '', + radio: 0, + radio1: 0, + checked: '', + checkList: [], + + param: {}, + activeSel: 'one', + activeName: 'first', + isShowTransfer: false, + fromData: [ + { + id: '1', + pid: 0, + label: '涓�绾� 1', + children: [ + { + id: '1-1', + pid: '1', + label: '浜岀骇 1-1', + disabled: true, + children: [] + }, + { + id: '1-2', + pid: '1', + label: '浜岀骇 1-2', + children: [ + { + id: '1-2-1', + pid: '1-2', + children: [], + label: '浜岀骇 1-2-1' + }, + { + id: '1-2-2', + pid: '1-2', + children: [], + label: '浜岀骇 1-2-2' + } + ] + } + ] + } + ], + options: [{ + value: '閫夐」1', + label: '榛勯噾绯�' + }, { + value: '閫夐」2', + label: '鍙岀毊濂�' + }, { + value: '閫夐」3', + label: '铓典粩鐓�' + }, { + value: '閫夐」4', + label: '榫欓』闈�' + }, { + value: '閫夐」5', + label: '鍖椾含鐑ら腑' + }], + selData: [] + } + }, + methods: { + flowClick(val) { + this.activeSel = val + }, + + selStaff() { + this.isShowTransfer = true + }, + seleItem(i) { + this.list.forEach((item, index) => { + item.active = index === i + }) + } + } +} +</script> + +<style lang="scss" scoped> +.config { + width: 100%; + padding-bottom: 20px; + box-sizing: border-box; + height: calc(100vh - 140px); + display: flex; + align-items: center; + justify-content: space-between; + .config_list { + width: 543px; + height: 100%; + flex-shrink: 0; + border-radius: 2px; + padding: 20px; + box-sizing: border-box; + border: 1px solid #eeeeee; + background: #f7f7f7; + .config_list_head { + width: 100%; + height: 40px; + display: flex; + align-items: center; + justify-content: space-between; + span { + font-size: 18px; + font-weight: 500; + color: #222222; + } + } + .config_content { + width: 100%; + height: calc(100% - 40px); + padding-top: 45px; + box-sizing: border-box; + overflow-y: scroll; + display: flex; + align-items: center; + flex-direction: column; + &::-webkit-scrollbar { + width: 0; + } + .active { + border: 2px solid #4456ac !important; + } + .yellow { + background: #e89e42 !important; + } + .blue { + background: #5094f3 !important; + } + .arrows { + display: flex; + flex-direction: column; + align-items: center; + .line { + width: 1px; + height: 60px; + background-color: #ccc; + } + img { + width: 12px; + } + } + .item { + width: 200px; + cursor: pointer; + border: 2px solid #f7f7f7; + height: 80px; + background: #4456ac; + border-radius: 2px; + position: relative; + display: flex; + flex-direction: column; + .head { + height: 32px; + line-height: 32px; + padding: 2px 12px; + color: #fff; + } + .content { + flex: 1; + background-color: #fff; + display: flex; + align-items: center; + padding: 0 12px; + justify-content: space-between; + } + &:last-child { + margin: 0 !important; + } + } + } + } + .config_data { + flex: 1; + height: 100%; + margin-left: 20px; + .config_data_submit { + margin-top: 50px; + } + .config_data_item { + width: 100%; + display: flex; + flex-direction: column; + margin-bottom: 30px; + &:last-child { + margin: 0 !important; + } + .config_data_item_label { + font-size: 16px; + font-weight: 500; + color: #222222; + margin-bottom: 20px; + span { + font-size: 12px; + font-weight: 400; + color: #999999; + margin-left: 10px; + } + } + .config_data_item_reviewed { + width: 100%; + margin-top: 20px; + .config_data_item_reviewed_r { + margin-top: 10px; + width: 100%; + display: flex; + align-items: center; + span { + flex-shrink: 0; + font-size: 14px; + font-weight: 400; + color: #666666; + } + } + .config_data_item_reviewed_label { + display: flex; + align-items: center; + span { + &:nth-child(1) { + font-size: 14px; + font-weight: 400; + color: #222222; + } + &:nth-child(2) { + font-size: 12px; + font-weight: 400; + color: #999999; + margin-left: 8px; + } + } + } + .config_data_item_reviewed_content { + width: 400px; + margin-top: 10px; + height: 110px; + padding: 12px; + box-sizing: border-box; + border-radius: 2px; + border: 1px solid #dfe2e8; + display: flex; + align-items: flex-start; + flex-wrap: wrap; + .add { + font-size: 12px; + font-weight: 400; + color: #435ebe; + cursor: pointer; + margin-top: 3px; + } + .config_data_item_reviewed_content_item { + padding: 3px 5px; + background: #f4f7fc; + border-radius: 2px; + box-sizing: border-box; + margin-right: 10px; + margin-bottom: 10px; + span { + font-size: 12px; + font-weight: 400; + color: #333333; + } + i { + color: #949ba2; + margin-left: 10px; + cursor: pointer; + } + } + } + } + } + } +} +</style> diff --git a/admin/src/views/operation/serviceCar/apprRecord.vue b/admin/src/views/operation/serviceCar/apprRecord.vue new file mode 100644 index 0000000..5e2fc7d --- /dev/null +++ b/admin/src/views/operation/serviceCar/apprRecord.vue @@ -0,0 +1,135 @@ +<template> + <div class="main_app"> + <QueryForm + v-model="filters" + :query-form-config="queryFormConfig" + @handleQuery="getList(1)" + @clear="clear" + /> + <el-table v-loading="loading" :data="list" stripe> + <el-table-column + prop="name" + label="鐢宠浜�" + min-width="100" + show-overflow-tooltip + /> + <el-table-column + prop="name" + label="缁勭粐" + min-width="100" + show-overflow-tooltip + /> + <el-table-column + prop="name" + label="杞︾墝鐓�" + min-width="100" + show-overflow-tooltip + /> + <el-table-column + prop="name" + label="鐢ㄨ溅鏃堕棿" + min-width="80" + show-overflow-tooltip + /> + <el-table-column + prop="name" + label="鍑哄彂鏃堕棿" + min-width="100" + show-overflow-tooltip + /> + <el-table-column + prop="name" + label="鐩殑鍦扮被鍒�" + min-width="110" + show-overflow-tooltip + /> + <el-table-column + prop="name" + label="鐩殑鍦�" + min-width="100" + show-overflow-tooltip + /> + <el-table-column + prop="name" + label="鐢宠鐘舵��" + min-width="80" + show-overflow-tooltip + /> + <el-table-column + prop="name" + label="鎿嶄綔" + min-width="80" + show-overflow-tooltip + > + <template> + <el-button type="text">鏌ョ湅璇︽儏</el-button> + </template> + </el-table-column> + </el-table> + <pagination + @size-change="handleSizeChange" + @current-change="getList" + :pagination="pagination" + /> + </div> +</template> + +<script> +import Pagination from '@/components/common/Pagination' +import QueryForm from '@/components/common/QueryForm' +export default { + components: { + Pagination, + QueryForm + }, + data () { + return { + filters: {}, + loading: false, + queryFormConfig: { + formItems: [ + { + filed: 'name', + type: 'input', + label: '鐢宠浜哄鍚�' + }, + { + filed: 'idCard', + type: 'input', + label: '杞︾墝鐓�' + }, + { + filed: 'name', + type: 'select', + label: '閫夋嫨鐩殑鍦扮被鍒�', + options: [] + }, + { + filed: 'name', + type: 'datetimerange', + label: '鍑哄彂鏃堕棿', + options: [] + } + ], + online: true + }, + pagination: { + capacity: 10, + page: 1 + }, + list: [], + total: 0 + } + }, + methods: { + getList (page) { }, + clear () { }, + handleSizeChange (capacity) { + this.pagination.capacity = capacity + } + } +} +</script> + +<style> +</style> diff --git a/admin/src/views/operation/serviceCar/driverConfig.vue b/admin/src/views/operation/serviceCar/driverConfig.vue new file mode 100644 index 0000000..f72a43e --- /dev/null +++ b/admin/src/views/operation/serviceCar/driverConfig.vue @@ -0,0 +1,128 @@ +<template> + <div class="main_app"> + <QueryForm + v-model="filters" + :query-form-config="queryFormConfig" + @handleQuery="getList(1)" + @clear="clear" + /> + <div class="ml20"> + <el-button type="primary" @click="handleEdit()">娣诲姞</el-button> + </div> + <el-table v-loading="loading" :data="list" stripe> + <el-table-column + prop="name" + label="濮撳悕" + min-width="100" + show-overflow-tooltip + /> + <el-table-column + prop="name" + label="鎬у埆" + min-width="100" + show-overflow-tooltip + /> + <el-table-column + prop="name" + label="缁勭粐" + min-width="100" + show-overflow-tooltip + /> + <el-table-column + prop="name" + label="鎵嬫満鍙�" + min-width="80" + show-overflow-tooltip + /> + <el-table-column + prop="name" + label="鎿嶄綔" + min-width="80" + show-overflow-tooltip + > + <template v-slot="scope"> + <el-button type="text" @click="handleEdit(scope.row)">缂栬緫</el-button> + <el-button type="text" class="red" @click="handleDel(scope.row)">鍒犻櫎</el-button> + </template> + </el-table-column> + </el-table> + <pagination + @size-change="handleSizeChange" + @current-change="getList" + :pagination="pagination" + /> + <el-dialog title="閫夋嫨浜哄憳" :visible.sync="isShowEdit" width="480px"> + <el-form + :model="param" + :rules="rules" + ref="ruleForm" + label-width="100px" + > + <el-form-item label="閫夋嫨缁勭粐" prop="name"> + <el-select placeholder="璇烽�夋嫨锛屽崟閫�" filterable> + <el-option></el-option> + </el-select> + </el-form-item> + <el-form-item label="閫夋嫨浜哄憳" prop="name"> + <el-select placeholder="璇烽�夋嫨锛屽崟閫�" filterable> + <el-option></el-option> + </el-select> + </el-form-item> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button @click="isShowEdit = false">鍙栨秷</el-button> + <el-button type="primary" @click="isShowEdit = false">纭畾</el-button> + </span> + </el-dialog> + </div> +</template> + +<script> +import Pagination from '@/components/common/Pagination' +import QueryForm from '@/components/common/QueryForm' +export default { + components: { + Pagination, + QueryForm + }, + data () { + return { + filters: {}, + loading: false, + queryFormConfig: { + formItems: [ + { + filed: 'name', + type: 'input', + label: '椹鹃┒鍛樺鍚�' + } + ], + online: true + }, + pagination: { + capacity: 10, + page: 1 + }, + list: [], + total: 0, + isShowEdit: false, + param: {}, + rules: {} + } + }, + methods: { + getList (page) { }, + clear () { }, + handleEdit (row) { + this.isShowEdit = true + }, + handleDel () {}, + handleSizeChange (capacity) { + this.pagination.capacity = capacity + } + } +} +</script> + +<style> +</style> diff --git a/admin/src/views/vehicle/authorizationRecord.vue b/admin/src/views/vehicle/authorizationRecord.vue index e69de29..b6c5d63 100644 --- a/admin/src/views/vehicle/authorizationRecord.vue +++ b/admin/src/views/vehicle/authorizationRecord.vue @@ -0,0 +1,139 @@ +<template> + <div class="main_app"> + <QueryForm + v-model="filters" + :query-form-config="queryFormConfig" + @handleQuery="getList(1)" + @clear="clear" + > + <template #date> + <el-radio-group v-model="filters.aa"> + <el-radio-button label="">褰撳ぉ</el-radio-button> + <el-radio-button label="鍖椾含">杩�7澶�</el-radio-button> + <el-radio-button label="骞垮窞">杩�30澶�</el-radio-button> + </el-radio-group> + </template> + </QueryForm> + <el-table v-loading="loading" :data="list" stripe> + <el-table-column + prop="name" + label="杞︾墝鐓�" + min-width="100" + show-overflow-tooltip + /> + <el-table-column + prop="name" + label="杞﹁締绫诲瀷" + min-width="80" + show-overflow-tooltip + /> + <el-table-column + prop="name" + label="鎺堟潈鍋滆溅鍦�" + min-width="100" + show-overflow-tooltip + /> + <el-table-column + prop="name" + label="鎺堟潈鏈夋晥鏈�" + min-width="110" + show-overflow-tooltip + /> + <el-table-column + prop="name" + label="鎿嶄綔浜�" + min-width="100" + show-overflow-tooltip + /> + <el-table-column + prop="name" + label="鎺堟潈鐘舵��" + min-width="80" + show-overflow-tooltip + /> + <el-table-column + prop="name" + label="鏈�鍚庢搷浣滄椂闂�" + min-width="110" + show-overflow-tooltip + /> + <el-table-column + prop="name" + label="鎺堟潈澶辫触鍘熷洜" + min-width="110" + show-overflow-tooltip + /> + </el-table> + <pagination + @size-change="handleSizeChange" + @current-change="getList" + :pagination="pagination" + /> + </div> +</template> + +<script> +import Pagination from '@/components/common/Pagination' +import QueryForm from '@/components/common/QueryForm' +export default { + components: { + Pagination, + QueryForm + }, + data () { + return { + filters: {}, + loading: false, + queryFormConfig: { + formItems: [ + { + filed: 'idCard', + type: 'input', + label: '杞︾墝鐓�' + }, + { + filed: 'name', + type: 'select', + label: '鎺堟潈鐘舵��', + options: [] + }, + { + filed: 'name', + type: 'select', + label: '杞﹁締绫诲瀷', + options: [] + }, + { + filed: 'name', + type: 'datetimerange', + label: '涓嬪彂鏃堕棿', + options: [] + }, + { + filed: 'date', + type: 'slot', + label: '' + } + ], + online: true + }, + pagination: { + capacity: 10, + page: 1 + }, + list: [], + total: 0 + } + }, + methods: { + getList (page) { }, + clear () { }, + handleSizeChange (capacity) { + this.pagination.capacity = capacity + } + } +} +</script> + +<style> +</style> -- Gitblit v1.9.3