|
|
@@ -782,12 +782,67 @@ function handlePreviewMediaError() {
|
|
|
}
|
|
|
|
|
|
|
|
|
-/** 状态变更 */
|
|
|
-function handleStatusChange(row, status) {
|
|
|
- const actionText = status === '1' ? '启用播放' : '设为备用'
|
|
|
- proxy.$modal.msgWarning('播放方案\u201c' + actionText + '\u201d接口暂未单独接入,建议后端提供独立状态接口后再联调,避免通过完整编辑接口覆盖素材明细。')
|
|
|
-}
|
|
|
+/** 状态变更 (启用播放/设为备用) */
|
|
|
+function handleStatusChange(row, targetStatus) {
|
|
|
+ const isEnable = targetStatus === '1'
|
|
|
+ const actionText = isEnable ? '启用播放' : '设为备用'
|
|
|
+ const confirmMsg = isEnable
|
|
|
+ ? '确认启动播放吗?注意:系统通常只允许一个方案处于当前播放状态,其他方案可能会自动转为备用。'
|
|
|
+ : '确认设为备用吗?'
|
|
|
+
|
|
|
+ // 修改点:添加第二个参数对象,设置 dangerouslyUseHTMLString: true
|
|
|
+ proxy.$modal.confirm(confirmMsg, {
|
|
|
+ dangerouslyUseHTMLString: true,
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ }).then(() => {
|
|
|
+ // 1. 显示加载状态,防止重复点击
|
|
|
+ loading.value = true
|
|
|
+
|
|
|
+ // 2. 获取该方案的最新完整数据
|
|
|
+ return getPlan(row.id)
|
|
|
+ }).then(response => {
|
|
|
+ const data = response.data || {}
|
|
|
+
|
|
|
+ // 3. 构建提交 payload,仅修改 status,保留其他所有数据(包括素材列表)
|
|
|
+ const itemList = data.robotOpsPlayPlanItemList || data.itemList || []
|
|
|
+
|
|
|
+ // 确保素材列表格式正确(复用 submitForm 中的处理逻辑)
|
|
|
+ const submitItemList = itemList.map(item => ({
|
|
|
+ id: item.id,
|
|
|
+ planId: item.planId,
|
|
|
+ assetId: item.assetId,
|
|
|
+ playOrder: item.playOrder,
|
|
|
+ staySeconds: item.assetType === 'image' ? item.staySeconds : null,
|
|
|
+ transitionType: item.transitionType || 'none'
|
|
|
+ }))
|
|
|
|
|
|
+ const payload = {
|
|
|
+ id: data.id,
|
|
|
+ planName: data.planName,
|
|
|
+ loopMode: data.loopMode,
|
|
|
+ status: String(targetStatus), // 【关键】修改为目标状态
|
|
|
+ remark: data.remark,
|
|
|
+ robotOpsPlayPlanItemList: submitItemList,
|
|
|
+ itemList: submitItemList
|
|
|
+ }
|
|
|
+
|
|
|
+ // 4. 调用更新接口
|
|
|
+ return updatePlan(payload)
|
|
|
+ }).then(() => {
|
|
|
+ proxy.$modal.msgSuccess(`${actionText}成功`)
|
|
|
+ getList() // 刷新列表以显示最新状态
|
|
|
+ }).catch((error) => {
|
|
|
+ // 如果是用户取消确认,不报错
|
|
|
+ if (error !== 'cancel') {
|
|
|
+ console.error(error)
|
|
|
+ proxy.$modal.msgError(`${actionText}失败`)
|
|
|
+ }
|
|
|
+ }).finally(() => {
|
|
|
+ loading.value = false
|
|
|
+ })
|
|
|
+}
|
|
|
/** 选择素材 */
|
|
|
function handleSelectAsset() {
|
|
|
selectedAssets.value = []
|