|
|
@@ -0,0 +1,664 @@
|
|
|
+<template>
|
|
|
+ <div>
|
|
|
+ <transition appear enter-active-class="animated fadeIn">
|
|
|
+ <q-table
|
|
|
+ class="my-sticky-header-column-table shadow-24"
|
|
|
+ :data="table_list"
|
|
|
+ row-key="id"
|
|
|
+ :separator="separator"
|
|
|
+ :loading="loading"
|
|
|
+ :columns="columns"
|
|
|
+ hide-bottom
|
|
|
+ :pagination.sync="pagination"
|
|
|
+ no-data-label="No data"
|
|
|
+ no-results-label="No data you want"
|
|
|
+ :table-style="{ height: height }"
|
|
|
+ flat
|
|
|
+ bordered
|
|
|
+ >
|
|
|
+ <template v-slot:header-cell="props">
|
|
|
+ <q-th :props="props" @dblclick="handleHeaderDblClick(props.col)">
|
|
|
+ <!-- 为特定列添加下拉选择器 -->
|
|
|
+ <template v-if="['bound_department'].includes(props.col.name)">
|
|
|
+ <q-select
|
|
|
+ dense
|
|
|
+ outlined
|
|
|
+ v-model="filterModels[props.col.name]"
|
|
|
+ :options="getFilterOptions(props.col.name)"
|
|
|
+ option-label="label"
|
|
|
+ option-value="value"
|
|
|
+ emit-value
|
|
|
+ map-options
|
|
|
+ clearable
|
|
|
+ @input="handleFilterChange"
|
|
|
+ style="min-width: 120px"
|
|
|
+ >
|
|
|
+ <template v-slot:prepend>
|
|
|
+ <span class="text-caption">{{ props.col.label }}</span>
|
|
|
+ </template>
|
|
|
+ </q-select>
|
|
|
+ </template>
|
|
|
+ <template v-else>
|
|
|
+ {{ props.col.label }}
|
|
|
+ </template>
|
|
|
+ </q-th>
|
|
|
+ </template>
|
|
|
+ <template v-slot:top>
|
|
|
+ <q-btn-group push>
|
|
|
+ <q-btn :label="$t('refresh')" icon="refresh" @click="reFresh()">
|
|
|
+ <q-tooltip
|
|
|
+ content-class="bg-amber text-black shadow-4"
|
|
|
+ :offset="[10, 10]"
|
|
|
+ content-style="font-size: 12px"
|
|
|
+ >{{ $t("refreshtip") }}</q-tooltip
|
|
|
+ >
|
|
|
+ </q-btn>
|
|
|
+ <!-- <q-btn :label="'日志'" icon="logout" @click="getlog()"> </q-btn> -->
|
|
|
+ </q-btn-group>
|
|
|
+
|
|
|
+ <q-space />
|
|
|
+
|
|
|
+ <div class="flex items-center">
|
|
|
+ <q-btn-group push class="q-ml-md"> </q-btn-group>
|
|
|
+ <q-input
|
|
|
+ outlined
|
|
|
+ rounded
|
|
|
+ dense
|
|
|
+ debounce="300"
|
|
|
+ color="primary"
|
|
|
+ v-model="filter"
|
|
|
+ :placeholder="$t('search')"
|
|
|
+ @input="getSearchList()"
|
|
|
+ @keyup.enter="getSearchList()"
|
|
|
+ >
|
|
|
+ <template v-slot:append>
|
|
|
+ <q-icon name="search" @click="getSearchList()" />
|
|
|
+ </template>
|
|
|
+ </q-input>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <template v-slot:body="props">
|
|
|
+ <q-tr :props="props">
|
|
|
+ <q-td auto-width>
|
|
|
+ <q-btn
|
|
|
+ size="sm"
|
|
|
+ round
|
|
|
+ :icon="props.row.expand ? 'remove' : 'ballot'"
|
|
|
+ @click="handle_row_expand(props.row)"
|
|
|
+ />
|
|
|
+ </q-td>
|
|
|
+ <q-td
|
|
|
+ v-for="col in columns.filter((c) => c.name !== 'expand')"
|
|
|
+ :key="col.name"
|
|
|
+ :props="props"
|
|
|
+ >
|
|
|
+ {{ col.field ? props.row[col.field] : props.row[col.name] }}
|
|
|
+ </q-td>
|
|
|
+ </q-tr>
|
|
|
+
|
|
|
+ <!-- 第二级:时间轴 -->
|
|
|
+ <q-tr v-show="props.row.expand" :props="props" class="expanded-row">
|
|
|
+ <q-td colspan="100%">
|
|
|
+ <div class="q-pa-md timeline-wrapper">
|
|
|
+ <q-timeline
|
|
|
+ color="#e0e0e0"
|
|
|
+ v-if="props.row.batch_items?.length"
|
|
|
+ >
|
|
|
+ <q-timeline-entry
|
|
|
+ v-for="(batch_item, index) in props.row.batch_items"
|
|
|
+ :key="index"
|
|
|
+ class="custom-node"
|
|
|
+ >
|
|
|
+ <template v-slot:title>
|
|
|
+ <span>
|
|
|
+ <div>批次 {{ batch_item.bound_number }}</div>
|
|
|
+ <div class="row">
|
|
|
+ <div class="col">
|
|
|
+ <div class="custom-title">
|
|
|
+ {{ batch_item.goods_desc }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="col">
|
|
|
+ <div class="custom-title">
|
|
|
+ 计划数量:{{ batch_item.goods_qty }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="col">
|
|
|
+ <div class="custom-title">
|
|
|
+ 入库数量:{{ batch_item.goods_in_qty }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="col">
|
|
|
+ <div class="custom-title">
|
|
|
+ 实际在库数量:{{
|
|
|
+ batch_item.goods_in_location_qty
|
|
|
+ }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="col">
|
|
|
+ <div class="custom-title">
|
|
|
+ 预定/已出库数量:{{
|
|
|
+ batch_item.goods_out_qty
|
|
|
+ }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
+ </q-timeline-entry>
|
|
|
+ </q-timeline>
|
|
|
+ <div v-else-if="props.row.loading" class="text-center q-pa-md">
|
|
|
+ <q-spinner color="primary" size="2em" />
|
|
|
+ <div class="q-mt-sm">正在加载信息...</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </q-td>
|
|
|
+ </q-tr>
|
|
|
+ </template>
|
|
|
+ </q-table>
|
|
|
+ </transition>
|
|
|
+ <template>
|
|
|
+ <div v-show="max !== 0" class="q-pa-lg flex flex-center">
|
|
|
+ <div>{{ total }}</div>
|
|
|
+ <q-pagination
|
|
|
+ v-model="current"
|
|
|
+ color="black"
|
|
|
+ :max="max"
|
|
|
+ :max-pages="6"
|
|
|
+ boundary-links
|
|
|
+ @click="
|
|
|
+ getSearchList(current);
|
|
|
+ paginationIpt = current;
|
|
|
+ "
|
|
|
+ />
|
|
|
+ <div>
|
|
|
+ <input
|
|
|
+ v-model="paginationIpt"
|
|
|
+ @blur="changePageEnter"
|
|
|
+ @keyup.enter="changePageEnter"
|
|
|
+ style="width: 60px; text-align: center"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div v-show="max === 0" class="q-pa-lg flex flex-center">
|
|
|
+ <q-btn flat push color="dark" :label="$t('no_data')"></q-btn>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+<router-view />
|
|
|
+
|
|
|
+<script>
|
|
|
+import { getauth, postauth, putauth, deleteauth } from 'boot/axios_request'
|
|
|
+import { filter } from 'jszip'
|
|
|
+import { date, LocalStorage } from 'quasar'
|
|
|
+
|
|
|
+export default {
|
|
|
+ name: 'PageTask',
|
|
|
+ data () {
|
|
|
+ return {
|
|
|
+ createDate1: '',
|
|
|
+ createDate2: '',
|
|
|
+ date_range: '',
|
|
|
+ proxyDate: '',
|
|
|
+ date: '',
|
|
|
+ goods_code: '',
|
|
|
+ goods_desc: '',
|
|
|
+ openid: '',
|
|
|
+ login_name: '',
|
|
|
+ authin: '0',
|
|
|
+ searchUrl: '',
|
|
|
+ pathname: 'bound/batch/count/',
|
|
|
+ pathname_previous: '',
|
|
|
+ pathname_next: '',
|
|
|
+ separator: 'cell',
|
|
|
+ loading: false,
|
|
|
+ height: '',
|
|
|
+ viewForm: false,
|
|
|
+
|
|
|
+ table_list: [],
|
|
|
+ columns: [
|
|
|
+ {
|
|
|
+ name: 'expand',
|
|
|
+ label: '',
|
|
|
+ align: 'left',
|
|
|
+ headerStyle: 'width: 50px'
|
|
|
+ },
|
|
|
+
|
|
|
+ {
|
|
|
+ name: 'goods_code',
|
|
|
+ label: '存货编码',
|
|
|
+ field: 'goods_code',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: 'goods_desc',
|
|
|
+ label: '存货名称',
|
|
|
+ field: 'goods_desc',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+
|
|
|
+ {
|
|
|
+ name: 'total_quantity',
|
|
|
+ label: '在库数目',
|
|
|
+ field: 'total_quantity',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+
|
|
|
+ {
|
|
|
+ name: 'goods_unit',
|
|
|
+ label: '单位',
|
|
|
+ field: 'goods_unit',
|
|
|
+ align: 'center',
|
|
|
+ headerStyle: 'width: 20px'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ filter: '',
|
|
|
+ pagination: {
|
|
|
+ page: 1,
|
|
|
+ rowsPerPage: 11
|
|
|
+ },
|
|
|
+ current: 1,
|
|
|
+ max: 0,
|
|
|
+ total: 0,
|
|
|
+ paginationIpt: 1,
|
|
|
+ containers: {},
|
|
|
+ timer: null,
|
|
|
+ filterModels: {
|
|
|
+ bound_department: null
|
|
|
+ },
|
|
|
+ activeSearchField: '',
|
|
|
+ activeSearchLabel: '',
|
|
|
+ filterdata: {},
|
|
|
+ }
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ interval () {
|
|
|
+ return (
|
|
|
+ this.$t('download_center.start') +
|
|
|
+ ' - ' +
|
|
|
+ this.$t('download_center.end')
|
|
|
+ )
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ // 处理过滤变化
|
|
|
+ handleFilterChange () {
|
|
|
+ this.pagination.page = 1
|
|
|
+ this.getSearchList(1)
|
|
|
+ },
|
|
|
+
|
|
|
+ getFilterOptions (columnName) {
|
|
|
+ switch (columnName) {
|
|
|
+ case 'type':
|
|
|
+ return [
|
|
|
+ { label: '生产入库', value: 1 },
|
|
|
+ { label: '采购入库', value: 2 },
|
|
|
+ { label: '其他入库', value: 3 },
|
|
|
+ { label: '调拨入库', value: 4 }
|
|
|
+ ]
|
|
|
+ case 'bound_status':
|
|
|
+ return [
|
|
|
+ { label: '待审核', value: 0 },
|
|
|
+ { label: '确认无误', value: 1 }
|
|
|
+ ]
|
|
|
+ case 'bound_department':
|
|
|
+ return this.bound_department_list
|
|
|
+ default:
|
|
|
+ return []
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handleHeaderDblClick (column) {
|
|
|
+ // 排除不需要搜索的列
|
|
|
+ if (['detail', 'action'].includes(column.name)) return
|
|
|
+
|
|
|
+ this.activeSearchField = column.field
|
|
|
+ this.activeSearchLabel = column.label
|
|
|
+
|
|
|
+ // 弹出搜索对话框
|
|
|
+ this.$q
|
|
|
+ .dialog({
|
|
|
+ title: `搜索${column.label}`,
|
|
|
+ message: `请输入${column.label}的搜索条件`,
|
|
|
+ prompt: {
|
|
|
+ model: '',
|
|
|
+ type: 'text'
|
|
|
+ },
|
|
|
+ cancel: true,
|
|
|
+ persistent: true
|
|
|
+ })
|
|
|
+ .onOk((data) => {
|
|
|
+ // 执行搜索
|
|
|
+ this.executeColumnSearch(column.field, data)
|
|
|
+ })
|
|
|
+ .onCancel(() => {
|
|
|
+ this.activeSearchField = ''
|
|
|
+ this.activeSearchLabel = ''
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 执行列搜索
|
|
|
+ executeColumnSearch (field, value) {
|
|
|
+ // 构建搜索参数
|
|
|
+ if (
|
|
|
+ field === 'type' ||
|
|
|
+ field === 'audit_status' ||
|
|
|
+ field === 'save_status' ||
|
|
|
+ field === 'bound_status'
|
|
|
+ ) {
|
|
|
+ const searchParams = {
|
|
|
+ [field]: value
|
|
|
+ }
|
|
|
+ // 清除其他搜索条件
|
|
|
+ this.filter = ''
|
|
|
+ this.date_range = ''
|
|
|
+
|
|
|
+ // 执行搜索
|
|
|
+ this.getList({
|
|
|
+ ...searchParams,
|
|
|
+ page: 1
|
|
|
+ })
|
|
|
+ this.filterdata = searchParams
|
|
|
+ this.$q.notify({
|
|
|
+ message: `已搜索 ${this.activeSearchLabel} 含有 "${value}" 的结果`,
|
|
|
+ icon: 'search',
|
|
|
+ color: 'positive'
|
|
|
+ })
|
|
|
+
|
|
|
+ // 重置激活的搜索字段
|
|
|
+ this.activeSearchField = ''
|
|
|
+ this.activeSearchLabel = ''
|
|
|
+ } else {
|
|
|
+ const searchParams = {
|
|
|
+ [field + '__icontains']: value
|
|
|
+ }
|
|
|
+ // 清除其他搜索条件
|
|
|
+ this.filter = ''
|
|
|
+ this.date_range = ''
|
|
|
+
|
|
|
+ // 执行搜索
|
|
|
+ this.getList({
|
|
|
+ ...searchParams,
|
|
|
+ page: 1
|
|
|
+ })
|
|
|
+ this.filterdata = searchParams
|
|
|
+ this.$q.notify({
|
|
|
+ message: `已搜索 ${this.activeSearchLabel} 含有 "${value}" 的结果`,
|
|
|
+ icon: 'search',
|
|
|
+ color: 'positive'
|
|
|
+ })
|
|
|
+
|
|
|
+ // 重置激活的搜索字段
|
|
|
+ this.activeSearchField = ''
|
|
|
+ this.activeSearchLabel = ''
|
|
|
+ }
|
|
|
+ },
|
|
|
+ class_to_name (class_id) {
|
|
|
+ const class_map = {
|
|
|
+ 1: '整盘',
|
|
|
+ 2: '托盘组',
|
|
|
+ 3: '零盘'
|
|
|
+ }
|
|
|
+ return class_map[class_id]
|
|
|
+ },
|
|
|
+ handle_row_expand (row) {
|
|
|
+ const _this = this
|
|
|
+ row.expand = !row.expand
|
|
|
+ if (row.expand) {
|
|
|
+ // 添加行级 loading 状态
|
|
|
+ _this.$set(row, 'loading', true)
|
|
|
+ getauth('bound/batch/count/' + row.id + '/', {})
|
|
|
+ .then((res) => {
|
|
|
+ _this.$set(row, 'batch_items', res.batch_items)
|
|
|
+ console.log('当前的', row.batch_items)
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ _this.$q.notify({ message: err.detail, color: 'negative' })
|
|
|
+ })
|
|
|
+ .finally(() => {
|
|
|
+ row.loading = false // 关闭加载状态
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getlog () {
|
|
|
+ // console.log(this.table_list)
|
|
|
+ console.log('当前loading状态:', this.loading)
|
|
|
+ },
|
|
|
+ getList (params = {}) {
|
|
|
+ var _this = this
|
|
|
+ _this.loading = true
|
|
|
+ // 合并基础参数
|
|
|
+ const baseParams = {
|
|
|
+ page: _this.current,
|
|
|
+ page_size: _this.pagination.rowsPerPage
|
|
|
+ }
|
|
|
+
|
|
|
+ // 创建URLSearchParams处理参数
|
|
|
+ const queryParams = new URLSearchParams({
|
|
|
+ ...baseParams,
|
|
|
+ ...params
|
|
|
+ })
|
|
|
+ console.log(queryParams)
|
|
|
+ // 过滤空值参数
|
|
|
+ Array.from(queryParams.entries()).forEach(([key, value]) => {
|
|
|
+ if (value === '' || value === null || value === undefined) {
|
|
|
+ queryParams.delete(key)
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ getauth(`${_this.pathname}?${queryParams}`)
|
|
|
+ .then((res) => {
|
|
|
+ _this.table_list = res.results.map((item) => ({
|
|
|
+ ...item,
|
|
|
+ expand: false,
|
|
|
+ batch_items: [],
|
|
|
+ loading: false
|
|
|
+ }))
|
|
|
+ _this.total = res.count
|
|
|
+ _this.max = Math.ceil(res.count / _this.pagination.rowsPerPage) || 0
|
|
|
+ _this.pathname_previous = res.previous
|
|
|
+ _this.pathname_next = res.next
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ _this.$q.notify({
|
|
|
+ message: err.detail,
|
|
|
+ icon: 'close',
|
|
|
+ color: 'negative'
|
|
|
+ })
|
|
|
+ })
|
|
|
+ .finally(() => {
|
|
|
+ _this.loading = false
|
|
|
+ })
|
|
|
+ },
|
|
|
+ changePageEnter () {
|
|
|
+ if (Number(this.paginationIpt) < 1) {
|
|
|
+ this.current = 1
|
|
|
+ this.paginationIpt = 1
|
|
|
+ } else if (Number(this.paginationIpt) > this.max) {
|
|
|
+ this.current = this.max
|
|
|
+ this.paginationIpt = this.max
|
|
|
+ } else {
|
|
|
+ this.current = Number(this.paginationIpt)
|
|
|
+ }
|
|
|
+ this.getSearchList(this.current)
|
|
|
+ },
|
|
|
+
|
|
|
+ getSearchList (page = 1) {
|
|
|
+ this.current = page
|
|
|
+ this.paginationIpt = page
|
|
|
+
|
|
|
+ // 构建过滤参数
|
|
|
+ const filterParams = {}
|
|
|
+ for (const [key, value] of Object.entries(this.filterModels)) {
|
|
|
+ if (value !== null && value !== '') {
|
|
|
+ filterParams[key] = value
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ this.getList({
|
|
|
+ number__icontains: this.filter,
|
|
|
+ document_date__range: this.date_range,
|
|
|
+ ...filterParams ,// 添加过滤条件
|
|
|
+ ...this.filterdata, // 添加其他过滤条件
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ getListPrevious () {
|
|
|
+ var _this = this
|
|
|
+ if (LocalStorage.has('auth')) {
|
|
|
+ getauth(_this.pathname_previous, {})
|
|
|
+ .then((res) => {
|
|
|
+ _this.table_list = res.results
|
|
|
+ _this.pathname_previous = res.previous
|
|
|
+ _this.pathname_next = res.next
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ _this.$q.notify({
|
|
|
+ message: err.detail,
|
|
|
+ icon: 'close',
|
|
|
+ color: 'negative'
|
|
|
+ })
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getListNext () {
|
|
|
+ var _this = this
|
|
|
+ if (LocalStorage.has('auth')) {
|
|
|
+ getauth(_this.pathname_next, {})
|
|
|
+ .then((res) => {
|
|
|
+ _this.table_list = res.results
|
|
|
+
|
|
|
+ _this.pathname_previous = res.previous
|
|
|
+ _this.pathname_next = res.next
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ _this.$q.notify({
|
|
|
+ message: err.detail,
|
|
|
+ icon: 'close',
|
|
|
+ color: 'negative'
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ reFresh () {
|
|
|
+ var _this = this
|
|
|
+ this.filterdata = {}
|
|
|
+ this.filterModels = {
|
|
|
+ bound_department: null
|
|
|
+ }
|
|
|
+ _this.getSearchList()
|
|
|
+ },
|
|
|
+
|
|
|
+ updateProxy () {
|
|
|
+ var _this = this
|
|
|
+ _this.proxyDate = _this.date
|
|
|
+ }
|
|
|
+ },
|
|
|
+ created () {
|
|
|
+ var _this = this
|
|
|
+ if (LocalStorage.has('openid')) {
|
|
|
+ _this.openid = LocalStorage.getItem('openid')
|
|
|
+ } else {
|
|
|
+ _this.openid = ''
|
|
|
+ LocalStorage.set('openid', '')
|
|
|
+ }
|
|
|
+ if (LocalStorage.has('login_name')) {
|
|
|
+ _this.login_name = LocalStorage.getItem('login_name')
|
|
|
+ } else {
|
|
|
+ _this.login_name = ''
|
|
|
+ LocalStorage.set('login_name', '')
|
|
|
+ }
|
|
|
+ if (LocalStorage.has('auth')) {
|
|
|
+ const timeStamp = Date.now()
|
|
|
+ const formattedString = date.formatDate(timeStamp, 'YYYY/MM/DD')
|
|
|
+ _this.date = formattedString
|
|
|
+ console.log(_this.date)
|
|
|
+ _this.authin = '1'
|
|
|
+ _this.getList()
|
|
|
+ } else {
|
|
|
+ _this.authin = '0'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ mounted () {
|
|
|
+ var _this = this
|
|
|
+ if (_this.$q.platform.is.electron) {
|
|
|
+ _this.height = String(_this.$q.screen.height - 290) + 'px'
|
|
|
+ } else {
|
|
|
+ _this.height = _this.$q.screen.height - 290 + '' + 'px'
|
|
|
+ }
|
|
|
+ // _this.timer = setInterval(() => {
|
|
|
+ // _this.getlog()
|
|
|
+ // }, 1000)
|
|
|
+ },
|
|
|
+ updated () {},
|
|
|
+ destroyed () {},
|
|
|
+ // 在 watch 或方法中添加调试代码
|
|
|
+ watch: {
|
|
|
+ createDate1 (val) {
|
|
|
+ if (val) {
|
|
|
+ if (val.to) {
|
|
|
+ this.createDate2 = `${val.from} - ${val.to}`
|
|
|
+ this.date_range = `${val.from},${val.to} `
|
|
|
+
|
|
|
+ // this.downloadhUrl = this.pathname + 'filelist/?' + 'document_date__range=' + this.date_range
|
|
|
+ } else {
|
|
|
+ this.createDate2 = `${val}`
|
|
|
+ this.dateArray = val.split('/')
|
|
|
+ this.searchUrl =
|
|
|
+ this.pathname +
|
|
|
+ '?' +
|
|
|
+ 'document_date__year=' +
|
|
|
+ this.dateArray[0] +
|
|
|
+ '&' +
|
|
|
+ 'document_date__month=' +
|
|
|
+ this.dateArray[1] +
|
|
|
+ '&' +
|
|
|
+ 'document_date__day=' +
|
|
|
+ this.dateArray[2]
|
|
|
+ // this.downloadhUrl = this.pathname + 'filelist/?' + 'document_date__year=' + this.dateArray[0] + '&' + 'document_date__month=' + this.dateArray[1] + '&' + 'document_date__day=' + this.dateArray[2]
|
|
|
+ }
|
|
|
+ this.date_range = this.date_range.replace(/\//g, '-')
|
|
|
+
|
|
|
+ this.getSearchList()
|
|
|
+ this.$refs.qDateProxy.hide()
|
|
|
+ } else {
|
|
|
+ this.createDate2 = ''
|
|
|
+ this.date_range = ''
|
|
|
+ this.getSearchList()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+<style scoped>
|
|
|
+/* 添加在 <style> 中 */
|
|
|
+.q-date__calendar-item--selected {
|
|
|
+ transition: all 0.3s ease;
|
|
|
+ background-color: #1976d2 !important;
|
|
|
+}
|
|
|
+
|
|
|
+.q-date__range {
|
|
|
+ background-color: rgba(25, 118, 210, 0.1);
|
|
|
+}
|
|
|
+
|
|
|
+.custom-title {
|
|
|
+ font-size: 0.9rem; /* 推荐使用相对单位 */
|
|
|
+ font-weight: 500;
|
|
|
+}
|
|
|
+/* 添加以下样式 */
|
|
|
+.custom-timeline {
|
|
|
+ --q-timeline-color: #e0e0e0; /* 覆盖时间轴线颜色变量 */
|
|
|
+}
|
|
|
+
|
|
|
+.custom-node .q-timeline__dot {
|
|
|
+ background: #485573 !important; /* 节点填充色 */
|
|
|
+ border: 2px solid #5c6b8c !important; /* 节点边框色 */
|
|
|
+}
|
|
|
+
|
|
|
+.custom-node .q-timeline__content {
|
|
|
+ color: #485573; /* 文字颜色 */
|
|
|
+}
|
|
|
+</style>
|