4 changed files with 544 additions and 17 deletions
-
2.env.development
-
3src/views/deviceManage/map3d/map.vue
-
127src/views/deviceManage/shelfManage/shelf3dPosition.vue
-
429src/views/weChatMiniProgram/index.vue
@ -0,0 +1,429 @@ |
|||
<template> |
|||
<div class="app-container row-container"> |
|||
<div class="content-area"> |
|||
<div class="area-config"> |
|||
<div class="config-item"> |
|||
<div class="config-item-main"> |
|||
<span class="data-title">数据接口</span> |
|||
<!-- 原数据接口表单 --> |
|||
<el-form ref="openForm" :model="openForm" size="small" label-width="100px"> |
|||
<el-form-item label="域名地址" prop="open_lib_http"> |
|||
<el-tooltip |
|||
v-if="!editStatus.openForm.open_lib_http" |
|||
class="item" |
|||
effect="dark" |
|||
content="双击输入框进行编辑" |
|||
placement="top" |
|||
> |
|||
<span |
|||
class="edit-readonly" |
|||
@dblclick="handleDblClick('openForm', 'open_lib_http')" |
|||
> |
|||
{{ openForm.open_lib_http }} |
|||
</span> |
|||
</el-tooltip> |
|||
<el-input |
|||
v-else |
|||
ref="openFormopen_lib_http" |
|||
v-model="openForm.open_lib_http" |
|||
@blur="handleBlur('openForm', 'open_lib_http')" |
|||
@keyup.enter="handleBlur('openForm', 'open_lib_http')" |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label="AppId" prop="open_lib_appId"> |
|||
<el-tooltip |
|||
v-if="!editStatus.openForm.open_lib_appId" |
|||
class="item" |
|||
effect="dark" |
|||
content="双击输入框进行编辑" |
|||
placement="top" |
|||
> |
|||
<span |
|||
|
|||
class="edit-readonly" |
|||
@dblclick="handleDblClick('openForm', 'open_lib_appId')" |
|||
> |
|||
{{ openForm.open_lib_appId }} |
|||
</span> |
|||
</el-tooltip> |
|||
<el-input |
|||
v-else |
|||
ref="openFormopen_lib_appId" |
|||
v-model="openForm.open_lib_appId" |
|||
@blur="handleBlur('openForm', 'open_lib_appId')" |
|||
@keyup.enter="handleBlur('openForm', 'open_lib_appId')" |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label="Secret" prop="open_lib_secret"> |
|||
<el-tooltip |
|||
v-if="!editStatus.openForm.open_lib_secret" |
|||
class="item" |
|||
effect="dark" |
|||
content="双击输入框进行编辑" |
|||
placement="top" |
|||
> |
|||
<span |
|||
class="edit-readonly" |
|||
@dblclick="handleDblClick('openForm', 'open_lib_secret')" |
|||
> |
|||
{{ openForm.open_lib_secret }} |
|||
</span> |
|||
</el-tooltip> |
|||
<el-input |
|||
v-else |
|||
ref="openFormopen_lib_secret" |
|||
v-model="openForm.open_lib_secret" |
|||
@blur="handleBlur('openForm', 'open_lib_secret')" |
|||
@keyup.enter="handleBlur('openForm', 'open_lib_secret')" |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label="sm4-key" prop="sm4_key"> |
|||
<el-tooltip |
|||
v-if="!editStatus.openForm.sm4_key" |
|||
class="item" |
|||
effect="dark" |
|||
content="双击输入框进行编辑" |
|||
placement="top" |
|||
> |
|||
<span |
|||
class="edit-readonly" |
|||
@dblclick="handleDblClick('openForm', 'sm4_key')" |
|||
> |
|||
{{ openForm.sm4_key }} |
|||
</span> |
|||
</el-tooltip> |
|||
<el-input |
|||
v-else |
|||
ref="openFormsm4_key" |
|||
v-model="openForm.sm4_key" |
|||
@blur="handleBlur('openForm', 'sm4_key')" |
|||
@keyup.enter="handleBlur('openForm', 'sm4_key')" |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label="opac_url" prop="opac_url"> |
|||
<el-tooltip |
|||
v-if="!editStatus.openForm.opac_url" |
|||
class="item" |
|||
effect="dark" |
|||
content="双击输入框进行编辑" |
|||
placement="top" |
|||
> |
|||
<span |
|||
class="edit-readonly" |
|||
@dblclick="handleDblClick('openForm', 'opac_url')" |
|||
> |
|||
{{ openForm.opac_url }} |
|||
</span> |
|||
</el-tooltip> |
|||
<el-input |
|||
v-else |
|||
ref="openFormopac_url" |
|||
v-model="openForm.opac_url" |
|||
@blur="handleBlur('openForm', 'opac_url')" |
|||
@keyup.enter="handleBlur('openForm', 'opac_url')" |
|||
/> |
|||
</el-form-item> |
|||
</el-form> |
|||
</div> |
|||
<!-- <div class="config-remarks">双击输入框可进行编辑。</div> --> |
|||
</div> |
|||
<div class="config-item"> |
|||
<div class="config-item-main"> |
|||
<span class="data-title">小程序绑定</span> |
|||
<el-form ref="vxForm" :model="vxForm" size="small" label-width="100px"> |
|||
<el-form-item label="AppID" prop="vx_mini_appId"> |
|||
<el-tooltip |
|||
v-if="!editStatus.vxForm.vx_mini_appId" |
|||
class="item" |
|||
effect="dark" |
|||
content="双击输入框进行编辑" |
|||
placement="top" |
|||
> |
|||
<span |
|||
class="edit-readonly" |
|||
@dblclick="handleDblClick('vxForm', 'vx_mini_appId')" |
|||
> |
|||
{{ vxForm.vx_mini_appId }} |
|||
</span> |
|||
</el-tooltip> |
|||
<el-input |
|||
v-else |
|||
ref="vxFormvx_mini_appId" |
|||
v-model="vxForm.vx_mini_appId" |
|||
@blur="handleBlur('vxForm', 'vx_mini_appId')" |
|||
@keyup.enter="handleBlur('vxForm', 'vx_mini_appId')" |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label="AppSecret" prop="vx_mini_secret"> |
|||
<el-tooltip |
|||
v-if="!editStatus.vxForm.vx_mini_secret" |
|||
class="item" |
|||
effect="dark" |
|||
content="双击输入框进行编辑" |
|||
placement="top" |
|||
> |
|||
<span |
|||
class="edit-readonly" |
|||
@dblclick="handleDblClick('vxForm', 'vx_mini_secret')" |
|||
> |
|||
{{ vxForm.vx_mini_secret }} |
|||
</span> |
|||
</el-tooltip> |
|||
<el-input |
|||
v-else |
|||
ref="vxFormvx_mini_secret" |
|||
v-model="vxForm.vx_mini_secret" |
|||
@blur="handleBlur('vxForm', 'vx_mini_secret')" |
|||
@keyup.enter="handleBlur('vxForm', 'vx_mini_secret')" |
|||
/> |
|||
</el-form-item> |
|||
</el-form> |
|||
</div> |
|||
<!-- <div class="config-remarks">双击输入框可进行编辑。</div> --> |
|||
</div> |
|||
<div class="config-item"> |
|||
<div class="config-item-main"> |
|||
<span class="data-title">管理员绑定</span> |
|||
<el-form ref="adminForm" :model="adminForm" size="small" label-width="100px"> |
|||
<el-form-item label="账号" prop="op_user"> |
|||
<el-tooltip |
|||
v-if="!editStatus.adminForm.op_user" |
|||
class="item" |
|||
effect="dark" |
|||
content="双击输入框进行编辑" |
|||
placement="top" |
|||
> |
|||
<span |
|||
class="edit-readonly" |
|||
@dblclick="handleDblClick('adminForm', 'op_user')" |
|||
> |
|||
{{ adminForm.op_user }} |
|||
</span> |
|||
</el-tooltip> |
|||
<el-input |
|||
v-else |
|||
ref="adminFormop_user" |
|||
v-model="adminForm.op_user" |
|||
@blur="handleBlur('adminForm', 'op_user')" |
|||
@keyup.enter="handleBlur('adminForm', 'op_user')" |
|||
/> |
|||
</el-form-item> |
|||
</el-form> |
|||
</div> |
|||
<!-- <div class="config-remarks">双击输入框可进行编辑。</div> --> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import { FetchInitScreenSetting, FetchEditScreenSetting } from '@/api/digitalScreen/index' |
|||
import { mapGetters } from 'vuex' |
|||
|
|||
export default { |
|||
name: 'WeChatMiniProgram', |
|||
components: { |
|||
}, |
|||
data() { |
|||
return { |
|||
openForm: { |
|||
open_lib_http: null, |
|||
open_lib_appId: null, |
|||
open_lib_secret: null, |
|||
sm4_key: null, |
|||
opac_url: null |
|||
}, |
|||
vxForm: { |
|||
vx_mini_appId: null, |
|||
vx_mini_secret: null |
|||
}, |
|||
adminForm: { |
|||
op_user: null |
|||
}, |
|||
editStatus: { |
|||
openForm: { |
|||
open_lib_http: false, |
|||
open_lib_appId: false, |
|||
open_lib_secret: false, |
|||
sm4_key: false, |
|||
opac_url: false |
|||
}, |
|||
vxForm: { |
|||
vx_mini_appId: false, |
|||
vx_mini_secret: false |
|||
}, |
|||
adminForm: { |
|||
op_user: false |
|||
} |
|||
}, |
|||
originalValues: { |
|||
openForm: {}, |
|||
vxForm: {}, |
|||
adminForm: {} |
|||
} |
|||
} |
|||
}, |
|||
computed: { |
|||
...mapGetters([ |
|||
'baseApi', |
|||
'user' |
|||
]) |
|||
}, |
|||
created() { |
|||
}, |
|||
mounted() { |
|||
this.$nextTick(() => { |
|||
this.initScreenSetting() |
|||
}) |
|||
}, |
|||
methods: { |
|||
// 初始化智慧大屏基本数据 |
|||
initScreenSetting() { |
|||
FetchInitScreenSetting({ 'libcode': this.user.fonds.fondsNo }).then(res => { |
|||
Object.values(res).forEach(item => { |
|||
const { code, context } = item |
|||
|
|||
// 处理数据接口相关 |
|||
if (code === 'open_lib_http') { |
|||
this.openForm.open_lib_http = context |
|||
} else if (code === 'open_lib_appId') { |
|||
this.openForm.open_lib_appId = context |
|||
} else if (code === 'open_lib_secret') { |
|||
this.openForm.open_lib_secret = context |
|||
} else if (code === 'sm4_key') { |
|||
this.openForm.sm4_key = context |
|||
} else if (code === 'opac_url') { |
|||
this.openForm.opac_url = context |
|||
} |
|||
|
|||
// 处理微信小程序绑定相关 |
|||
if (code === 'vx_mini_appId') { |
|||
this.vxForm.vx_mini_appId = context |
|||
} else if (code === 'vx_mini_secret') { |
|||
this.vxForm.vx_mini_secret = context |
|||
} |
|||
|
|||
// 处理管理员绑定 |
|||
if (code === 'op_user') { |
|||
this.adminForm.op_user = context |
|||
} |
|||
}) |
|||
}).catch(() => { |
|||
}) |
|||
}, |
|||
|
|||
// 其他表单编辑框 |
|||
handleDblClick(formName, field) { |
|||
this.originalValues[formName][field] = this[formName][field] |
|||
this.editStatus[formName][field] = true |
|||
this.$nextTick(() => { |
|||
const input = this.$refs[`${formName}${field}`] |
|||
if (input) input.focus() |
|||
}) |
|||
}, |
|||
handleBlur(formName, field) { |
|||
this.editStatus[formName][field] = false |
|||
if (this[formName][field] !== this.originalValues[formName][field]) { |
|||
this.saveEdit(formName, field) |
|||
} |
|||
}, |
|||
saveEdit(formName, field) { |
|||
console.log(this.user) |
|||
const code = field |
|||
const context = this[formName][field] |
|||
const libcode = this.user.fonds.fondsNo |
|||
const remarks = '' |
|||
|
|||
if (!context && context !== 0) { |
|||
// 其他字段的非空校验 |
|||
this.$message.warning(`${this.getFieldLabel(formName, field)}不能为空`) |
|||
this.rollbackValue(formName, field) |
|||
return |
|||
} |
|||
|
|||
// 3. 构建提交参数 |
|||
const submitParam = { code, context, libcode, remarks } |
|||
|
|||
// 4. 调用接口保存 |
|||
FetchEditScreenSetting(submitParam) |
|||
.then(() => { |
|||
this.$message.success(`${this.getFieldLabel(formName, field)}更新成功`) |
|||
// 更新原始值为新值 |
|||
// if (formName === 'title') { |
|||
// this.originalTitle = this.screen_title |
|||
// this.originalValues.title = this.screen_title |
|||
// } else if (formName === 'specialFields' && field.startsWith('show') && field !== 'show_screen') { |
|||
// // 更新屏幕的originalTime |
|||
// const screenItem = this.screenItems.find(item => item.code === field) |
|||
// if (screenItem) { |
|||
// screenItem.originalTime = context |
|||
// } |
|||
// this.originalValues[formName][field] = context |
|||
// } else if (formName !== 'specialFields' || field !== 'show_screen') { |
|||
// this.originalValues[formName][field] = context |
|||
// } |
|||
}) |
|||
.catch(() => { |
|||
this.$message.error(`${this.getFieldLabel(formName, field)}更新失败`) |
|||
this.rollbackValue(formName, field) |
|||
}) |
|||
}, |
|||
// 新增:回滚值的通用方法 |
|||
rollbackValue(formName, field) { |
|||
if (this.originalValues[formName]?.[field] !== undefined) { |
|||
if (formName === 'title') { |
|||
this.screen_title = this.originalValues[formName][field] |
|||
} else if (formName === 'specialFields' && field.startsWith('show') && field !== 'show_screen') { |
|||
// 回滚屏幕时长 |
|||
const screenItem = this.screenItems.find(item => item.code === field) |
|||
if (screenItem) { |
|||
screenItem.time = this.originalValues[formName][field] |
|||
screenItem.originalTime = this.originalValues[formName][field] |
|||
} |
|||
} else if (formName === 'specialFields') { |
|||
this[field] = this.originalValues[formName][field] |
|||
} else { |
|||
this[formName][field] = this.originalValues[formName][field] |
|||
// 回滚复选框状态 |
|||
if (formName === 'librarySettingForm') { |
|||
const originalChecked = this.originalValues[formName][`${field}_checked`] |
|||
if (originalChecked !== undefined) { |
|||
this[formName][`${field}_checked`] = originalChecked |
|||
} |
|||
} |
|||
} |
|||
} |
|||
}, |
|||
getFieldLabel(formName, field) { |
|||
const labels = { |
|||
openForm: { |
|||
open_lib_http: '域名地址', |
|||
open_lib_appId: 'AppId', |
|||
open_lib_secret: 'Secret', |
|||
sm4_key: 'SM4密钥', |
|||
opac_url: 'OPAC地址' |
|||
}, |
|||
vxForm: { |
|||
vx_mini_appId: '微信小程序AppID', |
|||
vx_mini_secret: '微信小程序Secret' |
|||
}, |
|||
adminForm: { |
|||
op_user: '管理员账号' |
|||
} |
|||
} |
|||
return labels[formName][field] || field |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style scoped lang="scss"> |
|||
@import "~@/assets/styles/digitalScreen.scss"; |
|||
.content-area { |
|||
height: 734px; |
|||
border-radius: 4px; |
|||
width: 100%; |
|||
} |
|||
|
|||
</style> |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue