<template> <view> <text class="text-title">翻译历史:</text> <uni-list v-for="(elem,index) in searchHistory" :key="index"> <uni-list-item :title="elem.searchValue" :rightText="getLanguageTransfer(elem.fromLanguage,elem.toLanguage)" @click="itemClick(elem)" clickable></uni-list-item> </uni-list> </view> </template> <script> import { sha256 } from 'js-sha256'; export default { data() { return { searchHistory: [], array: [{ name: '中文', code: 'zh-CHS' }, { name: '英文', code: 'en' }, { name: '德文', code: 'de' }, { name: '日文', code: 'ja' }, { name: '法文', code: 'fr' }, { name: '韩文', code: 'ko' }] } }, methods: { itemClick(data) { if (data.searchValue.length > 0) { console.log(data.searchValue); console.log(data.fromLanguage); console.log(data.toLanguage); let salt = (new Date).getTime(); let appKey = '03949e1a6a334f86'; let appSecret = '9u6wiw517BYJ8ggnFIdcwoYGmqtsOHUl'; let curtime = Math.round(new Date().getTime() / 1000); let input = data.searchValue.length <= 20 ? data.searchValue : data.searchValue.slice(0, 10) + data .searchValue.length + data.searchValue.slice(-10); uni.request({ url: '/youdaoApi/api', url: 'https://openapi.youdao.com/api', method: 'GET', data: { q: data.searchValue, from: data.fromLanguage, to: data.toLanguage, appKey: appKey, salt: salt, curtime: curtime, sign: sha256(appKey + input + salt + curtime + appSecret), signType: 'v3' }, success: (data) => { this.$store.commit('setOutcome', data); uni.switchTab({ url: '/pages/translateresult/translateresult' }); } }) } }, getLanguageTransfer(from, to) { let fromStr = this.array.find(item => { return item.code == from; }); let toStr = this.array.find(item => { return item.code == to; }); return fromStr.name + '->' + toStr.name; } }, onshow() { this.searchHistory = Array.from(this.$store.getters.getHistoryList); console.log(this.searchHistory); console.log("1" + this.$store.getters.getHistoryList); this.serachHistory.reverse(); } } </script> <style> .text-title { font-size: 45rpx; color: coral; margin-top: 100rpx; } </style>
时间: 2024-03-08 22:46:26 浏览: 81
根据您提供的代码,我看不出具体哪里会调用 omShow() 方法,因为代码中并没有出现这个方法名。不过,可以看出您的代码有两个问题:
1.在 `uni.request()` 函数的参数中,有两个 `url` 属性,这是不正确的。应该将其中一个删除。
2.在 `onshow()` 方法中,您将 `this.serachHistory` 改为了 `this.searchHistory` 的拼写错误,导致无法正确地将搜索历史列表显示在页面上。正确的代码应该是:
```
onShow() {
this.searchHistory = Array.from(this.$store.getters.getHistoryList);
console.log(this.searchHistory);
console.log("1" + this.$store.getters.getHistoryList);
this.searchHistory.reverse();
}
```
希望这些信息能帮到您,如果您还有其他问题,欢迎随时提出。
相关问题
<template> <view class="mine-panel-list"> <view class="mine-panel-item"> <uni-forms ref="mineForm" :rules="mineRules" :modelValue="mineFormData"> <uni-forms-item label="姓名" :required="true" name="name"> <uni-easyinput v-model="mineFormData.name" placeholder="请填写姓名" :clearable="false"></uni-easyinput> </uni-forms-item> </uni-forms> </view> <button type="primary" size="mini" @click="save('mineForm')">保存</button> </view> </template> <script> export default { data() { return { mineFormData: { name: uni.getStorageSync('name') || '', // 从本地存储获取之前保存的姓名 }, } }; }, onReady() { this.$refs.mineForm.setRules(this.mineRules) }, methods: { save(ref) { this.$refs[ref].validate().then(res => { console.log('success', res); uni.setStorageSync('name', this.mineFormData.name); // 将姓名保存到本地存储 uni.showToast({ title: '保存成功' });this.$emit('update-name', this.mineFormData.name); }).catch(err => { console.log('err', err); }) } } } </script>这是mine.vue的代码
感谢提供了`mine.vue`的代码。根据你的代码,我注意到在`mine.vue`组件中,你使用了`uni-forms`和`uni-easyinput`组件来实现表单和输入框功能,并在保存按钮的点击事件中进行了表单验证和保存操作。
根据你的描述,你想要在`home.vue`页面中显示`mine.vue`组件中填入的姓名信息。为了实现这个目标,请按照以下步骤进行修改:
1. 在`home.vue`组件的模板中,将`<mine></mine>`标签放在需要显示姓名信息的位置,例如:
```html
<template>
<div>
<p>{{ mineName }}</p>
<mine ref="mineComponent" @update-name="updateName"></mine>
</div>
</template>
```
2. 在`home.vue`组件的脚本中,添加一个名为`updateName`的方法,用于更新姓名信息:
```javascript
<script>
export default {
data() {
return {
mineName: ''
};
},
methods: {
updateName(name) {
this.mineName = name;
}
}
}
</script>
```
3. 在`mine.vue`组件的保存按钮点击事件中,添加一个触发事件,将姓名信息传递给父组件:
```javascript
methods: {
save(ref) {
this.$refs[ref].validate().then(res => {
console.log('success', res);
uni.setStorageSync('name', this.mineFormData.name); // 将姓名保存到本地存储
uni.showToast({
title: '保存成功'
});
this.$emit('update-name', this.mineFormData.name); // 触发事件,将姓名信息传递给父组件
}).catch(err => {
console.log('err', err);
})
}
}
```
通过以上修改,当在`mine.vue`组件中填入姓名并点击保存后,姓名信息将会传递给`home.vue`组件,并更新`mineName`变量,从而在页面上显示出来。
希望这次能够解决问题。如果还有其他疑问,请随时提出。
根据CHECK_TYPE值来决定<text>检查类型:{{ item.CHECK_TYPE }}</text>中检查类型:后显示的内容:CHECK_TYPE 为0时,显示日常检查,CHECK_TYPE 为1时,显示综合检查,CHECK_TYPE 为2时,显示季节性检查
为了根据 `CHECK_TYPE` 的值动态显示不同的检查类型,可以在 Vue 组件的 `methods` 中添加一个方法来处理这个逻辑。然后在模板中调用这个方法来显示相应的检查类型。
以下是具体的实现步骤:
1. **在 `methods` 中添加一个方法**:
```javascript
methods: {
// 其他方法...
getCheckTypeLabel(checkType) {
switch (checkType) {
case 0:
return '日常检查';
case 1:
return '综合检查';
case 2:
return '季节性检查';
default:
return '未知检查类型';
}
}
}
```
2. **在模板中调用这个方法**:
```html
<view class="task-info">
<text>组织级别:{{ item.ORGAN_LEVEL }}</text>
<text>检查人:{{ item.CHECK_PER }}</text>
<text>检查类型:{{ getCheckTypeLabel(item.CHECK_TYPE) }}</text>
<text>检查负责人:{{ item.CHECK_Responsible }}</text>
</view>
```
这样,当 `CHECK_TYPE` 的值为 0 时,会显示“日常检查”;为 1 时,会显示“综合检查”;为 2 时,会显示“季节性检查”。如果 `CHECK_TYPE` 的值不在这些范围内,则会显示“未知检查类型”。
完整的代码如下:
```html
<template>
<view>
<view class="bg-img"></view>
<u-navbar title="检查" :autoBack="true"></u-navbar>
<view class="container">
<!-- 过滤栏 -->
<view class="filter-bar">
<view class="filter-item filter-item-select" @click="setFilter('all')">全部</view>
<view class="filter-item" @click="setFilter('completed')">已完成</view>
<view class="filter-item" @click="setFilter('delayed')">已延期</view>
</view>
<button class="torcg to-button" @click="navigateToNotice()">隐患整改通知单</button>
<!-- 任务列表 -->
<view class="task-list">
<view v-for="(item, index) in data.rows" :key="index" class="task-item">
<view class="task-name">{{ item.M_T_NAME }}</view>
<view class="task-info">
<text>组织级别:{{ item.ORGAN_LEVEL }}</text>
<text>检查人:{{ item.CHECK_PER }}</text>
<text>检查类型:{{ getCheckTypeLabel(item.CHECK_TYPE) }}</text>
<text>检查负责人:{{ item.CHECK_Responsible }}</text>
</view>
<button class="signin-button s-button" @click="navigate(item.Main_task_Nopri, item.CHECK_TYPE)">录入排查记录</button>
<button class="sign-button s-button" @click.stop="openModal(item.Main_task_Nopri)">签到</button>
</view>
</view>
<!-- 新增的模态框组件 -->
<view class="modal" v-if="isModalVisible">
<view class="modal-content">
<text class="title">签到</text>
<u-form>
<u-form-item class="picupload" label="上传签字" prop="upload" labelWidth="80px">
<u-upload width="80" height="40" maxCount="6" @on-success="uploadUpload" @on-remove="delUpload" action="" v-model="upload"></u-upload>
<button type="button" class="btn-add-file" @click="handleAddFile">点击进入签名</button>
</u-form-item>
</u-form>
<button class="m-botton" @click="submitSign">提交</button>
<button class="m-botton" @click="closeModal">取消</button>
</view>
</view>
</view>
</view>
</template>
<script>
import request from '@/utils/request';
import { getToken } from '@/utils/auth';
export default {
data() {
return {
data: { status: null, rows: [] },
isModalVisible: false,
selectedTaskId: null,
selectedImage: null
};
},
methods: {
handleAddFile() {
uni.navigateTo({
url: '/pages/SIGN/SIGN'
});
},
navigate(Main_task_Nopri, CHECK_TYPE) {
uni.navigateTo({
url: `/pages/HIA/recodManage/recodManage?id=${encodeURIComponent(Main_task_Nopri)}&checkType=${encodeURIComponent(CHECK_TYPE)}`
});
},
getUrl(Main_task_Nopri) {
return `/pages/HIA/recodManage/recodManage?id=${encodeURIComponent(Main_task_Nopri)}`;
},
fetchData() {
request({
url: '/api/v_special_todo_list/GetPageData',
method: 'POST',
header: {
'content-type': 'application/json',
Authorization: `Bearer ${getToken()}`
},
dataType: 'json'
})
.then((response) => {
this.data = response;
console.log(response);
})
.catch((error) => {
console.error(error);
uni.showToast({ title: '请求失败', icon: 'none' });
});
},
filterTasks(status) {
this.filterStatus = status;
},
navigateToSignPage(Main_task_Nopri) {
if (Main_task_Nopri) {
uni.navigateTo({
url: `/pages/SIGN/SIGN`
});
}
},
openModal(taskId) {
this.selectedTaskId = taskId;
this.isModalVisible = true;
},
closeModal() {
this.isModalVisible = false;
this.selectedImage = null;
},
onFileChange(event) {
this.selectedImage = event.target.files[0];
},
submitSign() {
if (this.selectedTaskId && this.selectedImage) {
const formData = new FormData();
formData.append('taskId', this.selectedTaskId);
formData.append('image', this.selectedImage);
request({
url: '/api/sign',
method: 'POST',
header: {
'content-type': 'multipart/form-data',
Authorization: `Bearer ${getToken()}`
},
data: formData
})
.then(() => {
this.closeModal();
uni.showToast({ title: '签到成功', icon: 'success' });
})
.catch((error) => {
console.error(error);
uni.showToast({ title: '签到失败', icon: 'none' });
});
}
},
navigateToNotice() {
uni.navigateTo({
url: '/pages/HIA/dglist/dglist'
});
},
getCheckTypeLabel(checkType) {
switch (checkType) {
case 0:
return '日常检查';
case 1:
return '综合检查';
case 2:
return '季节性检查';
default:
return '未知检查类型';
}
}
},
computed: {
filteredTasks() {
if (!this.filterStatus) {
return this.tableData;
}
return this.tableData.filter((item) => item.M_TASK_STATUS === this.filterStatus);
}
},
mounted() {
this.fetchData();
}
};
</script>
<style lang="scss">
/deep/ uni-view {
background-color: transparent !important;
}
.btn-add-file {
width: 140px;
/* 按钮宽度 */
height: 40px;
line-height: 40px;
/* 按钮高度 */
font-size: 16px;
/* 字体大小 */
background-color: #585ce5;
/* 背景颜色 */
color: white;
/* 文字颜色 */
border: none;
/* 边框 */
border-radius: 4px;
/* 圆角 */
cursor: pointer;
/* 鼠标悬停时显示手形指针 */
transition: background-color 0.3s ease;
/* 平滑过渡效果 */
&:hover {
background-color: #585ce5;
/* 鼠标悬停时背景颜色变化 */
}
}
.container {
padding: 10px;
margin-top: 90upx;
}
.filter-bar {
display: flex;
justify-content: flex-start;
align-items: center;
width: 100%;
}
.filter-item {
padding: 5px 10px;
margin-right: 10px;
font-size: 16px;
font-weight: bold;
color: #666666;
}
.filter-item-select {
font-size: 18px;
color: #585ce5;
border-bottom: 2px solid #585ce5;
}
.to-button {
margin-top: 10px;
color: #fff;
background-color: #585ce5;
font-size: 16px;
font-weight: bold;
}
.task-list {
margin-top: 10px;
overflow-y: auto;
flex-wrap: nowrap;
width: 100%;
height: calc(100vh - 165px);
}
.task-item {
position: relative;
height: auto;
min-width: 200px;
padding: 10px;
background-color: #fff !important;
border: 1px solid #eaeaec;
border-radius: 10px;
margin-bottom: 10px;
}
.task-name {
font-size: 16px;
font-weight: bold;
margin-bottom: 5px;
}
.task-info {
display: block;
font-size: 14px;
color: #666666;
margin-bottom: 5px;
}
.task-info text {
display: block;
margin-bottom: 5px;
}
.s-button {
font-size: 14px;
color: #fff;
background-color: #585ce5;
}
.signin-button {
position: absolute;
bottom: 10px;
right: 10px;
}
.sign-button {
position: absolute;
bottom: 60px;
right: 10px;
}
.modal {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.5) !important;
display: flex;
justify-content: center;
align-items: center;
}
.modal-content {
background: white !important;
padding: 20px;
border-radius: 5px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.3) !important;
max-width: 400px;
width: 90%;
}
.title {
font-size: 18px;
font-weight: bold;
}
.m-botton {
color: #fff;
background-color: #585ce5;
font-size: 16px;
font-weight: bold;
margin-bottom: 10px;
}
</style>
```
阅读全文
相关推荐
















