私域操盘手 - 表单方式提交设备添加暂不支持
This commit is contained in:
@@ -93,6 +93,7 @@ export default function DeviceDetailPage() {
|
||||
momentsSync: false,
|
||||
aiChat: false
|
||||
})
|
||||
const [tabChangeLoading, setTabChangeLoading] = useState(false)
|
||||
|
||||
useEffect(() => {
|
||||
if (!params.id) return
|
||||
@@ -330,6 +331,9 @@ export default function DeviceDetailPage() {
|
||||
const handleTabChange = (value: string) => {
|
||||
setActiveTab(value)
|
||||
|
||||
// 显示过渡加载状态
|
||||
setTabChangeLoading(true)
|
||||
|
||||
// 当切换到"关联账号"标签时,获取最新的关联微信账号信息
|
||||
if (value === "accounts") {
|
||||
fetchRelatedAccounts()
|
||||
@@ -339,6 +343,11 @@ export default function DeviceDetailPage() {
|
||||
if (value === "history") {
|
||||
fetchHandleLogs()
|
||||
}
|
||||
|
||||
// 设置短暂的延迟来关闭加载状态,模拟加载过程
|
||||
setTimeout(() => {
|
||||
setTabChangeLoading(false)
|
||||
}, 300)
|
||||
}
|
||||
|
||||
// 处理功能开关状态变化
|
||||
@@ -599,6 +608,15 @@ export default function DeviceDetailPage() {
|
||||
|
||||
<TabsContent value="info">
|
||||
<Card className="p-4 space-y-4">
|
||||
{/* 标签切换时的加载状态 */}
|
||||
{tabChangeLoading && (
|
||||
<div className="absolute inset-0 bg-white bg-opacity-80 flex justify-center items-center z-10">
|
||||
<div className="flex flex-col items-center space-y-3">
|
||||
<div className="w-8 h-8 rounded-full border-2 border-blue-500 border-t-transparent animate-spin"></div>
|
||||
<div className="text-gray-500 text-sm">加载中...</div>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
<div className="space-y-4">
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="space-y-0.5">
|
||||
@@ -697,6 +715,15 @@ export default function DeviceDetailPage() {
|
||||
</div>
|
||||
|
||||
<ScrollArea className="h-[calc(100vh-300px)]">
|
||||
{/* 标签切换时的加载状态 */}
|
||||
{tabChangeLoading && (
|
||||
<div className="absolute inset-0 bg-white bg-opacity-80 flex justify-center items-center z-10">
|
||||
<div className="flex flex-col items-center space-y-3">
|
||||
<div className="w-8 h-8 rounded-full border-2 border-blue-500 border-t-transparent animate-spin"></div>
|
||||
<div className="text-gray-500 text-sm">加载中...</div>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
{accountsLoading && (
|
||||
<div className="flex justify-center items-center py-8">
|
||||
<div className="w-6 h-6 rounded-full border-2 border-blue-500 border-t-transparent animate-spin mr-2"></div>
|
||||
@@ -781,6 +808,15 @@ export default function DeviceDetailPage() {
|
||||
</div>
|
||||
|
||||
<ScrollArea className="h-[calc(min(80vh, 500px))]">
|
||||
{/* 标签切换时的加载状态 */}
|
||||
{tabChangeLoading && (
|
||||
<div className="absolute inset-0 bg-white bg-opacity-80 flex justify-center items-center z-10">
|
||||
<div className="flex flex-col items-center space-y-3">
|
||||
<div className="w-8 h-8 rounded-full border-2 border-blue-500 border-t-transparent animate-spin"></div>
|
||||
<div className="text-gray-500 text-sm">加载中...</div>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
{logsLoading && handleLogs.length === 0 ? (
|
||||
<div className="flex justify-center items-center py-8">
|
||||
<div className="w-6 h-6 rounded-full border-2 border-blue-500 border-t-transparent animate-spin mr-2"></div>
|
||||
|
||||
0
Cunkebao/pages/device/index.vue
Normal file
0
Cunkebao/pages/device/index.vue
Normal file
@@ -2,123 +2,19 @@
|
||||
|
||||
namespace app\cunkebao\controller\device;
|
||||
|
||||
use app\common\model\Device as DeviceModel;
|
||||
use app\common\model\DeviceHandleLog as DeviceHandleLogModel;
|
||||
use app\cunkebao\controller\BaseController;
|
||||
use library\ResponseHelper;
|
||||
use library\s2\CurlHandle;
|
||||
use think\Db;
|
||||
use think\Validate;
|
||||
|
||||
/**
|
||||
* 设备管理控制器
|
||||
*/
|
||||
class PostAddDeviceV1Controller extends BaseController
|
||||
{
|
||||
/**
|
||||
* 验证IMEI是否已存在
|
||||
*
|
||||
* @return void
|
||||
* @throws \Exception
|
||||
*/
|
||||
protected function checkDeviceIsExist(): void
|
||||
{
|
||||
if ($this->request->param('imei')) {
|
||||
$where = [
|
||||
'imei' => $this->request->param('imei'),
|
||||
'companyId' => $this->getUserInfo('companyId'),
|
||||
];
|
||||
|
||||
$exist = DeviceModel::where($where)->count() > 0;
|
||||
|
||||
if ($exist) {
|
||||
throw new \Exception('设备IMEI已存在', 400);
|
||||
}
|
||||
} else {
|
||||
throw new \Exception('设备IMEI不能为空', 400);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
protected function addDeviceToS2()
|
||||
{
|
||||
$curl = CurlHandle::getInstant();
|
||||
|
||||
// $curl->setMethod()
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加设备
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function addDevice()
|
||||
{
|
||||
|
||||
$id = DeviceModel::addDevice(
|
||||
$this->request->post()
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加设备操作记录
|
||||
*
|
||||
* @param int $deviceId
|
||||
* @return void
|
||||
* @throws \Exception
|
||||
*/
|
||||
protected function addDeviceHandleLog(int $deviceId): void
|
||||
{
|
||||
DeviceHandleLogModel::addLog(
|
||||
[
|
||||
'deviceId' => $deviceId,
|
||||
'content' => '添加设备',
|
||||
'userId' => $this->getUserInfo('id'),
|
||||
'companyId' => $this->getUserInfo('companyId'),
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据验证
|
||||
*
|
||||
* @return $this
|
||||
* @throws \Exception
|
||||
*/
|
||||
protected function dataValidate(): self
|
||||
{
|
||||
$validate = Validate::make([
|
||||
'imei' => 'require|length:32',
|
||||
'memo' => 'require|/\S+/'
|
||||
]);
|
||||
|
||||
if (!$validate->check($this->request->post())) {
|
||||
throw new \Exception($validate->getError(), 400);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加设备
|
||||
* @return \think\response\Json
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
try {
|
||||
$this->dataValidate()->checkDeviceIsExist();
|
||||
|
||||
Db::startTrans();
|
||||
|
||||
$deviceId = $this->addDevice();
|
||||
$this->addDeviceHandleLog($deviceId);
|
||||
|
||||
Db::commit();
|
||||
|
||||
return ResponseHelper::success();
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
return ResponseHelper::error($e->getMessage(), $e->getCode());
|
||||
}
|
||||
exit('暂未支持');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user