添加其它技术分类

This commit is contained in:
Dev
2026-09-23 18:05:15 +08:00
parent a07c495fe0
commit bde6edd76a
5 changed files with 45 additions and 11 deletions
@@ -179,11 +179,15 @@ class Common extends Api
'key' => $key == 0 ? '-1' : $key,
];
}
// 过滤空值,避免配置项为空时返回空字符串标签
$toLabels = function ($value) {
return array_values(array_filter(array_map('trim', explode(',', $value ?? ''))));
};
$config = [
'languageLabels' => explode(',', $code_languages),
'frontLabels' => explode(',', $front_techs),
'backendLabels' => explode(',', $back_techs),
'otherLabels' => explode(',', $other_techs),
'languageLabels' => $toLabels($code_languages),
'frontLabels' => $toLabels($front_techs),
'backendLabels' => $toLabels($back_techs),
'otherLabels' => $toLabels($other_techs),
'developTypes' => $developTypes,
];
@@ -20,6 +20,10 @@ class Developer extends Api
* @param array $images 图片数组
* @param array $files 文件数组
* @param string $contact 联系方式
* @param array $languageSelected 选中的编程语言
* @param array $frontSelected 选中的前端技术
* @param array $backendSelected 选中的后端技术
* @param array $otherSelected 选中的其它技术
*/
public function submit()
{
@@ -46,7 +50,16 @@ class Developer extends Api
if (DeveloperService::getOne(['user_id' => $userId])) {
exception('您已经申请入驻,请勿重复申请!');
}
$params['tags'] = array_filter(array_merge($params['languageSelected'], $params['frontSelected'], $params['backendSelected']));
// 合并各技术分类选中的标签(编程语言/前端技术/后端技术/其它技术)
$params['tags'] = array_values(array_unique(array_filter(array_merge(
(array)($params['languageSelected'] ?? []),
(array)($params['frontSelected'] ?? []),
(array)($params['backendSelected'] ?? []),
(array)($params['otherSelected'] ?? [])
))));
if (empty($params['tags'])) {
$this->error('技能标签不能为空');
}
DeveloperService::instance()->create($params, $userId);
$this->success('申请已提交,等待审核通过即可接单');
} catch (\Exception $e) {
@@ -27,7 +27,7 @@ class DeveloperService
$saveData = [
'user_id' => $userId,
'job' => $data['job'] ?? '',
'tags' => implode(',', $data['tags'] ?? ''),
'tags' => implode(',', array_filter((array)($data['tags'] ?? []))),
'work_years' => $data['work_years'] ?? 0,
'contact' => $data['contact'] ?? '',
'desc' => $data['desc'] ?? '',
+10 -5
View File
@@ -9,12 +9,15 @@ Page({
languageLabels: [],
frontLabels: [],
backendLabels: [],
otherLabels: [],
languageSelected: [],
frontSelected: [],
backendSelected: [],
otherSelected: [],
languageSelectedMap: {},
frontSelectedMap: {},
backendSelectedMap: {},
otherSelectedMap: {},
desc: '',
job: '',
workYears: 0,
@@ -28,9 +31,10 @@ Page({
wx.$util.request(wx.$api.CommonGetMiniConfig, {}, 'GET').then(res => {
if (res.code === 1) {
this.setData({
languageLabels: res.data.languageLabels,
frontLabels: res.data.frontLabels,
backendLabels: res.data.backendLabels,
languageLabels: res.data.languageLabels || [],
frontLabels: res.data.frontLabels || [],
backendLabels: res.data.backendLabels || [],
otherLabels: res.data.otherLabels || [],
});
}
});
@@ -64,11 +68,11 @@ Page({
});
},
onSubmit() {
const { backendSelected, frontSelected, languageSelected, contact, job, workYears, desc } = this.data;
const { backendSelected, frontSelected, languageSelected, otherSelected, contact, job, workYears, desc } = this.data;
const validations = [
{
condition: !backendSelected.length && !frontSelected.length && !languageSelected.length,
condition: !backendSelected.length && !frontSelected.length && !languageSelected.length && !otherSelected.length,
message: '技能不能为空'
},
{
@@ -106,6 +110,7 @@ Page({
backendSelected: backendSelected,
frontSelected: frontSelected,
languageSelected: languageSelected,
otherSelected: otherSelected,
job: job,
contact: contact,
work_years: workYears,
@@ -38,6 +38,18 @@
>{{item}}</view>
</view>
</t-collapse-panel>
<t-collapse-panel header="其它技术" value="{{3}}">
<view class="chip-list">
<view
wx:for="{{otherLabels}}"
wx:key="index"
class="chip-item {{otherSelectedMap[item] ? 'chip-item--active' : ''}}"
data-field="other"
data-value="{{item}}"
bindtap="onChipTap"
>{{item}}</view>
</view>
</t-collapse-panel>
</t-collapse>
<t-divider />