余姚網(wǎng)站建設(shè)全渠道營銷管理平臺
將近一個月沒有練習(xí)了,找到之后果然打不開出了問題
【問題】運行代碼打開網(wǎng)頁后,發(fā)現(xiàn)不能正常登錄,一開始還以為是密碼記錯了,后來發(fā)現(xiàn)是數(shù)據(jù)庫沒有正常啟動,phpstudy中的數(shù)據(jù)庫一直是啟動狀態(tài),關(guān)閉不了。
【解決辦法】重啟phpstudy之后發(fā)現(xiàn)端口占用情況,想起之前的解決辦法是卸載重裝,太麻煩了,這次試了一下win+r,輸入services.msc,找到MySQL80,停止之后,發(fā)現(xiàn)PHP里面的也停止了,然后重啟之后,數(shù)據(jù)庫正常
1,先重啟數(shù)據(jù)庫
2,輸入node .\app.js 鏈接上后臺數(shù)據(jù)庫
3、再打開代碼,運行npm run serve
之后打開網(wǎng)頁可以正常登錄
接著171開始學(xué)習(xí)
一、實現(xiàn)商品內(nèi)容的添加
先添加一個之前文本的校驗,是否都填寫完整,然后才能進入到商品內(nèi)容添加界面
所以要拿到表單的驗證對象,對他進行一個驗證
通過this.$refs訪問到表單的引用addformref,然后調(diào)用校驗規(guī)則,validate
//添加商品add(){this.$refs.addFormRef.validate((valid) => {if (!valid) {return this.$message.error('請?zhí)顚懕匾谋韱雾?#xff01;')}//執(zhí)行添加的業(yè)務(wù)邏輯})
但發(fā)現(xiàn)現(xiàn)在頁面里還沒有整出來表格
補一下170集
二、實現(xiàn)富文本編譯器的添加
輸入win+r,運行cmd,執(zhí)行vue ui命令
安裝運行依賴

導(dǎo)入main中樣式
//導(dǎo)入富文本編輯器
import VueQuillEditor from 'vue-quill-editor'
//導(dǎo)入富文本編輯器對應(yīng)的樣式
import 'quill/dist/quill.core.css' // import styles
import 'quill/dist/quill.snow.css' // for snow theme
import 'quill/dist/quill.bubble.css' // for bubble theme
然后進行全局注冊
//將富文本編輯器注冊為全局組件
Vue.use(VueQuillEditor)
然后在add.vue中進行使用這個組件
打開官方文檔,找到SPA這個文件,拷貝組件名稱,把組件名稱放到商品內(nèi)容里面
<el-tab-pane label="商品內(nèi)容" name="4"><!-- 富文本編輯器組件 --><!-- 要把輸入的文本內(nèi)容,通過v-model雙向綁定到data之中,文本要雙向綁定到添加表單身上,在addform里新增一個節(jié)點,商品的詳情描述 --><!-- 商品的詳情描述對應(yīng)的屬性字段查看API文檔叫g(shù)ood_introduce.默認(rèn)是空文本 --><quill-editor v-model="addForm.goods_introduce"></quill-editor></el-tab-pane>//商品的詳情描述goods_introduce:''

給他加個最小的高度,在全局樣式表中
.ql-editor{
min-height: 300px;
}
希望在編輯器的下面,放一個添加的按鈕
<!-- 添加商品按鈕 -->
<el-button type="primary" class="btnAdd">添加商品</el-button>
為了驗證添加成功了,加一個單擊事件,
<el-button type="primary" class="btnAdd" @click="add">添加商品</el-button>
只要點擊按鈕,觸發(fā)add事件,就打印表單,看表單身上是否有商品內(nèi)容的屬性值
//添加商品add(){console.log(this.addForm)

OK
繼續(xù)回到171,通過表單的預(yù)校驗之后,準(zhǔn)備發(fā)起數(shù)據(jù)請求,在發(fā)起數(shù)據(jù)請求之后,需要對表單里面的數(shù)據(jù)做一層數(shù)據(jù)處理。
根據(jù)API文檔發(fā)現(xiàn),需要對goods_cat的數(shù)據(jù)由數(shù)組變?yōu)樽址?#xff0c;但若是直接用addform表單里的goods_cat更改之后會造成歧義。
所以需要進行深拷貝。
三、如何進行深拷貝
安裝lodash運行依賴
在add.vue中直接引入,用_進行接受
<script>
import _ from 'lodash'
export default {

//進行深拷貝const form = _.cloneDeep(this.addForm)form.goods_cat = form.goods_cat.join(',')console.log(form)})
這樣才不會報錯,成功進行轉(zhuǎn)變數(shù)值
四、處理動態(tài)參數(shù)和靜態(tài)屬性
通過查看API文檔,發(fā)現(xiàn),還需要對靜態(tài)屬性和動態(tài)屬性進行轉(zhuǎn)換到attr數(shù)組中

在這個數(shù)組中,每一個花括號里的都是一個對象,在這個對象中包含兩個屬性,一個是id,一個是value
1.先找到表單數(shù)據(jù),新增一個數(shù)組attrs
2.分別處理動態(tài)參數(shù)列表和靜態(tài)屬性列表,分別循環(huán)數(shù)組,并把循環(huán)的每一項做一個處理,把處理之后的結(jié)果push到attrs數(shù)組中。
但在這兩個數(shù)組中不只包含著兩個數(shù)據(jù),我們只需要拿到id和value即可。
this.manyTableData.forEach,拿到動態(tài)數(shù)組里面的每一個動態(tài)參數(shù)項,item項,包含多個屬性,我們只需要兩個,
attr_value:item.attr_vals.join(' ')由于之前是一個數(shù)組,現(xiàn)在要變成字符串。
//處理動態(tài)參數(shù)this.manyTableData.forEach(item =>{const newInfo = {attr_id:item.attr_id,attr_value:item.attr_vals.join(' ')}this.addForm.attrs.push(newInfo)})//處理靜態(tài)屬性this.onlyTableData.forEach(item =>{const newInfo = {attr_id:item.attr_id,attr_value:item.attr_vals}this.addForm.attrs.push(newInfo)})

五、發(fā)送請求
//添加商品add(){// console.log(this.addForm)this.$refs.addFormRef.validate( async valid => {//發(fā)起請求,添加商品//商品的名稱,必須是唯一的const {data:res} = await this.$http.post('goods',form)if(res.meta.status!==201){return this.$message.error('添加商品失敗')}this.$message.success('添加商品成功!')this.$router.push('/goods')})