|
@@ -19,14 +19,14 @@
|
|
|
</a-radio-group>
|
|
|
</a-form-item>
|
|
|
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="项目名称">
|
|
|
- <a-input placeholder="请输入项目名称" v-decorator="['projectName', validatorRules.projectName]" />
|
|
|
+ <a-input placeholder="请输入项目名称" v-decorator="['projectName', validatorRules.projectName]"/>
|
|
|
</a-form-item>
|
|
|
- <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="行业">
|
|
|
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="行业">
|
|
|
<j-tree-select ref="treeSelect" placeholder="请选择行业" v-decorator="['industryId']"
|
|
|
- dict="sys_category,name,id" pidField="pid" pidValue="f5cb2d2d28417b3b65a6dd744bcb9a76">
|
|
|
+ dict="sys_category,name,id" pidField="pid" pidValue="f5cb2d2d28417b3b65a6dd744bcb9a76">
|
|
|
</j-tree-select>
|
|
|
</a-form-item>
|
|
|
- <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="供应商" v-if="model.mediaId=='2'||model.mediaId=='4'">
|
|
|
+ <!--<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="供应商" v-if="model.mediaId=='2'||model.mediaId=='4'">
|
|
|
<a-select
|
|
|
optionFilterProp="children"
|
|
|
showSearch
|
|
@@ -37,8 +37,8 @@
|
|
|
item.supplierName
|
|
|
}}</a-select-option>
|
|
|
</a-select>
|
|
|
- </a-form-item>
|
|
|
-
|
|
|
+ </a-form-item>-->
|
|
|
+
|
|
|
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="广告主名称">
|
|
|
<a-select
|
|
|
@change="handleChange"
|
|
@@ -50,20 +50,22 @@
|
|
|
>
|
|
|
<a-select-option :value="item.id" v-for="(item, index) of list" :key="index">{{
|
|
|
item.name
|
|
|
- }}</a-select-option>
|
|
|
+ }}
|
|
|
+ </a-select-option>
|
|
|
</a-select>
|
|
|
</a-form-item>
|
|
|
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="最高出价">
|
|
|
- <a-input placeholder="请输入最高出价" v-decorator="['maxBid', validatorRules.maxBid]" addonAfter="元" />
|
|
|
+ <a-input placeholder="请输入最高出价" v-decorator="['maxBid', validatorRules.maxBid]" addonAfter="元"/>
|
|
|
</a-form-item>
|
|
|
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="最高转化出价">
|
|
|
- <a-input placeholder="最高转化出价" v-decorator="['maxDeepCpaBid']" addonAfter="元" />
|
|
|
+ <a-input placeholder="最高转化出价" v-decorator="['maxDeepCpaBid']" addonAfter="元"/>
|
|
|
</a-form-item>
|
|
|
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="销售">
|
|
|
<a-select showSearch optionFilterProp="children" style="width: 100%" :filterOption="filterOption"
|
|
|
- v-decorator="['saleId', { rules: [{ required: true,message: '请选择销售' }] }]">
|
|
|
+ v-decorator="['saleId']">
|
|
|
<a-select-option v-for="appModel in optionsElse" :key="appModel.userId + new Date().getTime()"
|
|
|
- :value="appModel.userId">{{ appModel.realName }}  {{ appModel.roleName }}</a-select-option>
|
|
|
+ :value="appModel.userId">{{ appModel.realName }}  {{ appModel.roleName }}
|
|
|
+ </a-select-option>
|
|
|
</a-select>
|
|
|
</a-form-item>
|
|
|
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="运营负责人">
|
|
@@ -81,7 +83,8 @@
|
|
|
v-for="appModel in options"
|
|
|
:key="appModel.userId + new Date().getTime()"
|
|
|
:value="appModel.userId"
|
|
|
- >{{ appModel.realName }}  {{ appModel.roleName }}</a-select-option
|
|
|
+ >{{ appModel.realName }}  {{ appModel.roleName }}
|
|
|
+ </a-select-option
|
|
|
>
|
|
|
</a-select>
|
|
|
</a-form-item>
|
|
@@ -94,13 +97,14 @@
|
|
|
@blur="handleBlur"
|
|
|
@change="handleChange"
|
|
|
:filterOption="filterOption"
|
|
|
- v-decorator="['designResponsibleId', { rules: [{ required: true, message: '请选择运营负责人' }] }]"
|
|
|
+ v-decorator="['designResponsibleId']"
|
|
|
>
|
|
|
<a-select-option
|
|
|
- v-for="appModel in options"
|
|
|
+ v-for="appModel in designs"
|
|
|
:key="appModel.userId + new Date().getTime()"
|
|
|
:value="appModel.userId"
|
|
|
- >{{ appModel.realName }}  {{ appModel.roleName }}</a-select-option
|
|
|
+ >{{ appModel.realName }}  {{ appModel.roleName }}
|
|
|
+ </a-select-option
|
|
|
>
|
|
|
</a-select>
|
|
|
</a-form-item>
|
|
@@ -110,229 +114,237 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import { httpAction, getAction } from '@/api/manage'
|
|
|
-import pick from 'lodash.pick'
|
|
|
-import moment from 'moment'
|
|
|
-import JSelectDepart from '@/components/jeecgbiz/JSelectDepart'
|
|
|
-import JSelectUserByDep from '@/components/jeecgbiz/JSelectUserByDep'
|
|
|
-import JTreeSelect from '@/components/jeecg/JTreeSelect'
|
|
|
-import { mapGetters } from 'vuex'
|
|
|
-export default {
|
|
|
- name: 'ProjectModal',
|
|
|
- components: {
|
|
|
- JSelectUserByDep,
|
|
|
- JSelectDepart,
|
|
|
- JTreeSelect
|
|
|
- },
|
|
|
- data() {
|
|
|
- return {
|
|
|
- title: '操作',
|
|
|
- visible: false,
|
|
|
- model: {},
|
|
|
- labelCol: {
|
|
|
- xs: { span: 24 },
|
|
|
- sm: { span: 5 }
|
|
|
+ import {getAction, httpAction} from '@/api/manage'
|
|
|
+ import pick from 'lodash.pick'
|
|
|
+ import JSelectDepart from '@/components/jeecgbiz/JSelectDepart'
|
|
|
+ import JSelectUserByDep from '@/components/jeecgbiz/JSelectUserByDep'
|
|
|
+ import JTreeSelect from '@/components/jeecg/JTreeSelect'
|
|
|
+ import {mapGetters} from 'vuex'
|
|
|
+
|
|
|
+ export default {
|
|
|
+ name: 'ProjectModal',
|
|
|
+ components: {
|
|
|
+ JSelectUserByDep,
|
|
|
+ JSelectDepart,
|
|
|
+ JTreeSelect
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ title: '操作',
|
|
|
+ visible: false,
|
|
|
+ model: {},
|
|
|
+ labelCol: {
|
|
|
+ xs: {span: 24},
|
|
|
+ sm: {span: 5}
|
|
|
+ },
|
|
|
+ wrapperCol: {
|
|
|
+ xs: {span: 24},
|
|
|
+ sm: {span: 16}
|
|
|
+ },
|
|
|
+ industryId: '',
|
|
|
+ confirmLoading: false,
|
|
|
+ form: this.$form.createForm(this),
|
|
|
+ validatorRules: {
|
|
|
+ projectName: {rules: [{required: true, message: '请输入项目名称!'}]},
|
|
|
+ industryId: {rules: [{required: true, message: '请选择行业!'}]},
|
|
|
+ advertiserId: {rules: [{required: true, message: '请选择广告主!'}]},
|
|
|
+ responsibleName: {rules: [{required: true, message: '请选择负责人!'}]},
|
|
|
+ maxBid: {rules: [{required: true, message: '请输入最高出价!'}, {validator: this.validateInputCode}]},
|
|
|
+ },
|
|
|
+ url: {
|
|
|
+ add: '/ctop/project/add',
|
|
|
+ edit: '/ctop/project/edit',
|
|
|
+ getList: '/ctop/advertiser/list'
|
|
|
+ },
|
|
|
+ list: [],
|
|
|
+ resId: '',
|
|
|
+ shejiId: '',
|
|
|
+ options: [],
|
|
|
+ designs: [],
|
|
|
+ optionsElse: [],
|
|
|
+ supplierList: []
|
|
|
+ }
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ this.getSupplierList()
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ validateInputCode(rule, value, callback) {
|
|
|
+ if (!value || value > 0) {
|
|
|
+ callback()
|
|
|
+ } else {
|
|
|
+ callback('请输入大于0的最高报价!')
|
|
|
+ }
|
|
|
},
|
|
|
- wrapperCol: {
|
|
|
- xs: { span: 24 },
|
|
|
- sm: { span: 16 }
|
|
|
+ ...mapGetters(['nickname', 'avatar', 'userInfo']),
|
|
|
+ onChange(e) {
|
|
|
+ console.log(`checked = ${e.target.value}`)
|
|
|
},
|
|
|
- industryId:'',
|
|
|
- confirmLoading: false,
|
|
|
- form: this.$form.createForm(this),
|
|
|
- validatorRules: {
|
|
|
- projectName: { rules: [{ required: true, message: '请输入项目名称!' }] },
|
|
|
- industryId: { rules: [{ required: true, message: '请选择行业!' }] },
|
|
|
- advertiserId: { rules: [{ required: true, message: '请选择广告主!' }] },
|
|
|
- supplierCode:{ rules: [{ required: true, message: '请选择供应商!' }],initialValue:'kuaishou_001'},
|
|
|
- responsibleName: { rules: [{ required: true, message: '请选择负责人!' }] },
|
|
|
- maxBid: { rules: [{ required: true, message: '请输入最高出价!' }, { validator: this.validateInputCode }] },
|
|
|
+ handleChange() {
|
|
|
},
|
|
|
- url: {
|
|
|
- add: '/ctop/project/add',
|
|
|
- edit: '/ctop/project/edit',
|
|
|
- getList: '/ctop/advertiser/list'
|
|
|
+ handleChange(value) {
|
|
|
+ console.log(`selected ${value}`)
|
|
|
},
|
|
|
- list: [],
|
|
|
- resId: '',
|
|
|
- shejiId: '',
|
|
|
- options: [],
|
|
|
- optionsElse:[],
|
|
|
- supplierList:[]
|
|
|
- }
|
|
|
- },
|
|
|
- created() {
|
|
|
- this.getSupplierList()
|
|
|
- },
|
|
|
- methods: {
|
|
|
- validateInputCode(rule, value, callback) {
|
|
|
- if (!value || value > 0) {
|
|
|
- callback()
|
|
|
- } else {
|
|
|
- callback('请输入大于0的最高报价!')
|
|
|
- }
|
|
|
- },
|
|
|
- ...mapGetters(['nickname', 'avatar', 'userInfo']),
|
|
|
- onChange(e) {
|
|
|
- console.log(`checked = ${e.target.value}`)
|
|
|
- },
|
|
|
- handleChange() {},
|
|
|
- handleChange(value) {
|
|
|
- console.log(`selected ${value}`)
|
|
|
- },
|
|
|
- handleBlur() {
|
|
|
- console.log('blur')
|
|
|
- },
|
|
|
- handleFocus() {
|
|
|
- console.log('focus')
|
|
|
- },
|
|
|
- filterOption(input, option) {
|
|
|
- return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
|
|
- },
|
|
|
- getList() {
|
|
|
- var params = {}
|
|
|
- params.userId = this.userInfo().id
|
|
|
- console.log(params)
|
|
|
- getAction(this.url.getList, { userId: this.userInfo().id })
|
|
|
- .then(res => {
|
|
|
+ handleBlur() {
|
|
|
+ console.log('blur')
|
|
|
+ },
|
|
|
+ handleFocus() {
|
|
|
+ console.log('focus')
|
|
|
+ },
|
|
|
+ filterOption(input, option) {
|
|
|
+ return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
|
|
+ },
|
|
|
+ getList() {
|
|
|
+ var params = {}
|
|
|
+ params.userId = this.userInfo().id
|
|
|
+ console.log(params)
|
|
|
+ getAction(this.url.getList, {userId: this.userInfo().id})
|
|
|
+ .then(res => {
|
|
|
+ if (res.success) {
|
|
|
+ console.log(res)
|
|
|
+ this.list = res.result.records
|
|
|
+
|
|
|
+ } else {
|
|
|
+ this.$message.warning(res.message)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .finally(() => {
|
|
|
+ })
|
|
|
+ },
|
|
|
+ getSupplierList() {
|
|
|
+ var params = {}
|
|
|
+ getAction('/ctop/supplierList/list').then(res => {
|
|
|
if (res.success) {
|
|
|
- console.log(res)
|
|
|
- this.list = res.result.records
|
|
|
-
|
|
|
+ this.supplierList = res.result.records
|
|
|
} else {
|
|
|
this.$message.warning(res.message)
|
|
|
}
|
|
|
})
|
|
|
- .finally(() => {})
|
|
|
- },
|
|
|
- getSupplierList(){
|
|
|
- var params = {}
|
|
|
- getAction('/ctop/supplierList/list').then(res=>{
|
|
|
- if(res.success){
|
|
|
- this.supplierList = res.result.records
|
|
|
- } else {
|
|
|
- this.$message.warning(res.message)
|
|
|
- }
|
|
|
+ },
|
|
|
+ add() {
|
|
|
+ this.edit({
|
|
|
+ responsibleId: this.userInfo().id, //用户Id
|
|
|
+ mediaId: '2'
|
|
|
})
|
|
|
- },
|
|
|
- add() {
|
|
|
- this.edit({
|
|
|
- responsibleId: this.userInfo().id, //用户Id
|
|
|
- mediaId: '2'
|
|
|
- })
|
|
|
- },
|
|
|
- edit(record) {
|
|
|
- this.getSupplierList()
|
|
|
- this.getList()
|
|
|
-
|
|
|
- var params = { ...record }
|
|
|
- if (params.advertiserId) {
|
|
|
- params.advertiserId = { key: params.advertiserId, label: params.advertiserName }
|
|
|
- }
|
|
|
- // if (params.industryId) {
|
|
|
- // params.industryId = { key: params.industryId, label: params.industryId_dictText }
|
|
|
- // }
|
|
|
- console.log(record)
|
|
|
- this.form.resetFields()
|
|
|
- this.model = Object.assign({}, params)
|
|
|
- this.model.maxBid = this.model.maxBid ? this.model.maxBid / 1000 : 0
|
|
|
- this.model.maxDeepCpaBid = this.model.maxDeepCpaBid ? this.model.maxDeepCpaBid / 1000 : 0
|
|
|
- this.visible = true
|
|
|
- this.$nextTick(() => {
|
|
|
- console.log(this.model)
|
|
|
- this.form.setFieldsValue(
|
|
|
- pick(
|
|
|
- this.model,
|
|
|
- 'projectName',
|
|
|
- 'industryId',
|
|
|
- 'advertiserId',
|
|
|
- 'responsibleName',
|
|
|
- 'maxBid',
|
|
|
- 'maxDeepCpaBid',
|
|
|
- 'userId',
|
|
|
- 'designResponsibleId',
|
|
|
- 'responsibleId',
|
|
|
- 'industryCode',
|
|
|
- 'supplierCode',
|
|
|
- // 'advertiserType',
|
|
|
- 'saleId'
|
|
|
+ },
|
|
|
+ edit(record) {
|
|
|
+ this.getSupplierList()
|
|
|
+ this.getList()
|
|
|
+
|
|
|
+ var params = {...record}
|
|
|
+ if (params.advertiserId) {
|
|
|
+ params.advertiserId = {key: params.advertiserId, label: params.advertiserName}
|
|
|
+ }
|
|
|
+ // if (params.industryId) {
|
|
|
+ // params.industryId = { key: params.industryId, label: params.industryId_dictText }
|
|
|
+ // }
|
|
|
+ console.log(record)
|
|
|
+ this.form.resetFields()
|
|
|
+ this.model = Object.assign({}, params)
|
|
|
+ this.model.maxBid = this.model.maxBid ? this.model.maxBid / 1000 : 0
|
|
|
+ this.model.maxDeepCpaBid = this.model.maxDeepCpaBid ? this.model.maxDeepCpaBid / 1000 : 0
|
|
|
+ this.visible = true
|
|
|
+ this.$nextTick(() => {
|
|
|
+ console.log(this.model)
|
|
|
+ this.form.setFieldsValue(
|
|
|
+ pick(
|
|
|
+ this.model,
|
|
|
+ 'projectName',
|
|
|
+ 'industryId',
|
|
|
+ 'advertiserId',
|
|
|
+ 'responsibleName',
|
|
|
+ 'maxBid',
|
|
|
+ 'maxDeepCpaBid',
|
|
|
+ 'userId',
|
|
|
+ 'designResponsibleId',
|
|
|
+ 'responsibleId',
|
|
|
+ 'industryCode',
|
|
|
+ 'supplierCode',
|
|
|
+ // 'advertiserType',
|
|
|
+ 'saleId'
|
|
|
+ )
|
|
|
)
|
|
|
- )
|
|
|
- // this.resId = record.responsibleId
|
|
|
- // this.shejiId = record.designResponsibleId
|
|
|
- getAction('/sys/user/getAllUserList', '').then(res => {
|
|
|
- console.log(res)
|
|
|
- if (res.success) {
|
|
|
- this.options = res.result
|
|
|
- }
|
|
|
+ // this.resId = record.responsibleId
|
|
|
+ // this.shejiId = record.designResponsibleId
|
|
|
+ getAction('/sys/user/getUserByRoleCode', {roleCode: 'operator'}).then(res => {
|
|
|
+ console.log(res)
|
|
|
+ if (res.success) {
|
|
|
+ this.options = res.result
|
|
|
+ }
|
|
|
+ })
|
|
|
+ getAction('/sys/user/getUserByRoleCode', {roleCode: 'design'}).then(res => {
|
|
|
+ console.log(res)
|
|
|
+ if (res.success) {
|
|
|
+ this.designs = res.result
|
|
|
+ }
|
|
|
+ })
|
|
|
+ getAction('/sys/user/getAllSaleList', '').then(res => {
|
|
|
+ console.log(res)
|
|
|
+ if (res.success) {
|
|
|
+ this.optionsElse = res.result
|
|
|
+ }
|
|
|
+ })
|
|
|
+ //时间格式化
|
|
|
})
|
|
|
- getAction('/sys/user/getAllSaleList', '').then(res => {
|
|
|
- console.log(res)
|
|
|
- if (res.success) {
|
|
|
- this.optionsElse = res.result
|
|
|
+ },
|
|
|
+ close() {
|
|
|
+ this.$emit('close')
|
|
|
+ this.visible = false
|
|
|
+ },
|
|
|
+ handleOk() {
|
|
|
+ const that = this
|
|
|
+ // 触发表单验证
|
|
|
+ this.form.validateFields((err, values) => {
|
|
|
+ if (!err) {
|
|
|
+ that.confirmLoading = true
|
|
|
+ let httpurl = ''
|
|
|
+ let method = ''
|
|
|
+ if (!this.model.id) {
|
|
|
+ httpurl += this.url.add
|
|
|
+ method = 'post'
|
|
|
+ } else {
|
|
|
+ httpurl += this.url.edit
|
|
|
+ method = 'put'
|
|
|
+ }
|
|
|
+ var data = values.advertiserId
|
|
|
+ let formData = Object.assign(this.model, values)
|
|
|
+ // if(this.model.mediaId)
|
|
|
+ formData.maxBid = formData.maxBid * 1000
|
|
|
+ formData.maxDeepCpaBid = formData.maxDeepCpaBid * 1000
|
|
|
+ //时间格式化
|
|
|
+ formData.advertiserId = data.key
|
|
|
+ formData.advertiserName = data.label
|
|
|
+ formData.responsibleId = values.responsibleId
|
|
|
+ formData.designResponsibleId = values.designResponsibleId
|
|
|
+ formData.userId = formData.userId ? formData.userId : that.userInfo().id
|
|
|
+ httpAction(httpurl, formData, method)
|
|
|
+ .then(res => {
|
|
|
+ if (res.success) {
|
|
|
+ that.$message.success(res.message)
|
|
|
+ that.$emit('ok')
|
|
|
+ } else {
|
|
|
+ that.$message.warning(res.message)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .finally(() => {
|
|
|
+ that.confirmLoading = false
|
|
|
+ that.close()
|
|
|
+ })
|
|
|
}
|
|
|
})
|
|
|
- //时间格式化
|
|
|
- })
|
|
|
- },
|
|
|
- close() {
|
|
|
- this.$emit('close')
|
|
|
- this.visible = false
|
|
|
- },
|
|
|
- handleOk() {
|
|
|
- const that = this
|
|
|
- // 触发表单验证
|
|
|
- this.form.validateFields((err, values) => {
|
|
|
- if (!err) {
|
|
|
- that.confirmLoading = true
|
|
|
- let httpurl = ''
|
|
|
- let method = ''
|
|
|
- if (!this.model.id) {
|
|
|
- httpurl += this.url.add
|
|
|
- method = 'post'
|
|
|
- } else {
|
|
|
- httpurl += this.url.edit
|
|
|
- method = 'put'
|
|
|
- }
|
|
|
- var data = values.advertiserId
|
|
|
- let formData = Object.assign(this.model, values)
|
|
|
- // if(this.model.mediaId)
|
|
|
- formData.maxBid = formData.maxBid * 1000
|
|
|
- formData.maxDeepCpaBid = formData.maxDeepCpaBid*1000
|
|
|
- //时间格式化
|
|
|
- formData.advertiserId = data.key
|
|
|
- formData.advertiserName = data.label
|
|
|
- formData.responsibleId = values.responsibleId
|
|
|
- formData.designResponsibleId = values.designResponsibleId
|
|
|
- formData.userId = formData.userId ? formData.userId : that.userInfo().id
|
|
|
- httpAction(httpurl, formData, method)
|
|
|
- .then(res => {
|
|
|
- if (res.success) {
|
|
|
- that.$message.success(res.message)
|
|
|
- that.$emit('ok')
|
|
|
- } else {
|
|
|
- that.$message.warning(res.message)
|
|
|
- }
|
|
|
- })
|
|
|
- .finally(() => {
|
|
|
- that.confirmLoading = false
|
|
|
- that.close()
|
|
|
- })
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- handleCancel() {
|
|
|
- this.close()
|
|
|
- },
|
|
|
- getFormFieldValue(field) {
|
|
|
- return this.form.getFieldValue(field)
|
|
|
- },
|
|
|
- get(valueName, key) {
|
|
|
- console.log(valueName, key)
|
|
|
- this.resId = key
|
|
|
+ },
|
|
|
+ handleCancel() {
|
|
|
+ this.close()
|
|
|
+ },
|
|
|
+ getFormFieldValue(field) {
|
|
|
+ return this.form.getFieldValue(field)
|
|
|
+ },
|
|
|
+ get(valueName, key) {
|
|
|
+ console.log(valueName, key)
|
|
|
+ this.resId = key
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
-}
|
|
|
</script>
|
|
|
|
|
|
<style lang="less" scoped></style>
|