修改插件
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
yiqiu
2025-11-21 00:01:45 +08:00
parent 7bc68457e9
commit cbd6250967
224 changed files with 61713 additions and 18 deletions

View File

@@ -0,0 +1,144 @@
<!-- 页面引入样式位置 -->
<link rel="stylesheet" href="/plugins/addon/idcsmart_ticket/template/clientarea/mobile/mfm201/css/ticket.css">
</head>
<body>
<div id="template" v-cloak>
<top-menu neednav>
<template #left>
<van-icon @click="goBack" class="left-icon" name="arrow-left"></van-icon>
</template>
<template #center>
<div class="nav-title">{{lang.ticket_title}}</div>
</template>
<template #right>
</template>
</top-menu>
<form action="/">
<van-search class="search-input" v-model="params.keywords" :placeholder="lang.ticket_tips1" @search="initPage">
<template #left>
<van-dropdown-menu>
<van-dropdown-item :title="params.ticket_type_id ? '': lang.type" @change="initPage"
v-model="params.ticket_type_id" :options="calcTicketType">
</van-dropdown-item>
<van-dropdown-item @close="statusClose"
:title="params.status.length !== 0 ? calcStatus : lang.ticket_label4" ref="statusDropdown">
<van-cell v-for="(item, index) in ticketStatus" @click="clickStatus(item.id)">
<template #title>
<span
:style="{'color': params.status.includes(item.id) ? 'var(--base-color-primary)' : ''}">{{item.name}}</span>
</template>
<template #right-icon v-if="params.status.includes(item.id)">
<van-icon name="success" style="color: var(--base-color-primary);">
</template>
</van-cell>
</van-dropdown-item>
</van-dropdown-menu>
</template>
</van-search>
<div class="ticket-box">
<template v-if="dataList.length !== 0">
<van-list v-model:loading="tableLoading" :finished="tableFinished" @load="getTicketList"
:immediate-check="false">
<div v-for="(item,index) in dataList" class="ticket-item" @click="itemReply(item)">
<div class="ticket-title">
<div class="title-box">
<span>{{'#' + item.ticket_num + "-" + item.title }}</span>
<span class="status-text"
:style="{background:hexToRgb(item.color),color:item.color}">{{item.status}}</span>
</div>
<div class="op-box">
<span class="op-text" @click.stop="itemUrge(item)"
v-if="item.status_id !== 4">{{lang.ticket_btn4}}</span>
<span class="op-text danger" @click.stop="itemClose(item)"
v-if="item.status_id !== 4">{{lang.ticket_btn5}}</span>
</div>
</div>
<div class="ticket-des">
<span class="ticket-lebal">{{lang.ticket_label2}}</span>
<span class="ticket-value">{{item.name || '--'}}</span>
</div>
<div class="ticket-des">
<span class="ticket-lebal">{{lang.ticket_label3}}</span>
<span class="ticket-value" v-time="item.last_reply_time">{{item.last_reply_time || '--'}}</span>
</div>
</div>
</van-list>
</template>
<van-empty v-else></van-empty>
</div>
<van-sticky position="bottom">
<div class="all-btn-box">
<van-button @click="openAddTicket" type="primary" block>{{lang.ticket_btn1}}</van-button>
</div>
</van-sticky>
</form>
<!-- 新建工单 -->
<van-popup v-model:show="isShowDialog" round closeable style="width: 90%;" @close="closeDialog">
<div class="common-pop-box">
<div class="common-pop-title">{{lang.ticket_btn1}}</div>
<div class="common-pop-body">
<van-form ref="ticketForm">
<cur-select label-align="top" :label="lang.ticket_label2" cur-class="form-select"
v-model:firpick="ticketData.ticket_type_id" :columns="ticketType" :rules="rules.ticket_type_id"
:placeholder="lang.ticket_tips2" :columns-names=" { text: 'name', value: 'id' }" right-icon="arrow">
</cur-select>
<van-field label-align="top" class="form-select" v-model="ticketData.title" :rules="rules.title"
:label="lang.ticket_label6" :placeholder="lang.ticket_tips9 ">
</van-field>
<cur-select label-align="top" :text="calcHostName" :label="lang.ticket_label7" cur-class="form-select"
@change="chooseItem" v-model:firpick="ticketData.host_ids" :columns="hostList" :rules="rules.host_ids"
:placeholder="lang.ticket_tips10" :columns-names=" { text: 'name', value: 'id' }" right-icon="arrow">
<template #option="option">
<div style="text-align: center;">
<span v-if="!hasApp">
{{option.product_name}}
<template v-if="option.dedicate_ip || option.name">
({{ option.dedicate_ip ? option.dedicate_ip : option.name ? option.name : "--"}})
</template>
</span>
<span v-else
:class="{'dis-item': option.isDue}">{{option.product_name + calcProductName(option)}}</span>
<span v-if="calcShowRenew(option) && hasApp" class="renew"
@click="handleRenew(option)">{{lang.ticket_label20}}
</span>
</div>
</template>
</cur-select>
<van-field label-align="top" type="textarea" class="form-select" v-model="ticketData.content"
:rules="rules.content" :label="lang.ticket_label8" :placeholder="lang.ticket_label12" maxlength="3000">
</van-field>
<van-field class="wai-filed" :label="lang.ticket_label13" label-align="top" readonly>
<template #input>
<div class="code-select" @click="handeSelecFile">
<van-icon name="plus"></van-icon>
</div>
<van-uploader :after-read="afterRead" ref="uploadRef" multiple accept="*" v-show="false">
</van-uploader>
</template>
</van-field>
<div class="file-box">
<van-tag v-for="(item,index) in fileList" class="file-item" :show="true" closeable size="medium"
type="primary" @close="handeDelFile(item,index)">
{{item.file.name}}
</van-tag>
</div>
</van-form>
</div>
<div class="common-pop-fotter">
<van-button class="can-btn" block @click="closeDialog">{{lang.ticket_btn9}}</van-button>
<van-button class="sub-btn" block type="primary" @click="onSubmit" :loading="loading">
{{lang.ticket_btn6}}
</van-button>
</div>
</div>
</van-popup>
</div>
<!-- =======页面独有======= -->
<script src="/plugins/addon/idcsmart_ticket/template/clientarea/mobile/mfm201/api/ticket.js"></script>
<script src="/plugins/addon/idcsmart_ticket/template/clientarea/mobile/mfm201/lang/index.js"></script>
<script src="/{$template_catalog}/template/{$themes}/components/vanSelect/curSelect.js"></script>
<script src="/plugins/addon/idcsmart_ticket/template/clientarea/mobile/mfm201/js/ticket.js"></script>